Java复习
文章平均质量分 95
CodeJiao的复习
CodeJiao
今之视昔,亦如后世视今。
展开
-
Java 并发 -- lock vs synchronized、volatile(保证可见性和有序性)、悲观锁 vs 乐观锁
乐观锁是一种乐观思想,假定当前环境是读多写少,遇到并发写的概率比较低,读数据时认为别的线程不会正在进行修改(所以没有上锁)。写数据时,判断当前与期望值是否相同,如果相同则进行更新(更新期间加锁,保证是原子性的)。悲观锁是一种悲观思想,即认为写多读少,遇到并发写的可能性高,每次去拿数据的 时候都认为其他线程会修改,所以每次读写数据都会认为其他线程会修改,所以每次读写数据时都会上锁。其他线程想要读写这个数据时,会被这个线程block,直到这个线程释放锁然后其他线程获取到锁。...原创 2022-05-27 22:34:17 · 718 阅读 · 0 评论 -
Java 并发 -- 线程状态(Java线程六种状态、操作系统层次的五种状态)、线程池(七大核心参数)、wait vs sleep
新建:当一个线程对象被创建,但还未调用 start 方法时处于新建状态,此时未与操作系统底层线程关联。可运行:调用了 start 方法,就会由新建进入可运行,此时与底层线程关联,由操作系统调度执行。终结:线程内代码已经执行完毕,由可运行**进入终结,此时会取消与底层线程关联。阻塞:当获取锁失败后,由可运行进入 Monitor 的阻塞队列阻塞,此时不占用 cpu 时间。原创 2022-05-27 15:37:11 · 404 阅读 · 0 评论 -
Java 设计模式 -- 单例模式的实现(饿汉式、枚举饿汉式、懒汉式、双检锁懒汉式、内部类懒汉式)、jdk 中用到单例模式的场景、DCL实现单例需用volatile 修饰静态变量
单例模式保证java应用程序中,一个类Class只有一个实例在,使用单例模式好处在于可以节省内存,节约资源,对于一般频繁创建和销毁对象的可以使用单例模式。因为它限制了实例的个数,有利于java垃圾回收。好的单例模式也能提高性能。例如:数据库连接池、httpclient连接单例。对于系统中的某些类来说,只有一个实例很重要,Windows中就只能打开一个任务管理器。原创 2022-05-27 11:18:33 · 315 阅读 · 1 评论 -
Java -- ArrayList扩容机制、LinkedList vs ArrayList、Iterator(Fail-Fast机制、Fail-Safe机制)、HashMap常见面试题
主要原因在于 并发下的Rehash 会造成元素之间会形成⼀个循环链表。不过,jdk 1.8 后解决了这个问题,但是还是不建议在多线程下使⽤ HashMap,因为多线程下使⽤ HashMap 还是会存在其他问题⽐如数据丢失。并发环境下推荐使⽤。ArrayList扩容机制、 Iterator(Fail-Fast机制、Fail-Safe机制)、HashMap常见面试题ConcurrentHashMap 。原创 2022-05-27 00:22:19 · 575 阅读 · 0 评论 -
Java八股文面试题 基础篇 -- 二分查找算法、冒泡排序、选择排序、插入排序、希尔排序、快速排序
1. 二分查找算法1.1 二分查找算法介绍二分查找也是一种在数组中查找数据的算法。它只能查找已经排好序的数据。二分查找通过比较数组中间的数据与目标数据的大小,可以得知目标数据是在数组的左边还是右边。因此,比较一次就可以把查找范围缩小一半。重复执行该操作就可以找到目标数据,或得出目标数据不存在的结论。现在我们来试试查找6这个元素。首先找到数组中间的数字,此处为5。将5和要查找的数字6进行比较。把不需要的数字移出查找范围。在剩下的数组中找到中间的数字,此处为7。比较7和6。..原创 2022-05-13 21:51:22 · 329 阅读 · 0 评论