1.什么是自旋锁自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务,使用这种锁会造成busy-waiting。2.Java如何实现自旋锁?先看一个实现自旋锁的例子,java.util.concurrent包里提供了很多面向并
分类:
编程语言 时间:
2020-10-24 11:49:35
阅读次数:
35
ThreadLocal<T>其实是与线程绑定的一个变量。ThreadLocal和Synchonized都用于解决多线程并发访问。但是ThreadLocal与synchronized有本质的区别。Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。Synchr ...
分类:
其他好文 时间:
2020-10-24 10:11:30
阅读次数:
19
除了运维团队对于机器CPU、内存、磁盘、网络等基础监控,还要完成应用程序对数据库的链接、服务报错异常、以及请求超时等问题能做到及时发现。 监控四个指标 分别是延迟,通信量、错误和饱和度。 延迟指的是请求的响应时间。比如,接口的响应时间、访问数据库和缓存的响应时间。 通信量可以理解为吞吐量,也就是单位 ...
分类:
其他好文 时间:
2020-10-24 10:11:09
阅读次数:
22
开源mongodb代码规模数百万行,本篇文章内容主要分析mongodb网络传输模块内部实现及其性能调优方法,学习网络IO处理流程,体验不同工作线程模型性能极致设计原理。另外一个目的就是引导大家快速进行百万级别规模源码阅读,做到不同大工程源码”举一反三”快速阅读的目的。
此外,mognodb网络工作线程模型设计非常好,不仅非常值得数据库相关研发人员学习,中间件、分布式、高并发、服务端等相关研发人员也可以借鉴,极力推荐大家学习。
分类:
数据库 时间:
2020-10-24 09:57:49
阅读次数:
25
1,什么是NoSql 为了解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案,就是NoSql。 NoSql,叫非关系型数据库,它的全名Not only sql。它不能替代关系型数据库,只能作为关系型数据库的一个良好补充。 Redis是使用c语言开发的一个高性能键值数据库。Re ...
分类:
其他好文 时间:
2020-10-22 23:17:44
阅读次数:
42
简介OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合,由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证授权的开源代码项目OpenStack为私有云和公有云提供可扩展的弹性的云计算服务,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台OpenStack覆盖了网络、虚拟化、操作系统、服务器等各个方面,它是一个正在开
分类:
其他好文 时间:
2020-10-22 23:14:05
阅读次数:
45
来源:codeceo http://www.codeceo.com/javamemorymodel.html JMM简介 Java Memory Model简称JMM, 是一系列的Java虚拟机平台对开发者提供的多线程环境下的内存可见性、是否可以重排序等问题的无关具体平台的统一的保证。(可能在术语上 ...
分类:
编程语言 时间:
2020-10-22 22:33:13
阅读次数:
20
线程通信 为什么要进行线程通信 把一个大的任务放到主线程的话,由于顺序执行,会严重影响程序执行的效率。为了提高效率和并发度,可以将任务解耦为多个线程执行,比如一个线程接收数据,一个线程处理数据,这个时候,线程间就会出现交互,也就是线程通信。 生产者消费者模型 线程通信的关键应用场景就是生产者消费者问 ...
分类:
编程语言 时间:
2020-10-21 20:23:26
阅读次数:
23
这两个方法,都是并行执行多个异步操作。而不同的是,all方式遵循“谁跑得慢,以谁为准执行回调”,而race遵循的是“谁跑的快,以谁为准执行回调” 以下为两个异步函数 function yibu1() { var p1 = new Promise((resolve, reject) => { setT ...
分类:
其他好文 时间:
2020-10-19 22:59:46
阅读次数:
33