自定义博客皮肤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

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

原创 第六章、Python 装饰函数

python 的装饰方法,返回方法引用

2022-06-25 19:27:39 1198 1

原创 第五章、Python常用内置类

python 常用内置类的用法

2022-06-18 19:42:05 1077

原创 第四章、Python面向对象编程

OOP思想(Object Oriented Programming)面向对象编程,简单来说,对象是特征和行为集合体,也可以说静态属性和动态行为集合体,也是对现实的描述和模拟,比如说 猫,特性:品种,大小,毛发形状,毛发颜色,四肢, 行为:喵喵叫,抓老鼠,这些特征和行为集合体称之为猫。1.2、Class(类)可以认为这个一份蓝图或者模板语法:class 类名: 属性和方法init 内置构造初始化方法self 表示本对象1.2.1、继承(Inheritance)语法: class

2022-06-10 23:24:38 986 1

原创 第三章、Python方法和函数

2、函数2.1、定义函数语法参数:可选return语句: 可选定义函数示例,猜猜那个门有奖品3、Lambda 表达式简化定义函数步骤,是一种语法糖,特别只是一次用到简单的函数,可以定义成Lambda语法lambda 参数: 表达式 (参数可以多个)map 它会迭代每个元素,将元素转换其他形式,无论加减乘除,也就说每个元素都会经过某个函数...

2022-06-05 08:46:47 136

原创 第二章、Python 语法

python 基本语法: if elif else, for , while用法,以及常用工具类,list的高级用法

2022-06-04 11:04:30 179

原创 第一章、Python基本数据结构

python基本数据结构入门

2022-06-03 17:54:41 226 4

原创 第36篇 rabbitmq DefaultCredentialsRefreshService 源码分析

默认的凭证的刷新服务,类似token失效,它是一个周期性的服务, token续约的服务, 使用Function <Duration, Long> refreshDelayStrategy, 一旦凭证提供者已经续约了,将会回调注册,重新发送一个新的秘密到AMQP的连接 , 这里也使用构造器模式DefaultCredentialsRefreshService 实现了CredentialsRefreshService接口1、CredentialsRefreshService 接口凭证续.

2021-08-11 23:00:26 580

原创 第35篇 rabbitmq ChannelN源码分析

最主要上级的与AMQP协议功能的实现,实现所有通道编号(除了编号为0通道)1、成员和静态变量名称默认值描述final String UNSPECIFIED_OUT_OF_BAND“”final Map<String, Consumer> _consumersCollections.synchronizedMap消费者mapfinal Collection returnListenersnew CopyOnWriteArrayList()返回监.

2021-08-11 22:58:14 335

原创 第34篇 rabbitmq AMQChannel源码分析

上一篇稍微了解一下Channel, 本节我们来了解一下AMQChannel抽象类这个类是AMQ通道基础类, 它继承了ShutdownNotifierComponent类文章目录1、ShutdownNotifierComponent 类1.1、成员变量或常量1.2、方法2、AMQChannel 抽象类2.1、成员变量或常量2.2、方法2.3、图示3、内部类和接口3.1、 RpcContinuation接口3.1.1、方法3.2、BlockingRpcContinuation implements Rp

2021-07-12 22:26:02 265 7

原创 第33篇 rabbitmq AMQConnection源码分析

做了这么多准备工作,终于可以看一下AMQConnection源码了,可以看到整个指令运行和整体准备工作,在通道中真正干活的。没错开干对于Connection可以参考第6篇Connection源码分析文章目录1、NetworkConnection2、ShutdownNotifierComponent 类2.1、成员变量或常量2.2、方法3、AMQConnection类3.1、成员变量和常量3.2、方法3.3、图示1、NetworkConnection网络连接接口方法名描述.

2021-07-12 22:24:26 311

原创 第32篇 rabbitmq RecordedExchange重试和恢复源码分析

继续第31篇,说到ConnectionParams 连接参数,主要超时时间,执行器,处理器,监听器,还遗留两个TODO,就是恢复RecordedXXXX RetryXXX ,哪些记录需要恢复和重试恢复动作结果文章目录1、RecordedXXX1.1、RecordedEntity1.2、RecordedBinding1.3、RecordedQueueBinding1.4、RecordedExchangeBinding1.5、RecordedNamedEntity1.6、RecordedExchange1.

2021-07-12 22:22:36 166

原创 第31篇 rabbitmq ConnectionParams源码分析

继续分析AMQConnection发现有个ConnectionParams类,这里就是连接相关的参数文章目录1、成员变量2、总结附录1 CredentialsProvider附录2 SaslConfig附录3 RecoveryDelayHandler(接口)3.1、DefaultRecoveryDelayHandler3.2、ExponentialBackoffDelayHandler(指数超时)附录4 ErrorOnWriteListener(接口)附录5 TopologyRecoveryFilte.

2021-07-12 22:20:47 274

原创 第30篇 rabbitmq ChannelManager源码解析

在分析AMQConnection ,里面需要ChannelManager使用,顺便看一下ChannelManager源码文章目录1、成员变量2、方法2.1、ChannelManager构造方法2.2、 void handleSignal(final ShutdownSignalException signal)2.3、ChannelN createChannel1、成员变量变量名称默认值描述final Object monitornew Object()加锁的对象f.

2021-07-12 22:19:09 161

原创 jackson如何根据另个属性来确定实例化具体实现类(基于spring-boot)

对于如果属性在抽象类中这个利用@JsonTypeInfo 和 @JsonSubTypes 很容易实现,如果这个属性与将要反序列化在同一层级,那个应该怎么做,将下面举个例子,基于spring-boot环境public interface Item{ }public class Person{ private Integer age; private Item item;}// age<7public ChildItem implement Item { priv.

2021-07-08 21:20:19 633 4

原创 第29篇 rabbitmq BitSet源码分析

上节IntAllocator是对于BitSet的应用,我们来具体学习BitSet源码默认情况下所有bit初始化都是false不能设置null值不是线程安全的,需要外层做同步BitSet实现Cloneable 和 Serializable接口(说明它具有克隆和序列化功能)BitSet被打包成"字"数组,目前一个字是一个long, 由64位组成,需要6个地址位,也就移动1<<6==64二进制表示0或1,long是8byte, 64bit,也就是一个long.

2021-07-08 20:39:23 148 1

原创 第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 157 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 161

原创 第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 198 2

原创 第26篇 rabbitmq HeartbeatSender源码分析

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

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

原创 第25篇 rabbitmq AMQCommand源码分析

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

2021-06-22 23:00:35 165 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 293 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 131

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

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

2021-06-20 13:23:35 94

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

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

2021-06-19 16:18:47 98

原创 第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 119 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 88

原创 第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 171 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 487 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 719 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 157

原创 第14篇 rabbitmq Channel接口源码

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

2021-06-15 22:21:07 282 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 1266

原创 第13篇 rabbitmq ConsumerDispatcher源码分析

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

2021-06-11 21:55:36 367

原创 第12篇 rabbitmq ConsumerWorkService源码分析

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

2021-06-10 22:13:52 380 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 321

原创 第10篇 rabbitmq LinkedBlockingQueue(上篇)

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

2021-06-09 22:19:50 476 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 301 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 422

原创 第7篇 rabbitmq 创建SocketFrameHandler

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

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

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

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

2021-06-07 21:03:14 349

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关注的人

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