自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

王二小的博客

总结面试中遇到的面试题和平时工作中的问题

  • 博客(18)
  • 收藏
  • 关注

原创 没事瞎闲聊

注:这篇博客会不定时更新1. 保险1.1该不该买?IT行业、程序员的标签:高薪、加班、熬夜。不能说每个公司都会是996吧,但是我相信大多数程序员都是经历过996的,我室友,曾经换了3~5家公司,当我们一坐就是一天的时候,几乎没有时间运动,那么有的人会说,周末的时候可以去运动一下,那么又有多人少在上班上了好多天之后,不想睡一个懒觉的呢?我相信大多数人跟我一样,肯定到了周末不会去运动。我相信大家都会时不时的看到新闻上会有XXX公司的程序员猝死一类的新闻,那么剩下的就是我们的家人了,不管你是买房.

2021-02-02 19:43:52 293

原创 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 2717

原创 ArrayList源码分析

咱们主要分析一下,实例化的过程和数组扩容的过程。为什么要看这个呢,这几天面试的时候,发现很多面试的人并不知道初始化数组长度是多少,每次扩容是多少,所以我也抱着怀疑的态度,自己看一下ArrayList的源码。首先我看看一下自己的JDK的版本信息在提前准备好例子,可以更好的看源码。1.实例化的过程直接进去ArrayList()的方法里面,可以看到下面的这个图。这里我们就发现我们如果使用默认的实例化方式的话,其实数组里面是个空数组的。还有一个是带Integer的初始化方式,

2021-04-23 18:44:14 110

原创 数据结构的算法面试题一

