原创 @Controller和@RestController的區別和應用場景

@Controller和@RestController的區別和應用場景 官方文檔: @RestController is a stereotype annotation that combines @ResponseBody a

原创 leetcode+華爲筆試題-java實現返回一個整數數組中最大子數組的和

方法一:暴力枚舉 定義一個最大值max初始化一個很小的數,定義一個變量sum表示求和值,遍歷數組元素,從第一個元素開始,依次相加,如果和sum比最大值max大就將sum賦值給最大值。然後再來一個循環控制從第i個數組元素開始求和

原创 java中fail-fast 和 fail-safe的區別

原文地址:http://javahungry.blogspot.com/2014/04/fail-fast-iterator-vs-fail-safe-iterator-difference-with-example-in-jav

原创 java中的DateTime類型和mysql中的TimeStamp類型時間數據差了13小時的問題解決

今天在項目中遇到java的TimeStamp類型的時間數據插入到mysql的DateTime類型時發現時間剛好差了13個小時。因此上網查了查相關問題的解決,折騰了半天,記錄下來解決方案。 不管是差了幾個小時,其實就是時區的問題。

原创 劍指Offer-29-java實現查找數組中出現次數超過一半的元素

思路: 數組中有一個數字出現的次數超過數組長度的一半,也就是說它出現的次數比其他所有數字出現次數的和還要多。 因此我們可以考慮在遍歷數組的時候保存兩個值: 一個是數組中的一個數字, 一個是次數。當我們遍歷到下一個數字的時候,

原创 什麼是可重入鎖

可重入鎖,也叫做遞歸鎖,指的是同一線程外層函數獲得鎖之後,內層遞歸函數仍然有獲取該鎖的代碼,但不受影響。 本文裏面講的是廣義上的可重入鎖,而不是單指JAVA下的ReentrantLock。 可重入鎖,也叫做遞歸鎖,指的是同一線程

原创 JAVA8之collect總結 JAVA8之collect總結(給自己)

JAVA8之collect總結(給自己) 一,collect是一個終端操作,它接收的參數是將流中的元素累積到彙總結果的各種方式(稱爲收集器) 二,預定義收集器包括將流元素歸約和彙總到一個值.如下 工廠方法 返回類型 用於

原创 緩存穿透,緩存擊穿,緩存雪崩解決方案分析

前言 設計一個緩存系統,不得不要考慮的問題就是:緩存穿透、緩存擊穿與失效時的雪崩效應。 緩存穿透 緩存穿透是指查詢一個一定不存在的數據,由於緩存是不命中時被動寫的,並且出於容錯考慮,如果從存儲層查不到數據則不寫入緩存,這將導致這個不存

原创 LinkedBlockingDeque源碼分析

LinkedBlockingDeque是一個基於鏈表的雙端阻塞隊列。和LinkedBlockingQueue類似,區別在於該類實現了Deque接口,而LinkedBlockingQueue實現了Queue接口。該類的繼承關係如下圖:

原创 RPC原理解析

1.RPC原理解析 1.1 什麼是RPC RPC(Remote Procedure Call Protocol)——遠程過程調用協議,它是一種通過網絡從遠程計算機程序上請求服務,而不需要了解底層網絡技術的協議。RPC協議假定某些傳輸協議的

原创 正確理解where和having的使用

以前在學校裏學習過SQLserver數據庫,發現學習的都是皮毛,今天以正確的姿態談一下MySQL中where和having的區別。 誤區:不要錯誤的認爲having和group by 必須配合使用。 下面以一個例子來具體的講解:

原创 分析ReentrantLock的實現原理

Java併發編程源碼分析系列: 分析Java線程池的創建 分析Java線程池執行原理 分析Java線程池Callable任務執行原理 前幾篇文章分析了線程池的原理,接下來研究鎖的方面。顯式鎖ReentrantLock和同步工具類

原创 mysql聯合索引的理解

命名規則:表名_字段名1、需要加索引的字段,要在where條件中2、數據量少的字段不需要加索引3、如果where條件中是OR關係,加索引不起作用4、符合最左原則 https://segmentfault.com/q/10100000039

原创 java函數式編程之Predicate

描述:Predicate< T>接口接受一個T類型參數,返回一個boolean值。 源碼: public interface Predicate<T> { boolean test(T t); }123 測試代碼如下:

原创 線程池中的線程爲什麼不會釋放而是循環等待任務呢

線程池 之前一直有這個疑問:我們平時使用線程都是各種new Thread(),然後直接在run()方法裏面執行我們要做的各種操作,使用完後需要做什麼管理嗎?線程池爲什麼能維持住核心線程不釋放,一直接收任務進行處理呢? 線程 線程