博客园 - 每当变幻时
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=9135
2023-11-27T07:08:12Z
每当变幻时
https://www.cnblogs.com/killbug/
feed.cnblogs.com
https://www.cnblogs.com/killbug/p/16999289.html
JDK源码分析实战系列-PriorityBlockingQueue - 每当变幻时
前言 可以通过分析PriorityBlockingQueue来了解JUC中的线程安全的队列实现的一些套路,这些套路会在JUC中其他数据结构实现上反复出现,从而可以更合理的了解那些实现机制背后通用的部分。 BlockingQueue A Queue that additionally supports
2022-12-22T09:47:00Z
2022-12-22T09:47:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】前言 可以通过分析PriorityBlockingQueue来了解JUC中的线程安全的队列实现的一些套路,这些套路会在JUC中其他数据结构实现上反复出现,从而可以更合理的了解那些实现机制背后通用的部分。 BlockingQueue A Queue that additionally supports <a href="https://www.cnblogs.com/killbug/p/16999289.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/16909006.html
JDK源码分析实战系列-PriorityQueue - 每当变幻时
完全二叉树 一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。 特殊之处是这个类型可以通过数组来实现,一个节点的两个子节点的只需要计算下标获得,分别是[2*n+
2022-11-20T09:25:00Z
2022-11-20T09:25:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】完全二叉树 一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。 特殊之处是这个类型可以通过数组来实现,一个节点的两个子节点的只需要计算下标获得,分别是[2*n+ <a href="https://www.cnblogs.com/killbug/p/16909006.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/16836733.html
NIO基础-Netty系列-2 - 每当变幻时
概述 初步了解了NIO核心组件的API,也大致知道了如何启动一个网络IO服务和客户端后。本篇在此基础上做一些补充,把一些必须要理解的 正文 ServerSocketChannel的accept方法和Selecor的select 在ServerSocketChannel的API中我们可以通过accep
2022-10-28T09:08:00Z
2022-10-28T09:08:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】概述 初步了解了NIO核心组件的API,也大致知道了如何启动一个网络IO服务和客户端后。本篇在此基础上做一些补充,把一些必须要理解的 正文 ServerSocketChannel的accept方法和Selecor的select 在ServerSocketChannel的API中我们可以通过accep <a href="https://www.cnblogs.com/killbug/p/16836733.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/16767522.html
NIO基础-Netty系列-1 - 每当变幻时
概览 最近弄几篇NIO基础相关的内容,用于Netty源码解析使用。因为没有这些知识就产生不了问题,也就无法深入一个成熟的网络IO框架源码进行学习。 NIO三大核心组件: 1,Channel 2,Buffer 3,Selector 先概述一下三者的概念和之间的关系,再逐个了解组件的API打个基础。 对
2022-10-07T15:33:00Z
2022-10-07T15:33:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】概览 最近弄几篇NIO基础相关的内容,用于Netty源码解析使用。因为没有这些知识就产生不了问题,也就无法深入一个成熟的网络IO框架源码进行学习。 NIO三大核心组件: 1,Channel 2,Buffer 3,Selector 先概述一下三者的概念和之间的关系,再逐个了解组件的API打个基础。 对 <a href="https://www.cnblogs.com/killbug/p/16767522.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/16630315.html
幂等公共组件 - 每当变幻时
前言 今天想聊一聊幂等相关的知识,以及实现一个幂等公共组件需要重点涉及和思考的点。 概念 首先,什么是幂等,在实际代码生产过程中有什么作用呢? 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 举个例子,假如有个方法,用于修改一个订单的状态为已完成,只改一个状态字段,要
2022-08-27T04:04:00Z
2022-08-27T04:04:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】前言 今天想聊一聊幂等相关的知识,以及实现一个幂等公共组件需要重点涉及和思考的点。 概念 首先,什么是幂等,在实际代码生产过程中有什么作用呢? 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。 举个例子,假如有个方法,用于修改一个订单的状态为已完成,只改一个状态字段,要 <a href="https://www.cnblogs.com/killbug/p/16630315.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/16441226.html
Future源码一观-JUC系列 - 每当变幻时
背景介绍 在程序中,主线程启动一个子线程进行异步计算,主线程是不阻塞继续执行的,这点看起来是非常自然的,都已经选择启动子线程去异步执行了,主线程如果是阻塞的话,那还不如主线程自己去执行不就好了。那会不会有一种场景,异步线程执行的结果主线程是需要使用的,或者说主线程先做一些工作,然后需要确认子线程执行
2022-07-03T14:43:00Z
2022-07-03T14:43:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】背景介绍 在程序中,主线程启动一个子线程进行异步计算,主线程是不阻塞继续执行的,这点看起来是非常自然的,都已经选择启动子线程去异步执行了,主线程如果是阻塞的话,那还不如主线程自己去执行不就好了。那会不会有一种场景,异步线程执行的结果主线程是需要使用的,或者说主线程先做一些工作,然后需要确认子线程执行 <a href="https://www.cnblogs.com/killbug/p/16441226.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/16273452.html
AQS源码三视-JUC系列 - 每当变幻时
AQS源码三视-JUC系列 前两篇文章介绍了AQS的核心同步机制,使用CHL同步队列实现线程等待和唤醒,一个int值记录资源量。为上层各式各样的同步器实现画好了模版,像已经介绍到的ReentrantLock,Semaphroe,CountDownLatch都是在模版基础上实现的。花里胡哨,万变不离其
2022-05-15T08:00:00Z
2022-05-15T08:00:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】AQS源码三视-JUC系列 前两篇文章介绍了AQS的核心同步机制,使用CHL同步队列实现线程等待和唤醒,一个int值记录资源量。为上层各式各样的同步器实现画好了模版,像已经介绍到的ReentrantLock,Semaphroe,CountDownLatch都是在模版基础上实现的。花里胡哨,万变不离其 <a href="https://www.cnblogs.com/killbug/p/16273452.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/15939942.html
AQS源码二探-JUC系列 - 每当变幻时
本文已在公众号上发布,感谢关注,期待和你交流。 AQS源码二探-JUC系列 共享模式 doAcquireShared 这个方法是共享模式下获取资源失败,执行入队和等待操作,等待的线程在被唤醒后也在这个方法中自旋执行,直到拿到资源。 /** * Acquires in shared uninterru
2022-02-26T09:32:00Z
2022-02-26T09:32:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】本文已在公众号上发布,感谢关注,期待和你交流。 AQS源码二探-JUC系列 共享模式 doAcquireShared 这个方法是共享模式下获取资源失败,执行入队和等待操作,等待的线程在被唤醒后也在这个方法中自旋执行,直到拿到资源。 /** * Acquires in shared uninterru <a href="https://www.cnblogs.com/killbug/p/15939942.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/15876910.html
AQS源码一窥-JUC系列 - 每当变幻时
AQS源码一窥 考虑到AQS的代码量较大,涉及信息量也较多,计划是先使用较常用的ReentrantLock使用代码对AQS源码进行一个分析,一窥内部实现,然后再全面分析完AQS,最后把以它为基础的同步器都解析一遍。 暂且可以理解AQS的核心是两部分组成: volatile修饰的int字段state,
2022-02-09T14:02:00Z
2022-02-09T14:02:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】AQS源码一窥 考虑到AQS的代码量较大,涉及信息量也较多,计划是先使用较常用的ReentrantLock使用代码对AQS源码进行一个分析,一窥内部实现,然后再全面分析完AQS,最后把以它为基础的同步器都解析一遍。 暂且可以理解AQS的核心是两部分组成: volatile修饰的int字段state, <a href="https://www.cnblogs.com/killbug/p/15876910.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/15831713.html
Doug Lea文章阅读记录-JUC系列 - 每当变幻时
3.3 Queues The heart of the framework is maintenance of queues of blocked threads, which are restricted here to FIFO queues. Thus, the framework does
2022-01-21T12:41:00Z
2022-01-21T12:41:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】3.3 Queues The heart of the framework is maintenance of queues of blocked threads, which are restricted here to FIFO queues. Thus, the framework does <a href="https://www.cnblogs.com/killbug/p/15831713.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/15806416.html
自旋锁-JUC系列 - 每当变幻时
公众号原文:自旋锁-JUC系列 关注公众号,产生交集~ 前言 2022!这个年份现在看起来都觉得有那么些恍惚的未来感,然而现在已在脚下。 无边落木萧萧下, 不尽长江滚滚来! 人生如白驹过隙! 本来计划最近把AQS源码分析做了,然后自下而上把JUC整个探一遍,集合成文记录下来。但是因为前期没有很好的笔
2022-01-15T03:35:00Z
2022-01-15T03:35:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】公众号原文:自旋锁-JUC系列 关注公众号,产生交集~ 前言 2022!这个年份现在看起来都觉得有那么些恍惚的未来感,然而现在已在脚下。 无边落木萧萧下, 不尽长江滚滚来! 人生如白驹过隙! 本来计划最近把AQS源码分析做了,然后自下而上把JUC整个探一遍,集合成文记录下来。但是因为前期没有很好的笔 <a href="https://www.cnblogs.com/killbug/p/15806416.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/15575701.html
JDK源码分析实战系列-ThreadLocal - 每当变幻时
公众号原文链接* 总览 ThreadLocal提供了线程局部变量的解决方案。 我们知道成员变量在多线程下是不安全的,而局部变量的生命周期又取决于变量定义的范围。那么有没有一个变量定义可以专属于各自线程,生命周期由线程控制,并且和其他线程的变量完全隔离,确保线程安全。简单想到一个解决办法,定义一个这样
2021-11-19T01:44:00Z
2021-11-19T01:44:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】公众号原文链接* 总览 ThreadLocal提供了线程局部变量的解决方案。 我们知道成员变量在多线程下是不安全的,而局部变量的生命周期又取决于变量定义的范围。那么有没有一个变量定义可以专属于各自线程,生命周期由线程控制,并且和其他线程的变量完全隔离,确保线程安全。简单想到一个解决办法,定义一个这样 <a href="https://www.cnblogs.com/killbug/p/15575701.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/15574637.html
公众号文章汇总 - 每当变幻时
JDK源码分析实战系列-ThreadLocal 自旋锁-JUC系列 Doug Lea文章阅读记录-JUC系列 AQS源码一窥-JUC系列 AQS源码二探-JUC系列 AQS源码三视-JUC系列 Future源码一观-JUC系列 本人闲暇在维护项目,希望一起交流: https://github.com
2021-11-18T13:41:00Z
2021-11-18T13:41:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】JDK源码分析实战系列-ThreadLocal 自旋锁-JUC系列 Doug Lea文章阅读记录-JUC系列 AQS源码一窥-JUC系列 AQS源码二探-JUC系列 AQS源码三视-JUC系列 Future源码一观-JUC系列 本人闲暇在维护项目,希望一起交流: https://github.com <a href="https://www.cnblogs.com/killbug/p/15574637.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/15345301.html
低版本spring-cloud-sleuth的TraceableExecutorService一个坑,注意绕行 - 每当变幻时
我们知道Java 线程池提交任务有两种: 1,submit 会抛出异常,会有异常日志 2,execute 没有抛出异常,需要执行返回值Future的get方法触发抛出异常 execute在执行中没有做任何包装,在线程池源码中会执行到runWorker方法,这个方法中可以看到会把异常抛出,我们也可以通
2021-09-28T05:55:00Z
2021-09-28T05:55:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】我们知道Java 线程池提交任务有两种: 1,submit 会抛出异常,会有异常日志 2,execute 没有抛出异常,需要执行返回值Future的get方法触发抛出异常 execute在执行中没有做任何包装,在线程池源码中会执行到runWorker方法,这个方法中可以看到会把异常抛出,我们也可以通 <a href="https://www.cnblogs.com/killbug/p/15345301.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/14995251.html
责任链模式总结 - 每当变幻时
定义 来自 GoF 的《设计模式》权威定义如下: Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain t
2021-07-10T15:14:00Z
2021-07-10T15:14:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】定义 来自 GoF 的《设计模式》权威定义如下: Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain t <a href="https://www.cnblogs.com/killbug/p/14995251.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/13222162.html
Pinpoint2.X搭建重要信息 - 每当变幻时
这里提供一个Pinpoint2.X搭建重要信息,因为最近在搭建Pinpoint,基本全部的流程都走了一遍,我这边是准备自己后续维护Pinpoint,写插件是必须的,也有可能研究一下源码。 问题就是,如果你使用了hbase2.X作为Pinpoint的数据存储,那么就会遇到搭建完毕之后,web上的数据有
2020-07-01T14:55:00Z
2020-07-01T14:55:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】这里提供一个Pinpoint2.X搭建重要信息,因为最近在搭建Pinpoint,基本全部的流程都走了一遍,我这边是准备自己后续维护Pinpoint,写插件是必须的,也有可能研究一下源码。 问题就是,如果你使用了hbase2.X作为Pinpoint的数据存储,那么就会遇到搭建完毕之后,web上的数据有 <a href="https://www.cnblogs.com/killbug/p/13222162.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/11370694.html
限流常规设计和实例 - 每当变幻时
限流算法 计数器限流 固定窗口 滑动窗口 桶限流 令牌桶 漏桶 计数器 计数器限流可以分为: 固定窗口 滑动窗口 固定窗口 固定窗口计数器限流简单明了,就是限制单位之间内的请求数,比如设置QPS为10,那么从一开始的请求进入就计数,每次计数前判断是否到10,到达就拒绝请求,并保证这个计数周期是1秒,
2019-08-17T14:52:00Z
2019-08-17T14:52:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】限流算法 计数器限流 固定窗口 滑动窗口 桶限流 令牌桶 漏桶 计数器 计数器限流可以分为: 固定窗口 滑动窗口 固定窗口 固定窗口计数器限流简单明了,就是限制单位之间内的请求数,比如设置QPS为10,那么从一开始的请求进入就计数,每次计数前判断是否到10,到达就拒绝请求,并保证这个计数周期是1秒, <a href="https://www.cnblogs.com/killbug/p/11370694.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/11288350.html
连接池-Mybatis源码 - 每当变幻时
持续更新:https://github.com/dchack/Mybatis source code learn Mybatis连接池 有这么个定律,有连接的地方就有池。 在市面上,可以适配Mybatis DateSource的连接池有很对,比如: "druid" "hikari" "c3p0" M
2019-08-02T06:29:00Z
2019-08-02T06:29:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】持续更新:https://github.com/dchack/Mybatis source code learn Mybatis连接池 有这么个定律,有连接的地方就有池。 在市面上,可以适配Mybatis DateSource的连接池有很对,比如: "druid" "hikari" "c3p0" M <a href="https://www.cnblogs.com/killbug/p/11288350.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/11249097.html
Transaction-Mybatis源码 - 每当变幻时
github地址:https://github.com/dchack/Mybatis source code learn (欢迎star) TransactionFactory 官方文档: 在 MyBatis 中有两种类型的事务管理器(也就是 type=”[JDBC|MANAGED]”): JDBC
2019-07-26T03:22:00Z
2019-07-26T03:22:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】github地址:https://github.com/dchack/Mybatis source code learn (欢迎star) TransactionFactory 官方文档: 在 MyBatis 中有两种类型的事务管理器(也就是 type=”[JDBC|MANAGED]”): JDBC <a href="https://www.cnblogs.com/killbug/p/11249097.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/killbug/p/11080996.html
StatementHandler-Mybatis源码系列 - 每当变幻时
内容更新github地址: "我飞" StatementHandler接口 StatementHandler封装了Mybatis连接数据库操作最基础的部分。因为,无论怎么封装,最终我们都是要使用JDBC和数据库打交道的。 最早我们学习java连接数据库时的代码就像下面写的那样:: 而对于Statem
2019-06-25T01:51:00Z
2019-06-25T01:51:00Z
每当变幻时
https://www.cnblogs.com/killbug/
【摘要】内容更新github地址: "我飞" StatementHandler接口 StatementHandler封装了Mybatis连接数据库操作最基础的部分。因为,无论怎么封装,最终我们都是要使用JDBC和数据库打交道的。 最早我们学习java连接数据库时的代码就像下面写的那样:: 而对于Statem <a href="https://www.cnblogs.com/killbug/p/11080996.html" target="_blank">阅读全文</a>