`
huan1993
  • 浏览: 137339 次
  • 性别: Icon_minigender_1
  • 来自: 湖北
社区版块
存档分类
最新评论
Rss 文章列表
将博客搬至CSDN  新地址
     以下的程序监控参数的代码,有些是从网络上获取的,此处进行一个记录是为了以后如果要用到方便记录。   1、引入jar包,为了获取一些cpu的使用率等信息 <dependency> <groupId>com.github.oshi</groupId> <artifactId>oshi-core</artifactId> <version>3.12.2</version> </dependency> <depen ...
 一、缓冲区简介           Nio中的 Buffer 是用于存储特定基础类型的一个容器。为了能熟练的使用 Nio中的各种 Buffer , 我们需要理解 Buffer 中的 三个重要 的属性。      1. capacity:表示的是这个缓冲区包含元素的个数,容量不可改变也不可是负数       2. limit:表示的是缓冲区中第一个不可读或写的元素的索引,它不可是负数并且 <= capacity       3. position:表示的是缓冲区中下一个元素可读或可写的元素的索引,它不可是负数并且 <= limit     0 <= position ...
    最近在学习netty相关的知识,看到netty可以实现 websoket,因此记录一下在netty中实现websocket的步骤,主要实现传递文本消息和传递二进制消息,传递二进制消息由于需要传递额外信息,因此使用自定义消息协议。   需求:     1、使用 netty 实现 websocket 服务器     2、实现 文本信息 的传递     3、实现 二进制 信息的传递,如果是图片则传递到后台后在前台直接显示,非图片提示。(此处的图片和非图片是前端传递到后台的二进制数据然后后端在原封不动的直接返回到前台)     4、只需要考虑 websocket 协议,不用处理h ...
    在上篇文章  springboot 整合 rabbitmq 中,我们实现了springboot 和rabbitmq的简单整合,这篇文章主要是对上篇文章功能的增强,主要完成如下功能。   需求:     生产者在启动的时候,自动创建好队列、绑定、交换器并设置 ...
    在这篇博客中,简单记录一下 rabbitmq 服务器中一些基本的概念。   Connection: connection 为 TCP连接,是我们的应用程序和RabbitMQ服务器真正发送和接收数据的地方。 Channel: channel为connection创建的“信道”,具体的AMQP命令都是通过信道发送出去的。每一条信道都有一个唯一的id,channel是线程不安全的。 bindingKey和routingKey的区分:     bindingkey: 在使用绑定的时候,需要用到的路由键是 bindingkey。涉及到的客户端方法: channel.exchange ...
    这篇文章,我们使用springboot来简单整合一下RabbitMQ,由于sprinboot的 “约定优于配置“,使得我们整合起来非常方便。参考文档   实现功能:  自动申明队列、交换器和绑定  使用自定义的MessageConvert如何进行配置  如何传递 JavaBean 消息和普通消息  如何手动签收消息 实现要点:     ** 自定申明队列、交换器和绑定           1、通过使用@Queue等注解实现           2、使用@RabbitListener来实现     ** 使用自定义的MessageConvert           ...
    本文简单记录一下 spring 整合 rabbitmq,此处引入spring boot是为了方便引入和rabbitmq整合相关的jar包,并没有使用spring boot整合 rabbitmq。   实现功能 完成 spring 和 rabbitmq 的整合 完成使用 rabbitAdmin 创建队列等 完成使用 @Bean 注解声明队列等 完成使用 RabbitTemplate 进行发送消息 使用 SimpleMessageListenerContainer 进行消息的监听,可以对消息进行各种适配等 整合步骤: 1、引入 jar 包。 2、配置 Connectio ...
死信队列&死信交换器:DLX 全称(Dead-Letter-Exchange),称之为死信交换器,当消息变成一个死信之后,如果这个消息所在的队列存在x-dead-letter-exchange参数,那么它会被发送到x-dead-letter-exchange对应值的交换器上,这个交换器就称? ...
     在使用 RabbitMQ 的时候,有时候当我们生产者发送一条消息到 RabbitMQ 服务器后,我们 生产者想知道消息是否到达了 RabbitMQ 服务器上。这个时候我们应该如何处理?      针对上述问题,RabbitMQ 提供了2中解决方案。 通过事务机制实现(不推荐) 通过发送方确认(publisher confirm)机制实现(推荐)      注意:        1、上方2中方式不可共存,只能选取一种,如果一个channel上开启事务又开启confirm则会报错。         2、如果发送消息的交换器没有匹配的队列,那么消息也会丢失。 通过事务机制实现 ...
    在日常开发中,有时候我们经常需要和第三方接口打交道,有时候是我们调用别人的第三方接口,有时候是别人在调用我们的第三方接口,那么为了调用接口的安全性,一般都会对传输的数据进行加密操作,如果每个接口都由我们自己去手动加密和解密,那么工作量太大而且代码冗余。那么有没有简单的方法,借助 spring 提供的  RequestBodyAdvice 和 ResponseBodyAdvice 可以实现解密和加密操作。   需求:      1,后台方法上如果有@Encrypt注解和@RequestBody修饰的方法,需要进行参数的解密          2,后台方法上如果有@Encrypt ...
     在早期我写过一篇spring social理解的文章,介绍了一些spring social的概念,但是没有提供一个例子。在这篇博客中,提供一个简单的spring social的例子,实现 百度登录,那为什么不实现QQ登录或微信登录,主要是在QQ和微信上申请应用比较麻烦,没有百度方便,在文章的末尾我也放出 QQ登录 和 微信登录 的源码。2018-11-28号增加了一个 github 的登录。   实现功能:      1,实现百度登录      2,与 spring security 整合      3,当是第一次使用百度登录时,自动在业务中中创建一个用户。      ...
   在日常开发中,我们有时候需要发送短信、邮件等通知,但是这些通知的内容通常都是动态的,而且可能会发生变动,为了程序的灵活性,我们通常会将通知的内容配置在页面上,然后后台通过渲染这些模板,来获取具体的内容。而 freemarker 正好可以帮助我们来完整模板的渲染这一步。需求:    1、给定一个字符串模板,渲染出内容    2、修改这个字符串模板,然后再次渲染实现要点:    1、模板的加载器需要使用 StringTemplateLoader    2、模板不可使用 Configuration.getTemplate,而应该使用 new Template     3、StringTemp ...
     我们经常使用消息队列进行系统之间的解耦,日志记录等等。但是有时候我们在使用 RabbitMQ时,由于exchange、bindKey、routingKey没有设置正确,导致我们发送给交换器(exchange)的消息,由于没有正确的RoutingKey可能会存在一个消息丢失的情况,如果我们希望知道那些消息经过exchange之后,没有被正确的存入消息队列,那么应该如何进行处理。 方案一:使用 mandatory 参数配合 ReturnListener 来进行解决 方案二:使用备份交换器 (alternate exchange) 来进行解决   方案一介绍: mandator ...
     最近需要用到语音合成功能,网上查阅了一番,发现可以使用腾讯云的语音合成API来完成这个功能,但是腾讯云的api返回的是wav格式的音频文件,这个格式的文件有些不通用,因此需要转换成mp3格式的文件。     jave2(Java音频视频编码器)库是Java对ffmpeg的包装,它可以很方便的实现视频音频格式的转换,本文简单记录一下将wav格式的音频转换成mp3格式的音频。     jave2 对 jdk的要求以及支持的平台   需求:    将一段wav格式的音频转换成mp3格式的音频实现思路:    1、引入 jave2 的 jar 包        方式一:直接引入 jav ...
Global site tag (gtag.js) - Google Analytics