摘要: CAS原理解析 1、CAS基本概念 CAS(Compare And Swap)也叫做比较与交换,是一种无锁原子算法,映射到操作系统就是一条cmpxchg硬件汇编指令,通过硬件命令保证了原子性。其作用是让CPU将内存值更新为新值,但是有个条件,内存值必须与期望值相同。CAS操作无需用户态和内核态切换, 阅读全文
posted @ 2022-03-27 17:30 紫薇哥哥 阅读(935) 评论(0) 推荐(1) 编辑
摘要: Java中的锁 java中的锁主要用于保障线程在多并发情况下数据的一致性,即多次执行过程中,线程的执行顺序都不相同,但最终的结果始终相同。 通常在使用对象或者调用方法之前加锁,这时如果有其他线程也需要使用该对象或者该方法,则首先要获得锁,如果某个线程发现锁已经被其它线程使用,就会进入锁池(Lock 阅读全文
posted @ 2022-03-27 17:28 紫薇哥哥 阅读(80) 评论(0) 推荐(0) 编辑
摘要: 数据结构 数据结构指数据的存储、组织方式。 数据结构 优点 缺点 栈 顶部元素插入和取出快 除顶部元素外,存取其他元素都很慢 队列 顶部元素取出和尾部元素插入快 存取其他元素都很慢 链表 插入和删除都快 查找慢 二叉树 插入、删除、查找都快 删除算法复杂 红黑树 插入、删除、查找都快 算法复杂 散列 阅读全文
posted @ 2022-03-27 17:05 紫薇哥哥 阅读(1475) 评论(0) 推荐(1) 编辑
摘要: 学习地址:红黑树(一)之 原理和算法详细介绍 - 如果天空不死 - 博客园 (cnblogs.com) 红黑树(Red-Black Tree) 红黑树(Red Black Tree)是一种自平衡二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红或黑。在进行插入和删操作时通过特定操作保持 阅读全文
posted @ 2022-03-27 16:41 紫薇哥哥 阅读(36) 评论(0) 推荐(0) 编辑
摘要: Java源码解读(三)— HashMap深入理解之增删查改 学习地址:[HashMap深入理解之增删查改]: https://blog.csdn.net/dongmuyang/article/details/98751508 本文为Java 8源码解读,已有红黑树。 主要成员变量 // 存储键值对的 阅读全文
posted @ 2022-03-27 16:34 紫薇哥哥 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 1、HashMap简介 HashMap是在JDK1.2引入的Map的实现类 HashMap核心是散列表(Hash table,也叫哈希表) 散列表是根据关键码值(Key value)而直接进行访问的数据结构 整体框架:HashMap是基于哈希表实现的,底层是基于 数组+链表 组成的,每个元素是一个键 阅读全文
posted @ 2022-03-27 16:31 紫薇哥哥 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 四个构造方法 HashMap():构造一个空的 HashMap ,默认初始容量(16)和默认负载系数(0.75)。 HashMap(int initialCapacity):构造一个空的 HashMap,具有指定的初始容量和默认负载因子(0.75)。 HashMap(int initialCapac 阅读全文
posted @ 2022-03-27 16:19 紫薇哥哥 阅读(524) 评论(0) 推荐(0) 编辑
摘要: Java 线程的 5 种状态 线程状态图: 线程共包含以下五种状态: 1、新建状态(New):线程对象被创建后,就进入了新建状态,例如,Thread thread = new Thread(); 2、就绪状态(Runnable):也称之为“可执行”状态。线程对象被创建后,其它线程调用该对象的star 阅读全文
posted @ 2022-03-27 16:17 紫薇哥哥 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 简单的比喻:进程=火车,线程=车厢 进程:进程(process)是程序的一次动态执行过程,是一个正在执行的程序的实例。程序是指令、数据及其组织形式的描述,是一个没有生命的实体,只有处理器赋予程序生命时(操作系统执行它),它才能成为一个活动的实体,我们称其为进程。内存和寄存器对程序的执行十分重要。 线 阅读全文
posted @ 2022-03-27 15:59 紫薇哥哥 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 异常的产生与如何处理异常 产生过程(示例) 处理过程 JVM在程序执行过程中检测出程序会发生异常 (1)首先,JVM根据异常产生的原因创建一个异常对象,这个异常对象包含异常产生的内容、原因和位置; (2)然后,若当前方法中没有异常处理逻辑(try...catch),那么JVM就会把异常对象抛出给方法 阅读全文
posted @ 2022-03-27 15:55 紫薇哥哥 阅读(50) 评论(0) 推荐(0) 编辑
摘要: 一、static关键字的用途 static可以用来修饰类的成员方法、类的成员变量,也可以编写static代码块来优化程序性能。 注意: 1、被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问 2、禁止在静态成员方法中访问非静态成员方法,但非静态 阅读全文
posted @ 2022-03-27 11:53 紫薇哥哥 阅读(54) 评论(0) 推荐(0) 编辑
摘要: ![](https://img2022.cnblogs.com/blog/2663550/202203/2663550-20220327114425161-1358659141.jpg) 阅读全文
posted @ 2022-03-27 11:45 紫薇哥哥 阅读(37) 评论(0) 推荐(0) 编辑
摘要: ![](https://img2022.cnblogs.com/blog/2663550/202203/2663550-20220327113350752-1532085021.png) 阅读全文
posted @ 2022-03-27 11:34 紫薇哥哥 阅读(10) 评论(0) 推荐(0) 编辑
摘要: java 关于锁的基础知识 1、synchronized作用于静态方法和非静态方法的区别 非静态方法:给对象加锁(可以理解为给这个对象的内存上锁,注意:只是这块内存,其他同类对象都会有各自的内存锁),这时候在其他一个以上线程中执行该对象的这个同步方法(注意:是该对象)就会产生互斥 静态方法: 相当于 阅读全文
posted @ 2022-03-27 11:29 紫薇哥哥 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 大小端定义 Java代码判断 思路:利用强制类型转换,获取大范围数的一部分数据,再分析获得的数据 int big = 0xFFFF0000; //0xFFFF0000,包含8个字节 short small =(short)big; //取递地址的4个字节 if(small==0xFFFF){ Sys 阅读全文
posted @ 2022-03-27 11:00 紫薇哥哥 阅读(33) 评论(0) 推荐(0) 编辑
摘要: Java的八种基本数据类型 序号 数据类型 字节数 默认值 取值范围 示例 1 byte (位) 1 0 -27 ~ 27-1 byte b = 10; 2 short (短整数) 2 0 -215 ~ 215-1 short s = 10; 3 int (整数) 4 0 -231 ~ 231-1 阅读全文
posted @ 2022-03-27 10:40 紫薇哥哥 阅读(86) 评论(0) 推荐(0) 编辑