avatar
文章
63
标签
36
分类
17

首页
时间轴
标签
分类
RQTN
首页
时间轴
标签
分类

RQTN

Bean 的循环依赖问题 - Spring 循环依赖源码分析
发表于2022-11-15|JavaSpring|laodu-spring6•循环依赖
Bean 的循环依赖问题 - Spring 循环依赖源码分析老杜在课程中的 Spring 循环依赖源码分析部分,讲得有点虎头蛇尾,隔靴搔痒。 还是得自己追一遍源码呀。下面先给出相关的类和配置文件。 Husband 和 Wife 类 12345678910public class Husband { private String name; private Wife wife; public void setName(String name) { this.name = name; } public void setWife(Wife wife) { this.wife = wife; }} 1234567891011public class Wife { private String name; private Husband husband; public void setName(String name) { ...
GoF 之工厂模式 - 回顾已学过的设计模式
发表于2022-11-09|Java设计模式|laodu-spring6•设计模式
GoF 之工厂模式 - 回顾已学过的设计模式GoF 包含 23 种设计模式,其中有一些设计模式,老杜在之前的课程中(JavaSE JavaWeb MyBatis)中已经讲过。这里做一个简单的回顾。 设计模式优秀博客或文章 《深入设计模式》在线电子书网站 菜鸟教程 - 设计模式 hochan100 的博客园 - 设计模式分类 单例模式 单例模式是一种创建型设计模式,让你能够保证一个类只有一个实例,并提供一个访问该实例的全局节点。 在韩顺平的 JavaSE 课程中学过单例模式。 常见的实现方式有:懒汉式,饿汉式。 目前最佳实现方式是:单元素的枚举。 简单工厂模式,工厂方法模式,抽象工厂模式老杜的工厂模式讲解中,工厂方法模式讲得不够完美,讲义中的抽象工厂模式的内容除了开头,后面几乎都是错的,这里略作补充。建议阅读: 工厂模式(上):为什么说没事不要随便用工厂模式创建对象?抽象工厂模式 对象生产与对象消费的分离,或者说解耦,是工厂模式的最核心设计目的。 简单工厂模式,以相对简单的方式进行实现,来达到对象生产与消费分离的目的。但它的问题很明显: 不满足 OCP 原则,需要新增产品时,必须要 ...
MyBatis 参数处理 - 接口代理机制源码分析
发表于2022-10-26|JavaMybatis|laodu-mybatis•静态代理/动态代理
MyBatis 参数处理 - 接口代理机制源码分析本章最后一节 @Param 源码分析 中,老杜简单提了下 JDK 的动态代理,以及代理模式中的一些概念,如代理对象,代理方法,目标对象,目标方法,还提到了,代理方法可以在目标方法的基础上添加一些代码,代理方法最终还是要调用目标对象的目标方法。 在学习 Java 基础时,并没有学习到 JDK 动态代理相关的内容,这里就把课给补上。 另外,老杜在追 @Param 的源码时,也涉及到了 MyBatis 接口代理机制一些相关源码的细节,因此在研究完 JDK 动态代理之后,再回过头来看看 MyBatis 的接口动态代理的实现细节,追一遍 MyBatis 接口代理的源码。 静态代理和动态代理MyBatis 接口代理机制底层是使用 Java 动态代理技术实现的,建议先了解 Java 动态代理相关知识,可以阅读: Java 动态代理作用是什么? - 知乎 动态代理大揭秘,带你彻底弄清楚动态代理! 代理机制/代理模式下,不论是静态代理还是动态代理,都存在这些概念:代理对象,代理方法,目标对象,目标方法。下面先以静态代理为例,说明这些概念的含义。 JD ...
MyBatis 中接口代理机制及使用 - sqlSession.getMapper() 的使用问题
发表于2022-10-22|JavaMybatis|Mybatis 接口代理机制•laodu-mybatis
MyBatis 中接口代理机制及使用 - sqlSession.getMapper() 的使用问题写在前面做该笔记时,我还不了解 Java 的动态代理技术,也没有系统地追一遍 sqlSession.getMapper() 以及 mapper 调用接口方法的底层源码。 如果已经了解这些知识,就明白接口代理类 mapper 本质上是对 sqlSession 进行代理,sqlSession 就是目标对象,诸如 sqlSession.insert() 之类的方法就是目标方法。 由于 sqlSession 存在线程安全的问题,自然对其进行代理的接口代理类 mapper 也会存在线程安全的问题,毕竟代理方法底层还是需要调用目标对象的目标方法。这就把问题从根本上解释清楚了,而不是像下文这样解释得有些隔靴搔痒。 另外,Mybatis 的接口代理机制实际是用 Java 的动态代理技术来实现的,并没有直接使用到 javassist。Mybatis 中内置的 javassist 应该是用在了其他地方。 关于 MyBatis 的接口代理机制的源码分析,补充写了一篇笔记,如果可以的话,建议先阅读源码分析,本笔记 ...
使用 javassist 生成类 - javassist 为什么要把方法的创建和添加分开
发表于2022-10-19|JavaMybatis|laodu-mybatis•javassist
使用 javassist 生成类 - javassist 为什么要把方法的创建和添加分开先来看如下代码: 123456789101112131415@Testpublic void testGenerateFirstClass() throws Exception { // 获取类池,类池有两个主要用途:(1) 获取已知类 (2) 制造新类 ClassPool pool = ClassPool.getDefault(); // 制造新类,需要提供全类名 CtClass ctClass = pool.makeClass("com.powernode.bank.dao.impl.AccountDaoImpl"); // 制造方法,第一个参数是方法代码字符串,第二个参数是该方法所属的类 String methodCode = "public void insert() { System.out.println(123); }"; CtMethod ctMethod = CtMeth ...
手写 MyBatis 框架 - GodBatis 实现上的问题与改进
发表于2022-10-17|JavaMybatis|laodu-mybatis•GodBatis
手写 MyBatis 框架 - GodBatis 实现上的问题与改进GodBatis 实现上的问题GodBatis 在事务管理器的实现上存在问题:一个 SqlSessionFactory 只能对应一个 Transaction 事务管理器。如果 SqlSessionFactory.openSession() 开启多次会话,那么每个会话 SqlSession 底层都是使用的同一个事务管理器 Transaction,从而每个会话使用的是同一个 Connection 连接对象。 在 MyBatis 中也有 Transaction 接口,也有 JdbcTransaction 和 ManagedTransaction 两个实现类。 假设事务管理器配置是 <transactionManager type="JDBC"/>,那么每次开启会话 SqlSessionFactory.openSession(),底层就会相应创建一个 JdbcTransaction。因此: 一个 SqlSessionFactory 能够创建多个 SqlSession SQL 会话。 一个 Sq ...
Mybatis 核心配置文件 - 数据源 JNDI 集成第三方数据库连接池
发表于2022-10-14|JavaMybatis|laodu-mybatis•JNDI
Mybatis 核心配置文件 - 数据源 JNDI 集成第三方数据库连接池建议阅读: 什么是JNDI? JNDI学习总结(一)——JNDI数据源的配置 JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源 Tomcat——Tomcat数据源的配置(四种方式,区别webapps目录下的Web应用和其他Web应用) 在 Tomcat 中使用 JNDI 可以对数据源进行配置,配置如下: 1234567891011<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://127.0.0.1:3306/task" username="root" password="123456" ...
ResourceBundle 中文乱码问题解决
发表于2022-09-26|JavaJavaWeb|atguigu-javaweb•乱码
ResourceBundle 中文乱码问题解决问题国际化 i18n 中文的配置文件 i18n_zh_CN.properties 内容如下: 12345678910username=用户名password=密码sex=性别age=年龄register=注册boy=男girl=女email=邮箱reset=重置submit=提交 下面 bundle.getString 会输出乱码: 12345678910111213@Testpublic void testI18n() { Locale locale = Locale.CHINA; ResourceBundle bundle = ResourceBundle.getBundle("i18n", locale); // 输出中文会乱码 System.out.println("username: " + bundle.getString("username")); System.out.println("password: " ...
MySQL 杂记
发表于2022-09-01|MySQL|hsp-javase
MySQL 笔记自定义函数 MySQL 之自定义函数 | xyZGHio 存储过程 MySQL 存储过程 | 菜鸟教程 (runoob.com) 事务在学习韩顺平的 MySQL 课程时,看到了如下 SQL: 1234567891011121314151617181920-- 创建存储过程 insert_many_emp,用于循环插入大量随机 emp 雇员数据CREATE PROCEDURE insert_many_emp(IN start_id INT, IN call_num INT)BEGIN DECLARE i INT DEFAULT 0; # MySQL 默认开启事务自动提交模式,每条 SOL 语句都会被当做一个单独的事务自动执行 # 因此每插入一条数据,事务即完成,从而都会即刻自动提交一次 # 为了提高效率,这里使用 SET autocommit 语句设置事务的自动提交模式 SET autocommit = 0; REPEAT INSERT INTO emp (empno, ename, job, mgr, hiredate, sal, comm, deptno) V ...
好文收录 - 最熟悉的陌生人,那些关于String你不得不知道的东西
发表于2022-09-01|JavaJavaSE|好文收录•hsp-javase
好文收录 - 最熟悉的陌生人,那些关于String你不得不知道的东西 原文地址:最熟悉的陌生人,那些关于String你不得不知道的东西-腾讯云开发者社区-腾讯云 (tencent.com) 老套的笔试题在一些老套的笔试题中,会要你判断s1==s2为false还是true,s1.equals(s2)为false还是true。 1234String s1 = new String("xyz");String s2 = "xyz";System.out.println(s1 == s2);System.out.println(s1.equals(s2)); 对于这种题,你总能很快的给出标准答案:==比较的是对象地址,equals方法比较的是真正的字符数组。所以输出的是false和true。 上面的属于最低阶的题目,没有什么难度。 现在这种老套的题目已经慢慢消失了,取而代之的是有一些变形的新题目: 12345678910111213String s1 = "aa";String s2 = "bb";String ...
1234…7
avatar
RQTN
文章
63
标签
36
分类
17
Follow Me
最新文章
MVCC - undo log 版本链数据访问规则2023-06-27
synchronized 原理2023-05-04
好文收录 - 死磕Synchronized底层实现--重量级锁2023-04-28
好文收录 - 死磕Synchronized底层实现--轻量级锁2023-04-27
好文收录 - 死磕Synchronized底层实现--偏向锁2023-04-26
分类
  • AI1
  • Data Structure & Algorithm6
  • Java32
    • JUC6
    • JavaSE4
    • JavaWeb1
    • Mybatis6
    • Spring1
标签
设计模式 隔离级别 atguigu-springboot2 浮点数 Mybatis 接口代理机制 SpringBoot 自动配置 Java Socket 编程 atguigu-javaweb princeton-algs4 javassist SpringBoot 请求处理 好文收录 itheima-mysql laodu-spring6 mit-18.06 itheima-juc laodu-mybatis atguigu-springmvc 静态代理/动态代理 JNDI SpringBoot 消息转换器 hsp-javase synchronized SpringBoot 异常处理机制 Sentinel Canal TCC 分布式事务 GodBatis MVCC 循环依赖 原码/反码/补码 itheima-springcloud 多级缓存 坦克大战 八皇后问题 乱码
归档
  • 六月 20231
  • 五月 20231
  • 四月 20235
  • 三月 20233
  • 一月 20231
  • 十二月 20227
  • 十一月 20224
  • 十月 20225
网站资讯
文章数目 :
63
本站总字数 :
200.1k
最后更新时间 :
©2019 - 2024 By RQTN
框架 Hexo|主题 Butterfly