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

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

出版日期:
2025/06/22
9
1,080972
查詢門市庫存
◆從零建置:Linux基礎與環境設定
◆Shell腳本:變數、流程控制、偵錯
◆編譯連結:掌握程式轉化機制
◆Git版控:版本管理與分支協作

內容簡介

https://youtu.be/ubvfFJ_KayI

◆從零建置:Linux基礎與環境設定
◆Shell腳本:變數、流程控制、偵錯
◆編譯連結:掌握程式轉化機制
◆Git版控:版本管理與分支協作
◆網路基礎:TCP/IP、socket通訊
◆高併發:多程式、多執行緒、I/O多工
◆後端架構:守護程式、日誌、啟停
◆協定設計:序列化與應用層格式
◆MyRPC框架:事件分發與併發模型
◆微服務叢集:Redis、User/Auth整合
◆工具集:壓力測試、介面測試、生成
◆思維養成:跨語言、動手實踐、工匠魂

【內容簡介】
本書從內容上可分為三大部分:基礎部分、進階部分和高級部分。
基礎部分(第1~6章)的內容主要包括Linux後端開發概述、開發環境架設、伺服器運行維護、shell程式設計簡介、實現簡易shell以及使用Git管理程式等方面的知識。
進階部分(第7~10章)的內容主要包括C/C++程式的編譯、連結、執行與偵錯,後端服務撰寫,網路通訊基礎以及I/O模型與併發等方面的知識。
高級部分(第11~14章)的內容主要包括公共程式提煉、應用層協定設計與實現、MyRPC框架設計與實現以及微服務叢集等方面的知識。
這些內容將幫助讀者更深入地了解Linux C/C++後端開發的高級技術。

【目標讀者】
• C/C++ 開發人員。
• Linux 後端開發人員。
• 大專院校電腦相關專業的師生及教育訓練學校的學員。
• 對Linux 後端開發感興趣,或希望從事Linux 後端開發的人員。

展開看更多

產品目錄

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

作者介紹

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

規格

誠品貨碼 / 2682920454002
ISBN13 / 9786267569955
ISBN10 /
EAN貨碼 / 9786267569955
頁數 / 672
裝訂 / P:平裝
語言 / 1:中文/繁體
尺寸 / 17X23X2.92CM
級別 / N:無

退貨說明

退貨須知:

  1. 依照消費者保護法的規定,您享有商品貨到次日起七天猶豫期(含例假日)的權益(請注意!猶豫期非試用期),辦理退貨之商品必須是全新狀態(不得有刮傷、破損、受潮)且需完整(包含全部商品、配件、原廠內外包裝、贈品及所有附隨文件或資料的完整性等)。
  2. 請您以送貨廠商使用之包裝紙箱將退貨商品包裝妥當,若原紙箱已遺失,請另使用其他紙箱包覆於商品原廠包裝之外,切勿直接於原廠包裝上黏貼紙張或書寫文字。若原廠包裝損毀將可能被認定為已逾越檢查商品之必要程度,本公司得依毀損程度扣除回復原狀必要費用(整新費)後退費;請您先確認商品正確、外觀可接受,再行拆封,以免影響您的權利;若為產品瑕疵,本公司接受退貨。

依「通訊交易解除權合理例外情事適用準則」,下列商品不適用七日猶豫期,除產品本身有瑕疵外,不接受退貨:

  1. 易於腐敗、保存期限較短或解約時即將逾期。(如:生鮮蔬果、乳製品、冷凍冷藏食材、蛋糕)
  2. 依消費者要求所為之客製化給付。(如:客製印章、鋼筆刻字)
  3. 報紙、期刊或雜誌。
  4. 經消費者拆封之影音商品或電腦軟體。
  5. 非以有形媒介提供之數位內容或一經提供即為完成之線上服務,經消費者事先同意始提供。(如:電子書)
  6. 已拆封之個人衛生用品。(如:內衣褲、襪類、褲襪、刮鬍刀、除毛刀等貼身用品)
  7. 國際航空客運服務。

若您退貨時有下列情形,可能被認定已逾越檢查商品之必要程度而須負擔為回復原狀必要費用(整新費),或影響您的退貨權利,請您在拆封前決定是否要退貨:

  1. 以數位或電磁紀錄形式儲存或著作權相關之商品(包含但不限於CD、VCD、DVD、電腦軟體等) 包裝已拆封者(除運送用之包裝以外)。
  2. 耗材(包含但不限於墨水匣、碳粉匣、紙張、筆類墨水、清潔劑補充包等)之商品包裝已拆封者(除運送用之包裝以外)。
  3. 衣飾鞋類/寢具/織品(包含但不限於衣褲、鞋子、襪子、泳裝、床單、被套、填充玩具)或之商品缺件(含購買商品、附件、內外包裝、贈品等)或經剪標或下水或商品有不可回復之髒污或磨損痕跡。
  4. 食品、美容/保養用品、內衣褲等消耗性或個人衛生用品、商品銷售頁面上特別載明之商品已拆封者(除運送用之包裝外一切包裝、包括但不限於瓶蓋、封口、封膜等接觸商品內容之包裝部分)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
  5. 家電、3C、畫作、電子閱讀器等商品,除商品本身有瑕疵外,退回之商品已拆封(除運送用之包裝外一切包裝、包括但不限於封膜等接觸商品內容之包裝部分、移除封條、拆除吊牌、拆除貼膠或標籤等情形)或已非全新狀態(外觀有刮傷、破損、受潮等)與包裝不完整(缺少商品、附件、原廠外盒、保護袋、配件紙箱、保麗龍、隨貨文件、贈品等)。
  6. 退貨程序請參閱【客服專區→常見問題→誠品線上退貨退款】之說明。
付款/配送