<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>从Java到Rust - 标签 - lihuu — 系统工程、AI 工具链与 Rust 开发博客</title>
        <link>https://silentstormic.top/tags/%E4%BB%8EJava%E5%88%B0Rust/</link>
        <description>从Java到Rust - 标签 - lihuu — 系统工程、AI 工具链与 Rust 开发博客</description>
        <generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Tue, 14 Oct 2025 10:43:37 &#43;0800</lastBuildDate><atom:link href="https://silentstormic.top/tags/%E4%BB%8EJava%E5%88%B0Rust/" rel="self" type="application/rss+xml" /><item>
    <title>第 6 章：准备好被虐了吗？</title>
    <link>https://silentstormic.top/post/from_java_to_rust/06/</link>
    <pubDate>Sun, 28 Sep 2025 18:58:35 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/06/</guid>
    <description><![CDATA[<p><strong>前面那些都是开胃菜。现在，真正的 Rust 来了。</strong></p>
<p>所有权系统 —— 这就是 Rust 区别于其他一切语言的核心武器。它不是一个&quot;功能&quot;，不是一个&quot;库&quot;，而是一套<strong>不容违反的物理定律</strong>。</p>
<p><strong>编译器就是执法官，你就是嫌疑人。</strong></p>
<h2 id="内存管理三种境界">内存管理：三种境界</h2>
<p>在我们开始之前，先上一堂&quot;内存管理哲学课&quot;：</p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/07/</guid>
    <description><![CDATA[<p><strong>所有权系统逼着你转移来转移去，烦死了是不是？</strong></p>
<p>别慌，Rust 不是变态，它是完美主义者。既然给了你世界上最严格的内存管理，自然也要给你最优雅的解决方案。</p>
<p>这就是<strong>借用系统</strong>——让你在不失去所有权的前提下，优雅地使用数据。</p>
<p><strong>是时候让你见识真正的 Rust 魔法了。</strong></p>
<h2 id="从笨拙到优雅一个华丽转身">从笨拙到优雅：一个华丽转身</h2>
<h3 id="之前的笨拙做法">之前的笨拙做法</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-rust">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-rust" data-lang="rust"><span class="line"><span class="cl"><span class="c1">// 上一章的垃圾代码
</span></span></span><span class="line"><span class="cl"><span class="k">fn</span> <span class="nf">calculate_length</span><span class="p">(</span><span class="n">s</span>: <span class="nb">String</span><span class="p">)</span><span class="w"> </span>-&gt; <span class="p">(</span><span class="nb">String</span><span class="p">,</span><span class="w"> </span><span class="kt">usize</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="kd">let</span><span class="w"> </span><span class="n">length</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">s</span><span class="p">.</span><span class="n">len</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">(</span><span class="n">s</span><span class="p">,</span><span class="w"> </span><span class="n">length</span><span class="p">)</span><span class="w">  </span><span class="c1">// 还要把所有权还回去，麻烦死了
</span></span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>
<p><strong>这种代码写起来想死是不是？</strong></p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/08/</guid>
    <description><![CDATA[<p>前面学的所有权和借用只是开胃菜。<strong>生命周期才是 Rust 最变态的部分。</strong></p>
<p>它不会改变你程序的行为，不会提供新功能，它唯一的作用就是：<strong>让编译器变得更挑剔。</strong></p>
<p>但掌握了它，你就是真正的 Rust 专家。<strong>准备好接受终极挑战了吗？</strong></p>
<h2 id="编译器的困惑时刻">编译器的困惑时刻</h2>
<p>你以为编译器无所不能？<strong>天真！</strong></p>
<p>看看这个让编译器&quot;脑子转不过来&quot;的代码：</p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/09/</guid>
    <description><![CDATA[<p><code>NullPointerException</code>！那个价值&quot;十亿美元的错误&quot;，让多少个深夜变成了调试地狱。</p>
<p>还有什么？<code>try-catch</code> 的噩梦！要么用受检异常把方法签名搞得一团糟，要么用非受检异常埋下定时炸弹。</p>
<p><strong>Rust 说：这些垃圾问题，我一个都不要。</strong></p>
<h2 id="java-错误处理两个极端的灾难">Java 错误处理：两个极端的灾难</h2>
<h3 id="npe运行时的恐怖故事">NPE：运行时的恐怖故事</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-java">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="c1">// Java 的日常灾难</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kd">public</span><span class="w"> </span><span class="n">String</span><span class="w"> </span><span class="nf">getUserName</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">id</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">User</span><span class="w"> </span><span class="n">user</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">findUser</span><span class="p">(</span><span class="n">id</span><span class="p">);</span><span class="w">  </span><span class="c1">// 可能返回 null</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="k">return</span><span class="w"> </span><span class="n">user</span><span class="p">.</span><span class="na">getName</span><span class="p">();</span><span class="w">     </span><span class="c1">// 💥 NPE炸弹！</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>
<p><strong>你永远不知道哪一行会炸。</strong> 防御性编程？写一堆 <code>if (obj != null)</code> 检查？<strong>代码变得恶心不说，还不一定管用。</strong></p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/10/</guid>
    <description><![CDATA[<p><strong>恭喜你，解脱的时候到了。</strong></p>
<p>Cargo 不只是一个构建工具，它是<strong>项目管理的终极解决方案</strong>。一个工具搞定依赖管理、构建、测试、文档、发布——Maven 和 Gradle 联手都做不到的事情。</p>
<p><strong>是时候见识真正的现代化工具链了。</strong></p>
<h2 id="java-构建工具功能强大体验糟糕">Java 构建工具：功能强大，体验糟糕</h2>
<h3 id="mavenxml-的噩梦">Maven：XML 的噩梦</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-xml">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-xml" data-lang="xml"><span class="line"><span class="cl"><span class="cp">&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;project</span> <span class="na">xmlns=</span><span class="s">&#34;http://maven.apache.org/POM/4.0.0&#34;</span>
</span></span><span class="line"><span class="cl">         <span class="na">xmlns:xsi=</span><span class="s">&#34;http://www.w3.org/2001/XMLSchema-instance&#34;</span>
</span></span><span class="line"><span class="cl">         <span class="na">xsi:schemaLocation=</span><span class="s">&#34;http://maven.apache.org/POM/4.0.0
</span></span></span><span class="line"><span class="cl"><span class="s">         http://maven.apache.org/xsd/maven-4.0.0.xsd&#34;</span><span class="nt">&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;modelVersion&gt;</span>4.0.0<span class="nt">&lt;/modelVersion&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;groupId&gt;</span>com.example<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;artifactId&gt;</span>my-app<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;version&gt;</span>1.0.0<span class="nt">&lt;/version&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;properties&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;maven.compiler.source&gt;</span>17<span class="nt">&lt;/maven.compiler.source&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;maven.compiler.target&gt;</span>17<span class="nt">&lt;/maven.compiler.target&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;/properties&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;dependencies&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;dependency&gt;</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&lt;groupId&gt;</span>org.apache.commons<span class="nt">&lt;/groupId&gt;</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&lt;artifactId&gt;</span>commons-lang3<span class="nt">&lt;/artifactId&gt;</span>
</span></span><span class="line"><span class="cl">            <span class="nt">&lt;version&gt;</span>3.12.0<span class="nt">&lt;/version&gt;</span>
</span></span><span class="line"><span class="cl">        <span class="nt">&lt;/dependency&gt;</span>
</span></span><span class="line"><span class="cl">    <span class="nt">&lt;/dependencies&gt;</span>
</span></span><span class="line"><span class="cl"><span class="nt">&lt;/project&gt;</span></span></span></code></pre></div></div>
<p><strong>加个依赖要写这么多垃圾？</strong></p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/11/</guid>
    <description><![CDATA[<p><strong>Naive！</strong></p>
<p>Java 的 <code>ArrayList</code>、<code>String</code>、<code>HashMap</code> 在 GC 的保护下随便用。Rust 的 <code>Vec</code>、<code>String</code>、<code>HashMap</code> 每一次操作都要过所有权系统的审查。</p>
<p><strong>这不是负担，这是进化。</strong></p>
<h2 id="java-集合gc-庇护下的放纵">Java 集合：GC 庇护下的放纵</h2>
<h3 id="java-的舒适圈">Java 的&quot;舒适圈&quot;</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-java">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="c1">// Java 的任性代码</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">List</span><span class="o">&lt;</span><span class="n">String</span><span class="o">&gt;</span><span class="w"> </span><span class="n">list</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">ArrayList</span><span class="o">&lt;&gt;</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">list</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="s">&#34;hello&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">list</span><span class="p">.</span><span class="na">add</span><span class="p">(</span><span class="s">&#34;world&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">String</span><span class="w"> </span><span class="n">first</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="na">get</span><span class="p">(</span><span class="n">0</span><span class="p">);</span><span class="w">  </span><span class="c1">// 随便取</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">String</span><span class="w"> </span><span class="n">copy</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">String</span><span class="p">(</span><span class="n">first</span><span class="p">);</span><span class="w">  </span><span class="c1">// 随便复制</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="n">list</span><span class="p">.</span><span class="na">clear</span><span class="p">();</span><span class="w">  </span><span class="c1">// 随便清空</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="o">//</span><span class="w"> </span><span class="n">GC</span><span class="w"> </span><span class="n">负责一切</span><span class="err">，</span><span class="n">你什么都不用担心</span></span></span></code></pre></div></div>
<p><strong>爽吗？当然爽。高效吗？呵呵。</strong></p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/12/</guid>
    <description><![CDATA[<p><strong>错了！Rust 有的是 Traits 和 Generics，比 Java 的接口和泛型强大一千倍。</strong></p>
<p>Java 的接口系统？20 年前的设计。Rust 的 Trait 系统？21 世纪的现代抽象。</p>
<p><strong>准备好被彻底震撼吧。</strong></p>
<h2 id="java-接口功能有限的古董">Java 接口：功能有限的古董</h2>
<h3 id="java-接口的局限">Java 接口的局限</h3>
<div class="code-block code-line-numbers" style="counter-reset: code-block 0">
    <div class="code-header language-java">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="c1">// Java 接口：只能定义方法签名</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kd">interface</span> <span class="nc">Drawable</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="kt">void</span><span class="w"> </span><span class="nf">draw</span><span class="p">();</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c1">// 不能定义字段</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c1">// 不能定义静态方法（Java 8之前）</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="c1">// 不能为现有类型实现接口</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kd">class</span> <span class="nc">Circle</span><span class="w"> </span><span class="kd">implements</span><span class="w"> </span><span class="n">Drawable</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">draw</span><span class="p">()</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&#34;Drawing a circle&#34;</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>
<p><strong>问题一览：</strong></p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/13/</guid>
    <description><![CDATA[<p><code>synchronized</code> 的性能陷阱、<code>volatile</code> 的语义混乱、<code>ConcurrentModificationException</code> 的突然袭击、死锁调试的绝望时刻&hellip;</p>
<p><strong>这些痛苦，Rust 要一次性终结。</strong></p>
<p>Rust 的承诺：<strong>无畏并发（Fearless Concurrency）</strong>。不是因为并发变简单了，而是因为编译器不允许你犯错。</p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/14/</guid>
    <description><![CDATA[<p><strong>是时候体验真正的 Web 服务性能了。</strong></p>
<p>Rust 的 Web 框架不需要&quot;魔法&quot;，不需要反射，不需要依赖注入的复杂性。它们只需要一件事：<strong>让你的 API 快到飞起。</strong></p>
<p><strong>准备好被 Rust Web 服务的性能震撼吧。</strong></p>
<h2 id="spring-boot舒适的性能杀手">Spring Boot：舒适的性能杀手</h2>
<h3 id="spring-boot-的便利代价">Spring Boot 的&quot;便利&quot;代价</h3>
<div class="code-block code-line-numbers open" style="counter-reset: code-block 0">
    <div class="code-header language-java">
        <span class="code-title"><i class="arrow fas fa-angle-right fa-fw" aria-hidden="true"></i></span>
        <span class="ellipses"><i class="fas fa-ellipsis-h fa-fw" aria-hidden="true"></i></span>
        <span class="copy" title="复制到剪贴板"><i class="far fa-copy fa-fw" aria-hidden="true"></i></span>
    </div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="nd">@RestController</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nd">@RequestMapping</span><span class="p">(</span><span class="s">&#34;/api&#34;</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kd">public</span><span class="w"> </span><span class="kd">class</span> <span class="nc">UserController</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nd">@Autowired</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="kd">private</span><span class="w"> </span><span class="n">UserService</span><span class="w"> </span><span class="n">userService</span><span class="p">;</span><span class="w">  </span><span class="c1">// 运行时注入，编译期不知道</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nd">@GetMapping</span><span class="p">(</span><span class="s">&#34;/users/{id}&#34;</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="kd">public</span><span class="w"> </span><span class="n">ResponseEntity</span><span class="o">&lt;</span><span class="n">User</span><span class="o">&gt;</span><span class="w"> </span><span class="nf">getUser</span><span class="p">(</span><span class="nd">@PathVariable</span><span class="w"> </span><span class="n">Long</span><span class="w"> </span><span class="n">id</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c1">// 每个请求都经过：</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c1">// 1. Servlet 容器</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c1">// 2. Spring MVC 分发器</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c1">// 3. 控制器映射</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c1">// 4. 方法参数解析</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c1">// 5. 反序列化/序列化</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="c1">// 6. 异常处理链</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">        </span><span class="k">return</span><span class="w"> </span><span class="n">ResponseEntity</span><span class="p">.</span><span class="na">ok</span><span class="p">(</span><span class="n">userService</span><span class="p">.</span><span class="na">findById</span><span class="p">(</span><span class="n">id</span><span class="p">));</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span></span></span></code></pre></div></div>
<p><strong>看起来简洁？代价是什么？</strong></p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/15/</guid>
    <description><![CDATA[<p>从第一章的&quot;Hello, World!&ldquo;到第十四章的高性能 Web 服务，你已经完成了一次史诗级的技术蜕变。</p>
<p><strong>你不再是那个依赖 GC 的 Java 程序员，你现在是能与编译器对话的 Rust 开发者。</strong></p>
<p>但这只是开始。Rust 的世界远比你想象的更广阔、更精彩、更有前途。</p>
<p><strong>准备好探索 Rust 的无限可能了吗？</strong></p>]]></description>
</item>
</channel>
</rss>
