Java SPI 的原理与应用 前言不知大家现在有没有去公司复工,我已经在家办公将近 3 周了,同时也在家呆了一个多月;还好工作并没有受到任何影响,我个人一直觉得远程工作和 IT 行业是非常契合的,这段时间的工作效率甚至比在办公室还高,同时由于我们公司的业务在海外,所以疫情几乎没有造成太多影响。 扯远了,这次主要是想和大家分享一下 Java 的 SPI 机制。周末没啥事,我翻了翻我之前的写的博客 《设计一个可拔插的 IOC 容 2020-02-24 cicada > spi > 轮子 #Java #HTTP #Netty
2019年度总结 前言消失两个多月后我胡汉三又回来了,比较遗憾的是这并不是一篇技术文,有兴趣的朋友就当做故事看吧。 所以这其实是一份年终总结 其实这段期间一直有朋友在问我咋不接着更新公众号了?甚至一点消息都没了。 真不是不更,主要有以下几个原因: 2019-12-30 annual-summary
定时任务方案大百科 原文地址:https://crossoverjie.top 前言节前有更新一篇定时任务的相关文章《延时消息之时间轮》,有朋友提出希望可以完整的介绍下常见的定时任务方案,于是便有了这篇文章。 2019-10-14 算法 > Java > Netty #时间轮 #Timer #Schedule
延时消息之时间轮 前言近期在维护公司的调度平台,其中有个关键功能那就是定时任务;定时任务大家平时肯定接触的不少,比如 JDK 中的 Timer、ScheduledExecutorService、调度框架 Quartz 等。 通常用于实现 XX 时间后的延时任务,或周期性任务; 比如一个常见的业务场景:用户下单 N 分钟未能支付便自动取消订单。 实现这类需求通常有两种方式: 轮询定时任务:给定周期内扫描所有未支付 2019-09-27 算法 > Netty #时间轮
不要小看小小的 emoji 表情😂 前言好久没更新了,最近事比较多,或许下个月就会恢复到正常的发文频次。 这篇文章得从一个 emoji 表情开始,我之前开源的一个 IM 项目中有朋友提到希望可以支持 emoji 表情传输。 https://github.com/crossoverJie/cim/issues/12 正好那段时间有空,加上这功能看着也比较简单准备把它实现了。 2019-09-10 cs #emoji #unicode #utf-8 #ascii
如何参与一个顶级开源项目 前言最近个人事情比较多(搬家、换工作、短暂休息)所以一直也没有顾得上博客更新,恰好最近收到一封邮件提醒了我。 也是时候写一篇文章来聊聊参与开源项目的事(最近也确实进入了笔荒期)。 ps:第一次收到这样的中秋节礼物,加上 Dubbo 社区的活跃及阿里的重视度,还在做 PRC 或微服务技术选型的朋友可以考虑 Dubbo。 2019-08-19 open source #dubbo #thread #多线程
一次难得的分库分表实践 背景前不久发过两篇关于分表的文章: 一次分表踩坑实践的探讨 分表后需要注意的二三事 从标题可以看得出来,当时我们只做了分表;还是由于业务发展,截止到现在也做了分库,目前看来都还比较顺利,所以借着脑子还记得清楚来一次复盘。 2019-07-24 架构 #db
设计一个全局异常处理器 前言最近稍微闲了一点于是把这个半年都没更新的开源项目 cicada 重新捡了起来。 一些新关注的朋友应该还不知道这项目是干啥的?先来看看官方介绍吧(其实就我自己写的😀) cicada: 基于 Netty4 实现的快速、轻量级 WEB 框架;没有过多的依赖,核心 jar 包仅 30KB。 2019-07-15 cicada > 轮子 #Java #HTTP #Netty
What?一个 Dubbo 服务启动要两个小时! 前言前几天在测试环境碰到一个非常奇怪的与 dubbo 相关的问题,事后我在网上搜索了一圈并没有发现类似的帖子或文章,于是便有了这篇。 希望对还未碰到或正在碰到的朋友有所帮助。 2019-07-05 问题排查 #Java #Thread #Dubbo
常见的集合容器应当避免的坑 前言前不久帮同事一起 review 一个 job 执行缓慢的问题时发现不少朋友在撸码实现功能时还是有需要细节不够注意,于是便有了这篇文章。 ArrayList 踩坑1234567List<String> temp = new ArrayList() ;//获取一批数据List<String> all = getData();for(String str : all) 2019-07-04 Java 进阶 #Java #ArrayList #LinkedList