会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
houstao
博客园
首页
新随笔
联系
订阅
管理
2019年9月21日
ConcurrentHashMap与synchronizedMap源码解析
摘要: 一、讲解 HashMap在并发执行put的时候会引发死循环,会因为多线程会导致HashMap的entry链表形成环形数据结构,一旦形成环形数据结构Entry的next永远不为空,就会产生死循环获取entry。 HashTable容器使用synchronized来保证线程安全的,但是在线程竞争激烈的情
阅读全文
posted @ 2019-09-21 11:22 houstao
阅读(189)
评论(0)
推荐(0)
2019年9月19日
Vector与ArrayList区别
摘要: 一、Vector与ArrayList区别 1、ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删
阅读全文
posted @ 2019-09-19 20:54 houstao
阅读(477)
评论(0)
推荐(0)
2019年9月15日
Jvm Heap 堆(六)
摘要: 1、Heap(Java7之前) 一个Jvm实例只存在一个堆内存,堆内存的大小是可以调节的。类加器读取了类文件后,需要把类、方法、常变量放到堆内存中,保存所有引用类型的真实信息以方便执行器执行。 堆内存逻辑上分为三部分:新生+养老+永久 新生区 新生区是类的诞生、成长、消亡的区域,一个类在这里产生,应
阅读全文
posted @ 2019-09-15 11:14 houstao
阅读(656)
评论(0)
推荐(0)
2019年9月13日
Jvm Stack栈(五)
摘要: 1、Stack栈 栈也叫栈内存,主管Java程序的运行,是在线程创建时创建,它的生命期是跟随线程的生命期,线程结束栈内存也就释放,对于栈来说不存在垃圾回收问题,只要线程一结束该栈就Over,生命周期和线程一致,是线程私有的。8种基本类型的变量+对象的引用变量+实例方法都是在函数的栈内存种分配。 2、
阅读全文
posted @ 2019-09-13 22:00 houstao
阅读(235)
评论(0)
推荐(0)
2019年9月12日
Jvm Method Area方法区(四)
摘要: 1、Method Area 方法区 方法区是被所有的线程共享,所有字段和方法字节码,以及一些特殊方法如构造函数,接口代码也在此定义。简单说,所有定义的方法的信息都保存在该区域,此区属于共享区间。 静态变量+常量+类信息(构造方法/接口定义)+运行时常量池存在方法区中,但是实例变量存在堆内存中,和方法
阅读全文
posted @ 2019-09-12 10:19 houstao
阅读(233)
评论(0)
推荐(0)
Jvm PC寄存器(三)
摘要: 1、PC寄存器 每个线程都有一个程序计数器,是线程私有的,就是一个指针,指向方法区中的方法字节码(用来存储指向下一条指令的地址,也即将要执行的指令代码),由执行引擎读取下一条指令,是一个非常小的内存空间,几乎可以忽略不记。 这块内存区域很小,它是当前线程所执行的字节码的行号指示器,字节码解释器通过改
阅读全文
posted @ 2019-09-12 09:45 houstao
阅读(399)
评论(0)
推荐(0)
Jvm 本地接口(二)
摘要: 1、 Native Interface 本地接口 本地接口的作用是融合不同的编程语言为Java所用,它的初衷是融合C/C++程序,Java诞生的时候是C/C++横行的时候,要想立足,必须有调用C/C++程序,于是就在内存中专门开辟了一块区域处理标记为native的代码,它的具体做法是Native M
阅读全文
posted @ 2019-09-12 09:15 houstao
阅读(391)
评论(0)
推荐(0)
2019年9月11日
Jvm 类加载器(一)
摘要: 1、JVM的体系机构 2、类加载器ClassLoader 负责加载class文件,class文件在文件开头有特定的文件标识(CA FE BE AN),并且ClassLoader只负责class文件的加载,至于它是否可运行,则由Execution Engine决定。 3、类加载器ClassLoader
阅读全文
posted @ 2019-09-11 21:00 houstao
阅读(139)
评论(0)
推荐(0)
equals 和 ==
摘要: 1、首先看一下代码: 结果分析: 1、false 2、true 3、false 4、false 第1个是false的原因是因为使用的是==比较的引用类型 第2个结果是true的原因是因为String的源码中进行了equals的重写,源码如下: 3、第3个结果为false的原因是因为使用==判断的引用
阅读全文
posted @ 2019-09-11 16:29 houstao
阅读(117)
评论(0)
推荐(0)
2019年9月6日
Storm storm API(二)
摘要: 1、Spout Spout最顶层抽象是ISpout接口。 Open()是初始化方法,为spout提供执行环境,执行器将运行此方法来初始化喷头 nextTuple()循环发射数据,通过收集器发出生成得数据 ack()成功处理tuple回调方法,确认处理特定元组 fail()处理失败tuple回调方法,
阅读全文
posted @ 2019-09-06 11:39 houstao
阅读(211)
评论(0)
推荐(0)
下一页
公告