真正了解核心 - Linux 後端工程開發實作

萬木春 編著

  • 出版商: 深智
  • 出版日期: 2025-06-19
  • 定價: $1,080
  • 售價: 7.9$853
  • 語言: 繁體中文
  • 頁數: 672
  • ISBN: 6267569950
  • ISBN-13: 9786267569955
  • 相關分類: Linux
  • 此書翻譯自: Linux 後端開發工程實踐
  • 尚未上市,歡迎預購

  • 真正了解核心 - Linux 後端工程開發實作-preview-1
  • 真正了解核心 - Linux 後端工程開發實作-preview-2
  • 真正了解核心 - Linux 後端工程開發實作-preview-3
  • 真正了解核心 - Linux 後端工程開發實作-preview-4
  • 真正了解核心 - Linux 後端工程開發實作-preview-5
  • 真正了解核心 - Linux 後端工程開發實作-preview-6
  • 真正了解核心 - Linux 後端工程開發實作-preview-7
  • 真正了解核心 - Linux 後端工程開發實作-preview-8
  • 真正了解核心 - Linux 後端工程開發實作-preview-9
  • 真正了解核心 - Linux 後端工程開發實作-preview-10
  • 真正了解核心 - Linux 後端工程開發實作-preview-11
  • 真正了解核心 - Linux 後端工程開發實作-preview-12
  • 真正了解核心 - Linux 後端工程開發實作-preview-13
  • 真正了解核心 - Linux 後端工程開發實作-preview-14
  • 真正了解核心 - Linux 後端工程開發實作-preview-15
  • 真正了解核心 - Linux 後端工程開發實作-preview-16
  • 真正了解核心 - Linux 後端工程開發實作-preview-17
真正了解核心 - Linux 後端工程開發實作-preview-1

相關主題

商品描述

◆從零建置:Linux基礎與環境設定

Shell腳本:變數、流程控制、偵錯

◆編譯連結:掌握程式轉化機制

Git版控:版本管理與分支協作

◆網路基礎:TCP/IPsocket通訊

◆高併發:多程式、多執行緒、I/O多工

◆後端架構:守護程式、日誌、啟停

◆協定設計:序列化與應用層格式

MyRPC框架:事件分發與併發模型

◆微服務叢集:RedisUser/Auth整合

◆工具集:壓力測試、介面測試、生成

◆思維養成:跨語言、動手實踐、工匠魂

【內容簡介】

本書從內容上可分為三大部分:基礎部分、進階部分和高級部分。

基礎部分(第16章)的內容主要包括Linux後端開發概述、開發環境架設、伺服器運行維護、shell程式設計簡介、實現簡易shell以及使用Git管理程式等方面的知識。

進階部分(第710章)的內容主要包括C/C++程式的編譯、連結、執行與偵錯,後端服務撰寫,網路通訊基礎以及I/O模型與併發等方面的知識。

高級部分(第1114章)的內容主要包括公共程式提煉、應用層協定設計與實現、MyRPC框架設計與實現以及微服務叢集等方面的知識。

這些內容將幫助讀者更深入地了解Linux C/C++後端開發的高級技術。

 

【目標讀者】

C/C++ 開發人員。

Linux 後端開發人員。

大專院校電腦相關專業的師生及教育訓練學校的學員。

Linux 後端開發感興趣,或希望從事Linux 後端開發的人員。

作者簡介

萬木春(筆名)

資深的後端開發工程師,在Linux後端開發領域深耕10多年;曾在字節跳動等互聯網公司從事後端開發工作;目前,在從事金融領域相關業務的設計、架構搭建與研發工作;擁有豐富的實踐經驗,擅長解決複雜的技術難題。

目錄大綱

▌第1章 概述
1.1 本書不會涉及的內容
1.2 本書專注的內容
1.3 為什麼這麼安排
1.4 Linux 是什麼

1.5 後端開發是什麼
1.6 您將學到什麼
1.7 程式目錄結構說明

1.7.1 目錄MyRPC
1.7.2 第三方相依
1.8 如何學習Linux 後端開發
1.8.1 堅持不懈的心態
1.8.2 以問題作為切入點
1.8.3 動手實踐和創造
1.9 本章小結

▌第2章 開發環境架設
2.1 本機開發環境
2.1.1 程式編輯器
2.1.2 終端管理器
2.1.3 測試工具
2.2 遠端執行環境
2.3 本章小結

▌第3章 伺服器運行維護
3.1 什麼是shell
3.2 shell 下的命令列

3.2.1 命令列的組成
3.2.2 大部分命令具備的共通性
3.2.3 使用man 命令查詢線上手冊
3.2.4 命令和檔案補全
3.2.5 命令列的萬用字元和特殊符號
3.2.6 內建命令與外部命令
3.3 基本的命令操作
3.3.1 螢幕相關
3.3.2 目錄和檔案相關
3.3.3 處理程序相關
3.3.4 網路相關
3.3.5 系統相關
3.3.6 使用者相關
3.3.7 命令執行相關
3.3.8 日期相關
3.4 man 的替代工具
3.5 命令黏合劑:管道機制

