一个小时学会用 Go 编写命令行工具 前言最近因为项目需要写了一段时间的 Go ,相对于 Java 来说语法简单同时又有着一些 Python 之类的语法糖,让人大呼”真香“。 2020-12-08 Golang #Golang #cli
不同语言对单例模式的不同实现 前言前段时间在用 Python 实现业务的时候发现一个坑,准确的来说是对于 Python 门外汉容易踩的坑; 大概代码如下: 1234567891011121314class Mom(object): name = '' sons = []if __name__ == '__main__': m1 = Mom() m1.name = 2020-10-09 设计模式 #Java #Python #Golang
ElasticSearch 索引 VS MySQL 索引 前言这段时间在维护产品的搜索功能,每次在管理台看到 elasticsearch 这么高效的查询效率我都很好奇他是如何做到的。 这甚至比在我本地使用 MySQL 通过主键的查询速度还快。 2020-08-24 数据结构 #MySQL #Elasticsearch #倒排索引 #B+ 树
撸了一个 Feign 增强包 前言最近准备将公司的一个核心业务系统用 Java 进行重构,大半年没写 Java ,JDK 都更新到 14 了,考虑到稳定性等问题最终还是选择的 JDK11。 在整体架构选型时,由于是一个全新的系统,所以没有历史包袱,同时团队中也有多位大牛坐镇,因此我们的选项便大胆起来。 最终结果就是直接一把梭,直接上未来的大趋势:Service Mesh,直接把什么 SpringCloud、Dubbo 这类分 2020-07-28 轮子 #Java #SpringBoot #Feign
动态代理与RPC 前言随着最近关注 cim 项目的人越发增多,导致提的问题以及 Bug 也在增加,在修复问题的过程中难免代码洁癖又上来了。 看着一两年前写的东西总是怀疑这真的是出自自己手里嘛?有些地方实在忍不住了便开始了漫漫重构之路。 2020-04-28 cim > rpc > 动态代理 #Java #Netty
动态代理的实际应用 前言最近在用 Python 的 SQLAlchemy 库时(一个类似于 Hibernate 的 ORM 框架),发现它的 Events 事件还挺好用。 简单说就是当某张表的数据发生变化(曾、删、改)时会有一个事件回调,这样一些埋点之类的需求都可以实现在这里,同时和业务代码完全解耦,维护起来也很方便。 例如当订单状态发生变化需要发异步通知这样的需求也可以利用这个实现。 根据我之前使用 Mybati 2020-03-30 cicada > 动态代理 > 轮子 #Java #HTTP #Netty
词法分析器的应用 前言最近大部分时间都在撸 Python,其中也会涉及到将数据库表转换为 Python 中 ORM 框架的 Model,但我们并没有找到一个合适的工具来做这个意义不大的”体力活“,所以每次新建表后大家都是根据自己的表结构手写一遍 Model。 一两张表还好,一旦 10 几张表都要写一遍时那痛苦只有自己知道;这时程序员的 slogan 再次印证:一切毫无意义的体力劳动终将被计算机取代。 2020-03-23 编译原理 #Java #递归 #DDL
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