
面试
文章平均质量分 75
码农王二小
学习学习
展开
-
JVM里面比较常问到的CMS和G1
1.JVM垃圾收集器JVM在历史长河里面出现了很多的垃圾收集器,咱们总结一下新生代收集器:Serial、ParNew、Parallel Scavenge老年代收集器:CMS、Serial Old、Parallel Old整堆收集器: G1在后面就是ZGC了。Serial和Serial Old是串行的垃圾回收器,一般是在早期内存比较小的时候才会使用到的。Parallel Scavenge、Parallel Old是并行的垃圾收集器,也就是所谓的PS+PO,目前好多公司没有优化的时候原创 2021-05-13 11:58:08 · 2787 阅读 · 0 评论 -
ArrayList源码分析
咱们主要分析一下,实例化的过程和数组扩容的过程。为什么要看这个呢,这几天面试的时候,发现很多面试的人并不知道初始化数组长度是多少,每次扩容是多少,所以我也抱着怀疑的态度,自己看一下ArrayList的源码。首先我看看一下自己的JDK的版本信息在提前准备好例子,可以更好的看源码。1.实例化的过程直接进去ArrayList()的方法里面,可以看到下面的这个图。这里我们就发现我们如果使用默认的实例化方式的话,其实数组里面是个空数组的。还有一个是带Integer的初始化方式,原创 2021-04-23 18:44:14 · 137 阅读 · 0 评论 -
数据结构的算法面试题一
1.给定一个数组arr,长度为N,arr可以从中间人和一个位置被切成左右两半,但是规定左右两部分必须有数字,那么在不同的切法下,都会有左部分和右部分最大差值的绝对值,请返回所有的切法下,这个值最大是什么其实大家第一个想法就是找到最大值最小值,这两个肯定是最大值。切成的两个数组里面,这两个里面最大值肯定能在一个数组里面,那么另外一个肯定在另外一个数组么?这个数组里面的最大值都是一样的,都是最小值么?这个肯定不是的,这样一刀切的时候并不能报告数据旁边的大小是什么。如果int[]arr={1...原创 2021-03-12 18:56:08 · 248 阅读 · 0 评论 -
JVM----对象怎么到的老年代
1.什么是Minor GCJVM堆内存主要分为新生代和老年代,Minor GC就是回收新年带的GC,也称为Young GC,老年代的GC 就是 Full GC。新生代又分为Eden区和两个Servivor区,这个在下面的时候可能会用到。(两个Servivor区就简称为S1区和S2区)2.躲过15次的GC之后进入老年代每次对象新生成的时候,会在Eden区生成,如果Eden区满了,就会发生一次Minor GC,这个时候会把Eden区还存活的对象复制到S1区,这个时候从Eden区到S1去的对象,他原创 2021-02-26 18:37:03 · 724 阅读 · 0 评论 -
为什么Tomcat不用遵循双亲委派
1. 什么是双亲委派一般大家我应该先写一篇怎么把.class加载到JVM里面的一篇文档,但是我发现有好多这样的文章了,所以这里就没有必要给大家讲解一下怎么加载的过程了这里引用一张图,大家看过其他人的博客在看到这张图,就应该知道,一个class怎么加载到JVM里面了。接下来就是双亲委派了,在了解双亲委派之前呢,大家首先需要了解几个类加载器。(1)启动类加载器-》BootstrapClassLoader它主要负责加载我们在机器上安装的额Java目录下的核心类。不管我们是做Java开发,.原创 2021-02-25 14:22:33 · 329 阅读 · 0 评论 -
简述Ribbon的原理
1.Ribbon的大体流程一般我们在使用SpringCloud框架的时候并不知道Ribbon是怎么使用的,那么如果我们想要去研究它,应该从什么地方入手呢?如果在没有使用Feign调用接口的时候,我们肯定会选择RestTemplate来调用,Ribbon给提供了一个负载均衡的一个标注@LoadBalanced,可以加在RestTemplate上,这个就是我们接下来要看Ribbon的入口了。@LoadBalanced底层其实就是个拦截器,拦截了所有的RestTemplate调用的接口,在通过调用的.原创 2021-01-26 19:51:22 · 3764 阅读 · 0 评论 -
Eureka Client与Eureka Server之间的心跳机制
1.心跳是从什么时候开始的在每一个EurekaClient启动的时候,都会有一个HeartbeatThread的心跳线程,这个就是一个后跳线程,保证默认30秒的时候向EurekaServer发送一个信息的请求,告诉EurekaServer当前的EurekaClient还存活着。eureka.instance.lease-renewal-interval-in-seconds,这个参数可以来配置对应的心跳间隔时间。2.EurekaServer端接收到心跳做了什么操作EurekaServ...原创 2021-01-23 12:15:29 · 1612 阅读 · 0 评论 -
Eureka Server的多级缓存
最近加班比较多,所以没有太多的时间来写博客,希望每位小伙伴都是体谅一下。首先介绍一下EurekaService的多级缓存有哪些,当然在上节的时候也说过了,这里在说一下,readWriteCacheMap(读写缓存)和readOnlyCacheMap(只读缓存)。1.每次EurekaClient是怎么判断是使用的是那个缓存里面的数据的呢?第一步是先从只读缓存里面去获取数据,如果没有再从读写缓存里面去获取数据,这个时间,可能会出现这两个缓存的数据都没有,那么EurekaClient是直接从Eu...原创 2021-01-16 15:08:38 · 440 阅读 · 0 评论 -
Eureka Client怎么获取对应的Eureka Server里面的注册表的信息
EurekaClient在第一次启动的时候会全量拉去服务,这个是毫无疑问的。 EurekaClient在之后的运行过程中是怎么来去EurekaServer里面的注册表的信息的呢?反正一共就是两个答案,一个是全量,一个是增量。每次都全量拉取,肯定是有点浪费带宽的,那么现在确定的是,每次拉取的时候都是增量拉取的。 EurekaClient多长时间会拉取一次增量的数据库,默认的情况下是30秒拉取一次,这个参数是可以配置的,可以使用eureka.client.registry-fetch-interval-se原创 2021-01-08 18:56:49 · 2586 阅读 · 0 评论 -
Redis不经常使用的结构-BitMap、GeoHash、HyperLogLog
首先呢,今天也是元旦的最后一天假期了,大家是不是在元旦的时候也给自己立了好多的目标呢,我呢,今年就立个小目标,争取,以后的每1~2周可以有时间来写一篇文章,不管好坏,希望在明年的这个时候自己的博客里面最少可以看得出来,自己今年的一些努力。这里我就不说Redis的基本结构了,大家在平时的工作的时候都已经使用的滚瓜烂熟了,自己在平时的面试的时候想想也就能知道,我在面试过程中,这个五个基本类型都说不出来的几乎是没有的了。那么就来说说今天的主要的几个数据类型BitMap、GeoHash、HyperLogLog。原创 2021-01-03 22:33:51 · 196 阅读 · 0 评论 -
HashMap链表和红黑树互转原因
2020年最后一天了,我也开始分享一些自己在平时面试的时候遇到的一些问题,希望这些总结可以对小伙伴们有一些帮助。HashMap在JDK1.8之后引入了红黑树的概念,表示若桶中链表元素超过8时(并且数组的大小是64),会自动转化成红黑树;若桶中元素小于等于6时,树结构还原成链表形式。那具体的原因是因为什么呢?1.红黑树的平均查找长度是log(n),长度为8,查找长度为log(8)=3,链表的平均查找长度为n/2,当长度为8时,平均查找长度为8/2=4,这才有转换成树的必要;链表长度如果是小...转载 2020-12-31 11:53:41 · 2831 阅读 · 0 评论