springboot第54集:思維導(dǎo)圖后端知識點(diǎn)微服務(wù)分布式架構(gòu)周刊
BigDecimal num1 = new BigDecimal('0.1');
BigDecimal num2 = new BigDecimal('0.2');
BigDecimal sum = num1.add(num2);
BigDecimal product = num1.multiply(num2);
mysql: innodb和myisam有什么區(qū)別?
InnoDB和Myisam是MySQL數(shù)據(jù)庫中兩種非常流行的存儲引擎,主要存在四大區(qū)別:
- 事務(wù)支持能力不同:InnoDB支持ACID事務(wù)。所以可以處理高級別的數(shù)據(jù)完整性和可靠性。而MyISAM不支持事務(wù),所以MyISAM在處理需要高度數(shù)據(jù)完整性的操作時不如InnoDB可靠。
- 鎖定機(jī)制不同:InnoDB使用行級別鎖定,所以在并發(fā)讀寫操作時性能更好,尤其是對于在線事務(wù)處理類型的應(yīng)用,比如并發(fā)量大的實(shí)時系統(tǒng)。而MyISAM使用表級鎖定。這可能在高并發(fā)的情況下導(dǎo)致性能問題,因?yàn)楫?dāng)一條記錄被修改時,整個表都會被鎖定。
- 數(shù)據(jù)完整性和恢復(fù)能力不同:InnoDB提供了外鍵約束來維護(hù)數(shù)據(jù)完整性,支持崩潰后的自動恢復(fù)。但是MyISAM不支持外鍵,并且在系統(tǒng)崩潰后恢復(fù)數(shù)據(jù)也更加困難。
- 存儲結(jié)構(gòu),InnoDB是把數(shù)據(jù)存儲在表空間中的,所以可以更好地處理大型數(shù)據(jù)庫。而MyISAM是把數(shù)據(jù)存儲在獨(dú)立的文件里,每個表一個文件,適合讀密集型的應(yīng)用。
總的來說,InnoDB是一個更優(yōu)秀的存儲引擎,提供了事務(wù)支持,行級鎖定和數(shù)據(jù)完整性,非常適合需要高并發(fā)和高可靠性的系統(tǒng)。
mysql什么是索引,底層原理是什么?
索引是數(shù)據(jù)庫重要的概念之一,用于快速定位和訪問數(shù)據(jù)表中的數(shù)據(jù)。它類似于書籍的目錄,可以加速數(shù)據(jù)的檢索過程,不需要掃描整個數(shù)據(jù)表,索引基于一個或多個列構(gòu)建,能提高查詢數(shù)據(jù)的效率。
對于業(yè)務(wù)系統(tǒng)的查詢效率提升有非常大的幫助:
-- customers 表的 customer_id 和 orders 表的 customer_id 都有索引
SELECT customers.customer_id, orders.order_date
FROM customers
JOIN orders ON customers.customer_id = orders.customer_id
WHERE customers.customer_id = 101;
對于業(yè)務(wù)系統(tǒng)的查詢效率提升有非常大的幫助,復(fù)雜的查詢,比如帶有JOIN或WHERE子句的查詢,索引可以顯著提高查詢速度。可以優(yōu)化UPDATE和DELETE的操作。
UPDATE customers
SET address = '新地址'
WHERE customer_id = 123;
因?yàn)檫@些增刪改操作都需要先查找目標(biāo)數(shù)據(jù)再進(jìn)行操作。
如何實(shí)現(xiàn)索引:有兩種重要的實(shí)現(xiàn)方式。B樹和B+樹。B樹是一個平衡的多路搜索樹,它的所有葉節(jié)點(diǎn)都在同一層。每個節(jié)點(diǎn)包含多個鍵(key),和指向子節(jié)點(diǎn)的指針,B樹保證了每個節(jié)點(diǎn)的鍵和子節(jié)點(diǎn)樹,在預(yù)定范圍內(nèi),B+樹是B樹的變種,所有的數(shù)據(jù)記錄都存儲在葉子節(jié)點(diǎn),內(nèi)部節(jié)點(diǎn)僅存儲鍵值,也就是非葉子節(jié)點(diǎn)不存儲實(shí)際數(shù)據(jù)。僅存儲鍵值。這些鍵值作為分隔值,指導(dǎo)搜索操作向下走向正確的分支,而葉節(jié)點(diǎn)之間以指針相連,形成一個鏈表。相比于B樹,B+樹的查詢效率更加穩(wěn)定,因?yàn)樗械牟樵兌家竭_(dá)葉子節(jié)點(diǎn),由于葉子節(jié)點(diǎn)形成鏈表,B+樹也特別適合于順序遍歷操作。
事務(wù)的四大特性是什么
MySQL事務(wù)的四大特性指的就是:原子性,一致性,隔離性,持久性。
原子性:指的就是事務(wù)被視為不可分割的最小單元,一個事務(wù)的所有操作要么全部提交成功,要么全部失敗回滾?;貪L可以用回滾日志來實(shí)現(xiàn),回滾日志記錄著事務(wù)所執(zhí)行的修改操作。
隔離性指的就是一個事務(wù)所做的修改在最終提交一起,對其它事務(wù)是不可見的。
一致性指的就是數(shù)據(jù)庫的數(shù)據(jù)在事務(wù)執(zhí)行前后都保持一致性狀態(tài)。在一致性狀態(tài)下,所有事務(wù)對同一個數(shù)據(jù)的讀取結(jié)果都是相同的。
一旦事務(wù)提交,則其所做的修改將會永遠(yuǎn)保存到數(shù)據(jù)庫中。即使系統(tǒng)發(fā)生崩潰,事務(wù)執(zhí)行的結(jié)果也不能丟失。
系統(tǒng)發(fā)生崩潰可以用重做日志進(jìn)行恢復(fù),從而實(shí)現(xiàn)持久性。與回滾日志記錄數(shù)據(jù)的邏輯修改不同,重做日志記錄的是數(shù)據(jù)頁的物理修改。
事務(wù)的ACID特性,不是很好理解:原子性,一致性,隔離性,持久性。
只有滿足一致性,事務(wù)的執(zhí)行結(jié)果才是正確的。在無并發(fā)的情況下,事務(wù)串行執(zhí)行,隔離性一定能夠滿足。此時只要能滿足原子性,就一定能滿足一致性。在并發(fā)的情況下,多個事務(wù)并行執(zhí)行,事務(wù)不僅要滿足原子性,還需要滿足隔離性,才能滿足一致性。事務(wù)滿足持久化是為了能應(yīng)對系統(tǒng)崩潰的情況。
什么是面向?qū)ο?/span>
面向?qū)ο笫且环N思想,世間萬物都可以看做一個對象,Java是一個支持并發(fā)、基于類和面向?qū)ο蟮挠嬎銠C(jī)高級編程語言。面向?qū)ο筌浖_發(fā)具有的優(yōu)點(diǎn)有:1. 代碼開發(fā)模塊化,更易維護(hù)和修改;2. 代碼復(fù)用性強(qiáng);3. 增加代碼的可讀性。
面向?qū)ο笥腥筇卣鳎悍庋b,繼承,多態(tài)。
封裝就是給對象提供了隱藏內(nèi)部特性和行為的能力;對象提供一些能被其他對象訪問的方法,來改變它內(nèi)部的數(shù)據(jù);在Java當(dāng)中有4種修飾符:default,public,private,protected。每一種修飾符給其他的位于同一個包或者不同包下面對象,賦予了不同的訪問權(quán)限。
default: 同包中;public:都可以;protected:不同包,不是繼承子類;private:同類中成員
繼承就是給對象提供了以基類獲取字段和方法的能力。繼承提供了代碼的重用行,也可以在不修改類的情況下給現(xiàn)存的類添加新特性。
多態(tài)是編程語言給不同的底層數(shù)據(jù)類型做相同的接口展示的一種能力。一個多態(tài)類型上的操作,可以應(yīng)用到其他類型的值上面。
多態(tài)中,父類作為形參的方法和子類作為形參的方法都是一樣的。形參父類類型可以接收子類對象。這是多態(tài)的特性。
DDD到底是什么
三層架構(gòu):模型,視圖,控制器
- 業(yè)務(wù)接口層:Module API
- 業(yè)務(wù)邏輯層:VO,Service
- 數(shù)據(jù)訪問層:PO,MapperXML,Dao
DDD四層架構(gòu):(全稱:領(lǐng)域驅(qū)動設(shè)計,所謂的領(lǐng)域就是特定業(yè)務(wù)領(lǐng)域的問題和邏輯,驅(qū)動指的就是以業(yè)務(wù)領(lǐng)域的復(fù)雜性為核心進(jìn)行軟件設(shè)計和開發(fā),和它對比的就是傳統(tǒng)的MVC架構(gòu)),拆分為四層就是表示層,應(yīng)用層,領(lǐng)域?qū)雍突A(chǔ)設(shè)施層。
表示層負(fù)責(zé)與用戶交互(處理用戶請求)
// 表示層
// Web 控制器:處理HTTP請求
@RestController
public class ArticleController {
private ArticleApplicationService articleApplicationService;
@PostMapping('/articles')
public Article createArticle(@RequestBody ArticleDto articleDto) {
return articleApplicationService.createArticle(articleDto.getTitle(), articleDto.getContent());
}
}
應(yīng)用層負(fù)責(zé)業(yè)務(wù)邏輯的執(zhí)行,但它不包含業(yè)務(wù)規(guī)則或知識,只協(xié)調(diào)我們接下來的領(lǐng)域?qū)觼韺?shí)現(xiàn)業(yè)務(wù)用例
// 領(lǐng)域?qū)嶓w:文章
public class Article {
private Long id; // 值對象
private String title;
private String content;
// 構(gòu)造函數(shù),getter和setter省略
}
// 領(lǐng)域服務(wù):文章服務(wù)
public class ArticleService {
public Article createArticle(String title, String content) {
// 領(lǐng)域事件:創(chuàng)建文章的業(yè)務(wù)邏輯
return new Article(title, content);
}
}
而領(lǐng)域?qū)泳桶瑯I(yè)務(wù)邏輯的核心部分,是DDD的關(guān)鍵所在。包括實(shí)體(Entity)、值對象(Value Object)、領(lǐng)域服務(wù)(Domain Service)、領(lǐng)域事件(Domain Event)等。這一層封裝了業(yè)務(wù)邏輯,定義了業(yè)務(wù)規(guī)則和業(yè)務(wù)行為。
基礎(chǔ)設(shè)施層:主要用來連接數(shù)據(jù)庫和各種中間件
// 數(shù)據(jù)訪問接口:文章倉儲
public interface ArticleRepository {
Article save(Article article);
Article findById(Long id);
}
// 數(shù)據(jù)訪問實(shí)現(xiàn):基于某種數(shù)據(jù)庫的文章倉儲實(shí)現(xiàn)
public class SqlArticleRepository implements ArticleRepository {
// 實(shí)現(xiàn)數(shù)據(jù)庫操作的細(xì)節(jié)
}
DDD的特點(diǎn)是強(qiáng)調(diào)業(yè)務(wù)邏輯的重要性,也就是領(lǐng)域?qū)舆壿?,更加專注業(yè)務(wù),減少溝通成本
- 用戶接口層:API,DTO
- 應(yīng)用層: Application Service
- 領(lǐng)域?qū)樱篗apperXM Repository Aggregate(Domain Service Entity ValueObject)
- 基礎(chǔ)層:Repository AOP (緩存 總線 網(wǎng)關(guān) 第三方工具 文件 其它)
image.png
image.png
image.png
image.png
Apache Kafka UI 是一個免費(fèi)的開源 Web UI,用于監(jiān)控和管理 Apache Kafka 集群,可方便地查看 Kafka Brokers、Topics、消息、Consumer 等情況,支持多集群管理、性能監(jiān)控、訪問控制等功能。
-
termQuery("cName.keyword", xxxBO.getCName()):
- 這是一個精確查詢(Term Query),用于匹配
cName.keyword字段與depotInfoBO.getCName()的值相等的文檔。
matchPhraseQuery("mobile", xxxBO.getMobile()):
- 這是一個短語匹配查詢(Match Phrase Query),用于匹配
mobile字段包含與xxxBO.getMobile()相等的短語的文檔。
termsQuery("xxxId.keyword", xxxBO.getDepotIds()):
- 這是一個多值查詢(Terms Query),用于匹配
xxxId.keyword字段包含在xxxBO.getDepotIds()列表中的文檔。
boolQueryBuilder.must(QueryBuilders
.wildcardQuery("cName.keyword", "*" + depotInfoBO.getCName() + "*"));
Netty是一個用于構(gòu)建網(wǎng)絡(luò)應(yīng)用程序的Java框架。Netty提供了一個抽象的Channel接口,它表示一個可以進(jìn)行I/O操作的通道,例如網(wǎng)絡(luò)套接字。
Netty的Channel接口是一個抽象的概念,它提供了統(tǒng)一的API,使得可以在不同的傳輸協(xié)議(如TCP、UDP等)上進(jìn)行操作。在Netty中,你可以通過不同的Channel實(shí)現(xiàn)來處理不同類型的網(wǎng)絡(luò)通信。
在Netty中,常見的一些Channel實(shí)現(xiàn)包括:
-
NioSocketChannel: 基于Java NIO的Socket通道。 -
NioServerSocketChannel: 基于Java NIO的ServerSocket通道。 -
OioSocketChannel: 基于傳統(tǒng)的阻塞I/O的Socket通道。 -
OioServerSocketChannel: 基于傳統(tǒng)的阻塞I/O的ServerSocket通道。
連接鑒權(quán)
image.png
連接的客戶端信息在Zookeeper創(chuàng)建的臨時節(jié)點(diǎn)
image.png
自定義發(fā)送心跳包的內(nèi)容.
image.png
自定義Netty的channel
image.png
客戶端連接的clientId和channelId的信息在Redis存儲的
image.png
image.png
image.png 客戶端請求Netty服務(wù)器地址
image.png 定義的Kafka的topic
image.png 基于Netty的websocket消息推送服務(wù)器
image.png
image.png
發(fā)送心跳間隔以及服務(wù)超時剔除
image.png
消息服務(wù)系統(tǒng)架構(gòu)圖
image.png Zookeeper注冊的Netty服務(wù)器的臨時節(jié)點(diǎn)
image.png
image.png
image.png
image.png
image.png
sender.addCallback(// 發(fā)送成功的回調(diào)
result -> log.info("Send success:offset({}),partition({}),topic({})",// 打印成功消息 發(fā)送成功:偏移量({}), 分區(qū)({}), 主題({})
result.getRecordMetadata().offset(),
result.getRecordMetadata().partition(),
result.getRecordMetadata().topic()),
ex -> log.error("Send fail:{}", ex.getMessage()));// 發(fā)送失敗的回調(diào)
Pipeline 是 Netty 中用于處理和攔截事件的容器。在 Netty 中,所有的處理邏輯被組織成一個由多個 ChannelHandler 組成的 ChannelPipeline。Pipeline 是對這些 ChannelHandler 進(jìn)行組織和管理的容器。
當(dāng)數(shù)據(jù)通過 Channel 時,會經(jīng)過 ChannelPipeline 中的一系列 ChannelHandler 處理。每個 ChannelHandler 負(fù)責(zé)處理或者傳遞事件,這樣可以將整個處理邏輯劃分為多個小的、可復(fù)用的組件。
所以,ChannelPipeline 就是一個處理數(shù)據(jù)的通道,ChannelHandler 就是處理邏輯的組件。 Netty 的事件模型基于這個概念,通過 ChannelPipeline 將處理邏輯拆分成一系列的 ChannelHandler,方便擴(kuò)展和管理。
docker pull mrvautin/adminmongo
Installation
- Navigate to folder & install adminMongo:
git clone https://github.com/mrvautin/adminMongo.git && cd adminMongo - Install dependencies:
npm install - Start application:
npm startornode app - Visit http://127.0.0.1:1234 in your browser
Note: Node.js version 4.x or above is required
Electron App
adminMongo can also be used as a cross platform Electron application. Due to the size of Electron it will need to be built manually.
To build for Mac:
$ npm run-script packageOsx
To build for Windows:
$ npm run-script packageWin32
To build for Linux:
$ npm run-script packageLinux
Once built, the executable will be in the /releases folder.
image.png
public enum HttpStatus {
CONTINUE(100, "繼續(xù)"),
SWITCHING_PROTOCOLS(101, "切換協(xié)議"),
PROCESSING(102, "處理中"),
CHECKPOINT(103, "檢查點(diǎn)"),
OK(200, "請求成功"),
CREATED(201, "已創(chuàng)建"),
ACCEPTED(202, "已接受"),
NON_AUTHORITATIVE_INFORMATION(203, "非權(quán)威信息"),
NO_CONTENT(204, "無內(nèi)容"),
RESET_CONTENT(205, "重置內(nèi)容"),
PARTIAL_CONTENT(206, "部分內(nèi)容"),
MULTI_STATUS(207, "多狀態(tài)"),
ALREADY_REPORTED(208, "已報告"),
IM_USED(226, "IM Used"),
MULTIPLE_CHOICES(300, "多種選擇"),
MOVED_PERMANENTLY(301, "永久移動"),
FOUND(302, "找到"),
/** @deprecated */
@Deprecated
MOVED_TEMPORARILY(302, "臨時移動"),
SEE_OTHER(303, "查看其他"),
NOT_MODIFIED(304, "未修改"),
/** @deprecated */
@Deprecated
USE_PROXY(305, "使用代理"),
TEMPORARY_REDIRECT(307, "臨時重定向"),
PERMANENT_REDIRECT(308, "永久重定向"),
BAD_REQUEST(400, "錯誤的請求"),
UNAUTHORIZED(401, "未經(jīng)授權(quán)"),
PAYMENT_REQUIRED(402, "需要付款"),
FORBIDDEN(403, "禁止訪問"),
NOT_FOUND(404, "未找到"),
METHOD_NOT_ALLOWED(405, "不允許使用該方法"),
NOT_ACCEPTABLE(406, "不可接受"),
PROXY_AUTHENTICATION_REQUIRED(407, "需要代理身份驗(yàn)證"),
REQUEST_TIMEOUT(408, "請求超時"),
CONFLICT(409, "請求沖突"),
GONE(410, "資源不可用"),
LENGTH_REQUIRED(411, "需要內(nèi)容長度"),
PRECONDITION_FAILED(412, "先決條件失敗"),
PAYLOAD_TOO_LARGE(413, "請求實(shí)體過大"),
/** @deprecated */
@Deprecated
REQUEST_ENTITY_TOO_LARGE(413, "請求實(shí)體過大"),
URI_TOO_LONG(414, "請求URI過長"),
/** @deprecated */
@Deprecated
REQUEST_URI_TOO_LONG(414, "請求URI過長"),
UNSUPPORTED_MEDIA_TYPE(415, "不支持的媒體類型"),
REQUESTED_RANGE_NOT_SATISFIABLE(416, "請求范圍不符合要求"),
EXPECTATION_FAILED(417, "期望失敗"),
I_AM_A_TEAPOT(418, "我是一個茶壺"),
/** @deprecated */
@Deprecated
INSUFFICIENT_SPACE_ON_RESOURCE(419, "資源空間不足"),
/** @deprecated */
@Deprecated
METHOD_FAILURE(420, "方法失敗"),
/** @deprecated */
@Deprecated
DESTINATION_LOCKED(421, "目標(biāo)被鎖定"),
UNPROCESSABLE_ENTITY(422, "不可處理的實(shí)體"),
LOCKED(423, "已鎖定"),
FAILED_DEPENDENCY(424, "請求的依賴關(guān)系失敗"),
TOO_EARLY(425, "操作過早"),
UPGRADE_REQUIRED(426, "需要升級"),
PRECONDITION_REQUIRED(428, "要求先決條件"),
TOO_MANY_REQUESTS(429, "請求過多"),
REQUEST_HEADER_FIELDS_TOO_LARGE(431, "請求頭字段太大"),
UNAVAILABLE_FOR_LEGAL_REASONS(451, "因法律原因不可用"),
INTERNAL_SERVER_ERROR(500, "服務(wù)器內(nèi)部錯誤"),
NOT_IMPLEMENTED(501, "未實(shí)現(xiàn)"),
BAD_GATEWAY(502, "網(wǎng)關(guān)錯誤"),
SERVICE_UNAVAILABLE(503, "服務(wù)不可用"),
GATEWAY_TIMEOUT(504, "網(wǎng)關(guān)超時"),
HTTP_VERSION_NOT_SUPPORTED(505, "HTTP版本不支持"),
VARIANT_ALSO_NEGOTIATES(506, "變體協(xié)商"),
INSUFFICIENT_STORAGE(507, "存儲空間不足"),
LOOP_DETECTED(508, "檢測到循環(huán)"),
BANDWIDTH_LIMIT_EXCEEDED(509, "超出
String amount = "10.50";
String amountInCents = new BigDecimal(amount)
.multiply(new BigDecimal("100"))
.toBigInteger()
.toString();
System.out.println(amountInCents); // 輸出:1050
new BigDecimal(amount) // 將金額(假設(shè)為字符串格式)轉(zhuǎn)換為 BigDecimal 類型
.multiply(new BigDecimal("100")) // 乘以 100,將金額轉(zhuǎn)換為以分為單位的 BigDecimal 類型
.toBigInteger() // 將結(jié)果轉(zhuǎn)換為 BigInteger 類型
.toString(); // 將 BigInteger 轉(zhuǎn)換為字符串
Maven項(xiàng)目的POM文件(Project Object Model,項(xiàng)目對象模型)的一部分。<modelVersion>元素指定了項(xiàng)目所遵循的POM模式的版本。
-
<artifactId>:指定項(xiàng)目的唯一標(biāo)識符。<version>:指定項(xiàng)目的版本號。<groupId>:指定項(xiàng)目的組織或公司ID,<packaging>:指定項(xiàng)目的打包類型。<name>: 指定項(xiàng)目的名稱。<description>: 提供對項(xiàng)目的簡要描述。 -
<project.build.sourceEncoding>: 指定項(xiàng)目源代碼的編碼格式為UTF-8。 -
<project.reporting.outputEncoding>: 指定項(xiàng)目報告輸出的編碼格式為UTF-8。 -
<java.version>: 指定項(xiàng)目使用的Java版本為1.8。 -
<hutool.version>: 指定項(xiàng)目使用的Hutool庫的版本為5.3.0。 -
<groupId>: 指定父項(xiàng)目的組織或公司ID,這里是org.springframework.boot。 -
<artifactId>: 指定父項(xiàng)目的唯一標(biāo)識符,這里是spring-boot-starter-parent。 -
<version>: 指定父項(xiàng)目的版本號,這里是2.3.2.RELEASE。
<dependencyManagement>
<dependencies>
<!-- Spring Cloud Dependencies -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR9</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- Spring Cloud Alibaba Dependencies -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.6.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Spring Boot 核心依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot</artifactId>
</dependency>
<!-- Spring Boot Web Starter,用于構(gòu)建Web應(yīng)用 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Kafka Starter,用于集成Kafka消息隊(duì)列 -->
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<!-- Spring Boot Starter for Redis,用于集成Redis數(shù)據(jù)庫 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- Spring Boot Starter for Aspect-Oriented Programming (AOP) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- Spring Boot Starter for Logging -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
</dependencies>
<dependencies>
<!-- Spring Cloud Starter for OpenFeign,用于聲明式REST客戶端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- Spring Cloud Starter for Ribbon,用于負(fù)載均衡 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<!-- Spring Cloud Starter for Alibaba Nacos Discovery,用于服務(wù)發(fā)現(xiàn) -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<exclusions>
<!-- 排除Nacos客戶端,因?yàn)镹acos Discovery已經(jīng)包含了該依賴 -->
<exclusion>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Spring Cloud Starter for Alibaba Nacos Config,用于配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
<dependencies>
<!-- EasyExcel,用于處理Excel文件 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>
<!-- Spring Cloud Starter for Netflix Eureka Client,用于服務(wù)注冊與發(fā)現(xiàn) -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- Spring Cloud Starter for OpenFeign,用于聲明式REST客戶端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!-- Spring Cloud Starter for Netflix Hystrix,用于斷路器模式 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
<!-- Spring Cloud Starter for Netflix Hystrix Dashboard,用于Hystrix儀表板 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>
<!-- Spring Cloud Starter for Zipkin,用于分布式跟蹤 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<!-- Spring Cloud Starter for Sleuth,用于分布式追蹤 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<!-- Spring Boot Admin Starter Client,用于監(jiān)控和管理Spring Boot應(yīng)用 -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.1.0</version>
</dependency>
<!-- Reactor Core,用于響應(yīng)式編程 -->
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-core</artifactId>
<version>3.2.10.RELEASE</version>
</dependency>
</dependencies>
<dependencies>
<!-- MyBatis Spring Boot Starter,用于整合MyBatis和Spring Boot -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<!-- PageHelper,用于MyBatis的分頁插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.3</version>
</dependency>
<!-- MyBatis通用Mapper,用于簡化MyBatis的開發(fā) -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.4.6</version>
</dependency>
<!-- Druid,用于數(shù)據(jù)庫連接池和監(jiān)控 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<!-- Jedis,用于連接Redis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<!-- springfox-swagger2,用于生成API文檔 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<!-- springfox-swagger-ui,用于提供Swagger UI以查看生成的API文檔 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<!-- Knife4j Spring Boot Starter,用于提供Knife4j的集成支持 -->
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.4</version>
</dependency>
<!-- MySQL Connector/J,用于連接MySQL數(shù)據(jù)庫 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
</dependencies>
<dependencies>
<!-- Apache HttpClient,用于處理HTTP請求 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.12</version>
</dependency>
<!-- Apache HttpMime,用于處理HTTP消息的MIME類型 -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.12</version>
</dependency>
<!-- Gson,用于處理JSON數(shù)據(jù) -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
<!-- Project Lombok,用于簡化Java代碼 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
<!-- Apache Commons Lang,提供通用的工具類 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
<!-- DataStax Cassandra Java Driver,用于連接Cassandra數(shù)據(jù)庫 -->
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.1.2</version>
</dependency>
<!-- CodaHale Metrics,用于收集應(yīng)用程序的性能指標(biāo) -->
<dependency>
<groupId>com.codahale.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>3.0.2</version>
</dependency>
<!-- Google Guava,提供Java核心庫的擴(kuò)展功能 -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
</dependencies>
<dependencies>
<!-- Elasticsearch Transport Client,用于與Elasticsearch集成 -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>transport</artifactId>
<version>7.11.2</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Apache Commons Lang,提供通用的工具類 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.9</version>
</dependency>
<!-- Apache Commons Collections,提供集合處理的工具類 -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<!-- Alibaba Nacos Client,用于服務(wù)發(fā)現(xiàn)和配置中心 -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
</dependency>
<!-- Elasticsearch Java REST Client,用于與Elasticsearch進(jìn)行REST通信 -->
<dependency>
<groupId>org.elasticsearch</groupId>
<artifactId>elasticsearch</artifactId>
<version>7.11.2</version>
</dependency>
<!-- Elasticsearch Transport Netty4 Client,用于Elasticsearch的Netty4傳輸客戶端 -->
<dependency>
<groupId>org.elasticsearch.plugin</groupId>
<artifactId>transport-netty4-client</artifactId>
<version>7.11.2</version>
</dependency>
<!-- Elasticsearch REST Client,用于與Elasticsearch進(jìn)行REST通信 -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.11.2</version>
</dependency>
<!-- ClickHouse JDBC Driver,用于連接ClickHouse數(shù)據(jù)庫 -->
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.2.4</version>
</dependency>
<!-- Elasticsearch REST High-Level Client,用于高級REST通信 -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.11.2</version>
</dependency>
<!-- MongoDB Java Driver,用于連接MongoDB數(shù)據(jù)庫 -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.5</version>
</dependency>
<!-- Fastjson,用于處理JSON數(shù)據(jù) -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
<scope>compile</scope>
</dependency>
<!-- Hutool All-in-one工具類庫,提供豐富的工具方法 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>${hutool.version}</version>
</dependency>
<!-- Hutool Core,Hutool的核心工具類庫 -->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-core</artifactId>
<version>5.6.3</version>
<scope>compile</scope>
</dependency>
</dependencies>
加群聯(lián)系作者vx:xiaoda0423
倉庫地址:https://github.com/webVueBlog/JavaGuideInterview
