欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決JavaMail附件名字過長導致的亂碼問題

 更新時間:2020年10月10日 14:48:29   作者:hui008  
這篇文章主要介紹了解決JavaMail附件名字過長導致的亂碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

問題背景:

公司有個業(yè)務場景是審核客戶機構通過后,給客戶發(fā)送一封郵件,并將機構相關材料以附件形式一塊發(fā)送,有些附件名正常,有些就亂了,如下圖:

后來發(fā)現是附近名稱過長導致的!

問題原因:java mail中設置附件名稱會采用 base64格式進行編碼,如果附件名稱過長會被進行切割,將剩下字符抹去,所以導致不知道這是什么格式的文件。

注:雖然將文件格式被改變了,但是若強制轉換成原格式(右鍵->另存為->xxx.pdf) 仍然可以進行打開,文件內容也并非改變(這是測試后的結果)

解決方案:

由于是spring boot 項目,只需要在main方法中加入以下 代碼即可(大概意思就是,取消切割,默認是true)

System.setProperty("mail.mime.splitlongparameters", "false");

補充知識:LinkedList的增刪一定比ArrayList快嗎?

1.背景

眾所周知,arrayList底層是通過數組實現,當其超過容量時,會進行1.5的擴容,將原數組數據遷移至新數組中。

而LinkedList底層為雙向鏈表,其增加操作直接在尾部新增一個node節(jié)點即可。

那么,在插入相同的數據情況下(集合默認長度都是0),到底誰更快呢?

2.案例

  public static void main(String[] args) {
    List<String> array = new ArrayList<>();
    List<String> linked = new LinkedList<>();
    long start = System.currentTimeMillis();
    int index = 10000000;
    for (int i = 0; i < index; i++) {
      array.add("" + i);
    }
    long end = System.currentTimeMillis();
    System.out.println("ArrayList用時:" + (end - start) / 1000 + "s");
 
    start = System.currentTimeMillis();
    for (int i = 0; i < index; i++) {
      linked.add("" + i);
    }
    end = System.currentTimeMillis();
    System.out.println("LinkedList用時:" + (end - start) / 1000 + "s");
 
  }

3.結果

4.分析

此處我是這么理解的,arrayList是通過下標直接去放入數據,而linked需要創(chuàng)建一個Node然后 將數據放入,再與前節(jié)點建立鏈接。

然后不需要擴容的情況下,明顯arrayList快,那么擴容呢?其實我們測試用的是尾部插入。

也就是arrayList擴容后直接將前面的數據放入對應下標,之后的在繼續(xù)按照下標插入就行,也就是有序在尾部插入。

如果數據量大通過尾部插入的話(不指定下標,默認就是在尾部插入),linked的插入需要建立對應的對象,綁定關系,

而array則直接放置,其擴容也是按照原來順序放入新數組,速度比較鏈表 要更快。

我還專門做了一個按照頭部插入的方式,發(fā)現這時明顯鏈表高于數組的速度。

5.總結(個人觀點)

數組比之鏈表:

在需要擴容的前提下

插入效率隨著下標的遞增,其性能逐漸由鏈表偏向數組。

下標靠中間(鏈表的查詢慘不忍睹),所以其中間效率也是極低的

而數組插入的下標靠前,會涉及其下標之后元素移位操作,所以index越靠前插入,效率越低

6.插入性能

以上這篇解決JavaMail附件名字過長導致的亂碼問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 深入理解Java8新特性之接口中的默認方法和靜態(tài)方法

    深入理解Java8新特性之接口中的默認方法和靜態(tài)方法

    從Java8開始,程序允許在接口中包含帶有具體實現的方法,使用default修飾,這類方法就是默認方法。默認方法在接口中可以添加多個,并且Java8提供了很多對應的接口默認方法,接下來讓我們一起來看看吧
    2021-11-11
  • Java中Spring技巧之擴展點的應用

    Java中Spring技巧之擴展點的應用

    這篇文章主要介紹了Java中Spring技巧之擴展點的應用,下文Spring容器的啟動流程圖展開其內容的相關資料,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • Java實現定時器的4種方法超全總結

    Java實現定時器的4種方法超全總結

    對于一些特殊的代碼是需要定時執(zhí)行的,下面來看看定時器該如何編寫吧,下面這篇文章主要給大家介紹了關于Java實現定時器的4種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • 使用Spring Cloud Feign遠程調用的方法示例

    使用Spring Cloud Feign遠程調用的方法示例

    這篇文章主要介紹了使用Spring Cloud Feign遠程調用的方法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • SpringMVC @GetMapping注解路徑沖突問題解決

    SpringMVC @GetMapping注解路徑沖突問題解決

    MD5對密碼進行加密存儲是常見的一種加密方式,本文主要介紹了Java雙重MD5加密實現安全登錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • Kryo框架使用方法代碼示例

    Kryo框架使用方法代碼示例

    這篇文章主要介紹了Kryo框架的相關內容,文中向大家分享了Kryo框架使用方法代碼示例,小編覺得挺不錯的,希望能給大家一個參考。
    2017-10-10
  • Java 數組內置函數toArray詳解

    Java 數組內置函數toArray詳解

    這篇文章主要介紹了Java 數組內置函數toArray詳解,文本詳細的講解了toArray底層的代碼和文檔,需要的朋友可以參考下
    2021-06-06
  • 一文搞懂spring boot本地事務@Transactional參數

    一文搞懂spring boot本地事務@Transactional參數

    這篇文章主要介紹了spring boot本地事務@Transactional參數詳解,本文通過示例代碼圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-10-10
  • 解決IDEA?2022?Translation?翻譯文檔失敗:?未知錯誤的問題

    解決IDEA?2022?Translation?翻譯文檔失敗:?未知錯誤的問題

    這篇文章主要介紹了IDEA?2022?Translation?翻譯文檔失敗:?未知錯誤,本文較詳細的給大家介紹了IDEA?2022?Translation未知錯誤翻譯文檔失敗的解決方法,需要的朋友可以參考下
    2022-04-04
  • SpringBoot2.x設置Session失效時間及失效跳轉方式

    SpringBoot2.x設置Session失效時間及失效跳轉方式

    這篇文章主要介紹了SpringBoot2.x設置Session失效時間及失效跳轉方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論