Loading

摘要: 垃圾回收 确定对象是否存活? 两种确定对象是否存活: 引用计数算法 可达性分析算法 引用计数算法 给对象中添加引用计数器,若有一个引用,则计数值加一,若引用失效,计数值减一。存在的问题:难以解决循环引用问题。 可达性分析算法 通过GC Roots作为起始节点,根据引用关系向下开始搜索,所有搜索走过的 阅读全文
posted @ 2020-09-13 20:09 战五渣渣渣渣渣 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 线程池 简介 缓存已创建的线程,以备执行后续的任务。 目的:创建和销毁消除消耗系统的资源,通过缓存已创建的线程,避免频繁的创建线程,从而减少系统的消耗。 与线程池有关的类和接口 Executor :底层接口,定义了 execute() ,表示执行传进来的任务。 ExecutorService :继承 阅读全文
posted @ 2020-09-13 20:07 战五渣渣渣渣渣 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 锁优化 锁优化技术 自旋锁和自适应自旋 锁消除 锁粗化 偏向锁 轻量级锁 自旋锁和自适应自旋 当一个线程获取锁失败时,不是直接放弃处理器时间,而是执行一定次数自旋。若自旋期间释放锁,则直接获取锁,否则再挂起线程。 问题:自旋的时间过长,浪费处理器资源。自旋时间过短,可能无法获得锁。 自适应自旋 自旋 阅读全文
posted @ 2020-09-13 20:06 战五渣渣渣渣渣 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 二叉树遍历 二叉树结构 public class TreeNode { int val; TreeNode left; TreeNode right; public TreeNode() {} public TreeNode(int val){ this(val, null, null); } pu 阅读全文
posted @ 2020-09-13 20:04 战五渣渣渣渣渣 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 排序算法 1. 快速排序 排序数组 递归法 public void sort(int[] nums, int l, int r){ if(l < r) { int i = l, j = r, x = nums[l]; while(i < j) { while(i < j && nums[j] >= 阅读全文
posted @ 2020-09-13 20:03 战五渣渣渣渣渣 阅读(98) 评论(0) 推荐(0) 编辑
摘要: KMP算法 思路 数组next[i]:表示位置为i的后缀所能匹配的最长的前缀的长度。如:"ababa"中第4个位置的字符 'a' 所能匹配的最长前缀为 "aba",next = 3;"abcdab"中第5个字符 'b' 所能匹配的最长的前缀为 "ab",next为2。 实现 辅助数组 private 阅读全文
posted @ 2020-09-13 20:02 战五渣渣渣渣渣 阅读(83) 评论(0) 推荐(0) 编辑