原创 Java8 Collections.sort()及Arrays.sort()中Lambda表達式及增強版Comparator的使用

本文主要介紹Java8 中Arrays.sort()及Collections.sort()中Lambda表達式及增強版Comparator的使用。 import com.google.common.collect.Lists; impo

原创 mybaits中設置的返回值類型爲boolean類型,當查詢的結果大於1時返回True而不是false

在Mybatis項目中,遇到一個需要返回布爾值來確定某條記錄是否存在的需求。由於查詢的結果可能是0、1或者>1,就想確認一下,當resultType爲boolean類型時,Mybatis是怎麼轉換的。查詢了一下博客,一些博客說:當記錄數行

原创 spring boot 使用ThreadLocal實例

本文參考慕課教程給出一個在spring boot中使用ThreadLocal實現線程封閉的實例。 首先創建一個包含ThreadLocal成員變量的實例: public class RequestHolder { private

原创 ThreadLocal原理、使用場景及存在內存泄漏的原因

什麼是線程封閉 當多線程訪問共享變量時,往往需要加鎖來保證共享變量的線程安全(數據同步)。一種避免使用加鎖方式就是不共享數據,而是讓線程獨享數據。由於數據本身就是線程私有的,這樣,如果僅在單線程內訪問數據就不需要同步,這種避免共享數據的技

原创 解決intellij idea "cannot resolve property key"

  刪除spring application context 再重新添加一遍

原创 線程併發-CAS及原子類

引子 示例程序:啓動兩個線程,每個線程中讓靜態變量count循環累加100次。 這段線程不安全,最終結果小於200。 解決方法一:使用Synchronized。 Synchronized關鍵字會讓沒有得到鎖資源的線程進入BLOCKED狀

原创 Synchronized關鍵字及鎖對象

代碼示例: 修飾代碼塊:  執行結果: 兩個實例分別調用test1()方法,代碼交叉執行,說明Synchronized修飾代碼塊時,兩個線程獲取的鎖不一樣,不同的調用對象各自獲取自己的this對象鎖,this代表當前的實例對象。 修

原创 Sql語句中的limit 1能有效縮短查詢時間

使用場景: 在根據非索引字段查詢時,若查詢結果只有一條記錄,可以在sql語句中使用  " limit 1",來有效縮短查詢時間。 實驗:  創建表t-user; create table t_user(  id int primary k

原创 如何使用.ignore忽略不必要提交的文件

一:第一種方式  在項目中添加 .gitignore 文件 1、在需要創建 .gitignore 文件的文件夾(即項目所在的文件夾), 右鍵選擇Git Bash 進入項目所在目錄。 2、輸入 touch .gitignore ,生成“.g

原创 如何在一個IDEA項目上啓動多個Spring Boot工程實例

第一步: 在IDEA上點擊Application右邊的下三角,彈出選項後,點擊Edit Configuration,進入如下配置界面: 將默認的Single instance only(單實例)的鉤去掉。 第二步: 在這個項目上修改a

原创 關於局部變量的初始化

我們經常被告知:在Java中的局部變量必須要先初始化,然後才能使用。爲什麼呢?   1. 主內存和工作內存 Java內存模型規定了所有的變量都存儲在主內存中,每條線程都有自己的工作內存。線程的工作內存中保存了被該線程使用到的變量的主內存拷

原创 redis設計鍵,讓其映射到同一個slot

jedisCluster.sadd("PhiAd{materialType}qqqq","71","73"); jedisCluster.sadd("PhiAd{materialType}ssss","72","73"); Set<St

原创 關於mysql5.7.23.0中的Group By 語句

說明:我們知道在使用Group By的sql語句中,出現在select語句後面的字段必須包含在Group By語句或者聚合函數裏面,否則會報錯。但在mysql5.7.23.0中,這種情況不會報錯,sql語句會執行,但是結果集中只會顯示分組

原创 mysql:Count(*)與Count(1)、Count(2)、Count(‘anything’)及Count(字段)區別

一:Count(*) 、Count(1)、Count(543)或者無論Count(‘anything’) 只要在Count中指定非NULL表達式,結果沒有任何區別。因此當你指定Count(*) 或者Count(1)、Count(543)或