摘要: 简单来说,数据的切分就是通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)中,以达到分散单台设备负载的效果,即分库分表。 数据的切分根据其切分规则的类型,可以分为如下两种切分模式。 垂直(纵向)切分:把单一的表拆分成多个表,并分散到不同的数据库(主机)上。 水平(横向) 阅读全文
posted @ 2019-07-06 23:59 惯看秋风 阅读(22) 评论(0) 推荐(0)
摘要: 1. 什么是联合索引 两个或更多个列上的索引被称作联合索引,联合索引又叫复合索引。对于复合索引:Mysql 从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。 例如索引是key index (a,b,c),可以支持[a]、[a,b]、[a,b,c] 3种组合进行查找, 阅读全文
posted @ 2019-07-06 23:58 惯看秋风 阅读(51) 评论(0) 推荐(0)
摘要: B+、B-、B*、B树介绍 B+ 树只有叶节点存放数据,其余节点用来索引,而 B- 树是每个索引节点都会有 Data 域。所以从 InooDB 的角度来看,B+ 树是用来充当索引的,一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上。 阅读全文
posted @ 2019-07-06 23:54 惯看秋风 阅读(9) 评论(0) 推荐(0)
摘要: 1. 索引使用的场景 索引能够轻易将查询性能提升几个数量级。 索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现。 2. B Tree 原理 B-Tree 定义一条数据记录为一个二元组 [key, data],B-Tree 是满足下列条件的数据结构: 所有叶节 阅读全文
posted @ 2019-07-06 23:51 惯看秋风 阅读(12) 评论(0) 推荐(0)
摘要: 1. 整型 TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 分别使用 8, 16, 24, 32, 64 位存储空间,一般情况下越小的列越好。 INT(11) 中的数字只是规定了交互工具显示字符的个数,对于存储和计算来说是没有意义的。 2. 浮点数 FLOAT 和 阅读全文
posted @ 2019-07-06 23:50 惯看秋风 阅读(11) 评论(0) 推荐(0)
摘要: 对于初学者来说我们通常不关注存储引擎,但是 MySQL 提供了多个存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在 MySQL 中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。 简介 MySQL 中的数据用各种不同的技术存储在文件(或者内存 阅读全文
posted @ 2019-07-06 23:49 惯看秋风 阅读(12) 评论(0) 推荐(0)
摘要: 1. 串行化 (Serializable) 所有事务一个接着一个的执行,这样可以避免幻读 (phantom read),对于基于锁来实现并发控制的数据库来说,串行化要求在执行范围查询的时候,需要获取范围锁,如果不是基于锁实现并发控制的数据库,则检查到有违反串行操作的事务时,需回滚该事务。 2. 可重 阅读全文
posted @ 2019-07-06 23:48 惯看秋风 阅读(7) 评论(0) 推荐(0)
摘要: 1. 丢失修改 T1 和 T2 两个事务都对一个数据进行修改,T1 先修改,T2 随后修改,T2 的修改覆盖了 T1 的修改。 2. 脏读 (针对未提交数据)如果一个事务中对数据进行了更新,但事务还没有提交,另一个事务可以 “看到” 该事务没有提交的更新结果,这样造成的问题就是,如果第一个事务回滚, 阅读全文
posted @ 2019-07-06 23:47 惯看秋风 阅读(23) 评论(0) 推荐(0)
摘要: 满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式 (3NF)就行了。 范式的包含关系。一个数据库设计如果符合第二范式,一定也符合第一范式。如果符合第三范式,一定也符合第二范式… 1NF:属性不 阅读全文
posted @ 2019-07-06 23:46 惯看秋风 阅读(20) 评论(0) 推荐(0)
摘要: 什么是事务? 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚。 AUTOCOMMIT MySQL 默认 自动提交模式。也就是说,如果不显式使用 START TRANSACTION 语句来开始一个事务,那么每个查询都会被当做一个事 阅读全文
posted @ 2019-07-06 23:45 惯看秋风 阅读(9) 评论(0) 推荐(0)
摘要: 快捷键的意义就是使操作方便快捷,往往一个组合键,就可以完成鼠标多次定位和点击才能执行的功能。对快捷键越熟练,其快速的优势越明显。Eclipse快捷键的设置其实比较简单,只是快捷键的数量比较多。 1. 快捷键设置 Eclipse工具栏上选择Window -> Preferences -> Genera 阅读全文
posted @ 2019-07-06 23:41 惯看秋风 阅读(31) 评论(0) 推荐(0)
摘要: 在这里将总结面试中和并发编程相关的常见知识点,如在第一部分中出现的这里将不进行详细阐述。面试指南中,我将用最简洁的语言描述,更多是以一种大纲的形式列出问答点,根据自己掌握的情况回答。 参考资料: Java线程面试题 Top 50 - ImportNew 1. volatile 与 synchroni 阅读全文
posted @ 2019-07-06 23:05 惯看秋风 阅读(13) 评论(0) 推荐(0)
摘要: 蘑菇街面试,设计一个线程池 并发队列 入队 非阻塞队列:当队列中满了时候,放入数据,数据丢失 阻塞队列:当队列满了的时候,进行等待,什么时候队列中有出队的数据,那么第11个再放进去 出队 非阻塞队列:如果现在队列中没有元素,取元素,得到的是null 阻塞队列:等待,什么时候放进去,再取出来 线程池使 阅读全文
posted @ 2019-07-06 23:00 惯看秋风 阅读(27) 评论(0) 推荐(0)
摘要: 锁优化 自旋锁 锁消除 锁粗化 轻量级锁 偏向锁 这里的锁优化主要是指虚拟机对 synchronized 的优化。 自旋锁 互斥同步的进入阻塞状态的开销都很大,应该尽量避免。在许多应用中,共享数据的锁定状态只会持续很短的一段时间。自旋锁的思想是让一个线程在请求一个共享数据的锁时执行忙循环(自旋)一段 阅读全文
posted @ 2019-07-06 22:51 惯看秋风 阅读(21) 评论(0) 推荐(0)
摘要: 线程安全定义 线程安全分类 1. 不可变 2. 绝对线程安全 3. 相对线程安全 4. 线程兼容 5. 线程对立 线程安全的实现方法 1. 阻塞同步(互斥同步) 2. 非阻塞同步 3. 无同步方案 (一)可重入代码(Reentrant Code) (二)栈封闭 (三)线程本地存储(Thread Lo 阅读全文
posted @ 2019-07-06 22:08 惯看秋风 阅读(32) 评论(0) 推荐(0)
摘要: 主内存与工作内存 内存间交互操作 内存模型三大特性 1. 原子性 2. 可见性 3. 有序性 指令重排序 数据依赖性 as-if-serial语义 程序顺序规则 重排序对多线程的影响 先行发生原则(happens-before) 1. 单一线程原则 2. 管程锁定规则 3. volatile 变量规 阅读全文
posted @ 2019-07-06 22:00 惯看秋风 阅读(35) 评论(0) 推荐(0)
摘要: FutureTask BlockingQueue ForkJoin FutureTask 在介绍 Callable 时我们知道它可以有返回值,返回值通过 Future 进行封装。FutureTask 实现了 RunnableFuture 接口,该接口继承自 Runnable 和 Future 接口, 阅读全文
posted @ 2019-07-06 21:00 惯看秋风 阅读(7) 评论(0) 推荐(0)
摘要: CountdownLatch CyclicBarrier Semaphore 总结 AQS 是 AbstractQueuedSynchronizer 的简称,java.util.concurrent(J.U.C)大大提高了并发性能,AQS (AbstractQueuedSynchronizer) 被 阅读全文
posted @ 2019-07-06 19:52 惯看秋风 阅读(6) 评论(0) 推荐(0)
摘要: join() wait() notify() notifyAll() await() signal() signalAll() sleep和wait有什么区别 当多个线程可以一起工作去解决某个问题时,如果某些部分必须在其它部分之前完成,那么就需要对线程进行协调。 join() 在线程中调用另一个线程 阅读全文
posted @ 2019-07-06 19:48 惯看秋风 阅读(22) 评论(0) 推荐(0)
摘要: synchronized ReentrantLock synchronized 和 ReentrantLock 比较 synchronized与lock的区别,使用场景。看过synchronized的源码没? 什么是CAS 入门例子 Compare And Swap 什么是乐观锁和悲观锁 Synch 阅读全文
posted @ 2019-07-06 19:46 惯看秋风 阅读(11) 评论(0) 推荐(0)