<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>从 Java 到 Rust on lihuu — 系统工程、AI 工具链与 Rust 开发博客</title>
    <link>https://silentstormic.top/post/from_java_to_rust/</link>
    <description>Recent content in 从 Java 到 Rust on lihuu — 系统工程、AI 工具链与 Rust 开发博客</description>
    <generator>Hugo</generator>
    <language>zh-CN</language>
    <lastBuildDate>Tue, 14 Oct 2025 10:43:37 +0800</lastBuildDate>
    <atom:link href="https://silentstormic.top/post/from_java_to_rust/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>第 1 章：停！别再写那千篇一律的 CRUD 了。</title>
      <link>https://silentstormic.top/post/from_java_to_rust/01/</link>
      <pubDate>Thu, 28 Aug 2025 18:04:05 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/01/</guid>
      <description>&lt;p&gt;你是不是又在 IntelliJ IDEA 里敲着熟悉的 &lt;code&gt;@RestController&lt;/code&gt;，配置着又一个 Spring Boot 项目？你是不是觉得自己已经是 Java 大神了——熟练掌握 JVM 调优，玩转各种设计模式，Lambda 表达式信手拈来？&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;醒醒吧，朋友。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;现实世界远比你想象的残酷。当你的系统在高并发下因为 GC 停顿而丢失订单时，当你的微服务因为内存泄漏而频繁重启时，当你为了那点性能优化而绞尽脑汁时——你就会发现，Java 这个&amp;quot;温暖的舒适区&amp;quot;其实是个美丽的陷阱。&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 2 章：还在为变量赋值这点小事纠结？</title>
      <link>https://silentstormic.top/post/from_java_to_rust/02/</link>
      <pubDate>Thu, 28 Aug 2025 18:04:06 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/02/</guid>
      <description>&lt;p&gt;在上一章里，我们已经见识了 Rust 的第一次&amp;quot;暴击&amp;quot;——没有 GC 却能保证内存安全。现在，准备好迎接第二次冲击吧。&lt;/p&gt;&#xA;&lt;p&gt;你以为变量声明是最简单的事情？在 Java 里确实如此：&lt;code&gt;int x = 5;&lt;/code&gt; 然后想怎么改就怎么改。但在 Rust 的世界里，&lt;strong&gt;连声明个变量都要重新学习&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;这不是 Rust 在故意为难你，而是它在用最基础的语法特性，向你传递一个颠覆性的编程哲学。&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 3 章：还在用 `int` 走天下？醒醒吧！</title>
      <link>https://silentstormic.top/post/from_java_to_rust/03/</link>
      <pubDate>Fri, 29 Aug 2025 20:54:52 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/03/</guid>
      <description>&lt;p&gt;已经玩过变量声明了，现在该面对现实了：你那些&amp;quot;万能&amp;quot;的 &lt;code&gt;int&lt;/code&gt;、&lt;code&gt;String&lt;/code&gt; 在 Rust 面前就是个笑话。&lt;/p&gt;&#xA;&lt;p&gt;别以为换个语言就是换个语法糖。Rust 的类型系统要重新刷新你对&amp;quot;数据&amp;quot;这个概念的认知。&lt;strong&gt;准备好被虐了吗？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;标量类型精确到令人发指&#34;&gt;标量类型：精确到令人发指&lt;/h2&gt;&#xA;&lt;p&gt;Java 程序员最大的坏习惯是什么？&lt;strong&gt;类型选择恐惧症的反面——什么都用 &lt;code&gt;int&lt;/code&gt;。&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 4 章：还在写 `for (int i = 0; i &lt; 10; i&#43;&#43;)`？</title>
      <link>https://silentstormic.top/post/from_java_to_rust/04/</link>
      <pubDate>Mon, 15 Sep 2025 15:25:16 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/04/</guid>
      <description>&lt;p&gt;&lt;strong&gt;住手！你这样写了多少年烂代码了？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;别以为控制流就是把 &lt;code&gt;if&lt;/code&gt;、&lt;code&gt;for&lt;/code&gt; 从 Java 搬到 Rust。那点语法糖解决不了你的根本问题：&lt;strong&gt;你的思维还停留在上世纪。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Rust 的控制流要重新定义你对&amp;quot;控制&amp;quot;这个概念的理解。准备好接受降维打击了吗？&lt;/p&gt;&#xA;&lt;h2 id=&#34;核心革命从语句到表达式&#34;&gt;核心革命：从语句到表达式&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;第一课：忘掉你学过的一切。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;在 Java 里，&lt;code&gt;if&lt;/code&gt; 是个语句。语句就是&amp;quot;执行一个动作，然后什么都不返回&amp;quot;。想用 &lt;code&gt;if&lt;/code&gt; 做赋值？要么用那个丑陋的三元运算符 &lt;code&gt;condition ? a : b&lt;/code&gt;，要么写一堆冗余代码。&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 5 章：class 在哪里？</title>
      <link>https://silentstormic.top/post/from_java_to_rust/05/</link>
      <pubDate>Fri, 26 Sep 2025 18:49:27 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/05/</guid>
      <description>&lt;p&gt;&lt;strong&gt;这是每个 Java 程序员学 Rust 问的第一个问题。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;答案很残酷：&lt;strong&gt;Rust 没有 class。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;但先别慌，Rust 不是退步，而是进化。它要用一种更优雅、更安全、更灵活的方式来重新定义&amp;quot;对象&amp;quot;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;你准备好抛弃那些陈旧的面向对象思维了吗？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;思维革命数据与行为的分离&#34;&gt;思维革命：数据与行为的分离&lt;/h2&gt;&#xA;&lt;p&gt;Java 教会了我们什么？&lt;strong&gt;数据和行为必须绑定在一个 class 里。&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 6 章：准备好被虐了吗？</title>
      <link>https://silentstormic.top/post/from_java_to_rust/06/</link>
      <pubDate>Sun, 28 Sep 2025 18:58:35 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/06/</guid>
      <description>&lt;p&gt;&lt;strong&gt;前面那些都是开胃菜。现在，真正的 Rust 来了。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;所有权系统 —— 这就是 Rust 区别于其他一切语言的核心武器。它不是一个&amp;quot;功能&amp;quot;，不是一个&amp;quot;库&amp;quot;，而是一套&lt;strong&gt;不容违反的物理定律&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;编译器就是执法官，你就是嫌疑人。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;内存管理三种境界&#34;&gt;内存管理：三种境界&lt;/h2&gt;&#xA;&lt;p&gt;在我们开始之前，先上一堂&amp;quot;内存管理哲学课&amp;quot;：&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 7 章：上一章的痛苦体验过了吗？</title>
      <link>https://silentstormic.top/post/from_java_to_rust/07/</link>
      <pubDate>Wed, 08 Oct 2025 15:06:57 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/07/</guid>
      <description>&lt;p&gt;&lt;strong&gt;所有权系统逼着你转移来转移去，烦死了是不是？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;别慌，Rust 不是变态，它是完美主义者。既然给了你世界上最严格的内存管理，自然也要给你最优雅的解决方案。&lt;/p&gt;&#xA;&lt;p&gt;这就是&lt;strong&gt;借用系统&lt;/strong&gt;——让你在不失去所有权的前提下，优雅地使用数据。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;是时候让你见识真正的 Rust 魔法了。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;从笨拙到优雅一个华丽转身&#34;&gt;从笨拙到优雅：一个华丽转身&lt;/h2&gt;&#xA;&lt;h3 id=&#34;之前的笨拙做法&#34;&gt;之前的笨拙做法&lt;/h3&gt;&#xA;&lt;div class=&#34;code-block code-line-numbers open&#34; style=&#34;counter-reset: code-block 0&#34;&gt;&#xA;    &lt;div class=&#34;code-header language-rust&#34;&gt;&#xA;        &lt;span class=&#34;code-title&#34;&gt;&lt;i class=&#34;arrow fas fa-angle-right fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;ellipses&#34;&gt;&lt;i class=&#34;fas fa-ellipsis-h fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;copy&#34; title=&#34;复制到剪贴板&#34;&gt;&lt;i class=&#34;far fa-copy fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;    &lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-rust&#34; data-lang=&#34;rust&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// 上一章的垃圾代码&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;fn&lt;/span&gt; &lt;span class=&#34;nf&#34;&gt;calculate_length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;: &lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;-&amp;gt; &lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;usize&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;let&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;len&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;s&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;length&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 还要把所有权还回去，麻烦死了&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;&lt;strong&gt;这种代码写起来想死是不是？&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 8 章：终极 Boss 来了。</title>
      <link>https://silentstormic.top/post/from_java_to_rust/08/</link>
      <pubDate>Thu, 09 Oct 2025 15:17:48 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/08/</guid>
      <description>&lt;p&gt;前面学的所有权和借用只是开胃菜。&lt;strong&gt;生命周期才是 Rust 最变态的部分。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;它不会改变你程序的行为，不会提供新功能，它唯一的作用就是：&lt;strong&gt;让编译器变得更挑剔。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;但掌握了它，你就是真正的 Rust 专家。&lt;strong&gt;准备好接受终极挑战了吗？&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;编译器的困惑时刻&#34;&gt;编译器的困惑时刻&lt;/h2&gt;&#xA;&lt;p&gt;你以为编译器无所不能？&lt;strong&gt;天真！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;看看这个让编译器&amp;quot;脑子转不过来&amp;quot;的代码：&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 9 章：你们 Java 程序员最恨什么？</title>
      <link>https://silentstormic.top/post/from_java_to_rust/09/</link>
      <pubDate>Fri, 10 Oct 2025 22:01:04 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/09/</guid>
      <description>&lt;p&gt;&lt;code&gt;NullPointerException&lt;/code&gt;！那个价值&amp;quot;十亿美元的错误&amp;quot;，让多少个深夜变成了调试地狱。&lt;/p&gt;&#xA;&lt;p&gt;还有什么？&lt;code&gt;try-catch&lt;/code&gt; 的噩梦！要么用受检异常把方法签名搞得一团糟，要么用非受检异常埋下定时炸弹。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Rust 说：这些垃圾问题，我一个都不要。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;java-错误处理两个极端的灾难&#34;&gt;Java 错误处理：两个极端的灾难&lt;/h2&gt;&#xA;&lt;h3 id=&#34;npe运行时的恐怖故事&#34;&gt;NPE：运行时的恐怖故事&lt;/h3&gt;&#xA;&lt;div class=&#34;code-block code-line-numbers open&#34; style=&#34;counter-reset: code-block 0&#34;&gt;&#xA;    &lt;div class=&#34;code-header language-java&#34;&gt;&#xA;        &lt;span class=&#34;code-title&#34;&gt;&lt;i class=&#34;arrow fas fa-angle-right fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;ellipses&#34;&gt;&lt;i class=&#34;fas fa-ellipsis-h fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;copy&#34; title=&#34;复制到剪贴板&#34;&gt;&lt;i class=&#34;far fa-copy fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;    &lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Java 的日常灾难&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;getUserName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;int&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;User&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;findUser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 可能返回 null&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;user&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;getName&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;     &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 💥 NPE炸弹！&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;&lt;strong&gt;你永远不知道哪一行会炸。&lt;/strong&gt; 防御性编程？写一堆 &lt;code&gt;if (obj != null)&lt;/code&gt; 检查？&lt;strong&gt;代码变得恶心不说，还不一定管用。&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 10 章：Maven 的 XML 地狱受够了吗？Gradle 的 Groovy 脚本恶心不？</title>
      <link>https://silentstormic.top/post/from_java_to_rust/10/</link>
      <pubDate>Sat, 11 Oct 2025 08:43:00 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/10/</guid>
      <description>&lt;p&gt;&lt;strong&gt;恭喜你，解脱的时候到了。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Cargo 不只是一个构建工具，它是&lt;strong&gt;项目管理的终极解决方案&lt;/strong&gt;。一个工具搞定依赖管理、构建、测试、文档、发布——Maven 和 Gradle 联手都做不到的事情。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;是时候见识真正的现代化工具链了。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;java-构建工具功能强大体验糟糕&#34;&gt;Java 构建工具：功能强大，体验糟糕&lt;/h2&gt;&#xA;&lt;h3 id=&#34;mavenxml-的噩梦&#34;&gt;Maven：XML 的噩梦&lt;/h3&gt;&#xA;&lt;div class=&#34;code-block code-line-numbers open&#34; style=&#34;counter-reset: code-block 0&#34;&gt;&#xA;    &lt;div class=&#34;code-header language-xml&#34;&gt;&#xA;        &lt;span class=&#34;code-title&#34;&gt;&lt;i class=&#34;arrow fas fa-angle-right fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;ellipses&#34;&gt;&lt;i class=&#34;fas fa-ellipsis-h fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;copy&#34; title=&#34;复制到剪贴板&#34;&gt;&lt;i class=&#34;far fa-copy fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;    &lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-xml&#34; data-lang=&#34;xml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;cp&#34;&gt;&amp;lt;?xml version=&amp;#34;1.0&amp;#34; encoding=&amp;#34;UTF-8&amp;#34;?&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;project&lt;/span&gt; &lt;span class=&#34;na&#34;&gt;xmlns=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://maven.apache.org/POM/4.0.0&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;na&#34;&gt;xmlns:xsi=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://www.w3.org/2001/XMLSchema-instance&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;         &lt;span class=&#34;na&#34;&gt;xsi:schemaLocation=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;http://maven.apache.org/POM/4.0.0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s&#34;&gt;         http://maven.apache.org/xsd/maven-4.0.0.xsd&amp;#34;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;modelVersion&amp;gt;&lt;/span&gt;4.0.0&lt;span class=&#34;nt&#34;&gt;&amp;lt;/modelVersion&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;com.example&lt;span class=&#34;nt&#34;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;my-app&lt;span class=&#34;nt&#34;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.0.0&lt;span class=&#34;nt&#34;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;properties&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;maven.compiler.source&amp;gt;&lt;/span&gt;17&lt;span class=&#34;nt&#34;&gt;&amp;lt;/maven.compiler.source&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;maven.compiler.target&amp;gt;&lt;/span&gt;17&lt;span class=&#34;nt&#34;&gt;&amp;lt;/maven.compiler.target&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/properties&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;dependencies&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.apache.commons&lt;span class=&#34;nt&#34;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;commons-lang3&lt;span class=&#34;nt&#34;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            &lt;span class=&#34;nt&#34;&gt;&amp;lt;version&amp;gt;&lt;/span&gt;3.12.0&lt;span class=&#34;nt&#34;&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;nt&#34;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;lt;/dependencies&amp;gt;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;&amp;lt;/project&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;&lt;strong&gt;加个依赖要写这么多垃圾？&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 11 章：你以为换个语言，集合类就换个名字这么简单？</title>
      <link>https://silentstormic.top/post/from_java_to_rust/11/</link>
      <pubDate>Sun, 12 Oct 2025 08:43:03 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/11/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Naive！&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Java 的 &lt;code&gt;ArrayList&lt;/code&gt;、&lt;code&gt;String&lt;/code&gt;、&lt;code&gt;HashMap&lt;/code&gt; 在 GC 的保护下随便用。Rust 的 &lt;code&gt;Vec&lt;/code&gt;、&lt;code&gt;String&lt;/code&gt;、&lt;code&gt;HashMap&lt;/code&gt; 每一次操作都要过所有权系统的审查。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;这不是负担，这是进化。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;java-集合gc-庇护下的放纵&#34;&gt;Java 集合：GC 庇护下的放纵&lt;/h2&gt;&#xA;&lt;h3 id=&#34;java-的舒适圈&#34;&gt;Java 的&amp;quot;舒适圈&amp;quot;&lt;/h3&gt;&#xA;&lt;div class=&#34;code-block code-line-numbers open&#34; style=&#34;counter-reset: code-block 0&#34;&gt;&#xA;    &lt;div class=&#34;code-header language-java&#34;&gt;&#xA;        &lt;span class=&#34;code-title&#34;&gt;&lt;i class=&#34;arrow fas fa-angle-right fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;ellipses&#34;&gt;&lt;i class=&#34;fas fa-ellipsis-h fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;copy&#34; title=&#34;复制到剪贴板&#34;&gt;&lt;i class=&#34;far fa-copy fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;    &lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Java 的任性代码&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;List&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ArrayList&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;hello&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;add&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;world&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;first&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;get&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;0&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 随便取&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;copy&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;new&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;String&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;first&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 随便复制&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;list&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;clear&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 随便清空&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;o&#34;&gt;//&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;GC&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;负责一切&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;，&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;你什么都不用担心&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;&lt;strong&gt;爽吗？当然爽。高效吗？呵呵。&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 12 章：以为 Rust 没有接口？以为没有泛型？</title>
      <link>https://silentstormic.top/post/from_java_to_rust/12/</link>
      <pubDate>Mon, 13 Oct 2025 08:43:30 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/12/</guid>
      <description>&lt;p&gt;&lt;strong&gt;错了！Rust 有的是 Traits 和 Generics，比 Java 的接口和泛型强大一千倍。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Java 的接口系统？20 年前的设计。Rust 的 Trait 系统？21 世纪的现代抽象。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;准备好被彻底震撼吧。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;java-接口功能有限的古董&#34;&gt;Java 接口：功能有限的古董&lt;/h2&gt;&#xA;&lt;h3 id=&#34;java-接口的局限&#34;&gt;Java 接口的局限&lt;/h3&gt;&#xA;&lt;div class=&#34;code-block code-line-numbers&#34; style=&#34;counter-reset: code-block 0&#34;&gt;&#xA;    &lt;div class=&#34;code-header language-java&#34;&gt;&#xA;        &lt;span class=&#34;code-title&#34;&gt;&lt;i class=&#34;arrow fas fa-angle-right fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;ellipses&#34;&gt;&lt;i class=&#34;fas fa-ellipsis-h fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;copy&#34; title=&#34;复制到剪贴板&#34;&gt;&lt;i class=&#34;far fa-copy fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;    &lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;// Java 接口：只能定义方法签名&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;interface&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Drawable&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;draw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;();&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 不能定义字段&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 不能定义静态方法（Java 8之前）&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 不能为现有类型实现接口&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;Circle&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;implements&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Drawable&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;void&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;draw&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;()&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;System&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;out&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;println&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;Drawing a circle&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;);&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;&lt;strong&gt;问题一览：&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 13 章：Java 并发编程的噩梦经历过吗？</title>
      <link>https://silentstormic.top/post/from_java_to_rust/13/</link>
      <pubDate>Tue, 14 Oct 2025 08:43:33 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/13/</guid>
      <description>&lt;p&gt;&lt;code&gt;synchronized&lt;/code&gt; 的性能陷阱、&lt;code&gt;volatile&lt;/code&gt; 的语义混乱、&lt;code&gt;ConcurrentModificationException&lt;/code&gt; 的突然袭击、死锁调试的绝望时刻&amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;这些痛苦，Rust 要一次性终结。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Rust 的承诺：&lt;strong&gt;无畏并发（Fearless Concurrency）&lt;/strong&gt;。不是因为并发变简单了，而是因为编译器不允许你犯错。&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 14 章：Spring Boot 用腻了吗？启动时间长，内存占用高，JVM 调优让人头疼？</title>
      <link>https://silentstormic.top/post/from_java_to_rust/14/</link>
      <pubDate>Tue, 14 Oct 2025 09:43:35 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/14/</guid>
      <description>&lt;p&gt;&lt;strong&gt;是时候体验真正的 Web 服务性能了。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Rust 的 Web 框架不需要&amp;quot;魔法&amp;quot;，不需要反射，不需要依赖注入的复杂性。它们只需要一件事：&lt;strong&gt;让你的 API 快到飞起。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;准备好被 Rust Web 服务的性能震撼吧。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;spring-boot舒适的性能杀手&#34;&gt;Spring Boot：舒适的性能杀手&lt;/h2&gt;&#xA;&lt;h3 id=&#34;spring-boot-的便利代价&#34;&gt;Spring Boot 的&amp;quot;便利&amp;quot;代价&lt;/h3&gt;&#xA;&lt;div class=&#34;code-block code-line-numbers open&#34; style=&#34;counter-reset: code-block 0&#34;&gt;&#xA;    &lt;div class=&#34;code-header language-java&#34;&gt;&#xA;        &lt;span class=&#34;code-title&#34;&gt;&lt;i class=&#34;arrow fas fa-angle-right fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;ellipses&#34;&gt;&lt;i class=&#34;fas fa-ellipsis-h fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;        &lt;span class=&#34;copy&#34; title=&#34;复制到剪贴板&#34;&gt;&lt;i class=&#34;far fa-copy fa-fw&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;/span&gt;&#xA;    &lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-java&#34; data-lang=&#34;java&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@RestController&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nd&#34;&gt;@RequestMapping&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;/api&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;class&lt;/span&gt; &lt;span class=&#34;nc&#34;&gt;UserController&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nd&#34;&gt;@Autowired&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;private&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;UserService&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;userService&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 运行时注入，编译期不知道&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nd&#34;&gt;@GetMapping&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;/users/{id}&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;kd&#34;&gt;public&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ResponseEntity&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;User&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;getUser&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nd&#34;&gt;@PathVariable&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;Long&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 每个请求都经过：&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 1. Servlet 容器&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 2. Spring MVC 分发器&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 3. 控制器映射&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 4. 方法参数解析&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 5. 反序列化/序列化&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;c1&#34;&gt;// 6. 异常处理链&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;        &lt;/span&gt;&lt;span class=&#34;k&#34;&gt;return&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;n&#34;&gt;ResponseEntity&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;ok&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;userService&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;.&lt;/span&gt;&lt;span class=&#34;na&#34;&gt;findById&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;n&#34;&gt;id&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;));&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;p&gt;&lt;strong&gt;看起来简洁？代价是什么？&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>第 15 章：你做到了！</title>
      <link>https://silentstormic.top/post/from_java_to_rust/15/</link>
      <pubDate>Tue, 14 Oct 2025 10:43:37 +0800</pubDate>
      <guid>https://silentstormic.top/post/from_java_to_rust/15/</guid>
      <description>&lt;p&gt;从第一章的&amp;quot;Hello, World!&amp;ldquo;到第十四章的高性能 Web 服务，你已经完成了一次史诗级的技术蜕变。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;你不再是那个依赖 GC 的 Java 程序员，你现在是能与编译器对话的 Rust 开发者。&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;但这只是开始。Rust 的世界远比你想象的更广阔、更精彩、更有前途。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;准备好探索 Rust 的无限可能了吗？&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
