您的位置:首页 > 博客中心 > 数据库 >

培训日报3.14(mysql,guava,穿山甲等)

时间:2022-03-14 18:40

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);

 

热门排行

今日推荐

热门手游