当前位置: 首页 > news >正文

20年程序员生涯,读了200多本技术书,挑了几本精华好书分享给大家

不知不觉已经又走过了20个年头了,今年已经44了,虽然我已经退休在家,但一直都保持着读书的习惯,我每年平均要读10本技术书籍,保持不让自己的技术落伍。

在这里插入图片描述

这些年读的技术书不下200本,很多好书我都会保存在家,时长去翻阅。今天给大家推荐其中几本精华好书,建议做程序员的都去拜读一下。

借用著名作家冰心的一句话“读书好,多读书,读好书”。

除了编程语言的经典好书外,我还会给大家介绍算法等其他方面的进阶书籍,希望能帮到大家。

本文所涉书籍均已和出版社协商妥当,只为技术交流,无消费和其他引导,仅做参考。


一、C语言书籍

首先来说一下C语言书籍,这也是很多人问到我的一个问题了,C语言看什么书比较好? 我推荐这本《C Prime Plus》。

在这里插入图片描述

这本书基本上C语言的方方面面基本全涉及到了,相信有很多人都看过谭浩强先生那本教科书《C语言程序设计》,谭先生的这本书我也看过很多次了,但以我经验来看,我推荐的这本它要全得多、深得多,多吃透几遍很有用的。

在这里插入图片描述

版本的话, 建议大家去看最新版本的书籍,技术书籍经常会因为技术的更新而出新的版本,虽然改动不会很大,但咱们尽可能跟上最新的技术趋势为好。

对于C语言,进阶的话可以看看别的书,主要两方面的书籍,一个是指针,一个是内存,这两个是C语言里面最重要的东西了,《C和指针》、《C陷阱缺陷》、《C专家编程》都是不错的。


二、C++书籍

C+++书籍我给大家推荐两本,一本是非常经典的《C++ Primer》,另一本是《C++ Primer Plus》。

图片

这两本书的区别就在于,《C++ Primer Plus》更适合零基础的人去看,因为里面的内容更为简单一些,如果你具备或看过C++的东西,或者C语言基础比较好,《C++ Primer》这本书会更适合你。


三、Java书籍

Java书籍我力荐《Java编程思想》,在我看过的所有Java书籍里面,这是最全、最有深度的一本,如果错过了那就太可惜了。

在这里插入图片描述

当然,如果你Java基础不怎么好,可能看到后面会有点费劲,那么你可以从《Java核心技术》这本看起,它会比较合适,这本书有I卷和II卷,都非常不错。

图片

如果你想把Java作为一门职业语言的话,这3本书是一定要看的。


四、Python书籍

现在Python学习的人数是越来越多了,很多小伙伴在网上问我学Python应该看哪本书比较好,那么我给大家推荐两本。

第一本是《流畅的python》,这是一本适合中高级程序员去的Python好书。

在这里插入图片描述

当你学了一些Python之后想要进阶学习,《流畅的Python》就相当适合,它会让你从底层进一步了解Python,它基本不涉及入门级内容,反而聚焦在数据模型、数据结构、函数对象、面向对象、控制流程与元编程等话题上。

如果你是新手的话,就不要去读《流畅的Python》了,可以去读《Python从入门到实践》。

这也是Python的经典好书之一,内容通俗易懂,新手上路没有问题,里面还结合了很多练手项目,就像书名所说的,学完你就能从入门到实践。

在这里插入图片描述


五、Go语言书籍

GO语言给大家推荐一本我最近也在看的书《GO语言实战》,也叫《Go In Action》,这本书是由国外书籍翻译过来的,比较薄,但非常通俗易懂,市面上经典的Go语言书籍并不多,这本书作为入门书籍我觉得是不错的。
在这里插入图片描述


进阶一:数据结构与算法书籍

当我们掌握了C语言/C++/Java/Python/GO中的一两门语言,已经入门了之后,就满足了找工作的第一要素,那么我们就需要深入地了解IT行业里面比较重要的IT技术了,这不仅会是面试的时候会涉及的内容,面试官会探测你的技术深度,而且会在工作中实际经常用到。

对于编程工作而言,除了语言的精通,最最重要的就是数据结构与算法了。

这方面我给大家推荐《算法导论》这本书,这本书不适合初学者,因为这本书要求你有很强的数学功底以及比较深的数据结构与算法的基础底子。

在这里插入图片描述

相比较上一本书而言,《算法》这本书就比较好接受了,应该适合绝大多数学数据结构和算法的小伙伴们。这本书它基础的数据结构与算法都非常全面的涉及了,基本上就是可以成为你把数据结构和算法学得不错的一本书了。
在这里插入图片描述


进阶二:计算机网络书籍

计算机网络也是找工作很重要的一个东西了,必须掌握,计算机网络在狭义一点理解其实就是TCP/IP协议栈。

