加载中
第3篇 Linux系统编程--线程生命周期与状态

在上一篇中,我们已经通过知道如何创建多个线程,本篇会谈论到线程的生命周期,在此之前应该了解一下线程在一个进程中的内存布局 主线程和线程栈 每个栈都是一个独立的虚拟内存分配,可以将其...

05/09 17:24
14
源码阅读:全方位讲解LongAdder

高并发下计数功能最好的数据结构就是LongAdder与DoubleAdder,低并发下效率也非常优秀,这是我见过的java并发包中设计的最为巧妙的类,从软硬件方面将java并发累加操作优化到了极致,所以应该...

04/28 07:39
8
理解并发编程的几种"性" -- 可见性,有序性,原子性

这篇的主题本应该放在最初的几篇,讨论的是并发编程最基础的几个核心概念,但是这几个概念又牵扯到很多的实际技术,比如Java内存模型,各种锁的实现,volatile的实现,原子变量等等,每一个都...

04/26 21:54
0
CPU性能优化思路

一、性能优化方法论 优化前,先思考以下三个问题? 1、既然要做性能优化,那要怎么判断它是不是有效呢?特别是优化后,到底能提升多少性能呢?---即评估性能优化的效果 2、性能问题通常不是独...

Linux进程通信与System V IPC机制

Linux进程通信基本概念 从原理上来看,进程通信的关键技术就是在进程间建立某种共享区,利用进程都可以访问共享区的特点来建立一些通信通道。如下图所示: 其实,以前设计程序时使用的全局变...

04/24 22:20
0
进程间通信——共享内存

前言 进程间IPC通信的三大主题,消息队列,信号量,共享内存,我们接下来说一说共享内存,共享内存可以提供给服务器进程和客户进程之间进行通信,不需要进行数据的复制,所以速度最快,只需要...

04/24 20:10
0
大白话带你认识 Kafka 背后优秀的架构设计!

一、Kafka基础 消息系统的作用 应该大部份小伙伴都清楚,用机油装箱举个例子 所以消息系统就是如上图我们所说的仓库,能在中间过程作为缓存,并且实现解耦合的作用。 引入一个场景,我们知道...

如何设计一个配置中心

很多人说配置中心很简单啊,我分分钟给你撸一个出来。 说简单是可以很简单, 方式一: 写配置到redis,使用方定时从redis拿一下就好,简单到爆。 方式二: 就是业界很通用的zookeeper了,用个...

04/22 17:24
0
ACID

事务具有4个特征,分别是原子性、一致性、隔离性和持久性,简称事务的ACID特性; 一、原子性(atomicity) 一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作,这就是...

04/21 20:01
0
sega 分布式事务

Saga是由一系列的本地事务构成。每一个本地事务在更新完数据库之后,会发布一条消息或者一个事件来触发Saga中的下一个本地事务的执行。如果一个本地事务因为某些业务规则无法满足而失败,Sag...

04/21 19:52
0
深入理解mysql的事务隔离级别和底层实现原理

一、ACID特性 持久性,我们就不讲了,易懂。 1、原子性 在同一个事务内部的一组操作必须全部执行成功(或者全部失败)。 为了保证事务操作的原子性,必须实现基于日志的REDO/UNDO机制:将所有...

本地消息表实现最终一致性

背景 传统的单体应用不会横跨多个数据库,可以通过单机事务保证一致性。然而在海量数据的场景下,我需要对数据库做拆分,即分库分表,而Cobar、MyCat这类分库分表中间件并不提供分布式事务的...

04/21 18:18
0
两阶段提交和三阶段提交的优缺点

两阶段提交的缺点 1.同步阻塞问题。执行过程中,所有参与节点都是事务阻塞型的。 当参与者占有公共资源时,其他第三方节点访问公共资源不得不处于阻塞状态。 2.单点故障。由于协调者的重要性...

终于有人把“TCC分布式事务”实现原理讲明白了!

之前网上看到很多写分布式事务的文章,不过大多都是将分布式事务各种技术方案简单介绍一下。很多朋友看了还是不知道分布式事务到底怎么回事,在项目里到底如何使用。 所以这篇文章,就用大白...

七种分布式事务的解决方案,一次讲给你听!

什么是分布式事务 为什么会有分布式事务? 分布式理论 CAP定理 BASE理论 分布式事务解决方案 两阶段提交(2PC) 三阶段提交(3PC) 补偿事务(TCC) 本地消息表 消息事务 最大努力通知 Saga...

顺序锁(seqlock)

顺序锁的引入 前面学习了spin_lock可以知道,spin_lock对于临界区是不做区分的。而读写锁是对临界区做读写区分,并且度进程进入临界区的几率比较大,因为写进程进入时需要等待读进程退出临界...

04/10 21:53
28
Linux的新式线程同步原语——Futex

 在我的上一篇文章《本地POSIX线程库》中,提到了Futex一词,发现好多读者误以为这是我的笔误,将Mutex错写为Futex了。其实Futex是Linux的一种全新的线程同步原语。本文将为您解读高效的Fut...

04/10 20:34
33
管程

管程:指的是管理共享变量以及对共享变量的操作过程,让他们支持并发。 Java在1.5之前仅仅提供了synchronized关键字及wait(),notify(),notifyAll()这三个方法。而操作系统原理介绍信号量能解...

04/10 18:05
37
Java中的管程模型

操作系统使用信号量解决并发问题,Java选择使用管程(Monitor)解决并发问题。信号量和管程是等价的,可以使用信号量实现管程,也可以使用管程实现信号量。 管程就是指管理共享变量,以及对共...

04/10 18:02
22
进程的同步、互斥以及PV原语

操作系统P,V(wait,signal原语)操作讲解,以及两个例题(答案仅供参考) 操作系统的pv操作是很核心的概念。 临界区 : 我们把并发进程中与共享变量有关的程序段称为临界区。 信号量 : 信号量的值...

04/10 17:58
4

没有更多内容

加载失败,请刷新页面

返回顶部
顶部