摘要: 前言 池化思想在实际开发中有很多应用,指的是针对一些创建成本高,创建频繁的对象,用完不弃,将其缓存在对象池子里,下次使用时优先从池子里获取,如果获取到则可以直接使用,以此降低创建对象的开销。 我们最熟悉的数据库连接池就是一种池化思想的应用,数据库操作是非常频繁的,数据库连接的创建、销毁开销很大,每次 阅读全文
posted @ 2024-03-15 09:58 jtea 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 前言 关于动态代理的一些知识,以及cglib与jdk动态代理的区别,在这一篇已经介绍过,不熟悉的可以先看下。 本篇我们来学习一下cglib的FastClass机制,这是cglib与jdk动态代理的一个主要区别,也是一个面试考点。 我们知道jdk动态代理是使用InvocationHandler接口,在 阅读全文
posted @ 2024-03-12 10:21 jtea 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 背景 由于业务变迁,合规要求,我们需要删除大量非本公司的数据,涉及到上百张表,几个T的数据清洗。我们的做法是先从基础数据出发,将要删除的数据id收集到一张表,然后再由上往下删除子表,多线程并发处理。 我们使用的是阿里的polardb,完全兼容mysql协议,5.7版本,RC隔离级别。删除过程一直很顺 阅读全文
posted @ 2023-12-26 10:19 jtea 阅读(2554) 评论(2) 推荐(15) 编辑
摘要: 背景 阿里java开发规范是阿里巴巴总结多年来的最佳编程实践,其中每一条规范都经过仔细打磨或踩坑而来,目的是为社区提供一份最佳编程规范,提升代码质量,减少bug。 这基本也是java业界都认可的开发规范,我们团队也是以此规范为基础,在结合实际情况,补充完善。最近在团队遇到的几个问题,加深了我对这份开 阅读全文
posted @ 2023-12-04 10:11 jtea 阅读(852) 评论(0) 推荐(1) 编辑
摘要: 背景 在我们系统中有这么一个需求,业务方会通过mq将一些用户信息传给我们,我们的服务处理完后,再将信息转发给子系统。mq的内容如下: @Data public class Person { //第一部分 private Integer countryId; private Integer compa 阅读全文
posted @ 2023-10-31 10:06 jtea 阅读(1260) 评论(1) 推荐(4) 编辑
摘要: # 前言 不知道大家有没有发现,设计模式学习起来其实不容易,并不是说它难,主要是它表达的是思想层面或者说抽象层面的东西,如果你没有实践经历过,感觉就是看了就懂,过了就忘。 所以本人现在也不多花费时间去专门学习设计模式,而是平时在看一些框架源码时,多留意,多学习别人的设计方法和实现思路,在平时工作中, 阅读全文
posted @ 2023-08-23 09:56 jtea 阅读(829) 评论(0) 推荐(5) 编辑
摘要: # 前言 本篇来介绍一下redis pipeline,主要是由于最近一次在帮开发同学review代码的时候,发现对redis有个循环操作可以优化。场景大概是这样的,根据某个uid要从redis查询一批数据,每次大概1000个key左右,如果查得到就返回,否则查db,然后写回缓存。由于每次要查的key 阅读全文
posted @ 2023-08-21 10:31 jtea 阅读(944) 评论(0) 推荐(4) 编辑
摘要: # 前言 在面试这一篇我们介绍过[CountDownLatch和CyclicBarrier](https://github.com/jmilktea/jtea/blob/master/%E9%9D%A2%E8%AF%95/CountDownLatch%E5%92%8CCyclicBarrier.md 阅读全文
posted @ 2023-08-11 08:52 jtea 阅读(573) 评论(0) 推荐(1) 编辑
摘要: ## 背景 生产上有个导报表功能,工作了很长一段时间一直都很稳,没出现过什么问题,最近运营同学突然反馈导出来的数据和实际的对不上,经过排查发现导出的数据有重复,也有的没导出来。 由于我们提前生成好数据(每天会truncate重新生成),所以导出的逻辑非常简单,不需要关联很多表捞数据,只需要从一张表查 阅读全文
posted @ 2023-08-09 11:37 jtea 阅读(2592) 评论(13) 推荐(13) 编辑
摘要: 要解决多线程并发问题,常见的手段无非就几种。加锁,如使用synchronized,ReentrantLock,加锁可以限制资源只能被一个线程访问;CAS机制,如AtomicInterger,AtomicBoolean等原子类,通过自旋的方式来尝试修改资源;还有本次我们要介绍的ThreadLocal类 阅读全文
posted @ 2023-08-01 11:11 jtea 阅读(951) 评论(1) 推荐(2) 编辑