WayneZ's World

23

23岁了,写点什么记录一下。其实这个博客建立之初就是想要主要用来记录生活的,可惜我每天的生活太单调乏味,实在没什么值得记录的东西,所以就偶尔写写笔记,结果还留了很多坑没有填完(笑。以后我会尽量多记录一些生活中有意思的东西。  小时候总希望快快长大,每次过生都会很开心,不仅因为可以收到很多祝福和礼物,还因为觉得自己又长大一岁,离大人又近了一点。大概是从上了大学后,过生却开始会有一种无形的紧迫感。生日仿佛成了一个定时闹钟在提醒着你,你已经2X岁啦,有想好你的未来了吗?成长好像是一瞬间的事情,过了18岁,你就突然变成了成年人;过了20岁,你就突然变成了要奔三的人。原来的任务只有做题和好好学习,现在却得自己寻找专业方向,工作和家庭也隐隐约约成了我会认真去思考的东西,可不幸的是,我对这些全都没有准备好。  也是从大学开始,每次生日的时候也会趁着一年的结束,思考一下过去的这一年里我有没有什么收获。收获是一定要有的,但光有收获还不够,得到收获的速度还得超过平均值才行,这样才能说明在这一年里我有主动地去努力过。幸运的是,我对我上一年的收获还挺满意的。过去的一年中,我的主要收获就是实习、申请还有学习。  我在实习的时候认识了一些厉害的人,遇到了很好的老板,得到了非常多的帮助。虽然还有很长的跑要走,但很多东西对我来说是从0到1的一个过程,让我知道了未来需要努力的大概的方向,很感谢大家对菜鸡如我的包容和帮助。年初的时候为了防止美国今年也去不了的情况,我还申请了新加坡和欧洲的master,最终在美国签证已经开放的前提下还是选择了新加坡。今年也是我研究生的起点,现在一学期结束了,我可以说我一点也不后悔当初的决定,至少目前来看,我很喜欢在这里的学习,也很喜欢目前的状态。  过去的这一学期自我感觉还是挺满意的,除了课上的东西,我还在学习可能会对我以后的研究、工作有帮助的一些东西。有时候感觉这好像是我最后能够用完整的时候来学习的机会了,所以会格外珍惜,不想浪费掉现在宝贵的机会,努力提升专业水平。经历了去年的申请和今年的实习后,我意识到了专业能力永远是最重要的,脑袋里没有足够的专业知识是很可怕的事情。很遗憾,我本科的时候并没有认识到这一点。有时候会感觉,我现在是在弥补我的本科,而不是在做研究生的事情,偶尔这样想也会让我焦虑,但和去年申请时候的焦虑不一样的是,我知道我现在正在前进,而不是原地不动当一只焦虑的鸵鸟,希望现在也不算太晚。  去年也认识了很多很有趣很厉害的人,不管是在我的专业上,还是在我的一些兴趣爱好上,总有人是我的榜样,是我努力的方向,也总有我的好朋友一直愿意听我的各种废话(比如这篇博客)。谢谢所有陪伴在我身边的人!  尽管成长让人头疼,尽管我还是没有想好以后具体的方向,但至少我在主动去探索和学习了,我对过去的一年很满意,希望在明年生日的时候,我能对我自己更加满意。去年经历了一些痛苦的住院后,我也逐渐认识到身体健康的重要性,特别是在这人生地不熟的地方,只有自己可以照顾自己。希望明年的我也能规律作息,好好锻炼身体。要是一定只能选一个愿望的话,那就祝我和家人朋友们身体健康,永远快乐!

进程与线程 - 操作系统笔记

进程 进程的三种状态 运行态:该时刻进行实际占用CPU; 就绪态:可运行,但因为其他进程正在运行而暂停止; 阻塞态:除非某种外部事件发生,否则进行不能运行。 线程 每个进程中的内容 每个线程中的内容 地址空间 程序计数器 全局变量 寄存器 打开文件 堆栈 子进程 状态 即将发生的定时器 信号与信号处理程序 账户信息 每个线程有自己的堆栈。 线程无法利用时钟中断强制线程让出CPU。 进程间通信 进程间通信需要解决三个问题: 一个进程如何把信息传递给另一个; 确保两个或更多的进行在关键活动中不会出现交叉; 正确的顺序。 线程间通信不需要考虑问题1,因为他们共享内存;但2和3对线程同样适用。 竞争条件:两个或多个进行读写某些共享数据,最后的结果取决于进程运行的精确时序。 互斥:阻止多个进程同时读写共享的数据。 临界区:对共享内存进行访问的程序片段。 忙等待:在单CPU情况下,一个进程进入临界区之后,其他进程因无法满足竞争条件而循环探测竞争条件。其缺点是,在单CPU情况下,等待进程循环探测竞争条件,浪费了时间片。只有在有理由认为等待时间是非常短的情形下,才应使用忙等待。用于忙等待在锁,称为自旋锁。 Peterson算法 (P70) turn 表示现在轮到哪个进程;interested[N] 表示谁对临界区感兴趣。在进入临界区前执行 1 while (turn == process && interested[other] == TRUE); Peterson算法会导致忙等待。

常用算法笔记

回溯 思想 回溯就是使用暴力搜索,利用递归和for循环返回所有满足需求的答案,可以用于解决组合、切割、子集、排列、N皇后等问题。回溯发生在递归时,处理完一种情况后需要在答案中撤销当前情况,便于加入以后的数据得到新的答案。 模板 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class backtracking { private: 全局变量 ans 用于保存满足要求的答案 public: // 递归调用该函数进行暴力搜索并进行回溯操作 void dfs(参数) { if (终止条件) { 收集结果到ans中保存 return; } for (集合元素) { 处理结点 递归调用dfs() *回溯操作* } return; } }; 例题 93. 复原 IP 地址 306. 累加数 二分查找 二分搜索高效的本质在于每次排除可能的空间比顺序遍历更大。在一个有序排列中,首先应想到用二分查找。 标准二分查找模板 左闭右闭 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class BinarySearch { public: int search(vector<int>& nums, int target) { int left = 0; int right = nums.

Prioritized Experience Replay (DQN) - 强化学习笔记

arXiv原文:https://arxiv.org/abs/1511.05952

最近为了做课程项目看了几篇DQN相关的论文,主要都是基于DQN做一些优化的,Prioritized Experience Replay (PER) 就是其中之一。PER是针对经验回放池 (Experience Replay, EP) 做的优化,思路也很简单:不同于DQN中的随机采样,而是按照经验的重要性进行采样,越是重要的样本被采样的概率就越高,从而充分利用样本的信息,加快网络的训练过程。