最后
按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。
学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。
“道路是曲折的,前途是光明的!”
-
2.2 SQL MODE设置
-
2.3日期和时间类型
-
2.4关于日期的经典SQL编程问题
-
2.5数字类型
-
2.6关于数字的经典SQL编程问题
-
2.7字符类型
-
2.8小结
3、查询处理
查询操作是关系数据库中使用最为频繁的操作,也是构成其他SQL语句(如 DELETE、UPDATE)的基础。当要删除或更新某些记录时,首先要查询出这些记录,然后再对其进行相应的SQL操作。因此基于SELECT的查询操作就显得非常重要。对于查询处理,可将其分为逻辑查询处理及物理查询处理。逻辑查询处理表示执行查询应该产生什么样的结果,而物理查询代表MySQL数据库是如何得到该结果的。两种查询的方法可能完全不同,但是得到的结果必定是相同的。
-
3.1逻辑查询处理
-
3.2物理查询处理
-
3.3小结
4、子查询
MySQL数据库被诟病的一个地方就是子查询。很多开发人员和DBA认为MySQL数据库只是拥有该项功能,但性能很差,是一项很不实用的功能。在实际开发中开发人员很少使用子查询,因为在应用程序中使用子查询后,SQL语句的查询性能变得非常糟糕。本章介绍子查询的使用方法,同时介绍为什么有些子查询的效率令人难以接受,并对子查询的优化给出一些方法和建议。最后,介绍生产环境中子查询的一些应用,如分区、行号计算、缺失范围、连续范围等。
-
4.1子查询概述
-
4.2独立子查询
-
4.3相关子查询
-
4.4 EXISTS谓词
-
4.5派生表
-
4.6子查询可以解决的经典问题
-
4.7 MariaDB对SEMI JOIN的优化
-
4.8小结
5、联接与集合操作
本章介绍联接和集合操作。联接操作主要讲解MySQL数据库支持的三种联接方式,同时也给出了不同ANSI标准的语法。本章也对联接的内部实现算法进行了详细的介绍,这样能给用户更清晰的认识,使其选择正确的联接算法。最后对集合操作进行介绍,虽然MySQL数据库只支持UNION集合操作,但用户可以在UNION的基础之上实现EXCEPT和INTERSECT集合操作。
-
5.1联接查询
-
5.2其他联接分类
-
5.3多表联接
-
5.4滑动订单问题
-
5.5联接算法
-
5.6集合操作
-
5.7小结
6、聚合和旋转操作
本章将介绍MySQL数据库中的聚合技术。首先介绍MySQL数据库的聚合算法,在此基础上介绍了一些通过聚合解决问题的方案,如附加属性聚合、连续聚合(累积、滑动、年初至今)等。最后通过上述聚合操作介绍旋转操作。本章在使用前面已经介绍过的技术的同时引入一些新的技术。
-
6.1聚合
-
6.2附加属性聚合
-
6.3连续聚合
-
6.4 Pivoting
-
6.5 Unpivoting
-
6.6 CUBE和ROLLUP
-
6.7小结
7、游标
标(cursor)是一种面向过程的SQL编程方法,与前面章节讨论的通过面向集合的方法处理关系数据库问题全然不同。本章将介绍MySQL数据库中的游标,分析游标的开销,并介绍在一些问题中正确合理地使用游标会较之使用面向集合的SQL编程在效率方面带来的极大提升。同时告诉不管有多少年SQL编程经验的开发人员或DBA,游标并不是恶魔,关键在于如何正确分析问题和合理使用游标。
-
7.1 面向集合与面向过程的开发
-
7.2 游标的使用
-
7.3游标的开销
-
7.4使用游标解决问题
-
7.5小结
8、 事务编程
-
8.1事务概述
-
8.2事务的分类
-
8.3事务控制语句
-
8.4隐式提交的SQL语句
-
8.5事务的隔离级别
-
8.6分布式事务编程
-
8.7不好的事务编程习惯
-
8.8长事务
-
8.9小结
9、索引
事务(transaction) 是数据库区别于文件系统的重要特性之一。在文件系统中,如果用户正在写文件,但是操作系统突然崩溃了,这个文件就很有可能被破坏。当然, .有一些机制可以把文件恢复到某个时间点。不过,如果需要保证多个文件同步,这些文件系统可能就显得无能为力了。例如,当你更新两个文件时,更新完一个文件后,在更新完第二个文件之前系统重启了,你就会得到两个不同步的文件。
-
9.1缓冲池、顺序读取与随机读取
-
9.2数据结构与算法
-
9.3 B+树
-
9.4 B+树索引
-
9.5 Cardinality
-
9.6 B+树索引的使用
-
9.7 Multi-Range Read
-
9.8 Index Condition Pushdown
-
9.9 T树索引
-
9.10哈希索引
-
9.11小结
最后
关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:
- Java基础部分
- 算法与编程
- 数据库部分
- 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)
这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。
作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。
统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。**