首先我一直觉得《TCP/IP详解》这本书是我看计算机网络或者说TCP/IP协议栈最好的一本书。虽然说这本书大家觉得很晦涩,太经典了,所以是必须要推荐。当然还有一本《计算机网络 自顶向下》,纵观所有计算机网络方面的书籍,我觉得目前是没有其他比它们俩更好的书籍了,那么可以从中二选一来看。

图片


进阶三:Linux系统书籍

找工作必备的一个技能就是Linux操作系统,众所周知,C语言开发很少在windows上做,基本上都是基于Linux操作系统在做,作为一名优秀的程序员,对于Linux的了解是必不可少的。

首先给大家推荐鸟哥的《linux私房菜》,这本书主要讲Linux操作系统的使用,因为就是主要还是命令,很适合当工具书,如果你对里面的内容基本都熟悉,那你一定能派上用场,不需要你记住细节,但你要大致能知道哪个命令是干啥的,建议大家诵读一遍。

在这里插入图片描述

《linux私房菜》讲的还只是Linux操作系统的使用层面,但如果你想学会在Linux操作系统上编程,建议去看这本叫《Unix环境高级编程》,C语言学得再好,不会在Linux操作系统上编程实战,那么也只是一个玩具而已。

《Unix环境高级编程》会讲很多实战方面的内容,比如文件IO、多线程编程、网络、套接字等等,非常实用和经典。

在这里插入图片描述


进阶四:代码质量书籍

最后给大家推荐一下代码质量方面的书,也是我对我影响最大的一本书,从中收获了很多的心得和技能,《重构 改善既有代码的设计》,这本书讲的就是最佳实战,当然你需要有一定的编程基础。

在这里插入图片描述

这些书都是非常经典,我觉得几乎都是必读技术书籍,如果你看完了,找工作应该不是问题,如果你再配上一些实操和开源项目联系的话,那找一份好工作也问题不大,很多书籍我觉得在读书的时候就应该看了的,所以分享给大家,一起共勉。


结语

学编程从来都不是一朝一夕的事情,那些跟你说几天就能精通某个语言的,全是在忽悠人

我自己很喜欢Python,收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你,干货内容包括:

在这里插入图片描述

点击文末的名片可以抱走
在这里插入图片描述

相关文章:

20年程序员生涯,读了200多本技术书,挑了几本精华好书分享给大家

不知不觉已经又走过了20个年头了,今年已经44了,虽然我已经退休在家,但一直都保持着读书的习惯,我每年平均要读10本技术书籍,保持不让自己的技术落伍。 这些年读的技术书不下200本,很多好书我都会保存在家&a…...

C++ 手写一个WebServer

文章目录 前言一、WebServer的原理刨析二、HTTP协议基础三、C++代码实战四、运行测试前言 本文由:我不会画饼呀 提供建议 大家如果有什么想看的文章(想了解的知识点),都可以在本专栏文章底部评论,或者私信我,在有能力的前提下,我都会尽量给大家写出来,供大家学习参考 …...

Elasticsearch 简介与安装

简介 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库—​无论是开源还是私有。 但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java…...

Qt5.12实战之QByteArray与字符指针及字符串转换

示例源码:#include <QCoreApplication> #include <QDebug> #include <QTextStream> static QTextStream cout (stdout,QIODevice::WriteOnly); #include <iostream> #include <QtGlobal> #include <QByteArray>void test() {qDebug() <…...

二、ElasticSearch基础语法

