上一页 1 2 3 4 5 6 ··· 18 下一页
摘要: C++ Singleton Lazy Singleton C++11的一个Lazy Singleton(懒汉)版本: class Singleton { public: Singleton(const Singleton&) = delete; Singleton& operator=(const 阅读全文
posted @ 2020-12-01 12:33 如果的事 阅读(1224) 评论(0) 推荐(0) 编辑
摘要: clone linux 创建线程(pthread_create)和进程(fork)的过程非常类似,都是主要依赖 clone 函数,只不过传入的参数不同而已。 如此一来,内核只需要实现一个 clone函数,就既能创建进程,又能创建线程了,例如; 创建进程: clone(SIGCHLD) 创建线程: c 阅读全文
posted @ 2020-11-30 18:29 如果的事 阅读(2250) 评论(0) 推荐(0) 编辑
摘要: InnoDB MVCC机制 undo log 与 redo log undo undo日志用于存放数据修改被修改前的值,假设修改 tba 表中 id=2的行数据,把Name='B' 修改为Name = 'B2' ,那么undo日志就会用来存放Name='B'的记录,如果这个修改出现异常,可以使用un 阅读全文
posted @ 2020-11-25 19:52 如果的事 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 协程同步 Mutex Go语言包中的sync包提供了两种锁类型:sync.Mutex和sync.RWMutex,前者是互斥锁,后者是读写锁。 使用锁的经典模式: var lck sync.Mutex func foo() { lck.Lock() defer lck.Unlock() // ... 阅读全文
posted @ 2020-10-13 17:07 如果的事 阅读(805) 评论(0) 推荐(0) 编辑
摘要: Mysql 中的事务与锁 InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。 事务 事务是由一组SQL语句组成的逻辑处理单元,事务具有如下4个属性,通常称为事务的ACID属性: 原子性(Actomicity),事务是一个原子操作单元,其对数据的修改 阅读全文
posted @ 2020-09-23 12:18 如果的事 阅读(3861) 评论(0) 推荐(0) 编辑
摘要: QUIC协议 QUIC(Quick UDP Internet Connections)是Google设计的一套可靠UDP传输协议,旨在为HTTP提供一个安全、可靠、高效和低延时的通信基础。QUIC协议已被IETF采纳为标准,并且HTTP/3已选择使用QUIC来代替TCP作为其传输层协议。 公式: T 阅读全文
posted @ 2020-09-16 15:55 如果的事 阅读(3720) 评论(0) 推荐(2) 编辑
摘要: 内存屏障 首先需要明确的是,程序在运行起来,内存访问的顺序和程序员编写的顺序不一定一致,编译器和CPU都可能对代码优化导致乱序执行。 编译器乱序 编译器会做非常多的优化,指令重排序是其中一种,如下例 int a, b; void foo(void) { a = b + 1; b = 0; } 执行编 阅读全文
posted @ 2020-09-04 17:12 如果的事 阅读(4673) 评论(2) 推荐(2) 编辑
摘要: 问题 以下多线程对int型变量x的操作,哪几个需要进行同步:( ABC )A. x=y; B. x++; C. ++x; D. x=1; 引子 先看多线程同步的一个例子,如下面的代码,并发开3个线程,每个线程各自对同一个计数器自增100万次,预期结果应为300万。 【例子一】test.c #incl 阅读全文
posted @ 2020-08-31 18:36 如果的事 阅读(1126) 评论(0) 推荐(0) 编辑
摘要: CPU缓存 缓存原理 首先,我们都知道现在的CPU多核技术,都会有几级缓存,老的CPU会有两级内存(L1和L2),新的CPU会有三级内存(L1,L2,L3 ),如下图所示: 其中: L1缓分成两种,一种是指令缓存,一种是数据缓存;L2缓存和L3缓存不分指令和数据。 L1和L2缓存在每一个CPU核中, 阅读全文
posted @ 2020-08-31 18:32 如果的事 阅读(1580) 评论(0) 推荐(0) 编辑
摘要: 线程 Java多线程,皆始于Thread。Thread是多线程的根,每一个线程的开启都始于Thread的start()方法。 Runnable 看一个例子: Thread thread = new Thread(new Runnable() { @Override public void run() 阅读全文
posted @ 2020-06-24 19:56 如果的事 阅读(459) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 18 下一页