摘要: 本文讲的是计算机学生怎么自学专业课,说长点就是该如何借助网络上已有的高质量学习资源(主要是公开课)来系统性的来点亮自己的CS技能树。这篇文章完全就是一篇自学性质的指南,需要对编程充满热情,起码觉得编程是件乐事。兴趣是大前提,后面讲解的很多知识都是比较“硬核”的,保持热情才能啃下去。 写作背景 下面是 阅读全文
posted @ 2022-04-30 20:55 康宇PL 阅读(4696) 评论(6) 推荐(15) 编辑
摘要: 本文为上海交大 ipads 研究所陈海波老师等人所著的《现代操作系统:原理与实现》的课程实验(LAB)的学习笔记的第四篇:多核处理。所有章节的笔记可在此处查看:chcore | 康宇PL's Blog 踩坑总结 本着早看见少踩坑的原则,我先说一些在实践中总结的一点玄学经验,如果你能搞清楚这种现象的真 阅读全文
posted @ 2021-06-24 23:55 康宇PL 阅读(3325) 评论(6) 推荐(2) 编辑
摘要: 本文为上海交大 ipads 研究所陈海波老师等人所著的《现代操作系统:原理与实现》的课程实验(LAB)的学习笔记的第三篇:用户进程与异常处理。所有章节的笔记可在此处查看:chcore | 康宇PL's Blog 实现用户进程 进程结构 ChCore 中每个进程都对应一个 process 结构体。sl 阅读全文
posted @ 2021-06-10 16:45 康宇PL 阅读(3685) 评论(2) 推荐(1) 编辑
摘要: 本文为上海交大 ipads 研究所陈海波老师等人所著的《现代操作系统:原理与实现》的课程实验(LAB)的学习笔记的第二篇。所有章节的笔记可在此处查看:chcore | 康宇PL's Blog 实验准备 首先一句 git merge lab2 把 Lab 2 分支合并到当前分支下。 这章中为了方便调试 阅读全文
posted @ 2021-05-24 21:03 康宇PL 阅读(6093) 评论(6) 推荐(3) 编辑
摘要: 本文为上海交大 ipads 研究所陈海波老师等人所著的《现代操作系统:原理与实现》的课程实验(LAB)的学习笔记的第一篇。 书籍官网:现代操作系统:原理与实现,里面有实验的参考指南和代码仓库链接。 课程视频与 PPT:SE315 / 2020 / Welcome。建议做实验前至少把每个 LAB 对应 阅读全文
posted @ 2021-05-20 23:04 康宇PL 阅读(11190) 评论(7) 推荐(8) 编辑
摘要: shlab这节是要求写个支持任务(job)功能的简易shell,主要考察了linux信号机制的相关内容。难度上如果熟读了《CSAPP》的“异常控制流”一章,应该是可以不算困难的写出来。但如果读书不仔细,或者实践的时候忘记了部分细节,那就可能完全不知道怎么下手,或者得改bug改到吐了。我自己写了大概八 阅读全文
posted @ 2020-10-07 16:39 康宇PL 阅读(1930) 评论(0) 推荐(1) 编辑
摘要: 本文为我的斯坦福计算机网络课的编程实验(Lab Assignments)的学习总结。课程全称:CS 144: Introduction to Computer Networking。 事情发生于我读了半本《计算机网络:自顶向下方法》后,想要找点练手的东西,碰巧在知乎上看到了这个推荐帖:CS144: 阅读全文
posted @ 2020-09-15 12:44 康宇PL 阅读(38491) 评论(67) 推荐(12) 编辑
摘要: cachelab这节先让你实现个高速缓存模拟器,再在此基础上对矩阵转置函数进行优化,降低高速缓存不命中次数。我的感受如上一节,实在是不想研究这些犄角旮旯的优化策略了。 前期准备 我实验的时候用到了valgrind和python,都可以用apt-get大法直接安装 Prat A: 高速缓存模拟器 C语 阅读全文
posted @ 2020-07-07 22:21 康宇PL 阅读(1447) 评论(0) 推荐(0) 编辑
摘要: perflab这节的任务是利用书中知识,来对图像处理中的Rotate和Smooth操作函数进行优化。这次没对上电波,觉得学了一堆屠龙之技。于我个人理解,现在计算机配置比以前高多了,连SWAP分区都几近废弃了,对于一般开发者来讲,代码效率瓶颈首先是架构,其次是算法,最后才是书里教的这些小细节。而且这节 阅读全文
posted @ 2020-07-06 22:41 康宇PL 阅读(1533) 评论(0) 推荐(0) 编辑
摘要: archlab属于第四章的内容。这章讲了处理器体系结构,就CPU是怎样构成的.看到时候跃跃欲试,以为最后实验是真要去造个CPU,配套资料也是一如既往的豪华,合计四十多页的参考手册,一大包的源码和测试程序.意料之外是具体考你的不是"炼丹"(指沙土炼硅造芯),而是处理器级别的优化,要把处理器的性能榨干才 阅读全文
posted @ 2020-06-26 23:33 康宇PL 阅读(1761) 评论(1) 推荐(1) 编辑
摘要: attacklab这节玩的是利用一个字符串进行缓冲区溢出漏洞攻击,就小时候想象中黑客干的事儿. 做题的时候好几次感叹这些人的脑洞,"这都可以攻击?还能这么注入?这还可能借力打力?"等自己注入的时候却是"啊?怎么又段错误了?怎么又算错地址了?"也是一次有趣的经历了. 小插曲:我拿到文件的时候直接去读得 阅读全文
posted @ 2020-06-06 22:58 康宇PL 阅读(939) 评论(0) 推荐(0) 编辑
摘要: bomblab这节搞的是二进制拆弹,可以通俗理解为利用反汇编知识找出程序的六个解锁密码. 早就听闻BOMBLAB的大名,再加上我一直觉得反汇编是个很艰难的工作,开工前我做好了打BOSS心理准备.实际上手后发现比想象的要简单. 我觉得这多亏了作者没有搞代码优化,让我能比较轻易的还原出源代码,甚至一眼看 阅读全文
posted @ 2020-06-05 22:16 康宇PL 阅读(1275) 评论(0) 推荐(1) 编辑
摘要: 前天讲到要刚CSAPP,这一刚就是两天半.CSAPP果然够爽,自带完整的说明文档,评判程序,辅助程序.样例直接百万组走起,管饱! datalab讲的是整数和浮点数怎么用二进制表示的,考验的是用基本只用位运算来实现一些看似稀松平常的操作.实际体会就是看题五秒钟,脱发两小时.当然做出来的成就感也是爆棚的 阅读全文
posted @ 2020-05-31 23:41 康宇PL 阅读(744) 评论(3) 推荐(1) 编辑
摘要: 最后一战果然过瘾.代码量够多,新机制够复杂度,都管饱.做这一课就像从高山上往下走,坡急且路险,还不知自己的方位,琢磨不透系统的架构.待到下了山,回头一看豁然开朗,原来方才自己所下的山是这般模样.在这里面最重要的道具就是gdb的调用栈查看器了,没了它我肯定得迷失在深山里. 阅读全文
posted @ 2020-05-29 14:36 康宇PL 阅读(564) 评论(0) 推荐(0) 编辑
摘要: 管程的设计实在是精妙,初看的时候觉得非常奇怪,这混乱的进程切换怎么能保证同一时刻只有一个进程访问管程?理清之后大为赞叹,函数中途把前一个进程唤醒后立刻把自己挂起,完美切换.后一个进程又在巧妙的时机将自己唤醒,同时让后一个挂起.看似松散的跳转背后竟然是无比严丝合缝的逻辑,真的就滴水不漏. 阅读全文
posted @ 2020-05-11 17:17 康宇PL 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 这节虽叫调度管理机制,整篇下来主要就讲了几个调度算法.兴许是考虑到LAB5难,LAB6就仁慈了一把,难度大跳水.平常讲两节原理做一个实验,这次就上了一节原理.权当大战后的小憩吧. 阅读全文
posted @ 2020-05-07 21:54 康宇PL 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 近几日睡眠质量不佳,脑袋一困就没法干活,今天总算时补完了.LAB5难度比LAB4要高,想要理解所有细节时比较困难.但毕竟咱不是要真去写一个OS,所以一些个实现细节就当成黑箱略过了. 阅读全文
posted @ 2020-05-01 13:32 康宇PL 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 越学越简单,真是越学越简单啊 看视频的时候着实被那复杂的函数调用图吓到了.看代码的时候发现条理还是很清晰的,远没有没想象的那么复杂. 这节创建了俩内核线程,然后运行第一个线程,再由第一个切换到第二个. kern_init: 在vmm_init后加了一个proc_init 在最末位加了个cpu_ide 阅读全文
posted @ 2020-04-27 21:18 康宇PL 阅读(302) 评论(0) 推荐(0) 编辑
摘要: 这次搬迁到了博客园,数来是第三次搬迁博客了,做个简要回顾 阅读全文
posted @ 2020-04-22 17:29 康宇PL 阅读(549) 评论(0) 推荐(2) 编辑
摘要: 做个总结,这节说是讲虚拟内存管理,大部分的时间都在搞SWAP机制和服务于此机制的一些个算法.难度又降了一截. 不过现在我的电脑都16G内存了,能用完一半的情景都极少见了,可能到用到退休都不见得用的上SWAP机制了.在这种情况下SWAP分区也就象征性的分个几百兆了. 阅读全文
posted @ 2020-04-21 14:30 康宇PL 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 总的来讲把的LAB1代码逻辑理顺后再往后学就轻松了一大截.LAB2过遍课程视频,再多翻翻实验指导书基本上就没遇到啥大坎儿. 阅读全文
posted @ 2020-04-16 22:18 康宇PL 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 开头赞美THU给我们提供了这么棒的资源.难是真的难,好也是真的好.这种广查资料,反复推敲,反复思考从通电后第一条代码搞起来理顺一个操作系统源码的感觉是真的爽. 阅读全文
posted @ 2020-04-14 21:43 康宇PL 阅读(969) 评论(0) 推荐(1) 编辑
摘要: 背景: 操作系统课需要在Linux环境下进行编程。本来是给了个傻瓜式的Ubuntu虚拟机镜像,但奈何虚拟机这东西我这老本子跑起来巨卡,装双系统又卡,只能选择把系统装进便携设备里了。 前期准备: 一个25G以上的移动硬盘或U盘 VMware 15或更高版本(百度一搜一大把) ISO格式的Ubuntu镜 阅读全文
posted @ 2020-04-07 22:29 康宇PL 阅读(1607) 评论(0) 推荐(0) 编辑
摘要: 背景: 我妈的手机饱受系统应用广告推送之苦,每天都能在通知栏里收到好几条广告。为了给她个清净,本篇博文应运而生。 目标: 卸载安卓系统应用 所用工具: 硬件:我妈的手机(魅蓝5) PC端:Minimal ADB and Fastboot 1.4.3 Android端:ES文件浏览器 操作流程: 0. 阅读全文
posted @ 2020-01-17 11:42 康宇PL 阅读(2791) 评论(0) 推荐(0) 编辑
摘要: 我算是个比较爱打单机游戏的人,同时也是个半吊子的编程爱好者,有的时候会去干一些修改存档的事儿。不过这篇博文不讲存档修改技术,只讲第一步:去哪找存档? 目标:在windows10系统下搜索到游戏的存档路径 实现原理: 几乎所有的游戏在创建新存档的时候都会产生一个新的存档文件,而windows系统会记录 阅读全文
posted @ 2020-01-09 20:59 康宇PL 阅读(1894) 评论(0) 推荐(0) 编辑
摘要: 问题引出: 在尝试实现《Qt5.9 c++开发指南》混合UI编程章节时,用纯代码形式实现了个小按钮,然后加了个对应的槽函数,运行时就提示了这个信息。 原因探究: 首先查阅官方手册中的说明: [static] void QMetaObject::connectSlotsByName(QObject * 阅读全文
posted @ 2020-01-02 15:25 康宇PL 阅读(798) 评论(0) 推荐(0) 编辑
摘要: 首先展示下最终效果: 右击单个文件: 右击文件夹: 操作流程: 1.右击VScode快捷方式查看属性,找到快捷方式对应的目标路径 2.随便找个地方新建个XXX.reg的注册表脚本文件,文件名叫啥都可以,但后缀名必须为.reg,然后在里面粘贴上下面的代码 Windows Registry Editor 阅读全文
posted @ 2020-01-01 14:08 康宇PL 阅读(822) 评论(0) 推荐(0) 编辑
摘要: 又到了新一年的带团季了,今年准备用电脑来存放各种资料,自然也是需要一个简单的骰子工具了,反正也不复杂,就自己写了个,放着做个备份吧 主要功能是计算x1dy1+/-x2dy2+/-.....+/-const这种表达式 #include <iostream> #include <string> #inc 阅读全文
posted @ 2019-10-30 22:24 康宇PL 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 记录区域赛名额分配所引发的小争端,直接原因是人与人间的误解,根本原因是菜,打不出足够的名额。 阅读全文
posted @ 2019-09-11 15:07 康宇PL 阅读(394) 评论(0) 推荐(2) 编辑
摘要: 先说结论:不开编译器优化的前提下,三变量交换法效率最高;开了优化后没区别。 起因: 学了点汇编的皮毛,想看看两变量交换的底层到底是怎么实现的。 主体代码: //三变量交换法 int t = a; a = b; b = t; //两减一加法 a = a + b; b = a - b; a = a - 阅读全文
posted @ 2019-08-18 20:26 康宇PL 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 本文面向有志于参加Nethack六月衍生大赛,且具有一定英文水平的玩家。 首先,在Junethack服务器页面挑一个在线服务器的网站,个人推荐 hardfought.org,因为访问速度较快。 然后,启动命令提示符(在桌面上按win+R键,输入cmd,按回车),输入ssh nethack@hardf 阅读全文
posted @ 2019-08-18 20:24 康宇PL 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 实验方式:尝试以不同方式创建超大号二维数组 测试代码: #include <iostream> using namespace std; const int maxn=1000000; class C{ int arr[maxn]; }; //int a[maxn]; 全局大数组 //C a; 含大 阅读全文
posted @ 2019-08-18 20:23 康宇PL 阅读(550) 评论(0) 推荐(1) 编辑
摘要: 起因: C++实现矩阵类和向量类 当看了我实现的矩阵类后,一个同学问我: 然后我就试了试1000维,结果运行时在cygwin.S里引发了奇奇怪怪的Segmentation fault,而且这个文件还是一片空白,压根就没有代码 后来一番研究,爬完google又爬github,最终确定是爆栈了。 C++ 阅读全文
posted @ 2019-08-18 20:22 康宇PL 阅读(388) 评论(0) 推荐(0) 编辑
摘要: C++期末作业内容,写完之后觉得过于臃肿,又重新搞了个新的。新的当作业交,旧的拿来给同学参考。 【问题描述】请仿照复数类,设计一个矩阵类,设计矩阵类的构成元素 1.编写构造函数完成初始化 2.编写成员函数,读入一个矩阵,输出一个矩阵 3.编写成员函数,计算两个矩阵相加、相减、点乘 4.编写成员函数, 阅读全文
posted @ 2019-08-18 20:21 康宇PL 阅读(643) 评论(0) 推荐(0) 编辑
摘要: 如图,我们老师搞的这个评测系统它不支持C11。但分析错误信息可知GCC本身版本是支持C11的,只不过没开开。平时的时候我们可以对“g++”后使用“-std=c11”来指定编译标准,所以我就想这个应该可以通过预编译指令给编译器传上一个参数的方式来让编译器以C11标准编译。 之后就是疯狂的百度了,找出的 阅读全文
posted @ 2019-08-18 20:20 康宇PL 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 上了大学后才发现的有趣现象,前辈管后辈叫小孩儿,小朋友。我不大喜欢被前辈叫小孩儿,也不喜欢叫自己的后辈小孩儿 在我心里,未进社会的学生们都是孩子。 没上大学前觉得大学生都是成年人了,处事风度啊,思考方式啊应该是接近社会人了。上了之后发现我想多了,大部分的大学生给人的感觉就是“沙雕网友”。天天打游戏, 阅读全文
posted @ 2019-06-23 15:05 康宇PL 阅读(607) 评论(0) 推荐(0) 编辑
摘要: 这一周是难度飞升的一周,也是暴露出我短处的一周,同时也让我吃到了数分挂科的苦头。 是时候后该剖析一下自我了。 阅读全文
posted @ 2019-04-23 15:03 康宇PL 阅读(429) 评论(0) 推荐(1) 编辑
摘要: 因为讲课需要,这一周先跳到数论这一章进行学习。 数论使我意识到数学分析真的是有用处的。 阅读全文
posted @ 2019-04-23 15:02 康宇PL 阅读(479) 评论(0) 推荐(0) 编辑
摘要: 这篇文章取自我高一时候写的第一篇日记。当时的我家里没有电脑,但我早已坚定了要当程序员的信念。现在搬上来忆苦思甜,自我勉励。没有干劲的时候就想想当年,从别人家下完java教学视频再插到自己家电视上看,每天午休猛啃《java从入门到精通》,平日里的代码都写在草稿纸上,利用每周仅45分钟的信息课来艰难的调 阅读全文
posted @ 2019-04-23 15:01 康宇PL 阅读(1292) 评论(2) 推荐(2) 编辑