
Java
文章平均质量分 95
个人的一些学习笔记
阿黄学编程
这个作者很懒,什么都没留下…
展开
-
ThreadLocal源码解读
ThreadLocal多线程访问同一个共享变量时特别容易出现并发问题,在多个线程需要对一个共享变量进行写入时。为了保证线程安全,在访问共享变量时需要进行适当的同步。说一下什么是线程安全?如果你的代码在某个进程中有多个线程同时执行,这些线程可能会同时运行这段代码,如果每次运行结果和单线程运行的结果一致,并且得到的结果和预期也是一致的,那么就是线程安全。而我们为了线程安全,同步的措施一般是加锁来保证线程安全,来控制不同线程对临界区的访问。但使用了锁,性能肯定会有所下降,加重了使用者的负担。那Threa原创 2021-05-12 14:53:32 · 252 阅读 · 0 评论 -
HashMap1.8源码
HashMap1.8源码分析简介hashmap1.8的数据结构有所变化,hashmap1.8以前的数据结构是数组+链表。现在的数据结构是数组+链表+红黑树。在1.8以前,如果在某个桶(数组)中,出现了hash碰撞,并且key不相同的情况下,就会生成一个链表。随着元素的增多,链表可能会越来越长,我们在去查找的时候,遍历单链表会需要很长的时间,时间复杂度为O(n)。但在1.8以后,加了红黑树,在单链表长度大于8,并且数组元素大于64时,会将链表转化为红黑树,这样将会提高很大的效率,增删改查的时间复杂度为O(原创 2021-01-23 16:04:57 · 318 阅读 · 0 评论 -
ArrayList源码分析
ArrayListArrayList是一个装载数据的数组集合,也可以说是动态数组。但我们先说一下Java中的普通数组,Java中普通数组只能用来存储基本数据类型的数据,并且容量一旦定义了,就只能装这么多数据。但是ArrayList不是,它的容量能动态增长。允许包括 null 在内的所有元素。除了实现 List 接口外,它还提供一些方法来操作内部用来存储列表的数组的大小。(它大致上等同于 Vector 类,但是它不是线程安全的,而Vector是线程安全的)结构public class ArrayList原创 2021-01-15 16:49:39 · 183 阅读 · 0 评论 -
synchronized背后不为人知的秘密
Synchronized为什么要学习Synchronized?在我们学习多线程的时候,会遇到共享内存两个重要的问题。一个是竞态条件,另一个是内存可见性。解决这两个问题的一种方案是使用Synchronized。在介绍什么是竞态条件,什么是内存可见性之前,我们先讲解一下synchronized的用法和基本原理。用法 (synchronized可以用于修饰类的实例方法、静态方法和代码块)synchronized修饰普通同步方法:锁对象为当前实例对象public synchronized原创 2021-01-02 15:52:43 · 331 阅读 · 0 评论 -
BigDecimal使用总结以及使用时可能遇到的(坑)
BigDecimal总结(坑)概念BigDecimal是一个不可变的,任意精度的有符号十进制数BigDecimal由任意精度的整数非标度值和32位的整数标度(scale)组成。如果为零或整数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以10的负scale次幂。因此,BigDecimal表示的数值是(unscaledValueX10‾scale)。BigDecimal对象内通过BigInteger IntVal存储传递对象数字部分,通过int scale记录小数点位数,通过int pr原创 2020-12-26 19:44:14 · 9475 阅读 · 6 评论 -
内部类
typora-root-url: …\应用软件\Typora\upload内部类成员内部类外部类是不能直接调用内部类的变量和方法,可以先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法当外部类与内部类有相同的成员变量或方法时,内部类默认访问自己的成员变量或方法,如果内部类要访问外部类的成员变量或者方法,可以是用类名.this.变量名称/变量方法。外部类的.class文件为 类名.class 内部类的class文件为 外部类$内部类.class内部类的对象中不能.原创 2020-05-18 16:04:48 · 123 阅读 · 0 评论 -
ArrayCopy
ArrayCopy底层实现分析int[] arr=new[]{1,2,3,4,5};int[] arr1=Arrays.copyof(arr,6);System.out.println(Arrays.toString(arr1));//控制台[1, 2, 3, 4, 5, 0]这里是拿int类型的copyof来做示范,其实其他类型也都一样,这里就不一一为大家详细介绍其他类型的了。int[] original:这个参数指的是arr数组,此数组为源数组int newLength:这个参数指原创 2020-05-16 16:32:32 · 2170 阅读 · 0 评论 -
Java标识符规则
Java标识符给类、接口、抽象、方法、变量、包、常量等定义名称的规范组成规则:大小写字母、数字、_(下划线)、$、中文字符注意:不能以数字开头也不能单独使用建议不要使用中文字符_以及$不要随便使用不能与关键字冲突组成规范:见名知义驼峰规则类、接口、抽象:①首字母大写 例如 Demo②多个单词中每个单词的首字母大写 例如FirstDemo方法、变量:①首字母小写public void add(){}②多个单词中第一个原创 2020-05-16 13:44:10 · 182 阅读 · 0 评论