死磕 Linux !

简介: Linux 系统

大家好,我是小林。

在知乎看到一个问题:为什么计算机专业的学生要学习使用 Linux 系统?

16.png

在这里,也同步分享下我的想法。

很简单,也很直接一个原因:很多互联网大公司都有大量的服务器运行在基于 Linux 的操作系统。因此,我们工作不可避免会接触 Linux 系统。

不过,也要看岗位:

  • 后端开发岗、运维岗工作都会涉及 Linux 系统;
  • 客户端、前端开发涉及就比较少;

之所以服务器选择用 Linux 操作系统,原因有很多:

  1. 自由开源:Linux 操作系统完全免费且可用作开源软件,通过开源方式,您可以轻松查看用于创建 Linux 内核的可用代码,还可以修改代码以修复任何错误等。只要你做够厉害,你完全可以按照自己的方式构建和自定义服务器。这些是在 windows 上无法实现的。
  2. 稳定性:在 windows 上,我们进程看到系统崩溃或者卡死,但是在 Linux 上,这种情况发生的几率极小,Linux 系统以其最终的稳定性而闻名。
  3. 成本低:Linux 是免费的,如果你想在其中一台服务器上安装 Windows,则需要支付激活费用,这意味着你需要多花一笔钱。
  4. 操作方便:对于普通人来说,Windows 操作更为快捷,但是对计算机专业人士来讲,Linux 操作比 Windows 快捷的多,几条命令就可以执行很多的操作。

接下来,跟大家聊下 Linux 怎么学习?

Linux 学习主要有三个方向:

  • Linux 命令:Linux 系统都是命令式操作的,就是比如你要创建一个文件、查看一个文件、删除一个文件等,都是需要输入命令, 所以要熟练用起 Linux 系统,命令的熟悉是必不可少的。
  • Linux 脚本:熟悉了基本 Linux 命令后,就可以去学习 Linux 脚本,其实很简单,就是把各种命令写在一个脚本文件里,执行脚本的时候就会把所有命令执行一遍,用于自动部署一些项目。
  • Linux 编程(系统编程/网络编程):如果走 C/C++ 开发,这一块就需要学习,因为 Linux 系统是由 C 语言开发的,所以系统调用接口,都是 C 式编程开发的。

我们可以在自己的 Windows 电脑装一个虚拟机,然后装一个 centos 或 ubuntu 发行版本的 Linux,网上的安装资源很多的,自己搜一搜跟着搭建就行。有条件可以买一个云服务器,使用起来会更方便一些,因为有公网 ip 地址,任何时候都可以远程登录使用。


Linux 命令学习


我当初学习 Linux 命令的时候,看的是《鸟哥私房菜Linux基础学习篇》,这本书讲的还是很通俗易懂的。


21.png


对于初学者可以先掌握这些基本 Linux 命令:

  • 文件/文件夹的查看、创建、删除、移动、复制、修改权限;
  • 文件内容的编辑、保存;
  • 系统内存、硬盘、cpu、网络流量的查看;
  • 软件的安装、删除;
  • ….


Linux 脚本学习


Linux 脚本常用使用就是 bash 环境,脚本编程其实跟 C 语言编程类似,也有变量定义、函数声明、控制语句,但是他不会很复杂,学起来还是很快的。

这里推荐阮一峰老师写的 Bash 编程教程。

20.png

地址:https://wangdoc.com/bash/grammar.html


Linux 编程(系统编程/网络编程)学习


Linux 系统编程,可以看《Linux 程序设计》这本书,学 Linux 编程一定要在多敲代码,并且在 Linux 跑起来。

18.png

接下来说说我学 Linux 网络编程的心得。

当初在学网络编程的时候,看见网上的人都说 UNP(Unix 网络编程)、APUE(Unix 高级环境编程)这两本书是网络编程圣经的书,那么好学的小林,那肯定毫无犹豫买了。

书到货后,我瞬间就懵逼了,这两本书是我买过最厚的书,这尼玛怎么学?

17.jpg

跟着书本的节奏,学了一段的时间,是懂了些 Linux 网络和系统 API 的用法,摸索来摸索去都是各个 API 的细节,始终不知道高并发网络框架是如何实现的。

