前言Nginx是一个免费的,开源的,高性能的HTTP服务器和反向代理,以及IMAP/POP3代理服务器。Nginx以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。Nginx是一个Web服务器,也可以用作反向代理,负载均衡器和HTTP缓存。很多高知名度的网站都使用Nginx,如:Netflix,GitHub,SoundCloud,MaxCDN等。正文Nginx的整体架构1.1.主进程N
分类:
其他好文 时间:
2019-02-01 19:47:50
阅读次数:
208
在并发编程中,除了synchronized关键字,java并发包中java.util.concurrent.locks中的ReentrantLock和ReentrantReadWriteLock也是常用的锁实现。本篇从源码方面,分析一下重入锁ReentrantLock的原理。 先说一下什么的重入锁: ...
分类:
其他好文 时间:
2019-01-31 00:24:18
阅读次数:
232
目录 前言 是戴套还是结扎? 方案一:调用方处理 方案二:内部处理 第一次优化:同步锁 第二次优化:双重检查加锁 第三次优化:饿汉式单例 回到顶部 前言 单例模式,这个最简单的设计模式,有无数开发者在网络上写过样本,我相信只要混过的,都能闭着眼睛把单例写出来,并不稀奇。 但是很多人写单例,都是背着写 ...
分类:
其他好文 时间:
2019-01-29 18:34:46
阅读次数:
177
互斥锁:模拟购票系统(join 可以实现串行运行程序,但是join的操作不够灵活) 数据文件 'db.json' 的格式为 {“count”: 1,...} ...
分类:
系统相关 时间:
2019-01-29 15:01:26
阅读次数:
204
java 中的 synchronized 运行 在 Java 中,我们经常用 synchronized 关键字对程序进行加锁。无论是一个代码块还是静态方法或者实例方法,都可以直接用 synchronized 声明。 当声明 synchronized 代码块时,编译的字节码将包含 monitorent ...
分类:
编程语言 时间:
2019-01-28 19:24:41
阅读次数:
190
如果一系列的连续操作都对同一个对象反复加锁和解锁,甚至加锁操作是出现在循环体中的,那即使没有线程竞争,频繁地进行互斥同步操作也会导致不必要的性能损耗。 如果虚拟机探测到有这样一串零碎的操作都对同一个对象加锁,将会把加锁同步的范围扩展(膨胀)到整个操作序列的外部(由多次加锁编程只加锁一次)。 一种需要... ...
分类:
其他好文 时间:
2019-01-28 01:26:22
阅读次数:
159
锁消除是指虚拟机即时编译器在运行时,对一些代码上要求同步,但是被检测到不可能存在共享数据竞争的锁进行削除。锁削除的主要判定依据来源于逃逸分析的数据支持,如果判断到一段代码中,在堆上的所有数据都不会逃逸出去被其他线程访问到,那就可以把它们当作栈上数据对待,认为它们是线程私有的,同步加锁自然就无须进行。... ...
分类:
其他好文 时间:
2019-01-28 00:51:08
阅读次数:
236
答案:是线程安全的,只读不写多线程下,完全不需要加锁! 测试代码: 模拟5万个线程读字典,看看是否混乱: 完全不需要担心,放心 ...
分类:
编程语言 时间:
2019-01-25 23:20:43
阅读次数:
285
在上一篇文章最后,我给你留了一个关于加锁规则的问题。今天,我们就从这个问题说起吧。 为了便于说明问题,这一篇文章,我们就先使用一个小一点儿的表。建表和初始化语句如下(为了便于本期的例子说明,我把上篇文章中用到的表结构做了点儿修改): 这个表除了主键id外,还有一个索引c,初始化语句在表中插入了6行数 ...
分类:
其他好文 时间:
2019-01-24 14:38:35
阅读次数:
467
1、打开Mac自带终端Terminal; 2、进入当前用户主目录,cd ~;(默认用户目录则不需要) 3、临时授权,sudo su; 4、输入系统密码(加锁密码不显示输入); 5、创建.bash_profile文件,touch .bash_profile(如果存在则不必新建,可直接第六步验证后再选择 ...
分类:
系统相关 时间:
2019-01-24 14:37:12
阅读次数:
188