avatar
文章
38
标签
17
分类
10

首页
归档
标签
分类
留言
Mr_Yao的驿站
搜索
首页
归档
标签
分类
留言
Mybatis中mapper生成代理的过程
发表于2021-09-23|JAVA
目录 mybatis中mapper代理的生成过程 与Spring集成时mapper代理的生成过程 与SpringBoot集成时mapper代理的生成过程 mybatis中mapper代理的生成过程构建代理类工厂从入口点开始一步一步看,首先SqlSessionFactoryBuilder类中build()方法加载配置文件 12345678910public SqlSessionFactory build(InputStream inputStream, String environment, Properties properties) { try { XMLConfigBuilder parser = new XMLConfigBuilder(inputStream, environment, properties); return build(parser.parse()); } catch (Exception e) { throw ExceptionFactory.wrapException("Error ...
Java SPI机制
发表于2021-07-10|JAVA
少侠你现在是否还这样连接数据库 123456try { Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("URL","root","password");} catch (Exception e) { e.printStackTrace();} 少侠你知道Class.forName()这句早已经没用了么?Java 官方已经把它优化掉了。想知道怎么优化的么?不要急,且看我慢慢道来。 SPISPI 全名:Service Provider Interface,是 JDK 内置的一种服务发现机制,可以将服务接口与服务发现分离以达到解耦的效果。可以提升程序的可扩展性。比如 jdbc 只提供了接口,具体的实现由各个运营商解决、经常用的 log 日志类LogFactory,还有阿里的 dubbo 更是将 SPI 运用的淋漓尽致。 ...
Mysql优化工具explain
发表于2021-06-26|MySql
explain的使用很简单,只要在select语句的前面加上explain的关键字就好了,来看个例子 先创建两个表,注意两个表的索引 12345678910111213141516171819202122232425262728293031CREATE TABLE `user` ( `id` varchar(32) NOT NULL, `name` varchar(32) DEFAULT NULL, `role` varchar(32) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO `user` VALUES ('1', '1', '1');INSERT INTO `user` VALUES ('10', '10', '5');INSERT INTO `user` VALUES ('2', '2', &#x ...
Java动态代理
发表于2021-05-15|JAVA
JDK动态代理使用的非常广泛,Spring AOP中、MyBatis的mapper中都用到了JDK动态代理。 JDK动态代理的使用1、创建代理类接口及代理类。2、创建一个实现了InvocationHandler接口的类,实现该接口中的invoke方法。3、通过Proxy的newProxyInstance(ClassLoaderloader, Class[] interfaces, InvocationHandler h)方法创建一个代理对象。来个例子:创建一个Hello的接口 1234public interface Hello { void sayHello();} 创建一个实现了Hello接口的实现类。 123456public class HelloImpl implements Hello { public void sayHello() { System.out.println("hello"); }} 创建一个实现了InvocationHandler接口的类。 1 ...
Java内省
发表于2021-04-15|JAVA
内省(Introspector) 是Java 语言对 JavaBean 类属性、事件的一种缺省处理方法。说简单一点就是操作JavaBean的一套API。 什么是JavaBean?javaBean只是一种规范,大家都按照约定好的一套规则写java类,既然是规范就有一定的要求: 类是public的,然后有个无参的构造函数 属性是private的,通过设置setXXX()和getXXX()来访问 能支持事件,例如 addXXXXListener(XXXEvent e), 事件可以是 Click 事件,Keyboard 事件等等 提供应该 反射机制,这样可以查看java bean的各种信息 可以序列化,可以保存在硬盘上例如:12345678910111213141516171819202122public class User { private String name; private String address; public String getName() { return name; } publi ...
ReentrantLock源码分析
发表于2021-04-13|JAVA
ReentrantLock是一个可重入且独占式的锁,该锁支持获取锁时的公平和非公平选择。 公平锁公平锁遵循FIFO的原则,所有的线程都会顺序执行 获取锁123456789101112 //加锁 final void lock() { acquire(1); }//调用AbstractQueuedSynchronizer public final void acquire(int arg) { if (!tryAcquire(arg) && acquireQueued(addWaiter(Node.EXCLUSIVE), arg)) selfInterrupt(); } 是否是获得锁,还是进入队列等待的逻辑在tryAcquire 函数里。 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647protected final boolean tryAcquire(in ...
AbstractQueuedSynchronizer源码分析-独占式
发表于2021-03-03|JAVA
独占式获得锁独占式下的顶层函数为acquire(),首先调用tryAcquire()函数获得锁,如果获取不到锁,则将线程加入到队列中。 1234567public final void acquire(int arg) { if (!tryAcquire(arg) && //尝试获得锁 //将线程加入到对列中,循环获取资源,并在一定次数后阻塞 acquireQueued(addWaiter(Node.EXCLUSIVE), arg)) //在阻塞过程中线程可能被中断,忽略中断,在获取到锁后再进行中断。 selfInterrupt();} addWaiter()将线程加入到阻塞队列中。 12345678910111213141516private Node addWaiter(Node mode) { //将建一个队列节点,并设置该节点为独占模式 Node node = new Node(Thread.currentThread(), mode); // 尝试快速插入 ...
AbstractQueuedSynchronizer源码分析-共享式
发表于2021-02-13|JAVA
共享式获得锁共享式获取锁的顶层函数为acquireShared(),该函数首先调用tryAcquireShared()尝试互锁,如果获取不到锁,则将该线程加入到队列中。 1234567public final void acquireShared(int arg) { //尝试获取锁 //小于0,代表获取锁失败 // 具体的逻辑由子类实现 if (tryAcquireShared(arg) < 0) doAcquireShared(arg); } doAcquireShared()函数将该线程加入到队列中,然后通过有限次的循环获取锁,并判断是否该阻塞 12345678910111213141516171819202122232425262728293031323334353637383940private void doAcquireShared(int arg) { //将该线程加入到队列中 final Node node = addWait ...
1…34
avatar
Mr_Yao
一只努力向上的小菜鸟
文章
38
标签
17
分类
10
最新文章
Proof-of-History:Solana 区块链的创新时间证明机制2025-01-22
LangChain:构建智能语言模型应用的开源框架2025-01-20
区块链预言机:智能合约与现实世界的桥梁2025-01-14
使用 HSDIS 和 JITWatch 探索 Java 汇编指令2025-01-11
Solana:重塑区块链生态的高速革命2025-01-05
分类
  • JAVA20
  • LLM1
  • MySql3
  • web34
  • 以太坊1
  • 分布式事务2
  • 分布式链路追踪1
  • 区块链4
标签
区块链 分布式链路追踪 Tomcat 分布式事务 web3 以太坊 计算机 Mybatis Spring Boot LLM layer2 编译原理 计算机网络 MySql JAVA InnoDB Solana
归档
  • 一月 20255
  • 八月 20231
  • 七月 20231
  • 六月 20231
  • 五月 20231
  • 四月 20231
  • 三月 20231
  • 二月 20231
网站资讯
文章数目 :
38
本站访客数 :
本站总访问量 :
最后更新时间 :
©2020 - 2025 By Mr_Yao
框架 Hexo|主题 Butterfly
搜索
数据库加载中