Future类相关 Future 类是异步思想的典型运用,主要用在一些需要执行耗时任务的场景,避免程序一直原地等待耗时任务执行完成,执行效率太低。具体来说是这样的:当我们执行某一耗时的任务时,可以将这个耗时任务交给一个子线程去异步执行,同时我们可以干点其他事情,不用傻傻等待耗时任务执行完成。等我们的事情干完后,我们再通过 Future 类获取到耗时任务的执行结果。这样一来,程序的执行效率就明显提高了。 在 Java 2025-01-29 Java #Java
线程池 为什么要用线程池? 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。 创建线程池的常见方法方式一:通过ThreadPoolExecutor构造函数来创建 方式二:通过 2025-01-29 Java #Java
ThreadLocal TheadLocal有什么用?ThreadLocal 类允许每个线程绑定自己的值,可以将其形象地比喻为一个“存放数据的盒子”。每个线程都有自己独立的盒子,用于存储私有数据,确保不同线程之间的数据互不干扰。 创建一个 ThreadLocal 变量时,每个访问该变量的线程都会拥有一个独立的副本。这也是 ThreadLocal 名称的由来。线程可以通过 get() 方法获取自己线程的本地副本,或通过 s 2025-01-29 Java #Java
JUC 线程的生命周期和状态Java 线程在运行的生命周期中的指定时刻只可能处于下面 6 种不同状态的其中一个状态: NEW: 初始状态,线程被创建出来但没有被调用 start() 。 RUNNABLE: 运行状态,线程被调用了 start()等待运行的状态。 BLOCKED:阻塞状态,需要等待锁释放。 WAITING:等待状态,表示该线程需要等待其他线程做出一些特定动作(通知或中断)。 TIME_WA 2025-01-29 Java #Java
TopK问题 实现思路: 选择小顶堆:维护当前最高的K个元素,堆顶是这K个中的最小值。新元素若大于堆顶,则替换堆顶并调整堆,确保堆中始终为Top K大元素。 插入逻辑:堆未满时直接插入;堆满时,新元素大于堆顶则替换,否则忽略。 获取排行榜:取出堆元素并按热度降序排列。 1234567891011121314151617181920212223242526272829303132333435363738 2025-01-29 算法 #算法
ConcurrentHashMap源码 ConcurrentHashMap 1.7 存储结构 Java 7 中 ConcurrentHashMap 的存储结构如上图,ConcurrnetHashMap 由很多个 Segment 组合,而每一个 Segment 是一个类似于 HashMap 的结构,所以每一个 HashMap 的内部可以进行扩容。但是 Segment 的个数一旦初始化就不能改变,默认 Segment 的个数是 16 2025-01-28 Java #Java
HashMap源码 底层数据结构分析JDK1.8之前JDK1.8 之前 HashMap 底层是 数组和链表 结合在一起使用也就是 链表散列。 HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,然后通过 (n - 1) & hash 判断当前元素存放的位置(这里的 n 指的是数组的长度),如果当前位置存在元素的话,就判断该元素与要存入的元素的 hash 值以及 key 2025-01-28 Java #Java
本地部署deepseek r1 使用Ollama进行本地部署。 Ollama是一个轻量级的工具,可以帮助你在本地快速部署和运行大语言模型。 访问Ollama官网下载对应的版本。 注:Ollama安装时默认安装至C盘,修改安装路径可执行以下命令: 1.\OllamaSetup.exe /DIR="指定路径" 更改模型存储位置: 要更改 Ollama 存储下载模型的位置,而不是使用你的主目录,可以在你的用户账户 2025-01-27 AI #AI
ArrayList源码 ArrayList核心源码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 2025-01-27 Java #Java