<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yngzh的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/yngzh</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yngzh]]></copyright><item><title><![CDATA[桌面端 codex 登录如何跳过电话号码短信验证, 无需升级订阅, 无需境外电话号码, 无需虚拟号接码]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/169952809</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/169952809</guid><author>yngzh</author><pubDate>Tue, 03 Nov 2026 23:55:56 +0800</pubDate><description><![CDATA[安装桌面端的 codex 后登录跳转网页通常会出现电话号码短信验证页, 很多人会卡在这里. 接下来将讲述如何跳过验证并正常使用.








注: 如果失败, 尝试退出登录后重新登录再导出认证信息.]]></description><category></category></item><item><title><![CDATA[java注解简写规则]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/169361376</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/169361376</guid><author>yngzh</author><pubDate>Wed, 28 Oct 2026 15:52:22 +0800</pubDate><description><![CDATA[同时使用了这两种简写。]]></description><category></category></item><item><title><![CDATA[java弱引用WeakReference最直白的理解]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/168022595</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/168022595</guid><author>yngzh</author><pubDate>Thu, 15 Oct 2026 15:27:37 +0800</pubDate><description><![CDATA[当目标对象不再被强引用或软引用保持可达，仅通过弱引用可达时，GC 在处理弱引用时会清除指向该对象的弱引用，使其具备被回收的条件。需要注意，弱引用被清除和对象实际完成内存回收，并不一定发生在同一时刻。因此，弱引用常用于不希望引用关系阻止对象回收的场景，而软引用则曾常用于内存敏感型缓存等场景。这样的引用对象来表达弱引用语义，并由 JVM 配合垃圾回收机制进行特殊处理。对象本身，而是它与目标对象之间的一种特殊引用关系。的字段修饰符，不能直接将普通字段声明为弱引用。所谓弱引用，指的并不是。]]></description><category></category></item><item><title><![CDATA[Java 并发编程：深入理解 synchronized 的使用与原理]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/167693791</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/167693791</guid><author>yngzh</author><pubDate>Mon, 12 Oct 2026 14:44:36 +0800</pubDate><description><![CDATA[是 Java 提供的内置同步机制，主要用于解决多线程环境下的线程安全问题。当多个线程同时访问共享数据时，如果没有适当的同步控制，就可能出现数据竞争、更新丢失等问题。例如，多个线程同时对一个共享变量执行count++，由于该操作并不是原子的，最终结果可能小于预期值。count++;假设两个线程各自执行 10000 次，理论上最终结果应该是 20000，但实际上可能小于 20000。原因是count++并不是一个原子操作，它大致包含读取、计算和写入三个步骤。]]></description><category></category></item><item><title><![CDATA[HashMap 的 getOrDefault, putIfAbsent, computeIfAbsent, computeIfPresent 方法在 key 存在但值为 null 时的表现]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/165616874</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/165616874</guid><author>yngzh</author><pubDate>Wed, 16 Sep 2026 15:56:18 +0800</pubDate><description><![CDATA[当 HashMap 中的 key 存在, 但对应的值为 null 时, 调用 computeIfPresent 不会将新值添加进去. 即只有当 key 存在且对应的值不为 null 时该方法才会执行赋值. (即值为 null 的 key 不判定为 present)当 HashMap 中的 key 存在, 但对应的值为 null 时, 调用 putIfAbsent 会将新值添加进去. 即当 key 不存在或对应的值为 null 时该方法均会执行赋值. (即值为 null 的 key 判定为 absent)]]></description><category></category></item><item><title><![CDATA[java stream 的 findFirst 及 findAny 方法遇到 null 元素时会出现 NullPointerException]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/163504130</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/163504130</guid><author>yngzh</author><pubDate>Wed, 05 Aug 2026 14:02:26 +0800</pubDate><description><![CDATA[【代码】java stream 的 findFirst 及 findAny 方法遇到 null 元素时会出现 NullPointerException。]]></description><category></category></item><item><title><![CDATA[MySQL里的三个concat函数]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/161917928</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/161917928</guid><author>yngzh</author><pubDate>Fri, 12 Jun 2026 10:51:33 +0800</pubDate><description><![CDATA[【代码】MySQL里的三个concat函数。]]></description><category></category></item><item><title><![CDATA[java中常见Map的键值是否允许为null总结]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/161893633</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/161893633</guid><author>yngzh</author><pubDate>Thu, 11 Jun 2026 14:28:15 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[深入理解 Java volatile：从可见性到内存屏障]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/161613498</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/161613498</guid><author>yngzh</author><pubDate>Tue, 02 Jun 2026 10:02:32 +0800</pubDate><description><![CDATA[编译器会优化代码顺序CPU 会乱序执行JVM JIT 会优化执行路径int a = 1;int b = 2;b = 2a = 1单线程结果不变JVM 就允许优化。这叫：指令重排序（Instruction Reordering）不能。可见性有序性原子性让一个线程写入的数据对其他线程立即可见“看得见”“抢得到”volatile 保证可见性synchronized 保证原子性这是理解 Java 并发最核心的一组概念。]]></description><category></category></item><item><title><![CDATA[MySQL 实战：如何根据 ID 将表 B 的字段更新到表 A]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/160631448</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/160631448</guid><author>yngzh</author><pubDate>Wed, 29 Apr 2026 17:08:07 +0800</pubDate><description><![CDATA[跨表更新数据。虽然 MySQL 提供了多种写法，但从稳定性和性能角度来看：是最推荐的标准解法同时要特别注意：⚠️ 子查询写法在未匹配时会写入 NULL⚠️ 这是很多线上事故的常见原因。]]></description><category></category></item><item><title><![CDATA[HttpServletResponse 中 Header 与 OutputStream 的正确使用顺序（避坑指南）]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/160596343</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/160596343</guid><author>yngzh</author><pubDate>Tue, 28 Apr 2026 16:24:12 +0800</pubDate><description><![CDATA[👉Header 是“声明”，Body 是“内容”，声明必须在内容之前文件下载接口代理网关透传“只要开始写流，就别再碰 header”]]></description><category></category></item><item><title><![CDATA[java stream 的 findFirst 和 findAny 踩坑点]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/160341629</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/160341629</guid><author>yngzh</author><pubDate>Mon, 20 Apr 2026 17:32:26 +0800</pubDate><description><![CDATA[当集合中包含null元素, 而使用 findFirst() 或 findAny() 方法刚好筛选到该元素时, 会触发 java.lang.NullPointerException , 因为最后的结果是通过 Optional.of(T value) 方法转换的, 该方法要求 value 不能为空.]]></description><category></category></item><item><title><![CDATA[java中stream的Collectors.toMap常见踩坑点]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/160202363</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/160202363</guid><author>yngzh</author><pubDate>Thu, 16 Apr 2026 10:13:35 +0800</pubDate><description><![CDATA[如果转换为map后可能出现null的value, 会抛出异常, 需先过滤掉null值value.如果转换为map后可能出现重复key, 默认会抛出异常, 需指定合并策略.如果转换为map后可能出现null的key, 不会抛出异常.]]></description><category></category></item><item><title><![CDATA[win11首次使用, 如何跳过微软账号登录]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/160138254</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/160138254</guid><author>yngzh</author><pubDate>Tue, 14 Apr 2026 10:50:14 +0800</pubDate><description><![CDATA[时, 按下 Shift + F10 打开命令提示符;在安装界面(OOBE)看到 “]]></description><category></category></item><item><title><![CDATA[数据库SQL的WHERE中比较条件出现NULL]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/159975761</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/159975761</guid><author>yngzh</author><pubDate>Thu, 09 Apr 2026 09:50:54 +0800</pubDate><description><![CDATA[【代码】数据库SQL的WHERE中比较条件出现NULL。]]></description><category></category></item><item><title><![CDATA[数据库SQL中的IN, NOT IN和NULL]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/159785760</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/159785760</guid><author>yngzh</author><pubDate>Fri, 03 Apr 2026 10:15:00 +0800</pubDate><description><![CDATA[【代码】数据库SQL中的IN, NOT IN和NULL。]]></description><category></category></item><item><title><![CDATA[为什么 Java 编译器要求 catch 块显式 return 或 throw]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/159430622</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/159430622</guid><author>yngzh</author><pubDate>Tue, 24 Mar 2026 16:44:39 +0800</pubDate><description><![CDATA[对于有返回值的方法中的try…块的所有路径都要有显示的return或throw, 编译器不会分析方法内部逻辑.的规则，编译器只依赖语法和方法签名来判断返回路径, 而不是去智能推断所有方法内部的实际行为。这是因为java编译器遵循。]]></description><category></category></item><item><title><![CDATA[NAT是什么]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/158418040</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/158418040</guid><author>yngzh</author><pubDate>Thu, 26 Feb 2026 09:39:45 +0800</pubDate><description><![CDATA[NAT = 通过修改 IP 和端口，让多个内网设备共享一个公网 IP它依赖“连接记录表”决定数据转发方向。]]></description><category></category></item><item><title><![CDATA[BigDecimal转字符串方法toString(),toPlainString(),toEngineeringString()区别]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/157808899</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/157808899</guid><author>yngzh</author><pubDate>Fri, 06 Feb 2026 17:10:48 +0800</pubDate><description><![CDATA[toString() 或 toEngineeringString() 方法转换的字符串有不确定性, 在数值特别大或特别小的时候可能会以指数形式表示, 因此在需要全数字处理的场景下可能会出现问题, 如始终需要原样输出数字时建议使用 toPlainString() .]]></description><category></category></item><item><title><![CDATA[java调用可变参数方法时不传该参数, 接收到的是空数组还是null]]></title><link>https://blog.youkuaiyun.com/yngzh/article/details/157504857</link><guid>https://blog.youkuaiyun.com/yngzh/article/details/157504857</guid><author>yngzh</author><pubDate>Thu, 29 Jan 2026 10:34:57 +0800</pubDate><description><![CDATA[【代码】java调用可变参数方法时不传该参数, 接收到的是空数组还是null。]]></description><category></category></item></channel></rss>