
java
文章平均质量分 54
拔苦与乐喵
这个作者很懒,什么都没留下…
展开
-
maven setting.xml完整配置
maven setting.xml的完整配置原创 2022-06-02 18:13:21 · 655 阅读 · 0 评论 -
线程池学习笔记(一)ThreadPoolExecutor
ThreadPoolExecutor源码解析原创 2022-03-30 15:22:10 · 543 阅读 · 0 评论 -
BigDecimal精度问题 and double基础类型默认小数位置问题
## 1、BigDecimal精度问题场景:将double类型的数值转为BigDecimal来做数学运算问题: BigDecimal d1 = new BigDecimal(698.745685); 打印输出d1 =698.7456849999999999999999 如果保留 5位小数 则输出 698.74568 (正确的应该是698....原创 2019-05-16 18:06:45 · 2556 阅读 · 0 评论 -
ConcurrentHashMap 和HashMap常见的问题总结(jdk1.8的优化点)
JDK1.8之后的改进: 链表改成了红黑树,当链表中的结点达到一个阀值TREEIFY_THRESHOLD时,会将链表转换为红黑树,查询效率提从原来的O(n),提高为O(logn) 将每个segment的分段锁ReentrantLock改为CAS+Synchronized 问题汇: HashMap的get和put的工作原理? 为何说HashMap是线程不安全...原创 2018-08-01 15:30:06 · 10256 阅读 · 5 评论 -
Java核心技术36课笔记(一):谈谈你对java平台的理解
一 、java是解释执行的说法对吗?不完全正确1、疑问:解释执行和编译执行的区别?类比:解释执行是同声传译(逐字逐句的解释翻译,执行速度慢),编译执行是播放录音(编译成机器可识别的机器码,所以编译执行的,执行速度快)。2、名词解释 JRE(Java Runtime Enviroment):运行时环境,包含jvm和java类库 JDK(Java Development...翻译 2018-07-27 14:50:59 · 579 阅读 · 0 评论 -
java内存工作原理学习笔记(一):概述
java虚拟内存jvm逻辑内存1.程序计数器:每个线程都有自己的一个计数器(因为线程切换时,需要计数器记录执行的位置,这样才能在线程恢复时回到正确的执行位置),记录线程执行的字节码的行号指示器。分支,循环,跳转,异常处理以及线程恢复等都需要这个计数器。此区域是线程私有区域2.虚拟机栈:也是线程私有的空间。生命周期跟线程相同。它描述的是方法的内存模型。当线程调用方法时,会创建栈帧。栈帧,是用于存放局...转载 2018-06-01 10:57:01 · 473 阅读 · 0 评论 -
类加载过程学习笔记
1.加载(重要)加载阶段是“类加载机制”中的一个阶段,这个阶段通常也被称作“装载”,主要完成:1.1.通过“类全名”来获取定义此类的二进制字节流1.2 将字节流所代表的静态存储结构转换为方法区的运行时数据结构1.3 在java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这些数据的访问入口相对于类加载过程的其他阶段,加载阶段(准确地说,是加载阶段中获取类的二进制字节流的动作...原创 2018-06-01 10:46:25 · 243 阅读 · 0 评论 -
Java中几种常量池的区分
Java中几种常量池的区分原文链接:http://tangxman.github.io/2015/07/27/the-difference-of-java-string-pool/ 在java的内存分配中,经常听到很多关于常量池的描述,我开始看的时候也是看的很模糊,网上五花八门的说法简直太多了,最后查阅各种资料,终于算是差不多理清了,很多网上说法都有问题,笔者尝试着来区分一下这...转载 2018-06-01 10:43:58 · 410 阅读 · 0 评论 -
ConcurrentHashMap原理分析(锁分离技术)
1、结构由hash表、segment(桶)、hashEntry(节点)组成注:每个segment都继承了ReentrantLock2、hash过程步骤一:第一次hash,h1=hash1(key);步骤二:第二次hash找出segment的位置,h2=hash2(h1高几位)步骤三:第三次hash找出hashEntry的位置,h3=hash3(h2)插入时从hashEntry链表的头插入,删除时会...原创 2018-04-04 17:08:00 · 2076 阅读 · 0 评论 -
ThreadLocal内存泄漏的问题
前言ThreadLocal 的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。但是如果滥用 ThreadLocal,就可能会导致内存泄漏。下面,我们将围绕三个方面来分析 ThreadLocal 内存泄漏的问题ThreadLocal 实现原理ThreadLocal为什么会内存泄漏ThreadLocal 最佳实践Thread...转载 2018-04-04 16:50:03 · 233 阅读 · 0 评论 -
B tree和B+ tree,mysql的索引实现
一、b 树和b+树B树是一种多路自平衡搜索树,它类似普通的二叉树,但是B书允许每个节点有更多的子节点。B树示意图如下:B树的特点:(1)所有键值分布在整个树中(2)任何关键字出现且只出现在一个节点中(3)搜索有可能在非叶子节点结束(4)在关键字全集内做一次查找,性能逼近二分查找算法B+树是B树的变体,也是一种多路平衡查找树,B+树的示意图为:从图中也可以看到,B+树与B树的不同在于:(1)所有关键...转载 2018-04-11 14:30:55 · 474 阅读 · 0 评论 -
MyISAM并发插入、 InnoDB的间隙锁问题分析
根据网络资料学习并整理一、MyISAM并发插入#语法:lock tables [tablename] read/write Local#说明:1、local的作用:在满足MyISAM表并发插入条件的情况下,允许其他用户在表尾并发插入记录2、在用lock tables显示加锁时必须同时取得所有涉及到的表的锁不支持锁升级,也就是说只能访问显示加锁的这些表,不能访问未加锁的表如果加的是[读锁],那么当前...原创 2018-04-11 14:24:09 · 1259 阅读 · 0 评论 -
hashmap的实现原理(参考
要点一:为什么length是2的幂次方??1、hashMap的存储原理是将key的hash值跟 length-1 进行 & 运算(十进制是%求模运算),从而求得key在hashmap 数组中的位置。2的幂次方可以减少冲突(碰撞),提高hashMap的查询效率。注:碰撞即不同的KEY值求出来的存储位置相同,这种情况叫hash碰撞(冲突),解决碰撞的方法是:链地址法,即将碰撞的oldvalue...转载 2018-03-05 19:24:11 · 357 阅读 · 0 评论 -
string、stringbuffer、stringbuilder的区别
String:对String对象的任何改变都不影响到原对象,相关的任何change对象的操作都会生成新的对象。1、String str="hello world" 和String str=new String("hello world")的区别前者:str是指向字面常量的引用,"hello world"被存储在运行时常量池后者:str引用指向一个对象,而创建对象时的构造方法中的形参是指向字面常量的...原创 2018-03-12 09:39:55 · 263 阅读 · 0 评论