源码解析
文章平均质量分 93
大道坦荡
这个作者很懒,什么都没留下…
展开
-
一文读懂Spring循环依赖
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录什么是循环依赖如何解决官方的几点建议属性注入如何解决循环依赖关键词介绍为什么要用三级缓存推断分析代码举证原因分析结论什么是循环依赖循环依赖主要是 A服务依赖B服务,B服务又依赖A服务,两者之间的调用关系形成了一个环,也就是环形调用,这种一般是由于不规范的的编码行为导致。如何解决在Spring 中,依赖注入有两种方式,以xml配置为例,属性注入 2. 构造器注入 官原创 2021-06-04 15:22:44 · 520 阅读 · 1 评论 -
spring实现定制化网关,动态修改url
文章目录前言源码分析找到入口代码实践总结前言在项目中,我们常常使用api网关来统一对接前端的请求,在api网关中,通过Rpc调用后端服务,理论上每一个rpc服务都要有一个固定url与之匹配,按照正常的开发流程, @RequestMapping("/test.do") @ResponseBody public String test(){ return xxService.xxx(); } 我们会写出如上的代码,每次都是固定的代码格式,url一开始就原创 2021-05-27 17:41:46 · 1863 阅读 · 2 评论 -
聊一聊synchronized锁的状态与升级
文章目录一、简介二、对象头三、锁的状态一、简介java在1.6之后为了减少获得锁和释放锁带来的性能消耗,引入了偏向锁和轻量级锁的概念,在jdk 1.6中,锁分为四种状态,从低到高为:无锁,偏向锁,轻量级锁,重量级锁。这几个状态会随着线程竞争不断升级,但是升级后的状态不会再降级。二、对象头在介绍锁的状态升级之前,我们先了解一下,java对象头的基本概念。java对象头分为三个部分:Mark Word对象数据的指针数组对象的长度(如果是数组的话)synchronized用的锁是存在Ja.原创 2021-01-04 19:09:29 · 803 阅读 · 1 评论 -
深入探讨synchronized和ReentrantLock
synchronized 和reentrantlock 在java俗称隐式锁和显示锁,其中reentrantlock 包含两种实现ReentrantLock 和 ReentrantReadWriteLock悲观锁和乐观锁悲观锁又名独占锁,代表是synchronized,它的设计思路是假设一定会发生冲突,所以在获取到锁的时候会阻塞其他线程,这样实现的好处是简单安全,但是代表是synchronized属于重量级锁,在挂起线程和恢复线程的时候,需要从用户态切换到内核态,会带来很大的性能开销.乐观锁的代表是C原创 2020-12-23 19:18:50 · 1002 阅读 · 0 评论 -
HashMap不得不说的故事
概要Map属于Java常用的数据结构,其中HashMap和ConcurrentHashMap是使用非常高频的两个类HashMapHashMap根据键的HashCode值存储数据,大多数情况下可以通过hash直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。HashMap最多只允许一条记录的键为null,允许多个值为null。HashMap不是线程安全的类,如果在多线程环境下进行写入操作,可能会导致内部链表变成成环形链表,形成死循环(JDK1.7实现)。...原创 2020-08-04 22:45:59 · 179 阅读 · 0 评论 -
TheadLocal源码解析
TheadLocal详解概述这是JDK提供的api类,该类提供了线程局部变量,它独立于变量的初始化副本,为每个通过get/set方法访问某个变量提供基于自己线程的独立变量。源码解析整体上ThreadLocal的使用就是通过get/set方法来使用:get:获取当前线程获取当前线程ThreadLocalMap如果不为空,获取当前map的值如果为空,初始化新...原创 2018-08-14 19:32:03 · 5256 阅读 · 1 评论 -
深度剖析ArrayList与LinkedList的区别
ArrayList内部使用了数组实现,提到ArrayList就不得不提到他的兄弟Vector,这两者之间的实现基本类似,唯一的区别是前者线程不安全,后者线程安全。至于ArrayList为什么线程不安全,参见下一篇文章LinedList内部使用了双向链表。这两种数据结构的内部不同实现就决定了它们在应用场景上侧重不同。 private static class Node<E>...原创 2019-04-17 00:18:59 · 1583 阅读 · 0 评论