<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>开发 - 分类 - lihuu — 系统工程、AI 工具链与 Rust 开发博客</title>
        <link>https://silentstormic.top/categories/%E5%BC%80%E5%8F%91/</link>
        <description>开发 - 分类 - lihuu — 系统工程、AI 工具链与 Rust 开发博客</description>
        <generator>Hugo -- gohugo.io</generator><language>zh-CN</language><lastBuildDate>Fri, 22 May 2026 22:17:00 &#43;0800</lastBuildDate><atom:link href="https://silentstormic.top/categories/%E5%BC%80%E5%8F%91/" 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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/01/</guid>
    <description><![CDATA[<p>你是不是又在 IntelliJ IDEA 里敲着熟悉的 <code>@RestController</code>，配置着又一个 Spring Boot 项目？你是不是觉得自己已经是 Java 大神了——熟练掌握 JVM 调优，玩转各种设计模式，Lambda 表达式信手拈来？</p>
<p><strong>醒醒吧，朋友。</strong></p>
<p>现实世界远比你想象的残酷。当你的系统在高并发下因为 GC 停顿而丢失订单时，当你的微服务因为内存泄漏而频繁重启时，当你为了那点性能优化而绞尽脑汁时——你就会发现，Java 这个&quot;温暖的舒适区&quot;其实是个美丽的陷阱。</p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/02/</guid>
    <description><![CDATA[<p>在上一章里，我们已经见识了 Rust 的第一次&quot;暴击&quot;——没有 GC 却能保证内存安全。现在，准备好迎接第二次冲击吧。</p>
<p>你以为变量声明是最简单的事情？在 Java 里确实如此：<code>int x = 5;</code> 然后想怎么改就怎么改。但在 Rust 的世界里，<strong>连声明个变量都要重新学习</strong>。</p>
<p>这不是 Rust 在故意为难你，而是它在用最基础的语法特性，向你传递一个颠覆性的编程哲学。</p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/03/</guid>
    <description><![CDATA[<p>已经玩过变量声明了，现在该面对现实了：你那些&quot;万能&quot;的 <code>int</code>、<code>String</code> 在 Rust 面前就是个笑话。</p>
<p>别以为换个语言就是换个语法糖。Rust 的类型系统要重新刷新你对&quot;数据&quot;这个概念的认知。<strong>准备好被虐了吗？</strong></p>
<h2 id="标量类型精确到令人发指">标量类型：精确到令人发指</h2>
<p>Java 程序员最大的坏习惯是什么？<strong>类型选择恐惧症的反面——什么都用 <code>int</code>。</strong></p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/04/</guid>
    <description><![CDATA[<p><strong>住手！你这样写了多少年烂代码了？</strong></p>
<p>别以为控制流就是把 <code>if</code>、<code>for</code> 从 Java 搬到 Rust。那点语法糖解决不了你的根本问题：<strong>你的思维还停留在上世纪。</strong></p>
<p>Rust 的控制流要重新定义你对&quot;控制&quot;这个概念的理解。准备好接受降维打击了吗？</p>
<h2 id="核心革命从语句到表达式">核心革命：从语句到表达式</h2>
<p><strong>第一课：忘掉你学过的一切。</strong></p>
<p>在 Java 里，<code>if</code> 是个语句。语句就是&quot;执行一个动作，然后什么都不返回&quot;。想用 <code>if</code> 做赋值？要么用那个丑陋的三元运算符 <code>condition ? a : b</code>，要么写一堆冗余代码。</p>]]></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 &#43;0800</pubDate>
    <author>lihuu</author>
    <guid>https://silentstormic.top/post/from_java_to_rust/05/</guid>
    <description><![CDATA[<p><strong>这是每个 Java 程序员学 Rust 问的第一个问题。</strong></p>
<p>答案很残酷：<strong>Rust 没有 class。</strong></p>
<p>但先别慌，Rust 不是退步，而是进化。它要用一种更优雅、更安全、更灵活的方式来重新定义&quot;对象&quot;。</p>
<p><strong>你准备好抛弃那些陈旧的面向对象思维了吗？</strong></p>
<h2 id="思维革命数据与行为的分离">思维革命：数据与行为的分离</h2>
<p>Java 教会了我们什么？<strong>数据和行为必须绑定在一个 class 里。</strong></p>]]></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 &#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>
</channel>
</rss>
