摘要: 三人行必有我师焉,择其善者而从之,其不善者而改之。 入则无法家拂士,出则无敌国外患者,国恒亡,然后知生于忧患而死于安乐也。 狡兔死走狗烹,飞鸟尽良弓藏,敌国尽谋臣亡 今齐地方千里,百二十城,宫妇左右莫不私王,朝廷之臣莫不畏王,四境之内莫不有求于王,由此观之,王之蔽甚矣。 君与家君期日中,日中不至则是 阅读全文
posted @ 2019-05-07 12:12 楓羽 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 算法导论 深度探索C++对象模型 Windows程序设计 跟我一起写Makefile Python 算法竞赛进阶指南 C陷阱与缺陷 C++并发编程实战 设计模式 Radis设计与实现 小技巧 代码小记 缩略词表 阅读全文
posted @ 2019-03-04 22:39 楓羽 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 更改 /etc/default下的grub文件中的 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"为 GRUB_CMDLINE_LINUX_DEFAULT="ro splash vt.handoff=7 acpi_backlight=vendor" 阅读全文
posted @ 2020-05-02 15:35 楓羽 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 7.1 定义和结果 使用互斥元、条件变量以及future来同步数据的算法和数据结构被称为阻塞的算法和数据结构。 不使用阻塞库函数的数据结构和算法被称为非阻塞,但并非所有的这些数据结构都是无锁的。 7.1.1 非阻塞数据结构的类型 可以使用std::atomic_flag作为自旋锁的基本互斥元 cla 阅读全文
posted @ 2020-01-06 20:02 楓羽 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 6.1 为并发设计的含义是什么 为并发设计数据结构是为了多个线程可以同时更好的使用此结构 设计并发数据结构的准则是什么 保证党数据结构不变性被别的线程破坏时的状态不被任何别的线程看到。——意味着当要在并发中修改此结构中的部分数据时(即数据结构的不变性被破坏),应当通过添加互斥元的方法阻止其他访问该数 阅读全文
posted @ 2020-01-04 14:42 楓羽 阅读(330) 评论(0) 推荐(0) 编辑
摘要: 具有线性“阶段”划分的动态规划算法被称为线性DP。常见的有最长上升子序列(LIS),最长公共子序列(LCS),数字三角形等。 相关练习: 1. Mr. Young's Picture Permutations(POJ2279) 2.LCIS(最长公共上升子序列) #include<iostream> 阅读全文
posted @ 2020-01-02 18:28 楓羽 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 5.1 内存模型基础 5.1.1 对象和内存位置 C++程序中所有的数据均是由对象组成的,但是其中有一些不能够派生的类,这些数据在内存中有着严格的放置顺序,这样才保证了开发的正确性,在一个复合结构中我们可以得到: 1.每个变量都是一个对象,包括其他对象的成员 2.每个对象占据至少一个内存位置 3.如 阅读全文
posted @ 2019-12-28 17:04 楓羽 阅读(567) 评论(0) 推荐(0) 编辑
摘要: 4.1 等待事件或其他条件 我们在配合做事情的时候,总是应该在前提条件完成的情况下,才会开始进行下一步操作,所以,我们可以选择以下几种方式: 1.实时查看前提条件的完成情况。这样可以及时的进行下一步任务,但是,这样的操作是一件十分浪费时间的事情,在这期间本来还可以做其他事情,现在由于实时关注前提条件 阅读全文
posted @ 2019-12-27 20:33 楓羽 阅读(428) 评论(0) 推荐(0) 编辑
摘要: 3.1 线程之间共享数据的问题 线程之间数据共享问题,都是修改数据所导致的。在编写多线程的程序时,我们应该明确一个名词——“不变量”(不变量就是一定为真的的东西。比如文中举例的,队列头一定指向队首元素或者为空。它不可能指向队列中间的某个元素。数据元素包含的指针一定指向队列中的下个元素,或者为空,而不 阅读全文
posted @ 2019-12-23 19:06 楓羽 阅读(541) 评论(0) 推荐(0) 编辑
摘要: 2.1 基本线程管理 1. 不等待线程完成的启动方式 #include<iostream> #include<thread> #include<cstring> using namespace std; void print(){ cout << "hello world" << endl; } i 阅读全文
posted @ 2019-12-21 16:03 楓羽 阅读(432) 评论(0) 推荐(0) 编辑
摘要: #include<iostream> #include<thread> void print(){ std::cout << "hello world" << std::endl; } int main(){ std::thread t(print); t.join(); return 0; } 阅读全文
posted @ 2019-12-20 20:41 楓羽 阅读(453) 评论(0) 推荐(0) 编辑
摘要: 缩略词表 第1章 你好,C++并发世界 第2章 管理线程 第3章 在线程间数据共享 第4章 同步并发操作 第5章 C++内存模型和原子类型操作 第6章 设计基于锁的并发数据结构 第7章 设计无锁的并发数据结构 第8章 设计并发代码 第9章 高级线程管理 第10章 多线程应用的测试与调试 附录A C+ 阅读全文
posted @ 2019-12-20 20:34 楓羽 阅读(1214) 评论(0) 推荐(0) 编辑