- 博客(12)
- 收藏
- 关注
原创 Java虚拟机类加载机制
虚拟机类加载机制 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。类型的生命周期加载,验证,准备,初始化,卸载这五个阶段的顺序是确定的,解析阶段则不一定,当然这些阶段顺序确定,不是说他们是一个个顺序进行,而是按顺序开始,这些阶段通常是互相交叉地混合进行的。什么时候开始第一阶段“加载”?1)遇到new ,getstatic,putstatic,invokestatic这四条字节码指令:使用ne
2021-03-08 17:04:07 101
原创 Java垃圾收集
垃圾收集(GC)如何判断对象已死1.引用计数算法在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象时不可能在被使用的。但这个算法很难解决对象之间循环引用的问题。2可达性分析(根搜索算法)通过一系列根对象(“GC Roots”)作为起始节点集,根据引用关系向下开始搜索,如果某个对象到GC Roots间没有任何引用链相连(不可达),则证明此对象不可能再被使用。GC Roots(虚拟机栈中引用的对象,方法区中类静态属性引用的对象,
2021-03-08 17:02:23 114
原创 Java内存区域
运行时数据区1.程序计数器当前线程所执行德字节码的行号指示器。每条线程都需要一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,称这类内存区域为“线程私有”的内存。2.java虚拟机栈描述Java方法执行的线程的内存模型:每个方法被执行时,Java虚拟机都会同步创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等。每一个方法被调用直至执行完毕的过程,对应一个栈帧在虚拟机栈中从入栈到出栈的过程。也是线程私有的,生命周期与线程相同。局部变量表存放编译期可知的各种Java虚拟机基本数
2021-03-08 17:01:22 83
原创 javascript入门
文章目录1、什么是JavaScript1.1、概述1.2、历史2、快速入门2.1、引入JavaScript2.2、基本语法入门2.3、数据类型2.4、严格检查格式3、数据类型3.1、字符串3.2、数组3.3、对象3.4、流程控制3.5、Map和Set3.6、iterator4、函数4.1、定义函数4.2、变量的作用域4.3、方法5、内部对象5.1、Date5.2、Json5.3、Ajax6、面向对象编程7、操作BOM对象(重点)8、操作DOM对象(重点)9、操作表单(验证)10、jQuery1、什么是Ja
2020-10-29 11:14:13 532
原创 css入门
文章目录1、什么是css1.1、什么是css1.2、发展史1.3、快速入门1.4、css的三种导入方式2、选择器2.1、基本选择器2.2、层次选择器2.3、结构伪类选择器2.4、属性选择器3、美化网页元素3.1、为什么要美化网页3.2、字体样式3.3、文本样式3.4、阴影3.5、超链接伪类3.6、列表3.7、背景3.8、渐变4、盒子模型4.1、什么是盒子模型4.2、边框4.3、内外边距4.4、圆角4.5、阴影5、浮动5.1、标准文档流5.2、display5.3、float5.4、父级边框塌陷问题5.5、对
2020-10-29 11:13:12 342 1
原创 java多线程(5)- 死锁与线程协作
死锁是多个线程自己持有一部分资源并且互相等待对方手里的资源,从而形成循环等待,无法向下执行的状态。某个同步块同时拥有“两个以上的对象的锁”时,就可能发生死锁。如下代码,当一个人持有镜子的锁而在等待口红的锁,另一人持有口红的锁而在等待镜子的锁时,就发生死锁。所以我们写代码时要注意不要造成死锁。//死锁:多个线程互相抱着对方需要的资源,然后形成僵持public class DeadLock { public static void main(String[] args) { // TODO Aut
2020-10-07 23:48:18 99
原创 java多线程(4)- Lock
lock锁也是用于处理线程同步问题的,用法也很简单,只需要定义一个lock锁,在需要互斥访问的代码前上锁,在代码后解锁。public class testLock { public static void main(String[] args) { TestLock2 testLock2 = new TestLock2(); new Thread(testLock2).start(); new Thread(testLock2).start(); new Thread(testLo
2020-10-07 23:33:26 86
原创 java多线程(3)- 线程同步
文章目录异步与同步两个不安全案例synchronized异步与同步多线程由于并发,线程的发生顺序是不可预知的(异步),如:有a,b,c三个线程,那么线程的调度顺序可能时a,b,c;也可能时b,a,c或c,a,b等。处理多线程问题时,多个线程访问同一个对象,并且某些线程还想修改这个对象,这个时候我们就需要线程同步,即是让访问此对象的多个线程以某种顺序访问此对象,进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用。两个不安全案例下面我们来看看线程异步造成的两个不安全案例:一.买票问题
2020-10-06 23:49:53 118
原创 java多线程(2)- 线程的状态以及一些常用的方法
文章目录线程的五状态停止线程线程休眠线程礼让线程合并线程状态观察线程的优先级守护线程线程的五状态线程有五种状态:新建态,就绪态,运行态,阻塞态,退出态。新建态:当线程对象被创建时,如:Thread t = new Thread();线程就处于新建态。就绪态:但调用start()方法时,线程就进入就绪态,等待cpu的调度。运行态:cpu调度线程,线程开始运行。阻塞态:当调用wait(),sleep()方法或同步锁定时,线程就进入阻塞态,不再往下执行,直到阻塞事件解锁,重新进入就绪态。退出态:线
2020-10-05 22:32:31 149 1
原创 Lambda表达式
Lambda表达式属于函数式编程且要使用Lambda必须是函数式接口(即只包含一个抽象方法的接口)。Lambda表达式的使用是为了避免匿名内部类定义过多,造成代码过于复杂。下面来推导Lambda表达式的简化过程:定义一个函数式接口interface ILike{ void lambda();}若是不使用内部类和Lambda表达式我们就需要定义一个类继承这个接口//2.实现类class Like implements ILike{ @Override public void l
2020-10-05 20:28:56 340
原创 java多线程(1)- 线程创建
程序,进程,线程在操作系统中进行的程序就是进程,即是说进程是程序的一次执行过程,如QQ,游戏等。一个进程可以有多个线程,比如在播放视频的时候可以同时听到声音,看到图像,弹幕等。每个进程至少有一个线程,线程是一条独立执行的路径,是cpu调度,执行的单位。多线程是指多个线程并发执行,如果在多cpu系统,并发可能是指多个线程同时执行,在单cpu系统中,并发指的是多个线程交替执行,在同一时间间隔内同时执行。普通方法调用和多线程在程序中main()为主线程,是系统的入口,用于执行整个程序。在普通方法
2020-10-05 16:49:02 172
原创 欢迎使用CSDN-markdown编辑器n'
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2018-12-02 10:50:54 181
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人