
Java每日一题
洛神_千
仿佛兮若轻云之蔽月,飘飘兮若流风之回雪。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java每日一题:索引优化的几点原则
1. 尽量全值匹配 如果你使用了复合索引,而你查询的列是索引列,不要使用select * 而用索引列2. 最佳左前缀法则 创建复合索引的时候,要考虑索引的使用场景,比如创建复合索引key(a,b,c) 在出现where条件的时候一定要出现a,只有a,b,c同时出现在where条件里,这个索引才是最高效的。3. 不在索引列上做任何操作 比如各种函数等,不要再索引列上...原创 2019-12-09 14:57:39 · 231 阅读 · 0 评论 -
Java每日一题:为什么JDK1.8中的ConCurrentHashMap的get操作不需要加锁?
在1.8中ConcurrentHashMap的get操作全程不需要加锁,这也是它比其他并发集合比如hashtable、用Collections.synchronizedMap()包装的hashmap;安全效率高的原因之一。get操作全程不需要加锁是因为Node的成员val是用volatile修饰的和数组用volatile修饰没有关系。数组用volatile修饰主要是保证在数组扩容的时候保证...原创 2019-12-05 14:08:06 · 610 阅读 · 0 评论 -
Java每日一题:B+tree如何进行优化?
创建索引的时候尽量使用唯一性大的列来创建索引,由于使用b+tree做为索引,以innodb为例,一个树节点的大小由“innodb_page_size”,为了减少树的高度,同时让一个节点能存放更多的值,索引列尽量在整数类型上创建,如果必须使用字符类型,也应该使用长度较少的字符类型。...原创 2019-12-03 14:01:37 · 339 阅读 · 0 评论 -
Java每日一题:InnoDB引擎的主键索引是用什么数据结构存储的?普通索引又是用什么结构存储的?
InnoDB使用B+Tree的方式存储索引。Innodb的一个表可能包含多个索引,每个索引都使用B+树来存储。而索引包括聚集索引(clustered index )和非聚簇索引(secondary index),聚集索引使用表的主键作为索引键,叶子节点包含表的所有字段。二级索引只包含索引键和聚集索引键(主键)的内容,不包括其他字段。...原创 2019-12-02 14:09:46 · 518 阅读 · 0 评论 -
Java每日一题:死锁与活锁的区别,死锁与饥饿的区别?
死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。产生死锁的必要条件:互斥条件:所谓互斥就是进程在某一时间内独占资源。请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺。循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。活锁...原创 2019-11-29 14:22:34 · 351 阅读 · 0 评论 -
在java中守护线程和用户线程的区别?(并发面试题)
java中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。两者的区别:唯一的区别是判断虚拟机(JVM)何时离开,Daemon...原创 2019-11-28 14:05:44 · 207 阅读 · 0 评论