- 博客(44)
- 收藏
- 关注
原创 桌面端 codex 登录如何跳过电话号码短信验证, 无需升级订阅, 无需境外电话号码, 无需虚拟号接码
安装桌面端的 codex 后登录跳转网页通常会出现电话号码短信验证页, 很多人会卡在这里. 接下来将讲述如何跳过验证并正常使用.注: 如果失败, 尝试退出登录后重新登录再导出认证信息.
2026-11-03 23:55:56
200
1
原创 java弱引用WeakReference最直白的理解
当目标对象不再被强引用或软引用保持可达,仅通过弱引用可达时,GC 在处理弱引用时会清除指向该对象的弱引用,使其具备被回收的条件。需要注意,弱引用被清除和对象实际完成内存回收,并不一定发生在同一时刻。因此,弱引用常用于不希望引用关系阻止对象回收的场景,而软引用则曾常用于内存敏感型缓存等场景。这样的引用对象来表达弱引用语义,并由 JVM 配合垃圾回收机制进行特殊处理。对象本身,而是它与目标对象之间的一种特殊引用关系。的字段修饰符,不能直接将普通字段声明为弱引用。所谓弱引用,指的并不是。
2026-10-15 15:27:37
80
原创 Java 并发编程:深入理解 synchronized 的使用与原理
是 Java 提供的内置同步机制,主要用于解决多线程环境下的线程安全问题。当多个线程同时访问共享数据时,如果没有适当的同步控制,就可能出现数据竞争、更新丢失等问题。例如,多个线程同时对一个共享变量执行count++,由于该操作并不是原子的,最终结果可能小于预期值。count++;假设两个线程各自执行 10000 次,理论上最终结果应该是 20000,但实际上可能小于 20000。原因是count++并不是一个原子操作,它大致包含读取、计算和写入三个步骤。
2026-10-12 14:44:36
167
原创 HashMap 的 getOrDefault, putIfAbsent, computeIfAbsent, computeIfPresent 方法在 key 存在但值为 null 时的表现
当 HashMap 中的 key 存在, 但对应的值为 null 时, 调用 computeIfPresent 不会将新值添加进去. 即只有当 key 存在且对应的值不为 null 时该方法才会执行赋值. (即值为 null 的 key 不判定为 present)当 HashMap 中的 key 存在, 但对应的值为 null 时, 调用 putIfAbsent 会将新值添加进去. 即当 key 不存在或对应的值为 null 时该方法均会执行赋值. (即值为 null 的 key 判定为 absent)
2026-09-16 15:56:18
221
原创 java stream 的 findFirst 及 findAny 方法遇到 null 元素时会出现 NullPointerException
【代码】java stream 的 findFirst 及 findAny 方法遇到 null 元素时会出现 NullPointerException。
2026-08-05 14:02:26
14
原创 深入理解 Java volatile:从可见性到内存屏障
编译器会优化代码顺序CPU 会乱序执行JVM JIT 会优化执行路径int a = 1;int b = 2;b = 2a = 1单线程结果不变JVM 就允许优化。这叫:指令重排序(Instruction Reordering)不能。可见性有序性原子性让一个线程写入的数据对其他线程立即可见“看得见”“抢得到”volatile 保证可见性synchronized 保证原子性这是理解 Java 并发最核心的一组概念。
2026-06-02 10:02:32
236
原创 MySQL 实战:如何根据 ID 将表 B 的字段更新到表 A
跨表更新数据。虽然 MySQL 提供了多种写法,但从稳定性和性能角度来看:是最推荐的标准解法同时要特别注意:⚠️ 子查询写法在未匹配时会写入 NULL⚠️ 这是很多线上事故的常见原因。
2026-04-29 17:08:07
268
原创 HttpServletResponse 中 Header 与 OutputStream 的正确使用顺序(避坑指南)
👉Header 是“声明”,Body 是“内容”,声明必须在内容之前文件下载接口代理网关透传“只要开始写流,就别再碰 header”
2026-04-28 16:24:12
421
原创 java stream 的 findFirst 和 findAny 踩坑点
当集合中包含null元素, 而使用 findFirst() 或 findAny() 方法刚好筛选到该元素时, 会触发 java.lang.NullPointerException , 因为最后的结果是通过 Optional.of(T value) 方法转换的, 该方法要求 value 不能为空.
2026-04-20 17:32:26
70
原创 java中stream的Collectors.toMap常见踩坑点
如果转换为map后可能出现null的value, 会抛出异常, 需先过滤掉null值value.如果转换为map后可能出现重复key, 默认会抛出异常, 需指定合并策略.如果转换为map后可能出现null的key, 不会抛出异常.
2026-04-16 10:13:35
41
原创 为什么 Java 编译器要求 catch 块显式 return 或 throw
对于有返回值的方法中的try…块的所有路径都要有显示的return或throw, 编译器不会分析方法内部逻辑.的规则,编译器只依赖语法和方法签名来判断返回路径, 而不是去智能推断所有方法内部的实际行为。这是因为java编译器遵循。
2026-03-24 16:44:39
43
原创 BigDecimal转字符串方法toString(),toPlainString(),toEngineeringString()区别
toString() 或 toEngineeringString() 方法转换的字符串有不确定性, 在数值特别大或特别小的时候可能会以指数形式表示, 因此在需要全数字处理的场景下可能会出现问题, 如始终需要原样输出数字时建议使用 toPlainString() .
2026-02-06 17:10:48
184
原创 java调用可变参数方法时不传该参数, 接收到的是空数组还是null
【代码】java调用可变参数方法时不传该参数, 接收到的是空数组还是null。
2026-01-29 10:34:57
243
原创 java中Date, LocalDate/LocalTime/LocalDateTime与时区
Date本身不包含时区, 它内部通过整型成员变量存储从「1970年1月1日 00:00:00 UTC」开始计算的毫秒数.
2025-11-21 11:00:44
237
原创 HashMap在调用getOrDefault, putIfAbsent, computeIfAbsent时, 若key对应的value值为null会如何
说明: 返回指定键映射到的值,如果此映射不包含该键的映射,则返回defaultValue。示例:结论:1. 当key对应的value为null时, 返回的是null2. 当key不存在时返回defaultValue3. 该方法相当于:2. putIfAbsent(K key, V value)说明: 如果指定的键尚未与值关联(或映射为null),则将其与给定的值关联并返回null,否则返回当前值。示例:结论:1. 当key对应的value为null, 或key不存在时, 设置key为va
2025-03-14 11:04:06
601
原创 java方法可变参数传入null值会被如何接收
java方法中的可变参数相当于一个数组, 当调用该方法并传入null时, 实际在方法中接收的是null还是空数组还是一个包含null元素的数组?
2025-03-04 09:52:20
325
原创 线程池关闭方法shutdown()与shutdownNow()
其中 awaitTermination(long timeout, TimeUnit unit) 方法为阻塞等待一段时间后, 返回线程池是否已关闭(返回值: true-已关闭, false-未关闭), 它本身不会发起关闭线程池操作.shutdown() 是将已提交的任务执行完后再关闭。shutdownNow() 是立即尝试中断所有任务。
2025-03-03 14:38:24
495
原创 定时任务线程池ScheduledExecutorService/ScheduledThreadPoolExecutor的核心线程数对提交任务数的影响
ScheduledThreadPoolExecutor与传统线程池不同处之一在于它只支持设置核心线程数corePoolSize(不支持设置maximumPoolSize, 实际该参数无效), 它内部维护的队列为DelayedWorkQueue.
2025-03-03 11:18:22
302
原创 java反射getDeclaredFields/getDeclaredField与getFields/getField的区别
如何获取本类(private, default, protected, public)及父类/超类(private, default, protected, public)的所有字段?(2) 在(1)的基础上, 该字段可以是同时被 static, final, volatile, transient 中的一种或几种修饰。(2) 在(1)的基础上, 该字段可以是同时被 static, final, volatile, transient 中的一种或几种修饰。(1) 能且仅能获取到。
2025-02-18 10:01:49
712
原创 java类成员变量直接赋值, 代码块赋值, 构造函数赋值的区别及执行顺序
【代码】java类成员变量直接赋值, 代码块赋值, 构造函数赋值的区别及执行顺序。
2025-02-17 10:56:36
322
原创 java按集合中对象的某几个属性去重
由于该方式需要修改原实体类, 并可能会影响到其他使用hashCode及equals的功能而引起bug, 故不推荐.
2025-02-14 16:44:53
396
原创 如何下载m3u8视频到本地
下载安装VLC media player, 地址: 使用chrome浏览器, 打开F12, 打开播放视频的网页, 在Network中筛选带有m3u8关键字的URL, 如下图所示:打开VLC播放器, 选择 媒体-> 打开网络串流, 如下图所示:将第2步中筛选出的带有m3u8的URL复制粘贴到第3步打开的窗口的文本框中, 并点击右下角转换, 如下图所示:在弹出的转换窗口中配置视频信息, 也可直接使用默认项mp4, 点击浏览按钮, 设置保存文件的路径及名称, 点击开始进行下载转换, 入下图所示:
2025-02-08 00:40:39
5997
原创 如何查看windows下端口占用进程并终止进程
若在windows下启动应用, 出现端口被占用的情况, 可使用dos命令按以下步骤进行查询端口占用进程, 并按需决定是否强制终止.
2025-01-21 11:15:53
734
原创 mybatis中SqlSessionFactory及SqlSession线程安全问题
1. SqlSessionFactory默认是线程安全的, 建议全局唯一, 不要多次重复创建, 可使用单例模式.2. SqlSession默认不是线程安全的, 建议将作用域限定在方法内部, 即使用时创建, 用完关闭, 不能将其设置为类变量(静态变量)或实例变量.mybatis用户手册中关于 SqlSessionFactoryBuilder, SqlSessionFactory, SqlSession, 映射器实例 作用域(Scope)和生命周期的说明如下:
2025-01-21 10:40:51
478
原创 对于比较类Comparator方法int compare(T o1, T o2)的应用与理解
Comparator类是一个被@FunctionalInterface标注的函数式接口,故通常状况下只需实现其intcompare(To1,To2)方法,且通常已匿名内部类或lambda的形式出现,常见的应用场景如:创建有序集合:二.如何根据intcompare(To1,To2)方法的返回值进行排序?先看jdk中对于该方法参数及返回值的注释说明:如果直译的话可能不太容易理解甚至容易给人造成困惑,故可以将其以一种更容易接受的方式进行同等表述,即理解方式一:或
2025-01-20 14:50:09
716
原创 Apache ListUtils.partition或Guava Lists.partition注意事项
无论是使用Apache commons-collections4中的ListUtils.partition还是使用Guava的Lists.partition, 作用都是将大集合分割成若干小集合.两者底层均基于jdk中List的subList方法实现, 由于subList方法分割后的集合只是原集合固定索引段的视图, 而非新集合, 故一些不当的增删操作会产生难以预料的错误.假设现在要遍历以上拆分后的集合, 并删除每个子集合中包含"1"的元素, 之后进行相应的逻辑处理, 若采用以下写法, 将不能得到预期结果,
2024-12-04 16:15:43
823
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