就是要造轮子
文章平均质量分 55
重复造轮子
buffeer
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
第14章 Spring的MySQLMaxValueIncrementer深入分析与扩展
取号这种需求在开发中有时候很常见,例如:银行办理业务时候就需求取号。那如何去实现一种高效、可靠的取号呢?对于取号这种需求,我们首先需要保证取号不能重复,也就是说保证分布式系统取号也不能重复。有可能我们会首先想到基于Redis的incr命令可以高效、快速实现,但是缺点是当Redis宕机后,有可能造成数据丢失,导致取号重复。另一种方案就是基于MySQL实现,也就是今天的主题 MySQLMaxValueIncrementer。源码分析创建 MySQLMaxValueIncrementer 对象时,需要指定表原创 2022-04-23 11:03:53 · 966 阅读 · 0 评论 -
第5章 仿写Spring的定时任务Task
第5章 仿写Spring的定时任务Task在第4章 Spring 定时任务 分析Spring实现定时任务的源码。本章节是自定义注解 @EnableScheduling2、@Scheduled2 来实现定时任务的功能。本章节主要照着Spring源码进行仿写,省略一些复杂的步骤,主要用来加深源码的理解。考虑到代码比较多,直接贴上GitHub地址:task-joy。希望喜欢的小伙伴给一些赞????效果编写启动类,使用@EnableScheduling2 注解@SpringBootApplication原创 2022-02-16 15:36:44 · 197 阅读 · 0 评论 -
如何设计数据库连接池
如何设计数据库连接池曾经在面试的时候,就被问到如何设计连接池。当时就没有回答上来,就与offer擦肩而过。今天就来动手写一个简易版数据库连接池。为什么需要连接池?数据库连接是一种比较宝贵资源,其创建或销毁都需要系统的开销。如果频繁创建、销毁,那势必会造成系统性能低下。为了提高资源的复用性,我们可以把创建的连接放入池中,需要的时候从池中获取,不需要的时候归还到池。这样我们就大大节省系统资源开销,还提高系统的性能。难点设计数据库连接池的难点在于:如何去归还到池中。所用技术动态代理:动态代理也可以理解原创 2021-05-23 22:02:36 · 1430 阅读 · 0 评论 -
Mybatis是如何设计解析property值
Mybatis是如何设计解析property值的Mybatis是现在非常流行一个开源框架,有很多公司都在使用的。当然,优秀的框架必然有我们学习的地方,今天和大家分享一个优秀设计——解析property值。大家学习Mybatis时,想必对 resultMap 标签都应该了解。<resultMap id = "userMap" type="User"> <id column="id" property="id"></id> <result property="o原创 2021-05-07 22:01:51 · 602 阅读 · 0 评论 -
如何设计List的分段
如何设计List的分段不知道小伙伴有没有遇到这种情况,在一次插入大量数据到数据库时,由于超时的限制,有时候我们需要分批次去插入。反正我是遇到过这种情况的,要解决这样问题也很简单,那就是对数据进行分段,也就是对List进行分段。于是,我写了这样的方法。public List<T> partionInsert(List<T> records, int limit) { int fromIndex = 0; List<List<T>> partionList原创 2021-04-26 21:11:28 · 659 阅读 · 0 评论 -
如何设计集合交集、差集、补集
如何设计集合交集、差集、补集集合的交集可能你会说JDK已经提供了交集的功能,但是差集、补集并没有提供实现。于是,首先让我们动手重复造轮子,先实现一个交集功能,你会怎么实现呢?我设计一个函数,需要两个入参,然后求他们交集,并返回。我的实现如下。public static <T> Set<T> intersection(Collection<T> from, Collection<T> to) { Objects.requireNonNull(f原创 2021-04-17 14:22:02 · 360 阅读 · 0 评论
分享