- 博客(136)
- 收藏
- 关注
原创 八股文Java基础
Java 能支持跨平台,主要依赖于 JVMJVM也是一个软件,不同的平台有不同的版本。我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。JVM就是负责将字节码文件翻译成特定平台下的机器码然后运行。也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。而这个过程中,我们编写的Java程序没有做任何改变,仅仅是通过JVM这一”中间层“,就能在不同平台上运行,真正实现了”一次编译,到处运行“的目的。
2025-03-23 18:40:54
880
原创 八股文Redis
listpack 头包含两个属性,分别记录了 listpack 总字节数和元素数量,listpack 没有压缩列表中记录前一个节点长度的字段了,listpack 只记录当前节点的长度,当我们向 listpack 加入一个新元素的时候,不会影响其他节点的长度字段的变化,从而避免了压缩列表的连锁更新问题。Redis 选择「惰性删除+定期删除」这两种策略配和使用,以求在合理使用 CPU 时间和避免内存浪费之间取得平衡。Redis 的惰性删除策略// 判断 key 是否过期if (!....
2025-03-23 15:00:48
1097
原创 八股Spring
IoC控制反转,它是一种创建和获取对象的技术思想,传统开发过程中,我们需要通过new关键字来创建对象。使用IoC思想开发方式的话,我们不通过new关键字创建对象,而是通过IoC容器来帮我们实例化对象。通过IoC的方式,可以大大降低对象之间的耦合度。所谓控制就是对象的创建、初始化、销毁。创建对象:原来是 new 一个,现在是由 Spring 容器创建。初始化对象:原来是对象自己通过构造器或者 setter 方法给依赖的对象赋值,现在是由Spring 容器自动注入。(DI)销毁对象。
2025-03-22 21:23:26
871
原创 八股JAVA并发
AQS全称为AbstractQueuedSynchronizer,是Java中的一个抽象类。AQS是一个用于构建锁、同步器、协作工具类的工具类(框架)。AQS核心思想是,如果被请求的共享资源空闲,那么就将当前请求资源的线程设置为有效的工作线程,将共享资源设置为锁定状态;如果共享资源被占用,就需要一定的阻塞等待唤醒机制来保证锁分配。这个机制主要用的是CLH队列的变体实现的,将暂时获取不到锁的线程加入到队列中。
2025-03-22 15:31:13
701
原创 八股JVM
根据 JDK 8 规范,JVM 运行时内存共分为虚拟机栈、堆、元空间、程序计数器、本地方法栈五个部分。还有一部分内存叫直接内存,属于操作系统的本地内存,也是可以直接操作的。虚拟机栈每个线程都有自己独立的 Java 虚拟机栈,生命周期与线程相同。每个方法在执行时都会创建一个栈帧,用于方法的相关信息。可能会抛出 StackOverflowError 和 OutOfMemoryError 异常。堆是 JVM 中最大的一块内存区域,被所有线程共享,在虚拟机启动时创建,用于存放对象实例。从内存回收角度,堆被划。
2025-03-22 11:00:27
800
原创 八股文MYSQL
MVCC允许多个事务同时读取同一行数据,而不会彼此阻塞,每个事务看到的数据版本是该事务开始时的数据版本。这意味着,如果其他事务在此期间修改了数据,正在运行的事务仍然看到的是它开始时的数据状态,从而实现了非阻塞读操作。「读提交」隔离级别是在「每个语句执行前」都会重新生成一个 Read View;「可重复读」隔离级别是在事务开启t时,生成一个 Read View,然后整个事务期间都在用这个 Read View。m_ids :指的是在创建 Read View 时,当前数据库中「活跃事务」的事务 id 列表。
2025-03-21 22:03:53
883
原创 八股文计网
OSI七层模型:应用层、表示层、会话层、传输层、网络层、数据链路层物理层。(应表会传网数物)应用层,负责给应用程序提供统一的接口;表示层,负责把数据转换另一种系统能识别的格式;(JPEG)会话层,负责建立、终止应用程序之间的通信会话;(RPC)传输层,负责端到端的数据传输;(TCP/UDP)网络层,负责选择合适的路由 确保数据及时发送;(IP)数据链路层,负责将网络层的数据包装成帧和 MAC 寻址;物理层,负责在物理网络中传输数据帧;
2025-03-21 17:10:01
743
原创 <02.28>排序和数据结构的实现
如果要返回队首元素:先判断StackPop是否为空 如果不为空直接弹出StackPop中的栈顶元素如果为空则将StackPush中的元素全部压入StackPop中。如果要弹出队首元素:将StackPush中的元素全部压入StackPop中 然后弹出StackPop中的栈顶元素。定义两个栈 命名为StackPush StackPop。我们将元素全部压入StackPush中。
2025-02-28 14:42:19
270
原创 <02.26>Leetcode
想想为什么要a走b的路b走a的路 因为这样到达相交点的话是同时的(路程才是一样的)这样能保证第二圈就相遇了 如果各走各的路很难相遇。两个无交点的链表也有一个null交点。慢指针一定还没有走完一圈。
2025-02-26 22:01:34
287
空空如也
如何理解这两种DFS写法
2024-01-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人