目录 01.Java和线程 02.Java与协程 03.CPU缓存结构和java内存模型 04.管程-悲观锁和锁优化 05.乐观锁 - 无锁方案 06.线程安全 07.线程池 08.JUC 09.高并发测试 10.类加载器 Java与线程 线程的类型 线程是比进程更轻量级的调度执行单位,线程的引入, ...
分类:
编程语言 时间:
2020-06-26 18:45:04
阅读次数:
72
高并发模拟测试工具 postman apache bench(AB) JMeter (1) 使用postman创建并发模拟测试 据说这种方式的并发测试看看就行了, 没用, 使用的是串行不是并发 填入并发和延迟, 基本完成了 (2) apache bench(ab) 需要安装apache 通过上面的方 ...
分类:
其他好文 时间:
2020-06-26 18:16:23
阅读次数:
71
为什么需要编译自己的jvm源码? 想象下, 你想看看java线程是如何start的? 去源码里一找 native void start0(), 此时如果你对jvm源码比较熟悉, 那么可以下载openJDK源码借助vscode去查询底层实现, 但如果你不知道呢? 又比如 java高并发编程艺术 一书中 ...
分类:
系统相关 时间:
2020-06-26 18:11:46
阅读次数:
82
浅析数据库与缓存的双写一致性问题 缓存由于其高并发和高性能的特性,在项目中被广泛使用。读缓存流程如下图: 读取缓存流程 双写一致性有以下三个要求: 缓存不能读到脏数据 缓存可能会读到过期数据,但要在可容忍时间内实现最终一致 这个可容忍时间尽可能的小 要想同时满足上面三条,可以采用读请求和写请求串行化 ...
分类:
数据库 时间:
2020-06-26 12:27:14
阅读次数:
58
主从读写分离 其实,大部分系统的访问模型是读多写少,读写请求量的差距可能达到几个数量级,那么这就是我们所说的主从读写分离。 主从复制的原理这里不再阐述,本人博客里有关于Mysql主从的配置文章,当然里面也介绍了原理。 做了主从复制之后,就可以在写入时只写主库,在读数据时只读从库,这样即使写请求会锁表 ...
分类:
数据库 时间:
2020-06-25 21:52:59
阅读次数:
64
数据库的调用方式是先获取数据库的连接,然后依靠这条连接从数据库中查询数据,最后关闭连接释放数据库资源。这种调用方式下,每次执行SQL都需要重新建立连接,频繁地建立数据库连接耗费时间长导致了访问慢的问题。 那么为什么频繁创建连接会造成响应时间慢呢?来看一个实际的测试。 我用"tcpdump -i bo ...
分类:
数据库 时间:
2020-06-25 21:45:02
阅读次数:
121
一.前言 前文探究了非阻塞算法的实现ConcurrentLinkedQueue安全队列,也说明了阻塞算法实现的两种方式,使用一把锁(出队和入队同一把锁ArrayBlockingQueue)和两把锁(出队和入队各一把锁LinkedBlockingQueue)来实现,今天来探究下ArrayBlockin ...
分类:
编程语言 时间:
2020-06-25 12:10:12
阅读次数:
95
通常来讲,一个高并发大流量的系统,系统出现故障比系统性能低更损伤用户的使用体验。 可用性的度量 可用性是一个抽象的概念,你需要知道要如何来度量它,与之相关的概念是:MTBF和MTTR。 MTBF(Mean Time Between Failure)是平均故障间隔的意思,代表两次故障的间隔时间,也就是 ...
分类:
其他好文 时间:
2020-06-25 10:07:58
阅读次数:
111
一、协议简述什么协议:协议是1种约定,通过约定,各不相同的进程能对一段数据信息形成同样的理解,从而能相互协作,普遍存在进程间通信的程序就一定需要协议为何说进程间通信就需要协议?而不是说客户端和服务器端之前?协议设计的目标解析效率:互联网技术工作具有高并发的特点,解析效率决定了采用协议的CPU成本;编 ...
分类:
系统相关 时间:
2020-06-25 09:37:27
阅读次数:
110
数据库、缓存、依赖的第三方、负载均衡、交换机带宽等等都是系统扩展时需要考虑的因素。我们要知道系统并发到了某一个量级之后,哪一个因素会成为我们的瓶颈点,从而针对性地进行扩展。 比方说,你系统的流量是每秒1000次请求,对数据库的请求量也是每秒1000次。如果流量增加10倍,虽然系统可以通过扩容正常服务 ...
分类:
其他好文 时间:
2020-06-25 09:36:09
阅读次数:
67