- 博客(57)
- 收藏
- 关注
原创 jvm垃圾收集器之七种武器
老年代单线程收集器,Serial 收集器的老年代版本,使用“标记-整理”(Mark-Compact)算法来进行垃圾收集。然后在整理阶段,将所有存活的对象向一端移动,从而清理出连续的空闲内存空间,减少内存碎片。使用-XX:+UseParNewGC(新生代使用并行收集器,老年代使用串行回收收集器) 或者-XX:+UseConcMarkSweepGC(新生代使用并行收集器,老年代使用 CMS):对于有限的资源环境,Serial 收集器由于其简单的算法和单线程的执行方式,在垃圾收集上能够达到一定的效率。
2024-02-07 15:39:26 1737
原创 解锁ArrayBlockingQueue奥秘:深入源码的精彩之旅
ArrayBlockingQueue 是 BlockingQueue 接口的一个实现类,它基于数组实现了一个有界阻塞队列。创建 ArrayBlockingQueue 实例时需要指定队列的容量,队列的大小是固定的,无法动态增长。
2024-06-05 21:48:46 820 1
原创 揭秘Redis秘籍:SDS—编织数据的动态字符串魔法
Redis中的SDS(Simple Dynamic String,简单动态字符串)是一种专为Redis设计的字符串表示方式,旨在改进C语言中原生字符串的局限性。
2024-06-05 21:17:14 358
原创 线程创建的4种方式
这4种方式都可以用来创建线程,但是使用的场景和优缺点不同。继承Thread类和实现Runnable接口是最基本的两种方式,使用Callable接口可以获取线程执行结果,使用线程池Executor框架可以更好地管理和复用线程,提高性能和效率。需要根据具体的业务场景和需求选择合适的方式。
2024-02-26 17:47:14 1235
原创 线程的基本属性和方法
线程有一些基本属性和方法,包括id、name、优先级、状态、是否daemo线程、sleep方法、yield方法、join方法、过时方法等,我们简要介绍。
2024-02-26 11:52:05 1009
原创 HotSpot虚拟机对象探秘
建立对象是为了使用对象,我们的Java程序需要通过栈上的reference数据来操作堆上的具体对象。由于reference类型在Java虚拟机规范中只规定了一个指向对象的引用,并没有定义这个引用应该通过何种方式去定位、访问堆中的对象的具体位置,所以对象访问方式也是取决于虚拟机实现而定的。目前主流的访问方式有使用句柄和直接指针两种。
2024-02-22 12:09:07 927
原创 jvm垃圾收集器-三色标记算法
在三色标记算法中,垃圾回收器会从根对象开始,将根对象标记为灰色,然后遍历对象引用关系,将灰色对象引用的对象标记为灰色,直到无法再找到新的灰色对象为止。接着,垃圾回收器将所有未标记为灰色的对象标记为黑色,表示这些对象是活跃的。最后,垃圾回收器将白色对象认定为垃圾,进行回收。
2024-02-21 09:22:43 1635
原创 mybatis PropertyTokenizer 属性标记器
PropertyTokenizer 是 MyBatis 中的一个工具类,主要用于处理属性表达式(property expressions)。在 MyBatis 中,属性表达式是用于访问对象属性的一种语法,类似于 Java 中的点号操作符。例如,对于一个对象 user,可以使用属性表达式 "user.name" 来访问其 name 属性。PropertyTokenizer 类提供了一些方法来解析和处理这样的属性表达式。
2024-02-21 09:22:13 437
原创 jvm几个常见面试题整理
TLAB表示JVM为每个线程分配了一个私有缓存区域,这块缓存区域包含在Eden区内。简单说TLAB就是在堆内存中的Eden区分配了一块线程私有的内存区域
2024-02-07 16:58:43 1127
原创 jvm垃圾收集器特性描述
在Java虚拟机(JVM)中,垃圾回收器(Garbage Collector, GC)是自动管理内存的重要组成部分,其主要职责是识别和删除不再被使用的对象,以释放和回收内存资源。随着技术的发展,为了适应不同的应用场景和性能需求,JVM提供了多种垃圾回收器,每种回收器都有其特定的算法和使用场景
2024-02-06 16:34:52 808
原创 leetCode 1333. 餐厅过滤器
在按照 veganFriendly = 1, maxPrice = 50 和 maxDistance = 10 进行过滤后,我们得到了餐馆 3, 餐馆 1 和 餐馆 5(按评分从高到低排序)。餐馆 1 [id=1, rating=4, veganFriendly=1, price=40, distance=10]餐馆 5 [id=5, rating=1, veganFriendly=1, price=15, distance=1]两个过滤器,它们分别考虑餐厅的价格因素和距离因素的最大值。
2023-09-28 09:04:48 128
原创 DefaultParameterHandler 参数处理器
ParameterHandler和其默认实现类DefaultParameterHandler的简单说明。
2023-09-26 11:52:04 232
原创 leetCode 面试题 02.05. 链表求和
给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。
2023-04-24 10:05:26 72
原创 leetCode 1736. 替换隐藏数字得到的最晚时间
给你一个字符串time,格式为 hh:mm(小时:分钟),其中某几位数字被隐藏(用?表示)。有效的时间为00:00到23:59之间的所有时间,包括00:00和23:59。替换time中隐藏的数字,返回你可以得到的最晚有效时间。
2023-04-12 10:46:03 64
原创 leetCode 2586. 统计范围内的元音字符串数
"artro" 是一个元音字符串,因为它以 'a' 开头并以 'o' 结尾。- "are" 是一个元音字符串,因为它以 'a' 开头并以 'e' 结尾。- "aeo" 是一个元音字符串,因为它以 'a' 开头并以 'o' 结尾。- "ooo" 是一个元音字符串,因为它以 'o' 开头并以 'o' 结尾。- "u" 是一个元音字符串,因为它以 'u' 开头并以 'u' 结尾。如果字符串以元音字母开头并以元音字母结尾,那么该字符串就是一个。- "amy" 不是元音字符串,因为它没有以元音字母结尾。
2023-04-11 09:16:45 199
原创 leetCode 1456. 定长子串中元音的最大数目
给你字符串s和整数k。请返回字符串s中长度为k的单个子字符串中可能包含的最大元音字母数。英文中的元音字母为(a,e,i,o,u)。
2023-04-11 09:04:42 230
原创 leetCode 1019. 链表中的下一个更大节点
给定一个长度为n的链表head对于列表中的每个节点,查找下一个更大节点的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值严格大于它的值。
2023-04-10 11:02:15 116
原创 LeetCode 2399. 检查相同字母间的距离
给你一个下标从0开始的字符串s,该字符串仅由小写英文字母组成,s中的每个字母都恰好出现两次。另给你一个下标从0开始、长度为26的的整数数组distance。
2023-04-09 13:08:52 117
原创 leetCode 1053. 交换一次的先前排列
原题描述给你一个正整数数组arr(可能存在重复的元素),请你返回可在(交换两数字arr[i]和arr[j]的位置)后得到的、按字典序排列小于arr的最大排列。如果无法这么操作,就请返回原数组。
2023-04-08 14:53:39 115
原创 leetCode 1518. 换水问题
1518. 换水问题题解: java 对数学中除法和取模的运用 注释清晰超市正在促销,你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始,你一共购入了 numBottles 瓶水。如果喝掉了水瓶中的水,那么水瓶就会变成空的。给你两个整数 numBottles 和 numExchange ,返回你 最多 可以喝到多少瓶水。对数学中除法和取模的运用,使用除法(/)可以计算当前水瓶可以兑换多少瓶水,取模(%)计算不满足numExchange的水瓶。计算可以兑换水的数量。计算兑换水之后空瓶的数量。
2023-03-27 10:04:58 205
原创 leetCode 2395. 和相等的子数组
长度为2的子数组和,当哈希表存在相同的值时,则存在,结束遍历返回ture,遍历结束都不存在相同的值,则不存在,返回false。判断元素和是否已经存在哈希表中,存在机满足题目要求返回true,不存在就添加到哈希表中。如果这样的子数组存在,请返回 true,否则返回 false。遍历数组时已知向前不会退,确保了这两个子数组起始位置的。注意,这两个子数组起始位置的下标必须。开始的整数数组 nums ,判断是否存在。是一个数组中一段连续非空的元素组成的序列。长度为 2 的子数组且它们的。,即是两个相邻元素的和。
2023-03-26 10:13:31 154
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人