![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
代码设计
文章平均质量分 84
双面神像
分层,抽象,高内聚,低耦合
展开
-
spring内嵌cglib包,这里藏着一个大坑
问题发现2022-01-21 早上 9 点,订单系统出现大面积的“系统未知错误”报错,导致部分用户无法正常下单。查询后台日志,可以看到大量的 duplicate class attempt。java.lang.LinkageError-->loader (instance of org/springframework/boot/loader/LaunchedURLClassLoader): attempted duplicate class definition for name: "com/原创 2022-01-24 11:24:26 · 1887 阅读 · 0 评论 -
如何设计一个通用的查询接口
临近放假,手头的事情没那么多,老是摸鱼也不好,还是写写博客吧。今天来聊聊:如何设计一个通用的查询接口。从一个场景开始首先,我们从一个简单的场景开始。现在,我需要一个订单列表,用来查询【我的订单】,支持分页,且支持高级搜索。整个查询流程我们先来设计下整个查询的流程,我认为大致如下图。简单来说就是:接收查询条件 -》 校验条件 -》添加条件 -》 执行查询 -》 转换 VO -》 返回结果。注意,因为不同公司用的语言或者代码分层可能不一样,所以,我们没必要纠结具体的代码实现,只要关注一些更高抽象层级原创 2022-01-19 14:33:10 · 3711 阅读 · 0 评论 -
一个校验接口引发的思考--我真的了解Response吗
对应`{"success":true,"message":"操作成功","data":"OK"}`这种 Response 结构,大家应该并不陌生吧,但是呢,最近对接了一个校验接口,让我开始怀疑我是否真的了解 response,所以,希望能了解各位同行的看法。原创 2021-11-14 17:18:53 · 456 阅读 · 0 评论 -
记一次Orika使用不当导致的内存溢出
hprof 文件分析2021-08-24,订单中心的一个项目出现了 OOM 异常,使用 MemoryAnalyzer 打开 dump 出来的 hprof 文件,可以看到 91.27% 的内存被一个超大对象javassist.ClassPool占用了。那么,ClassPool是一个什么样的对象呢?我们知道,javassist 可以用来动态生成类,而生成的类就是放在这个ClassPool里面,具体以javassist.CtClass的形式存在。所以,初步分析是 OOM 的原因是 javassist 生成的原创 2021-08-25 14:39:03 · 898 阅读 · 0 评论 -
关于接口设计的思考--我们真的需要这么多入参吗
最近,我改造一个旧接口时发现,这个接口有 30 多个入参,而事实上并不需要那么多,而且,这个接口还存在比较大的安全隐患。所以,关于如何设计接口入参,我想谈谈自己的一些想法。当然,只是一家之言,不一定就是对的。原创 2021-07-04 10:29:38 · 555 阅读 · 0 评论 -
entitybuilder--一个简单的业务通用框架
业务系统是千差万别的,例如,保存、更新和删除订单,或者保存订单和保存客户,走的根本不是一个流程。但是,它们还是有共同点,它们的流程大致可以分成下面的几个部分。拿到增删改等操作所需的基础数据;初始化基础数据; 对基础数据进行校验;利用基础数据,构建出要进行增删改等操作的对象;持久化或其他操作。而entitybuilder就是来规范和简化这个过程的工具。原创 2021-03-03 10:05:45 · 410 阅读 · 0 评论