在我潮汕地区,茶是必不可少的,人们品尝就跟喝水一样平常,但茶却包含了很多学问和人生道理。茶之道,在于心境的平和,人生如茶,沉时坦然,浮时淡然,沉浮之间,淡然处之,可谓茶壶虽小,内涵乾坤。自古以来,以茶会友,以茶道来醒悟人生之道。可以说茶就好像国外的咖啡一样,而咖啡正是java的原意,这也是本仓库命名的由来。在技术的道路上,需要不断的醒悟和感悟,技术的远方是无止境的,但只要以平和的心态持之以恒,终能有所收获。
spring bean生命周期
spring session统计登录人数
spring容器初始化完成事件
spring循环依赖
@Async循环依赖分析
spring cloud gateway + nacos
spring cloud gateway filter
eureka 原理/集群
feign
服务优雅下线
动态创建bean托管到spring
除了java-jar,还能这样运行你的springboot应用
错误处理
日志追踪
全局异常处理
expand递归
swagger
debug
map&flatMap
源码分析
nacos集群
canal简介
canal quick start
canal server ha
kafka消费者重启消息重复消费
kafka错误日志问题
apache common pool2
熔断-hystrix
熔断-resilience4j
熔断-sentinel
核心概念
倒排索引
es/kibana/集群/cerebro搭建
分词
常用api
es写入原理
使用java访问es
es中的分页
锁
数据库开发规范
mysql三种log
一条危险的update语句
使用p6spy监控应用sql
这么分页查数据居然重复了
MVCC原理
深入理解索引
sql到底慢在哪里
order by居然有bug?
mysql到底有没有解决幻读问题
[buffer pool]
我又遇到order by的坑了
分层设计
mq多环境topic设计
解决多环境下微服务实例乱窜
加强版ThreadPoolExecutor
加强版ThreadPoolExecutor升级
使用TreeSet优化任务分配.md
限流算法
[时间轮算法]
[缓存淘汰算法]
一致性hash算法
比例分配算法
手写lru
详解redis网络IO模型
redis常用配置参数
resp协议
redis单机和集群搭建
缓存和数据库一致性问题
分布式锁
string类型底层SDS
redis geo地理空间
zset
zset实践
hash
持久化机制
jvm常用参数
jdk常用命令
TLAB堆内存中的线程私有区域
三色标记法
@Transactional不生效?
java开发规范
什么?@Transactional又不生效了?
cas
java集合类型-Queue继承体系
happend before
java内省机制
java cpu占用高问题排查
java 内存占用高问题排查
HttpClient线程池设置问题
rm命令删除文件了,但磁盘空间没有释放
一次内存泄漏排查
一次redis带宽占用高分析
线程池shutdown引发TimeoutException
arthas实践
[arthas tunnel]
git
git hook解决多仓库代码合规问题
ssh多个远端仓库
jmeter
curl
idea插件汇总
写一个idea插件通知你gitlab远端分支变更了
双亲委派机制
jdk动态代理与cglib
tcp三次握手四次挥手
CountDownLatch和CyclicBarrier
并发编程wait和notify
面试再也不怕问ThreadLocal了
druid加密
jasypt加密配置文件
ThreadLocal扩展
单元测试启动加速
如何优雅的统计方法执行时间
如何做好code reivew
- 蝴蝶效应
亚马逊河一只蝴蝶煽动翅膀,可能引起周边环境的变化,进而引起更多的天气反应,造成龙卷风。一个很小的问题,可能引起一系列反应,变成一个很大的问题。 - 墨菲定律
如果事情有可能变坏,无论这种可能性有多小,它总会发生。 - 破窗效应
如果一扇窗破了,其它的窗在不久内也会一起破掉。有个地方代码写得烂,那么不久,就会有越来越多的烂代码,导致项目的可维护性越来越低。 - 鲁棒性
指在系统某些参数的抖动下,仍然维持它的某些特性(性能、稳定)。 - 背压
当消费者消费数据的顺序小于生产者的顺序,通知生产者较低生产速度。 - 康威定律
一口气吃不了一个胖子,能搞定的先搞定。大而复杂的系统更倾向于分解,合久必分,分而治之,独立子系统可减少沟通成本。 - 让营地比来时更干净
美国童子军谚语,美国童子军相当于半军事化管理的夏令营,每次孩子们离开时都需要打扫干净,让营地比来时更干净。反应到软件开发中,就是不要破坏规则,不要引入混乱,每次提交代码都要比上次更优。 - 好莱坞法则
演员只需要把简历交给好莱坞演艺公司就可以了,后面的流程由好莱坞全面控制。“不要给我们打电话,我们会给你打电话”,表明了绝对控制权。 - kiss原则
keep it simple and stupid,保持简单,意思不要把东西搞得复杂 - 大拇指法则
又叫经验法则,是一种简单的,经验性的,探索性的,但不是很准确的原则。 - 悲观思维
开发过程中要保持一种悲观思维,类似于悲观锁一样,想法悲观,认为各种情况都可能出现问题,这样就能做好防范,保证程序的健壮性。 - 奥卡姆剃刀原理
如何必要,勿增实体。化繁为简,抓住重点。关注核心和关键点,不做一些没有必要的事情。
======================================================================== - 注意性能问题
包括调用对方接口性能,sql查询,算法复杂度,使用正确的数据结构等。
在高并发场景下,性能问题会加倍放大,很容易导致整个服务挂掉。 - 不要信任外部
不要信任前端,不要信任第三方服务,对所有可能的情况都应该进行校验。 - 接口设计
为上层提供接口(方法)应该从领域出发,保持一定的通用性,避免接口(方法)膨胀。 - 不要忽略细节
在一次接口对接中,我发现对方有一个单词拼写错误写少一个l字母,我觉得不需要告诉对方,并且对接不报错即可。过了许久,我在另一个项目也需要对接这个接口,我已经忘记这个单词错误问题,并且直接写对的单词,造成了一个bug。 - 生产上执行语句要非常小心
生产上的操作都需要仔细,确保不会出错,最好有回滚措施。举例:在使用跳板机查看redis集合内容时,不小心遍历一个大的集合,导致业务操作都阻塞。 - 日志很重要
有效的日志有时候是排查问题唯一的方式,例如要追溯一个较久前的数据。反之,无效无用的日志不要打。 - 不只代码
工作中不只程序,人事关系,职场规则,如何更好地与不同性格的人相处,控制情绪,提高说话的艺术,这很重要。 - 做好准备
汇报工作,安排工作,讨论方案,技术分享...什么事情要提前做好准备,才能有底气,不会被别人带节奏。
举例:讨论方案,对方给了一个方案,开始你没准备好,对方解释得头头是道,大家都觉得可以,后来你发现你有更好方案,但已经和别人定好,没用了,如果能提前准备好,价值就能体现。