随笔分类 -  Java核心知识

摘要:一、CountDownLatch(线程计数器 ) CountDownLatch 类位于 java.util.concurrent 包下,利用它可以实现类似计数器的功能。比如有一个任务 A,它要等待其他 4 个任务执行完毕之后才能执行,此时就可以利用 CountDownLatch来实现这种功能了。 f 阅读全文
posted @ 2020-08-14 21:44 FireCode 阅读(139) 评论(0) 推荐(0)
摘要:一、CAS(比较并交换-乐观锁机制-锁自旋) 1.1 概念及特性 CAS(Compare And Swap/Set)比较并交换,CAS 算法的过程是这样:它包含 3 个参数CAS(V,E,N)。V 表示要更新的变量(内存值),E 表示预期值(旧的),N 表示新值。当且仅当 V 值等于 E 值时,才会 阅读全文
posted @ 2020-08-13 22:27 FireCode 阅读(893) 评论(0) 推荐(0)
摘要:一、常见IO模型 1.1 阻塞 IO 模型 最传统的一种 IO 模型,即在读写数据过程中会发生阻塞现象。当用户线程发出 IO 请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出 CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给用 阅读全文
posted @ 2020-08-13 14:04 FireCode 阅读(139) 评论(0) 推荐(0)
摘要:一、JVM类加载机制 虚拟机把描述类的数据从 .class 文件加载到内存,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的 java 类型。 JVM 类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。 1.1 加载 加载是类加载过程中的一个阶段 阅读全文
posted @ 2020-07-15 08:42 FireCode 阅读(390) 评论(0) 推荐(0)
摘要:一、内存模型及分区 JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它与硬件没有直接的交互。 JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,class 类信息 阅读全文
posted @ 2020-07-12 22:30 FireCode 阅读(916) 评论(0) 推荐(0)
摘要:对于 Java 数组的初始化,有以下两种方式: 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度,如: //只是指定初始值,并没有指定数组的长度,但是系统为自动决定该数组的长度为4 String[] computers = {"Dell", "Lenovo", "Appl 阅读全文
posted @ 2020-07-09 21:06 FireCode 阅读(1354) 评论(0) 推荐(0)
摘要:Cloneable接口是Java开发中常用的一个接口, 它的作用是使一个类的实例能够将自身拷贝到另一个新的实例中,注意,这里所说的“拷贝”拷的是对象实例,而不是类的定义,进一步说,拷贝的是一个类的实例中各字段的值。 在开发过程中,拷贝实例是常见的一种操作,如果一个类中的字段较多,而我们又采用在客户端 阅读全文
posted @ 2020-07-09 20:21 FireCode 阅读(1858) 评论(0) 推荐(0)
摘要:Collection和Collections区别 java.util.Collection 是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。 java.util.Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全等操作。 然后还有 阅读全文
posted @ 2020-07-09 20:07 FireCode 阅读(1734) 评论(0) 推荐(0)
摘要:强引用 只要引用存在,垃圾回收器永远不会回收,在 Java 中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到 JVM 也不会回收。因此强引用是造成 Java 内存 阅读全文
posted @ 2020-07-08 17:29 FireCode 阅读(1187) 评论(0) 推荐(0)