从notify和metaq初窥消息队列的前世今生

上一家公司并没有用消息队列中间件,大学里对ActiveMQ有所了解但并未深入研究,RocketMQKafka也一直囿于听闻。不过在原来的项目中经常会用Redis的list实现一个分布式的阻塞队列。在短信营销任务中,会将服务的同步调用改为异步任务存入队列表,Worker批量调度以提高吞吐量,并降低大促期间大批量短信同步调用带来的压力。我觉得后面这一点也非常接近消息队列所要实现的需求。然后受益于隆基前辈的阿里消息中间件架构演进之路:notify和metaq一文,用这篇小笔记总结下我对消息队列的认识和理解。

1、为什么用消息队列

Read More

由配置文件到Diamond配置中心引发的考究

对于配置中心,我也不算是第一次接触。在我从上一家公司离职之际正好赶上项目进行容器化——将原来直接部署在ECS的应用迁移到K8S。而应用的配置都被迁移到了Nacos上,所以我也算是经历过传统到前沿的过度阶段吧。入职阿里后,趁着了解Diamond来说说我对传统配置文件的形式和配置中心的形式的一些感受吧。

1、软件的老基友——配置文件

Read More

新人对TDDL分库分表的一些思考

分库分表这个技术在之前一家公司其实也有接触。上一家公司在业务上按照用户水平分库的,所以避免了很多业务上的问题,但也只是基于Spring的AbstractRoutingDataSource,根据userId做了简单的路由。之前也在网上听说过sharding-jdbc等中间件,也仅限于了解。所以结合我从内网看到的关于TDDL中间件的文章和外网看到的一些文章,在这篇文章中整理一下我这个新人对分库分表的认识。

1、单库单表

Read More

【译】Cglib缺失的文档

本文翻译自:https://dzone.com/articles/cglib-missing-manual

作为字节码库,cglib是许多著名的java框架(HibernateSpring等)比较流行的选择。字节码库允许在java应用的编译阶段之后,操作或者动态创建新的class。由于Java类在运行时动态链接,因此可以向正在运行的Java程序中添加新类。比如,Hibernate就会将cglib用于动态代理的生成。Hibernate将返回存储类的检测版本,该版本仅在需要时才从数据库延迟加载某些值,而不是返回存储在数据库中的完整对象。又比如,Spring用cglib给你的方法调用添加安全性规则。

Read More

赤兔CRM-流程化功能功能总结

流程化营销是我个人觉得在达西做的最复杂的一个功能,把我大学里学的很多知识都应用到了这个功能的实现上,我也是靠着这个功能毕业才一年就在公司里晋升到了P5,所以在这里记录一下

流程化营销:店铺根据需要在前端绘制一张执行流程图,校验连通性与数据合法性后交由后端服务执行。

Read More

一枚Javer对Ruby的吐槽

公司收购了个项目,技术都很老,Web用的Ruby on Rails,前端还在用jQuery,后台定时任务用Java(用的技术也都很老)。自己以前没有接触过Ruby,只是听几个朋友大学里玩过这玩意儿,所以对我来说Ruby就是一门全新的语言。我个人是非常抵触学一门新语言的,Java都还没吃透就并行学Ruby,只会分散深入学习Java的精力。但没办法谁让公司抽到我,还是好好学吧!

1、安装Ruby

Read More

垃圾回收算法与JVM内存管理

因为之前公司有人分享过G1回收器的内容,很多人听的云里雾里(包括我)。甚至有人问学GC有什么用,对写代码有帮助吗。我想这个问题不可置否。

《深入理解Java虚拟机》一书中有这么一句话:Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。

Read More