Finn's Blog


博客页面

Netty学习笔记一之整体架构

Netty作为一个高效的NIO网络框架,应用十分广泛,如知名的gRPC,Dubbo,很多中间件之间的通讯都是通过Netty来实现,其优秀的架构设计和规范代码,是很值得学习的,于是乎本来开始了啃Netty之路,并记下分享所学。 整体架构 Core核心层 提供了可...

Java代码性能优化小技巧

简单总结,工作中遇到的问题,仅供参考,如出现任何问题,不接受任何投诉与反驳,哈哈。 双层循环组合数据篇 业务开发中经常会遇到两个List List<Demo1> demo1List; List<Demo2> demo2List; for (Demo1 demo1 ...

为什么选择RocketMQ,而不是Kafka

一个复杂的分布式系统,必然会考虑使用MQ来解决通讯解耦等问题,市面上开源的MQ越来越多,也让选择变得越来越难,比如Kafka,RabbitMQ,RocketMQ,让人看得眼花缭乱,好像每个MQ都很强大,究竟使用哪个真是无从下手;而在一次技术选型中,我们落地了RocketMQ,而不是Kafka或...

一次分布式任务幂等处理的探索

当设计一个分布式任务系统的时候,往往会遇到任务幂等的处理,比如同一个任务一天只能执行一次,或者同一个任务实例只能执行一次,否则会造成数据混乱;而这时需要怎么做呢,有几种做法呢? 分析 假设任务中有以下伪代码 //业务处理, 获取结果数据 data = business.do(); //将业...

如何基于已有的SpringBoot Starter定制自己的Starter

使用SpringBoot开发应用程序,在架构设计或封装代码时免不了要自定义自己的SpringBoot Starter,而有的时候并不会从零开始,则会基于第三方的Starter重新封装为满足技术需求的Starter,这时就必须了解如何基于已有的SpringBoot Starter定制自己的Sta...

RocketMQ填坑指南

RocketMQ集群坑 RocketMQ集群分为多种模式,比如主从,双主,双主从等;其中有个“特性”,RocketMQ并不提供主从切换的机制,意思就是主永远是主,而从也永远是从,当主挂掉后,从存在的意义就是能够继续支持消息的消费,而这时候写操作是不会被响应的;另一个需要注意的点就是,硬盘空间...

设计模式之适配器

定义 将一个类的接口转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以相互合作。 如何使用 适配器模式同样来自于我们生活中,如手机的电源适配器,同样笔记本电脑/Pad等都需要电源适配器,原因就是电子设备需要的电源接口不是220V,是需要使用适配器进行转换的(5V等),那对应成代码...

设计模式之装饰者

定义 装饰者模式又名包装(Wrapper)模式。装饰者模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰者模式动态地将责任附加到对象身上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。 如何使用 还记得在大学时候玩过一个游戏叫《海盗王》,玩家可以在自己的武器...