JUC系列(2)——自定义线程池
上一篇刚说完 JDK 中的线程池,这次尝试着自己来定义一个线程池
参考 ThreadPoolExecutor 的实现可以知道,要自定义一个线程池,总少不了以下一些基本元素:
核心线程数 CoreSize
任务队列 TaskQueue
拒绝策略 RejectPolicy
任务超时时间 Ti ...
JUC系列 (1) —— ThreadPool 线程池
J.U.C 系列第一篇
一. JDK 中的线程池子曰:温故而知新。前不久翻看 Java 的基础知识,又看了美团的一篇关于线程池的文章,于是乎我尝试着梳理下有关于 JDK 中线程池这块儿内容。
关于使用线程池的好处,这里就直接罗列出来了:
线程池可复用和协调多个线程,控制最大并发数
线程池实现 ...
密码学原理
密码学是现代计算机安全通信的基石,早已在日常生活中被广泛应用。现代密码学的基层支撑是数学,而且还和信息论密切相关。恰巧最近看的吴军博士的《数学之美》中第17章也提到了密码学,因此鄙人打算将此篇当作一个读书笔记来写。
一. 密码学的历史关于密码学的历史,最早大致可以追溯到古罗马时期。古罗马皇帝凯撒 ...
哲学家就餐问题
哲学家进餐问题是计算机科学中的一个经典问题,同时也是操作系统这门课上非常著名的一个关于多线程同步与互斥的问题。
1. 问题描述在1971年,著名的计算机科学家艾兹格·迪科斯彻提出了一个同步问题,即假设有五台计算机都试图访问五份共享的磁带驱动器。稍后,这个问题被托尼·霍尔重新表述为哲学家就餐问题。 ...
Redis 实现分布式锁
之前看过 Katio 大佬的公众号《水滴与银弹》上发过一篇讲 Redis 实现分布式锁的文章,写得真的很全很细,看完我大受震撼,因此我也决定尝试着自己写一写关于这方面的内容。
1. 概念通常情况下,锁是用来保证对共享资源的互斥访问的。比如在 Java 单进程环境下,多线程对于共享资源的访问,我们 ...
MySQL 中都有哪些锁?
MySQL 为了解决并发、数据安全等问题,使用了锁机制,下面就从不同角度归纳总结一下 MySQL 中的锁的分类
一. 按锁的粒度划分按锁的粒度来划分,可以把数据库锁分为 表级锁 和 行级锁
表级锁:MySQL 中锁定粒度最大的一种锁,会对当前操作的整张表加锁。其特点是加锁快,不会发生死锁。缺点 ...
HashMap的要点总结
一. 类的继承体系HashMap 是 Map<K, V> 接口的一种实现,此外HashMap还实现了 Serializable 和 Cloneable 接口, 是 Java 类库中提供的一种哈希表实现。
和 HashTable 不同的是,HashMap的直接父类是 Abstract ...
Spring Boot应用是如何以JAR包的方式启动
通常一个Spring Boot 单体应用的package方式会是jar包的方式,而且通常情况下只要在console以 java -jar 命令加上JAR包的完整名称就能启动应用,那么这个过程是如何实现的呢,不妨让我们在此一探究竟。
通常情况下,Spring Boot 应用打包成JAR包的方式来 ...
Spring Boot 的自动配置原理
从 Spring 4.0时代开始,伴随着 Spring Boot 的崛起,依赖着其提供的自动装配功能,人们编写 web application 的时候终于可以摆脱那一大堆的 XML 配置文件了,从而真正意义上做到 Spring 应用的开箱即用了。也有人说,Spring Boot 就是 Spring ...
Redis缓存过期策略
一. Redis 提供的缓存淘汰策略Redis 从 4.0 时代开始,总共提供了以下几种缓存过期替换策略:
noeviction : 不进行缓存过期淘汰。设置这种策略时,当内存使用率达到设定上限后,如果继续有需要写内存的请求命令到达时,直接给客户端返回错误。当处理只读请求命令时,会依然正常返回结 ...