<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[py_1990_04_20的博客]]></title><description><![CDATA[不积跬步，无以至千里]]></description><link>https://blog.youkuaiyun.com/py_1990_04_20</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; py_1990_04_20]]></copyright><item><title><![CDATA[【浏览器原生 ESM支持的类型】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/170214480</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/170214480</guid><author>py_1990_04_20</author><pubDate>Sat, 07 Nov 2026 04:35:44 +0800</pubDate><description><![CDATA[浏览器原生 ESM 支持相对路径、绝对路径、完整 URL 及 data: URL，裸模块名需依赖 import map 映射。构建工具（如 Vite/Webpack）则额外支持裸模块直接导入、别名、省略扩展名及目录 index 自动解析，提升开发体验，但牺牲了代码的直接运行能力。核心区别在于：原生 ESM 规则严格，构建工具则通过配置放宽限制，实现更灵活的导入方式。]]></description><category></category></item><item><title><![CDATA[【__proto__ vs prototype 到底啥区别】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/170153871</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/170153871</guid><author>py_1990_04_20</author><pubDate>Fri, 06 Nov 2026 03:00:41 +0800</pubDate><description><![CDATA[prototype 是函数的属性，用于 new 时指定实例的原型；__proto__ 是对象的内部链接，用于属性查找。关键区别：prototype 只有函数有，__proto__ 几乎所有对象都有。new 操作将实例的 __proto__ 指向构造函数的 prototype，二者通过 f.__proto__ === Foo.prototype 关联。函数既是对象（有 __proto__），又有自己的 prototype，两者指向不同。__proto__ 为非标准写法，推荐使用 Object.getProto]]></description><category></category></item><item><title><![CDATA[【Docker Compose 快速入门】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/166742764</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/166742764</guid><author>py_1990_04_20</author><pubDate>Mon, 28 Sep 2026 01:51:12 +0800</pubDate><description><![CDATA[本教程通过构建一个基于 Flask 和 Redis 的计数器应用，介绍 Docker Compose 的核心用法。从项目搭建、Dockerfile 编写到 compose.yaml 配置，涵盖服务定义、端口映射、环境变量与健康检查。通过添加健康检查解决启动竞态，利用 develop.watch 实现代码热更新，提升开发效率。最终实现可持久化、自动恢复的多服务应用栈，适合初学者快速掌握 Compose 在 Web 开发中的实践。]]></description><category></category></item><item><title><![CDATA[【OpenEuler 安装 Docker】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/166601398</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/166601398</guid><author>py_1990_04_20</author><pubDate>Thu, 24 Sep 2026 21:58:42 +0800</pubDate><description><![CDATA[在 openEuler 24.03 SP4 系统上安装 Docker，需关闭 SELinux 并修改源配置中的版本变量。使用阿里云或华为云镜像源，将 $releasever 替换为 7 以解决 404 错误。通过 dnf 安装 Docker 及插件，配置国内镜像加速，启动服务后运行 hello-world 验证成功。]]></description><category></category></item><item><title><![CDATA[【文件查找，与文本处理】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/166495164</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/166495164</guid><author>py_1990_04_20</author><pubDate>Thu, 24 Sep 2026 01:24:30 +0800</pubDate><description><![CDATA[本文系统介绍 Linux 中 find 命令、 sed 编辑器和gawk编辑器的核心用法。]]></description><category></category></item><item><title><![CDATA[【Linux 定时任务】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/165493479</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/165493479</guid><author>py_1990_04_20</author><pubDate>Wed, 16 Sep 2026 02:30:58 +0800</pubDate><description><![CDATA[Linux定时任务体系分为一次性（at）与周期性（cron、systemd timer）。at用于单次执行，支持时间格式灵活；cron通过crontab或系统配置文件实现周期调度，支持用户级与系统级任务，并可通过anacron补跑未执行的任务。systemd timer以服务+定时器分离方式管理，支持持久化补跑（Persistent=true），并集成日志追踪（journalctl -u），是现代系统推荐的定时机制。]]></description><category></category></item><item><title><![CDATA[【shell 结构化命令】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/165245519</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/165245519</guid><author>py_1990_04_20</author><pubDate>Mon, 14 Sep 2026 00:50:20 +0800</pubDate><description><![CDATA[shell 结构化命令]]></description><category></category></item><item><title><![CDATA[【Linux 系统管理】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/164741874</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/164741874</guid><author>py_1990_04_20</author><pubDate>Wed, 09 Sep 2026 14:27:26 +0800</pubDate><description><![CDATA[涵盖系统信息查看、进程管理、内存与磁盘管理、网络管理核心命令]]></description><category></category></item><item><title><![CDATA[【Shell 知识速查表】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/164633051</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/164633051</guid><author>py_1990_04_20</author><pubDate>Wed, 09 Sep 2026 00:33:32 +0800</pubDate><description><![CDATA[本文为Shell知识速查表，涵盖符号与括号用法、重定向操作、特殊变量、参数展开、正则表达式元字符及POSIX字符组，并总结echo与printf常用输出格式，适合快速查阅与复习。]]></description><category></category></item><item><title><![CDATA[【Linux 命令基础版】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/164372325</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/164372325</guid><author>py_1990_04_20</author><pubDate>Fri, 04 Sep 2026 17:21:50 +0800</pubDate><description><![CDATA[Linux用户与用户组管理（核心文件、user/group命令、查询切换）及文件权限管理（普通/特殊权限、umask、chmod符号模式、chown/chgrp）和文件目录操作]]></description><category></category></item><item><title><![CDATA[vscode wsl和windows环境切换]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/162882070</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/162882070</guid><author>py_1990_04_20</author><pubDate>Tue, 14 Jul 2026 21:25:31 +0800</pubDate><description><![CDATA[环境左下角显示数据库 Host代码位置Windows 本地><127.0.0.1WSL172.x.x.x（查 resolv.conf）点击左下角 + 选择对应选项。]]></description><category></category></item><item><title><![CDATA[【4种打开Ubuntu（WSL）的方法】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/162803328</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/162803328</guid><author>py_1990_04_20</author><pubDate>Sun, 12 Jul 2026 04:37:39 +0800</pubDate><description><![CDATA[本文介绍了4种打开Ubuntu（WSL）的方法：通过开始菜单搜索、Windows终端/PowerShell命令、Win+R快速启动以及VS Code开发模式。提供了首次使用时的系统更新指南和常用基础命令，包括文件操作、Windows与Ubuntu文件互访、软件安装等。还包含密码重置方法、WSL状态查看技巧以及一个典型的新手使用流程。文章特别强调开发推荐使用VS Code，并提醒注意sudo权限操作和内存释放问题，为WSL初学者提供了全面的操作指南。]]></description><category></category></item><item><title><![CDATA[【MySQL建索引】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/162325735</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/162325735</guid><author>py_1990_04_20</author><pubDate>Fri, 26 Jun 2026 05:10:11 +0800</pubDate><description><![CDATA[本文总结了MySQL索引的建立规则与应用场景。可以建立索引的字段类型包括整数、小数、字符串、时间和枚举等，而blob和longtext只能建立前缀索引。索引分为主键、普通和唯一三种类型，各有不同约束条件。索引主要用于加速WHERE查询、ORDER BY排序、GROUP BY分组和JOIN关联操作，但无法优化!=、NOT LIKE等操作，且会降低写操作性能。适合建索引的字段包括频繁查询、关联、排序的列以及主键，而重复度高、很少查询或频繁更新的字段则不适合建索引。外键字段必须建立普通索引以确保关联查询效率。]]></description><category></category></item><item><title><![CDATA[【Future vs CompletableFuture vs JS Promise】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/162276249</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/162276249</guid><author>py_1990_04_20</author><pubDate>Wed, 24 Jun 2026 16:39:52 +0800</pubDate><description><![CDATA[本文对比了Java中的Future与CompletableFuture的核心差异，重点剖析了中断机制的不同实现： 传统Future中断原理 FutureTask通过runner字段持有执行线程引用，cancel(true)会直接中断目标线程，而CompletableFuture作为通用结果容器不绑定执行线程，cancel()仅修改状态不中断线程。 设计思想对比 CompletableFuture与JavaScript的Promise高度同源，均采用异步可外部决议模型，支持链式调用、多任务组合（anyOf/a]]></description><category></category></item><item><title><![CDATA[【线程池全套高频坑点】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/162177836</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/162177836</guid><author>py_1990_04_20</author><pubDate>Sun, 21 Jun 2026 22:37:19 +0800</pubDate><description><![CDATA[线程池高频坑点精要总结 异常处理：避免submit静默吞异常，execute需内部捕获所有Throwable，防止线程销毁；Error类异常无法恢复。 参数配置： 区分IO/CPU密集型任务设置线程数，公式参考：IO任务=CPU核心数×(1+等待耗时/计算耗时)，CPU任务=CPU核心数+1。 禁用无界队列防OOM，有界队列需配自定义拒绝策略（如日志告警）。 核心线程闲置时通过allowCoreThreadTimeOut回收。 线程复用问题：ThreadLocal和MDC需及时清理，防内存泄漏和日志串号。 ]]></description><category></category></item><item><title><![CDATA[BlockingQueue 全家桶]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/162112950</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/162112950</guid><author>py_1990_04_20</author><pubDate>Fri, 19 Jun 2026 04:38:25 +0800</pubDate><description><![CDATA[本文总结了Java中6种主要的阻塞队列(BlockingQueue)及其特点： ArrayBlockingQueue：固定容量的数组实现，严格FIFO，读写互斥 LinkedBlockingQueue：链表实现，可指定容量，读写分离锁，并发性能更好 SynchronousQueue：零容量队列，生产者必须等待消费者取走 LinkedTransferQueue：无界队列，支持普通缓冲和同步交付两种模式 PriorityBlockingQueue：无界优先级队列，按元素优先级排序 DelayQueue：延时队列]]></description><category></category></item><item><title><![CDATA[【Unicode、UTF-8、UTF-16 及字符类型详解】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/161866196</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/161866196</guid><author>py_1990_04_20</author><pubDate>Wed, 10 Jun 2026 16:49:31 +0800</pubDate><description><![CDATA[Unicode是一种统一的字符编码标准，为所有语言字符分配唯一二进制编码，包含17个平面共1114112个码位，其中基本多文种平面（BMP）最为常用。UTF-8是变长编码（1-6字节），兼容ASCII，适用于存储和传输；UTF-16则采用固定或代理对方式编码（2或4字节），Java默认使用UTF-16，其char类型和String类均基于UTF-16编码。需要注意的是，增补字符会占用两个char位置但视为一个逻辑单元，处理文本时建议以字符串整体操作确保准确性。Unicode与ISO 10646标准保持兼容，]]></description><category></category></item><item><title><![CDATA[【获取单词流】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/161865233</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/161865233</guid><author>py_1990_04_20</author><pubDate>Wed, 10 Jun 2026 16:23:20 +0800</pubDate><description><![CDATA[这篇文章总结了Java中5种将文本转换为单词流的方法，重点推荐了最优组合方案： 分析了5种文本转流方法的特点： List/Arrays方式会生成中间集合/数组，内存占用高 Scanner.tokens()简单但性能一般 Pattern.splitAsStream()支持正则且流式处理 Files.lines()支持逐行读取 推荐终极解决方案： Files.lines(path) .flatMap(Pattern.compile("\\PL+")::splitAsStream) 该组合具有流式处理、不加载全文]]></description><category></category></item><item><title><![CDATA[【Intelij IDEA使用手册】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/161658705</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/161658705</guid><author>py_1990_04_20</author><pubDate>Wed, 03 Jun 2026 15:37:13 +0800</pubDate><description><![CDATA[IntelliJ IDEA 常用快捷键速查手册 本文档整理了IntelliJ IDEA中高效的开发快捷键，分为三大类： 查找搜索：包含文件/字符串搜索（CTRL+F/R）、类结构查看（CTRL+H）、方法调用追踪（CTRL+ALT+H）等核心定位功能 代码编辑：涵盖智能补全（ALT+ENTER）、代码格式化（CTRL+ALT+L）、多光标编辑（ALT+SHIFT+点击）等高效编辑技巧 代码生成：提供快速生成Getter/Setter（ALT+INSERT）、main方法（psvm）、代码块包裹（CTRL+A]]></description><category></category></item><item><title><![CDATA[【JDK动态代理源码梳理】]]></title><link>https://blog.youkuaiyun.com/py_1990_04_20/article/details/161641842</link><guid>https://blog.youkuaiyun.com/py_1990_04_20/article/details/161641842</guid><author>py_1990_04_20</author><pubDate>Wed, 03 Jun 2026 04:52:18 +0800</pubDate><description><![CDATA[摘要：JDK动态代理核心实现机制是通过Proxy.newProxyInstance()生成代理类，其内部采用缓存机制和双重检查锁保证线程安全。代理类继承Proxy并实现目标接口，所有方法调用均转发至InvocationHandler。生成过程包括权限校验、缓存处理、字节码生成和构造器反射实例化，最终生成形如$Proxy0的代理类，通过静态代码块预加载方法对象，在运行时将调用委托给处理器的invoke方法。]]></description><category></category></item></channel></rss>