摘要: 配置中心的设计-nacos vs apollo 前面我们分析了携程的 apollo(见 详解apollo的设计与使用),现在再来看看阿里的 nacos。和 apollo 一样,nacos 也是一款配置中心,同样可以实现配置的集中管理、分环境管理、即时生效等等。不过,nacos 还具备了服务发现的功能。这篇博客将重点分析 nacos 和 apollo 在设计上的差异。 阅读全文
posted @ 2022-06-05 18:06 子月生 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 我的JAVA面试题备忘录 以下是我收集的一些问题,有的是网上摘录的,有的是自己参加面试被问到的,有的是工作或学习时遇到的,等等。 为什么要记录这些呢? 一方面,我相信,这样做对我自己的技术提升是有帮助的。在全文结构上我尽量**使问题连贯地形成知识体系**,而不是堆积的碎片,而且,每个问题我会尽量地给出答案。 另一方面,我希望,有大佬可以指出我的错误。因为我的答案不一定对,尤其那些带 * 的问题。 这份资料将会持续更新,如果有其他问题也可以留言讨论。欢迎交流,共同进步。 阅读全文
posted @ 2022-05-03 17:58 子月生 阅读(294) 评论(0) 推荐(0) 编辑
摘要: spring内嵌cglib包,这里藏着一个大坑 问题发现 2022-01-21 早上 9 点,订单系统出现大面积的“系统未知错误”报错,导致部分用户无法正常下单。查询后台日志,可以看到大量的 duplicate class attempt。 java.lang.LinkageError-->loader (instance of org/spri 阅读全文
posted @ 2022-01-24 11:21 子月生 阅读(644) 评论(4) 推荐(1) 编辑
摘要: 如何设计一个更通用的查询接口 临近放假,手头的事情没那么多,老是摸鱼也不好,还是写写博客吧。 今天来聊聊:如何设计一个通用的查询接口。 从一个场景开始 首先,我们从一个简单的场景开始。现在,我需要一个订单列表,用来查询【我的订单】,支持分页,且支持高级搜索。 整个查询流程 我们先来设计下整个查询的流程,我认为大致如下图。简单来说 阅读全文
posted @ 2022-01-19 14:31 子月生 阅读(1171) 评论(5) 推荐(2) 编辑
摘要: 简单的2021年终总结 当大家开开心心跨年的时候,我在补年终总结。 小时候恨不得时间过得快一点,现在不这么想了。 我的 2021年,都是平静、反复的一天天,没有出书、没有开源、没有跳槽、没有升官。没错,这可能是你看过的最 low、最不争气的总结,很抱歉给各位大佬拖后腿了。 写博客的话,我是认真的。今年总共写了 15 篇,中 阅读全文
posted @ 2021-12-31 21:25 子月生 阅读(180) 评论(8) 推荐(1) 编辑
摘要: 简单聊聊mysql的脏读、不可重复读、幻读 最近,在一次 mysql 死锁的生产事故中,我发现,关于 mysql 的锁、事务等等,我所知道的东西太碎了,所以,我试着用几个例子将它们串起来。具体做法就是通过不断地问问题、回答问题,再加上“适当”的比喻,来逐步构建脑子里的“知识树”。 需要提醒一下,这篇博客并不适合小白,因为你需要先了解排它锁、共享锁、事务,最重要的是你需要知道事务中的锁是什么时候加上、什么时候打开的。而这篇博客更多的是希望把这些碎片化的知识给连接起来。 阅读全文
posted @ 2021-12-24 13:38 子月生 阅读(958) 评论(4) 推荐(4) 编辑
摘要: 如何使用原生的Hystrix 前面已经讲完了 Feign 和 Ribbon,今天我们来研究 Netflix 团队开发的另一个类库--Hystrix。 从抽象层面看,**Hystrix 是一个保护器**。它可以保护我们的应用不会因为某个依赖的故障而 down 掉。 目前,官方已不再迭代 Hystrix,一方面是认为 Hystrix 已经足够稳定了,另一方面是转向了更具弹性的保护器(而不是根据预先配置来启用保护),例如 resilience4j。当然,停止迭代并不是说 Hystrix 已经没有价值,它的很多思想还是值得学习和借鉴。 阅读全文
posted @ 2021-11-18 13:45 子月生 阅读(363) 评论(0) 推荐(1) 编辑
摘要: 对应`{"success":true,"message":"操作成功","data":"OK"}`这种 Response 结构,大家应该并不陌生吧,但是呢,最近对接了一个校验接口,让我开始怀疑我是否真的了解 response,所以,希望能了解各位同行的看法。 阅读全文
posted @ 2021-11-14 17:14 子月生 阅读(2112) 评论(40) 推荐(1) 编辑
摘要: 如何使用原生的Ribbon 之前分析了如何使用原生的Feign,今天我们来研究 Netflix 团队开发的另外一个类库--Ribbon。 Ribbon 和 Feign 有很多相似的地方,首先,它们本质上都是 HTTP client,其次,它们都具备重试、集成断路器等功能。最大的区别在于,Ribbon 内置了一个负载均衡器,而 Feign 没有。 本文将介绍如何使用原生的 Ribbon,注意是原生的,而不是被 Spring 层层封装的 Ribbon。 阅读全文
posted @ 2021-10-30 13:09 子月生 阅读(349) 评论(2) 推荐(1) 编辑
摘要: 记一次Orika使用不当导致的内存溢出 hprof 文件分析 2021-08-24,订单中心的一个项目出现了 OOM 异常,使用 MemoryAnalyzer 打开 dump 出来的 hprof 文件,可以看到 91.27% 的内存被一个超大对象javassist.ClassPool占用了。 那么,ClassPool是一个什么样的对象呢? 阅读全文
posted @ 2021-08-25 14:37 子月生 阅读(455) 评论(0) 推荐(1) 编辑