斐波那契數列
什麼是斐波那契數列,1,1,2,3,5,8,13…這樣一個數列就是斐波那契數列,求第n項的值。
public static int f2(int n) {
if(n < 1) {
return 0;
}else if(n == 1 || n == 2) {
return 1;
}
int res = 1;
int pre = 1;
int temp = 0;
for(int i = 3; i < n; i++) {
temp = res;
res = pre + res;
pre = temp;
}
return res;
tomcat假死
1、應用本身程序的問題,造成死鎖。
2、load 太高,已經超出服務的極限
3、jvm GC 時間過長,導致應用暫停 因爲出錯項目裏面沒有打出GC的處理情況,所以不確定此原因是否也是我項目tomcat假死的原因之一。
4、大量tcp 連接 CLOSE_WAIT netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ TIME_WAIT 48 CLOSE_WAIT 2228 ESTABLISHED 86
hashmap相關
hashmap優點:快速儲存,快速查找,可伸縮
默認16長度的數組
有hash衝突使用單向鏈表
hash衝突:不同對象算出數組下標是相同的。
解決辦法:加入下個next記錄下一個節點
擴容因子0.75,當儲存比例達到0.75原長度時,數組擴容2倍
鏈表長度大於8時,鏈表變紅黑樹
紅黑樹小於6時,變回單向鏈表
hashmap線程不安全的原因是
jdk 1.7 在多線程情況下,數組擴容時,使用的transfer函數對鏈表使用頭插發,導致鏈表死循環
jdk 1.8中使用尾插法,但是會導致值覆蓋
concureenthashmpa採用分段鎖,粒度更高
elasticsearch
index–type–mapping–document–field
bool 組和查詢條件
must 必須匹配
must not 必須不匹配
should 滿足條件後會增加權重
filter 過濾條件
普通索引:根據文檔查找關鍵字 類似與Linux grep或者word find查找
倒排縮影:通過關鍵字查找文檔
rabbitmq
Exchange 交換機類型
direct 發佈與訂閱routing-key完全匹配
fanout 廣播
topic 主題規則匹配