3.5.1 如何使用管道
3.5.2 行過濾命令grep
3.5.3 文字分析處理工具awk
3.5.4 串流編輯命令sed
3.5.5 參數傳遞命令xargs
3.5.6 其他常用的輔助命令
3.6 命令輸入/ 輸出的重定向
3.7 命令的連續執行
3.8 vi 編輯器簡介
3.9 本章小結

▌第4章 shell 程式設計簡介
4.1 什麼是shell 程式設計
4.2 「hello world」程式
4.3 shell 的執行過程
4.4 偵錯
4.5 執行方式的不同

4.5.1 直接執行
4.5.2 使用bash 來執行
4.5.3 使用source 或英文點號「.」來執行
4.6 變數
4.6.1 環境變數
4.6.2 自訂變數
4.6.3 特殊變數
4.6.4 在C 語言中作業環境變數
4.6.5 查看處理程序執行時期的環境變數
4.7 選擇與判斷
4.7.1 test 命令與判斷符號「[]」
4.7.2 if 敘述
4.7.3 case 敘述
4.8 迴圈
4.8.1 while 迴圈
4.8.2 until 迴圈
4.8.3 for 迴圈
4.8.4 break 敘述和continue 敘述
4.9 函數
4.10 命令選項
4.11 本章小結

▌第5章 實現簡易shell
5.1 實現的特性
5.2 執行邏輯
5.3 實現原理

5.3.1 命令列解析
5.3.2 特性實現
5.3.3 函數介紹
5.4 程式實作
5.5 特性測試
5.6 本章小結

▌第6章 使用Git 管理程式
6.1 初始化
6.1.1 安裝Git 工具
6.1.2 設置使用者名稱和電子郵件
6.1.3 建立倉庫
6.1.4 建立readme.md 檔案
6.1.5 建立.gitignore 檔案
6.2 核心概念
6.3 常用操作

6.3.1 查看當前倉庫的狀態
6.3.2 增加檔案
6.3.3 刪除檔案
6.3.4 回退變更
6.3.5 查看提交日誌
6.3.6 查看差異
6.3.7 分支管理
6.3.8 其他操作
6.4 團隊協作
6.4.1 同步程式倉庫
6.4.2 建立自己的分支
6.4.3 推送分支到遠端倉庫
6.4.4 發起合入請求
6.4.5 發佈變更
6.5 本章小結

▌第7章 編譯、連結、執行與偵錯
7.1 單檔案程式的編譯與連結
7.1.1 前置處理階段
7.1.2 編譯階段
7.1.3 組合語言階段
7.1.4 連結階段
7.1.5 ELF 概述
7.1.6 符號解析與重定位
7.2 專案工程的編譯與連結
7.2.1 makefile
7.2.2 一個實例
7.2.3 實現簡易的make 命令
7.2.4 常用的編譯和連結選項
7.3 動態連結與靜態連結
7.4 Linux 動態連結程式庫規範

7.4.1 動態連結程式庫的命名
7.4.2 動態連結程式庫的三個不同名稱
7.4.3 動態連結程式庫的管理
7.5 自訂的動態連結程式庫
7.5.1 相關原始程式碼
7.5.2 生成攜帶「so name」的動態連結程式庫
7.5.3 生成不攜帶「so name」的動態連結程式庫
7.6 處理程序的記憶體模型
7.6.1 處理程序的虛擬位址空間版面配置
7.6.2 堆疊與堆積的區別
7.6.3 經典問題剖析
7.7 偵錯工具
7.7.1 gdb 的啟動
7.7.2 gdb 常用命令
7.8 本章小結

▌第8章 後端服務撰寫
8.1 守護處理程序
8.1.1 什麼是守護處理程序
8.1.2 守護處理程序如何撰寫
8.1.3 程式實現
8.2 設置資源限制
8.3 訊號處理
8.4 載入配置功能
8.5 命令列參數解析

8.6 日誌輸出功能
8.7 服務啟停指令稿

8.7.1 載入系統附帶的shell 函數
8.7.2 服務相關變數宣告
8.7.3 服務啟動函數
8.7.4 服務停止函數
8.7.5 服務重新啟動函數
8.7.6 服務狀態查看函數
8.7.7 case 敘述
8.8 本章小結

▌第9章 網路通訊基礎
9.1 TCP/IP 協定層概述
9.2 物理層與資料連結層

9.2.1 物理層
9.2.2 資料連結層
9.3 網路層
9.3.1 網際協定的特點
9.3.2 IP 資料封包格式
9.3.3 IP 位址
9.3.4 路由選擇
9.3.5 ARP 與RARP
9.3.6 ICMP
9.4 傳輸層
9.4.1 UDP
9.4.2 TCP
9.5 網路程式設計介面
9.5.1 TCP 網路通訊的基本流程
9.5.2 socket 網路程式設計
9.6 TCP 經典異常場景分析
9.6.1 場景1:Address already in use
9.6.2 場景2:Connection refused
9.6.3 場景3:Broken pipe
9.6.4 場景4:Connection timeout
9.6.5 場景5:Connection reset by peer
9.7 本章小結

