04 2020 档案

Lock
摘要:Lock ReentrantLock : 抢占锁失败 , 会进入同步队列 , 此队列是双向链表。 (prev --next) Condition : 只有抢占到锁的线程, 才可以调用 await()方法, 会释放CPU资源 , 释放锁 , 进入到Condition队列。单向链表 。(nestWait 阅读全文

posted @ 2020-04-28 16:09 java_小跟班 阅读(315) 评论(0) 推荐(0)

线程池
摘要:线程池 Thread_Pool 一. 使用线程池的好处 : 1. 避免的线程的创建与销毁,降低了资源的损耗. 2. 由于1的效果,所以响应时间也会相应的缩短,提高响应速度. 3. 可以对系统内的线程进行较为合理的管理,线程总数的控制,以便后续的优化 二. 接下来源码 package java.uti 阅读全文

posted @ 2020-04-24 11:57 java_小跟班 阅读(346) 评论(0) 推荐(0)

mybatis基础流程_Mybatis与Spring的集成
摘要:mybatis基础流程_Mybatis与Spring的集成 对象 相关对象 作用 Configuration MapperRegistry TypeAliasRegistry TypeHandlerRegistry 包含了mybatis的所有配置信息 SqlSession SqlSessionFac 阅读全文

posted @ 2020-04-22 18:05 java_小跟班 阅读(332) 评论(0) 推荐(0)

mybatis基础流程_Mybatis的缓存
摘要:mybatis基础流程_Mybatis的缓存 mybatis提供了缓存机制, 分为一级缓存和二级缓存,其中一级缓存默认开启,二级缓存默认关闭 1. 先聊一下一级缓存. ,默认此时一级缓存是开启的,二级缓存是关闭的 结论: 一级缓存作用于每次SqlSession,因为每次与数据库的交互都会创建一个Sq 阅读全文

posted @ 2020-04-22 11:26 java_小跟班 阅读(213) 评论(0) 推荐(0)

mybatis基础流程_真正开始执行查询
摘要:mybatis基础流程_真正开始执行查询 拿查询来看Mybatis执行的源码流程 a . 比如selectOne方法, 其实底层还是会调用selectList()方法. a . 虽然会调用SelectList ,但是会确定结果集是否为1个,不是的话会抛出异常. a . 可以看到与前几章不同的是,之前 阅读全文

posted @ 2020-04-20 18:32 java_小跟班 阅读(319) 评论(0) 推荐(0)

mybatis基础流程_Mapper的引出
摘要:mybatis基础流程_Mapper的引出 a . 表面上看到的是,我们传入了一个Class对象,但是又得到了一个Class对象没区别,但是其实这两个对象是不一样的. b . 继续点进去查看 a . 我们看到了熟悉的mapperRegistry对象, 根据前面看到的东西,我们知道里面维护了一个Map 阅读全文

posted @ 2020-04-20 15:23 java_小跟班 阅读(139) 评论(0) 推荐(0)

mybatis基础流程_SqlSession的引出
摘要:SqlSession的引出 我们跟数据库的每一次连接,都需要创建一个会话,我们用openSession()方法来创建 a . 官方源码内提供了多种获取SqlSession的方法. 直接看无参的方法 b . 点击进去. a . 可以看到在内部,不仅创建了sqlSession对象,而是先创建了一个Exe 阅读全文

posted @ 2020-04-20 11:52 java_小跟班 阅读(183) 评论(0) 推荐(0)

mybatis基础流程_SqlSessionFactory的引出
摘要:Mybatis源码_SqlSessionFactory的引出 1. SqlSessionFactory的引出,作为Mybatis的入口 a. 直接调用SqlSessionFactoryBuilder.build(参数)方式引出SqlSessionFactory对象,其实在此处已经比较明了的看出了 2 阅读全文

posted @ 2020-04-19 21:38 java_小跟班 阅读(293) 评论(0) 推荐(0)

JVM_常见工具
摘要:常见工具分析JVM问题 一般在开发中,JVM参数可以加上下面两句,这样内存溢出时,会自动dump出文件 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heap.hprof 可以在 VM Options中配置 1.有图形化的界面来监控当前JVM a. 阅读全文

posted @ 2020-04-17 15:16 java_小跟班 阅读(203) 评论(0) 推荐(0)

JVM_常见命令
摘要:JVM参数 1. 标准参数 java -version java -help 2. -X参数 不常用 -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式,JVM自己来决定 3. -XX参数(非常重要了) a . boolean 启用/禁用某个属性 格式: -XX 阅读全文

posted @ 2020-04-15 18:30 java_小跟班 阅读(396) 评论(0) 推荐(0)

JVM_Garbage Collection
摘要:Garbage Collect(垃圾回收) 如何确定一个对象是垃圾 1. 引用计数 判断当前应用程序中,只要还持有当前对象的引用,就代表该对象不是垃圾.如果没有任何指针指向其引用,它就是垃圾 缺陷: 当两个对象循环依赖 ,互相持有对象的引用,那么采用此方法就无法判断出当前两个对象是垃圾 2. 可达性 阅读全文

posted @ 2020-04-15 17:36 java_小跟班 阅读(132) 评论(0) 推荐(0)

Jvm_栈
摘要:JVM栈描述 oracle官网JVM描述地址 : https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.5.6 根据官网描述 , 栈分为 : 本地方法栈 和 java虚拟机栈 , 此处我们仅描述java虚拟机栈 栈 阅读全文

posted @ 2020-04-10 16:33 java_小跟班 阅读(160) 评论(0) 推荐(0)

String_字符串各个场景下的==
摘要:字符串在各个场景下的 == 备注: 当然正常情况下还是equals来处理是否相等,只是了解下 代码见截图: 执行结果: 个人理解: 1. a 和 a1相等 ,是因为这两个变量都未在堆中生成实例,而是直接指向了方法区的运行常量池的 "helloworld" 元素,所以二者连地址值都是一样的 2. St 阅读全文

posted @ 2020-04-09 17:42 java_小跟班 阅读(279) 评论(0) 推荐(0)

jvm_run-time method area
摘要:方法区 官网地址: https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html#jvms-2.6 1. 官网对于虚拟机中方法区的描述如下截图 从官网上描述信息: 1. java虚拟机的方法区是所有线程共享的. 2. 方法区在内存中可以 阅读全文

posted @ 2020-04-08 22:39 java_小跟班 阅读(134) 评论(0) 推荐(0)

jvm类加载_类的流程
摘要:类的流程 类的加载流程各阶段说明: 全限定名 : 包名 + 类名 加载 : 1. 根据类的全限定名找到对应的二进制流 2. 将静态数据结构转换为方法区运行时数据结构 3. 在堆中生成一个java.lang.class对象,作为访问方法区这些数据的入口 验证 : 校验字节码正确性 和 二进制流正确性等 阅读全文

posted @ 2020-04-08 18:32 java_小跟班 阅读(181) 评论(0) 推荐(0)

jvm类加载_类的加载原则
摘要:加载原则 双亲委派机制 : 描述 : 当一个类加载器接收到一个类的加载请求时,并不会直接去尝试加载这个类,而是把这个任务交由父加载器去执行,依次递归.只有当父类加载器在其搜索范围内无法找到所需的类,才会以此向下递归,查找可以加载此类的类加载器. 优势 : 1. 对于任意一个类,都需要由加载它的类加载 阅读全文

posted @ 2020-04-08 17:38 java_小跟班 阅读(266) 评论(0) 推荐(0)

jvm类加载_类加载器种类
摘要:类加载器种类 在jvm类加载过程中,有一步叫做加载的流程 加载 : 根据类的全限定名获取到其定义的二进制字节流,并将其加载到内存中. 此时需要借助类加载器来帮助完成 全限定名 : 包名 + 类名 类加载器分为4类 : %JAVA_HOME% : 为JDK设置的环境变量路径. 如环境变量里设置了%ja 阅读全文

posted @ 2020-04-08 16:43 java_小跟班 阅读(528) 评论(1) 推荐(1)