MySQL默认支持两种类型的索引: Hash索引和B+树索引: 那为什么不使用其他的数据结构作为索引? Hash索引:哈希表的特点就是可以快速的精确查询,但是不支持范围查询。如果做成了索引,那速度也是很慢的,要全部扫描。 平衡二叉树: 1、索引也不只是在内存里面存储的,还是要落盘持久化的,如果数据多 ...
分类:
数据库 时间:
2020-11-26 14:09:43
阅读次数:
10
1. MySQL索引引擎有两种:Innodb:聚集索引;Myisam:非聚集索引 2. MySQL 为什么不使用hash、二叉树、红黑树等作为索引的数据结构,而采用 B+ 树? 因为hash、二叉树、红黑树的高度不可控,B+ 树的高度可控,mysql 一般是3~5层。 3. 多路平衡二叉树(B+树) ...
分类:
数据库 时间:
2020-07-04 13:39:38
阅读次数:
67
1.使用ps ef查出进程对应的pid。 2.使用kill -15 pid结束进程。 为什么不使用kill -9 pid,个人理解kill -15 pid更优雅,能在结束进程前执行spring容器清理工作。 二者区别如下: SIGNKILL(9) 是立即杀死进程. 该信号不能被阻塞, 处理和忽略。S ...
分类:
编程语言 时间:
2020-06-03 00:43:43
阅读次数:
207
1、bulk的格式: {action:{metadata}}\n {requestbody}\n 2、为什么不使用如下格式: [ { "action":{}, "data":{} } ] 这种方式可读性好,但是内部处理就麻烦了:耗费更多内存,增加java虚拟机开销 1)将json数组解析为JSONA ...
分类:
其他好文 时间:
2020-04-07 12:51:14
阅读次数:
69
一、为什么要使用线程池? a) 减少开销。因为创建和销毁线程需要和底层操作系统交互,每个线程都去做这个操作,会浪费大量的时间,降低系统效率 b) 避免内存溢出。线程池的线程数量不会超过最大值,不使用线程池可能会造成无限制的创建线程 二、为什么不使用Executors来创建线程池 a) Java中有自 ...
分类:
编程语言 时间:
2020-03-11 22:10:41
阅读次数:
497
1.为什么不使用Executors提供4个线程池创建线程池 阿里巴巴开放手册这样写: 2.创建过程 虽然不建议使用Executors创建线程池,但是还是要搞清楚他的原理。 注意: 1.核心线程池=最大线程池(不聘请临时工) 2.LinkedBlockingQueue按照先进先出队列,最大队列为Int ...
分类:
编程语言 时间:
2019-10-28 12:54:17
阅读次数:
102
很多时候我们会给a标签增加一个点击事件,用于上传文件。为什么不使用原滋原味的文本打开按钮呢?当然是不好看,而且样式难以控制。 这时候可以通过控制a标签,给它添加一个点击事件,在a标签触发点击事件的时候打开文本选择框,就很好看了。 好了,现在来上思路: 先要给出一个a标签和文本选择的打开input,但 ...
分类:
Web程序 时间:
2019-05-25 21:28:37
阅读次数:
216
实现 各个Thread对象保存一个 ,保存的是本Thread涉及的所有的ThreadLocal变量的本线程版本数据。 一个app中可能多出用到不同的ThreadLocal,tl1被t1 t3使用,tl2被t1,t2,t4使用,所以t1的Map中保存了两个entry。 为什么不是的Map的实现 假如一 ...
分类:
其他好文 时间:
2019-03-11 13:31:20
阅读次数:
298
原文:.net core redis 驱动推荐,为什么不使用 StackExchange.Redis前言 本人从事 .netcore 转型已两年有余,对 .net core 颇有好感,这一切得益于优秀的语法、框架设计。 2006年开始使用 .net 2.0,从 asp.net 到 winform 到... ...
分类:
Web程序 时间:
2019-02-19 13:46:35
阅读次数:
280
迭代器 为什么要用迭代器 为什么不使用列表而使用迭代器,列表可以获取列表长度,然后使用变量i对列表索引进行循环,而且容器理解,也可以获取集合的所有元素。 没错,使用列表的代码是容易理解也很好操作,但这是要付出代价的。列表之所以可以用索引来快速定位其中的任何一个元素,是因为列表是一下子将所有的数据都装... ...
分类:
其他好文 时间:
2019-02-16 13:25:28
阅读次数:
144