<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0"><channel><title>Roozen的小破站</title><link>https://roozen.top/</link><atom:link href="https://roozen.top/feed.xml" rel="self" type="application/rss+xml"/><description>一只小菜计</description><generator>Halo v2.23.0</generator><language>zh-cn</language><image><url>https://roozen.top/upload/touxiang.jpg</url><title>Roozen的小破站</title><link>https://roozen.top/</link></image><lastBuildDate>Fri, 15 May 2026 20:17:36 GMT</lastBuildDate><item><title><![CDATA[测试文章]]></title><link>https://roozen.top/archives/KdTEAaCy</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=%E6%B5%8B%E8%AF%95%E6%96%87%E7%AB%A0&amp;url=/archives/KdTEAaCy" width="1" height="1" alt="" style="opacity:0;">自定义摘要]]></description><guid isPermaLink="false">/archives/KdTEAaCy</guid><dc:creator>Roozen</dc:creator><pubDate>Wed, 4 Mar 2026 14:25:31 GMT</pubDate></item><item><title><![CDATA[@SuperBuilder]]></title><link>https://roozen.top/archives/xvdfZj7I</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=%40SuperBuilder&amp;url=/archives/xvdfZj7I" width="1" height="1" alt="" style="opacity:0;">@SuperBuilder是Lombok提供的一个注解，用于生成构建者模式代码，特别适用于继承关系的类。它是@Builder的增强版本。 基本用法 @Data @SuperBuilder @NoArgsConstructor // 必需 @AllArgsConstructor // 必需 publi]]></description><guid isPermaLink="false">/archives/xvdfZj7I</guid><dc:creator>Roozen</dc:creator><category>随笔集</category><pubDate>Fri, 3 Jan 2025 13:26:48 GMT</pubDate></item><item><title><![CDATA[@InitBinder]]></title><link>https://roozen.top/archives/UuNBmt6Q</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=%40InitBinder&amp;url=/archives/UuNBmt6Q" width="1" height="1" alt="" style="opacity:0;">@InitBinder是Spring MVC提供的一个注解，主要用于自定义请求参数的绑定规则。它可以： 注册自定义的编辑器 设置必填字段 设置允许的字段 设置日期格式等 @InitBinder的value参数 @InitBinder的value参数用于指定这个绑定器要作用的目标对象。有以下几种使用方]]></description><guid isPermaLink="false">/archives/UuNBmt6Q</guid><dc:creator>Roozen</dc:creator><pubDate>Fri, 3 Jan 2025 09:10:23 GMT</pubDate></item><item><title><![CDATA[Google Guava和EventBus]]></title><link>https://roozen.top/archives/8DEReLSt</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=Google%20Guava%E5%92%8CEventBus&amp;url=/archives/8DEReLSt" width="1" height="1" alt="" style="opacity:0;">1. Google Guava简介 Guava是Google开发的Java工具库，提供了很多实用工具： 集合工具（Collections） 缓存工具（Cache） 并发工具（Concurrency） 字符串处理（Strings） I/O工具（I/O） EventBus（事件总线） 2. EventB]]></description><guid isPermaLink="false">/archives/8DEReLSt</guid><dc:creator>Roozen</dc:creator><pubDate>Wed, 1 Jan 2025 13:22:50 GMT</pubDate></item><item><title><![CDATA[Spring WebSocket]]></title><link>https://roozen.top/archives/MEsUsS3y</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=Spring%20WebSocket&amp;url=/archives/MEsUsS3y" width="1" height="1" alt="" style="opacity:0;">1. WebSocket基础 连接建立流程: Client Server | | |------ HTTP Upgrade ------&gt;| // 发起升级请求 |]]></description><guid isPermaLink="false">/archives/MEsUsS3y</guid><dc:creator>Roozen</dc:creator><pubDate>Wed, 1 Jan 2025 12:34:19 GMT</pubDate></item><item><title><![CDATA[HandshakeInterceptor与HandlerInterceptor]]></title><link>https://roozen.top/archives/zINT40Yk</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=HandshakeInterceptor%E4%B8%8EHandlerInterceptor&amp;url=/archives/zINT40Yk" width="1" height="1" alt="" style="opacity:0;">HandshakeInterceptor (WebSocket握手拦截器) public interface HandshakeInterceptor { // 握手前 boolean beforeHandshake(...); // 握手后 void af]]></description><guid isPermaLink="false">/archives/zINT40Yk</guid><dc:creator>Roozen</dc:creator><pubDate>Wed, 1 Jan 2025 11:52:51 GMT</pubDate></item><item><title><![CDATA[Spring Boot 项目中，多种设置环境变量的方式]]></title><link>https://roozen.top/archives/Vo2HIKea</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=Spring%20Boot%20%E9%A1%B9%E7%9B%AE%E4%B8%AD%EF%BC%8C%E5%A4%9A%E7%A7%8D%E8%AE%BE%E7%BD%AE%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E7%9A%84%E6%96%B9%E5%BC%8F&amp;url=/archives/Vo2HIKea" width="1" height="1" alt="" style="opacity:0;">在 Spring Boot 项目中，有多种设置环境变量的方式，我按照优先级从高到低列出： 命令行参数： java -jar app.jar --MYSQL_HOST=localhost 系统环境变量： # Linux/Mac export MYSQL_HOST=localhost # Windo]]></description><guid isPermaLink="false">/archives/Vo2HIKea</guid><dc:creator>Roozen</dc:creator><pubDate>Mon, 23 Dec 2024 10:49:45 GMT</pubDate></item><item><title><![CDATA[解决 JavaScript 处理大数字精度问题]]></title><link>https://roozen.top/archives/B0fNiqcw</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=%E8%A7%A3%E5%86%B3%20JavaScript%20%E5%A4%84%E7%90%86%E5%A4%A7%E6%95%B0%E5%AD%97%E7%B2%BE%E5%BA%A6%E9%97%AE%E9%A2%98&amp;url=/archives/B0fNiqcw" width="1" height="1" alt="" style="opacity:0;">这是为了解决 JavaScript 处理大数字精度问题，我们可以通过以下方式实现： 创建 Jackson 配置类： // src/main/java/top/roozen/lab/competition/config/JacksonConfig.java @Configuration public]]></description><guid isPermaLink="false">/archives/B0fNiqcw</guid><dc:creator>Roozen</dc:creator><pubDate>Sat, 21 Dec 2024 05:13:53 GMT</pubDate></item><item><title><![CDATA[类型保护（Type Guards）和类型断言（Type Assertions）]]></title><link>https://roozen.top/archives/UKCEMd8h</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=%E7%B1%BB%E5%9E%8B%E4%BF%9D%E6%8A%A4%EF%BC%88Type%20Guards%EF%BC%89%E5%92%8C%E7%B1%BB%E5%9E%8B%E6%96%AD%E8%A8%80%EF%BC%88Type%20Assertions%EF%BC%89&amp;url=/archives/UKCEMd8h" width="1" height="1" alt="" style="opacity:0;">在 TypeScript 中，如果你有一个可能具有多种类型的变量，并希望根据其具体类型进行不同的处理，可以使用类型保护（Type Guards）和类型断言（Type Assertions）。以下是几种常见的方法： 1. 使用 typeof 进行基本类型判断 适用于基本类型（如 number, str]]></description><guid isPermaLink="false">/archives/UKCEMd8h</guid><dc:creator>Roozen</dc:creator><pubDate>Thu, 19 Dec 2024 04:26:35 GMT</pubDate></item><item><title><![CDATA[TypeScript——类型谓词（Type Predicate）]]></title><link>https://roozen.top/archives/sVW79eYJ</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=TypeScript%E2%80%94%E2%80%94%E7%B1%BB%E5%9E%8B%E8%B0%93%E8%AF%8D%EF%BC%88Type%20Predicate%EF%BC%89&amp;url=/archives/sVW79eYJ" width="1" height="1" alt="" style="opacity:0;">在 TypeScript 中，pet is Fish 是一种类型谓词（Type Predicate）。类型谓词是一种特殊的返回类型注解，用于在运行时告诉编译器某个变量的具体类型。这种机制通常用于自定义类型保护函数（Custom Type Guard Functions），以便在条件分支中安全地使用特]]></description><guid isPermaLink="false">/archives/sVW79eYJ</guid><dc:creator>Roozen</dc:creator><pubDate>Thu, 19 Dec 2024 04:26:12 GMT</pubDate></item><item><title><![CDATA[package.json——版本控制符]]></title><link>https://roozen.top/archives/koaKzqwu</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=package.json%E2%80%94%E2%80%94%E7%89%88%E6%9C%AC%E6%8E%A7%E5%88%B6%E7%AC%A6&amp;url=/archives/koaKzqwu" width="1" height="1" alt="" style="opacity:0;">在 package.json 文件中，版本号的控制符号用于指定依赖包的版本范围。以下是一些常用的版本控制符号及其含义： 常用版本控制符号 精确版本号 1.2.3 指定一个确切的版本号，只安装这个版本。 波浪号 (~) ~1.2.3 允许安装补丁版本（即第三个数字可以变化），但不会升级次要版本或主要版]]></description><guid isPermaLink="false">/archives/koaKzqwu</guid><dc:creator>Roozen</dc:creator><pubDate>Thu, 19 Dec 2024 03:51:31 GMT</pubDate></item><item><title><![CDATA[npm——Peer dependencies]]></title><link>https://roozen.top/archives/fR75bI1z</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=npm%E2%80%94%E2%80%94Peer%20dependencies&amp;url=/archives/fR75bI1z" width="1" height="1" alt="" style="opacity:0;">Peer dependencies 是 npm 包管理中的一个概念，用于指定当前包依赖的其他包，但这些依赖包并不是直接安装在当前项目的 node_modules 目录下，而是期望它们已经存在于父模块或更高层级的 node_modules 目录中。 主要用途 插件系统：例如，React 插件可能需要]]></description><guid isPermaLink="false">/archives/fR75bI1z</guid><dc:creator>Roozen</dc:creator><pubDate>Thu, 19 Dec 2024 03:49:21 GMT</pubDate></item><item><title><![CDATA[JavaScript——Symbol]]></title><link>https://roozen.top/archives/MjPQNQjX</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=JavaScript%E2%80%94%E2%80%94Symbol&amp;url=/archives/MjPQNQjX" width="1" height="1" alt="" style="opacity:0;">Symbol 是 JavaScript 中的一种原始数据类型，用于创建唯一的标识符。以下是关于 Symbol 的几个要点： 唯一性：每个 Symbol 值都是唯一的，即使它们具有相同的描述字符串。 描述：可以通过传递一个可选的描述字符串来创建 Symbol，这个描述字符串主要用于调试，不会影响 Sy]]></description><guid isPermaLink="false">/archives/MjPQNQjX</guid><dc:creator>Roozen</dc:creator><pubDate>Wed, 18 Dec 2024 15:16:16 GMT</pubDate></item><item><title><![CDATA[event.preventDefault() 和 event.stopPropagation()]]></title><link>https://roozen.top/archives/ht36mcN8</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=event.preventDefault%28%29%20%E5%92%8C%20event.stopPropagation%28%29&amp;url=/archives/ht36mcN8" width="1" height="1" alt="" style="opacity:0;">event.preventDefault() 和 event.stopPropagation() 是两个不同的事件处理方法： event.preventDefault()： 阻止事件的默认行为 常见用例： &lt;!-- 阻止表单提交的默认行为 --&gt; &lt;form @submit="e =&gt; { e.]]></description><guid isPermaLink="false">/archives/ht36mcN8</guid><dc:creator>Roozen</dc:creator><pubDate>Wed, 18 Dec 2024 08:21:16 GMT</pubDate></item><item><title><![CDATA[JavaScript/TypeScript 中 ?? 、||、?. ]]></title><link>https://roozen.top/archives/cqSzg7jG</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=JavaScript%2FTypeScript%20%E4%B8%AD%20%3F%3F%20%E3%80%81%7C%7C%E3%80%81%3F.%20&amp;url=/archives/cqSzg7jG" width="1" height="1" alt="" style="opacity:0;">?? 是 JavaScript/TypeScript 中的空值合并运算符（Nullish Coalescing Operator） 它的作用是： 当左侧的值为 null 或 undefined 时，返回右侧的值； 如果左侧的值不是 null 或 undefined，则返回左侧的值。]]></description><guid isPermaLink="false">/archives/cqSzg7jG</guid><dc:creator>Roozen</dc:creator><pubDate>Tue, 17 Dec 2024 15:52:02 GMT</pubDate></item><item><title><![CDATA[MyBatis——TypeHandler]]></title><link>https://roozen.top/archives/OaoIvZqB</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=MyBatis%E2%80%94%E2%80%94TypeHandler&amp;url=/archives/OaoIvZqB" width="1" height="1" alt="" style="opacity:0;">@TableField @TableField(typeHandler = PermissionLevelTypeHandler.class) 这个注解主要用于 MyBatis-Plus 自动生成的 SQL 语句中，指定某个字段的类型处理器。它不会直接影响你自己编写的 Mapper 方法中的 SQL]]></description><guid isPermaLink="false">/archives/OaoIvZqB</guid><dc:creator>Roozen</dc:creator><pubDate>Tue, 17 Dec 2024 12:33:13 GMT</pubDate></item><item><title><![CDATA[Tree-shaking]]></title><link>https://roozen.top/archives/VnIViNCD</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=Tree-shaking&amp;url=/archives/VnIViNCD" width="1" height="1" alt="" style="opacity:0;">Tree-shaking 是一个在现代 JavaScript 构建过程中常用的术语，主要指移除 JavaScript 上下文中未引用的代码(dead code)的过程。 以下是详细解释： 基本概念： // 假设有一个 math.js 文件 export function add(a, b) {]]></description><guid isPermaLink="false">/archives/VnIViNCD</guid><dc:creator>Roozen</dc:creator><pubDate>Mon, 16 Dec 2024 15:04:16 GMT</pubDate></item><item><title><![CDATA[Lodash]]></title><link>https://roozen.top/archives/po1kSuCR</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=Lodash&amp;url=/archives/po1kSuCR" width="1" height="1" alt="" style="opacity:0;">Lodash 是一个流行的 JavaScript 工具库，提供了大量实用的函数来处理数组、数字、对象、字符串等。它能让 JavaScript 编程更加简单和高效。 以下是一些常用的 Lodash 功能示例： 数组操作： import { chunk, uniq, flatten } from 'lo]]></description><guid isPermaLink="false">/archives/po1kSuCR</guid><dc:creator>Roozen</dc:creator><pubDate>Mon, 16 Dec 2024 15:03:52 GMT</pubDate></item><item><title><![CDATA[application/x-www-form-urlencoded和 multipart/form-data]]></title><link>https://roozen.top/archives/sBfUuFFw</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=application%2Fx-www-form-urlencoded%E5%92%8C%20multipart%2Fform-data&amp;url=/archives/sBfUuFFw" width="1" height="1" alt="" style="opacity:0;">application/x-www-form-urlencoded 和 multipart/form-data 是两种常用的HTTP请求内容类型，主要用于表单数据的提交。它们在用途和格式上有一些重要的区别。以下是这两种内容类型的详细对比： application/x-www-form-urlenco]]></description><guid isPermaLink="false">/archives/sBfUuFFw</guid><dc:creator>Roozen</dc:creator><pubDate>Mon, 16 Dec 2024 08:18:10 GMT</pubDate></item><item><title><![CDATA[Content-Type]]></title><link>https://roozen.top/archives/fUZ7TOsG</link><description><![CDATA[<img src="https://roozen.top/plugins/feed/assets/telemetry.gif?title=Content-Type&amp;url=/archives/fUZ7TOsG" width="1" height="1" alt="" style="opacity:0;">Content-Type 是一个HTTP头部字段，用于指示资源的媒体类型（MIME类型）。它告诉客户端（如浏览器）如何处理接收到的数据。以下是常见的 Content-Type 类型及其用途： 常见的 Content-Type 类型 文本类型 text/plain 描述：纯文本文件。 示例：.txt]]></description><guid isPermaLink="false">/archives/fUZ7TOsG</guid><dc:creator>Roozen</dc:creator><pubDate>Mon, 16 Dec 2024 08:11:55 GMT</pubDate></item></channel></rss>