后面我又重新找了一波关于网络编程的书,找到了这两本:《TCP/IP 网络编程》和《Linux高性能服务器编程》。

  • 《TCP/IP 网络编程》绝对是新手村级别的书,书里的内容不会有过多的术语,作者都用大白话来表达,配图也很清晰,也有介绍我想知道的网络框架,虽然是比较基础的多进程服务端模型、多线程服务端模型、异步 IO 模型。而且最后一章实现了简单的 HTTP 服务端,让我知道了从代码角度是怎么解析 HTTP 报文的,以及状态机是如何实现和运转的。
  • 《Linux高性能服务器编程》这本书主要是网络框架为主,前几章关于网络基础知识对于掌握了计算机网络知识的同学可以直接跳过的,你看,很多知识是想通的,当我们知道掌握了这块知识后,在学习新一本书的时候,就可以跳过重叠的内容。在这本书我学到了,Reactor、Proactor、信号、定时器、多进程编程、多线程编程、进程池和线程池等。
    这两本书让我大概知道了如果一个服务端要服务多个客户端时,不是就简单写个 socket 编程就完事,而是还要结合 IO 多路复用 + 多线程的思想,也就是 Reactor 的设计理念,知道了这些事情后,后面我在看很多开源框架的网络模型时候,发现大多数基于 Reactor 的思想来实现的。

有了网络编程总体的视角后,在需要深入理解 socket api 中各种属性设置(超时、非阻塞 IO、阻塞 IO 等)和异常处理就要回归 APUE 这本书。

到这里我才知道 UNP 和 APUE 为什么会被称为网络编程圣经级别的书,原因是书里各种细节和异常都写的很全,也很细致,可以应对工作中很多问题。

但是事实证明,它并不是个入门级的书,所以 UNP 和 APUE 的用途比较像字典,在需要的时候去查阅就好。


最后,列一下,我自己看过和在豆瓣高分的 Linux 的书籍,给大家供个参考。


命令学习


  • 《鸟哥的Linux私房菜 : 基础学习篇》,豆瓣评分9.1


系统编程


  • 《Linux程序设计》,豆瓣评分8.3
  • 《UNIX环境编程》,豆瓣评分9.4


网络编程


  • 《TCP/IP网络编程》韩国的,豆瓣评分8.6
  • 《Linux高性能服务器编程》,豆瓣评分7.9
  • 《Linux多线程服务端编程》,豆瓣评分8.8
  • 《UNIX网络编程》,豆瓣评分9.5


内核源码


《Linux内核设计与实现》,豆瓣评分8.6

《深入Linux内核架构》,豆瓣评分9.0


相关文章
|
开发框架 架构师 Java
《深入理解分布式事务:原理与实战》,不可错过的精品!
在分布式应用系统中,特别是在金融相关的场景下,分布式事务是大家都关注的核心技术,同样也是系统的技术难点。本书从数据库和服务的分布式基础开始,由浅入深阐述了分布式事务的原理、解决方案。这种以框架开发者视角分享的分布式事务实现的源码和实践用例,对于应用架构师和开发者都有极大的价值。
5548 2
《深入理解分布式事务:原理与实战》,不可错过的精品!
|
7月前
|
存储 人工智能 并行计算
阿里云六项满分!AI训推一体机权威报告发布
近日,IDC发布《中国AI训推一体机技术能力评估,2025》报告,阿里云在六大维度获满分,成为唯一性能满分厂商。其AI Stack提供轻量化、高性价比大模型解决方案,支持多行业智能化升级,已在政务、金融、制造等领域落地应用。
578 0
阿里云六项满分!AI训推一体机权威报告发布
|
存储 NoSQL 前端开发
美团面试:手机扫描PC二维码登录,底层原理和完整流程是什么?
45岁老架构师尼恩详细梳理了手机扫码登录的完整流程,帮助大家在面试中脱颖而出。该过程分为三个阶段:待扫描阶段、已扫描待确认阶段和已确认阶段。更多技术圣经系列PDF及详细内容,请关注【技术自由圈】获取。
|
Kubernetes 网络协议 API
node节点加入k8s集群时报错:no such host
node节点加入k8s集群时报错:no such host
688 0
|
Oracle Java 关系型数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
【服务器】python通过JDBC连接到位于Linux远程服务器上的Oracle数据库
513 6
|
安全 Linux 数据安全/隐私保护
探索 Linux 高级进程间通讯 D-Bus的神秘妙用
探索 Linux 高级进程间通讯 D-Bus的神秘妙用
2177 1
|
数据可视化 API 数据库
R包:disgenet2r|DisGeNET的懒癌福利,一行代码多种可视化
DisGeNET是整合基因-疾病关联数据的综合数据库,用于生物医学研究。disgenet2r是R包,方便访问DisGeNET数据,支持查询、检索和分析。最新版包含超百万基因-疾病关联。安装包时若遇到网络问题,可从GitHub下载源代码手动加载。常用功能包括检索单一疾病相关基因、多疾病联合分析及疾病富集。该包简化了数据获取和初步分析,适合初学者,但可视化定制性有限。
775 1
|
存储 Unix 程序员
非常详细!操作系统基础【文件系统实现】
非常详细!操作系统基础【文件系统实现】
|
存储 人工智能 算法
量子计算概述
量子计算概述
522 0
|
XML 编解码 算法
go语言|数据结构:二叉树可视化(制作svg格式树形图)
go语言|数据结构:二叉树可视化(制作svg格式树形图)
11576 2