原创 Springboot啓動不檢查JPA的數據源配置

1.問題 有時我們使用spring boot ,在依賴中配置了spring data jpa的依賴,此時spring boot啓動時會自動檢測數據源的配置,如果沒有則報無數據源的錯誤。 但是這個依賴必須要有,因爲代碼需要根據一些條

原创 一次生產環境大量CLOSE_WAIT導致服務無法訪問的定位過程

1.症狀 生產環境的一個服務突然無法訪問,服務的交互過程如下所示: 所有的請求都是通過網關進入,之後分發到後端服務。 現在的情況是用戶服務無法訪問商旅服務,網關有大量java.net.SocketTimeoutException

原创 Java File 類的 getPath()、getAbsolutePath()、getCanonicalPath() 的區別

楔子 考慮一下幾種路徑: C:\temp\file.txt- 絕對路徑,也是規範路徑 .\file.txt- 相對路徑 C:\temp\myapp\bin\..\..\file.txt這是一個絕對路徑,但不是規範路徑 關於什麼是規

原创 springboot 修改啓動時默認加載application.properties文件以及加載指定配置文件

1.前言 在項目中遇到這樣一個問題,A工程依賴於B工程(jar包依賴),A、B均採用springboot開發,且都有application.properties文件。在A工程啓動時,加載的竟然是B工程的application.pr

原创 常見的Web攻擊.md

1.ZIP炸彈 zip炸彈就是一個高壓縮比的zip文件,它本身可能只有幾M或幾十M的大小,但是解壓縮之後會產生巨大的數據量,會解壓到幾十G的大小甚至更大,這種zip文件會對解壓縮的系統造成嚴重的資源負擔,影響目標系統業務甚至達到使

原创 如何優雅地停止一個線程?.md

楔子 線程終止有兩種情況: 1、線程的任務執行完成 2、線程在執行任務過程中發生異常 這兩者屬於線程自行終止,如何讓線程 A 把線程 B 終止呢? Java 中 Thread類有一個stop()方法,可以終止線程,不過這個方

原创 haproxy介紹

1.簡介 HAProxy是一個使用C語言編寫的自由及開放源代碼軟件,其提供高可用性、負載均衡,以及基於TCP和HTTP的應用程序代理。 HAProxy是一個免費的負載均衡軟件,可以運行於大部分主流的Linux操作系統上。 HAPr

原创 java RSA數據分段加密解密實現.md

java RSA加密解密實現 該工具類中用到了BASE64,需要藉助第三方類庫:javabase64-1.3.1.jar 注意: RSA加密明文最大長度117字節(經實際測試最大爲350),解密要求密文最大長度爲128字節

原创 JAVA-IO流體系

JAVA-IO流體系 在IO中,具體構件角色是節點流,裝飾角色是過濾流。 1、繼承自InputStream/OutputStream的流都是用於向程序中輸入/輸出數據,且數據的單位都是字節(byte=8bit),如圖,深色的爲節點

原创 Linux自帶的logrotate程序來解決catalina.out的日誌輪轉問題.md

1.首先編輯logrotate.conf文件,打開compress選項(去掉註釋) [root@localhost ~]# cat /etc/logrotate.conf | grep -v "^$"| grep -v "#

原创 Java中的WeakHashMap

楔子 WeakHashMap,此種Map的特點是,當除了自身有對key的引用外,此key沒有其他引用那麼此map會自動丟棄此值,所以比較適合做緩存。 WeakHashMap的這種特性比較適合實現類似本地、堆內緩存的存儲機制——緩存

原创 軟件設計的一些原則.md

1. Don’t Repeat Yourself (DRY) 對重複代碼進行公共方法提取,進行功能抽象、模板提取和功能最小化等操作。 若在項目中很多的重複代碼,意味着程序缺乏設計和抽象,這樣的代碼顯得臃腫,不夠簡潔、清晰,容易造

原创 培訓知識點總結.md

重構的目標 易讀 易改 留好擴展點 防護 需要做金字塔防護 測試用例要由關鍵的冒煙用例和普通用例 測試用例做到測試即文檔,測試函數名字就知道要測什麼 每個測試的職責要單一 手段 切割上下文 留好擴展點 做好測試保護(多使

原创 反思與總結

2019/9/4 能在5分鐘做完的臨時事情就馬上做完,不要拖沓 做事時要多思考,用心,用正確的方法,一次性把事情做對,做完在掃視一下就可以了。不要猶猶豫豫、不放心、要果斷,相信自己 出現了問題,後續還會出現,馬上想辦法解決。例如

原创 Git學習入門筆記

1. 集中式VS分佈式 集中式:CVS、SVN 速度慢,必須聯網,版本庫在中央服務器中,使用簡單 分佈式:Git 速度快,無需聯網,安全性高,每個人的電腦都有完整的版本庫,中央服務器用來交換大家的改動,分支管理強大,使用較複雜