斐波那契数列
什么是斐波那契数列,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 主题规则匹配