![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java底层知识
王胖子总叫我减肥
学习使我进步
展开
-
Collection体系
1 java集合框架2 集合之List和Set3 Map4 HashMap 、HashTable、ConccurentHashMap的区别 HashMap(java8之前):数组+ 链表 性能恶化:从O(1)-O(n) HashMap(java8之后):数组+ 链表+红黑树 HashMap:Put方法的逻辑 1.若HashMap未被初始化,则进行初始化操作...原创 2020-08-18 22:35:03 · 163 阅读 · 0 评论 -
java异常以及常用工具类体系
1 java异常处理机制主要回答三个问题 1 what:异常类型回答什么被抛出。 2 where:异常堆栈跟踪回答了在哪抛出。 3 why:异常信息回答了为什么被抛出。2 java的异常体系 RuntimeException:不可预知的,程序应该自行避免。 非RuntimeException:可预知的,从编译器校验的异常。3 Error和Exception的区别 从概念...原创 2020-08-18 16:08:10 · 123 阅读 · 0 评论 -
java 线程池
1 java线程池 利用Executors 创建不同的线程池满足不同场景的需求。 1 newFixedThreadPool(int nThread) 指定工作线程数量的线程池。 2 newCachedThreadPool() 处理大量短时间工作任务的线程池。 (1)试图缓存线程并重用,当无缓存线程可用时,就会创建新的工作线程。 (2)如果线程闲置时间超过阈值,则会被终止并移除缓存。 ...原创 2020-08-17 21:05:37 · 228 阅读 · 0 评论 -
CAS(Compare and Swap)
1.CAS 一种高效实现线程安全的方法(乐观锁)。 1.支持原子更新操作,适用于计数器,序列发生器等场景。 2 属于乐观锁机制,号称Lock-free 3 CAS 操作失败时,由开发者决定时继续操作,还是执行别的操作。2 CAS的思想 1 包含三个操作数------内存位置(V)、预期原值(A)、新值(B)。 (执行CAS操作的时候,将V与A进行比较,如果想匹配,处理器就是将该位置的值更新为新值B。否则处理器不做...原创 2020-08-17 19:24:29 · 103 阅读 · 0 评论 -
java内存模型Jmm可见性
1 java内存模型JMM java内存模型(java Memory Model,简称JMM)本身是一种抽象的概念,并不真实存在,它描述的是一组规则或规范,通过这组规范定义了程序中各个变量(包括实例字段、静态字段和构成数组对象的元素)的访问方式。 (JVM运行程序的实例是线程,而每个线程创建时,JVM都会为其创建一个工作内存(栈空间),用于存储线程的私有数据,而java内存规定所有内存都必须存储在主内存中,主内存是共享内存区域,所有线程都可以访问,但是线程对变量的操作需要在自身的工作...原创 2020-08-13 18:05:07 · 254 阅读 · 0 评论 -
java线程与并发
1 线程安全问题 1.1 线程安全问题的主要诱因 1 存在共享数据(也称为临界资源)。 2 存在多条线程共同操作这些共享数据。 1.2 解决问题的根本方法 同一时刻有且只有一个线程在操作共享数据,其他线程必须等到该线程处理完数据后再对共享数据进行操作。 1.3 互斥锁的特性 互斥性:即在同一时间只允许一个线程持有某个对象锁,通过这种特性来实现多线程的协调机制,这样在同一时间只有一个线程对需要同步的代码块(复合操作)进行访问...原创 2020-08-13 15:32:07 · 97 阅读 · 0 评论 -
java多线程与并发
1 进程和线程的区别 1.1 进程和线程的由来 1. 串行:初期的计算机智能串行执行任务,并且需要长时间等待用户输入。 2. 批处理: 预先将用户的输入集成清单,批量串行处理用户指令,仍然无法并发处理。 3. 进程:进程独占内存空间,保存各自运行状态,相互间不干扰且可以相互切换,为并发处理任务提供了可能。 4. 线程:共享进程的内存资源,相互间切换更更快速,支持更细粒度的任务控制,使线程的子任务得以并发执行。 1.2 进程是资源...原创 2020-08-12 21:29:41 · 145 阅读 · 0 评论 -
java 垃圾回收常见的面试题
1. Object 的finalize() 方法的作用是否与C++的析构函数的作用相同 1. 与C++的析构函数不同,析构函数调用时机确定,finalize() 方法是不确定的。 2. 将未被引用的对象放置于F-Queue队列。 3. 方法执行随时可能会被终止。 4. 给与对象最后一次重生的机会。package Stack.virtulStack;public class Finalization { //定义一个Finalizat...原创 2020-08-10 22:31:44 · 333 阅读 · 0 评论 -
java 垃圾回收机制
1 .对象被判定为垃圾的标准 没有被其他对象引用 1.1 如何判定对象有没有被其他对象引用? 1.引用计数算法 2 可达性分析算法1.2 引用计数算法:判断对象的引用数量 1 通过判断对象的引用数量来决定对象是否可以被收回。 2 每个对象实例都有一个引用计数器,被引用则+1,完成引用则-1。 3 任何引用计数为0 的对象实例可以被当做垃圾收集。...原创 2020-08-10 21:06:45 · 198 阅读 · 0 评论 -
Java内存模型
1. 内存简介 在程序执行过程中,需要不断的将逻辑地址和物理地址进行映射。作为操作系统架构,Java面临着于其他程序完全相同的内存限制,受限于操作系统架构提供的可寻址地址空间。操作系统架构提供的可寻址地址空间由处理器的位数决定。 32位处理器:2^32的可寻址范围、4GB 64位处理器:2^64的可寻址范围。地址空间的划分: 1.内核空间:连接计算机硬件,调度程序,提供联网、虚拟内存等 2 用户空间...原创 2020-08-07 14:39:12 · 105 阅读 · 0 评论 -
Java 底层知识---面试总结
1 对Java的理解 1. 平台无关性 :一次编译,到处运行 2 .GC垃圾回收 :垃圾回收机制,不用手动的释放堆内存。 3. 语言特性 :包括泛型、反射、lambda表达式 4.面向对象 :封装、继承、多态 5.类库 :集合、网络库等 6.异常处理2 Compile Once,Run Anywhere 如何实现 编译时:用Javac 指令,将Java源码编译生成字节...原创 2020-08-06 17:36:09 · 173 阅读 · 0 评论