sql慢查詢
經(jīng)過優(yōu)化,sql慢查詢已經(jīng)由最多的5000條/日下降到100條/日温峭,解決了99%的慢查詢类垫。_
java.lang.NoClassDefFoundError ClassNotFoundException區(qū)別?
ClassNotFoundException:當程序試圖根據(jù)字符串名稱加載一個類但沒有找到對應類觸發(fā)。
Class.forName("xxx");
this.getClass().getClassLoader().findSystemClass("xxx");
this.getClass().getClassLoader().loadClass("xxx");
NoClassDefFoundError:當JVM虛擬機或ClassLoader試圖加載類定義時(import引入的類),但無法找到類外永。
NoClassDefFoundError發(fā)生在項目成功編譯遂蛀,但是在運行時無法找到對應jar包,引發(fā)問題的原因是對應jar包沒有被加載;ClassNotFoundException發(fā)生在項目運行時反射調(diào)用某個類撵摆,但該類實際并不存在導致的乎澄。
NoClassDefFoundError是一個Error(JVM虛擬機無法發(fā)現(xiàn)本來應該發(fā)現(xiàn)的類)觉义,JVM無法啟動程序;ClassNotFoundException是一個Exception,因為反射沒有編譯期檢測慨仿,所以完全有可能出現(xiàn)各種問題久脯,出現(xiàn)問題后程序是可以繼續(xù)運行的。
Java封裝對象比較 equals VS ==
Java中的基本類型镰吆,int/long/float...引用及值帘撰,所以可以直接使用"=="比較;其他包裝對象請一定一定一定要使用equals方法万皿。
看一個包裝類型引發(fā)的bug:
lowAuditor屬性是Long類型摧找,語句首先判斷該值不為空,然后比較是否相等牢硅;
private static class LongCache {
private LongCache(){}
static final Long cache[] = new Long[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Long(i - 128);
}
}
在Long處于-128~127之間時蹬耘,由于Long緩存機制, == 是成立的减余;但是一旦lowAuditor大于127综苔,那么即使兩個Long對象值相等,== 也是不成立的位岔;所以為了避免出現(xiàn)這種緩存問題如筛,請在比較包裝類是務必調(diào)用equals方法而不是==。
高效使用公司工具
上上周看了阿里的<盡在雙11>赃承,發(fā)現(xiàn)阿里有很多工具妙黍,比如鷹眼(監(jiān)控日志),報警平臺...其實我們58也是有很多通用工具瞧剖,比如DB平臺,可以監(jiān)控DB訪問量,查看慢查詢等抓于;監(jiān)控平臺可以查看應用訪問情況做粤;數(shù)據(jù)分析平臺可以對數(shù)據(jù)進行多維度的分析。
仔細想想捉撮,工作中遇到的問題怕品,大概率已經(jīng)被別人遇到并且解決;與其自己思考如何解決巾遭,不如看看其他人事如何解決的肉康;找找看公司是不是有現(xiàn)成的解決方案,這樣才能更好灼舍、更快的解決問題吼和,避免重復造輪子。
Worktile
部門一直在用worktile來做需求管理骑素,但一直沒有深入了解worktile炫乓,今天抽了個空,好好看了下worktile都有什么隱藏功能献丑。
- 話題:worktile可以就某個問題進行討論末捣。
- 文件版本:上傳文件可能會多次修改,在我修改文件時會記錄文件歷史記錄方便對比不同版本文件區(qū)別创橄。
- 文檔:支持MarkDown語法箩做,但是還可以使用石墨文檔這個大殺器。
石墨
?墨?檔妥畏,可多?實時協(xié)作的?檔和表格卒茬;還可以討論、查看歷史記錄咖熟。