摘要:
依山傍水房数间,行也安然,坐也安然 一头耕牛半倾田,收也凭天,荒也凭天 雨过天晴驾小船,鱼在一边,酒在一边 路逢骚客问诗篇,好也几言,歹也几言 布衣得暖胜丝棉,新也可穿,旧也可穿 粗茶淡饭饱三餐,早也香甜,晚也香甜 夜归挚友话灯前,今也谈谈,古也谈谈 一觉睡到日三竿,不是神仙,胜似神仙 阅读全文
摘要:
前言 先说结论,没兴趣了解原因的可以只看此处的结论 CompletableFuture是否使用默认线程池的依据,和机器的CPU核心数有关。当CPU核心数-1大于1时,才会使用默认的线程池,否则将会为每个CompletableFuture的任务创建一个新线程去执行。 即,CompletableFutu 阅读全文
摘要:
问题分析 先说一下背景,最近我们的系统出现了少部分用户对于限购一单的商品出现了重复下单的问题,造成了一定的损失,因此领导让我去排查一下下单接口为什么会出现这个问题。 再说说拿到代码后分析了一下下单接口,确实比较头疼,因为历史遗留原因,下单接口存在大量的冗余代码和远程调用。导致下单接口的执行时间非常的 阅读全文
摘要:
之前有提到Java中如何使用NIO,但是实际上在Java的NIO中,还有很多细节我们并没有去提到,只是简单的了解了一下NIO的使用方法,这篇文章我们来着重的了解一下NIO中的三个核心channe、buffer、selector,对于NIO的操作,都是围绕着这三个核心来进行的 先来回顾一下Java N 阅读全文
摘要:
以下的示例代码均来自彤哥的netty专栏 NIO BIO AIO的代码大多都是大同小异,所以在看的时候无需计较代码某一行是怎么写的,最重要的是通过代码去理解各种IO模型的思想和优劣点, BIO 在前面的文章中我们讲了几种IO的模型,这篇文章主要讲讲BIO在的一些实际应用,同时再来分析他的一些缺点(好 阅读全文
摘要:
概念回顾 这篇文章主要来讲一下IO多路复用的一些细节性的东西,虽然我们前面的文章提到了IO多路复用的大致思想,但是实际上IO多路复用在具体的实现方案上还是有着一些区别的, 在讲多路复用之前,我们还是要再来回顾一下传统BIO模型和NIO模型的缺点,通过一步一步的比较,我们才能更好的理解多路复用的优点和 阅读全文
摘要:
前言 在上一篇文章中,我们了解了操作系统中内核程序和用户程序之间的区别和联系,还提到了内核空间和用户空间,当我们需要读取一条数据的时候,首先需要发请求告诉内核,我需要什么数据,等内核准备好数据之后 , 再从内核空间拷贝到用户空间 注意加粗的部分,这两个阶段至关重要 对以上的两个过程以及操作系统的IO 阅读全文
摘要:
一、概念 首先我们先来复习一下操作系统的概念和作用 操作系统是用户和硬件之间的一层媒介程序,为上提供编程接口,为下调用资源,管理驱动,以使用硬件。 从以上的表述我们可以看出OS的两点作用,第一个是对下直接管理和使用硬件,第二个则是对上提供管理和使用硬件的接口。而在操作系统中,对下管理和使用硬件的那些 阅读全文
摘要:
准备条件:安装好docker 下载好redis的镜像 最新版本即可 创建三个目录用于存放持久化文件 mkdir /usr/local/docker/redis/redis-6379/data mkdir /usr/local/docker/redis/redis-6380/data mkdir /u 阅读全文
摘要:
线程池的作用 我们在用一个东西的时候,首先得搞明白一个问题。这玩意是干嘛的,为啥要用这个,用别的不行吗。那么一个一个解决这些问题 我们之前都用过数据库连接池,线程池的作用和连接池有点类似,频繁的创建,销毁线程会造成大量的不必要的性能开销,所以这个时候就出现了一个东西统一的管理线程,去负责线程啥时候销 阅读全文
摘要:
在前一篇文章中我们介绍了Executors 以及这个线程可以创建的一系列不同类型和作用的线程池,用于各种场景的管理线程,但是在查看这些创建线程的代码中,可以发现,不管是什么哪种线程池,其实本质上都是new了一个ThreadPoolExecutor类,只是传入的参数不同,所以发挥的作用也不同 框架 首 阅读全文