前言前段时间写过一篇《线程池没你想的那么简单》,和大家一起撸了一个基本的线程池,具备:线程池基本调度功能。线程池自动扩容缩容。队列缓存线程。关闭线程池。这些功能,最后也留下了三个待实现的features。执行带有返回值的线程。异常处理怎么办?所有任务执行完怎么通知我?这次就实现这三个特性来看看j.u.c中的线程池是如何实现这些需求的。再看本文之前,强烈建议先查看上文《线程池没你想的那么简单》任务完
分类:
编程语言 时间:
2020-12-16 12:53:27
阅读次数:
6
前言前几日早上打开邮箱收到一封监控报警邮件:某某ip服务器CPU负载较高,请研发尽快排查解决,发送时间正好是凌晨。其实早在去年我也处理过类似的问题,并记录下来:《一次生产CPU100%排查优化实践》不过本次问题产生的原因却和上次不太一样,大家可以接着往下看。问题分析收到邮件后我马上登陆那台服务器,看了下案发现场还在(负载依然很高)。于是我便利用这类问题的排查套路定位一遍。首先利用top-c将系统资
分类:
其他好文 时间:
2020-12-16 12:53:07
阅读次数:
3
前言前不久帮同事一起review一个job执行缓慢的问题时发现不少朋友在撸码实现功能时还是有需要细节不够注意,于是便有了这篇文章。ArrayList踩坑List<String>temp=newArrayList();//获取一批数据List<String>all=getData();for(Stringstr:all){temp.add(str);}首先大家看看这段代码有什
分类:
其他好文 时间:
2020-12-16 12:52:45
阅读次数:
3
前言最近稍微闲了一点于是把这个半年都没更新的开源项目cicada重新捡了起来。一些新关注的朋友应该还不知道这项目是干啥的?先来看看官方介绍吧(其实就我自己写的
分类:
其他好文 时间:
2020-12-16 12:52:30
阅读次数:
3
前言最近个人事情比较多(搬家、换工作、短暂休息)所以一直也没有顾得上博客更新,恰好最近收到一封邮件提醒了我。也是时候写一篇文章来聊聊参与开源项目的事(最近也确实进入了笔荒期)。ps:第一次收到这样的中秋节礼物,加上Dubbo社区的活跃及阿里的重视度,还在做RPC或微服务技术选型的朋友可以考虑Dubbo。参与开源现在具体来聊聊参与开源的事;日常几乎所有的开发者都会享受到开源项目所带来的便利甚至是收益
分类:
其他好文 时间:
2020-12-16 12:52:07
阅读次数:
3
前言好久没更新了,最近事比较多,或许下个月就会恢复到正常的发文频次。这篇文章得从一个emoji表情开始,我之前开源的一个IM项目中有朋友提到希望可以支持emoji表情传输。https://github.com/crossoverJie/cim/issues/12正好那段时间有空,加上这功能看着也比较简单准备把它实现了。但在真正实现时却发现没那么简单。我首先尝试将一个emoji表情存入数据库看看:果
分类:
其他好文 时间:
2020-12-16 12:51:46
阅读次数:
2
前言近期在维护公司的调度平台,其中有个关键功能那就是定时任务;定时任务大家平时肯定接触的不少,比如JDK中的Timer、ScheduledExecutorService、调度框架Quartz等。通常用于实现XX时间后的延时任务,或周期性任务;比如一个常见的业务场景:用户下单N分钟未能支付便自动取消订单。实现这类需求通常有两种方式:轮询定时任务:给定周期内扫描所有未支付的订单,查看时间是否到期。延时
分类:
其他好文 时间:
2020-12-16 12:51:24
阅读次数:
2
前言最近在用Python的SQLAlchemy库时(一个类似于Hibernate的ORM框架),发现它的Events事件还挺好用。简单说就是当某张表的数据发生变化(曾、删、改)时会有一个事件回调,这样一些埋点之类的需求都可以实现在这里,同时和业务代码完全解耦,维护起来也很方便。例如当订单状态发生变化需要发异步通知这样的需求也可以利用这个实现。根据我之前使用Mybatis的经验,好像没怎么注意有这个
分类:
其他好文 时间:
2020-12-16 12:51:04
阅读次数:
2
前言最近准备将公司的一个核心业务系统用Java进行重构,大半年没写Java,JDK都更新到14了,考虑到稳定性等问题最终还是选择的JDK11。在整体架构选型时,由于是一个全新的系统,所以没有历史包袱,同时团队中也有多位大牛坐镇,因此我们的选项便大胆起来。最终结果就是直接一把梭,直接上未来的大趋势:ServiceMesh,直接把什么SpringCloud、Dubbo这类分布式框架全部干掉。本次的重点
分类:
其他好文 时间:
2020-12-16 12:50:42
阅读次数:
2
前言这段时间在维护产品的搜索功能,每次在管理台看到elasticsearch这么高效的查询效率我都很好奇他是如何做到的。这甚至比在我本地使用MySQL通过主键的查询速度还快。为此我搜索了相关资料:这类问题网上很多答案,大概意思呢如下:ES是基于Lucene的全文检索引擎,它会对数据进行分词后保存索引,擅长管理大量的索引数据,相对于MySQL来说不擅长经常更新数据及关联查询。说的不是很透彻,没有解析
分类:
数据库 时间:
2020-12-16 12:50:13
阅读次数:
4