![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 81
鱼爱吃柚子
大三在校,努力,加油!
展开
-
Mybatis的一级缓存和二级缓存探索
你未必出类拔萃,但一定与众不同Mybatis的一级缓存和二级缓存探索文章目录Mybatis的一级缓存和二级缓存探索概述SqlSession的作用关闭二级缓存默认开启一级缓存的时候 同一个SqlSession关闭二级缓存,默认开启一级缓存的时候,不同的SqlSession开启二级缓存开启二级缓存时,不同的SqlSession下开启二级缓存的时候 新建新的SqlSessionFactory不同的nameSpace下 不同的SqlSession不同的nameSpace下 相同的SqlSession总结.原创 2021-07-25 13:32:39 · 281 阅读 · 2 评论 -
手写简易数据连接池
你未必出类拔萃,但与众不同手写简易数据连接池文章目录手写简易数据连接池创建一个maven项目导入依赖创建连接池信息创建数据库连接池创建连接池中心 进行调度测试类创建一个maven项目导入依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> &l.原创 2021-07-21 21:39:00 · 208 阅读 · 1 评论 -
手写简易HashMap实现基本功能
你未必出类拔萃,但一定与众不同手写简易HashMap实现基本功能文章目录手写简易HashMap实现基本功能概述手写简易HashMapMyMap接口实现Map接口Node节点成员变量和常量put方法()hash()扩容resizegetNode + getMyHashMap完全源码概述Map是一组由多组key-value集合在一起的结构,其中key值是不能重复的,而value值则无此限定。其基本接口为java.util.Map该接口提供了一些Map结构的关键方法HashMap是最常用的Map结.原创 2021-07-19 23:03:01 · 417 阅读 · 5 评论 -
剑指offer32-36
你未必出类拔萃,但一定与众不同剑指offer 32-36文章目录剑指offer 32-36题32 从上到下打印二叉树题33 二叉搜索树的后序遍历序列题34 二叉树中和为某一值的路径题35 复杂链表的复制题36 二叉搜索树和双向链表题32 从上到下打印二叉树从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,2.原创 2021-07-19 21:04:44 · 79 阅读 · 1 评论 -
Java线程池
你未必出类拔萃,但一定与众不同线程池文章目录线程池线程池的实现原理源码分析线程池的使用线程池的创建向线程池提交任务的两种方式submit()execute()关闭线程池合理地分配线程池线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池,在开发过程中,合理使用线程池能够带来三个好处降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行提高线程的可管理性。线程是稀缺资源,如果无限制地.原创 2021-07-14 11:47:06 · 82 阅读 · 1 评论 -
基于栈的字节码解释执行引擎图解
你未必出类拔萃,但一定与众不同基于栈的字节码解释执行引擎图解文章目录基于栈的字节码解释执行引擎图解解释执行基于栈的指令集与基于寄存器的指令集例子1例子2 基于寄存器的指令集基于栈的解释器执行过程图解流程解释执行无论是解释还是编译,也无论是物理机还是虚拟机,对于应用程序,机器都不可能如人那样阅读,理解,然后获得执行能力。大部分的程序代码转换成物理机的目标代码或虚拟机能执行的指令集之前,都需要经过编译过程这张图基于栈的指令集与基于寄存器的指令集Javac编译器输出的字节码指令流,基本上是一种.原创 2021-06-30 15:04:51 · 914 阅读 · 3 评论 -
深入理解JVM-类加载器双亲委派机制
你未必出类拔萃,但一定与众不同类加载器文章目录类加载器类与类加载器双亲委派机制三个类加载器类加载器双亲委派模型工作过程破坏双亲委派模型第一次被破坏第二次破坏第三次破坏通过一个类的全限定名来获取描述该类的二进制字节流,将这个动作放到Java虚拟机里去实现,以便让应用程序自己决定获取所需的类,实现这个动作的代码被称为类加载器类与类加载器对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在虚拟机的唯一性,每一个类加载器,都拥有一个独立的类名称空间。通俗易懂点就是,比较两个类是否相同只.原创 2021-06-18 15:17:25 · 1128 阅读 · 1 评论 -
深入理解JVM-虚拟机类加载机制
你未必出类拔萃,但一定与众不同虚拟机类加载机制文章目录虚拟机类加载机制概述类加载的时机六种情况初始化被动引用例子1被动引用例子2被动引用例子3类加载过程加载验证文件格式校验元数组验证字节码验证符号引用验证准备解析类或接口的解析字段解析方法解析接口方法解析初始化概述Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机使用的Java类型。类型的加载,连接和初始化都是在程序运行期间完成类加载的时机一个类型(每个Class文件都代表Jav.原创 2021-06-16 21:58:14 · 1054 阅读 · 0 评论 -
声明式调用OpenFeign
声明式调用-OpenFeign文章目录声明式调用-OpenFeignOpenFeign的使用1.加入Feign 和 Hystrix依赖2.声明OpenFeign的客户端接口(用以前学习springCloud的项目)3.定义一个OpenFeign接口4.此时还需要修改当前模块的主类5.访问OpenFeign客户端的配置FeignClientsConfiguration源码YML配置OpenFeign客户端接口实例自定义一个简单的request-interceptors拦截器UserInterceptorO原创 2021-06-15 16:00:15 · 1373 阅读 · 1 评论 -
深入理解JVM-类文件结构
你未必出类拔萃,但一定与众不同类文件结构文章目录类文件结构概述Class类文件的结构魔数与Class文件的版本常量池访问标志类索引,父类索引和接口索引集合字段表集合方法表集合属性表集合概述由于最近十年内虚拟机以及大量建立在虚拟机之上的程序语言如雨后春笋一般出现,把我们编写的程序编译成二进制本地机器码已经不在是唯一选择越来越多的语言选择了与操作系统和机器指令集无关的格式作为编译后的存储格式Java语言中的各种语法,关键字,。常量变量和运算符号的语义最终都会由多条字节码指令组合来表达。Cla.原创 2021-06-15 10:03:23 · 1042 阅读 · 0 评论 -
断路器Hystrix----入门实例
你未必出类拔萃,但一定与众不同断路器----Hystrix文章目录断路器----Hystrix概述熔断的概念服务降级Hystrix的功能简介入门实例1.引入依赖(springcloud-consumer-user)2.驱动Hystrix(springcloud-consumer-user)3.定义服务提供者(springcloud-provider-user)4.定义用户服务调用接口5.使用外部控制器来测试熔断效果6.测试结果Spring Cloud Netflix Hystrix是一种断路器组件.原创 2021-06-10 10:21:33 · 1070 阅读 · 0 评论 -
SpringBean的生命周期
你未必出类拔萃,但一定与众不同SpringBean的生命周期文章目录SpringBean的生命周期Spring IoC的本质就是为了管理Bean生命周期现在我们来看看一个简易的bean的实现 了解一个大概实例化初始化流程先写一个实体类编写spring配置文件BeanPostProcessor 前置处理器BeanFactoryPostProcessorBeanDefinitionInstantiationAwareBeanPostProcessor写个主函数进行测试打印结果Spring IoC的本质.原创 2021-06-09 08:47:01 · 1255 阅读 · 4 评论 -
Ribbon负载均衡学习
你未必出类拔萃,但一定与众不同客户端负载均衡-RibbonSpring Cloud Netflix Ribbon是一种客户端负载均衡的组件在Spring Cloud中,提供服务的调用是Ribbon和OpenFeign。OpenFeign实际上也是基于Ribbon实现的。微服务之间的调用往往被称为客户端的负载均衡,这是因为在Eureka的机制中,任何微服务都是Eureka的客户端。文章目录客户端负载均衡-Ribbon负载均衡概述初识RibbonRibbon概述实现负载均衡Ribbon负载均衡器和.原创 2021-06-08 17:04:41 · 184 阅读 · 0 评论 -
HTTP确认访问用户身份的认证
你未必出类拔萃,但一定与众不同HTTP确认访问用户身份的认证HTTP确认访问用户身份的认证1.BASIC认证概述认证步骤缺点2.DIGEST认证概述质询方式认证步骤缺点3.SSL客户端认证认证步骤SSL客户端一般采用双因素认证缺点4.FormBase认证认证过程实践应用HTTP确认访问用户身份的认证BASIC认证DIGEST认证SSL客户端认证FormBase认证1.BASIC认证概述BASIC认证是从HTTP1.0就定义的一种WEB服务器与通信客户端之间进行的认证方式,又称为基本.原创 2021-06-07 10:25:08 · 1141 阅读 · 0 评论 -
确保安全的HTTPS
确保安全的HTTPS目录确保安全的HTTPS1.HTTP + 通信加密 + 证书 + 完整性保护2.HTTPS 是身穿SSL外壳的HTTP3.相互交换秘钥的公开秘钥加密技术共享秘钥加密(对称秘钥加密)公开秘钥加密混合加密机制证书4.数字证书认证机构的业务流程5.HTTPS的安全通信机制6.为什么所有的通信不都采用HTTPS经常使用HTTPS来代替HTTP进行项目的访问就像微信小程序默认使用HTTPS,APP也是如此,还有像很多网站的URL都是HTTPS项目的最终上线完全离不开HTTPS 今日就来了解一原创 2021-06-07 08:50:17 · 1051 阅读 · 0 评论 -
SpringCloud---搭建Eureka服务治理和发现
你未必出类拔萃,但一定与众不同SpringCloud–服务治理Eureka目录SpringCloud--服务治理Eureka搭建Eureka服务治理中心1.创建springboot项目,这里就不做详细演示2.在pom.xml引入依赖3.创建启动类4.application.yml的创建和编写5.运行微服务应用搭建服务发现1.创建一个SpringBoot模块项目2.pom.xml 这是我自己的 用者自取3.修改SpringBootAppication4.修改appication.yml或者是创建编写.原创 2021-06-04 15:12:01 · 1103 阅读 · 4 评论 -
SpringBoot使用AOP做系统日志
你未必出类拔萃,但一定与众不同SpringBoot使用AOP做系统日志目录SpringBoot使用AOP做系统日志1.在项目中导入相关的依赖AOP2.自定义一个注解类LoggerSystem3.对系统日志做切面处理4.使用自身定义的系统日志进行操作 登录为例子5.运行后数据库结果6.其他相关的类1.在项目中导入相关的依赖AOP<dependency> <groupId>org.springframework.boot</groupId> .原创 2021-06-04 14:19:39 · 1313 阅读 · 2 评论 -
Docker-部署Java项目
你未必出类拔萃但一定与众不同Docker部署Java项目基于Centos7.6服务器操作Docker部署jar包项目Docker部署Java项目采用打包成镜像的方式部署1.创建一个文件夹2.创建Dockerfile3.对Dockerfile进行编辑4.开始构建镜像5.查看docker镜像6.使用docker镜像运行容器相关操作合集采用java -jar运行项目部署1.将需要部署的jar包项目上传到centos服务器上2.jar包上传到home下 这里我上传schoolinfo.jar到home.原创 2021-06-03 13:24:10 · 1700 阅读 · 1 评论 -
深入理解JVM--垃圾收集器
你未必出类拔萃,但一定与众不同垃圾收集器垃圾收集器垃圾收集器Serial收集器ParNew收集器Parallel Scavenge收集器Serial Old收集器Parallel Old收集器CMS收集器G1收集器(Garbage First)如果说收集算法是内存回收的方法论,那垃圾收集器就是内存回收的实践者。以上是七种作用于不同分代的收集器,如果两个收集器之间存在连线,就说他们可以搭配使用,而图中所处于的区域则表示是属于新生代还是老年代收集器Serial收集器Serial收集器是最基础,.原创 2021-05-31 09:59:47 · 1061 阅读 · 0 评论 -
深入理解JVM--垃圾收集算法
你未必出类拔萃,但一定与众不同垃圾收集算法从如何判定对象消亡的角度出发,垃圾收集算法可以分为 “引用计数式垃圾收集”和“追踪式垃圾收集”以下都是追踪式垃圾收集范畴分代收集理论当前的垃圾收集器大多都遵循了“分代收集” 的理论进行设计主要建立在两个分代假说上弱分代假说 :绝大多数对象都是朝生夕死的强分代假说: 熬过越多次垃圾收集过程的对象就越难以消亡跨代引用假说: 跨代引用相对于同代引用来说仅占极少数(新生代建立记忆集)注意部分收集(Partial GC):指目标不是完整收集整个.原创 2021-05-25 22:18:50 · 1020 阅读 · 0 评论 -
Redis学习----复制(下)
你未必出类拔萃,但一定与众不同Redis 复制PSYNC命令的实现PSYNC命令的调用方法共用两种如果从服务器以前没有复制过任何主服务器,或者之前执行过SLAVEOF no one指令,那么从服务器在开始一次新的复制时将向主服务器发送PSYNC ? -1命令,主动请求主服务器进行完整重同步(因为这个时候不可能执行部分重同步)相反地,如果从服务器已经复制过某个主服务器,那么从服务器在开始一次新的复制时将向主服务器发送PSYNC 命令:其中runid是上一次复制的主服务器的运行ID,.原创 2021-05-18 23:17:40 · 982 阅读 · 0 评论 -
Docker-安装mysql
你未必出类拔萃,但一定与众不同Centos7.6 docker 安装 mysqldocker下载mysql镜像[root@VM-0-3-centos ~]# docker pull mysqldocker 查看下载镜像[root@VM-0-3-centos ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmysql latest 0627ec69.原创 2021-05-10 20:12:02 · 1002 阅读 · 0 评论 -
Redis学习----复制(上)
你未必出类拔萃,但一定与众不同Redis 复制简介以及旧版SYNCredis中用户通过SLAVEOF命令或者设置slaveof选项,让一个服务器去复制另外一个服务器我们称被复制的为主服务器master,而对主服务器复制的服务器被称为从服务器slave。Redis2.8以前用SYNC命令执行复制的同步操作,2.8以后采用了PSYNC先了解一下SYNCSYNC命令是一个非常耗费资源的操作每次执行SYNC命令,主从服务器需要执行以下动作:1)主服务器需要执行BGSAVE命令来生成RDB文件,.原创 2021-05-09 18:31:51 · 986 阅读 · 0 评论 -
InnoDB存储引擎学习-关键特性
你未必出类拔萃,但一定与众不同InnoDB的关键特性插入缓冲两次写自适应哈希索引异步IO刷新邻接页一.插入缓冲1.Insert BufferInsert Buffer 是InnoDB存储引擎关键特性中让人激动而又兴奋的功能Insert Buffer和数据页一样,是物理页的一个组成部分在InnoDB存储引擎中,主键是行唯一的标识符,通常应用程序中行记录的插入顺序是按照主键递增的顺序进行插入的,因此插入聚集索引一般是按照顺序的,也就是我们定义表的时候的 AUTO_INCRE.原创 2021-05-08 23:08:11 · 1012 阅读 · 0 评论 -
Redis学习----服务器(下)
你未必出类拔萃,但一定与众不同Redis服务器(下)serverCron函数redis服务器的serverCron函数默认每隔100毫秒执行一次,这个函数负责管理服务器的资源,并且保持服务器自身的良好运转更新服务器时间缓存服务器状态中的unixtime属性和mstime属性被用作当前时间的缓存因为serverCron函数默认会以每100毫秒一次的频率更新unixtime属性和mstime属性服务器只会在打印日志,更新lru时钟,决定是否执行持久化任务,计算服务器上线时间这些对时间精度要求.原创 2021-05-05 20:05:55 · 1007 阅读 · 0 评论 -
Centos7.6上利用Docker安装nginx 并且配置https
你未必出类拔萃,但一定与众不同Centos上利用Docker安装nginx 并且配置https准备材料1.一个域名(已经解析到下方服务器)2.一个服务器3.域名相关的ssl证书下面就开始主要步骤以下指令为 指定nginx的挂载目录 docker run --detach \--name wx-nginx \-p 443:443\-p 80:80 \-v /home/evan/workspace/wxserver/nginx/data:/usr/share/nginx/html:r.原创 2021-05-02 19:49:49 · 1211 阅读 · 0 评论 -
Redis学习----服务器(上)
你未必出类拔萃,但一定与众不同Redis 服务器命令请求的执行过程一个命令请求从发送到获得回复的完整过程127.0.0.1:6379> set userId 9527OK1.客户端发送命令set userId 9527 给服务器2.服务器接收并且处理客户端命令请求set userId 9527,在数据库中进行操作,并且成功后产生命令回复OK3.服务器将命令回复OK发送给客户端4.客户端接收服务器命令回复OK,并且将回复打印给用户看图解发送命令请求当用户输入一个命令请求时.原创 2021-04-25 20:08:15 · 186 阅读 · 1 评论 -
Redis学习----客户端
你未必出类拔萃,但一定与众不同Redis客户端Redis服务器典型一对多的服务器程序多个客户端向一个服务器发送请求一个服务器处理多个客户端命令并且返回命令请求通过使用由I/O多路复用技术实现的文件事件处理器,Redis服务器使用单线程单进程的方式来处理命令请求,并且与多个客户端进行通信以下是服务器为这些客户端建立了相应的redis.h/redisClient结构(客户端状态),这个结构保存了客户端当前的状态信息,以及执行相关功能时需要用到的数据结构客户端的套接字描述符客户端的名字.原创 2021-04-24 10:36:11 · 90 阅读 · 0 评论 -
Redis学习---事件
你未必出类拔萃,但一定与众不同Redis文件Redis服务器是一个事件驱动器,服务器需要处理以下两类事件文件事件:Redis服务器通过套接字与客户端进行连接,而文件事件就是服务器对套接字操作的抽象。服务器与客户端的通信会产生相应的文件事件,而服务器则通过监听并且处理这些事件来完成网络通信时间事件:Redis服务器中的一些操作需要在给定的时间点执行,而时间事件就是服务器对这类定时操作的抽象。文件事件Redis基于Reactor模式开发了自己的网络事件处理器:这个处理器被称为文件事件处理器文.原创 2021-04-22 21:36:51 · 77 阅读 · 1 评论 -
Redis学习-----AOF持久化
你未必出类拔萃,但一定与众不同Redis AOF持久化AOF持久化通过保存Redis服务器所执行的写命令来记录数据库状态的RDB保存的是键值对,而AOF保存的则是redis 命令请求协议的格式AOF持久化的实现当AOF持久化功能处于打开状态时,服务器在执行完一个写命令之后,会以协议格式将被执行的写命令追加到服务器状态的aof_buf缓冲区的末尾如果客户端向服务器发送set key value那么服务器在执行这个set命令之后,会将以下协议内容追加到aof_buf缓存区的末尾(纯文本格式.原创 2021-04-20 21:17:54 · 88 阅读 · 1 评论 -
InnoDB存储引擎学习-CheckPoint机制
你未必出类拔萃,但一定与众不同CheckPoint技术检查点,表示脏页写入到磁盘的时候,所以检查点也就意味着脏数据的写入。CheckPoint技术主要是为了解决以下几个问题缩短数据库的恢复时间缓冲池不够用时,将脏页刷新到磁盘重做日志不可用时,刷新脏页而当数据库发生宕机时,数据库不需要重做所有的日志,因为CheckPoint之前的页都已经刷新回磁盘了,故数据库只需对CheckPoint后的重做日志进行恢复,这样缩短了恢复的时间而当缓冲池不够用时,根据LRU算法会溢出最近最少使用的页,若.原创 2021-04-19 20:27:10 · 137 阅读 · 0 评论 -
Redis学习-----RDB持久化
你未必出类拔萃,但一定与众不同Redis 持久化-RDBRedis是内存数据库将数据库的状态储存在内存中,如果不想办法将储存在内存中的数据库状态保存到磁盘中,一旦服务器进程退出,服务器中的数据库状态也会丢失不见因此RDB持久化 应景而生将redis在内存中的数据库状态保存到磁盘中,避免数据意外丢失下图表示RDB的持久化即使服务器退出 只要redis的rdb文件存在 就能还原数据库的状态RDB文件的创建与载入两个命令生成RDB文件SAVEBGSAVESAV命令会阻塞Re.原创 2021-04-19 20:24:16 · 1044 阅读 · 1 评论 -
InnoDB存储引擎学习-初探
你未必出类拔萃,但一定与众不同InnoDB存储引擎InnoDB存储引擎有多个内存块。内存块构成了一个巨大的内存池 负责维护所有进程/线程需要访问的多个内部数据结构‘缓存磁盘上的数据,方便读取,同时在对磁盘文件的数据修改之前在这里缓存重做日缓存 redo log缓存…后台线程InnoDB存储引擎采用的是多线程的模型 后台有多个不同的线程 处理不同的任务MasterThread一个核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新,.原创 2021-04-18 17:16:50 · 982 阅读 · 0 评论 -
Docker-安装nginx和tomcat
你未必出类拔萃,但一定与众不同docker安装nginx1.搜索镜像 searchdocker search nginx2.下载镜像docker pull nginx3.运行测试docker run -d --name nginx01 -p 8899:80 nginx成功安装和启动以后直接外网访问测试以下为centos操作记录[root@VM-16-3-centos ~]# docker search nginxNAME .原创 2021-04-17 14:26:31 · 1012 阅读 · 0 评论 -
Docker-相关命令操作学习
你未必出类拔萃,但一定与众不同Docker-相关命令操作学习以下几都是经过手敲命令 附上操作记录下载一个linux镜像centos来进行学习[root@VM-16-3-centos ~]# docker pull centosUsing default tag: latestlatest: Pulling from library/centos7a0437f04f83: Pull complete Digest: sha256:5528e8b1b1719d34604c87e11dcd1c.原创 2021-04-17 11:45:58 · 143 阅读 · 0 评论 -
Redis初探------1.相关命令
你未必出类拔萃,但一定与众不同接入以前的redis数据类型redis1.切换数据库每个redis都有 自己的目标数据库 通过select index 来进行切换数据库默认情况下 redis客户端的目标数据库为 0 号数据库以下为 在0号数据库设置键值,到达2号数据库 1号数据库读取的例子127.0.0.1:6379> SET msg "hello world"OK127.0.0.1:6379> get msg"hello world"127.0.0.1:6379.原创 2021-04-16 18:04:47 · 92 阅读 · 0 评论 -
Docker-入门以及安装笔记
Docker1.发布项目的时候,将项目和环境一起发布!开发打包部署上线,一套流程做完2.多个应用(端口交叉)隔离:打包装箱,每个箱子都是互相隔离的java —apk—发布 应用商店 ----张三使用apk 安装即可用java-----jar(环境)—打包项目带上环境(镜像) ----docker仓库 商店 下载我们发布的镜像 ----直接运行即可。3.Docker是基于go语言开发的 开源项目https://www.docker.comhttps://docs.docker.com原创 2021-04-15 09:07:34 · 127 阅读 · 0 评论 -
记录日志:腾讯云服务器遭遇挖矿病毒 清除操作日志
你未必出类拔萃,但一定与众不同12月16日下午16时许腾讯云服务器部署项目时,项目不管上没上线,tomcat原本是启动的,但是非正常原因断开连接,结束重新启动多次tomcat发现都会非正常关闭,查看服务器cpu使用率奇高无比,最高的时候一个达到97%的CPU占用率,发现不明进程正在运行,百度一下发现是挖矿病毒,还是两种;记录一下操作日志,方便以后再次清除;[root@VM-0-6-centos bin]# top -Htop - 16:57:21 up 2 days, 1:57, 1 us.原创 2021-01-18 19:24:24 · 1248 阅读 · 2 评论 -
深入理解JVM---Java内存区域初探
你未必出类拔萃,但一定与众不同Java虚拟机内存区域概述运行时数据区域java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。详情看下图程序计数器程序计数器是一块较小的内存空间,可以看做是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都依赖于这个计数器来完成;.原创 2020-12-21 20:45:28 · 811 阅读 · 0 评论 -
深入理解JVM-垃圾收集器-引用计数算法
你未必出类拔萃,但一定与众不同垃圾收集器垃圾回收需要思考的三件事情:哪些内存需要回收什么时候回收如何回收首先先判断对象是否死亡堆中几乎存放着java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就需要判断这些对象中哪些存活,哪些“死去”(不再被使用的对象)引用计数算法作为作为垃圾收集器最早的算法,有其优势,也有其劣势,虽然现在都不使用此种算法进行垃圾回收,但也并未淘汰,redis就使用这种算法进行内存回收。给对象添加一个引用计数器,每当有一个地方引用它时,计数.原创 2020-09-07 22:42:20 · 289 阅读 · 0 评论