自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 Leetcode周赛踩坑总结

每次竞赛总会找到一些细小的,以前没见过的错误,或者想到一些还不错的解法,于是通通记录在这。毕竟有的错会导致WA,相当于直接多做了5分钟,还是很不划算的。

2023-06-11 18:27:06 83

原创 手写线程池

call_once实属神器,让我们可以简单放心的写出单例模式这里我一开始没有在析构的时候notify_all导致线程无法正常退出我们使用充分利用 CPU 的所有核。测了一下我的笔记本,一共可用16个核。在虚拟机上运行出的结果则正好是我分配给虚拟机的核的数量。C++在不断的进步。曾几何时,使用 C 的并发原语让我感觉无比痛苦。而现在,借助C++的API,只需不到100行就可以轻松写出一个正常工作的线程池,这实在令人兴奋不已!

2023-05-15 22:59:19 107

原创 《C++ Concurrency In Action》Chapter4学习笔记

完成到 packaged_task,这一章是大头,内容很多,hhh。越学越觉得书上例子很丰富,基本上跟着理解就能掌握好知识点。果然看书是进步最快的方法呀。线程往往需要等待某一事件的发生再行动。如需要等待数据准备好再进行打印。在 c 中使用信号量或条件变量可以达到这一目的。C++则提供了条件变量与等技术工具帮助我们简化操作。

2023-05-14 23:31:24 139

原创 CMU15445 (Spring 2023) #Project1 优化

基于这篇文章的总结部分,在写的时候就能感觉到很多地方需要优化,且最终实现起来难度并不高,但效果是显著的。测试文件为 阅读测试文件的常量:不难看出总共生成 6400 页,8个 scan 线程顺序进行再,8个 get 线程按 zipfian 分布 进行再。最终评测成绩按以下公式计算:其中 1ms 表示延时 1ms 再操作从公式可以看出,我们希望 get 能最快优化1按照课程的提示替换策略认为短时间内访问次数多的页有更高的优先级。对于为什么要更改替换策略,我主要想了以下两个原因:最终经过不断实验

2023-05-14 00:03:06 938 1

原创 《C++ Concurrency In Action》Chapter3学习笔记

综上,如果代码同时获取多个锁,使用上面的方法不会死锁。但如果获取锁的时间线不一样,仍有可能发生死锁。即准则2的具象化,我们对每个互斥赋予等级。如果线程已经对低层级的线程加锁,则不允许其再对高层级的线程加锁。然而有的情况只能由我们自己解决,如:如果向锁作用域外传递保护共享对象,则互斥就失去了作用。unique_lock 可以随时上锁再解锁,更加灵活,可以用于减小锁的粒度,然而其比。(因为其要保留一个内部标志,表示当前锁的状态,用于正确地析构)假如多个锁是必要的,我们需要保证按序加锁。的特性,允许我们这样写。

2023-05-09 23:13:41 328

原创 《C++ Concurrency In Action》Chapter2学习笔记

学完这一章简单的操作都掌握了,我们可以编写简单的资源管理类来保证线程正常完成。我们完全不能保证线程的顺序,这也导致考虑锁的时候将会很头大,hhh,不过这是后话了。

2023-05-08 23:33:43 105

原创 简单滑动窗口

今天重新做了几道滑动窗口的题,被各种细节折磨。滑动窗口本身的思想非常简单,可一写起来对细节要求非常高,边界少加1 或 窗口长度计算错误等等,故写篇文章总结一下模板和思路。

2023-05-08 21:24:07 55

原创 简单并查集

很久之前学了并查集,今天又忘了,写点东西方便日后回忆。

2023-05-07 22:46:57 55

原创 最短路问题合集

图–最短路径(四种算法详解)最短路问题 Bellman-Ford(单源最短路径

2023-05-06 00:02:52 249

原创 CMU15445 (Spring 2023) #Project1

最近一直在补算法,今天抽出一点时间完成了 Project1 的第一部分即LRU-K置换,看上去并不难,但做的过程却还是挺曲折的,令人唏嘘。

2023-05-05 01:26:19 1547 3

原创 手写 shared_ptr

手写一个 shared_ptr。

2023-05-02 01:09:02 240 1

原创 操作系统导论 学习笔记

进程调度做这么一件事:在就绪队列中选择一个进程执行之。内容了解即可FIFO。

2023-05-01 00:39:40 84

原创 排序性能大测试,最终赢家,青铜说是插入排序,钻石说是归并排序,王者竟然说是它!!

哎现在上课根本不想听,疯狂翘课学编程,课上的东西真无聊。于是今天再一次学习了几种排序方法。插入排序,堆排序,归并排序,快速排序等等突发奇想写一个测试程序把它们放上来比较一下实验出真知,都是Onlog2nO(nlog_2n)Onlog2​n的算法。快速排序却几乎碾压式的获胜,可见其威力。另一方面,归并排序作为稳定算法,亦能取得如此不错的成绩,也很牛。堆排序并不推荐,除非一堆数里我们只想取一个最小值,但那样就不是排序了。。。

2023-04-26 22:24:52 68 1

原创 Effective Modern C++ 学习笔记

记录下阅读此书的感想与总结,一方面能巩固复习,另一方面也能更好地浓缩本书的精华,方便日后的回看。

2023-04-24 17:35:51 271 2

原创 CMU15445 (Spring 2023) #Project0

写这篇文章,初衷是因为网上完全没有关于CMU15445-2023的博客文章。记录下我在做的过程中走过的弯路,一方面是对自己工作的一个总结,另一方面也能帮助到在做这门课的 #project 时踩坑而无从下手的同学,何乐而不为?期中考试期间断断续续写完这个 project 感觉收获不少,尤其是智能指针,总的来说体验还是不错滴!附上评测一起加油!遇到bug的 直接评论区问 我看到都会尝试解答。

2023-04-23 19:51:38 4271 21

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除