摘要: 支持内部晋升的无锁并发优先级线程池 [TOC] 引言 在技术群讨论到一个有意思的业务需求,可以描述为: 有一个内部按照优先级进行任务排序的线程池。线程池会优先执行高优先级的任务。随着时间的流逝,线程池内部低优先级的任务的优先级会逐渐晋升变为高优先级,以避免被不断新增的高优先级任务阻塞导致饿死。 考虑 阅读全文
posted @ 2020-01-10 20:07 风火1989 阅读(347) 评论(0) 推荐(0) 编辑
摘要: 最终一致性:BASE论文笔记 [TOC] 简述 Base论文是ebay的架构师于2008年提交的一篇论文。主要用来阐述在分布式架构设计下,基于BASE的设计思想和方案。所谓BASE就是basically available(基本的可用性),soft state(软状态,所谓的软状态,指的是暂时的不一 阅读全文
posted @ 2019-12-24 22:42 风火1989 阅读(344) 评论(0) 推荐(0) 编辑
摘要: Activiti架构分析及源码详解 [TOC] 引言 工作流引擎,应用于解决流程审批和流程编排方面等问题,有效的提供了扩展性的支撑。而目前来说,工作流领域也有了相对通行化的标准规范,也就是BPMN2.0。支持这个规范的开源引擎主要有:Activiti,flowable,Jbpm4等。本文着重对Act 阅读全文
posted @ 2019-12-22 00:52 风火1989 阅读(4637) 评论(0) 推荐(2) 编辑
摘要: 理解OAuth2 [TOC] Oatuh2用来做什么 有这样一种场景,一个用户(假设是QQ),希望让一个第三方的应用(比如说某个论坛),能够得到关于自身的一些信息(唯一用户标识,比如说QQ号,用户个人信息,比如说是一些基础资料,昵称和头像等)。但是在获得这些资料的同时,却也不能提供用户名和密码之类的 阅读全文
posted @ 2019-12-02 20:30 风火1989 阅读(481) 评论(0) 推荐(0) 编辑
摘要: SpringBoot FatJar启动原理 [TOC] 背景 本文会探究下SpringBoot的启动原理。SpringBoot在打包的时候会将依赖包也打进最终的Jar,变成一个可运行的FatJar。也就是会形成一个Jar in Jar的结构。默认情况下,JDK提供的ClassLoader只能识别Ja 阅读全文
posted @ 2019-12-02 20:30 风火1989 阅读(1125) 评论(0) 推荐(1) 编辑
摘要: ConcurrentHashMap源码走读 [TOC] 简介 在从JDK8开始,为了提高并发度, 的源码进行了很大的调整。在JDK7中,采用的是分段锁的思路。简单的说,就是 是由多个 构成。当需要进行写入操作的时候,会寻找到对应的 ,使用 对对应的 加锁,然后执行写入操作。显然,并发程度就取决于 个 阅读全文
posted @ 2019-12-02 20:29 风火1989 阅读(221) 评论(0) 推荐(0) 编辑
摘要: Netty如何监控内存泄露 [TOC] 前言 一般而言,在Netty程序中都会采用池化的ByteBuf,也就是 以提高程序性能。但是 需要在使用完毕后手工释放,否则就会因为 申请的内存空间没有归还进而造成内存泄露,最终OOM。而一旦泄露发生,在复杂的应用程序中找到未手工释放的 并不是一个简单的活计, 阅读全文
posted @ 2019-12-02 20:29 风火1989 阅读(1118) 评论(0) 推荐(0) 编辑
摘要: REST架构指导方案 [TOC] 何为REST 在2014年之后,社区中关于RESTFUL风格的文章开始渐渐多起,大多数RESTFUL的文章都是在阐述一种HTTP URL路径的写法风格。简单总结来说,这些文章归纳的点主要是: 1. URL路径应该是名词而非动词。 2. 通过HTTP几个动词:GET, 阅读全文
posted @ 2019-12-02 20:28 风火1989 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 从2 3 4树模型到红黑树实现 [TOC] 前言 红黑树,是一个高效的二叉查找树。其定义特性保证了树的路径长度在黑色节点上完美平衡,使得其查找效率接近于完美平衡的二叉树。 但是红黑树的实现逻辑很复杂,各种旋转,颜色变化,直接针对其分析,大多数都是死记硬背各种例子,不太容易有个直观的理解。实际上,红黑 阅读全文
posted @ 2019-12-01 11:17 风火1989 阅读(536) 评论(0) 推荐(1) 编辑