- 博客(7)
- 收藏
- 关注
原创 mysql 中 redolog 和 uno log
当你执行 UPDATE、INSERT 等语句时,InnoDB 先写 Redo Log(称为 预写日志,Write Ahead Logging,WAL 原则),然后才将数据页写入内存(Buffer Pool)。两者都是事务机制核心的一部分,Redolog 偏向恢复(恢复 commit 后的数据),Undo 偏向回滚(撤销未 commit 的更改)。Undo Log 是逻辑日志(记录的是“做了什么”),Redo Log 是物理日志(记录的是“页的哪个位置改了什么”)。
2025-07-14 20:16:15
500
原创 notify和wait
这点在一些设计上至关重要 —— 比如一个线程醒了,却迟迟拿不到锁,如果你的逻辑是有时效性的,就可能产生延迟或逻辑错误。A. wait() 中,正在挂起等待 notify 初始状态,线程在 condition variable 队列中。B. 被唤醒后,尝试重新加锁 notify_one/notify_all 起作用,或者虚假唤醒。被唤醒之后,如果没抢到锁,不会回去等 notify,而是阻塞在 mutex 上。一次 notify_one(),只唤醒一次,不负责“让你等到锁空”;
2025-06-17 16:46:39
409
原创 动态链接的详细过程
司机到了出发点(运行时),就开始在附近(LD_LIBRARY_PATH等路径)挨个找这位乘客,找到了,拉上车,就能正常上路;如果找到了正确的 libmylib.so,链接器就把它加载到内存中,把你的程序和库的符号(函数、变量)对接好。这个信息是写在程序内部的 ELF 文件格式里的(一个叫 NEEDED 的表)。它的任务是:在你运行的时候,去把缺的 .so 文件找回来,动态加载进来。运行时:操作系统(动态链接器)根据你的环境设置,去真正找到并加载它。👉 “我要链接叫 libmylib.so 的动态库”,
2025-04-28 16:39:24
1533
原创 线程同步与异步
在构造(或移动 move 赋值)时,unique_lock 对象需要传递一个 mutex 对象作为它的参数,新创建的 unique_lock 对象负责传入的 mutex 对象的上锁和解锁操作。其内部维护着一个计数器,当计数不为 0 时,所有参与者(线程)都将阻塞在等待操作处,计数为 0 时,解除阻塞。在需要加锁的地方,只需要任意实例化一个 lock_guard,调用构造函数成功上锁,出作用域时则 lock_guard 对象会被销毁,调用析构函数自动解锁可以有效避免死锁问题,但是提供的功能单一且不够灵活。
2023-06-29 17:33:19
1283
1
原创 《二刷|LeetCode 热题 100》49. 字母异位词分组
2.unordered_map 的使用自定义hash算法 第三个参数传function类型。1.高效的hash : res = res << 1 ^ item。
2023-05-26 21:54:52
94
1
原创 【c++笔记】构造函数不能设置为虚函数
但是创建对象的时候 对象本身还不存在 也就还没有前8个字节的虚函数指针 就没发调用虚函数。调用虚函数 必须要有对象 要有虚指针 也就是对象前8个字节 然后才能调用虚函数。只有对象创建成功之后,有虚函数指针了 才能调用虚函数。
2023-05-25 14:25:47
161
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