程序员经常要面临的一个问题就是:如何提高程序性能? 这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术。 - I/O优化:零拷贝技术- I/O优化:多路复用技术- 线程池技术- 无锁编程技术- 进程间通信技术- RPC ...
分类:
其他好文 时间:
2021-07-27 17:35:42
阅读次数:
0
1.乐观锁和悲观锁 对于同一个共享资源,悲观锁认为,在自己使用数据的时间内,一定会有其它的线程来使用该数据,所以必须要对这个共享资源进行上锁,如果不上锁,在这期间数据可能会被其它的线程锁修改。java中的synchronized和Lock的实现类都是悲观锁。 而对于乐观锁而言,认为自己在使用共享资源 ...
分类:
编程语言 时间:
2021-06-02 12:08:39
阅读次数:
0
在并行编程中,经常会遇到多线程间操作共享集合的问题,很多时候大家都很难逃避这个问题做到一种无锁编程状态,你也知道一旦给共享集合套上lock之后,并发和伸缩能力往往会造成很大影响,这篇就来谈谈如何尽可能的减少lock锁次数甚至没有。一:缘由1.业务背景昨天在review代码的时候,看到以前自己写的这么一段代码,精简后如下:privatestaticList<long>ExecuteFil
分类:
其他好文 时间:
2020-09-11 14:18:12
阅读次数:
48
程序员经常要面临的一个问题就是:如何提高程序性能?这篇文章,我们循序渐进,从内存、磁盘I/O、网络I/O、CPU、缓存、架构、算法等多层次递进,串联起高性能开发十大必须掌握的核心技术。I/O优化:零拷贝技术I/O优化:多路复用技术线程池技术无锁编程技术进程间通信技术RPC&&序列化技术数据库索引技术缓存技术&&布隆过滤器全文搜索技术负载均衡技术准备好了吗,坐稳了,发
分类:
其他好文 时间:
2020-08-24 16:28:12
阅读次数:
61
在并行编程中,经常会遇到多线程间操作共享集合的问题,很多时候大家都很难逃避这个问题做到一种无锁编程状态,你也知道一旦给共享集合套上lock之后,并发和伸缩能力往往会造成很大影响,这篇就来谈谈如何尽可能的减少lock锁次数甚至没有。 一:缘由 1. 业务背景 昨天在review代码的时候,看到以前自己 ...
分类:
其他好文 时间:
2020-04-21 18:44:03
阅读次数:
79
转自 https://www.cnblogs.com/hustzzl/p/9343797.html 1. Java锁的种类 在笔者面试过程时,经常会被问到各种各样的锁,如乐观锁、读写锁等等,非常繁多,在此做一个总结。介绍的内容如下: 乐观锁/悲观锁 独享锁/共享锁 互斥锁/读写锁 可重入锁 公平锁/ ...
分类:
编程语言 时间:
2020-03-06 12:52:14
阅读次数:
76
概述 在开发过程中,我们经常会遇到并发问题,解决并发问题通常的方法是加锁保护,比如常用的spinlock,mutex或者rwlock,当然也可以采用无锁编程,对实现要求就比较高了。对于任何一个共享变量,只要有读写并发,就需要加锁保护,而读写并发通常就会面临一个基本问题,写阻塞读,或则写优先级比较低, ...
分类:
数据库 时间:
2019-09-22 15:27:39
阅读次数:
164
JDK8中引入了高性能的读写锁StampedLock,它的核心思想在于,在读的时候如果发生了写,应该通过重试的方式来获取新的值,而不应该阻塞写操作。这种模式也就是典型的无锁编程思想,和CAS自旋的思想一样。这种操作方式决定了StampedLock在读线程非常多而写线程非常少的场景下非常适用,同时还避 ...
分类:
其他好文 时间:
2019-06-16 11:50:38
阅读次数:
107
1、线程与进程: 在开始之前先把进程与线程进行区分一下,一个程序最少需要一个进程,而一个进程最少需要一个线程。 线程是程序执行流的最小单位,而进程是系统进行资源分配和调度的一个独立单位。 2、Thread的几个重要方法: 我们先了解一下Thread的几个重要方法。 a、start()方法,开始执行该 ...
分类:
其他好文 时间:
2019-04-28 12:33:14
阅读次数:
130
目录 (一)什么是服务器并发处理能力 (二)有什么方法衡量服务器并发处理能力 1.吞吐率 2.压力测试 (三)怎么提高服务器的并发处理能力 1,提高CPU并发计算能力(1)多进程&多线程(2)减少进程切换,使用线程,考虑进程绑定CPU(3)减少使用不必要的锁,考虑无锁编程(4)考虑进程优先级(5)关 ...
分类:
其他好文 时间:
2018-11-12 11:25:25
阅读次数:
131