![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
Darin.cao
up
展开
-
偏向锁、轻量级锁、重量级锁
记录,学习播客:Java中的偏向锁,轻量级锁, 重量级锁解析_萧萧九宸的博客-CSDN博客_java 轻量级锁转载 2022-04-06 15:44:36 · 100 阅读 · 0 评论 -
JVM-学习笔记总结-类的验证
【深入理解java虚拟机】学习随记【验证】 是连接的第一个阶段,这一阶段的目的是确保Class文件的字节流中包含的信息符合《JAVA虚拟机规范》的全部约束要求,确保虚拟机的安全性。验证主要分以下三个阶段文件格式验证 验证字节流是否符合class文件格式的规范,并且被当前版本虚拟机处理,验证点如下:1. 是否以魔数0xACFEBABE开头;2 主次版本号是都在当前虚拟机接受范围之内; 3 常量池中的常量是否又不被支持的常量类型(检查常量tag标志);3 指向常量的各...原创 2021-11-27 21:16:53 · 220 阅读 · 0 评论 -
JVM-学习笔记总结:类加载的时机
一个类从被加载到虚拟机中,到生命周期结束被卸载出内存开始,它的整个生命周期将会经历如下图的七个阶段。其中,加载、验证、准备、初始化、卸载这五个阶段的执行开始时机的先后顺序是确定的(注意,是开始执行,不是进行顺序和完成顺序,彼此执行是相互交叉混合及逆行的,会在一个阶段的执行中激活另外一个阶段的执行)。而解析阶段时机不确定(因为在某些情况下可以在初始化之后再开始,这是为了支持java语言的运行时绑定的热特性,也被称为动态绑定或晚期绑定)。其中,对于第一个阶段加载,没有进行强制性约束,整个交给虚.原创 2021-11-25 19:58:19 · 594 阅读 · 0 评论 -
JVM-学习笔记总结:变量槽slot的理解
1. 关于slot的理解局部变量表中,最基本的存储单元为slot(变量槽)。 参数值的存放总在局部变量数组的index 0 开始,到数组长度-1的索引结束。 局部变量表中存放编译器可知的各种基本数据类型(8种),引用类型(reference),returnAddress类型的变量 在局部变量表中 32位以内的类型只占用一个slot(包括上面提到的returnAddress类型),64位的类型占用两个. byte short char在存储前被转化为int , boolean在存储前 也被转...原创 2021-11-24 20:44:23 · 905 阅读 · 0 评论 -
LINUX系统vim指令提示command not found问题解决
LINUX系统vim指令提示command not found问题解决我们在安装完Centos后,它默认的是安装了VI编辑器,VIM是没有安装的,所以我们在使用vim test.txt时会提示: vim command not found 。。。 这就是说明我们的Linux环境没有安装vim编辑器,下面我们来说一下如何安装这个编辑器:vim编辑器需要安装三个包:vim-enhanced-7.0.109-7.el5vim-minimal-7.0.109-7.el5vim-common-7.0.10转载 2020-07-23 10:57:20 · 4533 阅读 · 0 评论 -
synchronized学习记录
synchronized关键字最主要的三种使用方式修饰实例方法,作用于当前对象的实例加锁,进入同步代码块之前要获得当前对象实例的锁 修饰静态方法,作用于当前类对象加锁,进入代码块之前要获得当前类对象的锁也就是给当前类加锁,会作用于类的所有对象实例,因为静态成员不属于任何一个实例对象,是类成员( static 表明这是该类的一个静态资源,不管new了多少个对象,只有一份,所以对该类的所有对象都加了锁)。所以如果一个线程A调用一个实例对象的非静态 synchronized 方法,而线程B需要调用这个实转载 2020-07-17 16:14:27 · 91 阅读 · 0 评论 -
Java内存区域学习
Java内存区域学习记录java的一大优势就是在虚拟机的自动内存的管理机制下,我们程序员不需要对于内存进行控制,把其控制权交给了java虚拟机。但是我们还是得学习java的内存区域,因为一旦出现内存方面的问题,我们必须了解虚拟机是怎样使用的。1.运行时数据区域Java虚拟机在执行的时候会把它管理的内存划分为若干个不同的数据区域。这些区域有一部分是线程私有的,有一部分是线程共享的线程私有的:程序计数器 虚拟机栈 本地方法栈线程共享的:堆 方法区 直接内存1.1.原创 2020-07-16 09:36:50 · 92 阅读 · 0 评论 -
源码学习---ArrayList的扩容源码分析
ArrayList的扩容源码分析源码如下://下面是ArrayList的扩容机制//ArrayList的扩容机制提高了性能,如果每次只扩充一个,//那么频繁的插入会导致频繁的拷贝,降低性能,而ArrayList的扩容机制避免了这种情况。 /** * 如有必要,增加此ArrayList实例的容量,以确保它至少能容纳元素的数量 * @param minCapacity 所需的最小容量 */ public void ensureCapacity(int minCapacity原创 2020-07-15 17:40:42 · 90 阅读 · 0 评论 -
学习事务笔记
事务Transaction其实指的一组操作,里面包含许多个单一的逻辑。只要有一个逻辑没有执行成功,那么都算失败。 所有的数据都回归到最初的状态(回滚)*为什么要有事务?为了确保逻辑的成功。 例子: 银行的转账。使用命令行方式演示事务。开启事务start transaction;提交或者回滚事务commit; 提交事务, 数据将会写到磁盘上的数据库 rollback ; 数据回滚,回...原创 2020-07-15 17:30:31 · 82 阅读 · 0 评论 -
数组转换为ArrayList和Arrays.asList()的使用
对于数组转化成集合的学习记录我们平时在开发中对于数组转化成一个List集合,最常用的方法应该就是Arrays.asList()String[] myArray = { "darin", "tom", "eric" }; List<String> myList = Arrays.asList(myArray);《阿里巴巴java开发手册》对这个方法的描述为:Arrays.asList()将数组转化为集合后,其地转化后的集合的底层仍然是数组。如下图这个方法的使用时候,传原创 2020-07-13 10:56:05 · 1038 阅读 · 0 评论