原创 【Java 8】用Option代替Null

可怕的 NullPointerException NPE : NullPointerException 空指針異常是最常見的Java異常之一,拋出NPE錯誤不是用戶操作的錯誤,而是開發人員的錯誤,應該被避免,那麼只能在每個方法中加入非空檢查

原创 除法運算時的一個常見錯誤之Non-terminating decimal expansion

一、背景 今天在計算庫存消耗百分比(消耗的庫存/總庫存)的時候遇到了一個錯誤,java.lang.ArithmeticException: Non-terminating decimal expansion; no exact repres

原创 對比String、StringBuilder字符串的連接效率及StringBuilder和StringBuffer線程安全的比較

一、字符串連接的效率問題 使用String連接字符串時爲什麼慢? 小知識點 java中對數組進行初始化後,該數組所佔的內存空間、數組長度都是不可變的。 創建一個字符串,爲字符串對象分配內存空間,會耗費掉一定的時間(CPU)與空間(內存)代價

原创 關於Java正則和轉義中\\和\\\\的理解

\的定義 一個轉義字符的目的是開始一個字符序列,使得轉義字符開頭的該字符序列具有不同於該字符序列單獨出現時的語義。 轉義就是指轉換該字符的原本意義,從而變成另外的意義。 \作爲Java的轉義字符 1.在java字符常量中,反斜槓()是一個特

原创 Java獲取當天、當前月、當前年(今年)的開始和結束時間戳

最近在做統計相關的功能的時候涉及到了獲取當天的開始和結束的時間戳、當月和當年的開始結束時間戳,特此記錄,以作備忘。 相關代碼 package com.lingyejun.authenticator; import java.time.In

原创 Maven中使用<version>LATEST</version>自動依賴最新版本引發的問題

背景 今天在打包項目的過程中出現了編譯問題,奇怪的是這個項目已經好久沒有修改過了,報錯如下。 找不到符號 [ERROR] 符號: 方法 intent(java.lang.String) [ERROR] 位置: 類型爲com.pa

原创 java.lang.NumberFormatException: Infinite or NaN原因之浮點類型除數爲0結果探究

背景 在對Double類型的數據進行計算操作,將結果轉化爲BigDecimal時拋出了下面的異常,進行了Debug才發現了問題原因,同時也暴露出了自己在一些基礎知識上還有些欠缺。 Exception in thread "main" jav

原创 坑爹微信之讀取PKCS12流時出現的java.io.IOException: DerInputStream.getLength

背景 微信退款接口需要使用到證書,我參考微信的官方Demo進行,部分代碼如下: char[] password = config.getMchID().toCharArray(); InputStream certStream = conf

原创 Java中在時間戳計算的過程中遇到的數據溢出問題

背景 今天在跑定時任務的過程中,發現有一個任務在設置數據的查詢時間範圍異常,出現了開始時間戳比結束時間戳大的奇怪現象,計算時間戳的代碼大致如下。 package com.lingyejun.authenticator; public c

原创 辨析Java方法參數中的值傳遞和引用傳遞

小方法大門道 小瓜瓜作爲一個Java初學者,今天跟我說她想通過一個Java方法,將外部變量通過參數傳遞到方法中去,進行邏輯處理,方法執行完畢之後,再對修改過的變量進行判斷處理,代碼如下所示。 public class MethodParam

原创 最新版-Python和Java實現Aes相互加解密

前情 需要使用Python和Java實現同一個AES加解密算法,使Python版本加密的密文能夠由Java代碼解密,反之亦然。 Python實現 Python爲3.6版本 # -*- coding: utf-8 -*- import bas

原创 服務器收不到支付寶notify_url異步回調請求的問題排查

前情 最近在調整支付寶支付的功能時發現,不能夠正常接收支付寶付款成功之後的回調通知了,從代碼到配置最後到服務器配置都排查了一遍,最終發現問題原因竟然是因爲我們的回調地址notify_url是https的但並非是權威機構頒發的證書,不被支付寶

原创 記錄Redis序列化的坑-存Long取Integer的類型轉換錯誤問題及String對象被轉義的問題

背景 最近遇到了兩個Redis相關的問題,趁着清明假期,梳理整理。 1.存入Long類型對象,在代碼中使用Long類型接收,結果報類型轉換錯誤。 2.String對象的反序列化問題,直接在Redis服務器上新增一個key-value,而後在

原创 問題排查之RocketMQAutoConfiguration not loaded.

背景 今天將一個SpringBoot項目的配置參數從原有的.yml文件遷移到Apollo後,啓動報錯 Bean method 'rocketMQTemplate' in 'RocketMQAutoConfiguration' not loa

原创 批量任務體現多線程的威力!

背景 對於多線程的理解不是非常深刻,工作中用到多線程代碼的機會也不多,前不久遇到了一個使用場景,通過編碼實現後對於多線程的理解和應用有了更加深刻的理解。場景如下:現有給用戶發送產品調研的需求,運營的同事拿來了一個Excel文件,要求給Exc