- 博客(8)
- 收藏
- 关注
原创 Spring中事务@Transactional失效场景(6大种)
1、@Transactional 应用在非 public 修饰的方法上如果Transactional注解应用在非public 修饰的方法上,Transactional将会失效。之所以会失效是因为在Spring AOP 代理时,如上图所示 TransactionInterceptor (事务拦截器)在目标方法执行前后进行拦截,DynamicAdvisedInterceptor(CglibAopProxy 的内部类)的 intercept 方法或 JdkDynamicAopProxy 的 invoke 方
2020-10-29 20:24:20 680
原创 Mybatis 与 JDBC 编程的比较
1. 数据库链接创建、释放频繁造成系统资源浪费从而影响系统性能,如果使用数据库链接池可解决此问题。解决:在 SqlMapConfig.xml 中配置数据链接池,使用连接池管理数据库链接。2. Sql 语句写在代码中造成代码不易维护,实际应用 sql 变化的可能较大, sql 变动需要改变 java 代码。解决:将 Sql 语句配置在 XXXXmapper.xml 文件中与 java 代码分离。3. 向 sql 语句传参数麻烦,因为 sql 语句的 where 条件不一定,可能多也可能少,占位符需
2020-10-19 18:47:10 102
原创 #{}与${}的区别
#{}表示一个占位符号通过#{}可以实现 preparedStatement 向占位符中设置值,自动进行 java 类型和 jdbc 类型转换,#{}可以有效防止 sql 注入。 #{}可以接收简单类型值或 pojo 属性值。 如果 parameterType 传输单个简单类型值, #{}括号中可以是 value 或其它名称。表示拼接sql串通过{} 表示拼接 sql 串通过表示拼接sql串通过{}可以将 parameterType 传入的内容拼接在 sql 中且不进行 jdbc 类型转换, ${
2020-10-19 18:34:15 168
原创 从设计的目的谈接口和抽象类的区别
接口的设计目的,是对类的行为进行约束(更准确的说是一种“有”约束,因为接口不能规定类不可以有什么行为),也就是提供一种机制,可以强制要求不同的类具有相同的行为。它只约束了行为的有无,但不对如何实现行为进行限制。对“接口为何是约束”的理解,我觉得配合泛型食用效果更佳。而抽象类的设计目的,是代码复用。当不同的类具有某些相同的行为(记为行为集合A),且其中一部分行为的实现方式一致时(A的非真子集,记为B),可以让这些类都派生于一个抽象类。在这个抽象类中实现了B,避免让所有的子类来实现B,这就达到了代码复用.
2020-10-15 08:54:33 382
原创 聚簇索引和非聚簇索引的区别
聚簇索引:将数据存储与索引放到了一块,索引结构的叶子节点保存了行数据非聚簇索引:将数据与索引分开存储,索引结构的叶子节点指向了数据对应的位置在innodb中,在聚簇索引之上创建的索引称之为辅助索引,非聚簇索引都是辅助索引,像复合索引、前缀索引、唯一索引。辅助索引叶子节点存储的不再是行的物理位置,而是主键值,辅助索引访问数据总是需要二次查找。InnoDB使用的是聚簇索引,将主键组织到一棵B+树中,而行数据就储存在叶子节点上,若使用"where id = 14"这样的条件查找主键,则按照B+树的检索算法
2020-10-14 23:46:33 378
原创 什么是浅拷贝和深拷贝?
在Java中,除了 基本数据类型之外,还存在 类的实例对象这个引用数据类型,而一般使用 “=”号做赋值操作的时候,对于基本数据类型,实际上是拷贝的它的值,但是对于对象而言,其实赋值的只是这个对象的引用,将原对象的引用传递过去,他们实际还是指向的同一个对象。而浅拷贝和深拷贝就是在这个基础上做的区分,如果在拷贝这个对象的时候,只对基本数据类型进行了拷贝,而对引用数据类型只是进行引用的传递,而没有真实的创建一个新的对象,则认为是浅拷贝。反之,在对引用数据类型进行拷贝的时候,创建了一个新的对象,并且复制其内的成员
2020-10-11 10:55:03 337
原创 谈谈对Volatile的理解
JUC(java.util.concurrent)进程和线程进程:后台运行的程序(我们打开的一个软件,就是进程)线程:轻量级的进程,并且一个进程包含多个线程(同在一个软件内,同时运行窗口,就是线程)并发和并行并发:同时访问某个东西,就是并发并行:一起做某些事情,就是并行JUC下的三个包java.util.concurrentjava.util.concurrent.atomicjava.util.concurrent.locks谈谈对Volatile的.
2020-10-10 10:52:33 82
原创 SpringMVC 工作原理
原理如下图所示:流程说明(重要):客户端(浏览器)发送请求,直接请求到 DispatcherServlet。DispatcherServlet 根据请求信息调用HandlerMapping,解析请求对应的 Handler。解析到对应的 Handler(也就是我们平常说的 Controller控制器)后,开始由 HandlerAdapter 适配器处理。HandlerAdapter 会根据 Handler来调用真正的处理器来处理请求,并处理相应的业务逻辑。处理器处理完业务后,会返回一个 M
2020-10-09 20:59:34 73
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人