原创 文件上傳格式,後臺接收處理

前端上傳文件 1. file格式 創建formData來完成file上傳 <input type="file" id="imgfile" name="pic" multiple> <script> $("#imgfile

原创 Feign 調用文件服務上傳文件

feign文件上傳報錯FileUploadException: the request was rejected because no multipart boundary feign-form和spring cloud版本不一致

原创 12, 異常處理

1, 捕獲了異常後直接生吞。在任何時候,我們捕獲了異常都不應該生吞,也就是直接丟棄異常不記錄、不拋出。這樣的處理方式還不如不捕獲異常,因爲被生吞掉的異常一旦導致Bug,就很難在程序中找到蛛絲馬跡,使得Bug排查工作難上加難 2 ,

原创 11, 空值處理

NullPointerException是Java代碼中最常見的異常,我將其最可能出現的場景歸爲以下5種: 參數值是Integer等包裝類型,使用時因爲自動拆箱出現了空指針異常; 字符串比較出現空指針異常; 諸如Concurre

原创 10_2, list foreach遍歷刪除 list.remove(obj)報錯ConcurrentModificationException原因

**foreach刪除元素報錯java.util.ConcurrentModificationException** private static void removeList(){ List<Integer>

原创 10_集合類 list操作的坑

Arrays.asList把數據轉換爲List的三個坑 1, 不能直接使用Arrays.asList來轉換基本類型數 這個List包含的其實是一個int數組,整個List的元素個數是元素類型是整數數組。 int[] arr =

原创 03_HTTP 超時,重試

1, 配置連接超時和讀取超時參數的學問 對於HTTP調用,雖然應用層走的是HTTP協議,但網絡層面始終是TCP/IP協議。TCP/IP是面向連接的協議,在傳輸數據之前需要建立連接。幾乎所有的網絡框架都會提供這麼兩個超時參數: 連

原创 04_連接池

在使用三方客戶端進行網絡通信時,我們首先要確定客戶端SDK是否是基於連接池技術實現的。我們知道,TCP是面向連接的基於字節流的協議: 面向連接,意味着連接需要先創建再使用,創建連接的三次握手有一定開銷; 基於字節流,意味着字節

原创 第三方支付方案

第三方支付接口,調用支付接口a賬戶對b賬戶進行了轉賬操作,業務數據庫也要做一個記賬操作在 數據庫中,如何保證調用第三方支付接口和我本地的業務是一致性的呢? 先創建支付訂單,再提交外部,創建訂單的操作獨立事務,不要回滾(否則出異常

原创 08_ 判等問題

Object超類中的 equals默認使用==判等,比較的是對象的引用。

原创 06_Spring 事物失效

1, 事務註解的方法要用pulbic聲明, private聲明會失效 理由: CGLIB通過繼承方式實現代理類,private方法在子類不可見,自然也就無法進行事務增強 @Transactional private void c

原创 04_2連接池 從連接池獲取連接超時, 連接池新建tcp連接超市

有了連接池之後,獲取連接是從連接池獲取,沒有足夠連接時連接池會創建連接。這時,獲取連接操作往往有兩個超時時間: 一個是從連接池獲取連接的最長等待時間,通常叫作請求超時connectRequestTimeout或等待超時connec

原创 feign 重試的解決方法

一是,把發短信接口從Get改爲Post。其實,這裏還有一個API設計問題,有狀態的API接口不應該定義爲Get。根據HTTP協議的規範,Get請求用於數據查詢,而Post纔是把數據提交到服務端用於修改或新增。選擇Get還是Post

原创 mysql使用強制索引

單表: select a from t FORCE INDEX(idx_name) WHERE name = ‘小明’ 連表:select * from t1 LEFT JOIN t2 FORCE INDEX(t2_idx_nam

原创 微信網頁授權回調地址放多個參數的方法

微信網頁授權: https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=co