原创 RabbitMQ實現的模擬訂單庫存上下游服務可靠性投遞(延時檢查方案)

模擬一個下訂單成功,然後庫存減1的業務場景,以上是流程圖。除了RabbitMQ自身的可靠性投遞之外,該方案會在30秒後發送一條延時檢查的消息,判斷消息有沒有成功入庫,如果沒有,則會重新發起一次消息,做二次確認,避免因網絡抖動導致消息投遞

原创 ZooKeeper監聽功能實現

目錄 1 Maven依賴 2 NodeCacheListener 3 PathChildrenCacheListener 我使用的ZooKeeper的版本是3.4.14,虛擬機的ip是192.168.253.129。 1 Maven依賴

原创 自定義類加載器以及打破雙親委派模型

目錄 1 自定義類加載器 2 打破雙親委派模型 1 自定義類加載器 自定義類加載器的代碼很簡單,只需要繼承ClassLoader類,覆寫findClass方法即可,其默認實現是會拋出一個異常: import java.io.FileIn

原创 HotSpot垃圾收集器(截止到Java 12)

目錄 1 Serial / Serial Old收集器 2 ParNew收集器 3 Parallel Scavenge / Parallel Old收集器 4 CMS收集器 5 G1收集器 6 ZGC收集器 7 Epsilon收集器 8 

原创 Java連接Kafka實例

目錄 1 Java連接 1.1 Maven依賴 1.2 生產者代碼 1.3 消費者代碼 2 Spring Boot連接 2.1 Maven依賴 2.2 配置文件 2.3 生產者代碼 2.4 消費者代碼 3 Spring Cloud Str

原创 Spring Cloud Netflix服務治理:Eureka+OpenFeign(Ribbon+Hystrix)

目錄 1 服務註冊中心 1.1 Maven依賴 1.2 配置文件 1.3 啓動類 1.4 host文件 1.5 運行及結果 2 服務提供者 2.1 Maven依賴 2.2 配置文件 2.3 啓動類 2.4 Controller 2.5 運

原创 Redis集羣搭建與連接

目錄 1 集羣搭建 2 Spring Boot連接 本文將演示Redis Cluster的僞集羣搭建過程,用一臺虛擬機來模擬搭建六個節點,三主三從的集羣效果。我虛擬機的ip是192.168.253.129,Redis的版本是5.0.5。

原创 面試常問算法題總結

目錄 1 排序算法 2 二分查找 3 鏈表反轉 4 二分搜索樹遍歷 4.1 前序遍歷 4.2 中序遍歷 4.3 後序遍歷 4.4 層序遍歷 5 斐波那契數列 6 判斷鏈表是否有環 7 使用阻塞隊列來實現一個生產者消費者模型 1 排序算法

原创 Java連接MongoDB實例

目錄 1 Java連接 1.1 maven依賴 1.2 客戶端代碼 筆者所用的MongoDB的版本是4.2.6。 1 Java連接 1.1 maven依賴 <dependency> <groupI

原创 Netty實現簡易聊天室的功能

使用Netty來實現一個聊天室是很容易的,當有客戶端連接服務端的時候,在服務端的channelActive方法裏面即可感應到。使用ChannelGroup.writeAndFlush方法即可向所有客戶端發送一條“上線了”的信息,Chann

原创 Netty線程模型圖

原创 BIO & NIO & AIO

目錄 1 BIO 2 NIO 3 AIO 1 BIO BIO是同步阻塞模型,其核心是一個客戶端連接對應一個處理線程。實現起來簡單但是吞吐量低,而且客戶端不做讀寫操作的話,服務端會被阻塞(可以做多線程處理)。 BIO的示例代碼如下: i

原创 Sharding-JDBC概述

目錄 1 pom.xml 2 application.properties 3 Controller 4 Service 5 Model 6 Mapper 7 運行結果 ShardingSphere是一款開源的支持分庫分表的數據庫中間件,

原创 一個利用RabbitMQ實現的模擬訂單庫存上下游可靠性投遞的demo(延時檢查方案)

模擬一個下訂單成功,然後庫存減1的業務場景,以上是流程圖。除了RabbitMQ自身的可靠性投遞之外,該方案會在30秒後發送一條延時檢查的消息,判斷消息有沒有成功入庫,如果沒有,則會重新發起一次消息,做二次確認,避免因網絡抖動導致消息投遞

原创 Linux面試題總結

目錄 1 Linux常用命令 1 Linux常用命令 cd 切換當前用戶所在的路徑 ls 列出路徑或當前目錄下的所有文件信息 mkdir 用於創建文件夾 cp 用於複製文件或文件夾 mv 移動文件或修改文件名 rm 用於刪除文件或文件夾