培训日报3.14(mysql,guava,穿山甲等)
Posted 倾听与积累
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了培训日报3.14(mysql,guava,穿山甲等)相关的知识,希望对你有一定的参考价值。
guava答疑
(1)对于取值范围固定的属性,应尽可能将其定义为枚举类型;
(2)Iterable,Collection,List,Set,Map都是接口,它们之间的关系为:
List和Set继承Collection,Collection继承Iterable;Map属于单独的一个派系,它是最顶层的接口,对它的实现有HashMap,LinkedHashMap,TreeMap;其中TreeMap内部结构为红黑树,它存储的节点是有序的;
mysql
(1)mysql 单进程多线程数据库;orcale是多进程的;
(2)alter操作会对表加锁,导致对该表的请求阻塞;
(3)存储引擎只能在表的级别上进行指定,在库的级别上无法指定;
(4)mysql字段decimal(5,2)表示为小数部分和整数部分总共5位,小数部分两位;
(5)decimal与float、double的区别在于decimal存储的是精确度数字,适合存储金钱数字等;
(6)char是定长的,无论有没有字符,该字段都为4个字节;varchar是变长的,它其中会含有一个字节来记录存储在该字段字符的长度,若字符长度大于255则用两个字节来记录;因此,“”空串,char占用4个字节,varchar为1个字节;“aa”char为4个字节,varchar为3个字节;“abcd”char为4个字节,varchar为5个字节;
(7)text和blog都是大字段,所以建索引只能建立前缀索引;
其它
1.时刻记得对传入参数合法性的判断;
2.判断两个对象相等时,尽量使用guava中Objects.equals();
3.对与TOP K的排序,除了使用堆,优先队列外,也可以使用guava中的Ordering.greatestOf方法,具体使用方法如下:
Ordering<Map.Entry<String,Integer>> ordering = new Ordering<Map.Entry<String,Integer>>() {
@Override
public int compare(Map.Entry<String,Integer> left, Map.Entry<String,Integer> right) {
return left.getValue()-right.getValue();
}
};
List<Map.Entry<String,Integer>> topKList = ordering.greatestOf(httpMap.entrySet(),K);
以上是关于培训日报3.14(mysql,guava,穿山甲等)的主要内容,如果未能解决你的问题,请参考以下文章