1.sql语句优化
1.尽量避免使用 * 作为查询结果
2.在使用模糊查询时,避免使用 %%
3.避免使用!=,not in,not null,in等操作符
4.在查询基数大时,用betweent and 代替 limit
5.不要在列上进行运算
6.避免类型转换
7.能使用union all 就不要使用 union (尽量不要使用or)
8.利用limit 1取得唯一行
9.尽量少排序
10.建立索引,加快查询效率
11.使用批量插入节省交互
12.对多表关联查询,使用视图
13.优先使用内连接
14.尽量不要用 by rand()命令
15.尽量使用数字型字段
2.组合索引
索引(a,b,c)
a
a,b
a,b,c
(a,b,c ) ------ 可能只走a,b(考虑乱序)
(a,c)---只走a
(b) (b,c)不走
3.索引重建
https://www.cnblogs.com/Alight/p/4601003.html
4.索引覆盖
解释一: 就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。
解释二: 索引是高效找到行的一个方法,当能通过检索索引就可以读取想要的数据,那就不需要再到数据表中读取行了。如果一个索引包含了(或覆盖了)满足查询语句中字段与条件的数据就叫做覆盖索引。
解释三:是非聚集组合索引的一种形式,它包括在查询里的Select、Join和Where子句用到的所有列(即建立索引的字段正好是覆盖查询语句[select子句]与查询条件[Where子句]中所涉及的字段,也即,索引包含了查询正在查找的所有数据)。
不是所有类型的索引都可以成为覆盖索引。覆盖索引必须要存储索引的列,而哈希索引、空间索引和全文索引等都不存储索引列的值,所以MySQL只能使用B-Tree索引做覆盖索引
5.基本数据类型长度
类型 占用字节 占用位数 数值长度
byte 1 8 -128~127(-2的7次方到2的7次方-1)
short 2 16 -32768~32767(-2的15次方到2的15次方-1)
int 4 32 -2147483648~2147483647(-2的31次方到2的31次方-1)
long 8 64 (-9223372036854774808~9223372036854774807)(-2的63次方到2的63次方-1)
float 4 32 ( 1.401298e-45~3.402823e+38)(e-45是乘以10的负45次方 ,e+38是乘以10的38次方 )(2的-149次方 ~ 2的128次方-1)
double 8 64 (4.9000000e-324 ~ 1.797693e+308 )(2的-1074次方 , 2的1024次方-)
char 2 16
boolean 1 8
6.sql执行流程
https://blog.csdn.net/zhutianrong520/article/details/89931661
7.aop ioc设计模式
IOC就是典型的工厂模式,通过sessionfactory去注入实例。
AOP就是典型的代理模式的体现。
https://blog.csdn.net/niejiangnan9235/article/details/75569307
8.mybatis核心组件
SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成SqlSessionFactory(工厂接口)
SqlSessionFactory:依靠工厂来生成SqlSession(会话)
SqlSession:是一个既可以发送SQL去执行并返回结果,也可以获取Mapper的接口
SQL Mapper:它是由一个Java接口和XML文件(或注解)构成的,需要给出对应的SQL和映射规则。它负责发送SQL去执行,并返回结果
https://blog.csdn.net/qq_40378034/article/details/100605072
9.如何获取一个线程安全的hashmap
实现线程安全的方式有三种,分别是使用HashTable、Collections.SynchronizeMap、ConcurrentHashMap。
10.线上环境出问题如何排查。
https://blog.csdn.net/GitChat/article/details/79019454
11.多线程会出现什么问题。
12.url是如何找到DispatcherServlet
13.jdk8新特性
https://blog.csdn.net/hzj1998/article/details/89492503
14.spring5新特性
https://blog.csdn.net/qq_41744145/article/details/100164521
15.jvm内存结构
https://blog.csdn.net/luoyuan323/article/details/98937756
16.redis分布式锁实现原理
https://blog.csdn.net/Andy86869/article/details/81668355
17.springboot和传统的项目区别
18.左链接 右链接 内链接 有什么区别
左连接:左边有的,右边没有的为null
右连接:左边没有的,右边有的为null
内连接:显示左边右边共有的
19.sql语句执行顺序
MySQL语句执行顺序:FROM > 表链接(inner join、left join、right join) > WHERE >group by 进行分组 > having过滤 > select > order by 语句排序 > 分页语句