• 2024-12-25【杂谈】Kafka的无锁设计
    前言在分布式消息队列系统中,Kafka的无锁设计是其高吞吐量和高并发的核心优势之一。通过避免锁的竞争,Kafka能够在高并发和大规模的生产环境中保持高效的性能。为了更好地理解Kafka的无锁设计,我们首先对比传统的队列模型,然后探讨Kafka如何通过无锁机制优化生产者和消费者之间
  • 2024-11-23并发编程(13)——无锁环形并发队列
    文章目录十三、day131.什么是无锁数据结构?2.环形队列3.实现线程安全的环形队列3.1实现有锁环形队列3.2实现无锁环形队列(有缺陷)3.3实现无锁环形队列(无缺陷)3.3.1pop函数3.3.2push函数3.3.3优化后的pop和push函数3.3.4完整代码4.无锁环形并发队列的优缺点十
  • 2024-12-05【C++】类的继承的深入探讨
    继承是扩展现有类并为基类提供新功能的一种方式。本文主要探讨一个问题:子类会包含父类所包含的一切吗?起初,作者认为这个问题的答案是否定的,因为子类无法访问父类的private成员但是,运行下述一个简易的示例代码,得到Entity类和Player类的大小分别是8和16。#include<iostream>cla
  • 2024-09-09单生产者单消费者无锁队列
    单生产者单消费者无锁队列伪共享:下图是计算的基本结构。L1、L2、L3分别表示一级缓存、二级缓存、三级缓存,越靠近CPU的缓存,速度越快,容量也越小。所以L1缓存很小但很快,并且紧靠着在使用它的CPU内核;L2大一些,也慢一些,并且仍然只能被一个单独的CPU核使用;L3更大、更慢,并且被单个插槽上
  • 2024-08-30Java中的并发控制算法:如何实现高效的锁机制与无锁编程
    Java中的并发控制算法:如何实现高效的锁机制与无锁编程大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!在多线程环境中,如何保证数据的正确性和一致性是个重要的问题。为了解决这个问题,Java提供了多种并发控制算法,主要包括锁机制和无锁编程。本文将介
  • 2024-08-22高性能无锁队列 Disruptor 核心原理分析及其在i主题业务中的应用
    小结:生产者生产数据时,需要入队。消费者消费数据时,需要出队。入队时,不能覆盖没有消费的元素。出队时,不能读取没有写入的元素。因此,Disruptor中需要维护一个入队索引(生产者数据生产到哪里,对应AbstractSequencer中的cursor)和一个出队索引(所有消费者中消费进度最小的序号)。 
  • 2024-08-15高性能无锁队列 Disruptor 核心原理分析及其在i主题业务中的应用
    一、i主题及Disruptor简介i主题是vivo旗下的一款主题商店app,用户可以通过下载主题、壁纸、字体等,实现对手机界面风格的一键更换和自定义。Disruptor是英国外汇交易公司LMAX开发的一个高性能的内存队列(用于系统内部线程间传递消息,不同于RocketMQ、Kafka这种分布式消息
  • 2024-08-15高性能无锁队列 Disruptor 核心原理分析及其在i主题业务中的应用
    作者:来自vivo互联网服务器团队-LiWanghong本文首先介绍了Disruptor高性能内存队列的基本概念、使用Demo、高性能原理及源码分析,最后通过两个例子介绍了Disruptor在i主题业务中的应用。一、i主题及Disruptor简介i主题是vivo旗下的一款主题商店app,用户可以通过下
  • 2024-07-21微服务设计原则——高性能:锁
    文章目录1.锁的问题2.无锁2.1串行无锁2.2无锁数据结构3.减少锁竞争参考文献1.锁的问题高性能系统中使用锁,往往带来的坏处要大于好处。并发编程中,锁带解决了安全问题,同时也带来了性能问题,因为锁让并发处理变成了串行操作,所以如无必要,尽量不要显式使用锁。锁和并
  • 2024-06-13实现并发新高度:23ai的无锁列值保留
    OracleDatabase23ai支持Lock-FreeReservation,中文通常译为“无锁列值保留”。本文将通过3个部分来阐述Lock-FreeReservation的这个特性:1.应用场景2.实现原理3.使用限制1.应用场景Lock-FreeReservation这项特性可用于实现更细粒度的并发控制。它的本质是相对于传统
  • 2024-05-28【go从入门到精通】精通并发编程-使用atomic管理状态和同步的无锁技术
    了解原子计数器        在Go中,原子计数器是多个goroutine可以同时访问的共享变量。术语“原子”是指在计数器上执行的操作的不可分割的性质。在Go中,原子计数器允许多个goroutine安全地更改共享变量,而无需使用锁或任何其他显式同步,这可确保数据完整性并避免竞
  • 2024-04-07详细解答什么是原子类,原子类的常用类有哪些,Atomic的原理是怎么样的
    该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点面试官:什么是原子类原子类是Java中提供的一种用于并发编程的工具类,它们位于java.util.concurrent.atomic包中。这些类通过底层硬件的原子操作来实现无锁的线程安全
  • 2024-04-03有锁编程 vs 无锁编程
    什么是无锁编程?简单来说就是有没有block住其他线程,没有,那就是无锁编程。https://preshing.com/20120612/an-introduction-to-lock-free-programming/区别
  • 2024-03-24Golang:无锁队列实现
    无锁队列实现无锁队列实现参考论文适用场景并发条件下,需要使用到队列的情况,都可以使用无锁队列技术要点使用atomic.loadpointer来实现实时的指针相等判断使用CAS来替代同步状态下的p=p.next额外判断tail是不是正确的tail,并且不断地尝试推后他示例代码pack
  • 2024-03-24无锁、偏向锁、轻量级锁和重量级锁
    在JDK1.6版本之前,所有的Java内置锁都是重量级锁。重量级锁会造成CPU在用户态和核心态之间频繁切换,所以代价高、效率低。JDK1.6版本为了减少获得锁和释放锁所带来的性能消耗,引入了偏向锁和轻量级锁的实现。所以,在JDK1.6版本中内置锁一共有4种状态:无
  • 2024-01-20C++11原子变量:线程安全、无锁操作的实例解析
     在C++11中,原子变量(std::atomic)提供了一种线程安全的方式来操作共享变量。下面是一个简单的例子,演示了C++11原子变量的用法。#include<iostream>#include<atomic>#include<thread>std::atomic<int>counter(0);//声明一个原子整数变量voidincrementCounter(int
  • 2023-08-19什么是无锁化
    无锁简介无锁分为两大派系:乐观派系:它们认为事情总会往好的方向去发展,总是认为坏的情况发生概率特别小,可以无所顾忌的做任何事情.悲观派系:它们总会认为发展事态如果不及时控制,以后就无法挽回,即时此种局面不会发生的情况下。上述两大派系映射到并发编程中就如同加锁与无
  • 2023-08-13并发编程 --- CAS原子操作
    介绍CAS(CompareAndSwap)是一种无锁算法的实现手段,中文名称为比较并交换。它由CPU的原子指令实现,可以在多线程环境下实现无锁的数据结构。原理CAS的原理是:它会先比较内存中的某个值是否和预期值相同,如果相同则更新这个值,否则不做任何操作。这整个过程是原子的,所以可以在
  • 2023-08-04无锁和无等待的定义和例子
    在查阅google之后,我发现没有一处对并发算法或是数据结构规定的演进条件(progresscondition,注:参考[1],译者认为翻译为演进状态更为合适)做合理的解释。甚至在”TheArtofMultiprocessorProgramming“中也只有围绕书本的一小段定义,大部分定义是单行的句子,因而造成了我们普通人含义模
  • 2023-07-01带你了解什么是无锁并发 CAS
    博主介绍:✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家✌
  • 2023-06-26C++一读一写无锁队列
    //一读一写的无锁管道队列template<classT>classPipelineList{private:template<classT>structqnode{structqnode*next;Tdata;};structqnode<T>*volatilem_front;structqnode<T>*volatilem_
  • 2023-06-21Synchronized锁的膨胀升级-无锁及偏向锁
    转载:https://www.bilibili.com/video/BV1gP4y137pQ/?spm_id_from=333.337.search-card.all.click&vd_source=46d50b5d646b50dcb2a208d3946b1598https://www.bilibili.com/video/BV1yi4y1C7XY/?spm_id_from=trigger_reload&vd_source=46d50b5d646b50dcb2a208d3946b1598
  • 2023-06-15C#中使用CAS实现无锁算法
    CAS的基本概念CAS(Compare-and-Swap)是一种多线程并发编程中常用的原子操作,用于实现多线程间的同步和互斥访问。它操作通常包含三个参数:一个内存地址(通常是一个共享变量的地址)、期望的旧值和新值。CompareAndSwap(内存地址,期望的旧值,新值)CAS操作会比较内存地址处的值与期望
  • 2023-06-03MYSQL:无锁变更工具Pt-online-schema-change
    一、MySQL常用的无锁变更工具OnlineSchemaChange:OnlineSchemaChange(OSC)工具是MySQL官方提供的一种无锁变更工具,它可以在不停止MySQL服务器的情况下对表结构进行修改。OSC利用了InnoDB存储引擎的特性,使用复制和重放日志的方式来实现无锁变更。pt-online-schema-change:pt-