原创 BigDecimal的精度問題以及解決方案

背景 我們在開發產品時, 會遇到金額的問題. 與普通的計算不同, 涉及到錢的問題不馬虎, 多一分少一分肯定是不行的. 數據庫: 存儲金額時, bigint, 以分爲單位. 場景 在支付一個訂單時, 企業支付一部分, 個人支付一部分

原创 Spring data jpa的高級查詢的應用和底層原理分析

spring data jpa的查詢 目前比較簡單的查詢: 三種查詢方案的寫法 固定參數查詢 interface XxxRepo implements JpaRepository<T,Long>{ EntityXxx fin

原创 JVM調優(一)底層原理分析和問題定位

在這裏,假設你已經讀過《深入理解Java虛擬機》或者類似的書籍或查看過官方文檔。 這個話題從爲什麼開始。 在虛擬機執行時,有時候會遇到各種線上問題。比如CPU使用居高不下,內存消耗過多,IO讀寫頻繁等問題。我們得找到相應的方法來確

原创 springboot中使用filter來修改body裏的參數

在這裏, 以去空格爲例來進行說明. 背景:在項目中, 經常會遇到前端往後端傳參會有字符串參數首尾有空格的情況, 一般如果字段比較少, 或者接口比較少, 自行在controller位置處理一下, 是沒有問題的. 就是重複代碼多, 工

原创 Java後臺模擬向Servlet發送POST文件上傳請求

在某些情況下,需要用Java applicatioin來模擬form,向服務器(本文以servlet爲例)發送http post請求,包括提交表單域中的數據以及上傳文件。如果僅僅是傳遞form中的數據,而不包含上傳文件,那是很簡單的,比

原创 [Log4j] 配置Log4j (寫得太好了,忍不住把評論也轉了,評論最後一條有大作用)

[Log4j] 配置Log4j Log4J的配置文件(Configuration File)就是用來設置記錄器的級別、存放器和佈局的,它可接key=value格式的設置或xml格式的設置信息。通過配置,可以創建出Log4J的運行環境。

原创 SpringMVC裏攔截器preHandle裏的參數究竟是什麼意思

今天我的update接口老是報錯,請求和處理方法和create一模一樣。 create接口: @RequestMapping(value = "/oftenTraveller/create", method = {RequestMet

原创 防止重複請求提交創建訂單等解決方案

背景: 在開發產品,交付給用戶使用之後,重複提交的現象偶爾或經常出現。開發人員覺得數據重複,用戶覺得訂單多了一個,產品覺得有bug。這可不是好現象。 下面以創建訂單爲例: 原因: 1、誤操作兩次點擊下單按鈕; 2、超時導致重複點擊

原创 項目上線少量spring代碼熱更新解決方案

場景: 公司上線的權限系統涉及的有一個功能: 使用其它平臺的認證,如果通過。我們的平臺也算認證通過。 公司同一個產品可能有多家公司在用,每家的認證平臺也不一樣,認證方式不一樣,數據格式也不一樣。 在以上兩種情況出現的時候,還要保

原创 java模擬複雜表單post請求

java模擬複雜表單post請求 能支持文件上傳 /** * 支持複雜表單,比如文件上傳 * @param formParam * @return * @throws Exception */ public st

原创 JVM調優(二)內存收集器原理和參數調整

調優 根據上節的原理分析,進行調優可以從硬件、操作系統、JVM以及程序四個方面入手。 用更好的硬件如更大的內存、更快的CPU等,操作系統的話,需要自己去摸索,window不行就換linux,linux不行就換unix,甚至其它商業機。

原创 JVM調優(三)程序代碼調優

根據第一節所講的基礎知識,我們根據線上不同的異常情況做程序的優化。 CPU佔用高 us高 根據之前的分析,CPU us高的原因主要是執行線程無任何掛起動作,且一直執行,導致CPU沒有機會去調度執行其他的線程,造成線程餓死的現象。對於這

原创 JVM調優總結

文章目錄CPU佔用問題1、CPU佔用高原因分析原因a: 線程上下文切換消耗。原因b:cpu上的運行隊列。原因c:cpu的利用率。查看cpu使用情況工具toppidstat分析cpu佔用高的各種情況us:用戶佔用高sy:內核佔用高文件I

原创 Spring data jpa的高級應用

spring data jpa的查詢 目前比較簡單的查詢: 三種查詢方案 固定參數查詢 interface XxxRepo implements JpaRepository<T,Long>{ EntityXxx findByNa

原创 java中線程的基本使用(剛好我需要的是主線程不能等子線程)

[java] view plain copy   public class TestThread extends Thread   {       public void run()       {