目录一、简单了解ik分词器(分词效果)1.standard(单字分词器&#xff0c;es默认分词器)2.ik_smart分词(粗粒度的拆分)3.ik_max_word分词器&#xff08;最细粒度拆分&#xff09;二、指定默认分词器1.为索引指定默认分词器三、ES操作数据1.概述2.创建索引3.查询索引4.删除索引5.添…...

Yolov8详解与实战

文章目录摘要模型详解C2F模块Losshead部分模型实战训练COCO数据集下载数据集COCO转yolo格式数据集&#xff08;适用V4&#xff0c;V5&#xff0c;V6&#xff0c;V7&#xff0c;V8&#xff09;配置yolov8环境训练测试训练自定义数据集Labelme数据集摘要 YOLOv8 是 ultralytics …...

多线程案例——阻塞队列

目录 一、阻塞队列 1. 生产者消费者模型 &#xff08;1&#xff09;解耦合 &#xff08;2&#xff09;“削峰填谷” 2. 标准库中的阻塞队列 3. 自己实现一个阻塞队列&#xff08;代码&#xff09; 4. 自己实现生产者消费者模型&#xff08;代码&#xff09; 一、阻塞队列…...

学习优秀博文(【国产MCU移植】手把手教你使用RT-Thread制作GD32系列BSP)有感 | 文末赠书5本

学习优秀博文&#xff08;【guo产MCU移植】手把手教你使用RT-Thread制作GD32系列BSP&#xff09;有感 一篇优秀的博文是什么样的&#xff1f;它有什么规律可循吗&#xff1f;优秀的guo产32位单片机处理器是否真的能成功替换掉stm32的垄断地位&#xff1f; 本文博主以亲身经历聊…...

写用例写的焦头烂额?看看摸鱼5年的老点工是怎么写的...

给你个需求&#xff0c;你要怎么转变成最终的用例&#xff1f; 直接把需求文档翻译一下就完事了。 老点工拿到需求后的标准操作&#xff1a; 第一步&#xff1a;解析需求 先解析需求-找出所有需求中的动词&#xff0c;再列出所有测试点。测试点过程不断发散&#xff0c;对于…...

基于深度学习的鸟类检测识别系统(含UI界面,Python代码)

摘要&#xff1a;鸟类识别是深度学习和机器视觉领域的一个热门应用&#xff0c;本文详细介绍基于YOLOv5的鸟类检测识别系统&#xff0c;在介绍算法原理的同时&#xff0c;给出Python的实现代码以及PyQt的UI界面。在界面中可以选择各种鸟类图片、视频以及开启摄像头进行检测识别…...

零基础搭建Tomcat集群(超详细)

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…...

机器学习自学笔记——聚类

聚类的基本概念 聚类&#xff0c;顾名思义&#xff0c;就是将一个数据集中各个样本点聚集成不同的“类”。每个类中的样本点都有某些相似的特征。比如图书馆中&#xff0c;会把成百上千的书分成不同的类别&#xff1a;科普书、漫画书、科幻书等等&#xff0c;方便人们查找。每…...

注意下C语言整形提升

C语言整形提升 C语言整形提升是指在表达式中使用多种类型的数据时&#xff0c;编译器会自动将较小的类型转换为较大的类型&#xff0c;以便进行运算。在C语言中&#xff0c;整型提升规则如下&#xff1a; 如果表达式中存在short类型&#xff0c;则将其自动转换为int类型。 如…...

Go panic的学习

一、前言 我们的应用程序常常会出现异常&#xff0c;包括由运行时检测到的异常或者应用开发者自己抛出的异常。 异常在一些其他语言中&#xff0c;如c、java&#xff0c;被叫做Exception&#xff0c;主要由抛出异常和捕获异常两部分组成。异常在go语言中&#xff0c;叫做pani…...

讲解Linux中samba理论讲解及Linux共享访问

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的绽放&#xff0…...

【C++笔试强训】第三十二天

&#x1f387;C笔试强训 博客主页&#xff1a;一起去看日落吗分享博主的C刷题日常&#xff0c;大家一起学习博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a;夜色难免微凉&#xff0c;前方必有曙光 &#x1f31e;。 &#x1f4a6;&a…...

OpenAI GPT-4震撼发布:多模态大模型

OpenAI GPT-4震撼发布&#xff1a;多模态大模型发布要点GPT4的新功能GPT-4:我能玩梗图GPT4:理解图片GPT4:识别与解析图片内容怎样面对GPT4申请 GPT-4 API前言&#xff1a; &#x1f3e0;个人主页&#xff1a;以山河作礼。 &#x1f4dd;​&#x1f4dd;:本文章是帮助大家更加了…...

手把手教你 在linux上安装kafka

目录 1. 准备服务器 2. 选一台服务器配置kafka安装包 2.1 下载安装包 2.2 解压安装包 2.3 修改配置文件 3. 分发安装包到其他机器 4. 修改每台机器的broker.id 5. 配置环境变量 6. 启停kafka服务 6.1 启动kafak服务 6.2 停止kafka服务 1. 准备服务器 1.买几台云服务…...

Spring Cloud(微服务)学习篇(五)

Spring Cloud(微服务)学习篇(五) 1 nacos配置文件的读取 1.1 访问localhost:8848/index.html并输入账户密码后进入nacos界面并点击配置列表 1.2 点击右侧的号 1.3 点击加号后,进入新建配置界面,并做好如下配置 1.4 往下翻动,点击发布按钮 1.5 发布成功后的界面 1.6 在pom.xml…...

道阻且长,未来可期,从GPT-4窥得通用人工智能时代的冰山一角!

大家这两天是不是又被满屏的ChatGPT相关的文章信息给轰炸得不轻&#xff0c;说实话&#xff0c;我真的对ChatGPT的热度如此经久不衰这个问题非常感兴趣。从去年刚面世时&#xff0c;小范围内造成的行业震荡&#xff0c;到今年二月份铺天盖地得铺舆论造势&#xff0c;引发全民热…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

Unity3D中Gfx.WaitForPresent优化方案

前言 在Unity中&#xff0c;Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染&#xff08;即CPU被阻塞&#xff09;&#xff0c;这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案&#xff1a; 对惹&#xff0c;这里有一个游戏开发交流小组&…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

均衡后的SNRSINR

本文主要摘自参考文献中的前两篇&#xff0c;相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程&#xff0c;其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt​ 根发送天线&#xff0c; n r n_r nr​ 根接收天线的 MIMO 系…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...