原创 踩了一個java中三目運算符的坑

        前兩天在開發中遇到了一個很詭異的NPE情況,最後發現是三目運算符的編譯問題,這裏記錄一下。         簡化後的代碼如下: Map<String, Long> map = Maps.newHashMap(); map

原创 性能壓測總結

        最近公司上了一個大項目,在上線前進行了3周的全鏈路壓測,總結了不少優化點,這裏列舉一些,以供大家參考         1、統一日誌處理的aop攔截冗餘                 在攔截aop時pointCut配置,將

原创 簡易SQL判別器

        在之前工作的慢SQL排查中,發現有一種慢查是這樣的,select * from tableName where 1=1,這個產生的原因相信大家都清楚,我在處理該類問題的時候,就想如何更好的避免這種問題,通過翻閱了PageH

原创 使用GuavaCache的一些姿勢

        最近寫一個小項目,遇到一個高頻查詢功能,使用redis又有點浪費,就決定採用本地緩存來實現,於是就想到了一直很火的GuavaCache,這裏對使用GuavaCache做一些小結。         (在查資料的過程中,發現s

原创 通過PageHelper源碼學習MyBatis插件的開發

        最近工作中遇到了一些sql語句寫法上的問題(具體的問題會在下一篇文章中說明),想了一些辦法來解決總覺得太麻煩,後來想到了用mybatis的插件方式來實現,但是不太清楚插件的原理以及如何書寫,正好項目中用到了pageHelp

原创 一次奇怪的mysql查詢優化發現mysql查詢優化器的bug

        最近剛上線的一個sql出現了慢查,經過分析發現了一個很有意思的問題,具體表現爲,select * from tablename where a=xx and b=xx and c=xxx and time<xxx orde

原创 在lambda中使用外部變量的一些心得

        隨着java8的普及,越來越多的人開始使用lambda表達式。然後初學者們總會遇到一個奇怪的問題:         Variable used in lambda expression should be final or

原创 MQ面試相關知識總結

一、MQ用途         主要有3點:解耦、異步、削峯(限流)。         大致圖形如下,其實就是在服務與服務之間增加了一箇中間件,可以實現上面的三種用途。 解耦:我們看到,服務A強依賴服務B和C,當服務B或者C掛掉後,會直接

原创 win10下安裝MySQL8小結

        按照網上的教程安裝,發現有幾步不太正確。就按照我改正後的步驟記錄一下。 1、下載MySQL,地址:https://dev.mysql.com/downloads/mysql/,下載Windows (x86, 64-bit)

原创 記錄一次小型的java內存泄露問題排查過程

        前不久發現自己的微信小程序突然掛了,查詢後臺發現tomcat竟然被幹掉了,趕忙將服務重新啓動,先解決問題再說。         然後就該想想tomcat的進程爲什麼會被殺掉了。         在排除人爲因素後,就只有內存

原创 JAVA併發編程中關於鎖的小結

        最近在學習java的併發編程時,遇到了很多鎖的概念,有很多其實都是同一個鎖的多種叫法而已,或者是某種鎖的一個功能。爲了更好的梳理這塊知識,這裏做一個小結,將鎖的概念進行區分。         先說目前我們所遇到的鎖的名詞,

原创 WeakCache解析

        在搞懂了弱引用,以及弱引用hashmap以後,終於可以來看看WeakCache這個類是怎麼緩存動態代理類的了。         先來個硬翻譯,把這個類上面的註釋,自己翻譯了一遍。。。         它是一個具有二級緩存的

原创 Java中的關於弱引用分析

        上一篇在研究動態代理的時候,遇到了WeakCache,研究了半天,才發現自己連java的強引用、弱引用都不瞭解,就決定先去研究這個東東,然後再去看WeakCache類。         Java中存在四種引用,分別是強引用

原创 JDK動態代理源碼分析

        上一篇中,分析了靜態代理和動態代理的區別,還留有一些問題,最核心的就是,爲什麼JDK動態代理必須要有一個接口,還有就是,定義一個InvocationHandler,並用Proxy.newProxyInstance調用,怎麼

原创 java靜態代理與動態代理

        假設有一個User類,裏面有一個獲取用戶信息的方法,接口和實現如下: //接口定義 public interface IUserService { void getUserInfo(); } //接口實現 publ