Java
文章平均质量分 79
王家奇士
这个作者很懒,什么都没留下…
展开
-
HttpClient源码解析系列:第四篇:Connection是怎么生成和管理的
HttpClient中,Connection是怎么生成和管理的原创 2017-08-08 18:45:01 · 4321 阅读 · 1 评论 -
Kotlin语法糖
用Kotlin一段时间了,主要是用来做本地数据分析,需要大量的字符串和集合处理,用原生Java着实麻烦了点。Python虽然也可以用,奈何公司自研的分布式数据库只支持Java访问,只能找一个JVM语言来用了。 Groovy和Scala都尝试过: Groovy对Java兼容的实在是太细致入微了(我曾经把Java代码原样贴到Groovy脚本里,直接运行无压力),以至于我根...原创 2019-01-08 14:51:10 · 1294 阅读 · 0 评论 -
并发容器及其原理
锁的使用,相当于对象的修改串行化了,这样保证了线程的安全性,所以这种方法的代价就是严重降低了并发性,当多个线程竞争容器时,吞吐量严重降低。因此Java5.0开始针对多线程并发访问设计,提供了并发性能较好的并发容器,引入了java.util.concurrent包。 而为了达到尽可能提高效率的目标,Java源码中采用了多种优化方式来提高并发容器的执行效率或者使用方便性,核心的就是:锁,CAS(无锁),COW(读写分离),分段锁。原创 2017-12-24 21:14:41 · 1151 阅读 · 0 评论 -
SpringBoot 1.X 优雅停机 ( shutdown gracefully )
SpringBoot 1.X 优雅停机默认的 shutdown endpoint 在实现上会造成正在运行的任务异常中断,这和SpringBoot的默认实现有关。为了解决这个问题,而定制了优雅停机方案。原创 2017-12-14 18:41:03 · 10339 阅读 · 2 评论 -
善用 ApacheAB 和 VisualVM, 做开发阶段代码性能调优
在开发阶段, 开发人员往往很难意识到代码对性能的影响, 很多时候需要最终的压力测试来逐一排除. 但是作为创业公司, 往往没有专门的压力测试流程, 那么核心开发人员在核心业务逻辑的开发阶段就需要对代码造成的性能问题作出预判和解决, 这里提供开发本地可操作的, 基于 ApacheAB 和 VisualVM 的性能调优方案.原创 2017-12-03 14:22:04 · 576 阅读 · 0 评论 -
Java多线程控制
系统性解析Java中多线程的管理。这是很多并发编程的基础,也是JavaCurrent包的实现基础。原创 2017-12-10 21:06:49 · 839 阅读 · 0 评论 -
[腾讯云] 微信序列号生成器架构设计及演变
微信在立项之初,就已确立了利用数据版本号实现终端与后台的数据增量同步机制,确保发消息时消息可靠送达对方手机,避免了大量潜在的家庭纠纷。时至今日,微信已经走过第五个年头,这套同步机制仍然在消息收发、朋友圈通知、好友数据更新等需要数据同步的地方发挥着核心的作用。而在这同步机制的背后,需要一个高可用、高可靠的序列号生成器来产生同步数据用的版本号。这个序列号生成器我们称之为seqsvr,目前已经发展为一个每天万亿级调用的重量级系统,其中每次申请序列号平时调用耗时1ms,99.9%的调用耗时小于3ms,服务部署于数百转载 2017-11-21 20:27:42 · 529 阅读 · 0 评论 -
[架构师之路] 细聊分布式ID生成方法 2016-02-22
几乎所有的业务系统,都有生成一个记录标识的需求,这个记录标识往往就是数据库中的唯一主键.记录标识生成(也就是上文提到的三个XXX-id)的两大核心需求:(1)全局唯一(2)趋势有序这也是本文要讨论的核心问题:如何高效生成趋势有序的全局唯一ID。转载 2017-11-21 19:34:24 · 361 阅读 · 0 评论 -
[核心工具] Collections
详细解答核心的Collections & Map, 从内部实现到关键调整因子。原创 2017-12-08 22:50:45 · 239 阅读 · 0 评论 -
代码质量管理 阿里Java插件 + Upsource
代码质量管理:1:提交前,通过阿里的Java开发规范插件来检查代码中存在的问题2:提交之后,通过其他人来Code Review的方式来管理,使用Upsource工具来方便的进行CodeReview。原创 2017-10-23 18:04:11 · 3442 阅读 · 0 评论 -
HttpClient源码解析系列:第三篇:发送-接收的底层过程
DefaultBHttpClientConnection,而它又是继承自BHttpConnectionBase 来看 HttpClient 的Socket交互流程源码。原创 2017-07-27 17:51:46 · 4951 阅读 · 2 评论 -
HttpClient源码解析系列:第二篇:极简版实现
从MinimalHttpClient从名字可以看出,是一个极简可以用的版本,是核心设计的原初模型。所以我们就从最精简的开始分析。原创 2017-07-24 19:08:21 · 7400 阅读 · 2 评论 -
HttpClient源码解析系列:第一篇:总览
HttpClient源码解析系列:第一篇:总览。最最核心的HttpClient接口。原创 2017-07-24 19:00:37 · 8797 阅读 · 2 评论 -
HttpClient源码解析系列:第五篇:HttpClientBuilder中的配置分析
HttpClientBuilder 来配置使用 HttpClient原创 2017-08-08 18:55:50 · 13307 阅读 · 1 评论 -
volatile 深入理解
Volatile是教材中必讲,而且听上去很简单的一个核心多线程关键字。其核心是在于:Java并发包和基础AQS中就会用该关键词来标记状态。(另一个核心是CAS操作)先简单回顾一下 volatile 的基本表述:volatile 能够保证所有缓存的内容始终保持一致,其含义是,任何一个线程对共享值的修改都能立刻被其他线程感知到。但是这个表述非常的简单,理解也没有什么困难,但是其内涵却非常丰富,...原创 2019-01-16 22:21:04 · 479 阅读 · 1 评论