原创 Java線程池吞異常源碼解析

工作中使用線程池,內部發生了異常,由於是在線上,進行了日誌打印,怎麼都打印不出來,賊坑。。。 然後本地模擬debug終於找到了原因,使用線程池submit方法執行線程時候會吞掉異常,導致異常無法打印出來 測試代碼: public

原创 K8s部署docker化Java應用

docker下載鏈接 Docker 下面以SpringBoot工程爲例 首先建立一個SpringBoot工程,工程目錄結構如下: > mt-myservice > .idea > .mvn > src

原创 Dubbo啓動常見錯誤

java.lang.IllegalStateException: Invalid name="org.apache.dubbo.config.ProtocolConfig#0" 沒有指定dubbo protocol名稱

原创 Incorrect string value錯誤解決

創建數據庫時配置 character set爲:utf8mb4 collation爲:utf8mb4_unicode_ci 表的配置 character set爲:utf8mb4 collation爲:utf8mb4_general_

原创 Cookie和Session

存儲方式: Cookie:大小限制4k,每次發起請求自動攜帶,保存在客戶端的,默認存儲在內存,瀏覽器關閉就會失效,可設置時間,設置存活時間後存在硬盤中,瀏覽器關閉了依舊可用。 Session:沒有大小限制,存儲在服務器,默認存在內存中 兩

原创 XSS、CSRF攻擊

XSS跨站腳本攻擊(Cross Site Scripting) 原理: 採用惡意script腳本注入,類似於sql注入 解決方案: 對輸入參數進行校驗,處理可疑字符 CSRF(Cross Site Request Forgery, 跨站域

原创 理解ClassLoader類加載器

類加載器一般分爲: 啓動類加載器BootstrapClassLoader 擴展類加載器ExtClassLoader 系統類加載器AppClassLoader 用戶自定義類加載器 ExtClassLoader和AppClassLoader是

原创 ReentrantLock可重入式鎖

首先看下AQS以及CLH 在AQS(AbstractQueuedSynchronizer)中,沒有獲取到鎖的線程我們使用CLH隊列進行儲存 CLH是一個雙向鏈表,鏈表的元素是Node節點,Node類是AQS的內部類,Node主要存儲以下信

原创 Java集合之List

ArrayList 繼承於AbstractList,底層是數組實現的 transient Object[] elementData; 不設置大小則默認大小爲0,當第一次進行add操作時候會擴容,如果容量小於10,默認擴容爲10 pub

原创 Java集合之Map

HashMap 數組(Node類型的數組)加鏈表(或者紅黑樹),new HashMap時不指定大小,則默認爲空,在第一次put數據時候會對Node數組進行擴容,默認大小爲16,擴容是耗費性能的,所以阿里手冊中創建HashMap時候需要指定

原创 K8s Restful patch請求content-type相關設置

API 資源使用REST模式,具體說明如下。 GET /<資源名的複數格式>:獲得某一類型的資源列表,例如GET /pods 返回一個Pod資源列表。 POST /<資源名的複數格式>:創建一個資源,該資源來自用戶提供的JSON對象

原创 Java正則匹配單詞數和漢字

public void matcher(String text) { long c1 = 0; long c2 = 0; if (StringUtils.isBlank(text)

原创 Java併發Semaphore信號量的學習

public class MyThreadTest { private final static Semaphore semaphore = new Semaphore(2);// 設置2個車位 public stat

原创 ThreadLocal的學習

demo:使用戶可以判斷自己訪問站點的排名 // 配置攔截器用於攔截所有的訪問請求 <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/>

原创 Velocity的學習

public class VelocityTest { /** * $!(var):如果有值則輸出,如果爲空,則不顯示; * <p> * ${var}:如果有值則輸出,如果爲空,則將該代碼原樣輸出