原创 分佈式鎖介紹的最清楚(^_^^_^)

爲什麼用分佈式鎖? 在討論這個問題之前,我們先來看一個業務場景: 系統A是一個電商系統,目前是一臺機器部署,系統中有一個用戶下訂單的接口,但是用戶下訂單之前一定要去檢查一下庫存,確保庫存足夠了纔會給用戶下單。 由於系統有一定的併發,所以會

原创 分佈式鎖超時問題的處理(只是參考,推薦使用redission框架和ZK做分佈式鎖)

1、redis分佈式鎖的基本實現 redis加鎖命令: SETNX resource_name my_random_value PX 30000 這個命令的作用是在只有這個key不存在的時候纔會設置這個key的值(NX選項的作用),

原创 mysql 類型轉換 使用CAST或者CONVERT把varchar類型轉換int排序

1 BINARY[(N)] 2 CHAR[(N)] 3 DATE 4 DATETIME 5 DECIMAL 6 SIGNED [INTEGER] 7 TIME 8 UNSIGNED [INTEGER] --使用CAST將varchar

原创 mysql union 和union all 的區別

MySQL UNION 用於把來自多個 SELECT 語句的結果組合到一個結果集合中。語法爲: SELECT column,... FROM table1 UNION [ALL] SELECT column,... FROM tabl

原创 JDK1.8 CompletableFuture異步編程(^_^)

JDK 5引入了Future模式。Future接口是Java多線程Future模式的實現,在java.util.concurrent包中,可以來進行異步計算。 Future模式是多線程設計常用的一種設計模式。Future模式可以理解成:我

原创 ConcurrentMap對於不同JDK版本的不同結構

瞭解ConcurrentHashMap 實現原理,建議首先了解下HashMap實現原理。   爲什麼要用ConcurrentHashMap HashMap線程不安全,而Hashtable是線程安全,但是它使用了synchronized進行

原创 NOSql數據庫的優缺點分析

Nosql介紹 Nosql的全稱是Not Only Sql,這個概念早起就有人提出,在09年的時候比較火。Nosql指的是非關係型數據庫,而我們常用的都是關係型數據庫。就像我們常用的mysql,oralce、sqlserver等一樣,這些

原创 ES6 array.map()用法

定義:對數組中的每個元素進行處理,得到新的數組; 特點:不改變原有數據的結構和數據 const array = [1, 3, 6, 9]; const newArray = array.map(function (value) {

原创 mysql sum(if())和count(if())用法

SELECT SUM(if(category=1,size,0)) ,COUNT(if(category=1,true,null)) FORM t_file;  首先了解下: count函數 mysql中count函數用於統計數據表中的行

原创 spring boot 註解處理統一異常和自己編寫接口來處理異常的區別

此前,我們主要通過在控制層(Controller)中手動捕捉異常(TryCatch)和處理錯誤,在SpringBoot 統一異常處理的做法主要有兩種:一是基於註解ExceptionHandler,二是基於接口ErrorController

原创 ES6 function函數和箭頭函數區別

1.箭頭函數與function定義函數的寫法: //function function fn(a, b){ return a + b; } //arrow function var foo = (a, b)=>{ return a

原创 for循環中不要使用remove操作

不要在 foreach 循環裏進行元素的 remove / add 操作。 remove 元素請使用 Iterator 方式,如果併發操作,需要對 Iterator 對象加鎖。 正例: Iterator<String> iterator

原创 synchronized 什麼時候釋放鎖

任何線程進入同步代碼塊、同步方法之前,必須獲得同步監視器的鎖定,那麼何時會釋放這個鎖定呢?在程序中,是無法顯式釋放對同步監視器的鎖的,而會在如下幾個情況下釋放鎖。 1、當前線程的同步方法、代碼塊執行結束的時候釋放 2、當前線程在同步方法、

原创 springboot 分佈式事務的解決方案(^_^^_^)

首先,到底啥是分佈式事務呢,比如我們在執行一個業務邏輯的時候有兩步分別操作A數據源和B數據源,當我們在A數據源執行數據更改後,在B數據源執行時出現運行時異常,那麼我們必須要讓B數據源的操作回滾,並回滾對A數據源的操作;這種情況在支付業務時

原创 git 操作手冊

一:Git是什麼?   Git是目前世界上最先進的分佈式版本控制系統。   工作原理 / 流程:     Workspace:工作區 Index / Stage:暫存區 Repository:倉庫區(或本地倉庫) Remo