热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

而且吃青春饭CSAPP《深入理解计算系统》,我的学习心得

本文主要介绍关于算法,网络,java,编程语言的知识点,对【CSAPP《深入理解计算系统》,我的学习心得】和【而且吃青春饭】有兴趣的朋友可以看下由【小林coding】投稿的技术文章,希望该技术和经验能

本文主要介绍关于算法,网络,java,编程语言的知识点,对【CSAPP《深入理解计算系统》,我的学习心得】和【而且吃青春饭】有兴趣的朋友可以看下由【小林coding】投稿的技术文章,希望该技术和经验能帮到你解决你所遇的【程序人生】相关技术问题。

而且吃青春饭

大家好,我是小林。

今天跟大家聊聊《深入理解计算系统》,这本书的英文全称叫ComputerSystem:A programer perspective

英文名翻译过来是「程序员视角下的计算机系统」,也被简称为 CSAPP。

而且吃青春饭 CSAPP《深入理解计算系统》,我的学习心得

可能大家以为这本书是讲操作系统的,我最开始也以为是这样。后面当我开始啃这本书的时候,发现我大错特错,它远不止我想的那样。

这本书是从程序员的角度学习计算机系统是如何工作的,通过描述程序是如何映射到计算机系统上,程序是如何执行的,以及程序效率低下的原因,这样的方式可以让大家能更好的知道「程序与计算机系统」的关系。

CSAPP 涵盖的内容非常多,有计算机组成 + 操作系统 + 汇编 + C语言 + Linux系统编程,涉猎的领域比较多,是一本综合性的书,更是一本程序员修炼内功的指引书。

第一章「计算机系统漫游」内容,就很好的把程序与计算机系统有哪些关系都阐述清楚了,一下就知道了计算机系统的整个脉络,把一些零散的知识点都串了起来。

在国内已经有很多高校开始采用这本书作为大一或大二的教材了,采用用这本书作为教材的学校,真心给你们点个赞。

因为这本书其实可以给计算机专业的同学指明了一个很好的计算机基础学习方向,这样后续在单独学计算机组成、操作系统等这些独立的科学的时候,会更清楚知道它们在计算机里处在的位置和作用。

CSAPP 主要包括以下内容:

信息表示(如何使用二进制表示整型、浮点数等);C 和汇编语言的学习(通过汇编语言更深入地理解C语言是什么);计算机体系结构(存储层次结构、局部性原理、处理器体系结构);编译链接(C语言如何从文本变成可执行文件、静态链接、动态链接);操作系统的使用(异常控制流、虚拟内存、多个系统调用介绍);网络及并发编程(并发的基本概念、网络相关的系统调用的介绍)。

那学这本书需要什么基础呢?

这本书的作者已经在开头跟大家说清楚了,只需要有 C 语言基础,即使你没学过汇编、计算机组成、操作系统也是可以的。

而且吃青春饭 CSAPP《深入理解计算系统》,我的学习心得

前面我也提到 CSAPP 是一本程序员修炼内功的指引书,为什么说是指引书呢?

CSAPP 是计算机原理 + 操作系统 + Linux 系统 + 汇编的一个大杂烩,它不是深入理解汇编、深入理解操作系统、深入理解计算机原理,所以它不会在某个知识点给你涉及很深,比如:

虽然讲了虚拟内存,但是并没有说各种页面置换算法,这部分内容得我们去看操作系统相关的书;

虽然讲了 Cache,但是并没有说缓存一致性协议,这部分内容得我们去看计算机组成相关的书;

虽然说了链接,但是讲的内容比较表面,要想深入这块内容还是得看看《程序员的自我修养》这本书;

虽然说了 Linux 系统的 I/0 和网络编程,但是只是说了几个简单案例,要想深入理解这些内容还得看《APUE》和《UNP》这两本;

没有提及操作系统中的文件系统、调度算法等。

但是 CSAPP 会给我们建立一个计算机系统的体系,好让我们在后面对体系里的每一个支点往下深入。

读了这本书,你后面在写代码的时候,会有不一样的视角,你会开始思考代码的底层原理,而不是把计算机系统当作一个黑盒子,跑完代码就完事的那种想法。

当然,单纯看书会很乏味,我们可以结合视频一起学。这本书的视频课程是国外老师录制的,但是在 b 站已经有好人帮我们做了中文字幕,看了这视频,相当于在国外上了一门计算机课的感觉。

B 站地址:CSAPP视频课

而且吃青春饭 CSAPP《深入理解计算系统》,我的学习心得


如果你是在校生,有了一定 C 语言基础后,非常建议你就开始看这本书,有精力也可以做做 CSAPP 的 lab。越早开始看,你的收益就越大,因为当计算机体系搭建起来后,你后面再深入每一个课程的时候,你会发现学起来会比较轻松些。

对于已经工作了,但是计算机系统没有一个清晰认识的读者,也可以从这本书开始一点一点学起来,这本书是很厚,但是并不一定要把书完完看完,每个章节的知识点还是比较独立的,有关硬件的章节我们可以选择跳过。


最后说件事情。

曾经我也苦恼于那些晦涩难弄的计算机基础知识,但在我啃了一本又一本的书,看了一个又一个的视频后,终于对这些“家伙”有了认识。

我想着,这世界上肯定有一些朋友也跟我有一样的苦恼,为此下决心,用图解 + 通熟易懂的讲解来帮助大家理解,利用工作之余,坚持输出图解文章两年之久,我的文章都汇总到了网站:https://xiaolincoding.com

网站内容共 1000 张图 + 50 万字,网站宗旨让天下没有难懂的八股文!(口嗨一下,大家不要当真),网站地址:https://xiaolincoding.com。

希望图解网站成为你们上班摸鱼必备网站哈哈!

本文《CSAPP《深入理解计算系统》,我的学习心得》版权归小林coding所有,引用CSAPP《深入理解计算系统》,我的学习心得需遵循CC 4.0 BY-SA版权协议。


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了StartingzookeeperFAILEDTOSTART相关的知识,希望对你有一定的参考价值。下载路径:https://ar ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
author-avatar
mobiledu2502912527
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有