- Springboot的理解
- Spring的理解
- Springboot的注解有哪些
- @restcontroller和@controller的区别
- @restcontroller 和@service和@component都是用来干什么的
- Restful 接口规范的理解
- 事务的理解-特性
- 事务的隔离级别
- 事务的传播特性
- 声明式事务注解的配置项
- Mybatis的理解
- Mybatis的标签
- Post和get的区别 (基于tcp对比)
- Mybatis的工作原理
- 事务的回滚机制
- Hashmap的了解
- Ioc和aop的理解
- Redis的特点
- Redis支持的数据类型
- Sql索引失效的情况
- Sql语句优化
- Springmvc的工作原理
- Spring bean的注解有哪些
- #{}和${}的区别
- #{}是如何防止sql注入的
- ES是怎么存储数据的
- 怎么保证接口安全
- Static修饰的方法怎么获取容器对象
- ArrayList和hashmap的理解
- 创建线程池时的配置项
- 分布式事务
- 高并发解决方案
- 针对秒杀活动设计一个方案
- Springboot是怎么自动装配bean的(控制反转,依赖注入)
- Springboot starter核心包的作用
- AOP是基于什么实现的(动态代理)
- 线程锁
- Mysql的索引类型
- 索引覆盖是什么意思
- Mysql慢查询优化
- 怎么查看索引使用情况,扫描行数
- 异常是怎么处理的(基于AOP)
- JAVA8的lamda表达式用的多吗
- MQ怎么保证数据不丢失
- MQ消息高并发怎么做幂等
- Oracle和Mysql有什么区别
- Spring Cloud用到的组件都什么
- 高并发问题
- JDBC SQL的生命周期
- 线程池的种类
- 创建线程池的方式
- 字符流和字节流的区别
- springboot获取配置类的方式 (@value 和Environment)
- @resource和@autowride的区别
- 高并发代码中的解决方式
- openfeign和feign的区别
- ES的了解
- gateway和拦截器的区别
- oracle的视图
- 数据库对千万级数据查询分页的优化
- 事务失效的场景
- 事务中是否可以try——catch
- 缓存同步策略
- JAVA的反射机制
- 集合使用过哪些
- springboot启动过程
- jvm调优
- openfeign和httpclent的区别
Springboot的理解
简化spring应用的创建和开发过程,是微服务的底层核心框架,整合第三方内容的集成,便捷开发
Spring的理解
- Spring是一个轻量级的 IOC / DI 和 AOP 容器的开源框架,其根本目的是为了简化Java开发。
- IOC :控制反转,也叫依赖注入(DI),就是通过工厂模式(BeanFactory接口)自动选择类构造器、静态工厂方法或实例工厂方法为我们创建所需要的对象。使Java开发符合高内聚、低耦合的特性。
- AOP :面向切面编程,将程序中独立于其他功能的方法抽取出来,使Java开发模块化,仅需专注于主业务即可。
Springboot的注解有哪些
@restcontroller和@controller的区别
是组合注解,@Controller和@ResponseBody
@Controller是Spring MVC用来标注业务控制层的注解
@ResponseBody表明Spring MVC的返回值不再是一个视图,而是返回一个Json字符串,并把返回值放在ResponseBody中@restcontroller 和@service和@component都是用来干什么的
@restcontroller表明返回值是JSON字符串,标注控制层注解
@service是用来标注业务层注解
@component 非业务层持久层控制层的组件都用这个来标注
@Repostiory 标注持久层注解Restful 接口规范的理解
学名:表现层状态转移,表明clent和server之间连接的方式说明,是一种风格和思想,规范化请求动作和返回结果
URL定位资源,HTTP请求动词描述动作
规范请求参数格式,字符串使用JSON格式,图片使用JPG格式等
使用HTTP状态码标注请求状态事务的理解-特性
ACID:原子性,一致性,隔离性,持久性
原子性:事务要么全部成功,要么全部失败
一致性:事务提交前数据是一致的,提交后数据也应该是一致的
隔离性:多个事务之间不能相互影响
持久性:事务提交之后,不论数据库发生什么,数据的修改都是永久的
事务的隔离级别
spring有五种
1、使用DB:使用数据库设置的级别
2、读未提交:读取未提交的数据,会导致脏读,幻读,不可重复读
3、读已提交:只能读取别人提交后的数据,可避免脏读,会导致幻读,不可重复读
4、可重复读:禁止读取别人未提交的数据,保证多次查询结果一致,会造成幻读
5、序列化:最严格的格式,事务串行执行。可避免以上所有问题
事务的传播特性
两种情况:
一、以当前事务为准,有则进入,无则分三种情况
1、自己创建事务
2、非事务执行
3、抛异常
二、不以当前事务为准
1、有则挂起,自己新建事务
2、有则挂起,非事务执行
3、有则挂起,抛异常
4、有则新建事务嵌套执行,无的话参照1.1新建一个事务
声明式事务注解的配置项
1、配置事务管理器
2、事务的传播机制
3、事务的隔离级别
4、事务的超时时间
5、是否为只读事务
6、指定触发事务的异常
7、指定抛出的异常不触发事务回滚
Mybatis的理解
持久层框架,面向sql编程,内部封装了JDBC,解耦合,支持动态SQL
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java对象映射成数据库中的记录。
Mybatis通过xml或注解的方式将要执行的statement配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
Mybatis的标签
Post和get的区别 (基于tcp对比)
Mybatis的工作原理
1、加载mybatis全局配置文件(数据源、mapper映射文件等),解析配置文件,MyBatis基于XML配置文件生成Configuration,和一个个MappedStatement(包括了参数映射配置、动态SQL语句、结果映射配置),其对应着