自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

往前的娘娘

https://github.com/wangqiandeniangniang

  • 博客(31)
  • 资源 (7)
  • 收藏
  • 关注

原创 第28篇 rabbitmq IntAllocator 源码分析

int类型数值分配类, 不是线程安全的1、成员变量变量名默认值描述final int loRangefinal int hiRangefinal int numberOfBitshiRange-logRange (数字个数)int lastIndex0搜索free的数字final BitSet freeSet表示某个数字是否被分配了2、方法方法名称描述图示IntAllocator(int bottom, .

2021-06-30 22:45:14 188 3

原创 Jackson注解入门示例

jackson目的是什么呢? 它是解决json和bean之间对应关系,json就是字符和java的bean如何进行关联,json字符和bean之间会有哪些问题呢?文章目录1、预先思考1.1、json和bean会有什么问题呢?2、具体jackson注解2.1、@JsonAnySetter2.2、@JsonGetter /@JsonSetter2.3、@JsonPropertyOrder2.4、@JsonRawValue2.5、@JsonValue2.6、@JsonRootName2.7、@JsonSeri.

2021-06-25 23:37:24 263

原创 第27篇 rabbitmq BlockingCell源码分析

我们继续为AMQConnection扫盲,另一个成员变量类BlockingCell ,阻塞元件,一次性写入,到处使用。它是一个简单one-shot IPC机制,这个是一个地方缓存区,一旦填满就不能清除,也不能设置新的值1、成员变量和常量名称默认值描述boolean _filledfalse表示某个值是否填充了标记T _value就填充值变量final long NANOS_IN_MILLI1000L*1000L1毫秒对应纳秒final lon.

2021-06-24 08:33:38 212 2

原创 第26篇 rabbitmq HeartbeatSender源码分析

开始看AMQConnection源码,这个也是一个比较大的类,首先我需要扫描相关的类,就是这个类相关成员变量,这篇主要解决HeartbeatSender, 看类名就知道是心跳发送类,具体看一下有什么方法和值得学习的地方它是为一个AMQConnection管理和发送心跳检测,它线程独立于Connection工作线程,两者互不干扰它是一个final类1、 成员变量和常量变量名和常量名默认值描述final Object monitornew Object()同步锁.

2021-06-24 08:32:46 205 2

原创 第25篇 rabbitmq AMQCommand源码分析

上篇已经介绍如何将Frame拼装成一个整体,其实就是Command,我们了解一下Command中代码,理解它职责是做啥的其实类图也比较简单,Command接口,然后一个AMQCommand实现1、Command接口我们思考一下一个完成http请求,需要什么参数,请求头,请求方式,请求内容,这里其实也是类似1.1、方法仔细发现一下其实就是上篇CommandAssembler的成员变量方法名描述Method getMethod方法指令(一定会有数据的.

2021-06-22 23:00:35 179 1

原创 第23篇 rabbitmq AMQImpl源码分析

算是终于去看到AMQImpl源码,也就具体Method实现,AMQP一些指令做一些了解,第16篇你可以了解AMQP接口源码,有个大致了解第16篇 AMQP接口源码1-8 就是具体Method的指令的实现,具体目标就是实现Method 和 Frame互转9-10,遍历属性类,目前是不支持遍历11 Frame (DataInputStream)–> Method, 将具体流变成指令方法 (使用MethodArgumentWriter/Reader)12 Frame.

2021-06-22 08:28:54 311 3

原创 第24篇 rabbitmq CommandAssembler源码分析

算是终于去看到AMQImpl源码,也就具体Method实现,AMQP一些指令做一些了解,第16篇你可以了解AMQP接口源码,有个大致了解第16篇 AMQP接口源码1-8 就是具体Method的指令的实现,具体目标就是实现Method 和 Frame互转9-10,遍历属性类,目前是不支持遍历11 Frame (DataInputStream)–> Method, 将具体流变成指令方法 (使用MethodArgumentWriter/Reader)12 Frame.

2021-06-22 08:24:24 148

原创 第22篇 rabbitmq MethodArgumentReader(MethodArgumentWriter)源码分析

MethodArgumentReader和MethodArgumentWriter也是对于ValueReader和ValueWriter的封装,其实跟ContentHeaderPropertyReader和ContentHeaderPropertyWriter类似的,只是读写内容不同,ContentHeaderProperty是基础属性,而MethArgument读写AMQP的协议指令(Method具体实现),比如说队列声明,发布消息等,我们来具体看一下它与ContentHeaderPropertyWri.

2021-06-20 13:23:35 106

原创 第21篇 rabbitmq前阶段回顾和复习(第9篇到第20篇)

这一节主要是对于这周学习的复习和总结,第14篇到第21篇,以及它们之间的联系串一下,也算整理一下学习东西,也是将零星学习东西类似拼图一样形成一个局部的小块文章目录1、复习2、画个图描述一下3、总结1、复习其实这会分析源码是自底向上,我们是以第9篇WorkPool(工作池,所有任务存储地方),WorkPool使用LinkedBlockingQueue(JDK的链表队列)感兴趣分析一下,分析完LinkedBlockingQueue,在往上看就是第12篇 ConsumerWorkService(创建具.

2021-06-19 16:18:47 107

原创 第20篇 rabbitmq ContentHeaderPropertyReader源码分析

第18篇和第19篇了解最基础的ValueWriter 和 ValueReader对不同类型的数据编码的字节数组中有一定了解,我们现在往上看一下使用ValueWriter和ValueReader的类,我先看一下ContentHeaderPropertyReader和ContenHeaderPropertyWriter文章目录1、ContentHeaderPropertyReader1.1、成员变量1.2、方法1.3、flagWord描述1.4、图示2、ContentHeaderPropertyWrite.

2021-06-18 21:24:21 134 2

原创 第19篇 rabbitmq ValueReader源码分析

上一篇我看一下ValueWriter方法,这节我熟悉一下逆过程,读取数据ValueReader是ValueWriter逆过程,读取流中数据对于类型简写可以参考rabbitmq ValueWriter源码分析文章目录1、成员变量2、方法2.1、图示3、TruncatedInputStream 类3.1、成员变量3.2、方法4、总结1、成员变量变量名默认描述long INT_MASK0xffffffff掩码二进制表示(1111 1111 1111 1111 1111 .

2021-06-18 21:22:10 102

原创 第18篇 rabbitmq ValueWriter源码分析

我们在创建Frame(数据帧)时候,需要将一些属性写入到Frame accumator中,也就是ByteArrayOutputStream中,我们首先熟悉一下ValueWriter类大概了解一下其实它对DataOutputStream一个封装,套一层1、成员变量成员变量默认值描述final DataOutputStream对象输出流final int COPY_BUFFER_SIZE4096复制buffer大小2、方法方法名描述图.

2021-06-17 23:10:28 205 4

原创 第17篇 rabbitmq BasicProperties 源码分析

上一级分析一下rabbitmqAMQP接口的源码,AMQP接口源码中还有一个BasicProperties内部类没有仔细分析,这节做这件事情,让我们开始1、Cloneable (克隆)复制,它是一个形容词,具备某种能力,这个接口没有具体的方法,代表它具有克隆对象功能2、ContentHeader 接口内容头部接口2.1、方法方法名描述int getClassId获取类idString getClassName获取类名称void append.

2021-06-17 23:09:25 508 2

原创 第16篇 rabbitmq AMQP接口类源码分析

上面了解一下Method接口和Method抽象类,我们再来了解一下AMQP接口,这个也是AMQP接口确认文章目录1、常量2、 内部类2.1、总结2.2、单个接口方法拆开(以Start为例)2.3、BasicProperties 类大概看一下AMQP接口,分两部分常量部分和静态内部类1、常量常量名值描述PROTOCOL.MAJOR0AQMP协议主版本为0PROTOCOL.MINOR9AQMP协议次版本为9PROTOCOL.REVISION1AQMP.

2021-06-16 23:08:15 830 5

原创 第15篇 rabbitmq Method抽象类源码分析

其实第14篇已经说了channel源码情况,准备看一下AMQChannel源码,发现有很多依赖其他类,先熟悉一下其他关键类的源码, 我们来熟悉一下Method方法AMQP方法对象的基类,具体实现在AMQP.java 类中文章目录1、 Method接口1.1、方法2、Method 抽象类2.1、方法2.2、图示2、总结1、 Method接口1.1、方法方法名描述int protocolClassId协议的classidint protocolMethodId.

2021-06-16 23:06:47 172

原创 第14篇 rabbitmq Channel接口源码

上节第13篇写了 ConsumerDispatcher, 查询到使用地方是ChannelN类,如下所示,由于Channel内容比较多就先看一下Channel源码1、Channel 接口channel实例不在线程间共享,应用应该一个channel一个线程,如果不是一个channel一个线程,虽然通道上的某些操作可以安全调用,但是同时导致不正确的帧交错,线程间共享通道也会干扰发布者确认1.1、接口方法方法名方法描述int getChannelNumber获取通道号.

2021-06-15 22:21:07 308 3

原创 JMH(java代码的微基准测试)入门和汇总

JMH 即 Java Microbenchmark Harness,这是专门用于进行代码的微基准测试的一套工具 API。JMH 由 OpenJDK/Oracle 里面那群开发了 Java 编译器的大牛们所开发 。何谓 Micro Benchmark 呢? 简单地说就是在 method 层面上的 benchmark,精度可以精确到 微秒级。为什么需要 JMH死码消除所谓死码,是指注释的代码,不可达的代码块,可达但不被使用的代码等等 。常量折叠与常量传播常量折叠 (Constant foldin.

2021-06-11 22:48:52 1296

原创 第13篇 rabbitmq ConsumerDispatcher源码分析

第9到12篇熟悉工作线程池和使用和触发工作线程池的服务ConsumerWorkService类,上面它们是不关心任务是什么,只管干活,那么谁知道是什么任务,或者受到rabbitmq服务器的消息,谁去判断是什么?有组装什么任务呢?这个就我们这篇要解析ConsumerDispatcher, 就是派发工作的包工头。它也是一个final修饰的普通类看类描述,它分派和通知内部管理执行器服务和工作池进行工作的,且每个通道有一个ConsumerDispatcher服务,你可以想象一下每个水管都套转接头, 但是执.

2021-06-11 21:55:36 399

原创 第12篇 rabbitmq ConsumerWorkService源码分析

其实第9篇已经写了WorkPool 工作池 ,了解workPool里面源码,以及使用LinkedBlockingQueue源码,也算是对blocking队列熟悉, 这节熟悉WorkPool调用方ConsumerWorkService ,顾名思义就是消费者的工作服务,因为write一般是实时写操作,消费需要多个线程,顺便透露一下ConsumerWorkService还有一个ConsumerDispatcher 分发器,不同消息做不同分发,进入正题ConsumerWorkService是一个final类.

2021-06-10 22:13:52 418 5

原创 第11篇 rabbitmq使用LinkedBlockingQueue源码解析(下篇)

上篇介绍LinkedBlockingQueue的依赖接口和抽象情况,这节看一下LinkedBlockingQueue本身文章目录1、内部类1.1、Node 简单定义一下链表结构,只有后驱节点1.2、Itr implements Iterator 迭代器1.2.1、构造方法1.2.2、成员变量1.2.3、方法1.2.4、图示1.3、LBQSpliterator implements Spliterator1.3.1、成员变量1.3.2、构造函数1.3.3、Spliterator接口2、成员变量3、方.

2021-06-10 22:11:53 362

原创 第10篇 rabbitmq LinkedBlockingQueue(上篇)

这节主要分析和学习LinkedBlockingQueue队列特性,具体类图如下,我们理解它如何实现阻塞, 主要研究LinkedBlockingQueue的父类依赖抽象类和接口解析1、分析上图队列是集合的一种BlockingQueue接口却不继承AbstractQueue 也说明它不同于一般的队列,也就在普通队列增加新特性一样(类似马添加翅膀的属性,它就具有飞功能)它还实现Serializable接口说明具有在中网络传递该对象功能,支持序列化和反序列化Iterable接口 需要实现 迭代器功.

2021-06-09 22:19:50 509 4

原创 第9篇 rabbitmq WorkPool源码解析

消费者消费消息它有一个工作池的概念,所以现在研究一下WorkPool的源码,看一看可以学到什么技巧。这个实现是一个线程安全的类WorkPool<K,W> K : 客户端类型, W : 工作项目类型1、成员变量MAX_QUEUE_LENGTH = 1000 队列最大为1000ready = new SetQueue() 准备好客户端inProgress = new HashSet() 正在处理客户端Map<K, VariableLinke.

2021-06-08 22:25:30 329 8

原创 第8篇、rabbitmq处理读取socket逻辑细节(源码)

这篇紧接着第7篇,有些执行socket细节过程需要细细研究(也就 标记为A、B、C、D),就如下图1、doFinalShutdown() 做最后关闭 (A)如下图示总结关闭socketinterrupt mainloop (也就监听主线程)通知所有关闭监听器(shutdownCompleted方法)哪些监听器需要重新恢复监听2、FrameHandler#readFrame (读取socket)com.rabbitmq.client.impl.Frame#rea.

2021-06-08 22:23:26 450

原创 第7篇 rabbitmq 创建SocketFrameHandler

本节主要是熟悉socketFrameHandlerFactory类, 真正涉及到socket流处理器展示如下类图(我们本文关心是SocketFrameHandlerFactory 和SocketFrameHandler),由类图可以知道SocketFrameHandlerFactory继承抽象类AbstractFrameHandlerFactory, 抽象类实现FrameHandlerFactory接口1、FrameHandlerFactory (顶级接口)你可以看到它只有一个方法创建F.

2021-06-07 21:47:36 637 3

翻译 Optional你用对了吗?(26条件建议)

Optional设计者布赖恩·戈茨说过Optional旨在为库方法返回类型提供一种有限的机制,其中需要一种明确的方式来表示"无结果",而对这种情况使用null极有可能导致错误。那么,如何以预期的方式使用Optional呢?,通常,我们通过学习如何不使用它到学习使用它们过程,通过26的示例来优雅而轻松解决Optional的使用情况。1、不要赋值Optional以null值避免public Optional<Cart> fetchCart() { Optional&lt.

2021-06-07 21:03:14 370

原创 第6篇、rabbitmq客户端Connection接口(源码分析)

这篇主要了解一下Connection接口设计和思考1、简单使用示例ConnectionFactory factory = new ConnectionFactory();factory.setHost(hostName);factory.setPort(portNumber);factory.setVirtualHost(virtualHost);factory.setUserName(username);factory.setPassword(password);Connectio.

2021-06-04 19:40:46 636 2

原创 第5篇、rabbitmq客户端ConnectionFactory的ThreadFactory

既然看到ConnectionFactory中有使用jdk自带ThreadFactory类,我想研究一下它源码,浅尝辄止,也就是如下这一行代码private ThreadFactory threadFactory = Executors.defaultThreadFactory();1、ThreadFactory它一个接口且只有一个newThread方法,传入一个Runnable参数它设置作用就是避免硬调用new Thread方法, 同时也可以做一下控制最简.

2021-06-04 19:39:02 510

原创 第4篇、rabbitmq客户端ConnectionFactory(源码解析)

这篇文章主要熟悉一下rabbitmq客户端的核心类ConnectionFactory,主要会从几个方面入手,成员变量整理和核心方法整理,得出它们核心能力,做一些实践验证1、成员变量整理fielddefault(默认)含义virtualHost/虚拟主机概念(隔离消息能力)port-1端口号(默认端口号非ssl为5672,ssl为5671)hostlocalhost主机地址requestedChannelMax2047最大通道数,2047 因.

2021-06-04 19:37:35 1754 1

原创 第3篇、rabbitmq 发送消息源码(简析)

这篇主要研究一下rabbitmq的发送消息客户源码分析,先给出大概图由上面图可以看出 ConnectionFactory–> Connection–> Channel–> push message, 将一步一步分析。1、创建工厂类构造函数没有入参,且里面配置很多默认参数,具体一些重要参数fielddefault(默认)含义virtualHost/虚拟主机概念(隔离消息能力)hostlocalhost主机地址port-1.

2021-06-03 21:51:13 364 2

原创 第2篇 rabbitmq helloworld入门(java版)

这一部分注意学习一下java版 rabbitmq hello客户端。1、先决条件假设您已经安装并且运行rabbitmq在localhost,端口为5672,如果您使用host,端口或证书不是默认的就需要在配置做相应调整可以先看一下和做好准备工作 rabbitmq的安装和启动(brew),后面有用到创建queue和vhost2、简介rabbitMq类似邮局,只是与邮局不同的是它不处理数据,只是接收,存储,转发二进制数据。producer(生产者)无非就是发送,发送消息的程序是生产者,用P.

2021-06-03 19:15:40 174 1

原创 第1篇 rabbitmq的安装和启动(brew)

rabbitmq的安装, brew方式文章目录1、更新最新版本brew2、执行安装3、启动和关闭rabbitmq4、WEB的UI控制台5、命令行创建exchange和queue5.1、创建虚拟主机5.2、创建exchange(交换器)5.3、创建Queue(队列)5.4、exchange和queue进行绑定5.5、发送消息验证的一下5.5、获取消息6、总结和回顾1、更新最新版本brewbrew update然后它会提示你执行如下语句Error: homebrew-core i.

2021-06-02 22:00:44 1129 2

exe4j官方帮助文档

上传官方exe4j帮助文档,方便广大程序员使用。。。。。。。。。。

2018-03-02

Californium jar 集合

californium集合的demo 需要的jar包,方便coap编程demo

2018-02-10

spring-security-helloworld-annotation

spring-security-helloworld-annotation

2017-07-07

spring-security-helloworld

Spring-security demo

2017-07-07

Springwebflow

spring web flow 小案例

2017-07-06

千寻平台测试用例

千寻案例

2017-07-04

spittr案例

demo案例

2017-06-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除