- 博客(13)
- 收藏
- 关注
原创 解决电商系统中MySQL死锁
在REPEATABLE READ隔离级别下,事务A的INSERT操作会隐式加间隙锁,事务B的UPDATE可能被阻塞。同时强调预防死锁的最佳实践,如保持事务简短、按顺序访问资源、合理设计索引等。解决问题的系统方法:复现问题、分析日志、定位原因、实施解决方案、验证效果。形成循环等待:A等B释放inventory,B等A释放orders。事务A先锁orders,再锁inventory。事务B先锁inventory,再锁orders。事务A和B以相反顺序竞争锁,形成循环依赖。,这样可能会形成循环等待,导致死锁。
2025-02-27 17:13:03
579
原创 MySQL的锁与隔离级别及其应用
共享锁和排他锁:控制并发读写的核心锁类型。行锁、间隙锁、Next-Key 锁:控制锁的粒度,影响并发性能和数据一致性。隔离级别:决定锁的使用方式和并发控制强度。READ UNCOMMITTED:几乎不加锁,性能高但一致性差。READ COMMITTED:使用行锁,避免脏读。REPEATABLE READ:使用行锁和间隙锁,避免不可重复读。SERIALIZABLE:使用表锁,完全隔离。通过合理选择隔离级别和锁机制,可以在保证数据一致性的同时,最大化并发性能。
2025-02-27 16:36:55
794
原创 共享内存&管道通信
空间换时间:通过共享物理内存页实现零拷贝分离数据通道与控制通道:数据通道是共享内存,控制通道需要独立同步机制直接内存访问:需要处理字节序、内存对齐等底层细节。
2025-02-26 12:46:14
1141
原创 ebpf的环形缓冲区&Perf事件缓冲区
1. 内核eBPF代码中定义两个map:perf_event_array和ringbuf_map。2. 在eBPF程序中,使用bpf_perf_event_output发送数据到perf_event_array。3. 同时使用bpf_ringbuf_output发送数据到ringbuf_map。4. 应用层代码中,设置perf事件缓冲区来接收perf_event_array的事件。5. 同时,使用ring_buffer API来读取ringbuf_map的数据。
2025-02-25 22:43:42
681
原创 C++手写线程池(执行不需要顺序的多任务)
将item用头插法加入任务队列list//考虑线程安全:原子操作 \if (list!= null) //排除刚开始一个节点都没有的情况 \//删除节点。
2024-10-15 21:06:46
305
原创 C++11线程池(c++常用特性)
通过C++11线程池掌握C++常用新特性1.腾讯面试:线程池引入无锁队列能否提升性能2.通过线程池组件掌握C++新特性3.C函数、C++类函数无缝扔给线程池处理4.如何实现多参数任务的支持5.如何等待任务执行返回结果。
2024-10-11 22:01:15
1134
原创 c++全栈学习(B站学习笔记,持续更新ing)
通过项目进行串联提高技术服务派生类代码处理事情方式,构建链表结构TCP,UDP(8个字节头,没有协议格式),httpps:epoll是文件系统,管理fd的一个组件1.网络与进程线程进程虚拟分布图(每一个进程都有)
2024-10-03 21:16:13
1316
原创 枚举类型介绍及使用
原因:避免了与整数或其他枚举值的隐式转换,同时改善了作用域。1.枚举值默认从0开始,也可以手动指定值。2.在底层为整数->可以与整数进行比较。
2024-09-29 09:35:32
327
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