![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
造轮子系列
文章平均质量分 72
.idea
SWPU_嵌入式团队
展开
-
造轮子系列(四)手写HashMap的一个简单实现理解HashMap实现原理
该博客是根据小码哥编程《恋上数据结构与算法》及查看JDK HashMap源码所写,理解不当之处请路过滴大佬们斧正!通过手写HashMap部分源码实现我们将知道:哈希表原理是什么?哈希冲突如何解决?为了减少哈希冲突,HashMap中的哈希值如何计算?HashMap的底层数据结构HashMap内部的存取逻辑HashMap的扩容机制:装填因子是多少?扩容时是直接将元素复制过去吗?初始化桶数组大小是多少?为什么一定是2的幂次方?为什么要求自定义key对象时最好同时重写equals()与hashC.原创 2021-04-07 20:32:12 · 1504 阅读 · 14 评论 -
造轮子系列(三)模仿ArrayList、LinkedList的简单实现
ArrayList && LinkedList定义抽象接口Listpackage com.firework.collection.list;/** * @author .idea * @date 2021/4/2 */public interface List<E> { /** * 元素没有找到 */ int ELE_NOT_FOUND = -1; /** * 获取集合元素长度 * *原创 2021-04-04 10:01:40 · 153 阅读 · 0 评论 -
造轮子系列(二)自定义一个Java独占锁理解ReentrantLock锁原理
一.自定义MyLock锁ReentrantLock锁的同步控制基础来自于AbstractQueuedSynchronizer类(AQS)。通过维护state状态位来控制锁的占用情况。设计了一个FIFO特点的队列实现对尝试获取锁的线程的缓冲。创建condition条件变量完成对等待线程的阻塞与唤醒。首先创建一个继承自AbstractQueuedSynchronizer类的同步器类:package mylock;import java.util.concurrent.locks.Abstra原创 2021-03-08 11:57:21 · 288 阅读 · 4 评论 -
造轮子系列(一)自定义Java线程池的简单实现理解ThreadPoolExecutor
一.概述“池化”思想的设计减少了线程创建与销毁的资源损耗,提高了任务的响应速度,同时还可以提供一些额外的功能,例如定制线程池和阻塞队列都已满时的拒绝策略。ThreadPoolExecutor做为Java线程池的核心实现类,继承关系如下:顶层接口Executor提供了将任务提交与任务执行解耦的思想,下面的接口与实现类在此基础上进行完善,提供线程池自身状态的维护和线程与任务的管理。二.基本设计思想Java线程池运用生产者消费者的设计模式,设计用于缓存任务的阻塞队列。用户发起任务提交,如果在核心线程池原创 2021-03-06 14:33:09 · 223 阅读 · 1 评论