《Java服務(wù)端研發(fā)知識圖譜》主要講解了Java語言的使用和特性、Maven工程管理、Svn和Git代碼管理、Linux服務(wù)器命令;框架部分包含Spring框架治理、SpringMVC、SpringBoot、框架演進(jìn)講解、SpringCloud微服務(wù)框架。組件部分包含MySQL數(shù)據(jù)庫及操作、MongoDB存儲、Redis緩存、Zookeeper配置及注冊發(fā)現(xiàn)原理、FastDFS文件存儲、ElasticSearch搜索、定時任務(wù)、RabbitMQ消息隊(duì)列、ELK日志展示及分析;部署部分包含Docker鏡像技術(shù)、Jenkins持續(xù)集成、Harbor鏡像倉庫、Rancher容器管理;工具部分包含Swagger接口文檔編寫及測試工具、JMeter測試工具、VisualVm分析工具等。
前 言
期望您能把這本書當(dāng)成在Java服務(wù)端領(lǐng)域探索的一張微縮地圖。
計(jì)算機(jī)自發(fā)明以來至今不到百年時間,但是其發(fā)展速度卻是超乎想象的。這種快速的發(fā)展不僅表現(xiàn)在純科研的方面,還表現(xiàn)在技術(shù)的普及及應(yīng)用方面。首先,計(jì)算機(jī)硬件在長達(dá)半個多世紀(jì)的時間內(nèi),遵循摩爾定律一的發(fā)展規(guī)則;其次,計(jì)算機(jī)軟件從最初的紙帶打孔編程已經(jīng)發(fā)展到現(xiàn)在的各種高級語言、框架等;最后,在技術(shù)應(yīng)用上,近幾年剛剛成熟的移動互聯(lián)網(wǎng),已經(jīng)改變了千千萬萬人的生活。
計(jì)算機(jī)如此迅猛的發(fā)展速度,當(dāng)然與廣大從業(yè)者的不斷努力和探索是分不開的。目前計(jì)算機(jī)的飛速發(fā)展仍處于人類的控制之下,還沒有出現(xiàn)獨(dú)立的苗頭,但是計(jì)算機(jī)在某些特定領(lǐng)域已經(jīng)可以戰(zhàn)勝人類了。不久前計(jì)算機(jī)在圍棋上戰(zhàn)勝了人類,這其實(shí)并沒有那么讓人吃驚,因?yàn)楣P者認(rèn)為在所有條件和規(guī)則已知,并且有明確勝負(fù)標(biāo)準(zhǔn)(棋類作為代表)的前提下,人類與計(jì)算機(jī)對局已經(jīng)毫無還手之力。
計(jì)算機(jī)現(xiàn)在的發(fā)展已經(jīng)如此健全和強(qiáng)大,對于計(jì)算機(jī)從業(yè)者來說可能并不是一個好消息,因?yàn)閺臉I(yè)者要學(xué)習(xí)大量的計(jì)算機(jī)知識。這也是筆者寫作本書想解決的問題:面對那么多知識,應(yīng)該如何學(xué)習(xí)以及如何最快地學(xué)習(xí)。所以本書盡量涵蓋了與Java相關(guān)的語言要點(diǎn)、服務(wù)框架、功能組件體系以及其他輔助工具,目的就是通過最精煉的篇幅,講述某一技術(shù)領(lǐng)域最常用的部分,而此部分會讓讀者快速地理解、接收并運(yùn)用到實(shí)際工作中。
全書共分為五篇,每篇內(nèi)容如下:
第一篇主要講解Java語言,以及工程構(gòu)建、代碼管理和基本的服務(wù)器命令,以這些內(nèi)容作為本書的起點(diǎn)和基礎(chǔ)。
第二篇主要講解Spring框架治理、服務(wù)框架Spring MVC和Spring Boot、服務(wù)架構(gòu)的演進(jìn)以及微服務(wù)框架Spring Cloud。
第三篇主要講解在服務(wù)中使用的數(shù)據(jù)庫、緩存、定時任務(wù)、消息隊(duì)列、全局搜索等功能組件的使用方法和使用場景。
第四篇主要講解鏡像技術(shù)的用法,使用鏡像技術(shù)快速搭建功能環(huán)境的服務(wù)組件,并且講解使用Jenkins構(gòu)建工程以及服務(wù)部署相關(guān)的內(nèi)容。
第五篇主要講解在日常工作中,為了提高工作質(zhì)量和效率所使用的研發(fā)工具。
本書采用循序漸進(jìn)的方式,講述Java服務(wù)端研發(fā)所涉及的幾個領(lǐng)域。希望讀者閱讀本書后,對相關(guān)內(nèi)容進(jìn)行實(shí)踐和總結(jié),從而在腦海中繪制出屬于自己的技術(shù)版圖。
書中包含大量代碼,為了避免分散讀者的注意力,書中省略了部分重復(fù)的和不重要的代碼。如果讀者想查看完整的代碼可以下載本書附帶的源代碼進(jìn)行了解。
編寫技術(shù)類書籍是一件非常辛苦的事情,與日常研發(fā)不同,編寫技術(shù)類書籍不僅要會用涉及的技術(shù),還要了解其原理,并且要以讀者能夠理解的方式講述出來,同時還要保證技術(shù)使用的正確性以及描述的準(zhǔn)確性。在編寫此書的過程中,兩位作者一直秉承著實(shí)用且精簡的原則,經(jīng)過幾輪的代碼復(fù)查和文檔復(fù)查才終于結(jié)稿。在此特別感謝默默支持著我們的家人,朋友,感謝曾經(jīng)一起工作奮戰(zhàn)過的同事馮劍、侯金磚、尹波,感謝機(jī)械工業(yè)出版社車忱編輯,感謝曾經(jīng)支持過我們的所有人。謝謝大家!
目 錄
業(yè)界推薦
出版說明
前言
第一篇 基 礎(chǔ) 篇
第1章 Java概要
1.1 Java環(huán)境搭建
1.1.1 Java基礎(chǔ)環(huán)境搭建
1.1.2 Eclipse的安裝
1.1.3 第一個Java程序
1.2 基本類型與運(yùn)算
1.2.1 基本類型概述
1.2.2 操作符
1.2.3 類型轉(zhuǎn)換與越界
1.3 流程控制
1.3.1 If-else
1.3.2 Switch
1.3.3 For
1.3.4 While
1.3.5 break與continue
1.3.6 Return
1.4 對象
1.4.1 什么是對象
1.4.2 方法
1.4.3 初始化
1.4.4 This與Static
1.4.5 訪問權(quán)限
1.4.6 垃圾回收
1.5 繼承和多態(tài)
1.5.1 Object
1.5.2 組合
1.5.3 繼承
1.5.4 多態(tài)
1.5.5 接口
1.5.6 抽象類
1.6 容器
1.6.1 數(shù)組
1.6.2 List
1.6.3 Set
1.6.4 Map
1.7 泛型
1.7.1 泛型的基本使用
1.7.2 通配符
1.7.3 泛型接口
1.7.4 自定義泛型
1.8 異常
1.8.1 運(yùn)行時異常
1.8.2 檢查性異常
1.8.3 自定義異常
1.9 I/O
1.9.1 控制臺I/O
1.9.2 查看文件列表
1.9.3 文件I/O
1.9.4 序列化
1.9.5 網(wǎng)絡(luò)I/O
1.10 并發(fā)
1.10.1 多線程的實(shí)現(xiàn)
1.10.2 線程沖突
1.10.3 鎖
1.11 反射與注解
1.11.1 反射
1.11.2 注解
1.12 JUnit
1.12.1 JUnit的集成
1.12.2 JUnit的基本使用
第2章 Maven
2.1 Maven安裝和配置
2.1.1 Maven環(huán)境的搭建
2.1.2 在Eclipse中配置Maven的settings
文件
2.2 Maven使用
2.2.1 在Eclipse中創(chuàng)建第一個Maven
項(xiàng)目
2.2.2 認(rèn)識pom文件
2.2.3 運(yùn)行Maven項(xiàng)目
2.3 Maven坐標(biāo)和依賴
2.3.1 什么是坐標(biāo)
2.3.2 什么是Maven依賴
2.3.3 Maven依賴的scope范圍
2.3.4 Maven的依賴調(diào)解原則
2.3.5 Maven倉庫使用
2.4 Maven生命周期和插件
2.4.1 Maven 生命周期
2.4.2 Maven插件
2.4.3 生命周期與插件的關(guān)系
2.5 Maven聚合和繼承
2.5.1 聚合應(yīng)用的場景
2.5.2 Maven的繼承
2.5.3 Maven中dependencyManagement
的使用
2.5.4 Maven中的pluginManagement
的使用
第3章 代碼管理
3.1 Svn
3.1.1 Svn客戶端的安裝
3.1.2 Svn基本使用
3.1.3 Svn 解決沖突
3.1.4 Svn 分支
3.2 Git
3.2.1 Git客戶端安裝
3.2.2 Git 基本使用
3.2.3 Git 分支管理
3.2.4 Git 標(biāo)簽
3.2.5 在Git中配置SSH
3.2.6 用Git stash暫存代碼
第4章 Linux命令
4.1 Linux簡介
4.2 Linux常用命令
4.3 Linux文件管理
4.3.1 Linux文件操作命令
4.3.2 Linux文件權(quán)限
4.4 Linux 啟動服務(wù)
第二篇 服務(wù)框架篇
第5章 Spring
5.1 Spring概述
5.1.1 核心模塊
5.1.2 預(yù)備知識
5.2 構(gòu)建第一個Spring工程
5.3 IoC
5.3.1 IoC和DI基本原理
5.3.2 IoC的配置使用
5.3.3 Bean定義
5.3.4 Bean的作用域
5.3.5 Bean的生命周期
5.3.6 注解實(shí)現(xiàn)IoC
5.3.7 注解的作用域scope
5.3.8 自動裝配
5.3.9 @Autowired與@Qualifier
5.4 Aop
5.4.1 AOP的核心概念
5.4.2 AOP的代理機(jī)制
5.4.3 基于Schema的AOP使用
5.4.4 基于@AspectJ的AOP使用
5.5 集成Logback
5.5.1 SLF4J簡介
5.5.2 Logback概述
5.5.3 Logback的集成
5.5.4 輸出日志到文件
5.6 集成MyBatis
5.6.1 數(shù)據(jù)準(zhǔn)備
5.6.2 添加Spring與Mybatis集成相關(guān)
依賴
5.6.3 編寫相關(guān)配置文件
5.6.4 使用generator生成單表增刪改查
代碼
第6章 Spring MVC
6.1 Spring MVC概述
6.1.1 MVC
6.1.2 HTTP請求處理流程
6.1.3 Servlet與Tomcat的關(guān)系
6.1.4 Spring MVC的執(zhí)行流程
6.2 構(gòu)建第一個Spring MVC項(xiàng)目
6.2.1 添加依賴
6.2.2 配置相關(guān)文件
6.2.3 基本頁面展示
6.3 Spring MVC Restful實(shí)現(xiàn)
6.3.1 REST概述
6.3.2 創(chuàng)建REST風(fēng)格的Controller
6.4 Spring MVC 攔截器
6.4.1 攔截器
6.4.2 自定義攔截器
6.4.3 攔截器執(zhí)行規(guī)則
6.5 Spring MVC 異常處理器
6.5.1 Spring MVC 異常處理方式
6.5.2 實(shí)現(xiàn)自定義異常處理類
6.6 Spring MVC上傳和下載文件
6.6.1 MultipartFile對象
6.6.2 上傳文件
6.6.3 下載文件
第7章 Spring Boot
7.1 構(gòu)建第一個Spring Boot工程
7.1.1 IDE搭建及特性
7.1.2 工程目錄
7.2 起步依賴
7.3 配置
7.3.1 自動配置
7.3.2 設(shè)置配置值
7.3.3 配置優(yōu)先級
7.3.4 多環(huán)境配置
7.3.5 自定義類的注入
7.4 使用Thymeleaf構(gòu)建頁面
7.4.1 Thymeleaf基本使用
7.4.2 添加頁面邏輯
7.5 使用JPA構(gòu)建持久化存儲
7.5.1 JPA基本使用
7.5.2 定義JPA擴(kuò)展接口
7.6 Actuator
7.6.1 Actuator的基本使用
7.6.2 端點(diǎn)的保護(hù)
7.7 部署
7.8 參數(shù)校驗(yàn)
7.8.1 前臺完成基本參數(shù)校驗(yàn)
7.8.2 前后臺配合完成數(shù)據(jù)校驗(yàn)
7.9 MyBatis的框架整合及數(shù)據(jù)
校驗(yàn)
7.9.1 整合MyBatis
7.9.2 后臺接口請求校驗(yàn)
7.9.3 規(guī)范數(shù)據(jù)返回
7.10 添加日志及記錄請求信息
7.10.1 添加日志模塊
7.10.2 AOP實(shí)現(xiàn)接口信息打印
第8章 服務(wù)架構(gòu)
第9章 Spring Cloud
9.1 Eureka
9.1.1 Eureka基礎(chǔ)使用
9.1.2 配置服務(wù)注冊信息
9.1.