- 博客(13)
- 收藏
- 关注
原创 Git 操作整理
问题:解决Git报错:error: You have not concluded your merge (MERGE_HEAD exists).解决办法一:保留本地的更改,中止合并->重新合并->重新拉取$:git merge --abort$:git reset --merge$:git pull解决办法二:舍弃本地代码,远端版本覆盖本地版本(慎重)$:git fetch --all //重新拉取$:git reset --hard origi.
2021-11-19 10:45:21
275
原创 jvm--垃圾回收机制
目录1、如何判断“已死”: 1.1 引用计数法: 1.2 可达性分析算法1、如何判断“已死”: 1.1 引用计数法: 引用计数法描述的算法为:给对象增加一个引用计数器,每当有一个地方引用时,计数器就+1;当引用失效时,计数器-1;当计数器为0时,说明无对象引用,也就说明对象"已死" 主流的jvm中没有选用引用计数法管理内存,主要原因是引用计数法无法解决循环依赖问题; ...
2021-11-08 16:34:36
73
原创 JVM虚拟机
1、JVM虚拟机内存区域的组成: 内存区域,指的是运行时数据区,主要由:方法区,虚拟机栈,本地方法栈,堆,程序计数器组成。1、程序计数器: 程序计数器(Program Counter Register)是一块较小的内存空间,线程私有。记录一个行号指示器,指向下一个指令的行号,等待执行引擎读取执行。如果是native方法,计数器将为Undefined。本身不会发生OOM问题。(原因:我的理解上,因为本身存储的是一个行号,很小,线程足够多,才会发生内存不够的情况,但...
2021-11-08 15:33:25
248
原创 Spring IOC(三级缓存,循环依赖,(源码分析))
Bean容器的三个缓存: 一级缓存(singletonObjects)-256:单例,用于保存我们创建完成的bean对象。 二级缓存(earlysingletonObjects)-16:单例,用于保存我们的实例化 但是未进行属性注入及初始化的对象 三级缓存(singletonFactories)-16:单例,主要用于解决循坏依赖,存储bean对象的单例工厂。图中为getBean方法源码: 执行顺序:1、去一级缓存首先尝试获取对象...
2021-10-20 23:48:53
260
原创 Spring AOP
代理模式:翻阅设计模式篇,代理模式代理类型: 静态代理:委托类必须实现接口的前提下,代理类实现同样的接口 在变量中存在委托类,通过重写方法进行代理。 缺点:一个代理只能代理一种类型,编译器阶段已经确定被代理的对象。 动态代理: 运行时,通过反射机制实现动态代理。 JDK动态代理:通过对被代理类的接口的实现进行动态代理。 ...
2021-10-20 21:38:39
43
转载 Redis的过期策略和内存淘汰策略
一、过期策略(2种): 一、定期删除: redis会将过期了的缓存的key放入到独立的一个字典中,过期字段。 然后每秒10次的方式对过期字典进行扫描(贪心策略) 从过期字典中随机获取20个key,如过期 则删除,如超过1/4 重复执行。 二、惰性删除: 在客户端访问这个key的时候,redis对key的过期时间进行检查,如果过期,立即删除,...
2021-10-15 22:16:50
171
原创 mysql索引的分类
前言:索引的分类上 大致如下图所示一、聚簇索引:根据一个字段,构建B+树,在叶子节点存储data数据。 选择条件:在索引上,首先选择主键作为索引,然后主键不存在的情况下,选择唯一且不为空的索引作为聚簇索引,最后如果也不存在,则隐式的定义一个主键作为聚簇索引二、非聚簇索引:同样以字段构建B+树,在叶子节点存储的是数据的地址。 索引类型: 1、normal-普通索引:表示普通索引 2、unique-唯一索引:表示唯...
2021-10-12 22:05:32
291
原创 Redis专栏
一、redis的持久化方式,特点:RDB持久化:指在指定时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork(复刻)一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。 特点:存储的内容是整个数据集的所有信息。 优势:1、实际存储信息的文件只有一个。 2、可以轻松转移到其他存储介质上。 ...
2021-10-12 11:02:53
138
原创 锁升级过程
java中 对象锁的状态分为四种:无锁——》偏向锁——》轻量级锁——》重量级锁 对象的对象头信息中的锁状态标志 1、偏向锁 偏向锁是JDK6中引入的一项锁优化,大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获取,为了让线程获得锁的代价更低,引入了偏向锁 偏向锁会偏向于第一个获得它的线程,如果在接下来的执行过程中,该锁没有被其他的线程获取,则持有偏向锁的线程将永远不需要同步 ...
2021-10-10 22:19:41
990
原创 集合相关专栏
问题系列: 一、hashMap、ConcurrentHashMap、hashTable区别? 1、先说HashMap和HashTable区别 主要区别HashMap线程是不安全的,HashTable线程是安全的 1、继承不同,HashMap继承于AbstractMap,HashTable继承于Dictionary 2、它们存储的键值对区别:HashMap的键可以有一个为nu...
2021-10-10 21:23:51
55
转载 对象的创建过程
编译 ——》加载——》连接——》初始化——》对象创建主要流程:一、编译: 经过编译,Person.java经过jvm的编译会生成一个符合Person.class的文件。二、装载: Person.class经过装载,将类的相关信息加载到jvm的内存中,解析出的类的描述信息会保存到Metaspace,同时生成一个代表此类的java.lang.class的对象,用作此类的访问入口。三、连接: ...
2021-10-10 13:40:18
226
转载 SQL优化相关(explain执行计划)
1、等值匹配 where语句中的几个字段名称和联合索引中的字段完全一样,而且都是基于等号的等值匹配,这样一定会用上索引,即使where语句里写的字段的顺序和联合索引里的字段顺序不用也没关系,mysql会进行一定的优化。2、最左匹配原则一、全值匹配查询由此顺序可以看出,b索引相对于整体时无序的 相对于上一个索引(a)是有序的。 1、索引为(id,name,age),查询sql where为(id,...
2021-08-31 16:22:28
48
原创 MyISAM和InnoDB索引区别
MyISAM:表级锁、不支持事务,支持全文索引。存储结构上:三个文件,'.frm'-表结构文件,'.MYD'-数据文件,‘.role’-索引文件,非聚集索引。 主键索引结构:通过对col1建立主键索引,会从索引文件找到索引节点,再通过索引节点上的文件指针到数据文件中,定位具体的数据。 辅助索引结构:与主键索引结构上并无任何区别,主键Key不...
2021-08-31 14:48:24
97
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人