2048 ✌️
今天是 2023 年 4 月 10 日,系统说我在 2017 年 08 月 31 日那天发布了第一篇博客(【算法】编写一个能将给定非负整数列表中的数字排列成最大数字的程序),距离当时已经有 2048 天了,2048 这个数字真的很能挑起程序员的神经,既然是纪念日,那就有必要小小的总结一下了。
我将首先介绍一下我的博客发展的几个阶段:1. 机缘;2. 井喷;3. 研究生。然后,我将谈谈我的收获。
文章目录
- 2048 ✌️
- 我的博客发展阶段
- 1. 机缘(2017.07~2018.12)-- 26篇
- 2. 井喷(2019.01~2020.09) -- 约339篇
- 2.1 软件工程大作业
- 2.2 Python 知识的总结
- 2.3 操作系统相关知识
- 3. 研究生(2020.09~至今)-- 约 279 篇
- 3.1 shell 以及 Linux 命令学习
- 3.2 Linux 内核以及虚拟化知识学习
- 3.3 项目相关
- 3.4 C/C++
- 3.5 Jailhouse 相关
- 收获
- 后记
我的博客发展阶段
1. 机缘(2017.07~2018.12)-- 26篇
我是在大二的时候(2017.07.17)申请的博客,申请的目的是为了记录平时学习所遇到的问题,并能够在学新知识的同时在博客上做笔记。我记得当时班里很少有人有自己的博客,或者有记录问题以及写文档的习惯,到了大三下学期的时候,班里同学才在专业课程的要求下,申请博客并提交作业(我记得当时还问过老师能不能不要局限在博客园等其它平台)。
其实博客刚开始申请下来后,自己并没有很上心地打理,不知道该写些什么内容,也不知道如何有体系地建立自己的笔记框架,与其不知道怎么做,还不如不做。所以,我就好久没有更新过。
在这个阶段,主要围绕课程以及自己的兴趣爱好为题材来写博客。举例来说,在 C 语言学习过程中遇到的有趣的题目以及在刷 ACM 题库的时候遇到的经典问题会单独拿出来分享解法,比如:简单质因数分解。此外,由于当时还在自学 Python,所以每当遇到有趣的知识点就会单独拿出来简单写一下,比如:Python 小知识点(5)。
这个阶段更多地还是在找寻建立笔记的方法,更多地体现在记录。Python 编程语言和当时正在学习的 C 语言还是很不一样,里面有很多独有的语法内容,在这个阶段所总结的 Python 小知识点系列 为我学习 Python 语法打下了坚实基础。
2. 井喷(2019.01~2020.09) – 约339篇
这个阶段是我已经决定保研后至上了研究生之后的一段时间,正如标题所说这个阶段是博文发布的井喷阶段,发布的博文总量占据了目前发布博文的一半还多。之所以这个阶段如此高产,有很多原因:1. 因为即将迎来人生的新阶段,我想要打一个很好的博客环境,以供研究生期间继续发布博客;2. 系统性地总结学习了很多知识,需要好好梳理内容;3. 该阶段涵盖了本科毕业设计,为了做好毕业设计,我需要学习很多新东西并看很多文献,所以也需要做好笔记;4. 在自己的博客上提交专业课所需要的课程大作业。
2.1 软件工程大作业
软件工程大作业
现在回看当时这门课程自己所提交的作业,我感慨良多。在第一次作业中,被问到现在最喜欢的领域是什么?,当时我的回答:
自己感兴趣的领域有三个方面。1.图像识别领域,由于本学期开设了计算机图形学这么选修课,听老师说这个领域还是有很大人才缺口的,并且由于自己做过有关二维码识别处理的相关研究,所以对这个领域还是很感兴趣的。2.数据分析与处理方向。这是因为自己曾经做过关于商品价格比较的项目,利用到了Python里面的一些机器学习库,科学计算库以及图像生成的库,此外数据分析师也随着大数据的兴起而变得紧俏起来。3.从事底层研究。由于自己有从事科研的想法,并且在目前十分重视计算机应用技术的环境下,我感觉还是缺少一些能够踏踏实实坐下来研究一些底层设计的人,不真正拨开内核,怎么能体会到计算机设计的精妙?
不知道是不是一语成谶,还是命中注定,我现在仍然对这三个领域感兴趣。图像识别领域与之后自己的本科毕业设计息息相关,可能在心里埋下了这个种子,所以在做本科毕业设计的时候自己每天都很充实,很兴奋,感觉陷入了心流,完全不觉得有压力。数据分析与处理和计算机基础研究方向冥冥之中指明了自己未来研究生期间的研究内容,之后在研究生期间自己选择了操作系统内核研究可能也早有心理预期。
在这之后就是零散的一些数据结构知识整理,以及准备考研时的空窗期。
2.2 Python 知识的总结
Python 编程语言的学习过程是我在本科期间养成自学习惯的重要阶段。这个阶段我做了很多事情:1. 结合之前 C 语言的经验,做关于 Python 的知识点分享(Python 小记);2. 考虑到未来本科毕业设计的需要,我需要提前学习关于 OpenCV 的相关内容(OpenCV 小记),故在该领域我也做了很多笔记;3. 考虑到在本科毕业设计以及未来学习数据处理时的数据展示需求,我提前学习了 Matplotlib 工具,并做了知识点梳理(Matplotlib 整理);4. 改善 Python 程序的 91 个建议(改善 Python 程序的 91 个建议)以及关于编写高质量Python代码的心得体会(关于编写高质量Python代码的心得体会)是我首次尝试学习如何规范自己的代码习惯以及创建自己的付费专栏;5. 出于自己的兴趣爱好以及吸引读者的需要,有段时间每隔一个礼拜就要写一个有趣的 Python 小案例(Python 案例),至今已经写了近 30 个啦;6. 在本科课程接近尾声的时候,我们学校有了 《Python 程序设计选修课》,在这门课程中,我将学校线上题库中的题目以及对应的解答代码进行了整理(Python 题库、Python 答案),这两篇博文已经成为了博客的吸粉神文,深受读者好评;7. 此外,就是一些文献心得以及毕业设计相关的内容。
2.3 操作系统相关知识
在这个阶段,自己已经决定好了在研究生阶段从事 Linux 内核方面的研究,故进行的一些准备工作。为了能够学好它,肯定先需要用起来,我记得当时从 B 站上找了一门关于 Linux 系统管理维护的课程(Linux 系统管理相关知识),虽然听得云里雾里,但还是有所收获。然后,自己系统性地总结了操作系统相关的理论知识笔记(操作系统)作为温习。
此外,还整理了实验室自己编写的学前资料:Linux内核——实模式、Linux内核——分段机制、Linux内核——中断机制、Linux内核——任务管理。让我对 Linux 内核有了一个深入的了解。
3. 研究生(2020.09~至今)-- 约 279 篇
这个阶段的博文内容主要围绕自己的研究方向 —— Linux 内核。除了自己自学的部分外,很多都是项目相关的技术整理。主要可以分为以下几个方面:shell 以及 Linux 命令学习、Linux 内核以及虚拟化知识学习、项目相关内容、Jailhouse 相关内容。
3.1 shell 以及 Linux 命令学习
既然要学习与使用 Linux 内核那么 shell 语言和 Linux 基本操作的学习是无法避开的。我整理了《Linux 程序设计》这本书中我今后可能会用到的知识点以及我所感兴趣的部分(Linux 程序设计),主要和进程间通信过程相关 —— 考虑到今后的毕业设计需要。对于 Linux 命令以及 shell 脚本的学习自己也下了较大的功夫:Linux 命令、shell 脚本编程基础、高级 shell 脚本、脚本练习。这些笔记都可以提供给大家做参考!
3.2 Linux 内核以及虚拟化知识学习
对于经典的 Linux 0.11 版本的内核源码学习,我整理总结了笔记(Linux 0.11),对于刚入门 Linux 内核的小白来说,Linux 0.11 版本是值得深入分析源码的内核版本,让你能够体会到操作系统的魅力。然后,由于自己主要工作围绕嵌入式系统展开,故我从 B 站上找了相关的嵌入式课程进行学习,并做了笔记(嵌入式系统 课程学习)。
举例来说,这个阶段,实验室给我布置了一个任务:探究开机的瞬间,系统中发生了什么事情?—— 从按下开机键后,电脑里面发生了什么?(Linux 0.11)
由于虚拟化研究也是操作系统研究的重要分支,故自己也看了一段时间的 x86 虚拟化手册以及一些开源 Hypervisor 的介绍:
- x86 分页机制以及虚拟化 PPT
- x86 架构 CPU 虚拟化
- 什么是 ACRN?
- 内存虚拟化
- 分页机制
3.3 项目相关
这部分内容就要列出我所归纳整理的关于树莓派上系统启动过程的系列笔记了:
- 【linux 系统移植①】Raspberry Pi 4B 引导过程、官方文档、bootloader、配置文件
- 【linux 系统移植②】Uboot
- 【linux 系统移植③】makefile、relocate_code、uboot.lds
- 【linux 系统移植④】uboot 进入 main_loop() 前
- 【linux 系统移植⑤】uboot 进入main_loop() 后
- 【linux 系统移植⑥】以 cpu/s5pc11x、board/samsung/x210 为例讲解 uboot 启动流程
- 【linux 系统移植⑦】内存分配相关问题
3.4 C/C++
深入到内核源码中后,我深感自己 C 语言基础与实际应用的差距,故我开始了 C 语言的系统性学习,从头再学习一遍 C 语言(C/C++),集中花费了一段时间进行 C 语言提高与进阶,发现学校里面学的 C 语言真的只是皮毛而已,离实际应用还有差距。
3.5 Jailhouse 相关
Jailhouse 与自己今后所从事研究方向密切相关,当时自己花费了一个月时间,每天看一篇相关论文并做笔记作为文献综述内容。此外,我还成功创建了 Jailhouse 社区,作为中文互联网首家 Jailhouse 相关的论坛(Jailhouse 社区),我今后会好好维护,提供知识分享,也欢迎大家加入呀!
也正是因为自己的不懈努力,最终获得了博客专家与操作系统领域优秀博主的荣誉称号。
收获
从申请博客到如今已近六年时间,六年时光如白驹过隙,如今已经有了8760个粉丝相伴,正朝着万粉迈进,谢谢你们的关注与认同!我写博客的收获主要有以下几个方面:
- 提高了自己的技术水平:写博客需要对所学知识进行深入的挖掘和总结,这让我不断地学习和提高自己的技术水平,同时也能让我更好地理解和应用所学知识。
- 拓宽了自己的知识面:写博客让我接触到了更多的技术和领域,不断了解新的技术和趋势,也拓宽了自己的知识面。
- 结识了更多的技术同行:写博客让我有机会与更多的技术同行进行交流和互动,了解他们的思想和经验,也让他们了解我的思想和经验,从而建立起了更好的人际关系。
- 带来了一定的经济效益:通过写博客,我能够吸引更多的读者,进而推广自己的产品和服务,带来了一定的经济效益。
总的来说,写博客让我获得了很多收获,特别是提高了自己的技术水平和拓宽了自己的知识面,同时也让我更好地理解了技术对社会和生活的影响,让我更加热爱技术和科学。
关于操作系统内核相关知识的分享博文,我认为需要注意以下几点:
- 初学者友好:内核知识较为专业,对于初学者来说可能较为难以理解。因此,在写内核知识分享的博文时,需要注意语言简洁明了,通俗易懂,避免使用过于专业的词汇和术语,以便让读者更容易理解和掌握。
- 突出重点:内核知识非常丰富,需要在分享中突出重点,让读者能够快速掌握最重要的知识点。例如,可以着重分享内核的工作原理、安全性、优化等方面,而不是一味地介绍内核的每一个细节。
- 结合实际应用:内核知识分享最好能够结合实际应用,让读者能够更好地理解内核的作用和优势。例如,可以分享在哪些场景下应该使用什么样的内核,如何优化内核以提高性能等等。
- 注意排版和格式:对于内核知识分享的博文,排版和格式也非常重要,可以让读者更容易阅读和理解。建议使用专业的计算机技术语言,并注意排版的整齐和清晰。
- 不断更新:内核知识是一个不断发展和更新的领域,因此,在写内核知识分享的博文时,需要注意及时更新和补充新的知识,以保持博文的实用性和时效性。
总之,写内核知识分享的博文需要注重初学者友好、突出重点、结合实际应用、注意排版和格式以及不断更新。通过这些措施,可以让读者更好地理解和掌握内核知识。
最后,再次谢谢粉丝的关注,我们一起变强!
后记
硕士研究生嵌入式操作系统方向在读,深耕 Linux 内核中… 欢迎志同道合的朋友联系我,如果有什么我能够解答的问题,我将知无不言。如果你有不懂的小程序或者需要我帮你完成的程序都可以来联系我。此外,如果你需要咨询软件著作权申请相关的问题,我也可以为你解答。