03 2022 档案

摘要:public class BubbleSort { public static void main(String[] args){ int[] arr = new int[]{5,1,3,6,8,2,10,19,15}; // 普通版 // bubbleSort(arr); // 进阶版 bubbl 阅读全文
posted @ 2022-03-23 08:51 fjhnb 阅读(25) 评论(0) 推荐(0) 编辑
摘要:(left+right)/2 可能会导致越界,可以写成left + (right - left)/2, 或者无符号右移 >>>1 public class BinarySearch { public static void main(String[] args){ int[] arr = new i 阅读全文
posted @ 2022-03-23 08:27 fjhnb 阅读(18) 评论(0) 推荐(0) 编辑
摘要:2PC模式 数据库支持的2PC【2 Phase Commit 二阶提交】,又叫做 XA Transactions。 MySQL从5.5版本开始支持,SQL Server 2005 开始支持,Oracle 7 开始支持。 其中, XA是一个两阶段提交协议,该协议分为以下两个阶段: 第一阶段:事务协调器 阅读全文
posted @ 2022-03-16 16:59 fjhnb 阅读(83) 评论(0) 推荐(0) 编辑
摘要:全称是AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架 特点: 用state属性来表示资源的状态(分独占模式和共享模式),子类需定义如何维护这个状态,控制如何获取锁和释放锁 getState - 获取state状态 setState - 设置state状态 c 阅读全文
posted @ 2022-03-14 14:18 fjhnb 阅读(70) 评论(0) 推荐(0) 编辑
摘要:Unsafe对象提供了非常底层的,操作内存、线程的方法,Unsafe对象不能直接调用,只能通过反射获得。 public Class UnsafeAccessor{ static Unsafe unsafe; static{ try{ Field theUnsafe = Unsafe.class.ge 阅读全文
posted @ 2022-03-14 11:13 fjhnb 阅读(140) 评论(0) 推荐(0) 编辑
摘要:CAS的底层是lock cmpxchg 指令(X86架构),在单核CPU和多核CPU下都能保证【比较-交换】的原子性。 在多核状态下,某个核执行到带lock的指令时,CPU会让总线锁住,当这个核把此指令执行完毕,再开启总线。这个过程中不会被线程的调度机制所打断,保证了多个线程对内存操作的准确性,是原 阅读全文
posted @ 2022-03-13 15:25 fjhnb 阅读(121) 评论(0) 推荐(0) 编辑
摘要:happens-before 规定了对共享变量的写操作对其他线程的读操作可见,它是可见性和有序性的一套规则总结,抛开以下happens-before 规则,JMM并不能保证一个线程对共享变量的写,对于其他线程对该共享变量的读可见。 线程解锁m之前对变量的写,对于接下来对m加锁的其它线程对该变量的读可 阅读全文
posted @ 2022-03-13 14:19 fjhnb 阅读(43) 评论(0) 推荐(0) 编辑
摘要:原理之wait/notify Owner线程发现条件不满足,调用wait方法,即可进入WaitSet变为Waiting状态 BLOCKED 和 WAITING的线程都处于阻塞状态,不占用CPU时间片 BLOCKED线程会在Owner线程释放锁时唤醒 WAITING线程会在Owner线程调用notif 阅读全文
posted @ 2022-03-07 19:45 fjhnb 阅读(31) 评论(0) 推荐(0) 编辑
摘要:Java 对象头 以32位虚拟机为例 普通对象:Object Header(64bits) ​ Mark Word(32bits) Klass Word(32bits) 数组对象:Object Header(96bits) ​ Mark Word(32bits) Klass Word(32bits) 阅读全文
posted @ 2022-03-07 17:25 fjhnb 阅读(498) 评论(0) 推荐(0) 编辑
摘要:Windows 任务管理器可以查看进程和线程数,也可以用来杀死进程。 tasklist 查看进程 tasklist | findstr java taskkill 杀死进程 Linux ps -fe 查看所有进程 ps -ef |grep java ps -fT -p 查看某个进程(PID)的所有线 阅读全文
posted @ 2022-03-03 13:42 fjhnb 阅读(766) 评论(0) 推荐(0) 编辑
摘要:进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的。 当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。 进程就可以视为程序的一个实例,大部分 阅读全文
posted @ 2022-03-03 10:56 fjhnb 阅读(98) 评论(0) 推荐(0) 编辑
摘要:Java HotSpot虚拟机中,每个对象都有对象头(包括class指针和Mark Word)。Mark Word 平时存储这个对象的哈希码、分代年龄,当加锁时,这些信息就根据情况被替换为标记位、线程锁记录指针、重量级锁指针、线程ID等内容。 1、轻量级锁 如果一个对象虽然有多线程访问,但多线程访问 阅读全文
posted @ 2022-03-02 15:56 fjhnb 阅读(104) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示