生活知识百科

作为程序员计算机基础的书推荐几本呗?

2024-11-30 14:48:38 条浏览

python编程从入门到实践,现在python越来越流行了,从机器学习到数据分析,从自动化测试到单片机开发都能找到他的身影,所以推荐这本书




c语言相关书籍




作为程序员,大家可能都太过注重编程的学习。当然编程是很重要的!但很多底层基础的知识也是不可缺少的部分。我曾经也是一个知注重学习各种新知识的程序员,没有太在意底层的基础学科知识。虽然工作影响不大,但总是感觉缺点东西,很多知识不能很透彻的理解。所以以我的经验这里推荐几本书

第一,《现代操作系统》

《现代操作系统》是机械工业出版社出版的图书,作者是(荷兰)AnderwS.Tanenbaum。书中不仅涵盖了现代操作系统的原理和实践,认识了操作系统的基本结构,对我现在所用的电脑系统有了全新的认识。不仅如此这本书还特别关注了Linux操作系统,WindowsVista操作系统、嵌入式操作系统、实时操作系统以及多媒体操作系统。几乎涵盖了目前所用到的所有操作系统。

第二,《数据结构与算法分析+java语言描述(原书第3版)》

作为一个程序员无论工作中用不用得到一定要知道数据结构以及算法。本书是国外数据结构与算法分析方面的经典教材,使用卓越的Java编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。本书把算法分析与有效率的Java程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。

当然要想把以上两者连起来,需要的就是网络了,所以下面推荐的关于网络方面的书籍

第三,《计算机网络》和《TCP/IP详解》

网络方面最经典的教材就是谢希仁编写的《计算机网络》,这也是第一次推荐国人写的计算机方面的数,这本书是非常好的,尤其往网络方面发展的同学一定要看看,绝对有收获;当然有的同学可能喜欢外国作家写的书,这里就推荐这个国外经典计算机教材《TCP/IP详解》共三卷;在计算机网络技术方面,最经典的就是思科认证教材CCNA,CCNP及CCIE系列认证教材。

要说基础知识以上三本书就够了,要推荐当然还是有的,主要没有多少空闲时间去读而已!希望能够帮到你。欢迎关注留言哦




然后我们聊聊平常程序员能用到的基础,计算机是一门很大的学科,下至离散数学、微积分、自动机理论,中间还有硬件、计算机组成原理、编译器、程序语言、操作系统、算法,上到各种设计模式、架构设计其实都可以算作基础,但是很多其实程序员平常可能不太用得到,我们就说一个做web的后端程序员可能需要用到的基础知识,假设程序员已经掌握一门编程语言,足够完成自己想的事情,并对一些基础概念有了解

我们从一个http请求说起,请求通过网络将一些数据通过网络发送到服务端,这中间首先要经过HTTP协议进行数据的传递(不讨论数据链路层和IP层、TCP的那些事情),这里面就会涉及到HTTP协议的问题,比如header里面有那些常用的字段,比如指定字符集、编码方式、会话方式等等,然后通过header就知道对body里面的数据进行如何的处理,比如序列化或者反序列化,还有为什么会有跨域的问题?为什么要用https?什么又是http1.02.0,然后通过这些通常就要再去学习一个web框架,就会涉及到这个框架是怎么对上面这些进行处理的了,关键点:http协议与web框架

请求处理部分,通常就要做具体的业务逻辑处理了,什么是cookie、session、token、jwt?为什么要保存这些数据?什么又是表单?中间件又是什么鬼?此处通常又会涉及到分层架构比如什么是MVC?数据库又是什么?为啥又要出个缓存?消息队列又是啥?然后就会涉及到我们的业务类型和业务数据,比如该用什么数据模型?什么存储?什么序列化方式?什么索引方式?什么又是事务?关键点:分层架构、数据库与事务、NOSQL、数据结构与算法

如果把上面这些都学完已经可以做个CRUD程序员了,大多数培训出来的也就这个样子,然后就是单机不行了,首先是业务上做水平或者垂直拆分?拆着拆着,就是一堆服务了,好吧就叫微服务吧?怎么发现彼此?怎么通信?怎么传递数据?怎么管理?挂了怎么办?怎么提供统一接口?关键点:微服务、服务发现、通信方式、故障隔离、网关

