unix系统内幕 个人学习方法分享
发布时间:2022-10-17 12:41:52 所属栏目:Unix 来源:
导读: hi,大家好,今天来分享一下,我的一些学习经验,希望对大家学习有帮助
我的学习方法 学习计划
核心思想:把自己像产品一样打造,就像张一鸣经典语录:run company as a product
制定目
我的学习方法 学习计划
核心思想:把自己像产品一样打造,就像张一鸣经典语录:run company as a product
制定目
|
hi,大家好,今天来分享一下,我的一些学习经验,希望对大家学习有帮助 我的学习方法 学习计划 核心思想:把自己像产品一样打造,就像张一鸣经典语录:run company as a product 制定目标 首先学习需要明确学习目标,学习之前,要把目标制定下来,一个月,三个月,半年,一年,三年等不同周期目标。 迭代计划 分解目标,然后建立特定周期的迭代计划,最终形成多个迭代,不断迭代自己。 每天学习安排 每一天时间安排,就像高中一样,制定出一个时间表,心里有数,用来指导学习,不需要严格执行,大致就好,留一些缓冲时间,具体时间安排可以参考番茄工作法,一般每天至少尽量留一个小时给自己充电。 迭代计划 之前用的一个敏捷开发工具 trello来实现迭代计划,我设置10天为一个迭代周期,每个月结束后会进行总结复盘,是否达到迭代的目标。 这里tc是指什么,大家可以猜一下? 具体迭代看板: 每个卡片为一个具体任务,可以设置开发时间,设置任务状态,check list是用来验收任务-闭环: trello软件,在手机和电脑都可以用,是我最喜欢的软件迭代工具(任务管理,团队协作工具),知乎评价非常高,同样可以用来迭代自己。 学习资料 书籍 很多经典书籍(后面有经典书单推荐),经典书籍可以让我们更容易理解知识的本质,学习作者对技术的理解,和作者进行精神交流,有些章节我都会反复看几遍,然后敲代码去实现验证。 博客网站 大多数知识点都需要上网查看,翻看各种博客网站,主要是看一下该知识点的内涵和外延,看一下别人是怎么理解的,后面有经典博客网站推荐。 极客时间 极客时间课程, 有些很经典,质量很高,我会选我想看的章节, 查缺补漏, 加强理解, 看一下其他大佬对这个知识点是怎么理解的, 有助于加深理解。 总结沉淀 我目前用来记笔记的工具 mindmaster 脑图 比较好分类, 查找比较方便。之前有用文本记录比较乱,看个人爱好, 这款软件支持手机和电脑端同步使用。 比如学习TCP/IP协议后,就需要总结如下: 由于展开太大,这里取TCP节点展示看(由于导出图片有大小限制,完整版更详细): 不知不觉中总结很多知识: 这些其实可以算是个人知识财富,希望大家多总结。???????????????????????? ???????????????????????????? 读过一些经典书单 1. 深入理解计算机系统 计算机界的神书,底层开发的圣经,计算机基础知识神作,建议多读几遍。 2.具体数学 计算机科学的神奇书籍,帮你建立计算机独有数学思维,比如递归,组合,动态规划等。 3. 编译原理 本书作者Alfred V.Aho、Ravi Sethi和Jeffrey D.Ullman是世界著名的计算机 科学家,他们在计算机科学理论、数据库等很多领域都做出了杰出贡献。本书是编译领域无可替代的经典著作,被广大计算机专业人士誉为“龙书”。 4 . 计算机程序的构造和解释 书中使用程序设计语言Lisp的方言Scheme来解释计算机科学的核心概念,包括抽象、递归、解释器以及元语言抽象。具体而微地由宏观到微观给出清楚地轮廓与脉络。 5 .The C Programming Language 到今天仍然是C语言入门的首选,书非常简洁优美,就像C语言本身一样。 6.深度探索C++对象模型 C++对象内存模型,从语法上看编译器实现,学习C++必须要掌握的。 7.深入理解LINUX内核 如果你想深入学习Linux内核,这本书是个很好选择。 8.深入理解LINUX网络内幕 对Linux网络子系统有深入分析,如果你要深入学习网络,这本书是很好的选择。 9.UNIX编程艺术 本书主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,而这些经验对于理解Linux系统有非常大的益处。 10. 程序员的自我修养 了解程序编译,连接,库等程序运行原理,包含windows和linux系统,加强基本功修炼。 11. 刻意练习 这本书深刻分析刻意练习背后的原理,用科学方法论证如何从新手到大师。 推荐好的博客 1. dog250的文章都比较深刻,属于网络进阶,可能不太适合入门,建议入门后,再看这里文章,会让你醍醐灌顶。 2. 操作系统优质博客,可以学习linux 调度相关内核知识; 3. 蜗窝科技,博客专注分享linux内核知识(偏嵌入式方向), 很多文章都非常精华和透彻,值得内核学习者学习; 4. bbs.chinaunix的内核板块,第一代内核程序员聚集地,很多大佬在这里分享内核知识,现在应该都是各大公司技术专家或者负责人了。 5. 耗子叔个人技术网站,早期我喜欢的技术blog博主,一个乐于分享技术的大牛,尤其是分享的基础知识,本人也很喜欢基础知识; 6. 云风的blog,大多数和游戏相关,可以学习很多高性能编程技巧。 7.C++博客 7.1 Bjarne Stroustrup,不认识的可以去面壁了,没有他,就没有我们现在的饭碗。Bjarne Stroustrup是丹麦人,目前任教于TAMU。他的Homepage和他的书籍The C++ Programming Language一样,都是百科全书级的,如果你认真研究,你也会成为你同事或周围人的C++之父。 7.2 博客作者Jonathan Boccara是C++软件工程负责人、博客作者和作家,专注于如何使代码具有表现力,顶级C++高手。 7.3 Scott Meyers,不多介绍,世界上几乎每个C++程序员都应该知道的名字,畅销书:Effective C++,More Effective C++的作者。博客长期更新,就凭Scott Meyers这个名字,就值得一读。 7.4 现代C++编程大神,文章主打modern C++,让你与时俱进; 7.5 应该是算国内顶级C++社区,举办多届C++大会。博主为C++委员会成员 个人博客 ,也非常值得C++开发者学习。 8. 王垠大佬博客,对编程语言理解深刻,如果还在学习编程语言语法,可以看一下这个博客一些文章; 个人学习经验总结 此处为个人学习经验总结,可能不一定适合你,但或许对你有些帮助,希望你取长补短,协助你找到自己的方向。 1. 学习一定要有目标,目标一定要有计划(排期),计划一定要有落地执行方案(迭代),迭代一定要有check list(结果验证),最后根据结果进行复盘总结,这样才能形成学习的闭环,然后不断按照这个流程迭代自己,同时整个流程可能也会发现一些问题,比如拖延,比如时间估算不准等,这时候流程也需要不断调整优化。 2. 学习中,真正困难的地方,是习惯问题,可能存在一些不好的习惯,导致不能专心学习,比如玩手机等,改变自己习惯是一件很困难的事情,如果你已经走投无路,或者你很想完成你的目标,做梦都想,那你必须对自己狠心一点,改掉自己不好习惯,学习的时候最好专注,找个安静的地方学习,尽量不要被打扰。 3. 学习中,多去和别人交流,很多心中疑惑,很可能别人一句话就让你悟道解开,和大神交流(可以书本,视频演讲,直播,线下技术讲座等等),要学会虚心请教,大神对一些基础概念的本质理解,会让人醍醐灌顶,胜读十年书。 4. 学习要有耐心,很多时候是需要花很多时间去学习一个知识点,一些知识点需要反复来回多看几遍,要刻意去练习,大脑才会加深影响,慢慢地把各个点串起来,很多时候看代码就是这样,需要时间unix系统内幕,我会慢慢在大脑中试图关联起来,最后才能恍然大悟。 5. 学习最重要就是坚持,这个比任何技能都重要,很多知识是需要花很多时间才能吃透的,而这个过程并不是循序渐进,很可能是某一天灵感爆发,或者悟道,而这个爆发又是你之前慢慢积累结果,所以很多时候,我们可能百思不得其解,很多人中途可能放弃了,觉得太难了,如果我们非常想完成我们的目标,就要突破这些难点,咬牙坚持,总有一天会拨开迷雾,获得真知,你会感谢当初坚持下来的你,这个过程是痛并快乐着。 6. 要学会思考,要学会多总结(输出),对知识的透彻理解,才是我们最终的目标,而不是死记硬背,背概念,这需要我们不断思考,不断总结,所谓智慧就是这些思考的成果,这也是社会进步源泉; 7. 要学会分清重点,逐个攻破重点知识,时间有限,需要掌握28定律,了解一个系统,先要明白什么才是它的核心技术,其他只是辅助或者实现细节。 8. 要学会各种搜索技能(google,bing,百度,知乎等),学会查找各种经典资源,包括付费资源(csdn下载,百度文档,购买课程),有时候不要舍不得,好的资料,犹如武林秘籍,可以助你一臂之力。 总之,要建立自己的知识体系,不断迭代,查缺补漏, 把其他资源融入到自己计划中 。 技术思考总结 多年工作经验和学习经验,分享一些技术思考,可能不一定准确,但希望对热爱技术人有一些帮助。 1. 很多开源软件,其实并不是很难,只要花时间,有耐心啃代码,都会水落石出,源码面前,了无秘密,这是进大厂的一个快速路径。 2. 上层技术都是都是基于底层技术构建,找到底层原子操作,你也可以构建上层应用,比如docker基于Linux三大件(namespace,cgroup,ufs),不管上层应用如何变化,这些技术都不会过时,掌握这些核心技术,会让你走得更远,即使是开发应用,也会比其他人做得更好。 3. 计算机基础知识(内存,CPU,缓存,网络,文件系统),基础思想(二分思想,缓存思想, 面向对象,流水线,批量,递归,延后处理等),都非常重要,这些是决定你技术上限,只有深刻理解基础知识,才能看问题看到本质,才能拥有强悍的实战能力,才能在技术之路上走得更远: 4. 学会把大系统分解成子系统,按专项逐个攻破每个子系统,收集子系统相关的资料,吸收他人的精华,有时候胜读十年书,加快自己成长;每个专家大神,都是从菜鸟过来的,向大佬看齐,快速吸收他们的经验,总有一天你也会修炼成功。 5. 团队都需要各种人才,我们不可能样样精通,5v5团战是需要大家一起配合的,一定要找到自己的位置,就算是辅助,也是世界级辅助,照样让人刮目相看,比如我在我们团队,基本上算是疑难问题解决,辅助(各种环境搭建,资源建设,自动化,协助他人解决问题)和攻关队长,但不是很擅长写大段代码(纯输出)。 6. 有一些技术难点,是必现要去攻破的,比如之前在外企的时候,我写了多年的C++业务框架代码,一直对模板元编程感到力不从心,后面决心攻破这个问题, 并总结了C++这三座大山: 同时业务框架代码讲究就是代码和架构设计,对设计能力要求很高,我又重新学习很多设计模式(大话设计模式等): 7. 不设边界,之前在华为的时候,主要是做无线通信产品(USB上网卡,无线模块,车载模块,家庭CPE网关),需要对3G,4G等协议非常熟悉,我是从来没有搞过,使用是高通modem芯片,这些都是高通专利,一些重要的代码没有开放给我们,只能通过查看log和有限资料学习,通过提case和高通技术支持交流(悄悄学习),慢慢熟悉了高通设计,最终我们写了很多经典文章,比如无线传输性能白皮书等;我们开发分两波人,一波是主协议,属于上层应用,一波是主驱动,属于底层架构,我一年后差不多掌握了无线协议开发,包括熟悉理解高通芯片设计,后面主动学习USB协议和驱动相关的,1年半后,我可以一个人包揽从上层到底层全部任务,后面很多项目PL都叫我来主导,每一年几乎都是优秀员工,但也有很多不足,需要学习。 最后 学习技术,还是要有一点情怀(我知道大部分都是为挣钱,这个很正常),很多时候技术是枯燥无味的,需要长时间做冷板凳,如果内心不喜欢,很可能会非常痛苦,但调通代码或者找到某个疑难bug的根本原因带来的快乐,是其他人无法理解的,那种成就感会激励我们继续前行,希望大家都能朝着自己的目标努力,终有一天,有所收获。 想要获取"经典完整版TCP/IP协议总结PDF",只要三连截图给我,我发给你。 (编辑:我爱制作网_池州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐

浙公网安备 33038102330577号