高性能架構——多級網關與多級緩存實踐
簡介
本書特色
前言
章節列表
精彩閱讀
下載資源
相關圖書
內 容 提 要
“緩存”—在計算機領域中無處不在,幾乎在任何項目中都能看到“緩存”的影子。不論是移動互聯網、云計算還是大數據領域,“緩存”都可以提供更快速、更可靠、更高效的性能和體驗。正因如此,“多級緩存”這樣的架構理念在復雜的分布式或微服務系統中也被逐步地演變與應用。
本書依托實際案例,從基礎技術開始逐步深入探討多級緩存架構與多級網關的架構原理與應用,并且最終使用KubeSphere進行云原生的項目部署。本書也會引導讀者從基礎架構逐步進階為高級架構,并整體涵蓋基礎項目架構的搭建、緩存的應用、分布式架構、網關設計與應用、并發優化等方面的相關技術知識,從而使讀者對多級架構有更深入的了解。
本書主要分為三大部分。第一部分“基礎篇”會搭建基礎架構,并且實現本地緩存Caffeine與分布式緩存Redis的應用以及Redis進階。第二部分“進階篇”對項目的架構進行演變,結合Lua腳本實現網關業務邏輯,從而構建多級網關與多級緩存架構,以此實現基于網關的高并發操作。第三部分“云原生與DevOps”會對Kubernetes進行介紹,并且圍繞KubeSphere來落地,進行項目的流水線發布。
本書適合軟件開發工程師、系統架構師、運維工程師、測試工程師以及對構建高性能系統架構感興趣的讀者閱讀,不論你是初學者還是經驗豐富的專業技術人員,本書都將提供有價值的技術與知識。
本書從全方面的角度剖析了如何構建高性能的微服務系統,對于緩存模塊的深度分析給我
留下了深刻的印象,對于一般企業用戶來說利用好緩存技術尤為重要。另外,本書也介紹
了如何利用Kubernetes 容器化所有組件實現高可用,內容非常全面。
—— Eric.W 王剛 SHOP.COM 首席架構師
互聯網高性能系統的核心設計在于緩存與網關。本書通過將緩存、網關與OpenResty 相
結合,為大規模業務提供全面的防護機制和高性能解決方案。閱讀本書,不僅能幫助讀者
深入理解分布式多級架構,還能提升架構設計思維。
——石力軍(慕課網)技術總監
緩存和網關在現代復雜系統中是不可或缺的核心組件,既是提升性能的關鍵技術突破口,
也是系統架構的重要支柱。如今多級緩存和多級網關已經廣泛應用于各種規模的系統中,
承擔著大部分高并發流量,確保系統的穩定與高效。本書系統介紹了多級緩存與多級網關
的架構原理及實現方法,通過詳細講解和實際案例,幫助開發者深入理解并掌握多級架構
的精髓。無論是初學者還是經驗豐富的開發者,都能從中獲得寶貴的知識和實踐指導。
—— 顧佳書(蘇州科達)部門總監
本書深入剖析高性能多級網關與多級緩存架構,實戰性強,極具指導意義。從業務架構層
面看,它優化了流量管理與數據處理效率;在網絡安全層面,通過構建高可用網關集群與
負載均衡,增強了安全防護機制,確保業務安全。閱讀本書,可以幫助讀者構建高效且安
全的業務系統。
——王世宇 (安信安全)安全服務部經理
前 言
寫作緣起
2017年,我們團隊的項目在長期運營后遇到了技術瓶頸,不論采購多好的服務器,并發量與性能始終上不來,而采購多臺服務器組成集群雖然能提高一定的并發量,但是始終不盡如人意,而且硬件成本相當高。在這樣的情況下,我們團隊與架構組共同研討嘗試使用多級網關與多級緩存相互結合的方式來為項目提供服務。經過大量的測試與試運行,最終順利生產發布并獲得了很不錯的效果,發布一周后,我們的日流水達到了800萬,這相當令人興奮,讓老板對我們刮目相看,團隊也獲得了巨大的成就感。
正因如此,在近幾年的在線教育經歷中,我也在極力地向學員和身邊的公司推薦多級解決方案,以此解決性能與并發的痛點。在目前的互聯網大環境下,并發的情況幾乎隨處可見,所以當有極致并發出現的時候,我們不能僅通過Java后端來優化,而是要對環境和項目來進行全局性、綜合性的設計和優化。多級網關與多級緩存架構在如今的互聯網領域中起著至關重要的作用,對于高性能、高可擴展、高并發都具有重要的意義。
出于對技術教育的熱忱和對知識分享的欲望,我決定撰寫本書,也希望通過將多級架構的方案以概念、原理和實踐經驗融合的方式,為廣大讀者朋友提供一本系統的且易于理解的參考資料。我也希望通過本書為相關的技術從業者、在校學生、老師以及互聯網研究人員提供一個全面而準確的技術參考。
此外,我相信多級架構方案的重要性將會持續增加。隨著云計算、大數據、物聯網、人工智能、云原生等技術的快速發展,對于高效、高性能的數據讀寫和處理解決方案的需求也越來越迫切。我希望通過本書,能夠幫助讀者更好地理解和應用多級網關與多級緩存架構,從而使得大家可以在各自的技術領域中取得競爭優勢與技術成果。
最后,我希望本書能夠作為技術知識的傳遞媒介,激發讀者的技術思維與技術創造力,并且幫助讀者更好地理解和應用這一重要技術架構。我也非常希望讀者能夠深入研究和動手實踐,把本書中的各類方案實操應用到實際項目中。
如何正確閱讀本書
為了大家能夠充分利用本書的內容,筆者給出如下建議,確保大家可以有更好的閱讀以及學習體驗。
儲備基礎知識:本書是面向技術專業人士而編寫的,主要方向為Java編程和技術架構。如果讀者對多級網關與多級緩存感興趣,在開始閱讀之前,可以了解一些相關的基礎知識,這將有助于讀者更好地理解和消化本書的相關技術內容。
循序漸進:如果讀者對本書大多數的技術都不太了解,那么建議逐章閱讀本書,作者會從零講授,深入淺出地把各個相關技術點的方方面面進行講解,確保讀者獲得系統的知識技能。
輸入輸出并行學習:大家在學習的過程中通過閱讀來獲取知識,這是“輸入性操作”(也就是被動接收);而學習的同時如果能夠通過書中的各類實操,以及將代碼編寫應用到自己的項目中進行實現,那么則是“輸出性操作”(也就是主動實踐)。只有輸入輸出相互結合,大家才能更好地學習到多級網關與多級緩存架構的技術理念,而不會過了一個月甚至一周就忘卻。如此便能夠掌握學習的要點,甚至做出創新性的功能并將其應用到現實中。
結合其他資源閱讀:本書可以用來作為大家學習多級網關與多級緩存架構的催化劑,但建議大家閱讀本書的同時結合各類專項技術類書籍共同學習,比如RabbitMQ消息隊列、MySQL數據庫、SpringBoot&MyBatis等,通過多方面的學習,可以更好地促進自己的技術進步。另外,多在技術社區與論壇還有github參與交流以及issue提交,從而獲得更全面的學習效果。
按需閱讀:如果大家對書中部分章節已經非常熟悉并能熟練運用,那么可以選擇性跳過,直接去閱讀更有需求的其他章節,以此節約時間并提高閱讀效率。
提問交流:如果大家在閱讀本書和學習實操的過程中遇到一些問題或有不解之處,可以隨時隨地向作者提問,不論是通過作者的郵箱、github還是公眾號,都可以進行交流和討論,大家的互動和學習經驗也有助于作者對本書進行更好地改進。
期望大家在閱讀的過程中可以更好地享受多級網關與多級緩存架構這個技術領域,也期望本書能夠為大家打開技術落地的新思路和架構的拓展創新思維。祝大家閱讀愉快,并從中獲得實質性進步。
如何獲取源代碼、如何跟作者溝通、讀者勘誤如何反饋等
歡迎大家對本書勘誤,可以關注作者公眾號“風間影月”留言,也可以發郵件到leechenxiang@163.com,甚至讀者在工作的過程中遇到各類業務方案或者技術相關的難題,也都可以和作者交流相互探討。
此外,對于書中提及的所有代碼片段以及相關配置,筆者都將提交到如下git倉庫:https://github.com/leechenxiang/multi-level-architecture,歡迎大家隨時瀏覽。
大家的反饋和意見對于筆者來說將會是非常寶貴的動力和促進。
前言
致謝
基 礎 篇
第1章 基礎環境與軟件配備 2
1.1 Java的歷史發展簡介 2
1.2 JDK8的安裝 2
1.2.1 Java運行時環境JDK 2
1.2.2 Windows系統安裝JDK8 3
1.2.3 MacOS(Intel)系統安裝JDK8 9
1.2.4 MacOS(arm64)系統安裝JDK8 11
1.3 安裝Maven,配置項目工程的構建
管理工具 13
1.3.1 Maven概述 13
1.3.2 Windows系統安裝Maven 14
1.3.3 MacOS系統安裝Maven 16
1.3.4 配置阿里云鏡像倉庫 16
1.4 開發工具 17
1.5 本章小結 17
第2章 Docker容器化入門 19
2.1 內網互通原則 19
2.2 容器化引擎Docker 20
2.2.1 虛擬化與容器化技術 20
2.2.2 Docker的架構 21
2.2.3 Docker的隔離機制 22
2.2.4 Docker的安裝 22
2.2.5 Docker的啟動 23
2.2.6 Docker的加速 24
2.3 使用Docker安裝數據庫 26
2.3.1 使用Docker的pull命令拉取
鏡像 26
2.3.2 開啟CentOS7的ipv4 27
2.3.3 使用docker run運行鏡像 27
2.3.4 可視化數據庫工具 29
2.3.5 Docker命令 31
2.4 Docker鏡像的提交與推送 34
2.4.1 提交鏡像 34
2.4.2 自定義tag標簽 35
2.4.3 推送鏡像 35
2.5 本章小結 36
第3章 構建Web服務與接口 37
3.1 構建Web項目 37
3.1.1 使用Maven初始化項目 37
3.1.2 搭建SpringBoot工程 40
3.1.3 編寫Restful風格接口 45
3.1.4 dev與prod環境切換 47
3.2 集成持久層框架 48
3.2.1 集成數據源 48
3.2.2 整合MyBatis 50
3.2.3 數據構建 52
3.2.4 數據庫逆向工具 53
3.2.5 編寫service業務層 55
3.2.6 @Junit操作持久層 56
3.2.7 對外暴露接口服務 58
3.3 本章小結 60
第4章 本地緩存Caffeine 61
4.1 進程間與進程外緩存 61
4.1.1 什么是緩存 61
4.1.2 進程內緩存與分類 62
4.1.3 進程外緩存 64
4.2 使用Caffeine本地緩存 65
4.2.1 集成Caffeine 65
4.2.2 使用junit進行Caffeine測試 66
4.2.3 Caffeine的值為空設值操作 67
4.3 SpringBoot整合Caffeine本地緩存 68
4.3.1 集成Caffeine配置 68
4.3.2 使用Caffeine 69
4.4 本章小結 70
第5章 Redis緩存中間件 71
5.1 分布式緩存中間件Redis 71
5.1.1 非關系型數據庫的由來 71
5.1.2 分布式緩存Redis與NoSQL 72
5.1.3 Redis的Key-Value鍵值對 73
5.2 安裝Redis 74
5.2.1 安裝原生Redis 74
5.2.2 操作Redis的基本命令 76
5.2.3 使用可視化工具Redis Desktop
Manager 77
5.2.4 使用Docker安裝Redis 79
5.2.5 在Redis容器內部運行redis-cli 81
5.2.6 容器自動重啟 82
5.3 五大數據類型常用操作 82
5.3.1 string字符串類型 83
5.3.2 list數據類型 84
5.3.3 hash哈希數據類型 85
5.3.4 set無序集合數據類型 86
5.3.5 sorted set 可排序集合數據類型 87
5.4 Redis的存儲原理 88
5.4.1 Redis是怎么做持久化的 88
5.4.2 RDB持久化機制 88
5.4.3 RDB的自動保存機制 90
5.4.4 AOF持久化機制 92
5.4.5 使用AOF引發的思考 92
5.4.6 AOF的重寫配置 92
5.4.7 AOF與RDB的混合持久化 93
5.5 本章小結 95
第6章 分布式緩存的應用方案 96
6.1 SpringBoot與Redis集成 96
6.1.1 構建SpringBoot項目高可用
集群 96
6.1.2 SpringBoot整合Redis 99
6.1.3 Redis的通用工具操作類 102
6.1.4 Redis與本地緩存并肩作戰 109
6.2 分布式緩存問題延伸 111
6.2.1 緩存預熱 111
6.2.2 Redis緩存穿透 113
6.2.3 Redis緩存擊穿 115
6.2.4 Redis緩存雪崩 116
6.3 分布式系統的CAP理論 117
6.3.1 分布式系統 117
6.3.2 CAP是什么 118
6.3.3 CAP定理 119
6.3.4 CAP的組合搭配 121
6.4 緩存數據雙寫方案 121
6.4.1 存儲媒介發生數據不一致 121
6.4.2 數據庫與緩存雙寫不一致 123
6.4.3 數據庫與緩存雙寫一致方案 124
6.5 本章小結 126
第7章 Redis分布式鎖 127
7.1 分布式鎖 127
7.1.1 分布式鎖是什么 127
7.1.2 本地鎖是什么 128
7.1.3 分布式鎖的原理 129
7.1.4 數據庫悲觀鎖 129
7.1.5 數據庫樂觀鎖 130
7.2 Redis分布式鎖 131
7.2.1 setnx鎖機制 131
7.2.2 基于setnx的實現 131
7.2.3 鎖的自動續期 134
7.3 Redisson客戶端 135
7.3.1 Redisson 概述 135
7.3.2 Redisson配置 136
7.3.3 Redisson分布式鎖 137
7.3.4 Redisson公平鎖 138
7.3.5 Redisson聯鎖 139
7.4 本章小結 140
第8章 Redis集群高可用 141
8.1 Redis主從架構 141
8.1.1 Redis主從復制原理 141
8.1.2 構建Redis 主從架構 142
8.2 Redis哨兵架構 144
8.2.1 Redis哨兵架構原理 144
8.2.2 構建Redis哨兵形態 146
8.3 Redis高可用集群架構 147
8.3.1 Redis集群原理 147
8.3.2 構建Redis集群形態的準備
工作 149
8.3.3 Redis集群架構 Cluster實操 149
8.3.4 Redis集群的故障轉移 152
8.3.5 Redis集群數據存取 153
8.3.6 Redis集群水平擴容 154
8.3.7 Redis集群的十點總結 158
8.4 Redis緩存淘汰機制 158
8.5 本章小結 159
進 階 篇
第9章 nginx網關中間件 161
9.1 網關中間件nginx 161
9.1.1 nginx是什么 161
9.1.2 服務器的選型 162
9.1.3 反向代理與正向代理 164
9.2 安裝nginx與配置 165
9.2.1 下載并安裝nginx的依賴環境 165
9.2.2 安裝nginx到Linux系統中 166
9.2.3 詳解conf配置 168
9.3 nginx的基本應用 171
9.3.1 日志切割(手動) 171
9.3.2 日志切割(自動) 171
9.3.3 location請求的路由規則 172
9.3.4 靜態資源服務器 174
9.4 本章小結 176
第10章 集群與負載均衡 177
10.1 集群與分布式 177
10.1.1 集群與分布式的概念 177
10.1.2 負載均衡的概念 178
10.2 實現集群負載均衡 179
10.2.1 配置上游服務集群 179
10.2.2 負載均衡之輪詢 180
10.2.3 負載均衡之權重 181
10.2.4 負載均衡之ip_hash 181
10.2.5 負載均衡之url_hash 182
10.3 一致性哈希原理 182
10.4 OSI網絡模型原理 183
10.4.1 七層網絡模型 183
10.4.2 七層模型的歸類與合并 185
10.5 本章小結 187
第11章 Lua腳本語言基礎 188
11.1 Lua腳本 188
11.1.1 Lua腳本介紹 188
11.1.2 Lua腳本入門 189
11.2 Lua的數據類型 189
11.2.1 nil類型 189
11.2.2 boolean類型 190
11.2.3 number類型 190
11.2.4 string類型 191
11.2.5 function類型 191
11.2.6 table類型 192
11.3 Lua的循環與控制判斷 193
11.3.1 Lua的循環 193
11.3.2 Lua的控制判斷 195
11.3.3 Lua語法實操 195
11.4 本章小結 197
第12章 高性能OpenResty平臺 198
12.1 OpenResty 198
12.1.1 OpenResty 背景介紹 198
12.1.2 OpenResty與nginx的區別 198
12.1.3 OpenResty 所處架構位置 199
12.2 安裝OpenResty 201
12.2.1 OpenResty環境配置與安裝
—方式一 201
12.2.2 OpenResty環境配置與安裝
—方式二(推薦) 201
12.3 OpenResty的目錄結構與運行 202
12.3.1 OpenResty的目錄結構 202
12.3.2 測試訪問頁面 203
12.4 為OpenResty配置nginx的環境變量 203
12.5 本章小結 204
第13章 多級緩存落地 205
13.1 OpenResty結合Lua控制請求
與響應 205
13.1.1 OpenResty結合Lua自定義
數據響應 205
13.1.2 OpenResty結合Lua獲得
請求相關參數 207
13.2 Lua自定義請求反向代理 209
13.2.1 封裝GET請求 209
13.2.2 封裝POST請求 210
13.2.3 Lua控制請求轉發 211
13.3 多級緩存架構落地 212
13.3.1 lua-resty-redis 212
13.3.2 封裝Redis通用模塊 214
13.3.3 完成多級緩存架構閉環 216
13.4 本章小結 217
第14章 多級網關 218
14.1 多級網關集群 218
14.1.1 什么是多級網關 218
14.1.2 nginx構建OpenResty集群 219
14.2 OpenResty的本地緩存 221
14.2.1 定義共享字典(本地緩存) 221
14.2.2 共享字典與多級緩存業務的
結合 221
14.3 ApiPost性能壓測 223
14.3.1 壓力測試 223
14.3.2 ApiPost介紹 223
14.3.3 使用ApiPost進行接口調試 224
14.3.4 配置ApiPost的壓測場景 225
14.3.5 進行接口壓測 226
14.4 本章小結 227
第15章 多級緩存數據同步 228
15.1 緩存數據同步方案 228
15.1.1 緩存與數據庫不一致的
出現場景 228
15.1.2 消息隊列方案 228
15.1.3 Zookeeper方案 230
15.1.4 Canal方案 231
15.2 消息隊列 232
15.2.1 什么是消息隊列 232
15.2.2 消息隊列的技術選型 234
15.2.3 生產者與消費者 234
15.3 安裝RabbitMQ 236
15.3.1 Docker安裝RabbitMQ 236
15.3.2 RabbitMQ的可視化后臺管理 238
15.3.3 RabbitMQ的模型原理 240
15.4 緩存數據的一致性落地 241
15.4.1 緩存數據的同步過程 241
15.4.2 SpringBoot集成RabbitMQ 243
15.4.3 配置交換機與隊列 244
15.4.4 構建生產者—發送消息 246
15.4.5 構建消費者—監聽隊列 249
15.4.6 多節點對同一消息的監聽
處理 249
15.4.7 完成并測試緩存數據的同步 250
15.5 本章小結 253
第16章 OpenResty實踐 254
16.1 用戶請求頻率限制與黑名單 254
16.1.1 網關限流需求說明 254
16.1.2 封裝請求攔截函數 254
16.1.3 結合業務進行攔截 258
16.2 OpenResty集成MySQL 259
16.2.1 解讀lua-resty-mysql示例代碼 259
16.2.2 封裝MySQL請求函數 261
16.2.3 實現調用MySQL業務 263
16.2.4 轉發請求到sql查詢的Lua文件 264
16.3 本章小結 264
云原生與DevOps
第17章 云原生與KubeSphere 266
17.1 DevOps與CICD 266
17.1.1 DevOps概述 266
17.1.2 CICD概述 268
17.2 Kubernetes初探 270
17.2.1 Kubernetes概述 270
17.2.2 Kubernetes 可以用來做什么 271
17.2.3 Kubernetes架構原理 272
17.2.4 Kubernetes的Pod容器 274
17.3 KubeSphere的使用與安裝 275
17.3.1 KubeSphere 概述 275
17.3.2 KubeSphere環境準備 276
17.3.3 KubeSphere安裝 279
17.3.4 KubeSphere啟用DevOps 282
17.4 KubeSphere多租戶 285
17.4.1 KubeSphere多租戶系統 285
17.4.2 KubeSphere多租戶角色 285
17.4.3 KubeSphere多租戶賬號分配 286
17.4.4 KubeSphere 企業空間創建
與賬號綁定 288
17.4.5 KubeSphere項目負責人賬號
分配 291
17.5 本章小結 294
第18章 KubeSphere部署中間件 295
18.1 應用的狀態 295
18.1.1 有狀態應用 295
18.1.2 無狀態應用 295
18.1.3 KubeSphere項目的存儲、服務
與配置 296
18.2 KubeSphere部署中間件MySQL8 299
18.2.1 設置保密字典 299
18.2.2 設置配置字典 300
18.2.3 配置MySQL的持久卷PVC 302
18.2.4 創建MySQL的有狀態服務 304
18.2.5 為MySQL創建數據庫并導入
數據 309
18.3 部署Redis 312
18.3.1 創建Redis的配置字典
與持久卷 312
18.3.2 創建Redis有狀態服務 314
18.4 部署RabbitMQ 317
18.4.1 創建RabbitMQ的持久卷
與配置字典 317
18.4.2 創建RabbitMQ的無狀態服務 318
18.4.3 RabbitMQ無狀態服務對外
訪問 320
18.5 原生安裝OpenResty 323
18.6 本章小結 326
第19章 DevOps流水線發布項目 327
19.1 DevOps前置準備工作 327
19.1.1 DevOps部署流程 327
19.1.2 為流水線創建憑證 328
19.1.3 項目的生產配置 330
19.1.4 編寫DockerFile 332
19.1.5 編寫k8s-YAML部署文件 334
19.2 開始DevOps流程 338
19.2.1 推送代碼 338
19.2.2 創建項目流水線 342
19.2.3 拉取代碼 344
19.2.4 為流水線構建動態參數 348
19.2.5 流水線打印動態參數 350
19.2.6 為流水線配置環境變量 350
19.2.7 流水線推送鏡像到DockerHub 351
19.2.8 推送latest鏡像到DockerHub 356
19.2.9 流水線部署項目到KubeSphere
環境中 358
19.2.10 測試生產環境的項目接口
訪問 360
19.3 集群與擴容 360
19.3.1 手動擴容 360
19.3.2 自動擴容 362
19.3.3 OpenResty集群配置 363
19.4 構建云負載均衡器 365
19.5 本章小結 369
- 皓月繁星:24位大咖的心理課堂 [主編 林贊歌]
- 系統集成項目管理工程師案例分析一本通(第二版) [王樹文 編著]
- 信息安全工程師考前沖刺100題(第二版) [施 游 朱小平 編著]
- 信息系統項目管理師考前沖刺100題(配套第四版大綱) [劉毅 朱小平 編著]
- SQL Server 2019數據庫實戰教程 [主編 岳付強 曾陳萍 唐承佳]
- 大學生創新創業實踐—機械類 [主編 林卿 史洪瑋 沈洋]
- 程序思維與C語言實現 [張祎 王俊海 呂波]
- 國際交流英語 [金忍冬]
- 網絡組建與互聯 [馬峰柏 李佼輝]
- 畫屏—2023年中央媒體國家水網建設新聞報道匯編 [水利部宣傳教育中心 編]
- 大學計算機基礎教程(Windows 10+WPS Office 2019) [吳志攀 劉利]
- Python程序設計及實踐教程 [肖朝暉]
- MySQL數據庫技術項目化教程——基于OBE理念 [主編 劉崇巍 龐金龍]
- 新時代大學生入學教育 [主編 程靜 周毅 周世兵]
- 計算機信息素養基礎(第二版) [主編 陳艷]
- 計算機基礎與應用(第二版) [主編 秦凱]
- 計算機網絡技術實訓教程(第二版) [主編 高良誠]
- 高職英語語法教程 [主編 汪莉 高小兵 張學儀]
- 綠色生態環保主題口譯教程 [主編 江雯 汪學華 李茂彪]
- 大學體育數字化實用教程 [主編 周秀蓉 葉鈺海]
- 大學計算機基礎教程(Windows 10+WPS Office 2019) [吳志攀 劉利]
- 應用數學 [吳小寧]
- 新時代勞動教育與實踐 [鞠向超]
- 信息系統項目管理師真題及沖刺卷精析(適用機考) [主編 薛大龍]
- 系統集成項目管理工程師真題及沖刺卷精析(適用機考) [主編 薛大龍 副主編 唐徽 劉]
- Linux服務器構建與運維管理從基礎到實戰(基于openEuler) [阮曉龍 馮順磊 杜宇飛 劉明哲]
- 網絡安全原理與應用(第三版) [戚文靜 劉學 李國文 王震]
- 信息系統監理師章節習題與考點特訓(適用第2版考綱) [薛大龍]
- 大學生創新創業實踐——經濟管理類 [許忠榮]
- 思考的藝術:讓創新成為你的DNA(第二版) [楊璐璐 武 曉]