0%

cicada8-spi.md---0082zybply1gc6rp5ur8fj30u00u0tf7.jpg

前言

不知大家现在有没有去公司复工,我已经在家办公将近 3 周了,同时也在家呆了一个多月;还好工作并没有受到任何影响,我个人一直觉得远程工作和 IT 行业是非常契合的,这段时间的工作效率甚至比在办公室还高,同时由于我们公司的业务在海外,所以疫情几乎没有造成太多影响。

扯远了,这次主要是想和大家分享一下 JavaSPI 机制。周末没啥事,我翻了翻我之前的写的博客 《设计一个可拔插的 IOC 容器》,发现当时的实现并不那么优雅。

还没看过的朋友的我先做个前景提要,当时的需求:

我实现了一个类似于的 SpringMVC 但却很轻量的 http 框架 cicada,其中当然也需要一个 IOC 容器,可以存放所有的单例 bean。

这个 IOC 容器的实现我希望可以有多种方式,甚至可以提供一个接口供其他人实现;当然切换这个 IOC 容器的过程肯定是不能存在硬编码的,也就是这里所提到的可拔插
当我想使用 A 的实现方式时,我就引入 A 的 jar 包,使用 B 时就引入 B 的包。

Read more »

前言

消失两个多月后我胡汉三又回来了,比较遗憾的是这并不是一篇技术文,有兴趣的朋友就当做故事看吧。

所以这其实是一份年终总结

其实这段期间一直有朋友在问我咋不接着更新公众号了?甚至一点消息都没了。

真不是不更,主要有以下几个原因:

Read more »

前言

近期在维护公司的调度平台,其中有个关键功能那就是定时任务;定时任务大家平时肯定接触的不少,比如 JDK 中的 TimerScheduledExecutorService、调度框架 Quartz 等。

通常用于实现 XX 时间后的延时任务,或周期性任务;

比如一个常见的业务场景:用户下单 N 分钟未能支付便自动取消订单。

实现这类需求通常有两种方式:

  • 轮询定时任务:给定周期内扫描所有未支付的订单,查看时间是否到期。
  • 延时消息:订单创建的时候发送一条 N 分钟到期的信息,一旦消息消费后便可判断订单是否可以取消。
Read more »

前言

最近个人事情比较多(搬家、换工作、短暂休息)所以一直也没有顾得上博客更新,恰好最近收到一封邮件提醒了我。

也是时候写一篇文章来聊聊参与开源项目的事(最近也确实进入了笔荒期)。

ps:第一次收到这样的中秋节礼物,加上 Dubbo 社区的活跃及阿里的重视度,还在做 PRC 或微服务技术选型的朋友可以考虑 Dubbo

Read more »

前言

最近稍微闲了一点于是把这个半年都没更新的开源项目 cicada 重新捡了起来。

一些新关注的朋友应该还不知道这项目是干啥的?先来看看官方介绍吧(其实就我自己写的😀)

cicada: 基于 Netty4 实现的快速、轻量级 WEB 框架;没有过多的依赖,核心 jar 包仅 30KB

Read more »

前言

前不久帮同事一起 review 一个 job 执行缓慢的问题时发现不少朋友在撸码实现功能时还是有需要细节不够注意,于是便有了这篇文章。

ArrayList 踩坑

1
2
3
4
5
6
7
List<String> temp = new ArrayList() ;

//获取一批数据
List<String> all = getData();
for(String str : all) {
temp.add(str);
}

首先大家看看这段代码有什么问题嘛?

Read more »