原创 Druid 的 WallFilter 拋出 sql injection violation, comment not allow 問題的解決方法

ps:     https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter可以對應修改參數。     如需要執行多行語句 , 要設置multiStatementA

原创 Elasticsearch進行過濾的時候使用位運算

代碼 如果一共有4位,如0000,欲匹配xx11. 1.利用script eg:只匹配11 { "query": { "bool": { "filter": { "script": {

原创 Spring之NamespaceHandler與BeanDefinitionParser

1.前文 由Spring啓動過程之-obtainFreshBeanFactory() 可以看到NamespaceHandler、BeanDefinitionParser爲解析配置文件中的Element起重要作用。那麼它本身是如何被

原创 Netty中遇到的問題:ctx.writeAndFlush造成非連續的請求。

目的 爲了保證客戶端的請求是順序發送到服務端的,ctx.writeAndFlush被包裝在用synchronized修飾的send方法中,客戶端統一調用sendRequest方法。 有多個線程使用sendRequest方法 1.e

原创 讀書筆記:《大型網站系統與Java中間件實踐》

文章目錄大型網站演進數據庫讀問題寫問題應用應對的挑戰引入服務層框架:多機房問題序列化與反序列化問題異步調用線程池隔離服務請求合併數據訪問層一致性的基礎理論--CAP/BASE多機的Sequence問題消息中間件功能消息一致性避免對

原创 對elasticsearch持久化變更的一點理解

refresh–可搜索但還未持久化 數據寫到一個新的segment 實現了1s(默認)的實時搜索。 fsync --持久化 提交(Commiting)一個新的段到磁盤需要一個 fsync 來確保段被物理性地寫入磁盤。 flush

原创 Spring之啓動過程obtainFreshBeanFactory()

1.refresh流程 refresh是spring啓動的關鍵方法,refresh啓動過程中,先要得到beanFactory 以及 需要交給beanFactory管理的bean。 在refresh時,prepareRefresh後

原创 【內存泄漏】測試ThreadLocal 在gc後引發的threadLocalMap的key爲null,但value不爲null的情況

效果 gc後key爲null,但是值不爲null。 需要注意的是,這裏立即釋放了對threadLocal實例的強引用,幫助gc回收。查看弱引用的使用方法 原因 ThreadLocal#set後會將threadLocal實例本身作

原创 《Java性能優化權威指南》學習筆記

編譯 編譯是指生成機器碼 即 二進制目標文件的過程。 Java最初是轉換爲類文件,虛擬機將其轉爲字節碼。 運行時動態的轉爲機器碼。 JIT會在運行時,將調用次數超過閾值CompileThreshold的代碼編譯(由方法調用計數器計

原创 一次OOM分析-ByteArrayOutPutStream#write引起

本文產生的原因 上傳一個大文件文件的時候報了OOM 查看代碼 以前的上傳代碼中使用了 URL url = new **URL**(urlStr); conn = (HttpURLConnection) url.openConne

原创 URLConnection 使用流的問題

原文鏈接:http://www.mzone.cc URLConnection 使用流的問題 HttpURLConnection con = (HttpURLConnection)new URL(

原创 強引用、軟引用、弱引用、虛引用測試

強引用 除非GC Roots不可達,否則寧願OOM也不回收引用 /** * 除非GC Roots不可達,否則寧願OOM也不回收引用 * 啓動參數: * -Xmx16m -XX:+PrintGCDetails -XX:+Pr

原创 MongoDB中remove與deleteMany的區別?

deleteMany/remove都可以添加writeConcern參數,表明是否關注writeConcern What’s the difference between “deletemany” and “remove” in

原创 keepAliveTime爲0以及隊列太小導致ThreadPoolExecutor不斷創建新線程

文章目錄本文產生原因猜測源碼測試jvisualVM 查看線程結論: 本文產生原因 羣友問題: 使用ThreadPoolExecutor實現固定大小的線程池,但是程序跑一段時間後,就會重新創建新的線程,求問有人遇到過這個問題嗎?

原创 SocketInputStream.socketRead0引起線程池提交任務後,futureTask.get超時

文章目錄現象結論相關代碼查看堆棧:查看submitCallThreadPoolExecutor#execute最終調用了 RunnableFuture#run方法從代碼層面判斷 futureTask.get超時隻影響了業務線程(調