1.给定一个数组arr,长度为N,arr可以从中间人和一个位置被切成左右两半,但是规定左右两部分必须有数字,那么在不同的切法下,都会有左部分和右部分最大差值的绝对值,请返回所有的切法下,这个值最大是什么其实大家第一个想法就是找到最大值最小值,这两个肯定是最大值。切成的两个数组里面,这两个里面最大值肯定能在一个数组里面,那么另外一个肯定在另外一个数组么?这个数组里面的最大值都是一样的,都是最小值么?这个肯定不是的,这样一刀切的时候并不能报告数据旁边的大小是什么。如果int[]arr={1...

2021-03-12 18:56:08 212

原创 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 648

原创 为什么Tomcat不用遵循双亲委派

1. 什么是双亲委派一般大家我应该先写一篇怎么把.class加载到JVM里面的一篇文档,但是我发现有好多这样的文章了,所以这里就没有必要给大家讲解一下怎么加载的过程了这里引用一张图,大家看过其他人的博客在看到这张图,就应该知道,一个class怎么加载到JVM里面了。接下来就是双亲委派了,在了解双亲委派之前呢,大家首先需要了解几个类加载器。(1)启动类加载器-》BootstrapClassLoader它主要负责加载我们在机器上安装的额Java目录下的核心类。不管我们是做Java开发,.

2021-02-25 14:22:33 287

原创 基于kubernetes构建CI/CD的流程(4)-GitLab和GitLab-Runner的搭建

1.安装虚拟机还是根据之前的内容安装一个虚拟机,并设置好对应的IP等信息

2021-02-02 20:08:18 391

原创 基于kubernetes构建CI/CD的流程(4)-Kubernetes集群的搭建

什么是Kubernetes?这里就不做解释了,大家可以去百度看一下,咱们这里主要来讲解怎么在我们的虚拟机里面搭建Kubernetes集群。1. 基础安装首先准备三台虚拟机,配置好对应的IP地址。1.1 安装JDK上面三个就是我配置好的虚拟机,首先我们先安装java环境yum install -y java使用java -version看看我们的环境是不是都安装好了。1.2 安装Docker接下来因为Kubernetes依赖Docker,这里我们安装Docker环

2021-02-02 16:32:05 379

原创 基于kubernetes构建CI/CD的流程(3)-Harbor私有仓库的安装

Nexus,我就不多做介绍了。镜像仓库有很多种,一般公司都是使用的Harbor,但是呢,Harbor比较复杂,我也试图安装了好几次,最后都没有成功,这次选择了使用Nexus。1.安装虚拟机根据之前的步骤去安装好一台虚拟机,记得需要把对应的IP设置成静态的IP防止后面的时候重启后IP地址找不到了。这个就是我安装好了之后的IP地址。注:(1)如果没有安装wget,需要提前安装一下。(2)Nexus是基于JDK的,我们也需要提前安装一下JDK2.安装Nexus第一步:下载Ne.

2021-02-02 16:31:16 197

原创 基于kubernetes构建CI/CD的流程(2)-Docker和Jenkins的安装

1. 安装Docker正常的时候我们可以直接使用yum install docker就可以直接安装docker了,但是我之前试过了,安装的docker是20.x的版本,在后面安装kubernetes的时候可能会报错,所以这里我们选择18.x的版本。device-mapper-persistent-data是Linux下的一个存储驱动,Linux上的高级存储技术。Lvm的作用则是创建逻辑磁盘分区。这里我们使用CentOS的Yum包管理器安装两个依赖:yum install ...

2021-02-02 16:30:25 213

原创 基于kubernetes构建CI/CD的流程(1)-虚拟机的安装

这篇文章,可能会比较长,还请每一位搜到的小伙伴能认真的读完。

2021-02-02 16:28:38 280

原创 接口幂等性要怎么防止

接口的幂等性是什么?直接百度就可以出来,百度百科中是这么解释幂等的,在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。那么在我们平时开发的时候这种接口幂等性遇到的多么?我经历的这几家公司差不多每次都会遇到这种因为多次操作导致接口不幂等的情况,每次也很无奈的去直接操作数据库,把多余的数据删除了。前端时间,我所负责的一个业务就出现了接口频繁操作,导致数据重复的情况,而且持续了好长一段时间,测试大佬们也每天都在催着我解决这个问题。等我看完代码的时候我发现,我在核心的代码里面

2021-02-02 16:25:54 381

原创 简述Ribbon的原理

1.Ribbon的大体流程一般我们在使用SpringCloud框架的时候并不知道Ribbon是怎么使用的,那么如果我们想要去研究它,应该从什么地方入手呢?如果在没有使用Feign调用接口的时候,我们肯定会选择RestTemplate来调用,Ribbon给提供了一个负载均衡的一个标注@LoadBalanced,可以加在RestTemplate上,这个就是我们接下来要看Ribbon的入口了。@LoadBalanced底层其实就是个拦截器,拦截了所有的RestTemplate调用的接口,在通过调用的.

2021-01-26 19:51:22 3668

原创 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 1490

原创 Eureka Server的多级缓存

最近加班比较多,所以没有太多的时间来写博客,希望每位小伙伴都是体谅一下。首先介绍一下EurekaService的多级缓存有哪些,当然在上节的时候也说过了,这里在说一下,readWriteCacheMap(读写缓存)和readOnlyCacheMap(只读缓存)。1.每次EurekaClient是怎么判断是使用的是那个缓存里面的数据的呢?第一步是先从只读缓存里面去获取数据,如果没有再从读写缓存里面去获取数据,这个时间,可能会出现这两个缓存的数据都没有,那么EurekaClient是直接从Eu...

2021-01-16 15:08:38 399

原创 Eureka Client怎么获取对应的Eureka Server里面的注册表的信息

EurekaClient在第一次启动的时候会全量拉去服务,这个是毫无疑问的。 EurekaClient在之后的运行过程中是怎么来去EurekaServer里面的注册表的信息的呢?反正一共就是两个答案,一个是全量,一个是增量。每次都全量拉取,肯定是有点浪费带宽的,那么现在确定的是,每次拉取的时候都是增量拉取的。 EurekaClient多长时间会拉取一次增量的数据库,默认的情况下是30秒拉取一次,这个参数是可以配置的,可以使用eureka.client.registry-fetch-interval-se

2021-01-08 18:56:49 2537

原创 Redis不经常使用的结构-BitMap、GeoHash、HyperLogLog

首先呢,今天也是元旦的最后一天假期了,大家是不是在元旦的时候也给自己立了好多的目标呢,我呢,今年就立个小目标,争取,以后的每1~2周可以有时间来写一篇文章,不管好坏,希望在明年的这个时候自己的博客里面最少可以看得出来,自己今年的一些努力。这里我就不说Redis的基本结构了,大家在平时的工作的时候都已经使用的滚瓜烂熟了,自己在平时的面试的时候想想也就能知道,我在面试过程中,这个五个基本类型都说不出来的几乎是没有的了。那么就来说说今天的主要的几个数据类型BitMap、GeoHash、HyperLogLog。

2021-01-03 22:33:51 157

转载 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 2717

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除