原创 Docker(五):容器數據卷

一. 容器數據卷是什麼?     先來看看Docker的理念: 將運用與運行的環境打包形成容器運行 ,運行可以伴隨着容器,但是我們對數據的要求希望是持久化的 容器之間希望有可能共享數據     Docker容器產生的數據,如果

原创 Docker(一):簡介

一. Docker是什麼? 二. 爲什麼會有Docker的出現?     一款產品從開發到上線,從操作系統,到運行環境,再到應用配置。作爲開發+運維之間的協作我們需要關心很多東西,這也是很多互聯網公司都不得不面對的問題,特別是各

原创 Spring Boot下自定義配置屬性的讀取

一.應用場景     使用Spring Boot開發,經常需要自定義配置屬性,例如系統全局屬性,或者外部調用的常量屬性等,那麼這些配置屬性應該放在哪裏比較合適?怎麼讀取並在代碼中使用呢? 二. 屬性配置     在Spring B

原创 分佈式ID生成策略

一.分佈式高併發下ID生成要求 全局唯一 趨勢遞增 效率高(生成,使用,索引) 控制併發 二.UUID/GUID(通用唯一識別碼) 優缺點: 三. 數據庫自增長 優缺點: 三.推特的雪花算法 優缺點: 五.基於Re

原创 從Spring中學習設計模式

一. 22種代碼中的壞味道 二. 有這麼一個業務需求 三. 六大設計原則 四. 學習Spring框架的做法     Spring啓動後,會執行內部一系列的操作。我們也經常會定義在Spring啓動之後,執行一些特定的業務代碼。

原创 多線程並行編程的設計

一. 爲什麼需要多線程並行編程設計 多線程學習策略: 二.多線程場景示例 package com.hong.concurrent; import java.util.concurrent.Callable; import j

原创 MySql中group_concat數據截斷問題

一.group_concat是幹啥的   group_concat函數用於將多個字符串拼接成一個字符串。   MySql默認的最大拼接長度爲1024個字節,一般情況下是夠用的, 但如果數據量特別大,就會存在java層返回內容被截斷的問

原创 Redis底層探祕之旅

一.Redis之分佈式緩存   Redis最常見的用法就是作爲分佈式緩存中間件,一般在一個完整的請求鏈路中作爲數據庫前面的緩衝地帶,防止在高併發情況下數據庫性能扛不住而使整個服務崩潰。 數據庫性能規格列表: 二.緩存的適用場景-讀多

原创 Tomcat原理

一.Tomcat 整體設計思路 應用服務器市場份額: 二.基於socket接口開發服務端程序 三.HTTP協議 請求數據包解析 響應數據包解析 響應狀態碼 四.Servlet生命週期 五.自己實現一個簡單

原创 基於Redis的分佈式鎖實現方案

一.Redis分佈式鎖實現分析 存在的問題:   如果某個線程執行的太慢,導致在有效期內還沒有執行完,那麼因爲設置了鎖超時自動釋放機制,此時鎖被自動釋放,另一個線程進來拿到鎖開始執行代碼,就會出現同一時間有兩個線程在執行互斥資源

原创 鎖概述

一.Java中的鎖-單個JVM進程中的鎖 Lock與Synchronized的選擇 二.分佈式鎖 三.分佈式鎖設計

原创 高性能系統優化--請求合併讓性能提升數十倍

一.查詢場景 二.什麼是請求合併 三.請求合併的設計思路 四.請求合併的代碼演示 package com.hong.concurrent; import org.springframework.stereotype.Servi

原创 Java集合去重合並以及彙總操作

一.背景 實際開發中,遇到了一個場景,需要對兩個數據源集合進行去重合並,並且對去重合並後的結果集進行數據標籤加工彙總。 二.場景演示 現在有兩個數據源集合,分別來自不同的端,且兩個數據源集合中結構是相同的。 模擬數據源集合1:

原创 過濾器Filter

一.什麼是過濾器   過濾器JavaWeb三大組件之一,它與Servlet很相似!不它過濾器是用來攔截請求的,而不是處理請求的。當用戶請求某個Servlet時,會先執行部署在這個請求上的Filter,如果Filter“放行”,那麼會繼

原创 HTTP協議

一.HTTP概述   HTTP(hypertext transport protocol),即超文本傳輸協議。這個協議詳細規定了瀏覽器和萬維網服務器之間互相通信的規則。   HTTP就是一個通信規則,通信規則規定了客戶端發送給服務器的