摘要:
AOP是面向切面编程,它允许开发者在不改动业务代码的情况下,横向切入添加新的功能,比如日志等。降低了各业务部分横向的耦合度。 AOP的底层原理是JDK或者CGLIB的动态代理 通过反射机制,在不改变原代码的情况下,实现想要的功能。 什么是AOP AOP(Aspect Oriented Program 阅读全文
posted @ 2025-05-13 21:41
kuki'
阅读(5)
评论(0)
推荐(0)
摘要:
题目 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的 阅读全文
posted @ 2025-05-13 20:50
kuki'
阅读(7)
评论(0)
推荐(0)
摘要:
思路 左右滑动窗口 用set维护一个没有重复的字符的窗口 维护两个指针,left,right,当有重复的时候不断右移left 若不重复,则值放入set 每次更新后,用窗口大小更新res 阅读全文
posted @ 2025-05-13 16:37
kuki'
阅读(8)
评论(0)
推荐(0)
摘要:
问题 你有考虑过像中后台的一个,比如说Kafka那些,你有多个点的数据库的时候,你会怎么考虑,比如说业务中经常会有多中心,很多人都去用这个服务,到时他部署的时候可能为了稳定性,它会可能会多中心,多中心就会存在写完立即就读的一个问题,你有考虑过这多中心的这么快的一个运营部署,你会怎么去设计呢? 对,就 阅读全文
posted @ 2025-05-13 15:52
kuki'
阅读(16)
评论(0)
推荐(0)
摘要:
Redis持久化机制保证了Redis服务器在重启后数据不丢失,通过RDB和AOF文件来恢复内存中原有的数据。 这两种持久化方式可以单独使用,也可以同时使用 说一下RDB RDB持久化通过创建数据集的快照来工作,在指定的时间间隔内将Redis在某一时刻的数据状态保存到磁盘中的一个RDB文件中。 还可以 阅读全文
posted @ 2025-05-13 15:10
kuki'
阅读(11)
评论(0)
推荐(0)
摘要:
在 JVM 中,堆通常分为新生代(Young Generation)和老年代(Old Generation),其比例可通过 -XX:NewRatio 参数控制。常见配置包括: 默认 Server JVM 中 NewRatio=2,即新生代与老年代比例约为 1:2(新生代约占堆的 1/3) 默认 Cl 阅读全文
posted @ 2025-05-13 14:48
kuki'
阅读(82)
评论(0)
推荐(0)
摘要:
Java虚拟机在执行Java程序的过程中会把它管理的内存划分成若干个不同的数据区域。 1 运行时数据区域 1.1 堆(线程共享) 字符串常量池 1.2 线程(Thread) 虚拟机栈 本地方法栈 程序计数器 2 本地内存 2.1 元空间 运行时常量池 2.2 直接内存 阅读全文
posted @ 2025-05-13 14:33
kuki'
阅读(13)
评论(0)
推荐(0)
摘要:
AbstractQueuedSynchronizer的简称,即抽象队列同步器 AQS是一个抽象类,它维护了一个共享变量state和一个线程等待队列,为ReentrantLock等提供底层支持。 AQS的思想是,如果被请求的共享资源处于空闲状态,则当前线程成功获取锁;否则将当前线程加入到等待队列中,当 阅读全文
posted @ 2025-05-13 14:10
kuki'
阅读(22)
评论(0)
推荐(0)
摘要:
ReentrantLock基于AQS实现。而synchronized由JVM内部的Monitor机制实现 ReentrantLock需要手动Lock()和UnLock() synchronized可以在方法和代码块上加锁,ReentrantLock只能在代码块上加锁,但可以指定公平锁还是非公平锁。 阅读全文
posted @ 2025-05-13 13:49
kuki'
阅读(10)
评论(0)
推荐(0)
摘要:
Monitor 是 JVM 内置的同步机制,每个对象在内存中都有一个对象头——Mark Word,用于存储锁的状态,以及 Monitor 对象的指针。 synchronized依赖对象头的mark word进行状态管理,支持无锁、偏向锁、轻量级锁、以及重量级锁。 阅读全文
posted @ 2025-05-13 13:37
kuki'
阅读(32)
评论(0)
推荐(0)
摘要:
线程在遇到同步请求时,会执行 monitorenter 字节码指令, JVM 根据对象头的 mark word 尝试“抢”这把锁; 如果失败,线程就会自动排队、挂起,直到锁可用时再被唤醒并重试获取。 在执行monitorenter时,会尝试获取对象的锁,如果锁的计数器为 0 则表示锁可以被获取,获取 阅读全文
posted @ 2025-05-13 13:26
kuki'
阅读(11)
评论(0)
推荐(0)
摘要:
synchronized 依赖JVM内部的Monitor对象来实现线程同步。使用的时候不用手动lock和unlock,JVM会自动加锁和解锁。 synchronized加锁代码块时 JVM通过 monitorenter、monitorexit两个指令来实现同步 前者表示线程正在尝试获取lock对象的 阅读全文
posted @ 2025-05-13 13:21
kuki'
阅读(10)
评论(0)
推荐(0)

浙公网安备 33010602011771号