原创 講講springboot自動配置原理

講講springboot自動配置原理 講講springboot自動配置原理 上圖是springboot自動配置大致流程圖,我們都知道springboot框架使用起來非常方便,我們只要引入相關組件的maven包,然後配置少量的配置就可以正

原创 創建多少線程合適

爲什麼要使用多線程? 防止併發編程出錯最好的辦法就是不寫併發程序 既然多線程編程容易出錯,爲什麼它還經久不衰呢? A:那還用說,肯定在某些方面有特長唄,比如你知道的【它很快,非常快】 我也很贊同這個答案,但說的不夠具體 併發編程適用

原创 docker 安裝MySQL

此外,我們還可以用 docker search mysql 命令來查看可用版本: $ docker search mysql NAME DESCRIPTION

原创 mysql 高併發update導致死鎖的 情況

死鎖產生的條件: 出現循環等待資源。 update對鎖的流程:        當sql發出一個update請求之後,數據庫會對錶中的每條記錄加上U鎖。然後數據庫會根據where條件,將符合條件的記錄轉換爲X鎖。對不滿足條件的記錄釋放U鎖。

原创 ConcurrentHashMap 原理分析

瞭解ConcurrentHashMap 實現原理,建議首先了解下HashMap實現原理。HashMap 源碼解析(JDK1.8) 爲什麼要用ConcurrentHashMap HashMap線程不安全,而Hashtable是線程安全,但是

原创 rocketMQ 教程demo

    http://ifeve.com/%E3%80%8Aapache-rocketmq%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97%E3%80%8B%E5%AE%98%E6%96%B9%E6%96%87%E

原创 細粒度鎖的實現

 最近在工作上碰見了一些高併發的場景需要加鎖來保證業務邏輯的正確性,並且要求加鎖後性能不能受到太大的影響。初步的想法是通過數據的時間戳,id等關鍵字來加鎖,從而保證不同類型數據處理的併發性。而java自身api提供的鎖粒度太大,很難同時滿

原创 常用Linux系統管理命令總結

一、目錄指令 1、創建目錄make directory mkdir  目錄名稱                 //mkdir spring,創建一個spring文件夾 mkdir  -p  file/file/file        

原创 基於shard-jdbc中間件,實現數據分庫分表

一、水平分割 1、水平分庫 1)、概念: 以字段爲依據,按照一定策略,將一個庫中的數據拆分到多個庫中。 2)、結果 每個庫的結構都一樣;數據都不一樣; 所有庫的並集是全量數據; 2、水平分表 1)、概念 以字段爲依據,按照一定策略,將一個

原创 基於Shard-Jdbc分庫分表,數據庫擴容方案

一、數據庫擴容 1、業務場景 互聯網項目中有很多“數據量大,業務複雜度高,需要分庫分表”的業務場景。 這樣分層的架構 (1)上層是業務層biz,實現業務邏輯封裝; (2)中間是服務層service,封裝數據訪問; (3)下層是數據層db

原创 JVM故障分析及性能優化系列之七:使用MAT的Histogram和Dominator Tree定位溢出源

JVM故障分析及性能優化系列文章 JVM故障分析及性能優化系列之一:使用jstack定位線程堆棧信息JVM故障分析及性能優化系列之二:jstack生成的Thread Dump日誌結構解析JVM故障分析及性能優化系列之三:jstat命令的使

原创 調用鏈跨線程傳遞ThreadLocal對象

在全鏈路跟蹤框架中,Trace信息的傳遞功能是基於ThreadLocal的。但實際業務中可能會使用異步調用,這樣就會丟失Trace信息,破壞了鏈路的完整性。 在同一線程中trace信息的傳遞流程使用代碼模擬如下: ThreadLocal

原创 使用過那些設計模式

前言 在【Java設計模式】系列中,LZ寫了十幾篇關於設計模式的文章,大致是關於每種設計模式的作用、寫法、優缺點、應用場景。 隨着LZ自身的成長,再加上在工作中會從事一定的架構以及底層代碼設計的原因,在近半年的實踐中,對於設計模式的理解又

原创 mysql 分庫後怎麼通過ES數據異構查詢 多個庫的數據

前段時間與同事一起爲產品接入了 Elasticsearch 框架技術。從參與方案會議到搭建開發上線過程中有很多討論點,故產生本文,希望藉此總結和分享一些經驗。 1. 業務模型 接觸已有的業務時,數據模型是最早需要知道的信息。我和同事負責接

原创 mosquitto 常見客戶端命令

mosquitto_pub 命令參數說明 1. -d  打印debug信息 2. -f  將指定文件的內容作爲發送消息的內容 3. -h  指定要連接的域名  默認爲localhost 4. -i  指定要給哪個clientId的用戶發送