"> "> 其它-技术书籍与资料整理 | Yufei Luo's Blog

其它-技术书籍与资料整理

本文总结了自己读过的一些技术书籍、看过的网课等内容,并给出了简单评价。当然每个人的阅读习惯不同,因此我的意见仅供参考:)。作为程序员,学无止境,本文内容也会慢慢补充。

编程语言

C/C++

C++ primer:一本大部头,对C++的语法介绍十分详细。适合先通读一遍并完成课后题,然后当参考书使用,遇到问题时翻看。

The C Programming Language:自己买来当参考书看的,因为自己学的第一门编程语言是C++,这本书用于对C语言编程的一些特定语法进行补充。

Python

廖雪峰的Python教程:网页版,对于Python语法的介绍比较详细,唯一的缺点是练习题有一些少。如果已有其他编程语言的基础学起来会很快。

计算机基础

数据结构与算法

算法导论:常见的算法基本都有介绍,而且算法的证明过程很详细,但是读下来确实也十分吃力。MIT有配套公开课,可以辅助阅读。注意课后题里面也有许多精华,这些题目在网上有答案。读完之后LeetCode中等及以下难度题目应该很少会因为算法基础知识欠缺而不会做。

数据结构(C++版)邓俊辉:强推的一本数据结构书,有详细代码与图解,可以在读算法导论之前读它来打基础。同时这本书也是算法导论内容的补充,因为算法导论里面对一些数据结构的介绍有一些简略。书读完之后最好是用熟悉的编程语言把这些数据结构实现一遍,既可以加深了解,也可以加强编程能力。学堂在线有配套网课,质量极高,可以搭配使用。

计算机组成原理

深入理解计算机系统:这本书是以一个程序员的视角讲述了计算机组成原理和操作系统的一些知识,书中的一部分内容对于代码优化还是很有帮助的。2~6章偏重于讲计算机组成原理的内容,后面的章节偏重于讲操作系统相关的内容。前6章读起来个人感觉难度不大,第7章后面的章节在对操作系统原理了解比较少的时候可能读起来会感觉跳跃度略大(个人感觉这样),适合学过操作系统相关内容之后再读。尤其是第9章,将操作系统的知识与计算机硬件结合起来理解,会有不一样的收获。

哈尔滨工业大学刘宏伟老师的计算机组成原理公开课:讲解的比较详细,内容更加偏底层硬件一些。网课内容包含了计算机组成原理的大部分知识框架,但是有一些细节需要阅读其他书籍来补充。

计算机组成与设计-硬件/软件接口:自己写博客的时候参考过其中的部分内容,比起深入理解计算机系统更加详细一些,但是没有仔细读过。

操作系统

原理

哈尔滨工业大学李治军老师的操作系统公开课:对于操作系统入门来说,是一门比较好的网课,对于操作系统内涉及到的一些主要思想都有介绍。

Operating Systems: Three Easy Pieces:将操作系统分为CPU虚拟化、内存虚拟化、并发和持久性四大部分来讲解,这四大部分包含了操作系统设计的主要思想。而且作者的介绍比较符合人的思考习惯,由浅入深,是一本不错的入门书籍。

实践

鸟哥的Linux私房菜:介绍Linux操作系统的基本使用,可以作为工具书查阅。

计算机网络

计算机网络:自顶向下方法:按照TCP/IP五层模型的思想来介绍计算机网络,对于入门来说很适合。

汇编语言

小甲鱼的汇编语言网课:讲解很幽默,适合入门。但是讲解的一些东西对于X86/64架构可能有一些过时。

深入理解计算机系统的第3章:结合C语言讲解汇编语言的命令,比较简单易懂,可以作为入门。而且比较好的一点是书中的汇编语言是基于X86/64架构的。

并行编程

CUDA C Programming Guide:NVIDIA官网提供的入门教程,适合入门阅读

机器学习

数据处理

利用Python进行数据分析:介绍了用Python进行数据分析的几个常用函数库的用法,包括Numpy、Pandas、Matplotlib等,同时书中也包含了比较多的使用示例。这本书学习起来难度不大,比较容易上手,作者给出的使用示例在进行实际的数据处理与分析时也会经常用到,应该在学习机器学习之前阅读。

入门

机器学习-周志华:书中对于算法的介绍比较简略,同时给出的使用示例也少了一些。所以不推荐拿这本书来作为机器学习的入门教材,这本书适合有一个像周志华一样的大佬带着读:(。

吴恩达的机器学习公开课:可以作为机器学习入门来进行学习,讲解比较浅显易懂。

机器学习基石/机器学习技法:两门台湾的公开课,自己只看过其中部分内容,但是讲解还不错。

统计学习

统计学习方法:必读的一本书,公式推导详细,读的时候可以拿白纸边看边推,对于算法原理的理解很有帮助。

The Elements of Statistical Learning:统计学习的经典教材,需要的数学功底很高(一些比较简单的推导步骤直接被跳过),对于基础理论的讲解也更深。

XGBoost和LightGBM的原论文:作为经常使用的两种提升树算法,论文对于原理的介绍也更加详细一些。强推XGBoost的原论文,LightGBM则需要在网上查阅一些其他资料来辅助理解。

深度学习

深度学习(花书):对于深度学习的理论讲解比较详细,适合作为深度学习的入门书籍。

强化学习

Sutton的强化学习:读过一小部分,对于算法理论的介绍很详细,阅读起来难度较大。

实践

集体智慧编程:包含了许多机器学习在Web应用开发中的实际案例,并且有详细代码,同时不会涉及太多的理论细节。这本书适合作为入门书籍来阅读,可以了解机器学习技术的一些落地场景。

机器学习实战:使用Numpy自己实现常见的机器学习算法,如果跟着实践一遍对于算法理解很有帮助。

机器学习实用指南:前半本讲Scikit-learn的用法,后半本讲的是TensorFlow的用法,带有详细代码,而且GitHub里面也有写好的Jupyter文档。前半部分的内容基本涵盖了用Scikit-learn做机器学习的基本步骤以及常用算法的示例。至于后半部分……嗯,PyTorch真香:)。

深度学习框架PyTorch-入门与实践:介绍了PyTorch的基本用法,并且给了一些实际案例,涵盖了图像与语言处理的一些应用示例。跟着示例做2~3个实际案例基本上就可以掌握PyTorch的用法。不过PyTorch更新较快,书中一些代码可能会过时,可以参照PyTorch官方文档查找相关API稍作修改。

网络安全

密码学

深入浅出密码学:对于一些常用的加解密算法介绍比较详细,但是密码学理论的介绍则比较少。

Introduction to Modern Cryptography:对于密码学的理论讲解的比较详细,但是对于实际应用则讲解的不多,适合与深入浅出密码学互为补充。