java
nym232
这个作者很懒,什么都没留下…
展开
-
Java HashMap的工作原理
面试的时候经常会遇见诸如:“java中的HashMap是怎么工作的”,“HashMap的get和put内部的工作原理”这样的问题。本文将用一个简单的例子来解释下HashMap内部的工作原理。首先我们从一个例子开始,而不仅仅是从理论上,这样,有助于更好地理解,然后,我们来看下get和put到底是怎样工作的。我们来看个非常简单的例子。有一个”国家”(Country)类,我们将要用Country转载 2017-08-30 10:26:38 · 179 阅读 · 0 评论 -
HashMap并发导致死循环 CurrentHashMap
为何出现死循环简要说明HashMap闭环的详细原因cocurrentHashMap的底层机制 为何出现死循环简要说明 HashMap是非线程安全的,在并发场景中如果不保持足够的同步,就有可能在执行HashMap.get时进入死循环,将CPU的消耗到100%。 HashMap采用链表解决Hash冲突。因为是链表结构,那么就很容易形成闭合的链路,这样转载 2017-09-08 18:41:12 · 483 阅读 · 0 评论 -
AtomicInteger线程安全的实现机制
Java在concurrent包下提供了线程安全的int包装类,AtomicInteger,接下来我们就讲讲AtomicInteger的实现原理:public class AtomicInteger extends Number implements java.io.Serializable { private volatile int value;1212AtomicInte转载 2017-09-01 10:57:13 · 742 阅读 · 0 评论 -
Java动态代理的两种实现方法
AOP的拦截功能是由java中的动态代理来实现的。说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标类函数抛出异常时候执行。不同的切入时机对应不同的Interceptor的种类,如BeforeAdviseInterceptor,AfterAdviseInterceptor以及ThrowsAdviseIntercepto转载 2017-09-10 21:57:55 · 178 阅读 · 0 评论 -
linkedHashMap的应用
一. 概述: LinkedHashMap是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。LinkedHashMap实现与HashMap的不同之处在于,LinkedHashMap维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序,该迭代顺序可以是插入顺序(insert-order)或者是访问顺序,其中默认的迭代访问顺序就是插入顺序,即可以按插入的顺序遍历元转载 2017-09-10 22:12:52 · 1600 阅读 · 0 评论 -
Java对象结构及大小计算
序本文主要简述Java对象的内存布局以及其大小的计算。Java对象内存布局在HotSpot虚拟机中,对象在内存中存储的布局可以分为3块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头HotSpot虚拟机的对象头包括两部分信息:第一部分markword,用于存储对象自身的运行时数据,如转载 2017-11-23 10:49:02 · 376 阅读 · 0 评论 -
深入了解MySQL的流式查询机制
引言为什么要用流式查询?a) 如果有一个很大的查询结果需要遍历处理,又不想一次性将结果集装入客户端内存,就可以考虑使用流式查询;b)分库分表场景下,单个表的查询结果集虽然不大,但如果某个查询跨了多个库多个表,又要做结果集的合并、排序等动作,依然有可能撑爆内存;详细研究了sharding-sphere的代码不难发现,除了group by与order by字段不一样之外,其他的场景都非常适...原创 2019-04-12 15:53:16 · 11367 阅读 · 4 评论