工作面试中经常遇到ThreadLocal,但是很多同学并不了解ThreadLocal实现原理,到底为什么会发生内存泄漏也是一知半解?今天一灯带你深入剖析ThreadLocal源码,总结ThreadLocal使用规范,解析ThreadLocal高频面试题。1.ThreadLocal是什么ThreadLocal是线程本地变量,就是线程的私有变量,不同线程之间相互隔离,无法共享,相当于每个线程拷贝了一份变量的副本。目的就是在多线程环境中,无需加锁,也能保证数据的安全性。2.ThreadLocal的使用/***@author一灯架构*@apiNoteThreadLocal示例**/publicclas
工作面试中经常遇到ThreadLocal,但是很多同学并不了解ThreadLocal实现原理,到底为什么会发生内存泄漏也是一知半解?今天一灯带你深入剖析ThreadLocal源码,总结ThreadLocal使用规范,解析ThreadLocal高频面试题。1.ThreadLocal是什么ThreadLocal是线程本地变量,就是线程的私有变量,不同线程之间相互隔离,无法共享,相当于每个线程拷贝了一份变量的副本。目的就是在多线程环境中,无需加锁,也能保证数据的安全性。2.ThreadLocal的使用/***@author一灯架构*@apiNoteThreadLocal示例**/publicclas
1.扩容方案剖析1.1扩容问题在项目初期,我们部署了三个数据库A、B、C,此时数据库的规模可以满足我们的业务需求。为了将数据做到平均分配,我们在Service服务层使用uid%3进行取模分片,从而将数据平均分配到三个数据库中。如图所示:后期随着用户量的增加,用户产生的数据信息被源源不断的添加到数据库中,最终达到数据库的最佳存储容量。如果此时继续向数据库中新增数据,会导致数据库的CRUD等基本操作变慢,进而影响整个服务的响应速度。这时,我们需要增加新的节点,对数据库进行水平扩容,那么加入新的数据库D后,数据库的规模由原来的3个变为4个。如图所示:此时由于分片规则发生了变化(uid%3变为uid%
1.扩容方案剖析1.1扩容问题在项目初期,我们部署了三个数据库A、B、C,此时数据库的规模可以满足我们的业务需求。为了将数据做到平均分配,我们在Service服务层使用uid%3进行取模分片,从而将数据平均分配到三个数据库中。如图所示:后期随着用户量的增加,用户产生的数据信息被源源不断的添加到数据库中,最终达到数据库的最佳存储容量。如果此时继续向数据库中新增数据,会导致数据库的CRUD等基本操作变慢,进而影响整个服务的响应速度。这时,我们需要增加新的节点,对数据库进行水平扩容,那么加入新的数据库D后,数据库的规模由原来的3个变为4个。如图所示:此时由于分片规则发生了变化(uid%3变为uid%
一:深度剖析转发和重定向(1)在一个web应用中通过两种方式可以完成资源的跳转第一种方式:转发方式第二种方式:重定向方式(2)转发和重定向的区别区别一:代码上的区别①转发(1)路径上不需要写项目名!(2)转发的时候是一次请求,不管你转发了多少次。都是一次请求。(3)例如:AServlet转发到BServlet,再转发到CServlet,再转发到DServlet,不管转发了多少次,都在同一个request当中。这是因为调用forward方法的时候,会将当前的request和response对象传递给下一个Servlet。(4)转发使用的是requst请求;调用getRequestDispatc
一:深度剖析转发和重定向(1)在一个web应用中通过两种方式可以完成资源的跳转第一种方式:转发方式第二种方式:重定向方式(2)转发和重定向的区别区别一:代码上的区别①转发(1)路径上不需要写项目名!(2)转发的时候是一次请求,不管你转发了多少次。都是一次请求。(3)例如:AServlet转发到BServlet,再转发到CServlet,再转发到DServlet,不管转发了多少次,都在同一个request当中。这是因为调用forward方法的时候,会将当前的request和response对象传递给下一个Servlet。(4)转发使用的是requst请求;调用getRequestDispatc
【易错问题】MajorGC和FullGC的区别是什么?触发条件呢?相信大多数人的理解是MajorGC只针对老年代,FullGC会先触发一次MinorGC,不知对否?我参考了R大的分析和介绍,总结了一下相关的说明和分析结论。在基于HotSpotVM的基础角度针对HotSpotVM的实现,它里面的GC其实准确分类只有两大种:PartialGC(部分回收模式)PartialGC代表着并不收集整个GC堆的模式YoungGenerationGC(新生代回收模式):它主要是进行回收新生代范围内的内存对象的GC回收器。Old/TenuredGenerationGC(老年代回收模式):它主要是针对于回收老年代
【易错问题】MajorGC和FullGC的区别是什么?触发条件呢?相信大多数人的理解是MajorGC只针对老年代,FullGC会先触发一次MinorGC,不知对否?我参考了R大的分析和介绍,总结了一下相关的说明和分析结论。在基于HotSpotVM的基础角度针对HotSpotVM的实现,它里面的GC其实准确分类只有两大种:PartialGC(部分回收模式)PartialGC代表着并不收集整个GC堆的模式YoungGenerationGC(新生代回收模式):它主要是进行回收新生代范围内的内存对象的GC回收器。Old/TenuredGenerationGC(老年代回收模式):它主要是针对于回收老年代
docker安装启动jenkins以及问题剖析 高考时有句“神话”,只要累不死,就往死里干。这句话依然适合现在的工作中的我们。开篇喜欢讲些小语句; 今天docker安装jenkins不小心遇到一个问题,查了很多遍,发现自己一个小失误,但是这个过程中,也了解的一些常见的问题;做了很多,所以很生气,这一气之下,写篇文章来作为记录吧; 首先,你环境必须要有docker,我这里是自己本地虚拟机Vmware,我的虚拟机时linuxcentos7的.如果你不知怎么安装虚拟机和命令工具可以,联系我或下面给我留言; 1、查找下jenkins镜像 命令:dockerserachjenk
docker安装启动jenkins以及问题剖析 高考时有句“神话”,只要累不死,就往死里干。这句话依然适合现在的工作中的我们。开篇喜欢讲些小语句; 今天docker安装jenkins不小心遇到一个问题,查了很多遍,发现自己一个小失误,但是这个过程中,也了解的一些常见的问题;做了很多,所以很生气,这一气之下,写篇文章来作为记录吧; 首先,你环境必须要有docker,我这里是自己本地虚拟机Vmware,我的虚拟机时linuxcentos7的.如果你不知怎么安装虚拟机和命令工具可以,联系我或下面给我留言; 1、查找下jenkins镜像 命令:dockerserachjenk