经过上面的学习你已经是一个入门级别的程序员了,但是你还只是个会使用各种工具的程序员,那么我们要开始独立去面对一个小的业务模块了,怎么设计模块?什么是架构?怎么协作开发?怎么做测试?TTD是啥?敏捷又是啥?持续集成是什么鬼?服务怎么部署?docker是啥?kubernetes是啥?监控日志又是啥?关键点:敏捷、测试驱动开发、持续集成、持续交付、docker与kubernetes、监控与日志

经过这些我感觉已经能做个基本的程序员了,但是目前也只是个更全面的工具程序员了,我们总不能一直使用各种工具吧,我得熟悉底层的各种源码吧?不说精读个数据库,泛读个web框架、几万行代码的中间件,貌似是得学习一下吧?你以为你可以读懂了?去一边去吧,你为什么读不懂源码?你说我会了数据结构,好吧程序都是并发的,作者可能为了并发的安全性又去改动了一下,比如结合操作系统的copyonwrite机制,实现个redis的备份?利用磁盘顺序写,搞个wal日志?写个oscache批量刷盘?数据可能是通过网络传输的,socket是啥?粘包拆包又是啥?IO又为啥要多路复用?这些玩意是啥?并发!!关键词:操作系统、Linux底层机制、并发、网络

经过这些,你感觉完了?别闹,读完一个中间件源码就完了嘛?你知道编译器嘛?微机原理呢?电子技术呢?计算机组成原理呢?你了解分布式嘛?一致性呢?共识和时钟又是个啥?分布式锁怎么玩的?大数据了解嘛?servicesh明白嘛?datamesh呢?5G已经在路上,能赶上嘛?

阿弥陀佛,回头是岸,学海无涯,放下屠刀,立地下岗!

程序员:方丈我还没到34岁,能不能救救我?

方丈:施主,瞅你骨骼惊奇,但是我们只招985/211,计算机科班出身的996程序员,你愿意12127嘛?

程序员:方丈,我可以住公司!

方丈:那我们考虑考虑,拿起简历放到旁边的第1000零1的简历上做备选




我从一个Java开发者开发角度来推荐几本吧。

一、Java编程思想

第一本是《Java编程思想》,作者是BruceEckel;

这是一本经典的Java基础入门书籍,内容围绕Java5/Java6展开,讲述的都是Java语言的基础知识;尽管现在Java已经更新到了Java14,但并不会影响对这本书的阅读。

其中Java基础知识作者讲述得非常仔细,并且为每个知识点都配上了代码案例,看后受益良多。本书有点厚,内容较多,不一定就得一次读完,可以把它当作一本工具参考书经常翻阅。

二、数据结构与算法分析

第二本是《数据结构与算法分析Java语言描述》,作者是马克.艾伦.维斯;

本书是以Java语言为基础,讲述了离散、递归、排序、图论、查找树(红黑树、二叉树)等经典其常用的算法实现和原理;详细描述了表、栈、队列等数据结构的使用;更是列举了Java中的集合api的案例实践;对Java程序员的数据结构的理解有着颇深的指导作用。

本书为进阶书籍,书中不仅有基础的数学基础,还有经典的算法案例分析,以Java语言中的CollectionsAPI作为算法实现工具,详述了如何设计算法。仔细研读本书,读者必将对Java中的数据结构有更深的理解,也必定会有一个不错的算法基础。

三、算法

第三本是《算法》,作者是RobertSedgewick和KevinWayne;

如果说第二本是算法的入门书籍的话,那么这本书可以说是算法的进阶书籍了,本书更加详细、深入的分析了各种经典算法的原理,并使用了Java案例来实现。

本书与第二本书:《数据结构与算法分析Java语言描述》是相辅相成的,两本配合起来读能够加深对算法知识的理解,如果是对算法感兴趣的话,可以先学习第二本,打好基础,再来学习这一本,就比较容易理解了。

四、揭秘JVM虚拟机

第四本是《揭秘JVM虚拟机JVM设计原理与实现》,作者是封亚飞;

