自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 面试必问:redis底层数据结构

前言redis是通过对象来表示存储的数据的,redis 也是键值对存储的方式,那么每存储一条数据,redis至少会生成2个对象,一个是redisObject,用来描述具体数据的类型的,比如用的是那种数据类型,底层用了哪种数据结构,还有一个对象就是具体存储的数据。这个存储对象数据就是通过redisObject这个对象的指针来指引的。Redis为什么要使用2个对象?两个对象的好处。

2024-04-08 21:18:27 613

原创 zset 面试常问

面试官常问开头,你能说下redis数据结构吗 >>然后向下👇引起zset >>这样的话就有利于快速寻找列表收尾节点,但是对于其他寻找正常的元素。比如元素1、元素2等等 效率也没有很高效,只能一个个遍历。跳表在链表基础上增加多级索引,通过多级索引位置的跳转,实现了快速查找元素。如:针对一张普通的链表查找元素27该怎么查找呢?只能从链表的头部往后依次遍历如图:下面这张图利用快表快速和找到 -> 70整个查找过程就是在多级索引之间跳来跳去,最后定位到了这个元素,所以又称为跳表如图:注:当数据量特别大的时候,跳表

2024-03-30 18:09:37 408 1

原创 RabbitMQ消息队列面试必问

(1)解耦:将系统按照不同的业务功能拆分出来,消息生产者只管把消息发布到 MQ 中而不用管谁来取,消息消费者只管从 MQ 中取消息而不管是谁发布的。消息生产者和消费者都不知道对方的存在;(2)异步:主流程只需要完成业务的核心功能;对于业务非核心功能,将消息放入到消息队列之中进行异步处理,减少请求的等待,提高系统的总体性能;(3)削峰/限流:将所有请求都写到消息队列中,消费服务器按照自身能够处理的请求数从队列中拿到请求,防止请求并发过高将系统搞崩溃;

2024-03-18 23:51:28 942

原创 Java 多线程面试必问

回答:当多个线程同时访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那就称这个对象是线程安全的。【摘自深入理解Jvm虚拟机】实现线程安全的方式有三大种方法,分别是互斥同步、非阻塞同步和无同步方案。互斥同步:同步是指多个线程并发访问共享数据时,保证共享数据在同一时刻只被一条(或一些,当使用信号量的时候)线程使用。

2024-03-18 19:16:51 1845

原创 Java 虚拟机面试必问

回答:Java的运行时区主要包含堆、方法区、虚拟机栈、程序计数器和本地方法栈,其中堆和方法区是所有线程所共有的。而且虚拟机栈、程序计数器和本地方法栈是线程所私有的。图片:堆:存放对象实例方法区:用来存储已经被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。虚拟机栈:(生命周期与线程相同)Java中每个方法执行的时候,Java虚拟机都会同步创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等信息。

2024-03-18 17:15:13 882

原创 Java 集合面试必问

