MySQL系列(一)--Innodb锁机制Next-key lock

数据库使用锁是为了支持更好的并发,提供数据的完整性和一致性。InnoDB是一个支持行锁的存储引擎,锁的类型有:共享锁(S)、排他锁(X)、意向共享(IS)、意向排他(IX)。为了提供更好的并发,InnoDB提供了非锁定读:不需要等待访问行上的锁释放,读取行的一个快照。该方法是通过……

阅读全文

Kafka(Go)系列(一)---初识 Kafka 架构和基本概念

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,这使它作为企业级基础设施来处理流式数据非常有价值。……

阅读全文

Go语言之 atomic.Value如何不加锁保证数据线程安全?

很多人可能没有注意过,在 Go(甚至是大部分语言)中,一条普通的赋值语句其实不是一个原子操作。例如,在32位机器上写int64类型的变量就会有中间状态,它会被拆成两次写操作(汇编的MOV指令)——写低 32 位和写高 32 位。32机器上对int64进行赋值 如果一个线程刚写完低32位,还没来得……

阅读全文

C++语言之 智能指针

智能指针auto_ptr、unique_ptr、shared_ptr区别 模板auto_ptr是C++98提供的解决方案,C++11已摒弃。 模板unique_ptr、shared_ptr是C++11提供的解决方案. 为什么要摒弃auto_ptr呢? 先来看下面的赋值语句: 1 2 3 auto_ptr<string> ps(new string("I am……

阅读全文

C++语言之 右值引用

一文读懂C++右值引用和std::move C++11引入了右值引用,有一定的理解成本,工作中发现不少同事对右值引用理解不深,认为右值引用性能更高等等。本文从实用角度出发,用尽量通俗易懂的语言讲清左右值引用的原理,性能分析及其应用场景,帮助大家在日常编程中用好右值引用和std::m……

阅读全文