Darven's Blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
线程池实现

线程池实现

源码仓库GitHub - darven-cs/handwrit-code: 手写源码 实现过程1.创建框架主要方法就是下面三个 1234567891011121314151617public class MyThreadPoolExecutor { // 将任务放入线程池 public void execute(Runnable runnable){
2025-10-12
Java
#Java #线程 #线程池 #手写源码 #多线程
反射与代理

反射与代理

反射定义 java 语言提供的一种能力,允许程序在运行时(而非编译时)获取类的信息(如类的名称、方法、属性等), 并能动态创建类的实例、调用类的方法、访问或修改类的属性等。 这种机制就像 “反射” 一样,能反向探知类的内部结构,因此得名 “反射机制”。 用途 框架底层实现 动态代理与AOP 工具类 序列化与反序列化 … 一、获取Class对象四种方法我们要实现反射,需要通过获取class
2025-10-10
Java
#反射 #代理
Java21的新特性

Java21的新特性

最近学习Spring AI,在 JDK 21 中,又新增了一些特性, 1. 虚拟线程(Virtual Threads)—— 正式版(JEP 444)虚拟线程是轻量级线程,由 JVM 管理而非操作系统,能在有限的操作系统线程上高效运行大量并发任务(可轻松创建数百万个),大幅降低高并发场景下的资源消耗和编程复杂度。类似Go语言的协程,虚拟线程与传统线程相比,更轻量级、更简单,且更适合高并发场景
2025-10-08
Java
#Java #Java 21 #新特性
进程同步与互斥

进程同步与互斥

要彻底理解进程的同步与互斥,我们需要从 “为什么需要” 到 “是什么”,再到 “如何实现” 和 “经典问题” 逐步拆解。核心逻辑是:进程并发执行会引发资源竞争和执行顺序混乱,同步与互斥就是解决这两个问题的机制。 一、先搞懂:为什么需要同步与互斥?—— 并发的 “副作用”现代操作系统支持进程并发执行(比如同时开浏览器、微信、音乐),但并发会带来两个核心问题,这也是同步与互斥的起源: 1. 问题
2025-10-06
操作系统
#进程 #同步 #互斥
进程与线程

进程与线程

进程 vs 线程进程是系统资源分配的基本单位(运行的应用程序) 线程是任务调度和执行的基本单位(线程是进程的子集) 维度 进程(Process) 线程(Thread) 核心角色 系统资源分配的基本单位 CPU任务调度与执行的基本单位 本质 运行中的应用程序,是程序的一次动态执行 进程的子集(轻量级进程),共享进程资源 关键差异 资源独立(内存、文件描述符等),切换重 共享
2025-10-06
操作系统
#线程 #进程
回溯算法解析

回溯算法解析

回溯算法解析回溯算法是一种通过试错 + 回退寻找所有可行解的算法思想,核心是「在递归探索过程中,当发现当前路径无法得到有效解时,撤销上一步的选择,转而尝试其他可能的路径」。它特别适合解决需要穷举所有可能解的问题(如组合、排列、子集、棋盘问题等)。 一、回溯算法的核心思想想象成「走迷宫」:从起点出发,每次选择一条路往前走;如果走到死胡同(当前路径无效),就退回到上一个岔路口,换另一条路继续尝试,
2025-10-05
算法
#回溯算法
17. 电话号码的字母组合

17. 电话号码的字母组合

题目给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按任意顺序返回。 数字到字母的映射方式与电话按键相同。注意 1 不对应任何字母。 思路实现思路采用回溯算法的方式,通过深度优先搜索遍历所有可能的字母组合。使用 StringBuffer 作为临时存储结构,在递归过程中不断添加字符并回溯,生成所有可能的组合。 关键步骤解析 初始化映射关系:创建 String 数组 c
2025-10-05
算法
#leetcode #递归 #回溯 #字符串
78.子集

78.子集

题目给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2: 输入:nums = [0]输出:[[],[0]] 提示: 1 <&
2025-10-04
算法
#leetcode #递归 #数组 #回溯
114.二叉树展开为链表

114.二叉树展开为链表

题目给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 思路实现思路采用后序递归遍历的方式(先处理右子树,再处理左子树,最后处理当前节点),通过一个全局变量 prev 记录上一个处理完毕的节点,逐步调整指针
2025-10-03
算法
#leetcode #二叉树 #递归 #后序遍历
Comparable和Comparator区别

Comparable和Comparator区别

在 Java 中,Comparable和Comparator都是用于对象比较和排序的接口,但它们的设计理念、使用场景和实现方式有显著区别,具体如下: 1. 接口所在包不同 Comparable 位于 java.lang 包下(核心包,无需手动导入); Comparator 位于 java.util 包下(工具包,使用时需要导入)。 2. 比较逻辑的实现位置不同(核心区别) Comparable:
2025-10-03
Java
#Java #基础
12

搜索

Darven Hexo Fluid
载入天数... 载入时分秒...
总访问量 次 总访客数 人