回答:数组下标的计算方法是(n-1)& hash,取余(%)操作中如果除数是2的幂次则等价于与其除数减一的与(&)操作(也就是说 hash%length==hash&(length-1)的前提是 length 是2的 n 次方;并且采用二进制位操作 &,相对于%能够提高运算效率,这就解释了 HashMap 的长度为什么是2的幂次方。追问:HashMap的put方法说一下。回答:通过阅读源码,可以从jdk1.7和1.8两个方面来回答1.根据key通过哈希算法与与运算得出数组下标。

2024-03-18 16:42:01 1001

原创 深入理解HashMap

这就是它的原因所在。如果此位置上已经存在链表,那么遍历链表,如果链表上某个节点的 key 与当前key 进行 equals 比较后结果为 true,则把原来节点上的value 返回,将当前新的 value替换掉原来的value,如果遍历完链表,没有找到key 与当前 key equals为 true的,就把刚才封装的新的 Entry中next 指向当前链表的始节点,也就是说当前节点现在在链表的第一个位置,简单来说即,先来的往后退。这个时候你必须要想到,如果两个人名字一样可咋办,查到的到底是谁的信息呢?

2024-03-18 16:25:39 903

原创 Java 序列化和反序列化

super();如上代码:long serialVersionUID类型的常量。成员变量age被标记为transient。serialVersionUID 是一个常数,用于唯一标识可序列化类的版本。从输入流构造对象时,JVM 在反序列化过程中检查此常数。如果正在读取的对象的 serialVersionUID 与类中指定的序列号不同,则 JVM 抛出InvalidClassException。

2024-03-18 16:07:02 824

原创 什么是 NIO? NIO 和 BIO、AIO 之间的区别是什么?

1 BIO,NIO,AIO都有什么区别,NIO的原理是什么?BIOBIO:传统的网络通讯模型,就是BIO,同步阻塞IO, 其实就是服务端创建一个ServerSocket, 然后就是客户端用一个Socket去连接服务端的那个ServerSocket, ServerSocket接收到了一个的连接请求就创建一个Socket和一个线程去跟那个Socket进行通讯。

2024-03-18 15:55:36 1092

原创 zookeeper实现分布式锁

这种方法虽然能达到目的,但是会有一个问题,如下图所示,假设有非常多的节点需要等待获得锁,那么等待的方式自然是使用watcher机制来监听/lock节点的删除事件,一旦发现该节点被删除说明之前获得锁的节点已经释放了锁,那么此时剩下的B、C、D节点会同时收到删除事件从而去竞争锁,这个过程会产生惊群效应。多个应用程序去抢占锁资源时,只需要在指定节点上创建一个 /Lock 节点,由于Zookeeper中节点的唯一性特性,使得只会有一个用户成功创建 /Lock 节点,剩下没有创建成功的用户表示竞争锁失败。

2024-03-18 15:38:54 379

原创 JVM 面试必问 经典试题

虚拟机把描述类的数据加载到内存里面,并对数据进行校验、解析和初始化,最终变成可以被虚拟机直接使用的class对象;类加载器是指:通过一个类的全限定性类名获取该类的二进制字节流叫做类加载器;类加载器分为以下四种:启动类加载器:用来加载java核心类库,无法被java程序直接引用;扩展类加载器:用来加载java的扩展库,java的虚拟机实现会提供一个扩展库目录,该类加载器在扩展库目录里面查找并加载java类;系统类加载器:它根据java的类路径来加载类,一般来说,java应用的类都是通过它来加载的;

2023-05-06 00:01:49 249

原创 Http1.0相对于Http1.1优化

HTTP1.0最早在网页中使用是在1996年,那个时候只是使用一些较为简单的网页上和网络请求上,而HTTP1.1则在1999年才开始广泛应用于现在的各大浏览器网络请求中,同时HTTP1.1也是当前使用最为广泛的HTTP协议。主要区别主要体现在:长连接 : 在HTTP/1.0中,默认使用的是短连接,也就是说每次请求都要重新建立一次连接。HTTP 是基于TCP/IP协议的,每一次建立或者断开连接都需要三次握手四次挥手的开销,如果每次请求都要这样的话,开销会比较大。因此最好能维持一个长连接,可以用个长连.

2022-05-18 16:03:24 170

原创 解决websocket不能与服务器建立连接问题

我直接把域名去掉 就可以建立连接

2022-05-18 15:37:42 1882 1

原创 解决 程序包 com.sun.rowset不存在的问题

解决 程序包 com.sun.rowset不存在的问题如图:我解决的原因就是:因为java版本我装的16.1的所以太高 有些类过时了 只需要将java版本降到8 jdk1.8既可以

2021-07-13 22:40:16 740

原创 解决Failed to bind properties under ‘spring.cloud.stream.binders’ to java.util.Map<java.lang.String, o

解决Failed to bind properties under ‘spring.cloud.stream.binders’ to java.util.Map<java.lang.String, org.springframework.cloud.stream.config.BinderProperties>:Reason: No converter found capable of converting from type [java.lang.String] to type [java.

2021-07-11 19:23:56 593

原创 解决Cannot resolve org.springframework.cloud:spring-cloud-gateway-core:2.2.1.RELEASE问题

解决Cannot resolve org.springframework.cloud:spring-cloud-gateway-core:2.2.1.RELEASE问题这是因为网络的原因 导包没有成功导入 只需要根据爆红的地址找到对应的maven 删除对面的包

2021-07-11 01:32:40 4030

空空如也

空空如也

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

TA关注的人

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