首页
学习
活动
专区
工具
TVP
发布

算法之名

专栏作者
332
文章
329113
阅读量
37
订阅数
LinkedHashMap源码分析
我们都知道HashMap是无序的Map,TreeMap是有序的Map。而LinkedHashMap继承于HashMap,也是一个有序的Map,这似乎违背了Hash的理论。(注:TreeMap和LinkedHashMap的有序性是不一样的,TreeMap的根据Key的大小来排序的,而LinkedHashMap是根据put的先后顺序来排序的)
算法之名
2020-05-26
3300
ConcurrentSkipListMap跳表原理解析
内部结构如下(图片来源于网络),这里面Node其实就是HeadIndex中的level1,level2,level3中的一个个绿点。
算法之名
2019-12-03
5650
Springboot自动装配整理
再模仿Spring Cloud Feign源码解析 中的@EnableFeignClients代码写一个我们自己的标签
算法之名
2019-11-23
4220
分布式发号器的三种同步实现方式 顶
因为有3种同步方式,先给一个抽象类,实现共性.分布式ID由机器号+生产方式+版本号+实现号+时间戳+流水号组成
算法之名
2019-08-20
9220
浅谈springboot Web模式下的线程安全问题
我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,对于在Controller中调用他们的方法,由于方法在JVM中属于栈操作,对于每一个线程来说,栈都是独立的,所以是线程安全的。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,系统都会用原有的instance去处理,这样导致了两个结果:一是我们不用每次创建Controller,二是减少了对象创建和垃圾收集的时间;由于只有一个Controller的instance,当多个线程调用它的时候,它里面的instance变量就不是线程安全的了,会发生窜数据的问题。 如果我们定义了一个类的实例,如 private Company company = new Company(); 而在@RequestMapping方法中去用到了他, 这里就存在并发线程安全的问题。对于所有的请求request,这个company对象是相通的。 当然我们也可以用这个特性来制作访问计数器 只需要定义一个private int cout = 0; 在每一次请求后cout++;
算法之名
2019-08-20
1.5K0
Mybatis中SqlNode的组合模式 顶
组合( Composite )模式就是把对象组合成树形结构,以表示“部分-整体”的层次结构,用户可以像处理一个简单对象一样来处理一个复杂对象,从而使得调用者无需了解复杂元素的内部结构。
算法之名
2019-08-20
2K0
mybatis缓存的装饰器模式 顶
一般在开发生产中,对于新需求的实现,我们一般会有两种方式来处理,一种是直接修改已有组件的代码,另一种是使用继承方式。第一种显然会破坏已有组件的稳定性。第二种,会导致大量子类的出现。装饰器模式可以动态的为对象添加功能,它是基于组合的方式来实现该功能的。组合优于继承。
算法之名
2019-08-20
5440
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档