本书通过JVM的实现源码的解读,详细描述了JVM是如何处理Java的;不同于,其他翻译虚拟机规范的书籍,本书更加侧重于JVM的底层分析,不仅有oop-klass模型、堆栈分配模型、类加载模型,还有JVM如何把Java语言一步步转换为机器码的详细过程,值得经常学习。

由于本书使用了的大量的C/C++案例,如果读者有C/C++的基础,学习起来会相对比较容易些;不过,也不同担心,语言都是相同的,Java也是C这一系的语言,在语法上是相通的,能看懂Java代码,相信书中的C/C++案例对你来说也不是难事。

五、HTTP权威指南

第五本是《HTTP权威指南》,作者是DavidGourley、BrianTotty、MarjorieSayer、SailuReddy、AnshuAggarwal;

本书提供了HTTP通信协议的全过程,不仅详细描述了每个请求头字段、响应头字段的使用;更有web应用通信的底层机制。是一本不错的web通信学习书籍。

六、开发手册

最后一本是《码出高效Java开发手册》+《阿里巴巴Java开发手册》,作者是杨冠宝、高海慧;

代码不仅要性能好,还要写的好看;想要写出好看又高效的代码,不仅要有深厚的技术基础实力,还要有详细、可执行的代码规范。深厚的技术可通过以上几步来慢慢积累,而详细、可执行的代码规范就可通过这两本书中规范来实现。

完结,希望回答能对你有所帮助!




生活不仅仅只有写代码,作为程序员,我们不仅要将数据结构、计算机网络、操作系统这三把斧玩好,更要拥有一个强健的体魄!

网络:

万物互联时代,如果你还不懂网络知识,那将寸步难行。这里推荐三本经典书籍:

TCP/IP详解

该书是网络专家、著名技术作家W.RichardStevens的传世之作,内容详尽且极具权威,被誉为TCP/IP领域的不朽名著,就我认识的老通信行业的专业开发人员,基本人手一本。本书共三卷,其中卷一偏重于基础原理,卷二、卷三更多偏重于编程细节,作为基础书籍推荐,卷一即可,对于学有余力的童鞋,可学习二、三卷。

图解HTTP

应用最广泛的协议之一,前端工程师分析抓包分析数据,后端工程师实现RESTAPI、搭建自己的HTTP服务器等过程中都绕不开HTTP这一知识点,《图解HTTP》,用通俗易懂的语言讲解了HTTP协议的方方面面,本书列举诸多常见通信场景及实战案例,最后延伸到Web安全、最新技术动向等方面,实在是一本不可多得的好书。

Wireshark网络分析就这么简单

「授人以鱼不如授人以渔」,全书以诙谐幽默的写法为我们讲解了枯燥的技术问题,由浅入深的用Wireshark分析了常见的网络协议,还通过身边的真实案例分享了Wireshark使用技巧,对初学者是很好的启蒙书籍。本书可搭配前面介绍的两本基础理论书籍一起学习,必能达到事半功倍的效果。

操作系统:

现代操作系统

程序员的自我修养——链接、装载和库

如果你是高手,LinuxHacker或者geek,请绕行

但如果你是新手

如果你曾好奇过windows系统目录下和软件目录下大堆大堆的dll文件是什么?

如果你曾疑惑过我写下的代码经历的怎样的历程最后怎样到达了内存?

编译器每天用,它到底做了什么?

如果你已经学习或接触了C,汇编,计算机结构,但还是没办法把三者的关系理顺。

那么,《程序员的自我修养——链接、装载和库》这本书绝对是对你的有帮助。

数据结构

基础入门的话,这里推荐《大话数据结构》。本书以一名教师的教学为场景,用生动形象的语言讲解数据结构和相关算法的知识。全文大量引用了各种各样的生活知识来类比数据结构中的专业知识。

程序员必备书籍

重要!

重要!

重要!

作为本文的压轴戏,也是最重要的一本书《程序员健康指南》推荐给各位程序猿友们,专门为程序员量身制作的健康指南,针对头痛、眼部疲劳、背部疼痛和手腕疼痛等常见的问题介绍了其成因和对策。身体是革命的本钱,各位在长期面对996的同时,一定要注意身体,加强锻炼,提高免疫力!




温馨提示