原创 mac JDK以及Maven環境變量的配置

環境變量的配置 1)sudo vi ~/bash_profile 2)export JAVA_HOME=/Library/java/javaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home 3)

原创 Mybatis:The error occurred while setting parameters 參數設置錯誤

我的SQL的目的是查詢出指定指導老師下的第一個學生信息: SELECT * FROM student WHERE `expired` = 0 AND teacher_id = 160278 ORDER BY id ASC LIMIT 1

原创 static、final和ThreadLocal的使用說明

(一)static 1、static修飾的方法和屬性會統一交給類管理,即多個類對象只會對應一個屬性或方法,並由JVM分配在堆中的一塊不變的區域。 2、static修飾的方法,可以使用"類名.方法名"的方式調用,避免了需要new對象的繁瑣和

原创 druid數據庫連接池的多數據源自動注入配置

在項目配置文件中進行如下參數配置,現以“.yml”類型文件舉例: #druid連接池配置 spring: datasource: type: com.alibaba.druid.pool.DruidDataSource

原创 java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder 報錯解決方案

springboot + springcloud 搭建項目時報以上錯,是由於springboot版本與springcloud的版本不兼容問題。 springboot與springcloud的版本兼容對應關係如下所示: SpringClou

原创 swagger 註解學習

(一)常用註解 1、@ApiImplicitParam(name="companyId",value="公司id",required=false) --可替代@RequestParam註解,允許入參爲空   2、@Api(tags="接單

原创 Eureka 啓動報錯“was unable to refresh its cache! status = Cannot execute request on any known server”

當項目啓動報以下錯時,一般是配置文件寫得有問題: 報錯時配置文件: eureka.client.defaultZone=http://127.0.0.1:8082/eureka/ 修改後: eureka.client.service

原创 countDownLatch和cyclicBarrier

由於在做接口的性能優化,最近也在學習併發編程的這塊知識,剛好將理論應用於實戰中。對瞭解到的東西不僅加深了印象,而且能夠用起來,才達到了學習的目的。 (1)當我們使用線程池進行併發編程時,後續操作需要依賴於並行線程執行的結果時,這時就可以考

原创 實踐項目中的JVM調優

背景 有個項目在接入阿里雲的ARMS之後,可以實時對應用的健康情況進行監控、分析、預警。如下圖展示一段時間內應用“JVM監控”: 從這個視圖中可以看出幾個關鍵點: (1)標號1中展示此時間段內FullGC次數、YoungGC次數; (2

原创 線程池工作機制

【線程池】在接口性能時,尤其注重了線程池的使用。不建議使用Executors,原因在於它裏面的很多方法默認使用的都是無界的LinkedBlockingQueue,高併發情況下,無界隊列很容易導致OOM,而OOM會導致所有請求都無法處理,這

原创 多線程優化與stream使用

【多線程優化】 在併發程序中,並不是啓動更多的線程就能讓程序最大限度地併發執行。線程數量設置太小,會導致程序不能充分地利用系統資源;線程數量設置太大,又可能帶來資源的過度競爭,導致上下文切換造成額外的系統性能開銷。因此合理地設置線程數量,

原创 String對象優化

String對象的不可變性可保證其安全性,能防止對象被惡意修改,同時它可實現字符串常量池,使得在創建常量字符串時防止同一個值的字符串對象被重複創建,達到節約內存的目的。基於String對象的特性,那麼在使用時可以從以下節點進行優化:  

原创 rocketMq使用注意點

【rocketMq】在使用rocketMq的過程中,遇到兩種場景,導致訂閱的消息無法100%被消費。後根據消息消費情況以及訂閱關係,結合rocketMq的官方文檔,在大神的指導下解決了問題。如下圖所示描述了所有錯誤的訂閱關係。     

原创 【服務注入】@Autowired 和@Resource

【服務注入】我們在一個類中注入依賴服務的方式有兩種,方式一: @Autowired ;方式二: @Resource。可能我們並沒有仔細深究他們的區別在哪裏或者理解有偏差,導致我們可能在啓動項目時,會拋出xxBean無法被找到,於是我特別去

原创 執行很快的SQL卻導致慢接口

在解決慢SQL和慢接口時,發現有些SQL執行挺快的,但是接口呈現的結果就是時間過長。那麼或許是數據庫連接池配置不合理。如果併發線程數超過了連接數,那麼就會有部分線程無法獲得連接而進入阻塞,等待其他線程釋放連接後才能訪問數據庫。由這個問題,