Java常見問題

1. eclipse permgen space  問題:
  debug configrations  -   vm arguments
最後設置:
-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256mhtml

 

 IDEA  在Run/Debug configuration 的你要運行行的tomcat裏面的 
vm options裏面輸入前端

-server -XX:PermSize=128M -XX:MaxPermSize=256mmysql



2. springmvc transactional註解問題nginx

@parameterException不會回滾
須加入rollbackFor=Exception.class git

 

3. Spring Validation使用web

@Validated 放到類上面正則表達式

@Valid放到controller方法上 參數前面spring

@NotBlank 字符串sql

@NotNull  整形數據庫

@NotEmpty  集合類

@Pattern(regexp ='')    //正則表達式校驗

4.JSON用法

JSON.parseArray("",*.class);

JSON.parseObject("",*.class);

JSON.toJSONString(Object c);

/**
* 對字符串md5加密
*
* @param str
* @return
*/
public static String getMD5(String str) throws ParameterException {
try {
// 生成一個MD5加密計算摘要
MessageDigest md = MessageDigest.getInstance("MD5");
// 計算md5函數
md.update(str.getBytes());
// digest()最後肯定返回md5 hash值,返回值爲8爲字符串。由於md5 hash值是16位的hex值,實際上就是8位的字符
// BigInteger函數則將8位的字符串轉換成16位hex值,用字符串來表示;獲得字符串形式的hash值
String sign = new BigInteger(1, md.digest()).toString(16);
if (31 == sign.length()){
return "0" + sign;
}
return sign;
} catch (Exception e) {
throw new ParameterException("MD5加密出現錯誤");
}
}

MD5缺位問題,正常返回32位,某些狀況 會返回31位,此時須要進行補0


5. 類源碼中  ctrl + o  找相應的方法

6.  perference  general workspace 統一編碼

7. tomcat webapps 下 war包不能帶 中橫槓 -  如: back-sys ,不然不會自動解壓

8. eclipse git文件圖標不顯示, 右鍵 project  -> team  -> share project

9. TimerTask 定時任務無端掛了,  方式不可靠
 後改用 spring task方式
 @Scheduled(cron = "0/30 * * * * ?")
   <task:annotation-driven scheduler="pushScheduler" mode="proxy"/>  
   <task:scheduler id="pushScheduler" pool-size="1"/>  

 //文件編碼格式校驗
10.文件讀取txt文件首行bom問題 
private boolean checkFilePattern(InputStream inputStream) throws IOException {
           boolean isUTF = false;
           byte[] b = new byte[3];
           try {
                 inputStream.read(b);
                 if (b[0] == -17 && b[1] == -69 && b[2] == -65)
                 {
                      isUTF = true
                 }
           }finally{
                 if(inputStream !=null)
                      inputStream.close();
           }
           return isUTF;
      }

記事本bom問題:

不含 BOM 的 UTF-8 纔是標準形式 的確是這樣,無BOM使用得更多些,因此我的仍是推薦通常狀況下用無BOM的形式吧,
除非有問題的時候,再考慮換有BOM的。Windows系統保存的都是有BOM的,因此你能夠看到,用記事本保存一個UTF-8的txt,實際上是有BOM的,這一點須要注意。
另外不一樣的文本編輯器對於有無BOM的稱呼也略有不一樣,好比EditPlus,有BOM的稱爲UTF-8+,無BOM的稱爲UTF-8,而在Notepad++中,有BOM的被稱爲標準UTF-8,而無BOM則被稱爲UTF-8無BOM。

10.  反射性能問題,比非反射代碼慢30倍左右  ,若是須要提高,將accessible設置爲true.避免安全檢查, 可提高四倍性能。

11. html 靜態化 cdn   壓縮   cms   squid緩存    memcache緩存   nginx  mycat數據庫分庫分表   主從模式

12. http  三次握手 (  syn(j)          ack(j+1)  syn(k)             ack(k+1)  ) 四次揮手

13.  pager-taglib2.0.jar亂碼問題

14.  服務器Mysql 中文存儲亂碼   

         cd /etc/my.cnf       

   mysqld部分 增長  default_character_set = utf8

15. springmvc 前端傳輸年月日時分秒 串 後臺小8小時問題,可在application中增長方法 解決
@PostConstruct
void started(){ //解決客戶端傳入時間自動增長8小時的bug
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}
 

16. springboot校驗注意事項
  controller類上加上 @Validated

 request對應的方法中@Valid

string @Notblank

int  @Notnull

list  @Notempty

17. springmvc 前端傳輸年月日時分秒 串 後臺小8小時問題,可在application中增長方法 解決 
@PostConstruct
void started(){ //解決客戶端傳入時間自動增長8小時的bug
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
}

18.ElasticSearch/KIBANA: GET /test/test/_search
{
"query": {
  "match": {"":""}
   }
}

GET /test/test/_search
{
"query": {
"match_all": {}
}
}

PUT /test/test/_id
{
  // _source內容
}

DELETE /test/test/_id
{

}

19. aspect中獲取request,response

HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();

HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();

aspect 如調用async 異步方法,須要傳遞request對象,不然由於線程問題,在async方法中 獲取到的request中數據會丟失

20. 數據庫中的日期格式的數據 自動轉11位 時間戳

spring.jackson.serialization.write-dates-as-timestamps:true

相關文章
相關標籤/搜索