技术解析
风火1989
博思软件技术架构部高级工程师,8年开发经验。福建省省级标准《双离线场景二维码标准》撰写人,多年大型政企项目研发经验。关注团队效率,高并发等方面。
展开
-
局部变量保证线程安全
局部变量保证线程安全首先来看String这个类的hashcode方法,如下public int hashCode(){ int h = hash; /* 代码① */ if ( h == 0 && value.length > 0 ) { char val[] = value; for ( int i = 0;...原创 2020-04-16 20:12:39 · 249 阅读 · 0 评论 -
AQS源码详细解读
AQS源码详细解读文章目录AQS源码详细解读基础CAS相关知识通过标识位进行线程挂起的并发编程范式MPSC队列的实现技巧代码讲解独占模式独占模式下请求资源独占模式下的释放资源共享模式请求资源释放资源条件变量await方法signal方法总结为什么需要SIGNAL状态为什么需要PROPAGATE状态基础在讲解AQS之前,有几个额外的知识需要了解。知道了这些,才能明白AQS框架中很多代码的道理。...原创 2020-04-01 09:07:39 · 370 阅读 · 0 评论 -
深入理解 Java 内存模型与应用
欢迎扫码参与原创 2020-03-01 21:02:02 · 145 阅读 · 0 评论 -
理解 Java 内存模型的因果性约束
理解 Java 内存模型的因果性约束文章目录理解 Java 内存模型的因果性约束欢迎讨论规范理解例子练习例子1例子2总结欢迎讨论欢迎加入技术交流群186233599讨论交流,也欢迎关注笔者公众号:风火说。规范理解这部分的内容比较抽象,首先是一开始的定义,如下红色下划线的内容应该是理解的关键。首先,E 是一个特定的执行序列,其由指令集合 A 以及用于对集合 A 内部存在的 PO,SO,...原创 2020-02-29 17:56:30 · 141 阅读 · 0 评论 -
高性能Java序列化框架Fse发布
高性能Java序列化框架Fse发布文章目录高性能Java序列化框架Fse发布使用场景使用说明开源地址使用场景将Java对象序列化为二进制数据进行保存,以及二进制数据反向序列化为Java对象,在很多场景中都有应用。比如将对象序列化后离线存储至其他介质,或者存储于Redis这样的缓存之中。目前常见的有几种框架可以支撑,比如 Hession ,Kryo,Protobuf,JDK原生等。有一些框架...原创 2020-02-03 15:01:09 · 572 阅读 · 0 评论 -
心跳与超时:高并发高性能的时间轮超时器
心跳与超时:高并发高性能的时间轮超时器文章目录心跳与超时:高并发高性能的时间轮超时器引言JDK 原生提供的超时任务支持java.util.TimerScheduledThreadPoolExecutor更高效的数据结构基本原理支撑更多超过范围的延迟时间方案一:不同轮次的延迟任务共存相同的延迟队列方案二:多层次时间轮Netty 的时间轮实现接口定义构建循环数组新增延迟任务工作线程workerThr...原创 2020-01-30 17:22:04 · 663 阅读 · 0 评论 -
支持内部晋升的无锁并发优先级线程池
支持内部晋升的无锁并发优先级线程池文章目录支持内部晋升的无锁并发优先级线程池引言推导过程如何实现优先级晋升数据结构设计一个指针产生的问题任务插入指针和任务读取指针任务插入指针如何移动任务插入指针移动到同一位置导致的优先级任务混合问题任务读取指针如何移动插入和读取并发代码实现任务插入任务的读取包装为BlockQueue效果展现代码托管地址引言在技术群讨论到一个有意思的业务需求,可以描述为:...原创 2020-01-10 20:09:11 · 783 阅读 · 0 评论 -
从2-3-4树模型到红黑树实现
从2-3-4树模型到红黑树实现文章目录从2-3-4树模型到红黑树实现前言2-3-4树查找插入树的生长删除删除最大`key`删除最小`key`删除任意`key`左倾红黑树查找插入删除删除最大`Key`删除最小`Key`删除任意`Key`总结参考文献前言红黑树,是一个高效的二叉查找树。其定义特性保证了树的路径长度在黑色节点上完美平衡,使得其查找效率接近于完美平衡的二叉树。但是红黑树的实现逻辑很...原创 2019-11-30 09:22:06 · 842 阅读 · 0 评论 -
REST架构指导方案
REST架构指导方案文章目录REST架构指导方案何为REST在WEB系统中应用REST风格应用约束以资源的形式描述系统RESTFUL的URL路径实践单一资源的路径制定复杂查询的路径制定复数资源的路径制定动宾操作的路径制定版本号位置公共参数位置代码指导动词原语支持路径参数提取何为REST在2014年之后,社区中关于RESTFUL风格的文章开始渐渐多起,大多数RESTFUL的文章都是在阐述一种H...原创 2019-11-13 01:41:52 · 962 阅读 · 0 评论 -
ConcurrentHashMap源码走读
ConcurrentHashMap源码走读文章目录ConcurrentHashMap源码走读简介放入数据容器元素总数更新容器扩容协助扩容遍历简介在从JDK8开始,为了提高并发度,ConcurrentHashMap的源码进行了很大的调整。在JDK7中,采用的是分段锁的思路。简单的说,就是ConcurrentHashMap是由多个HashMap构成。当需要进行写入操作的时候,会寻找到对应的Has...原创 2019-10-29 15:36:39 · 1091 阅读 · 0 评论 -
一文看懂SpringBoot启动原理
SpringBoot启动原理文章目录SpringBoot启动原理背景储备知识URLStreamHandlerArchive打包SpringBoot启动扩展背景本文会探究下SpringBoot的启动原理。SpringBoot在打包的时候会将依赖包也打进最终的Jar,变成一个可运行的FatJar。也就是会形成一个Jar in Jar的结构。默认情况下,JDK提供的ClassLoader只能识别J...原创 2019-09-26 11:46:32 · 1049 阅读 · 0 评论 -
Netty如何监控内存泄露
Netty如何监控内存泄露文章目录Netty如何监控内存泄露前言JDK的弱引用和引用队列Netty的实现思路代码实现分配监控对象追踪和检查泄露DefaultResourceLeakResourceLeakDetector前言一般而言,在Netty程序中都会采用池化的ByteBuf,也就是PooledByteBuf以提高程序性能。但是PooledByteBuf需要在使用完毕后手工释放,否则就会...原创 2019-09-26 11:11:51 · 3970 阅读 · 0 评论