▌第10章 I/O 模型與併發
10.1 I/O 模型概述
10.1.1 阻塞I/O
10.1.2 非阻塞I/O
10.1.3 I/O 多工
10.1.4 非同步I/O
10.2 併發實例——EchoServer
10.2.1 Echo 協定
10.2.2 程式碼協同
10.2.3 benchmark 工具
10.2.4 單處理程序
10.2.5 多處理程序
10.2.6 多執行緒
10.2.7 處理程序池1
10.2.8 處理程序池2
10.2.9 執行緒池
10.2.10 簡單的領導者- 跟隨者模型
10.2.11 I/O 多工之select( 單處理程序)- 阻塞I/O
10.2.12 I/O 多工之poll( 單處理程序)- 阻塞I/O
10.2.13 I/O 多工之epoll( 單處理程序)- 阻塞I/O
10.2.14 I/O 多工之epoll( 單處理程序)-Reactor
10.2.15 I/O 多工之epoll( 單處理程序)-Reactor-ET 模式
10.2.16 I/O 多工之epoll( 單處理程序)-Reactor- 程式碼協同池
10.2.17 I/O 多工之epoll( 執行緒池)-Reactor
10.2.18 I/O 多工之epoll( 執行緒池)-Reactor-HSHA
10.2.19 I/O 多工之epoll( 執行緒池)-Reactor-MS
10.2.20 I/O 多工之epoll( 處理程序池)-Reactor- 程式碼協同池
10.3 基準性能對比與分析
10.3.1 非I/O 重複使用模型對比
10.3.2 I/O 重複使用模型對比
10.3.3 epoll 下LT 模式和ET 模式對比
10.3.4 epoll 下程式碼協同池模式和非程式碼協同池模式對比
10.3.5 HSHA 模式下工作執行緒和I/O 執行緒寫入應答對比
10.3.6 MS 模式下MainReactor 執行緒是否監聽讀取事件對比
10.3.7 epoll 下動態和固定逾時時間對比
10.3.8 epoll 下處理程序池和執行緒池對比
10.4 本章小結

▌第11章 公共程式提煉
11.1 參數列表
11.2 命令列參數解析
11.3 字串
11.4 設定檔讀取
11.5 延遲執行
11.6 單例範本
11.7 百分位數計算
11.8 堅固的I/O
11.9 時間處理
11.10 狀態碼
11.11 轉換
11.12 socket 選項
11.13 「龍套」
11.14 日誌
11.15 服務鎖
11.16 本章小結

▌第12章 應用層協定設計與實現
12.1 協定概述
12.2 協定分類

12.2.1 按編碼方式對協定進行分類
12.2.2 按邊界劃分方式對協定進行分類
12.3 協定評判
12.4 自訂協定的優缺點

12.4.1 優點
12.4.2 缺點
12.5 協定設計
12.5.1 協定訊息格式
12.5.2 協定設計權衡
12.6 預備知識
12.6.1 大小端
12.6.2 位元組序
12.6.3 位元組序的互轉
12.6.4 記憶體物件與版面配置
12.6.5 指標類型的本質
12.6.6 序列化與反序列化
12.7 其他協定
12.7.1 HTTP 訊息格式
12.7.2 RESP 訊息格式
12.8 協定實現
12.8.1 協定編解碼抽象
12.8.2 MySvr 實現
12.8.3 HTTP 實現
12.8.4 RESP 實現
12.8.5 混合協定實現
12.8.6 共通性總結
12.9 本章小結

▌第13章 MyRPC 框架設計與實現
13.1 框架概述
13.2 併發模型
13.3 框架具體實現

13.3.1 服務啟動流程
13.3.2 事件分發流程
13.3.3 伺服器端請求處理流程
13.3.4 用戶端請求處理流程
13.3.5 分散式呼叫堆疊追蹤
13.3.6 逾時管理
13.3.7 本機程式碼協同變數管理
13.3.8 業務層的併發
13.4 範例服務Echo
13.4.1 目錄結構劃分
13.4.2 服務描述檔案
13.4.3 服務啟動
13.4.4 業務處理
13.4.5 配置與說明文件
13.4.6 通用的服務啟停指令稿
13.4.7 介面測試
13.5 工具集合
13.5.1 服務程式生成工具myrpcc
13.5.2 介面測試工具myrpct
13.5.3 介面壓力測試工具myrpcb
13.6 本章小結

▌第14章 微服務叢集
14.1 叢集架構概述
14.2 持久化層

14.2.1 Redis 服務
14.2.2 authstore 服務
14.2.3 userstore 服務
14.3 業務邏輯層
14.3.1 auth 服務
14.3.2 user 服務
14.4 連線層
14.4.1 目錄結構
14.4.2 程式與配置
14.4.3 介面測試
14.5 本章小結

▌第15章 回顧總結
15.1 種思維模式

15.1.1 不要被程式語言所限制
15.1.2 掌握多種程式語言是必然的
15.1.3 電腦本身就是一個狀態機
15.1.4 動手是最好的實踐
15.1.5 依靠工具提高效率和品質
15.1.6 像工匠一樣為自己創造工具
15.2 寫在最後