01 2022 档案

摘要:【面试刷题】宽度优先搜索 一、最简洁的BFS算法的通用模板 1、适用于树和图的BFS模板 队列建议使用new ArrayDeque不建议使用new LinkedList(链表比数组慢) //双端队列 Queue<Node> queue = new ArrayDeque<>(); HashMap<No 阅读全文
posted @ 2022-01-31 13:52 DarkerG 阅读(90) 评论(0) 推荐(0) 编辑
摘要:【Kill Thread Part.2-2】volatile、原子性、JMM应用 一、volatile关键字 详解:底层原理 https://zhuanlan.zhihu.com/p/133851347 1、volatile是什么 volatile是一种同步机制,比synchronized或者Loc 阅读全文
posted @ 2022-01-28 12:49 DarkerG 阅读(54) 评论(0) 推荐(0) 编辑
摘要:【Kill Thread Part.1-8】双刃剑:多线程会导致的问题 一共有哪几类线程安全问题? 哪些场景需要额外注意线程安全的问题? 什么事多线程带来的上下文切换? 一、线程安全问题 1、什么是线程安全 通俗的讲: 2、运行结果错误:a++多线程下出现消失的请求现象 ①出错代码 /** * 描述 阅读全文
posted @ 2022-01-26 16:53 DarkerG 阅读(58) 评论(0) 推荐(0) 编辑
摘要:【Kill Thread Part.1-7】线程异常处理知多少? Java异常体系图 实际工作中,如何全局处理异常?为什么要全局处理?不处理行不行? 一、线程未捕获异常UncaughtException应该如何处理? 1、为什么需要UncaughtExceptionHandler? ①主线程可以轻松 阅读全文
posted @ 2022-01-26 14:37 DarkerG 阅读(53) 评论(0) 推荐(0) 编辑
摘要:【Kill Thread Part.1-6】一网打尽线程属性 什么时候我们需要设置守护线程? 我们应该如何应用线程优先级来帮助程序运行?有哪些禁忌? 不同操作系统如何处理优先级问题 一、线程各属性概览 二、线程各个属性 1、线程ID 从小到大 /** * 描述: ID从1开始,JVM运行起来后,我们 阅读全文
posted @ 2022-01-24 18:43 DarkerG 阅读(35) 评论(0) 推荐(0) 编辑
摘要:【Kill Thread Part.1-5】趣解Thread和Object类中线程相关方法 为什么线程通信的方法wait(),notify()和notifyAll()被定义在Object类里?而sleep定义在Thread类里? 用3种方式实现生产者模式 Join和sleep和wait期间线程的状态 阅读全文
posted @ 2022-01-24 16:53 DarkerG 阅读(55) 评论(2) 推荐(0) 编辑
摘要:【设计模式-创建型】简单工厂、工厂方法、抽象工厂 一、简单工厂的定义与类型 定义:由一个工程对象决定创建出哪一种产品类的实例 适用场景:工厂类负责创建的对象比较少,客户端(应用层)只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心 优点:只需要传入一个正确地参数,就可以获取所需要的对象,而无须知 阅读全文
posted @ 2022-01-21 12:52 DarkerG 阅读(43) 评论(0) 推荐(0) 编辑
摘要:【设计模式】软件设计的七大原则 一、开闭原则 定义:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭 特点:用抽象构建框架,用实现扩展细节 优点:提高软件系统的可复用性及可维护性 二、依赖倒置原则 定义:高层模块不应该依赖低层模块(应用层是高层,底层是一些基类),二者都应该依赖其抽象 特点:抽 阅读全文
posted @ 2022-01-21 11:57 DarkerG 阅读(78) 评论(0) 推荐(0) 编辑
摘要:【Kill Thread】补充:Synchronized的作用 synchronize详解,锁升级 https://blog.csdn.net/lpf463061655/article/details/105149322 一、Synchronized简介 1、Synchronized的作用 通俗易懂 阅读全文
posted @ 2022-01-21 10:49 DarkerG 阅读(46) 评论(0) 推荐(0) 编辑
摘要:【Kill Thread Part.1-4】图解线程生命周期 一、线程的六个状态 1、New 已经创建,但是还没有启动的状态。 通过new Thread()创建线程猴的状态。 2、Runnable 从New状态调用start()方法之后,就会处于Runnable状态了。 可运行状态 有可能正在执行, 阅读全文
posted @ 2022-01-20 15:18 DarkerG 阅读(55) 评论(0) 推荐(0) 编辑
摘要:【Kill Thread Part.1-3】线程停止、中断最佳实践 讲解原理 最佳实践:如何正确停止线程 停止线程的错误方法 重要函数的源码解析 常见的面试问题 一、涵盖内容 二、原理讲解 原理介绍:使用interrupt来通知,而不是强制 我们只能用interrupt来通知线程,你该中断了,但是并 阅读全文
posted @ 2022-01-19 22:16 DarkerG 阅读(115) 评论(0) 推荐(0) 编辑
摘要:【面试刷题】分治法与二叉树 一、二叉树上的分治法模板 1、模板 public 返回结果类型 divideConquer(TreeNode root) { if (root == null) { 处理空树应该返回的结果 } // if (root.left == null && root.right 阅读全文
posted @ 2022-01-19 15:30 DarkerG 阅读(53) 评论(0) 推荐(0) 编辑
摘要:【设计模式】UML类图 一、UML概念 1、UML定义 统一建模语言(Unified Modeling Language,缩写UML0 非专利的第三代建模和规约语言 2、UML2.2分类 结构式图形:强调的是系统式的建模 静态图(类图,对象图,包图) 实现图(组件图,部署图) 剖面图 符合结构图 行 阅读全文
posted @ 2022-01-18 23:57 DarkerG 阅读(164) 评论(0) 推荐(0) 编辑
摘要:【Kill Thread Part.1】启动线程的正确姿势 一、start()和run()的比较 1、测试代码 /** * 描述:对比start和run两种启动线程的方式 */ public class StartAndRunMethod { public static void main(Stri 阅读全文
posted @ 2022-01-18 19:35 DarkerG 阅读(52) 评论(0) 推荐(0) 编辑
摘要:【Kill Thread Part.1】实现多线程的正确姿势 一、实现多线程的方法是1种还是2种还是4种? 1、Oraclle官网文档正确说法:2种 官方文档 方法一:实现Runnable接口 方法二:继承Thread类 2、实现Runnable接口 /** * 描述:用Runnable方式创建线程 阅读全文
posted @ 2022-01-18 17:19 DarkerG 阅读(42) 评论(0) 推荐(0) 编辑
摘要:【Kill Thread Part.1】线程八大核心基础知识 思维导图下载地址: https://darkerg.lanzout.com/iHchHzbfipe 密码:9qom 一、思维导图 阅读全文
posted @ 2022-01-18 16:15 DarkerG 阅读(44) 评论(0) 推荐(0) 编辑
摘要:【操作系统】存储器管理 目标: 确保计算机有足够的内存处理数据 确保程序可以从可用内存中获取一部分内存使用 确保程序可以归还使用后的程序以供其他程序使用 一、存储器的层次结构 二、程序的装入和链接 用户程序要在系统中运行,必须先将它装入内存,然后再将其转变为一个可以执行的程序,通常要经过下面的步骤: 阅读全文
posted @ 2022-01-18 14:59 DarkerG 阅读(200) 评论(0) 推荐(0) 编辑
摘要:【面试刷题】两种排序算法 一、快速排序 1、思路步骤 选取中心轴pivot。 将小于Pivot,大于pivot的两个值进行交换。 对pivot左半部分,pivot右半部分再次进行上述步骤。 2、LeetCode-912.排序数组 3、代码实现 class Solution { public int[ 阅读全文
posted @ 2022-01-13 14:34 DarkerG 阅读(46) 评论(0) 推荐(0) 编辑
摘要:【面试刷题】字符串匹配Robin Karp算法 一、题目LeetCode-28.实现strStr() 二、实现O(n^2)的普通算法 class Solution { public int strStr(String haystack, String needle) { //进行异常判断 if (h 阅读全文
posted @ 2022-01-12 20:47 DarkerG 阅读(157) 评论(0) 推荐(0) 编辑

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