摘要: 目录前言CLH 锁AQS 框架AQS 核心思想AQS 的同步状态AQS 对资源的共享方式AQS 的重要方法AQS 的数据结构NodeConditionObjectConditionConditionObjectAQS 源码分析核心方法获取资源:acquireaddWaiteracquireQueue 阅读全文
posted @ 2023-10-16 20:07 LARRY1024 阅读(139) 评论(0) 推荐(0)
摘要: 目录线程池线程池创建方式通过 ThreadPoolExecutor 创建如何给线程池命名ThreadFactoryBuilder实现一个 ThreadFactory通过 JUC 工具类创建线程池的核心设计与实现ThreadPoolExecutor 的总体设计ThreadPoolExecutor 的继 阅读全文
posted @ 2023-10-12 10:54 LARRY1024 阅读(177) 评论(0) 推荐(0)
摘要: 目录锁的分类乐观锁和悲观锁悲观锁乐观锁乐观锁的实现版本号机制CAS 算法乐观锁的问题ABA 问题循环时间长开销大只能保证一个共享变量的原子操作对比自旋锁和适应性自旋锁无锁、偏向锁、轻量级锁、重量级锁可重入锁和非可重入锁公平锁和非公平锁读写锁和排它锁JUC 包下的锁抽象类 AQS/AQLS/AOS接口 阅读全文
posted @ 2023-10-11 17:34 LARRY1024 阅读(123) 评论(0) 推荐(0)
摘要: 目录Java 集合List, Set, Queue, Map 的区别集合框架底层数据结构CollectionListSetQueueMap如何选用集合?ListArrayList 和 Array(数组)的区别转换ArrayList 转换为数组数组转换为 ArrayListSetComparable 阅读全文
posted @ 2023-10-10 17:45 LARRY1024 阅读(201) 评论(0) 推荐(0)
摘要: 目录Java 数据类型Java 基本数据类型基本类型和包装类型的区别包装类型的缓存机制自动装箱与拆箱浮点数运存在算精度丢失风险如何解决浮点数运算的精度丢失问题?超过 long 整型的数据应该如何表示?变量成员变量与局部变量静态变量字符型常量和字符串常量面向对象基础深拷贝和浅拷贝的区别浅拷贝深拷贝总结 阅读全文
posted @ 2023-10-08 17:06 LARRY1024 阅读(96) 评论(0) 推荐(0)
摘要: 目录并发容器类并发 MapConcurrentMapConcurrentHashMapConcurrentSkipListMap并发 Queue并发 Set阻塞队列BlockingQueue 的操作方法BlockingQueue 的实现类ArrayBlockingQueueLinkedBlockin 阅读全文
posted @ 2023-10-08 14:27 LARRY1024 阅读(112) 评论(0) 推荐(0)
摘要: 目录并发编程模型的两个关键问题Java 内存模型共享变量Java 内存模型的抽象结构volatile 关键字如何保证变量的可见性?如何禁止指令重排序?JMM 与 Java 运行时内存区域的区别区别联系总结JMM 与重排序为什么指令重排序可以提高性能?重排序有哪几种?JMM 与顺序一致性模型什么是顺序 阅读全文
posted @ 2023-09-20 11:59 LARRY1024 阅读(82) 评论(0) 推荐(0)
摘要: 目录TCP 报文格式TCP 报文格式简介TCP首部格式TCP 标志位TCP 序列号、确认号序列号 Sequence Number确认号 Acknowledge Number三次握手三次握手过程为什么需要三次握手,而不是两次或四次?为什么不是两次握手?为什么不是四次握手?SYN 攻击原理检测防范四次挥 阅读全文
posted @ 2023-09-18 17:36 LARRY1024 阅读(364) 评论(0) 推荐(0)
摘要: 目录简介索引失效场景未遵循最左前缀匹配导致索引失效索引列参与运算索引列使用了函数类型转换导致索引失效OR 引起的索引失效负向查询导致索引失效索引字段使用 IS NOT NULL 导致失效两列数据做比较会导致索引失效 简介 发生索引失效的情况: 当我们使用左或者左右模糊匹配的时候,即 like %xx 阅读全文
posted @ 2023-09-14 17:03 LARRY1024 阅读(195) 评论(0) 推荐(0)
摘要: 目录1. 排序算法介绍1.1. 冒泡排序1.1.1. 简介1.1.2. 代码实现1.2. 选择排序1.2.1. 简介1.2.2. 代码实现1.3. 快速排序1.3.1. 简介1.3.2. 代码实现1.4. 归并排序1.4.1. 简介1.4.2. 代码实现1.5. 插入排序1.5.1. 简介1.5.2 阅读全文
posted @ 2023-09-11 16:32 LARRY1024 阅读(76) 评论(0) 推荐(0)
摘要: 目录应用应用1:Leetcode 678. 有效的括号字符串题目分析方法一:栈方法二:动态规划代码实现 应用 应用1:Leetcode 678. 有效的括号字符串 题目 678. 有效的括号字符串 分析 方法一:栈 维护两个栈:\(stack_1\) 和 \(stack_2\),分别保存左括号元素的 阅读全文
posted @ 2023-09-11 15:52 LARRY1024 阅读(45) 评论(0) 推荐(0)
摘要: 目录数据结构算法 数据结构 数组 链表 链表应用 链表应用 II 链表应用 III 栈 栈的应用 队列 哈希表 页面置换算法:LRU和LFU 并查集 堆 优先级队列的应用 单调栈 单调栈及其应用 单调队列 线段树 二叉搜索树 二叉查找树 平衡树 跳表 跳跃表 算法 算法基础 滑动窗口 滑动窗口算法 阅读全文
posted @ 2023-09-11 15:34 LARRY1024 阅读(35) 评论(0) 推荐(0)
摘要: # 应用 ## 应用1:Leetcode.56 ### 题目 算法步骤: - 先将时间段按照起始时间升序,结束时间降序排序 - 用 $results$ 保存合并后的结果,并保存所有时间段中的第一个,并以其作为基准; - 遍历所有的时间段: - 如果当前区间的起始时间小于等于,$results$ 中最 阅读全文
posted @ 2023-09-07 11:23 LARRY1024 阅读(56) 评论(0) 推荐(0)
摘要: [TOC] # 扫描线 **扫描线**:假设有一条**竖直**的直线,从平面的最**左端**扫描到最**右端**,在扫描的过程中,直线上的一些线段会被给定的矩形覆盖。如果我们将这些覆盖的线段长度进行积分,就可以得到矩形的面积之和。 ![image](https://oi-wiki.org/geome 阅读全文
posted @ 2023-09-06 19:14 LARRY1024 阅读(986) 评论(3) 推荐(0)
摘要: 目录矩形应用应用1:Leetcode 223. 矩形面积题目解题思路代码实现应用场景应用2:Leetcode 391. 完美矩形题目解题思路代码实现 矩形 应用 应用1:Leetcode 223. 矩形面积 题目 223. 矩形面积 给你 二维 平面上两个 由直线构成且边与坐标轴平行/垂直 的矩形, 阅读全文
posted @ 2023-09-05 20:35 LARRY1024 阅读(150) 评论(0) 推荐(0)
摘要: 目录位运算与、或、异或取反左移和右移复合赋值位运算符关于优先级位运算的应用有关 2 的幂的应用取绝对值取两个数的最大/最小值判断两非零数符号是否相同交换两个数操作一个数的二进制位汉明权重位移实现LSB 置零操作x & -x 实现n & (n - 1) 实现构造汉明权重递增的排列集合集合集合与元素常见 阅读全文
posted @ 2023-09-04 15:46 LARRY1024 阅读(221) 评论(0) 推荐(0)
摘要: [TOC] # InnoDB 磁盘架构 ## 表 ### 创建 InnoDB 表 建表语句: ```sql mysql> CREATE TABLE t1 (a INT, b CHAR (20), PRIMARY KEY (a)) ENGINE=InnoDB; ``` 默认情况下,InnoDB 表会被 阅读全文
posted @ 2023-08-25 17:20 LARRY1024 阅读(104) 评论(0) 推荐(0)
摘要: [TOC] # InnoDB 存储引擎 - MySQL Server 管理 - MySQL Server Logs - The Binary Log - 优化 - SQL 语句优化 - SELECT 语句优化 - 索引条件下推优化 - 避免全表扫描 - 索引优化 - 数据结构优化 - InnoDB 阅读全文
posted @ 2023-08-25 15:20 LARRY1024 阅读(95) 评论(0) 推荐(0)
摘要: [TOC] # InnoDB 磁盘 I/O InnoDB 尽可能使用异步磁盘 I/O,通过创建多个线程来处理 I/O 操作,同时允许在 I/O 仍在进行时继续进行其他数据库操作。 - 在 Linux 和 Windows 平台上,InnoDB使用可用的操作系统和库函数来执行“本机”异步 I/O。 - 阅读全文
posted @ 2023-08-25 11:13 LARRY1024 阅读(227) 评论(0) 推荐(0)
摘要: [TOC] # 死锁 死锁是指不同事务无法继续进行的情况,因为每个事务都持有另一个事务需要的锁。因为两个事务都在等待资源变得可用,所以都不会释放它所持有的锁。 当事务锁定多个表中的多个行(通过 UPDATE 或 SELECT ... FOR UPDATE 等语句)但顺序相反时,可能会发生死锁。当此类 阅读全文
posted @ 2023-08-24 19:39 LARRY1024 阅读(172) 评论(0) 推荐(0)