原创 [WIP]類之間的循環依賴,你頭疼了嗎?

類之間的循環依賴指的的A依賴B,B也依賴A,這就出現循環依賴。如果是spring容器中的兩個bean出現循環依賴,則在容器啓動時,可能會報錯,導致無法啓動。   如果解決循環依賴? 首先要理清各類的職責,尤其是分層職責————相同層級不要相

原创 一個面試題:計算時間偏移量,怎麼設計你的程序?

計算時間偏移量,例如,計算當前時間向前偏移 30 秒的時間,我們利用java.util.Calendar很容易實現。 Calendar cal = Calendar.getInstance(); cal.setTime(

原创 IntelliJ IDEA相關操作

多工程MonoRepo。查看一個方法在哪些module裏被調用 方法上 右鍵 → Find Usages(Alt+F7)  

原创 程序員還是需要有點英語水平...

今天在代碼走查時,注意到下面代碼中的這個常量:MINDESTBETRAG,看註釋它表示的是單筆資金交易的最小限制金額。而MINDESTBETRAG都是哪些單詞的組合呢?令人費解!前三個字母組成MIN,那麼後面的DESTBETRAG呢?轉換成

原创 Cannot Reference “XxxClass.xxx” Before Supertype Constructor Has Been Called

百度翻譯:在調用超類型構造函數之前無法引用“XxxClass.xxx” ----- 我的理解:一個類的構造器方法還未執行的時候,我們無法使用類的成員屬性或成員方法。   下面是此錯誤的示例代碼 public class MyExcepti

原创 Shiro自定義異常無法被捕獲總是拋出AuthenticationException解決方案

問題描述 配置Realm之後,發現在Realm中拋出的異常無法被捕獲,拋出AuthenticationException異常。例如請求接收的token無效等,這致使log文件裏出現大量這樣的異常堆棧信息。我司系統會對通過應用log文件檢測

原创 判斷對象是否爲null,小夥竟然用StringUtils.isEmpty(obj+"")

我在代碼走查時,發現下面的代碼。其中Line133行的StringUtils.isEmpty(levyId+"")引起了我的注意。levyId是Long,你這樣判斷Long是否爲null,靠譜嗎?     答案是:不靠譜! 當levyId

原创 “編不下去了!”~如何在泛型方法裏獲取T的類型?

我定義了一個hessian2反序列化的工具方法。爲了便於使用,使用了泛型。可是遇到了一個問題,其中調用的Hessian2Input#readObject的入參類型是Class實例。那麼,怎麼獲取泛型T的類型呢? public static

原创 這段代碼會拋出NPE,你造嗎?----封裝AssertUtil來友好地利用斷言

運行下面代碼,會拋出NPE。你知道爲什麼嗎? import cn.hutool.core.lang.Assert; public class TestMain { public static void main(String[

原创 來點小匠心--一個小迭代的代碼實現及調優

問題 我司對外部商戶提供的API中,有一個年久失修的開票記錄查詢接口,近期在一次集中測試時,發現這個接口的響應值與接口文檔裏描述的不一致。代碼裏定義的field名是type,而文檔裏參數名是invoiceTypeId。 修改方案 因爲無法

原创 lombok.Getter cheated me

下面這段代碼,IDE里正常顯示。不過,在build時,會報錯。 interface Doable { Integer getCode(); } @lombok.Getter class DerivedClass implemen

原创 這兩個重載方法,你怎麼重構?

先看看下面SmsUtil類裏的這兩個重載方法 @ConfigurationProperties(prefix = "sms.config") @Setter public class SmsUtil { @Autowired

原创 once do, do it well

昨天出現一個生產問題。我們的channel系統代碼裏,調用其中一個三方服務商的http接口時未設置超時時間。碰巧昨天出現一筆http請求持續數小時始終無響應,加之程序是單線程處理交易請求,就出現因爲線程一直處於RUNNABLE狀態而導致系統

原创 解決java註解處理器生成的方法,在編譯時報錯“找不到符號”

我的註解處理器,添加的其中一個方法中有一段AST代碼如下: JCTree.JCFieldAccess objectsIsNull = maker.Select(maker.Ident(names.fromString("java.util

原创 java reflection exception--can not access a member of class XXX with modifiers "private"

look at the sample program below. It works when I run it. Field[] fields = reflectAllFields(parameter); for (Field fiel