# jtea **Repository Path**: ricardo__m/jtea ## Basic Information - **Project Name**: jtea - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-11-01 - **Last Updated**: 2023-11-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 简介 在我潮汕地区,茶是必不可少的,人们品尝就跟喝水一样平常,但茶却包含了很多学问和人生道理。茶之道,在于心境的平和,人生如茶,沉时坦然,浮时淡然,沉浮之间,淡然处之,可谓茶壶虽小,内涵乾坤。自古以来,以茶会友,以茶道来醒悟人生之道。可以说茶就好像国外的咖啡一样,而咖啡正是java的原意,这也是本仓库命名的由来。在技术的道路上,需要不断的醒悟和感悟,技术的远方是无止境的,但只要以平和的心态持之以恒,终能有所收获。 # 目录 ## spring/spring boot/cloud [spring bean生命周期](https://github.com/jmilktea/jmilktea/blob/master/spring/spring%20bean%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F.md) [spring session统计登录人数](https://github.com/jmilktea/jmilktea/blob/master/spring/SpringSession%E7%BB%9F%E8%AE%A1%E7%99%BB%E5%BD%95%E4%BA%BA%E6%95%B0.md) [spring容器初始化完成事件](https://github.com/jmilktea/jmilktea/blob/master/spring/spring%E5%AE%B9%E5%99%A8%E5%88%9D%E5%A7%8B%E5%AE%8C%E6%88%90%E4%BA%8B%E4%BB%B6.md) [spring循环依赖](https://github.com/jmilktea/jtea/blob/master/spring/spring%E5%BE%AA%E7%8E%AF%E4%BE%9D%E8%B5%96.md) [@Async循环依赖分析](https://github.com/jmilktea/jtea/blob/master/spring/%40Async%E5%BE%AA%E7%8E%AF%E4%BE%9D%E8%B5%96%E5%88%86%E6%9E%90.md) [spring cloud gateway + nacos](https://github.com/jmilktea/jmilktea/blob/master/spring%20cloud/gateway-nacos/readme.md) [spring cloud gateway filter](https://github.com/jmilktea/jmilktea/blob/master/spring%20cloud/gateway-filter/gateway%20filter.md) [eureka 原理/集群](https://github.com/jmilktea/jmilktea/blob/master/spring%20cloud/eureka-ha/eureka-ha.md) [feign](https://github.com/jmilktea/jmilktea/blob/master/spring%20cloud/feign/feign.md) [服务优雅下线](https://github.com/jmilktea/jtea/blob/master/spring%20cloud/%E6%9C%8D%E5%8A%A1%E4%BC%98%E9%9B%85%E4%B8%8B%E7%BA%BF.md) [动态创建bean托管到spring](https://github.com/jmilktea/jtea/blob/master/spring/%E5%8A%A8%E6%80%81%E5%88%9B%E5%BB%BAbean%E6%89%98%E7%AE%A1%E5%88%B0spring.md) [除了java-jar,还能这样运行你的springboot应用](https://github.com/jmilktea/jmilktea/blob/master/spring%20cloud/springboot%E5%8F%AF%E6%89%A7%E8%A1%8C%E7%A8%8B%E5%BA%8F.md) ## webflux [错误处理](https://github.com/jmilktea/jmilktea/blob/master/webflux/%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86.md) [日志追踪](https://github.com/jmilktea/jmilktea/blob/master/webflux/%E6%97%A5%E5%BF%97%E8%BF%BD%E8%B8%AA.md) [全局异常处理](https://github.com/jmilktea/jmilktea/blob/master/webflux/%E5%85%A8%E5%B1%80%E5%BC%82%E5%B8%B8%E5%A4%84%E7%90%86.md) [expand递归](https://github.com/jmilktea/jmilktea/blob/master/webflux/expand%E9%80%92%E5%BD%92.md) [swagger](https://github.com/jmilktea/jmilktea/blob/master/webflux/swagger.md) [debug](https://github.com/jmilktea/jmilktea/blob/master/webflux/debug.md) [map&flatMap](https://github.com/jmilktea/jmilktea/blob/master/webflux/map%E5%92%8CflatMap.md) [源码分析](https://github.com/jmilktea/jmilktea/blob/master/webflux/%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90.md) ## java基础 [@Transactional不生效?](https://github.com/jmilktea/jmilktea/blob/master/%E5%9F%BA%E7%A1%80/%40Transactional%E4%B8%8D%E7%94%9F%E6%95%88%EF%BC%9F.md) [java开发规范](https://github.com/jmilktea/jmilktea/blob/master/%E5%9F%BA%E7%A1%80/java%E8%A7%84%E8%8C%83.md) [什么?@Transactional又不生效了?](https://github.com/jmilktea/jmilktea/blob/master/%E5%9F%BA%E7%A1%80/%E4%BB%80%E4%B9%88%EF%BC%9F%40Transactional%E5%8F%88%E4%B8%8D%E7%94%9F%E6%95%88%E4%BA%86%EF%BC%9F.md) [cas](https://github.com/jmilktea/jmilktea/blob/master/%E5%9F%BA%E7%A1%80/cas.md) [java集合类型-Queue继承体系](https://github.com/jmilktea/jmilktea/blob/master/%E5%9F%BA%E7%A1%80/%E9%9B%86%E5%90%88%E7%B1%BB%E5%9E%8B/Queue.md) [happend before](https://github.com/jmilktea/jtea/blob/master/%E5%9F%BA%E7%A1%80/happend%20before%E5%8E%9F%E5%88%99.md) [java内省机制](https://github.com/jmilktea/jtea/blob/master/%E5%9F%BA%E7%A1%80/Java%E5%86%85%E7%9C%81%E6%9C%BA%E5%88%B6.md) [并发工具类Phaser](https://github.com/jmilktea/jtea/blob/master/%E5%9F%BA%E7%A1%80/%E5%B9%B6%E5%8F%91%E5%B7%A5%E5%85%B7%E7%B1%BBPhaser.md) ## jvm [jvm常用参数](https://github.com/jmilktea/jtea/blob/master/jvm/jvm%E5%B8%B8%E7%94%A8%E5%8F%82%E6%95%B0.md) [jdk常用命令](https://github.com/jmilktea/jtea/blob/master/jvm/jdk%E5%B8%B8%E7%94%A8%E5%91%BD%E4%BB%A4.md) [TLAB堆内存中的线程私有区域](https://github.com/jmilktea/jtea/blob/master/jvm/TLAB%E5%A0%86%E5%86%85%E5%AD%98%E4%B8%AD%E7%9A%84%E7%BA%BF%E7%A8%8B%E7%A7%81%E6%9C%89%E5%8C%BA%E5%9F%9F.md) [三色标记法](https://github.com/jmilktea/jtea/blob/master/jvm/%E4%B8%89%E8%89%B2%E6%A0%87%E8%AE%B0%E6%B3%95.md) ## mysql [锁简介](https://github.com/jmilktea/jtea/blob/master/mysql/%E9%94%81%E7%AE%80%E4%BB%8B.md) [数据库开发规范](https://github.com/jmilktea/jmilktea/blob/master/mysql/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%BC%80%E5%8F%91%E8%A7%84%E8%8C%83.md) [mysql三种log](https://github.com/jmilktea/jmilktea/blob/master/mysql/mysql%E4%B8%89%E7%A7%8Dlog.md) [一条危险的update语句](https://github.com/jmilktea/jmilktea/blob/master/mysql/%E4%B8%80%E6%9D%A1%E5%8D%B1%E9%99%A9%E7%9A%84update%E8%AF%AD%E5%8F%A5.md) [使用p6spy监控应用sql](https://github.com/jmilktea/jmilktea/blob/master/mysql/%E4%BD%BF%E7%94%A8p6spy%E7%9B%91%E6%8E%A7%E5%BA%94%E7%94%A8sql.md) [这么分页查数据居然重复了](https://github.com/jmilktea/jmilktea/blob/master/mysql/%E8%BF%99%E4%B9%88%E5%88%86%E9%A1%B5%E6%9F%A5%E6%95%B0%E6%8D%AE%E5%B1%85%E7%84%B6%E9%87%8D%E5%A4%8D%E4%BA%86.md) [MVCC原理](https://github.com/jmilktea/jmilktea/blob/master/mysql/MVCC%E5%8E%9F%E7%90%86.md) [深入理解索引](https://github.com/jmilktea/jmilktea/blob/master/mysql/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E7%B4%A2%E5%BC%95.md) [sql到底慢在哪里](https://github.com/jmilktea/jmilktea/blob/master/mysql/sql%E5%88%B0%E5%BA%95%E6%85%A2%E5%9C%A8%E5%93%AA%E9%87%8C.md) [order by居然有bug?](https://github.com/jmilktea/jmilktea/blob/master/mysql/orderby%20bug.md) [mysql到底有没有解决幻读问题](https://github.com/jmilktea/jtea/blob/master/mysql/mysql%E5%88%B0%E5%BA%95%E6%9C%89%E6%B2%A1%E6%9C%89%E8%A7%A3%E5%86%B3%E5%B9%BB%E8%AF%BB%E9%97%AE%E9%A2%98.md) [buffer pool] [我又遇到order by的坑了](https://github.com/jmilktea/jtea/blob/master/mysql/%E6%88%91%E5%8F%88%E9%81%87%E5%88%B0order%20by%E7%9A%84%E5%9D%91%E4%BA%86.md) ## redis [详解redis网络IO模型](https://github.com/jmilktea/jtea/blob/master/redis/%E8%AF%A6%E8%A7%A3redis%E7%BD%91%E7%BB%9CIO%E6%A8%A1%E5%9E%8B.md) [redis常用配置参数](https://github.com/jmilktea/jmilktea/blob/master/redis/redis%E5%B8%B8%E7%94%A8%E9%85%8D%E7%BD%AE%E5%8F%82%E6%95%B0.md) [resp协议](https://github.com/jmilktea/jmilktea/blob/master/redis/resp%E5%8D%8F%E8%AE%AE.md) [redis单机和集群搭建](https://github.com/jmilktea/jmilktea/blob/master/redis/redis%E5%8D%95%E6%9C%BA%E5%92%8C%E9%9B%86%E7%BE%A4%E6%90%AD%E5%BB%BA.md) [缓存和数据库一致性问题](https://github.com/jmilktea/jmilktea/blob/master/redis/%E7%BC%93%E5%AD%98%E5%92%8C%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%80%E8%87%B4%E6%80%A7%E9%97%AE%E9%A2%98.md) [分布式锁](https://github.com/jmilktea/jmilktea/blob/master/redis/%E5%88%86%E5%B8%83%E5%BC%8F%E9%94%81.md) [string类型底层SDS](https://github.com/jmilktea/jmilktea/blob/master/redis/string%E7%B1%BB%E5%9E%8B%E5%BA%95%E5%B1%82SDS.md) [redis geo地理空间](https://github.com/jmilktea/jmilktea/blob/master/redis/redis%20geo%E5%9C%B0%E7%90%86%E7%A9%BA%E9%97%B4.md) [zset](https://github.com/jmilktea/jmilktea/blob/master/redis/zset.md) [zset实践](https://github.com/jmilktea/jmilktea/blob/master/redis/zset%E5%AE%9E%E8%B7%B5.md) [hash](https://github.com/jmilktea/jmilktea/blob/master/redis/hash.md) [持久化机制](https://github.com/jmilktea/jtea/blob/master/redis/%E6%8C%81%E4%B9%85%E5%8C%96%E6%9C%BA%E5%88%B6.md) [使用Pipeline提升性能](https://github.com/jmilktea/jtea/blob/master/redis/Pipeline.md) ## 中间件 [nacos集群](https://github.com/jmilktea/jmilktea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/nacos-cluster/nacos%E9%9B%86%E7%BE%A4.md) [canal简介](https://github.com/jmilktea/jmilktea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/canal/canal%E7%AE%80%E4%BB%8B.md) [canal quick start](https://github.com/jmilktea/jmilktea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/canal/quick%20start.md) [canal server ha](https://github.com/jmilktea/jmilktea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/canal/canal%20server%20ha.md) [apache common pool2](https://github.com/jmilktea/jmilktea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/apache%20common%20pool2.md) [熔断-hystrix](https://github.com/jmilktea/jmilktea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/%E7%86%94%E6%96%AD/hystrix.md) [熔断-resilience4j](https://github.com/jmilktea/jmilktea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/%E7%86%94%E6%96%AD/resilience4j.md) [熔断-sentinel](https://github.com/jmilktea/jmilktea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/%E7%86%94%E6%96%AD/sentinel.md) [使用MapStruct替换BeanUtils](https://github.com/jmilktea/jtea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/%E4%BD%BF%E7%94%A8MapStruct%E6%9B%BF%E6%8D%A2BeanUtils.md) [加强版ThreadPoolExecutor](https://github.com/jmilktea/jtea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/%E5%8A%A8%E6%80%81%E7%BA%BF%E7%A8%8B%E6%B1%A0/%E5%8A%A0%E5%BC%BA%E7%89%88ThreadPoolExecutor.md) [加强版ThreadPoolExecutor升级](https://github.com/jmilktea/jtea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/%E5%8A%A8%E6%80%81%E7%BA%BF%E7%A8%8B%E6%B1%A0/%E5%8A%A0%E5%BC%BA%E7%89%88ThreadPoolExecutor%E5%8D%87%E7%BA%A7.md) ## kafka [kafka消费者重启消息重复消费](https://github.com/jmilktea/jmilktea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/kafka/%E6%B6%88%E8%B4%B9%E8%80%85%E9%87%8D%E5%90%AF%E6%B6%88%E6%81%AF%E9%87%8D%E5%A4%8D%E6%B6%88%E8%B4%B9%E9%97%AE%E9%A2%98.md) [kafka错误日志问题](https://github.com/jmilktea/jmilktea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/kafka/%E9%94%99%E8%AF%AF%E6%97%A5%E5%BF%97%E9%97%AE%E9%A2%98.md) [kafka分区分配策略](https://github.com/jmilktea/jtea/blob/master/%E4%B8%AD%E9%97%B4%E4%BB%B6/kafka/kafka%E5%88%86%E5%8C%BA%E5%88%86%E9%85%8D%E7%AD%96%E7%95%A5.md) ## elasticsearch [核心概念](https://github.com/jmilktea/jmilktea/blob/master/elasticsearch/elasticsearch%E6%A0%B8%E5%BF%83%E6%A6%82%E5%BF%B5.md) [倒排索引](https://github.com/jmilktea/jmilktea/blob/master/elasticsearch/%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95.md) [es/kibana/集群/cerebro搭建](https://github.com/jmilktea/jmilktea/blob/master/elasticsearch/elasticsearch%E6%90%AD%E5%BB%BA.md) [分词](https://github.com/jmilktea/jmilktea/blob/master/elasticsearch/%E5%88%86%E8%AF%8D.md) [常用api](https://github.com/jmilktea/jmilktea/blob/master/elasticsearch/%E5%B8%B8%E7%94%A8api.md) [es写入原理](https://github.com/jmilktea/jmilktea/blob/master/elasticsearch/elasticsearch%E5%86%99%E5%85%A5%E5%8E%9F%E7%90%86.md) [使用java访问es](https://github.com/jmilktea/jtea/blob/master/elasticsearch/%E4%BD%BF%E7%94%A8java%E8%AE%BF%E9%97%AEes.md) [es中的分页](https://github.com/jmilktea/jtea/blob/master/elasticsearch/es%E4%B8%AD%E7%9A%84%E5%88%86%E9%A1%B5.md) ## linux [基础命令](https://github.com/jmilktea/jtea/blob/master/linux/%E5%9F%BA%E7%A1%80%E5%91%BD%E4%BB%A4.md) [实操](https://github.com/jmilktea/jmilktea/blob/master/linux/%E5%AE%9E%E6%93%8D.md) [系统](https://github.com/jmilktea/jmilktea/blob/master/linux/%E7%B3%BB%E7%BB%9F.md) [五种IO模型](https://github.com/jmilktea/jmilktea/blob/master/linux/%E4%BA%94%E7%A7%8DIO%E6%A8%A1%E5%9E%8B.md) [零复制](https://github.com/jmilktea/jmilktea/blob/master/linux/%E9%9B%B6%E5%A4%8D%E5%88%B6.md) [顺序IO](https://github.com/jmilktea/jmilktea/blob/master/linux/%E9%A1%BA%E5%BA%8FIO.md) ## mybatis [核心组件](https://github.com/jmilktea/jtea/blob/master/mybatis/%E6%A0%B8%E5%BF%83%E7%BB%84%E4%BB%B6.md) [springboot是如何集成mybatis的](https://github.com/jmilktea/jmilktea/blob/master/mybatis/springboot%E9%9B%86%E6%88%90mybatis%E5%8E%9F%E7%90%86.md) ## 设计模式 [在同事的代码中学习-责任链模式](https://github.com/jmilktea/jtea/blob/master/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E5%9C%A8%E5%90%8C%E4%BA%8B%E7%9A%84%E4%BB%A3%E7%A0%81%E4%B8%AD%E5%AD%A6%E4%B9%A0-%E8%B4%A3%E4%BB%BB%E9%93%BE%E6%A8%A1%E5%BC%8F.md) ## 场景设计 [分层设计](https://github.com/jmilktea/jtea/blob/master/%E8%AE%BE%E8%AE%A1/%E5%88%86%E5%B1%82%E8%AE%BE%E8%AE%A1.md) [mq多环境topic设计](https://github.com/jmilktea/jmilktea/blob/master/%E8%AE%BE%E8%AE%A1/mq%E5%A4%9A%E7%8E%AF%E5%A2%83topic%E8%AE%BE%E8%AE%A1.md) [解决多环境下微服务实例乱窜](https://github.com/jmilktea/jmilktea/blob/master/%E8%AE%BE%E8%AE%A1/%E8%A7%A3%E5%86%B3%E5%A4%9A%E7%8E%AF%E5%A2%83%E4%B8%8B%E5%BE%AE%E6%9C%8D%E5%8A%A1%E5%AE%9E%E4%BE%8B%E4%B9%B1%E7%AA%9C.md) ## 算法 [使用TreeSet优化任务分配.md](https://github.com/jmilktea/jmilktea/blob/master/%E7%AE%97%E6%B3%95/%E4%BD%BF%E7%94%A8TreeSet%E4%BC%98%E5%8C%96%E4%BB%BB%E5%8A%A1%E5%88%86%E9%85%8D.md) [限流算法](https://github.com/jmilktea/jmilktea/blob/master/%E7%AE%97%E6%B3%95/%E9%99%90%E6%B5%81%E7%AE%97%E6%B3%95.md) [时间轮算法] [缓存淘汰算法] [一致性hash算法](https://github.com/jmilktea/jmilktea/blob/master/%E7%AE%97%E6%B3%95/%E4%B8%80%E8%87%B4%E6%80%A7hash%E7%AE%97%E6%B3%95.md) [比例分配算法](https://github.com/jmilktea/jmilktea/blob/master/%E7%AE%97%E6%B3%95/%E6%AF%94%E4%BE%8B%E5%88%86%E9%85%8D%E7%AE%97%E6%B3%95.md) [手写lru](https://github.com/jmilktea/jtea/blob/master/%E7%AE%97%E6%B3%95/%E6%89%8B%E5%86%99lru.md) ## 问题排查 [java cpu占用高问题排查](https://github.com/jmilktea/jtea/blob/master/%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/java%E5%BA%94%E7%94%A8cpu100%25(%E5%90%ABdocker).md) [java 内存占用高问题排查](https://github.com/jmilktea/jtea/blob/master/%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/java%E5%BA%94%E7%94%A8%E5%86%85%E5%AD%98%E5%8D%A0%E7%94%A8%E9%AB%98%E9%97%AE%E9%A2%98.md) [HttpClient线程池设置问题](https://github.com/jmilktea/jtea/blob/master/%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/HttpClient%E7%BA%BF%E7%A8%8B%E6%B1%A0%E8%AE%BE%E7%BD%AE%E9%97%AE%E9%A2%98.md) [rm命令删除文件了,但磁盘空间没有释放](https://github.com/jmilktea/jtea/blob/master/%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/linux%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E6%B2%A1%E6%9C%89%E9%87%8A%E6%94%BE%E7%A9%BA%E9%97%B4.md) [一次内存泄漏排查](https://github.com/jmilktea/jmilktea/blob/master/%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/%E4%B8%80%E6%AC%A1%E5%86%85%E5%AD%98%E6%B3%84%E6%BC%8F%E6%8E%92%E6%9F%A5.md) [一次redis带宽占用高分析](https://github.com/jmilktea/jmilktea/blob/master/%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/%E4%B8%80%E6%AC%A1redis%E5%B8%A6%E5%AE%BD%E5%8D%A0%E7%94%A8%E9%AB%98%E5%88%86%E6%9E%90.md) [线程池shutdown引发TimeoutException](https://github.com/jmilktea/jtea/blob/master/%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/%E7%BA%BF%E7%A8%8B%E6%B1%A0shutdown%E5%BC%95%E5%8F%91TimeoutException.md) [一次服务启动慢问题排查](https://github.com/jmilktea/jtea/blob/master/%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/%E4%B8%80%E6%AC%A1%E6%9C%8D%E5%8A%A1%E5%90%AF%E5%8A%A8%E6%85%A2%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5.md) ## 工具 [arthas实践](https://github.com/jmilktea/jmilktea/blob/master/%E5%B7%A5%E5%85%B7%E7%B1%BB/arthas/%E5%AE%9E%E8%B7%B5.md) [arthas tunnel] [git](https://github.com/jmilktea/jtea/blob/master/%E5%B7%A5%E5%85%B7%E7%B1%BB/git/git.md) [git hook解决多仓库代码合规问题](https://github.com/jmilktea/jmilktea/blob/master/%E5%B7%A5%E5%85%B7%E7%B1%BB/git/githook%E8%A7%A3%E5%86%B3%E4%BB%A3%E7%A0%81%E5%90%88%E8%A7%84%E9%97%AE%E9%A2%98.md) [ssh多个远端仓库](https://github.com/jmilktea/jtea/blob/master/%E5%B7%A5%E5%85%B7%E7%B1%BB/git/ssh%E5%A4%9A%E4%B8%AA%E8%BF%9C%E7%AB%AF%E4%BB%93%E5%BA%93.md) [jmeter](https://github.com/jmilktea/jmilktea/blob/master/%E5%B7%A5%E5%85%B7%E7%B1%BB/jmeter/jmeter.md) [curl](https://github.com/jmilktea/jmilktea/blob/master/%E5%B7%A5%E5%85%B7%E7%B1%BB/curl/curl.md) [idea插件汇总](https://github.com/jmilktea/jtea/blob/master/%E5%B7%A5%E5%85%B7%E7%B1%BB/idea/%E6%8F%92%E4%BB%B6.md) [写一个idea插件通知你gitlab远端分支变更了](https://github.com/jmilktea/jmilktea/blob/master/%E5%B7%A5%E5%85%B7%E7%B1%BB/idea/%E5%86%99%E4%B8%80%E4%B8%AAidea%E6%8F%92%E4%BB%B6%E9%80%9A%E7%9F%A5%E4%BD%A0gitlab%E8%BF%9C%E7%AB%AF%E5%88%86%E6%94%AF%E5%8F%98%E6%9B%B4%E4%BA%86.md) ## 面试 [双亲委派机制](https://github.com/jmilktea/jmilktea/blob/master/%E9%9D%A2%E8%AF%95/%E5%8F%8C%E4%BA%B2%E5%A7%94%E6%B4%BE%E6%9C%BA%E5%88%B6.md) [jdk动态代理与cglib](https://github.com/jmilktea/jmilktea/blob/master/%E9%9D%A2%E8%AF%95/jdk%E5%8A%A8%E6%80%81%E4%BB%A3%E7%90%86%E4%B8%8Ecglib.md) [tcp三次握手四次挥手](https://github.com/jmilktea/jmilktea/blob/master/%E9%9D%A2%E8%AF%95/tcp%E4%B8%89%E6%AC%A1%E6%8F%A1%E6%89%8B%E5%9B%9B%E6%AC%A1%E6%8C%A5%E6%89%8B.md) [CountDownLatch和CyclicBarrier](https://github.com/jmilktea/jmilktea/blob/master/%E9%9D%A2%E8%AF%95/CountDownLatch%E5%92%8CCyclicBarrier.md) [并发编程wait和notify](https://github.com/jmilktea/jtea/blob/master/%E9%9D%A2%E8%AF%95/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8Bwait%E5%92%8Cnotify.md) [面试再也不怕问ThreadLocal了](https://github.com/jmilktea/jtea/blob/master/%E9%9D%A2%E8%AF%95/ThreadLocal.md) ## 其它 [druid加密](https://github.com/jmilktea/jmilktea/blob/master/%E5%85%B6%E5%AE%83/druid%E5%AF%86%E7%A0%81%E5%8A%A0%E5%AF%86.md) [jasypt加密配置文件](https://github.com/jmilktea/jmilktea/blob/master/%E5%85%B6%E5%AE%83/jasypt.md) [ThreadLocal扩展](https://github.com/jmilktea/jmilktea/blob/master/%E5%85%B6%E5%AE%83/ThreadLocal%E6%89%A9%E5%B1%95.md) [单元测试启动加速](https://github.com/jmilktea/jmilktea/blob/master/%E5%85%B6%E5%AE%83/%E5%8D%95%E5%85%83%E6%B5%8B%E8%AF%95%E5%90%AF%E5%8A%A8%E5%8A%A0%E9%80%9F.md) [如何优雅的统计方法执行时间](https://github.com/jmilktea/jtea/blob/master/%E5%85%B6%E5%AE%83/%E5%A6%82%E4%BD%95%E4%BC%98%E9%9B%85%E7%9A%84%E7%BB%9F%E8%AE%A1%E6%96%B9%E6%B3%95%E6%89%A7%E8%A1%8C%E6%97%B6%E9%97%B4.md) [如何做好code reivew](https://github.com/jmilktea/jtea/blob/master/%E5%85%B6%E5%AE%83/%E5%A6%82%E4%BD%95%E5%81%9A%E5%A5%BDcode%20reivew.md) [为了简写这行代码,我竟使用静态和动态编译技术](https://github.com/jmilktea/jtea/blob/master/%E5%85%B6%E5%AE%83/%E4%B8%BA%E4%BA%86%E7%AE%80%E5%86%99%E8%BF%99%E8%A1%8C%E4%BB%A3%E7%A0%81%EF%BC%8C%E6%88%91%E7%AB%9F%E4%BD%BF%E7%94%A8%E9%9D%99%E6%80%81%E5%92%8C%E5%8A%A8%E6%80%81%E7%BC%96%E8%AF%91%E6%8A%80%E6%9C%AF.md) ## 编程原则 - kiss原则 keep it simple and stupid,保持简单,意思不要把东西搞得复杂。 - 单一职责原则 说明:单一职责原则包括方法职责单一,类职责单一,模块职责单一等,一个方法只做一件事情有很多好处,例如代码阅读起来更舒服,后期维护更方便。 经常看到我们的代码方法参数非常长,有的甚至达到10个左右,很明显就违反了单一职责,这个方法做了太多事情。 - 开闭原则 说明:对扩展开放,对修改封闭。这意味着我们的方法,类,模块,在新增功能时,是可以通过扩展实现的,而不需要去修改原来的代码。 这样做的好处是可以动态增删功能,且因为没有修改原来的代码,不需要对原来的代码进行审查,单元测试,出错的可能性大大降低。 [维基百科](https://zh.wikipedia.org/zh-hans/%E5%BC%80%E9%97%AD%E5%8E%9F%E5%88%99) - 高内聚原则 说明:高内聚可以理解为相同的业务、逻辑都应该由一个对象处理,这个对象可以是类,方法,接口等,而不应该把这些逻辑分散到各个地方。 比如后期逻辑需要调整,高内聚的设计优势就非常明显,只需要修改很小的地方,而如果代码分散在各个地方,改起来就非常麻烦,而且容易出错。 - Rule Of Three,三次原则 含义:当你第一次用到某个功能时,编写一个特定的方法完成它。当你第二次又用到它时,拷贝上一次的代码。当你第三次再遇到,才考虑着手优化,通过设计写出通用的方法。 说明:原则的主要思想是避免过度设计,过度设计除了会浪费我们的时间,还会让本来简单的代码复杂化,增加维护成本。 原则具有指导性,但有两点需要提醒下: 1.我们需要根据实际情况来判断,例如我比较推荐“二次原则“,当一个功能出现第二次的时候,建议就着手优化。 2.避免过度设计绝对不是“不设计”,需要把握好度,不要走两个极端。 这里有一些过度设计的[案例](https://juejin.cn/post/6844903906409971719),其中有一些我们也会犯错的场景,如只有一种类型,就搞个泛型,动不动就定义一个接口。 ## 概念 - 蝴蝶效应 亚马逊河一只蝴蝶煽动翅膀,可能引起周边环境的变化,进而引起更多的天气反应,造成龙卷风。一个很小的问题,可能引起一系列反应,变成一个很大的问题。 - 墨菲定律 如果事情有可能变坏,无论这种可能性有多小,它总会发生。 - 破窗效应 如果一扇窗破了,其它的窗在不久内也会一起破掉。有个地方代码写得烂,那么不久,就会有越来越多的烂代码,导致项目的可维护性越来越低。 - 鲁棒性 指在系统某些参数的抖动下,仍然维持它的某些特性(性能、稳定)。 - 背压 当消费者消费数据的顺序小于生产者的顺序,通知生产者较低生产速度。 - 康威定律 一口气吃不了一个胖子,能搞定的先搞定。大而复杂的系统更倾向于分解,合久必分,分而治之,独立子系统可减少沟通成本。 - 让营地比来时更干净 美国童子军谚语,美国童子军相当于半军事化管理的夏令营,每次孩子们离开时都需要打扫干净,让营地比来时更干净。反应到软件开发中,就是不要破坏规则,不要引入混乱,每次提交代码都要比上次更优。 - 好莱坞法则 演员只需要把简历交给好莱坞演艺公司就可以了,后面的流程由好莱坞全面控制。“不要给我们打电话,我们会给你打电话”,表明了绝对控制权。 - 大拇指法则 又叫经验法则,是一种简单的,经验性的,探索性的,但不是很准确的原则。 - 悲观思维 开发过程中要保持一种悲观思维,类似于悲观锁一样,想法悲观,认为各种情况都可能出现问题,这样就能做好防范,保证程序的健壮性。 - 奥卡姆剃刀原理 如何必要,勿增实体。化繁为简,抓住重点。关注核心和关键点,不做一些没有必要的事情。 ## 经验总结 - 注意性能问题 包括调用对方接口性能,sql查询,算法复杂度,使用正确的数据结构等。 在高并发场景下,性能问题会加倍放大,很容易导致整个服务挂掉。 - 不要信任外部 不要信任前端,不要信任第三方服务,对所有可能的情况都应该进行校验。 - 接口设计 为上层提供接口(方法)应该从领域出发,保持一定的通用性,避免接口(方法)膨胀。 - 不要忽略细节 在一次接口对接中,我发现对方有一个单词拼写错误写少一个l字母,我觉得不需要告诉对方,并且对接不报错即可。过了许久,我在另一个项目也需要对接这个接口,我已经忘记这个单词错误问题,并且直接写对的单词,造成了一个bug。 - 生产上执行语句要非常小心 生产上的操作都需要仔细,确保不会出错,最好有回滚措施。举例:在使用跳板机查看redis集合内容时,不小心遍历一个大的集合,导致业务操作都阻塞。 - 日志很重要 有效的日志有时候是排查问题唯一的方式,例如要追溯一个较久前的数据。反之,无效无用的日志不要打。 - 不只代码 工作中不只程序,人事关系,职场规则,如何更好地与不同性格的人相处,控制情绪,提高说话的艺术,这很重要。 - 做好准备 汇报工作,安排工作,讨论方案,技术分享...什么事情要提前做好准备,才能有底气,不会被别人带节奏。 举例:讨论方案,对方给了一个方案,开始你没准备好,对方解释得头头是道,大家都觉得可以,后来你发现你有更好方案,但已经和别人定好,没用了,如果能提前准备好,价值就能体现。