<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>往昔 on 映屿</title>
    <link>https://blog.verdant.ee/categories/%E5%BE%80%E6%98%94/</link>
    <description>Recent content in 往昔 on 映屿</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    
      <managingEditor>i@glowisle.me (五葉地錦)</managingEditor>
    
    
      <webMaster>i@glowisle.me (五葉地錦)</webMaster>
    
    
    
    <lastBuildDate>Wed, 12 Nov 2025 16:48:02 +0800</lastBuildDate>
    
    
    <atom:link href="http://blog.verdant.ee/categories/%E5%BE%80%E6%98%94/atom.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>使用Emacs收发邮件</title>
      <link>https://blog.verdant.ee/posts/email-with-emacs/</link>
      <pubDate>Wed, 12 Nov 2025 16:48:02 +0800</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/email-with-emacs/</guid>
      <description>&lt;p&gt;作为一个合格的操作系统，肯定少不了Email. 我的配置很简单，只要实现基础的收发功能即可，每天的邮件量不大。在这里记录一下配置。&lt;/p&gt;&#xA;&lt;h2 id=&#34;收邮件&#34;&gt;收邮件&lt;/h2&gt;&#xA;&lt;p&gt;我尝试过 &lt;strong&gt;&lt;a href=&#34;https://www.fetchmail.info&#34;&gt;fetchmail&lt;/a&gt;&lt;/strong&gt;，但不知道这个东西拿到的邮件都在哪，所以最后还是选择了 &lt;strong&gt;mbsync&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# ~/.mbsyncrc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# GlowIsle 账户配置&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IMAPAccount GlowIsle&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Host imap.qiye.aliyun.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Port 993&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;User i@glowisle.me&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Pass ******&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;TLSType IMAPS&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;AuthMechs LOGIN&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CertificateFile /etc/ssl/certs/ca-certificates.crt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# 远程存储&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;IMAPStore glowisle-remote&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Account GlowIsle&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# 本地存储&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MaildirStore glowisle-local&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Path ~/mail/GlowIsle/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Inbox ~/mail/GlowIsle/Inbox&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Subfolders Verbatim&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# 同步通道&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Channel glowisle&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Far :glowisle-remote:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Near :glowisle-local:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Patterns *&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Create Both&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Sync All&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Expunge Both&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;SyncState *&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;发邮件&#34;&gt;发邮件&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# ~/.msmtprc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;# glowisle&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;account glowisle &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;host smtp.qiye.aliyun.com&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;from i@glowisle.me&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;auth login&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;port 465&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;user i@glowisle.me&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;password ******* &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;auth on&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tls on&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tls_starttls off #使用465端口时不能开启&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tls_certcheck  off &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tls_trust_file /etc/ssl/certs/ca-certificates.crt&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;account default : glowisle&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;emacs-配置&#34;&gt;Emacs 配置&lt;/h2&gt;&#xA;&lt;p&gt;在Doom Emacs的&lt;code&gt;init.el&lt;/code&gt;中开启 mu4e&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#e69875&#34;&gt;:email&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    (mu4e +org)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-lisp&#34; data-lang=&#34;lisp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;;; config.el&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;(after! mu4e&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;;; 基本设置&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#e67e80&#34;&gt;setq&lt;/span&gt; mu4e-maildir &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;~/mail&amp;#34;&lt;/span&gt;     &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;; 邮件目录&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        mu4e-get-mail-command &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;mbsync -a&amp;#34;&lt;/span&gt;  &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;; 接收邮件命令&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        mu4e-update-interval &lt;span style=&#34;color:#d699b6&#34;&gt;300&lt;/span&gt;  &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;; 自动更新间隔（秒）&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        mu4e-view-show-images &lt;span style=&#34;color:#d699b6&#34;&gt;t&lt;/span&gt;   &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;; 显示图片&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        mu4e-compose-signature &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Best regards.\nVerdant&amp;#34;&lt;/span&gt;) &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;; 邮件签名&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;;; 使用 msmtp 发送邮件&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#e67e80&#34;&gt;setq&lt;/span&gt; message-send-mail-function &lt;span style=&#34;color:#e69875&#34;&gt;&amp;#39;message-send-mail-with-sendmail&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sendmail-program &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;/usr/bin/msmtp&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        sendmail-arguments &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;#39;&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;--read-envelope-from&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;--read-recipients&amp;#34;&lt;/span&gt;))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  (&lt;span style=&#34;color:#e67e80&#34;&gt;setq&lt;/span&gt; mu4e-contexts&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        (list&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;         (make-mu4e-context&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#e69875&#34;&gt;:name&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;GlowIsle&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#e69875&#34;&gt;:match-func&lt;/span&gt; (&lt;span style=&#34;color:#d699b6&#34;&gt;lambda&lt;/span&gt; (msg)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                        (&lt;span style=&#34;color:#d699b6&#34;&gt;when&lt;/span&gt; msg&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                          (string-match-p &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;^/GlowIsle&amp;#34;&lt;/span&gt; (mu4e-message-field msg &lt;span style=&#34;color:#e69875&#34;&gt;:maildir&lt;/span&gt;))))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#e69875&#34;&gt;:vars&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;#39;&lt;/span&gt;((user-mail-address &lt;span style=&#34;color:#7a8478&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;i@glowisle.me&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  (user-full-name    &lt;span style=&#34;color:#7a8478&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Verdant&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  (smtpmail-smtp-server &lt;span style=&#34;color:#7a8478&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;smtp.qiye.aliyun.com&amp;#34;&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  (smtpmail-smtp-service &lt;span style=&#34;color:#7a8478&#34;&gt;.&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;465&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                  (smtpmail-stream-type &lt;span style=&#34;color:#7a8478&#34;&gt;.&lt;/span&gt; starttls)))))&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  )&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;基本使用&#34;&gt;基本使用&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;SPC o m&lt;/code&gt; 进入 mu4e 主页面&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Basics&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [J]ump to some maildir&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * enter a [s]earch query&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [C]ompose a new message&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Bookmarks&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [bu] Unread messages      (0/0)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [bt] Today&amp;#39;s messages     (0/14)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [bw] Last 7 days&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [bp] Messages with images (0/0)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [bf] Flagged messages     (0/1)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Misc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [;]Switch focus&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [u]pdate email &amp;amp; database&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [N]ews&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [A]bout mu4e&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [H]elp&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    * [q]uit&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;hr&gt;&#xA;&lt;p&gt;微软的Outlook邮箱使用OAuth2.0认证，我暂时没找到成功的解决方案能在Emacs上使用，如果有哪位路过的好哥们知道方法请留言或&lt;a href=&#34;mailto:i@glowisle.me&#34;&gt;发个邮件&lt;/a&gt;探讨一下！&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>立场与观点</title>
      <link>https://blog.verdant.ee/posts/stand-and-thought/</link>
      <pubDate>Fri, 19 Sep 2025 20:49:24 +0800</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/stand-and-thought/</guid>
      <description>&lt;p&gt;&lt;figure class=&#34;image-caption&#34;&gt;&#xA;    &lt;img src=&#34;https://images.glowisle.me/stand-and-thought-cover.webp&#34; alt=&#34;&#34;&gt;&#xA;    &lt;figcaption&gt;&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&#xA;最近我们班的英语老师崴脚了，有另一位老师来代课，一些同学对这位老师的评价极负面，我对这个现象很感兴趣，借此次机会来聊聊观点和立场的话题。&lt;/p&gt;&#xA;&lt;p&gt;首先，任何一门学科，学生都会因为各种原因，对它持有不同的看法。对于一位老师的评价，主观上除了自认为的「老师的水平」，还有一个很大的元素是老师教的学科。而学科有强势与弱势之分，人面对学科时的激励或挫折感受不同，自然会生出喜爱与厌恶的情绪。对于老师的评价也难免受到自己对科目情绪的影响。&lt;/p&gt;&#xA;&lt;p&gt;每次下课都能听到一些同学对老师授课水平的评价：「狗屎」、「又臭又长」，以及人身攻击，直接辱骂老师的。基本都是「我觉得」、「俺寻思」，然后继续追问支支吾吾，仔细观察就能发现，那些恶言相向者都是不擅长英语的，如Q同学每天上课都心不在焉，百无聊赖，成绩不理想归结于「老师教的太烂」。他们的立场，已经开始作用于「评价」了。&lt;/p&gt;&#xA;&lt;p&gt;这些评价可以分为两类，情绪与人身攻击。都是立场的作用。立场，在哲学和社会学中，常指由一个人的社会身份（如阶级、性别、种族）、生活经验所形成的特定视角和认知框架。但我更愿意用这种说法 —— 所站立的地方。站在不同的角度，也就是不同的立场看待问题就会有不同的结果。所以，在一个不擅长英语的人眼中，与英语有关的东西会让他回忆起痛苦，这种偏见的形成，直接导致了评价的方向，也生出了情绪。除学科偏见外，立场的构成也有其他原因，如对原老师的喜爱和留恋，甚至是从众心理等。&lt;/p&gt;&#xA;&lt;p&gt;以上所描述，既不能称之为评价，又不能称之为观点，而是一种因先天能力、后天影响、个人经历等复杂因素共同作用导致的，带有情绪的看法。观点则是基于事实、理性分析形成的判断。何为评价？评定其价值。价值一定是一个值，或者一个区间，不能是负无穷或正无穷，所以价值不能是「好」与「不好」的二元对立。历史学科强调的评价原则是：&lt;strong&gt;辩证、全面、客观、实事求是&lt;/strong&gt;。所以把一些相通的概念借鉴来并补充，如何评价一位老师？辩证、全面、客观、实事求是、&lt;strong&gt;区分观点与立场&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;实事求是，即根据实证，求索真知；&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;所以从我们班级的客观情况来分析，由于皇亲国戚&lt;sup id=&#34;fnref:2&#34;&gt;&lt;a href=&#34;#fn:2&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;2&lt;/a&gt;&lt;/sup&gt;居多和一些职场人情世故，我们班级的师资力量可以说是全年级数一数二，甚至还有高中部的老师曾来代课过，这也基本能说明来我们班代课的老师都不会差，再差也不会到「狗屎」的地步。也有一位在本校工作的老师背后推动优化我班的师资水平，所以这位代课老师的真正水平，已经有两个明显的因素发挥作用。&lt;/p&gt;&#xA;&lt;p&gt;从授课节奏上看，与原老师几乎无异。课文翻译、短语、语法内容以及习题的讲评，也都是深入浅出、鞭辟入里的。只是由于代课老师工作繁忙，还有其它年级的学生要带，默写等基础工作不抓，有同学无自主学习的习惯，所以抱怨「看不懂题了」。即使课堂氛围营造不足，互动方式与原老师不同，也不应下降到人身攻击。&lt;/p&gt;&#xA;&lt;p&gt;另外一个原因，也是由于宽松的管理风格，导致同学们的不适应，只好把情绪宣泄在最明显的一个点 —— 老师身上。说来说去，最后的问题还是落在了自己。&lt;/p&gt;&#xA;&lt;p&gt;明辨是非而非混淆观点立场，调整适应而非辱骂拉踩的能力，在追求统一进度、弱化个性思考的标准化教育环境里异常可贵。这种能力，都是以思考为前提的。班级里用情绪主导判断的行为，是微小的时代缩影，在信息爆炸的时代，操控流量的人们刻意煽动情绪、制造爆点，宣扬极端化的观点，给出片面的，断章取义的结果，抹杀了思考的过程，从而导致很多人懒得思考，放弃思考，「没想过」、「不关心」、「不知道」成为常态，娱乐致死的邪风越刮越猛，麻木愚钝的浪潮愈发澎湃，想和同学交流看法，最后的一份坚守也能被尖锐质问：&lt;/p&gt;&#xA;&lt;p&gt;「你想这个干嘛？」&lt;/p&gt;&#xA;&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;&#xA;&lt;hr&gt;&#xA;&lt;ol&gt;&#xA;&lt;li id=&#34;fn:1&#34;&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://baike.baidu.com/item/%E5%AE%9E%E4%BA%8B%E6%B1%82%E6%98%AF/36312&#34;&gt;实事求是 - 百度百科&lt;/a&gt;&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li id=&#34;fn:2&#34;&gt;&#xA;&lt;p&gt;指教师子女。&amp;#160;&lt;a href=&#34;#fnref:2&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>夏日残影</title>
      <link>https://blog.verdant.ee/posts/%E5%A4%8F%E6%97%A5%E6%AE%8B%E5%BD%B1/</link>
      <pubDate>Thu, 14 Aug 2025 11:04:30 +0800</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/%E5%A4%8F%E6%97%A5%E6%AE%8B%E5%BD%B1/</guid>
      <description>&lt;h2 id=&#34;一&#34;&gt;一&lt;/h2&gt;&#xA;&lt;p&gt;“请各位勇士们扣好胸前的安全带。”&lt;/p&gt;&#xA;&lt;p&gt;一个甜美的机械女声响起。那是跳楼机开始运行前例行朗读的温馨提示。&lt;/p&gt;&#xA;&lt;p&gt;我从来都对这种游乐园没兴趣，但还是被硬拉来了。我当然不会花钱，冒着危险体验所谓的刺激感。&lt;/p&gt;&#xA;&lt;p&gt;我们在一个静僻的拐角，弟弟被挖掘机铲土的项目吸引住了。八月醉人的阳光和聒噪的蝉鸣把周围一切事物都裹挟起来了，有时其他游乐项目的方向传来的尖叫刺痛着颅骨。我趴在租赁来的观光车上，望着眼前摆动的树影。&lt;/p&gt;&#xA;&lt;p&gt;透过树影，看到了一条河，那条弯弯的波光粼粼的水道两边只有两排木栏杆，上面贴着“禁止攀爬”的告示。我向来都一个怕水、怕河、怕海，所以和河湖海有关的旅游提议都被我坚决反对了。&lt;/p&gt;&#xA;&lt;p&gt;对于一个不会游泳的人来说，生与死之间隔着的，就是这一栏崎岖的木头吧？如果那个人站在了那栏杆旁，生与死就在一念之间吧？那一排木栅栏就是这一念幻化的实体吧？&lt;/p&gt;&#xA;&lt;p&gt;我感觉花钱体验濒死快感和溺在刺眼的阳光普照的，温暖的河水里区别并不大。但我再怎么争辩，在勇士眼中，也都是胆小者的狡辩了。我看到那澄澈的水面下有一条红鲤鱼。&lt;/p&gt;&#xA;&lt;p&gt;想得出神，被一阵化学试剂的刺鼻味道拉了回来，转头一看是母亲在往自己脸部喷不知道是什么东西。&lt;/p&gt;&#xA;&lt;p&gt;母亲的心情一直很高涨，她一直元气满满地对待每一件事，可能是因为有期待吧，她期待晚上九点钟开始的烟花表演。可以说，我们这次来，就是为了看烟花。&lt;/p&gt;&#xA;&lt;p&gt;母亲的情绪越高涨，我心头那一根根稻草就越发沉重。为了防晒，她捂得严严实实。墨镜帽子黑口罩，活脱脱一个女明星上街的阵仗。&lt;/p&gt;&#xA;&lt;p&gt;防晒措施越完备，我体内灌的铅就越多。我无法通过她的表情，揣测当前的局势究竟怎样。恐惧来源于未知，但我已经不怎么怕了。&lt;/p&gt;&#xA;&lt;p&gt;很长时间没见到弟弟，父母在暑假刚开始把他送到农村的姥姥家了，我渡过了安静、平和、美好的一个半月。今天就把他接回家了，图书馆是个逃避的好去处，如果弟弟一定要在家的话。&lt;/p&gt;&#xA;&lt;p&gt;他终于玩腻了那堆土，我终于不用被囚禁在影子里享受游客的尖叫声了。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;二&#34;&gt;二&lt;/h2&gt;&#xA;&lt;p&gt;升空、翻腾，闪耀着。炽热的烟花冲破黑夜的阴冷和浮躁，飞上高空。&lt;/p&gt;&#xA;&lt;p&gt;但那都不是烟花最美的时候。烟花最美，最为人赞叹的那一瞬，一定是爆裂开来的那一瞬，随即就像欧律狄刻一样，湮灭在寂冷的夜空中了。&lt;/p&gt;&#xA;&lt;p&gt;舞台中央喷射出的八九道火舌贪婪地舔舐着上方烟花残余的硝烟，一股令人窒息的热浪扑面袭来。&lt;/p&gt;&#xA;&lt;p&gt;母亲很尽兴，带着满相册的照片上了回家的车，我也很尽兴。&lt;/p&gt;&#xA;&lt;p&gt;快到家时，后脖上突然传来一阵瘙痒。一抓，竟是一股树叶般的触感——软绵绵无力，又毛茸茸的触感，似乎要被团成一个球了。拿到眼前一看，是一只半死的蛾子，它右边的翅膀折断了，是乱飞，撞到我脖子上的吧。随手一丢，掉在挡把下了，被父亲来回挂挡折磨得奄奄一息。&lt;/p&gt;&#xA;&lt;p&gt;下了车，拿好东西准备上楼。我落脚太快，被咯了一下，正顾及脚趾传来的阵阵剧痛时，发现脚边有一个黑色的小身影。那是一只鸟。&lt;/p&gt;&#xA;&lt;p&gt;它立在楼梯的栏杆下边，还睁着眼。见人不跑，我断定它是死了，母亲呵斥我不许动“人家”，我当然没有那么缺德，只是看看。等父亲走上来了，我跟他说了这件事，他用脚碰了一下那只鸟，翅膀挣扎着扇动了一下，但没有飞走。&lt;/p&gt;&#xA;&lt;p&gt;楼道里昏暗的灯光一个劲儿地倾洒在这只鸟的身体，一片潦草的羽毛插在背上清晰可见。在那惨白灯光映衬下的无神的双眼更显呆滞和诡异，我又想起车上的那只蛾子。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>别闲着没事自搜，黑历史啊</title>
      <link>https://blog.verdant.ee/posts/%E5%88%AB%E9%97%B2%E7%9D%80%E6%B2%A1%E4%BA%8B%E8%87%AA%E6%90%9C%E9%BB%91%E5%8E%86%E5%8F%B2%E5%95%8A/</link>
      <pubDate>Wed, 06 Aug 2025 10:07:38 +0800</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/%E5%88%AB%E9%97%B2%E7%9D%80%E6%B2%A1%E4%BA%8B%E8%87%AA%E6%90%9C%E9%BB%91%E5%8E%86%E5%8F%B2%E5%95%8A/</guid>
      <description>&lt;h3 id=&#34;在bing自搜&#34;&gt;在Bing自搜&lt;/h3&gt;&#xA;&lt;p&gt;今天实在是太闲了，在bing搜了一下我自己的id，结果看到了早期刚建站时的各种黑历史。搜索引擎的缓存还没有消失，已经快一年了。甚至连最早用的第一个域名都挂在上面，但是那个域名现在已经易主了，现在是一个卖赌博机器的网站。估计站长看到有一个很蠢的中文页面还被搜索引擎收录也是很困惑。&lt;/p&gt;&#xA;&lt;p&gt;这么说来，我这一年的成长倒是挺多，证据就是看到这些东西就像看到自己四五年前发的朋友圈和QQ空间一样羞耻。可是前者能删，但搜索引擎也不是我家开的，只能保证不要经常更换域名和永久链接格式，等着搜索引擎自己移除了，以前分享自己Vim的配置，甚至传网盘，现在都想穿越回去给自己一巴掌。&lt;/p&gt;&#xA;&lt;h3 id=&#34;在bilibili自搜&#34;&gt;在BiliBili自搜&lt;/h3&gt;&#xA;&lt;p&gt;&lt;figure class=&#34;image-caption&#34;&gt;&#xA;    &lt;img src=&#34;https://images.glowisle.me/bilibili.webp&#34; alt=&#34;BiliBili&#34;&gt;&#xA;    &lt;figcaption&gt;BiliBili&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&lt;/p&gt;&#xA;&lt;p&gt;我能说什么，我只能呵呵呵。一群娼妓已经把这个网站占领了。在我关闭个性化推荐之前，满屏幕都是赛博妓女。乐器视频底下出奇多。但它们不如妓女，只要坐在镜头前，甚至不开摄像头，就会有人给这种人送钱，妓女起码付出了身体换取钱财，这种人就是典型的不劳而获。用赛博妓女这个词称呼都算侮辱了妓女。&lt;/p&gt;&#xA;&lt;h3 id=&#34;在google自搜&#34;&gt;在Google自搜&lt;/h3&gt;&#xA;&lt;p&gt;&lt;figure class=&#34;image-caption&#34;&gt;&#xA;    &lt;img src=&#34;https://images.glowisle.me/google.webp&#34; alt=&#34;Google&#34;&gt;&#xA;    &lt;figcaption&gt;Google&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&lt;/p&gt;&#xA;&lt;p&gt;比Bing收录的内容及时多了，起码不会到黑历史的程度。不过确确实实有一个真正意义上的黑历史，我承认当时的言论过于激进和轻浮了。但我会保持对跨性别群体的看法。&lt;/p&gt;&#xA;&lt;h3 id=&#34;在百度自搜&#34;&gt;在百度自搜&lt;/h3&gt;&#xA;&lt;p&gt;&lt;figure class=&#34;image-caption&#34;&gt;&#xA;    &lt;img src=&#34;https://images.glowisle.me/baidu.webp&#34; alt=&#34;Baidu&#34;&gt;&#xA;    &lt;figcaption&gt;Baidu&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&lt;/p&gt;&#xA;&lt;p&gt;很遗憾，只有指定&lt;code&gt;site:www.yingyu5658.me&lt;/code&gt;才能看到我的站点。&lt;/p&gt;&#xA;&lt;p&gt;&lt;figure class=&#34;image-caption&#34;&gt;&#xA;    &lt;img src=&#34;https://images.glowisle.me/baidu-2.webp&#34; alt=&#34;Baidu-2&#34;&gt;&#xA;    &lt;figcaption&gt;Baidu-2&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;在360自搜&#34;&gt;在360自搜&lt;/h3&gt;&#xA;&lt;p&gt;&lt;figure class=&#34;image-caption&#34;&gt;&#xA;    &lt;img src=&#34;https://images.glowisle.me/360.webp&#34; alt=&#34;360&#34;&gt;&#xA;    &lt;figcaption&gt;360&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&lt;/p&gt;&#xA;&lt;p&gt;搜&lt;code&gt;yingyu5658&lt;/code&gt;没有什么结果，但&lt;code&gt;映屿&lt;/code&gt;的权重甚至比那几个卖房的网页还高，在Bing上不是这样的。&lt;/p&gt;&#xA;&lt;h3 id=&#34;在yandex自搜&#34;&gt;在Yandex自搜&lt;/h3&gt;&#xA;&lt;p&gt;&lt;figure class=&#34;image-caption&#34;&gt;&#xA;    &lt;img src=&#34;https://images.glowisle.me/yandex.webp&#34; alt=&#34;Yandex&#34;&gt;&#xA;    &lt;figcaption&gt;Yandex&lt;/figcaption&gt;&#xA;&lt;/figure&gt;&lt;/p&gt;&#xA;&lt;p&gt;Github页面比较靠前，前一阵子在Bing上几乎搜不到&lt;code&gt;yingyu5658.me&lt;/code&gt;这个域名，结果都是Github Pages。&lt;/p&gt;&#xA;&lt;p&gt;看似自搜，实际上是检测各大搜索引擎对自己网站的收录情况，现在国人用的最多的搜索引擎应该是Bing吧，对个人站算是比较友好了，甚至一年前的链接都不下，可能和我之前弃用服务器、更换域名的处理手法有关，但那时候真是什么都不懂，虽然现在也是。&lt;/p&gt;&#xA;&lt;p&gt;还有一些不知名的小网站收录了我以前写的技术文章，不过也都是老链接，hexo的链接。&lt;/p&gt;</description>
    </item>
    <item>
      <title>无蝉鸣夏</title>
      <link>https://blog.verdant.ee/posts/%E6%97%A0%E8%9D%89%E9%B8%A3%E5%A4%8F/</link>
      <pubDate>Tue, 22 Jul 2025 20:56:08 +0800</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/%E6%97%A0%E8%9D%89%E9%B8%A3%E5%A4%8F/</guid>
      <description>&lt;p&gt;学校里的海棠花谢了两次了，老师每次都会带着我们出去拍照。花确实很美，但我每次都恐于留下不堪的回忆，拍照时都远远躲去了。一天又一天地盼着的暑假到来了。十几天像流水奔去。&lt;/p&gt;&#xA;&lt;p&gt;总能见到一种人，每天因逝者如斯夫而悲鸣，在网上。慨叹时间太快，自己太空虚。每天抱着手机刷几个小时视频，看到比自己强的人，继续焦虑地刷视频。到了晚上，按照惯例把自己思维反刍的结果公布在群聊里。神奇的是，这种负能量满满的人，反而更有广阔的社交圈子。我的意思是，有很多喜欢安慰这种人的人。能量实在是高，保持自己的情绪不被影响（待研究）的同时，能去安慰别人。&lt;/p&gt;&#xA;&lt;p&gt;我个人当然是对这种负能量者敬而远之的，但实在是好奇那些安慰者是如何保持冷静和感性和那种人沟通。&lt;/p&gt;&#xA;&lt;p&gt;而有的人又不领这份人情，把别人投来的好心曲解成说教，真为那些安慰者愤怒。当然，他们不会愤怒，因为他们永远能保持冷静和感性。&lt;/p&gt;&#xA;&lt;p&gt;去年的七月二十二日我在想些什么呢？&lt;/p&gt;&#xA;&lt;p&gt;这个暑假格外寂静。蝉都跑去别的树上了，不愿意在我家门口浪费所生不多的生命。虽聒噪，但好歹也是盛夏元素，以前从来都没有对这个季节抱有那么大的关注。以后一定要移居南方，不为别的，起码在读书、画画时经常可以听到真真切切的雨声。耳机戴时间长了对耳朵也不好。&lt;/p&gt;&#xA;&lt;p&gt;父亲之前买来的虫叫了几周就死了，期末考试的作文我还拿他来凑过字数，现在被扔到了哪个垃圾桶、尸体碎成了几段都不知道了。好像是因为断掉一条腿，就不吃不喝，活生生饿死的，至于那条腿是怎么断的，也和尸体的去向形态一样无从得知。&lt;/p&gt;&#xA;&lt;p&gt;一次上课回来，在植被繁茂的小区，树上的蝉好像约定好了在某一时刻突然一起鸣叫，震耳欲聋。我好奇它们在哪，朝树上张望，什么也看不见，只闻蝉鸣震耳欲聋。&lt;/p&gt;&#xA;&lt;p&gt;暑假确实寂静，不闻蝉鸣，也没有狗叫纷扰，关闭朋友圈和QQ空间确实是一个正确的选择，少了焦虑，多了清净，薄如蝉翼的交情在屏蔽对方的那一刻彻底被撕碎了。&lt;/p&gt;&#xA;&lt;p&gt;开学又要回到聒噪的、持续高压的环境，多希望能一直保持这样的状态，不用接触各种类人生物，安静自在地呼吸，初三的放学时间延后到八点半，但愿能活下来。我会怀念一个人坐在房间里，借着阴雨天窗边映下来的蓝冷色调的光读书，听雨打在玻璃上的哒哒声的日子，和带着耳机，听着自己喜欢的歌，坐在公交车最后排，在去图书馆的路上欣赏风景的日子。&lt;/p&gt;&#xA;&lt;p&gt;这种生活和早上六七点背着沉重的书包，拖着疲惫的身体匆匆出门，在拥挤嘈杂的人群中感受冲天的死气和体臭一对比，顿觉窒息。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>基于身边扩列者行为观察的结论</title>
      <link>https://blog.verdant.ee/posts/kuo-lie/</link>
      <pubDate>Sat, 12 Jul 2025 16:13:14 +0800</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/kuo-lie/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;本文描绘的群体画像仅代表个人在社交媒体上所见，尤其是&lt;strong&gt;音游圈&lt;/strong&gt;的行为，不代表所有人。观点包含个人主观推测，谨慎甄别。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;我把朋友圈和QQ空间关闭的原因之一就是有很多扩列的。一直很不解，扩列的意义到底是什么？&lt;/p&gt;&#xA;&lt;p&gt;微信和QQ的扩列（在我的圈子里）堪称两个极端。微信的扩列：无自我介绍，无任何信息，甚至连小朋友们最喜欢玩的MBTI也不贴，直接就是一个二维码，旁边放一个前凸后翘大长腿的网图，文案是“➕”。&lt;/p&gt;&#xA;&lt;p&gt;而QQ的扩列是另一个极端。滑好几页的自我介绍。年龄、MBTI人格、玩什么游戏，玩到了什么成绩、看什么动漫、坐标（也就是所在省份）等等面面俱到。&lt;/p&gt;&#xA;&lt;p&gt;一些扩列条我甚至第一条都读不懂：“&lt;strong&gt;cn是他妈的什么？&lt;/strong&gt;”&lt;/p&gt;&#xA;&lt;p&gt;查了一下才知道，原来这是类似“圈名”的概念，类似的术语还有很多，但这又是另一个圈子的分支。&lt;/p&gt;&#xA;&lt;p&gt;点进精心装修得金碧辉煌的QQ空间，读着会员专属字体配色的尊贵文字，可以发现扩列行为大概可以分类两种：以兴趣为导向，寻找游戏玩伴等；缓解孤独感：纯粹交友。前者在筛选把控和精准匹配上很是下功夫。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;这个扩列这个圈子有一个很有意思的词：“雷”。据业内人士透露，雷就是指讨厌的事情，在扩列条上写明自己讨厌的事，防止踩雷，这在我看来是一种挺高明的做法，有概率避免被冒犯，但也无形中增加了交流负担，且易暴露关系的脆弱性。如果“雷”被踩直接炸，确实危险。&lt;/p&gt;&#xA;&lt;p&gt;什么雷、单删等条条框框，有些人极端夸张，甚至因为对方“单删”自己，直接把ta挂在空间，意图网暴。高强度活跃于空间/朋友圈也能说明ta们有着很强的分享欲。无论好事坏事，美事糗事，都要往朋友圈/空间发。此时，开头的问题有了答案。&lt;/p&gt;&#xA;&lt;p&gt;扩列的意义究竟是什么？&lt;/p&gt;&#xA;&lt;p&gt;我得出的结论之一是：&lt;strong&gt;建立自我价值感&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;自我价值感包含自信、自爱和自尊三个递进层，最终发展为&lt;strong&gt;自尊&lt;/strong&gt;。在认知层面，是个体对自身才能，社会地位，声誉的评估。&lt;/p&gt;&#xA;&lt;p&gt;我所观察到的部分群体在扩列活动中，自我价值感的建立主要体现在自信层面，由空间互赞的行为，在主观上提升自己的声誉；在高强度活跃于圈子中渐渐积累地位。&lt;/p&gt;&#xA;&lt;p&gt;说说/朋友圈的赞数和评论量化了声誉和社会地位，这在自我价值感的建立中是起正向作用的。但极端者，表达欲会被扭曲，从“我想分享什么”，变成总在想“别人会喜欢我分享什么”的转变，标志着自我价值以内在感受和体验评估，变成了由外部反馈提供。彻底迷失在众人目光注视之下。&lt;/p&gt;&#xA;&lt;p&gt;结论之二是：&lt;strong&gt;获得新鲜感&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;一块刚出锅的红薯和放了一下午的红薯口感肯定不同。持续交友，保持新鲜感。我也见过有人很喜欢社交媒体的红点，能营造出一种自己很受欢迎的氛围，而扩列就能做到这点：“新的好友申请”、“新消息”等。&lt;/p&gt;&#xA;&lt;p&gt;人与人之间的交际关系可以用图的结构来表示，扩列条的转发让一个节点的属性放射性地广播出去，跨更远的节点，建立链接。这张图几乎是不会断的，因为人的社交网络是不会断的，如果这个扩列条一直被转发，那么理论上就有可能走到互联网的每一个角落，从而产生持续性。如果人们停止转发，那自己就再发一条，请求好友们继续转发。&lt;/p&gt;&#xA;&lt;p&gt;然而这仅仅是理论上的设想，社交网络并非一张无限连接到全世界所有人的图，而是分裂成一小块一小块不同的图，各为一个圈，仅少数活跃在多个圈子的人可能链接着两个小图。所以信息的传递效率没有理论上那么恐怖，这也就为兴趣为导向的扩列提供了积极作用，至少可以在小圈子内传播，找到同好。&lt;/p&gt;&#xA;&lt;p&gt;扩列行为中普遍存在的一个现象是加了好友，几乎没有任何互动，我称之为“僵尸好友”。这是&lt;a href=&#34;https://baike.baidu.com/item/150%E5%AE%9A%E5%BE%8B/2112262&#34;&gt;邓巴数字&lt;/a&gt;的一个很好的验证。&lt;/p&gt;&#xA;&lt;p&gt;小圈子中个体的小圈子浓缩再浓缩，最后形成所谓的小团体，高强度互动，筛选把控和精准匹配此时已经达到最终目的。&lt;/p&gt;&#xA;&lt;p&gt;这也就是我得出的第三个结论：&lt;strong&gt;获得归属感&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;包括MBTI、属性图等主观上容易被判断为贴标签的行为，也是在寻找归属感。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>C语言下的二进制文件IO踩坑</title>
      <link>https://blog.verdant.ee/posts/c%E8%AF%AD%E8%A8%80%E4%B8%8B%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6io/</link>
      <pubDate>Sat, 12 Jul 2025 00:26:59 +0800</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/c%E8%AF%AD%E8%A8%80%E4%B8%8B%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6io/</guid>
      <description>&lt;p&gt;C语言下的二进制文件读写有个坑，就是一定要按存储的顺序读取。例：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;struct&lt;/span&gt; player {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; id;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; XP;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; MP;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}player;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里有一个玩家的数据结构，我们创建变量并初始化。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; b_i[&lt;span style=&#34;color:#d699b6&#34;&gt;32&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;233&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2453&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;5432&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;21&lt;/span&gt; ,&lt;span style=&#34;color:#d699b6&#34;&gt;43&lt;/span&gt; ,&lt;span style=&#34;color:#d699b6&#34;&gt;297&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;752&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;643&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;player yingyu5658;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yingyu5658.MP &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;100&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yingyu5658.XP &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;100&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;yingyu5658.id &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;114514&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;对文件进行存储时，按照MP=&amp;gt;XP=&amp;gt;ID的顺序存储&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pd &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;fopen&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;./data&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;wb&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;fwrite&lt;/span&gt;(&lt;span style=&#34;color:#7a8478&#34;&gt;&amp;amp;&lt;/span&gt;yingyu5658.MP, &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt;), &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, pd);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;fwrite&lt;/span&gt;(&lt;span style=&#34;color:#7a8478&#34;&gt;&amp;amp;&lt;/span&gt;yingyu5658.XP, &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt;), &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, pd);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;fwrite&lt;/span&gt;(&lt;span style=&#34;color:#7a8478&#34;&gt;&amp;amp;&lt;/span&gt;yingyu5658.id, &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;), &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, pd);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;读取的时候一定要按照这个顺序，否则读取出来的内容是无效的。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; id;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; XP, MP;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pd &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;fopen&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;./data&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;rb&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;fread&lt;/span&gt;(&lt;span style=&#34;color:#7a8478&#34;&gt;&amp;amp;&lt;/span&gt;MP, &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt;), &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, pd);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;fread&lt;/span&gt;(&lt;span style=&#34;color:#7a8478&#34;&gt;&amp;amp;&lt;/span&gt;XP, &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt;), &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, pd);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;fread&lt;/span&gt;(&lt;span style=&#34;color:#7a8478&#34;&gt;&amp;amp;&lt;/span&gt;id, &lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;), &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, pd);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;player new_player;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;new_player.id &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; id;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;new_player.XP &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; XP;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;new_player.MP &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; MP;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;id: %d&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;, new_player.id);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;XP: %f&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;, new_player.XP);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;MP: %f&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;, new_player.MP);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;运行结果：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;写入了id: 114514&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;写入了XP: 100.000000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;写入了MP: 100.000000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;id: 114514&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;XP: 100.000000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;MP: 100.000000&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;使用完也要关闭流，否则资源泄漏&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;fclose&lt;/span&gt;(pd);  &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 必须显式关闭&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <title>C语言实现简易Shell</title>
      <link>https://blog.verdant.ee/posts/c%E8%AF%AD%E8%A8%80%E5%AE%9E%E7%8E%B0%E7%AE%80%E6%98%93shell/</link>
      <pubDate>Thu, 10 Jul 2025 00:09:36 +0800</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/c%E8%AF%AD%E8%A8%80%E5%AE%9E%E7%8E%B0%E7%AE%80%E6%98%93shell/</guid>
      <description>&lt;p&gt;实现一个Shell，需要的功能有：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;循环读取用户输入&lt;/li&gt;&#xA;&lt;li&gt;输出提示符&lt;/li&gt;&#xA;&lt;li&gt;创建子进程执行命令&lt;/li&gt;&#xA;&lt;li&gt;等待回收子进程&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;shell中的大多数命令都是通过创建子进程来执行的，可以使用&lt;code&gt;fork()&lt;/code&gt;创建子进程，然后替换主进程执行命令。&#xA;创建&#xA;常用函数原型&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;pid_t&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;fork&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;void&lt;/span&gt;); &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// pid_t是int类型&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;pid_t&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;get_pid&lt;/span&gt;(); &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 获取当前进程pid&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;pid_ &lt;span style=&#34;color:#b2c98f&#34;&gt;getppid&lt;/span&gt;(); &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 获取当前进程的父进程值&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;fork()&lt;/code&gt;用于创建创建一个进程，所阐明的进程复制父进程的代码段/数据段/BSS段/等所有用户空间信息，在内和中操作系统重新为其申请了一个PCB，并使用父进程的PCB初始化。&lt;/p&gt;&#xA;&lt;p&gt;实现fork()子进程替换为命令子进程, 最佳的进程替换的接口是&lt;code&gt;exevp()&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;在创建子进程前，我们需要解析传递给shell的参数&lt;/p&gt;&#xA;&lt;p&gt;使用&lt;code&gt;strtok()&lt;/code&gt;对command以空格进行分割，所以显而易见地，得到的结果数组中，第0位是命令名称，后面全部都是选项。&lt;/p&gt;&#xA;&lt;p&gt;使用&lt;code&gt;waitpid()&lt;/code&gt;等待子进程，&lt;code&gt;fork()&lt;/code&gt;获取的子进程id可以用于制定回收子进程。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#e67e80;font-style:italic&#34;&gt;&amp;lt;pwd.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#e67e80;font-style:italic&#34;&gt;&amp;lt;sys/wait.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#e67e80;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#e67e80;font-style:italic&#34;&gt;&amp;lt;string.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#e67e80;font-style:italic&#34;&gt;&amp;lt;sys/types.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#e67e80;font-style:italic&#34;&gt;&amp;lt;unistd.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#define MAX_COMMAND_SIZE 256&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;main&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;command_argv[MAX_COMMAND_SIZE];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt; command[MAX_COMMAND_SIZE];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#b2c98f&#34;&gt;memset&lt;/span&gt;(command, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#39;\n&amp;#39;&lt;/span&gt;, MAX_COMMAND_SIZE);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#e67e80&#34;&gt;const&lt;/span&gt; &lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; user_name &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;getlogin&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#e67e80&#34;&gt;while&lt;/span&gt;(&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;[%s@EazyShell]$ &amp;#34;&lt;/span&gt;, user_name);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#b2c98f&#34;&gt;fgets&lt;/span&gt;(command, MAX_COMMAND_SIZE, stdin);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;   command[&lt;span style=&#34;color:#b2c98f&#34;&gt;strcspn&lt;/span&gt;(command, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;)] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#39;\0&amp;#39;&lt;/span&gt;; &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 去掉末尾的换行符&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 分割命令行，一个空格为一项子命令或参数&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;command_argv[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;strtok&lt;/span&gt;(command,&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; index &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#e67e80&#34;&gt;while&lt;/span&gt;(command_argv[index&lt;span style=&#34;color:#7a8478&#34;&gt;++&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;strtok&lt;/span&gt;(&lt;span style=&#34;color:#d699b6&#34;&gt;NULL&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34; &amp;#34;&lt;/span&gt;));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 创建子进程，并进程替换&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#dbbc7f&#34;&gt;pid_t&lt;/span&gt; id &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;fork&lt;/span&gt;();&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt;(id &lt;span style=&#34;color:#7a8478&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 进程替换&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#b2c98f&#34;&gt;execvp&lt;/span&gt;(command_argv[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;], command_argv);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt;  &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;; &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 失败则退出-1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 父进程回收子进程&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; status &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#dbbc7f&#34;&gt;pid_t&lt;/span&gt; ret &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;waitpid&lt;/span&gt;(id, &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;amp;&lt;/span&gt;status, &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (ret &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;&#x9;&lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;父进程成功回收子进程, exit_code: %d, exit_sig: %d&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;WEXITSTATUS&lt;/span&gt;(status), &lt;span style=&#34;color:#b2c98f&#34;&gt;WTERMSIG&lt;/span&gt;(status));&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&#x9;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#x9;&lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个程序的健壮性和内存布局还有待优化，但只是一个简易的shell，用于理解它的工作原理，这就够了。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>C语言的可变参数</title>
      <link>https://blog.verdant.ee/posts/c%E8%AF%AD%E8%A8%80%E7%9A%84%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0/</link>
      <pubDate>Sat, 05 Jul 2025 18:32:52 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/c%E8%AF%AD%E8%A8%80%E7%9A%84%E5%8F%AF%E5%8F%98%E5%8F%82%E6%95%B0/</guid>
      <description>&lt;h2 id=&#34;介绍&#34;&gt;介绍&lt;/h2&gt;&#xA;&lt;p&gt;C语言中，&lt;code&gt;printf()&lt;/code&gt;和&lt;code&gt;scanf()&lt;/code&gt;函数就是典型的变参函数，其优点是灵活处理参数。&lt;/p&gt;&#xA;&lt;p&gt;想要创建变参函数需引入头文件&lt;code&gt;stdarg.h&lt;/code&gt;，它有一些宏：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;va_list 指向整个可变参数列表的指针&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;原型：typedef char* va_list;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;va_start 指向可变参数列表前的参数（...前的参数）&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;原型：void va_start(va_list ap, paramN);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;va_arg 可变参数列表&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;原型：typedef va_arg(va_list ap, type)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;va_end 结束对可变参数列表的访问，并释放资源&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;原型：void va_end(va_list ap);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;使用例&#34;&gt;使用例&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#e67e80;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#e67e80;font-style:italic&#34;&gt;&amp;lt;stdarg.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 定义一个使用省略号的函数原型&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; argument, ...)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 声明一个va_list类型的变量ap，这是可变参数列表&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        va_list ap;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 使用va_start把变量ap初始化为参数列表&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#b2c98f&#34;&gt;va_start&lt;/span&gt;(ap, argument);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 第二个参数表明本函数期望传入一个int类型&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 但是编译器不会检查到底输入了什么。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; output &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;va_arg&lt;/span&gt;(ap, &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;可变参数：%d&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;, output);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#b2c98f&#34;&gt;va_end&lt;/span&gt;(ap);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;main&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#b2c98f&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;109&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;输出：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;可变参数：109&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;函数起了作用，但是如果我们需要接受多个参数，应该如何获取呢？&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#e67e80;font-style:italic&#34;&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#e67e80;font-style:italic&#34;&gt;&amp;lt;stdarg.h&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 定义一个使用省略号的函数原型&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;void&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; argument, ...)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 声明一个va_list类型的变量ap，这是可变参数列表&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        va_list ap;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 使用va_start把变量ap初始化为参数列表，此处的第二个参数是最后一个固定参数&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#b2c98f&#34;&gt;va_start&lt;/span&gt;(ap, argument);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 第二个参数表明本函数期望传入一个int类型&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 但是编译器不会检查到底输入了什么。&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; arguments_list[&lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;for&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;; i &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;; i&lt;span style=&#34;color:#7a8478&#34;&gt;++&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                arguments_list[i] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;va_arg&lt;/span&gt;(ap, &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;); &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 按int类型提取参数&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#b2c98f&#34;&gt;va_end&lt;/span&gt;(ap);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 遍历参数列表并打印&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;for&lt;/span&gt; (&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; i &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;; i &lt;span style=&#34;color:#7a8478&#34;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;; i&lt;span style=&#34;color:#7a8478&#34;&gt;++&lt;/span&gt;) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;                &lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;可变参数%d：%d&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;\n&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;&lt;/span&gt;, i &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, arguments_list[i]);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;main&lt;/span&gt;()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#b2c98f&#34;&gt;function&lt;/span&gt;(&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;10&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;12&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;111&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;扩展va_start的第二个参数的工作原理&#34;&gt;扩展：&lt;code&gt;va_start&lt;/code&gt;的第二个参数的工作原理&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;va_start&lt;/code&gt;的第二个参数用于定位可变参数列表的起始位置，具体而言，它指向函数参数列表中最后一个固定参数（即省略号前的参数），通过该参数的地址计算出第一个可变参数在内存中的位置。&lt;/p&gt;&#xA;&lt;p&gt;C函数的参数按从右至左顺序入栈（栈底高地址，栈顶低地址）&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;va_start&lt;/code&gt;的第二个参数作为基准点，其地址加上自身大小后，即指向第一个可变参数的起始地址。&lt;/p&gt;&#xA;&lt;p&gt;所以&lt;code&gt;...&lt;/code&gt;前至少要有一个固定参数用于寻址。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>宅</title>
      <link>https://blog.verdant.ee/posts/%E5%AE%85/</link>
      <pubDate>Mon, 30 Jun 2025 19:47:00 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/%E5%AE%85/</guid>
      <description>&lt;p&gt;朋友上周几次约我出去打羽毛球，都被我婉拒了。那个周末刚刚考完期末，又是我最爱的阴雨天，很难不趁着大好时光不在家修养身心，而是冒着雨出去打羽毛球几个小时，大汗淋漓，虚弱疲惫地走回家，做什么事都提不起精神，睡觉也觉得浪费时间。在家里并没有什么很想干的事，我没有打游戏的习惯，很早之前就已经戒掉电子游戏。在家里的娱乐活动无非就是看书、听歌、画画、练琴，写代码折磨一下自己应该也能凑个数。我非常依赖在家里独处时的充电，只要远离人群的嘈杂即可。&lt;/p&gt;&#xA;&lt;p&gt;他们吐槽了一下我有点宅，只喜欢呆在家里，我无法反驳，确实是这样。没什么别的原因，单纯觉得家里安全，我是一个很怕死的人。今天去奶奶家拿饭，突然发现那里简直集齐了让我感到恐惧的所有元素。&lt;/p&gt;&#xA;&lt;p&gt;小区旁有一条铁轨，时常有火车呼啸而过，我对噪音极度敏感。走到楼栋前，左右两旁各两个楼道入口，正常人当然选择坐电梯，第二个让我感到恐惧的，幽闭的电梯。小时候奶奶为了保障我坐电梯的安全，会讲一些关于电梯的安全事故来吓唬我，虽然今天我已经知道了那些大部分都不是真的，而且电梯层层保护非常安全，但每次走到电梯里我都会死死盯着显示楼层的那块屏幕（虽然这并没有任何作用），生怕冲顶或坠落，命丧于电子棺材里。终于煎熬地乘完电梯，可以往家门走了。楼道前一个没有封窗的常年大开的窗户，狭窄的楼道里光是远远往下眺望就已经让人胆寒，但神奇的是有那么一两个瞬间，我竟然生出了跳下去的念头，我应该很怕死的。难以想象我童年的日子是怎么近乎每天都在这里度过的。&lt;/p&gt;&#xA;&lt;p&gt;同样地，我也抗拒旅游。也许是因为回忆起近些年旅游的滋味都不是很好。拖着个不懂事的弟弟，他总是会让所有人都不开心，大家不开心，我也没什么能开心的。冬天冷夏天热，景点人挤人，只有能量相当大的人才能感受到快乐吧。&lt;/p&gt;&#xA;&lt;p&gt;在朋友圈里看到一个亲戚发带着自家孩子出门去苏州旅游，我很佩服她。带着家人跨越小半个中国。其中有一张照片是她的孩子站在船上，身后就是一片水。这就是我恐惧的又一个元素，水。&lt;/p&gt;&#xA;&lt;p&gt;小时候泡温泉，失足滑落到大概高我两头的池子里，在水里扑腾了半分钟才出来，索性憋住一口气，当时我的身高是完全不足以控制自己的身体朝向的，最后抓住岸边的栏杆才保住小命。自那次以后，我对水的恐惧就开始伴随我到现在了，我也许一辈子都不会去苏州那种水乡或海边。&lt;/p&gt;&#xA;&lt;p&gt;每次出去旅游，甚至是上立交桥都会胡思乱想。比如车子突然失控从桥上坠落，家人走散，落水&amp;hellip;&amp;hellip;我无法继续写下去我的内心所想，这又会把我拉入恐惧。语文老师曾经读过我的某一篇文章后，评价道我是很典型的悲观主义者，无法反驳，确实典型。&lt;/p&gt;&#xA;&lt;p&gt;综上，我为了保命，保证精神不崩溃，会减少旅游等危险活动。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>好文章</title>
      <link>https://blog.verdant.ee/posts/%E5%A5%BD%E6%96%87%E7%AB%A0/</link>
      <pubDate>Wed, 18 Jun 2025 21:53:51 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/%E5%A5%BD%E6%96%87%E7%AB%A0/</guid>
      <description>&lt;h2 id=&#34;心灵小语&#34;&gt;心灵小语&lt;/h2&gt;&#xA;&lt;p&gt;我们的语文作业从初一开始就偶尔留一项叫“心灵小语“的作业，文风可以和博客比较相似。但毕竟是要给老师看的，措辞还是要严谨一点。前两天的语文课老师读了两篇文章，巧了，我最受不了这种文章————用力堆砌耀眼夺目的辞藻，如青春、奋斗、阳光、生活。这就是老师眼中的好文章，扮演一个老师喜欢的性格，讲写点能敲出回声的文字，点意林风格的俗套故事。&lt;/p&gt;&#xA;&lt;p&gt;对不起，这种耀眼的词汇会让我被燃烧成灰。&lt;/p&gt;&#xA;&lt;p&gt;我不是标榜我的文章写的多好，只是单纯厌恶这种堆辞藻、假大空。以我的水平五十步笑百步又如何，名为心灵小语，心灵敲出的回声比文字还大，老师美其名曰：”以文观人”，好好观吧，多观观吹口气就破的纸壳吧；多观观用图钉钉在脸上的真诚的笑吧；多观观炽热的可燃的木头削成的心灵吧。烧了都嫌&lt;strong&gt;恶臭&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;活了十四年，我感受到的所谓的青春就是四五十个人挤在一个小屋子里研究一个这辈子也不会用到的式子的结果是什么。明明任何一个理科都非常有趣，但总是被迫去研究最没有意义的一个环节，痛苦又无奈。所以我痛恨代数，几何多在探究“为什么“而不是”是什么”。这才是数学让人有成就感的一环。&lt;/p&gt;&#xA;&lt;p&gt;现在明白了，大家很爱说上岸这个词，原来是从苦海游上来了。&lt;/p&gt;&#xA;&lt;p&gt;真他妈恶心，我的青春啊。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>怪癖</title>
      <link>https://blog.verdant.ee/posts/%E6%80%AA%E7%99%96/</link>
      <pubDate>Thu, 12 Jun 2025 21:16:01 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/%E6%80%AA%E7%99%96/</guid>
      <description>&lt;p&gt;我这人怪癖挺多的，屋子里不能拉开窗帘，我讨厌被别人看到；屋子里只留一盏台灯和电子设备的光，很有安全感；电脑桌面上不能有任何图标，我爱干净。&lt;/p&gt;&#xA;&lt;p&gt;屋子里静静的，只有空调运转和电脑硬盘读写的机械声。暖黄色的台灯灯光不会分散太多注意力，在学校喧闹一天后，这是最快的“回血”方法。很难想象那些住宿学校的学生是什么支撑着他们活下去，如果是我，我大概率会跳楼。我喜欢雨天，也跟这个有点关系，非常有安全感，非常舒适，望着天上的云，总有种熟悉的感觉，说不上来是什么，是在梦里，又或许是小时候见到过类似的场景，冷白色调的阴天光线总是有种熟悉感。&lt;/p&gt;&#xA;&lt;p&gt;我对噪音非常敏感，完全受不了人群的嘈杂声，那会让我筋疲力尽，除了睡的晚，这也是我在学校课间几乎睡满的原因。每天中午打饭时，百家争鸣百花齐放，没有一个人类，没有一个人类的行为，我正好坐在第一排，所有表演我都是最近距离的观众。光是看着折腾吵闹就已经让人筋疲力尽。&lt;/p&gt;&#xA;&lt;p&gt;手机常年静音勿扰，我极度厌恶手机的提示音，别人能动几下手指就简单地侵入我的生活，极度厌恶。把手机打开静音模式，是我自己在主动接受信息，只有在我想看的时候才能输入信息，而不是做一半事情就被突兀的响铃和震动打断。&lt;/p&gt;&#xA;&lt;p&gt;所有软件都是暗色模式，所有。如上文，我经常在灯光昏暗的环境下，刺眼的白光很不舒服，最极端的时间，手机、电脑、平板壁纸都是一张纯黑的图片，大道至简。但博客不同，内容风格不太适合暗色，我感觉纯技术博客更适合暗色，极客风吧。&lt;/p&gt;&#xA;&lt;p&gt;由于长期使用Vim，我也讨厌操作鼠标，甚至浏览器都装上了Vim插件，所有能用Vim模式的软件都在用Vim模式。&lt;/p&gt;&#xA;&lt;p&gt;高考最后一天，我们学校是考点，我在家休假。实在无聊，就去镜子前看自己，盯着看，镜子里的世界太真实了，哪一个才是真正的我？看得出神，感觉下一秒就能冲破镜框，搂到对方的后背。看着镜子里的自己，一种陌生感和恐惧感油然而生。我真的活着，我真的是我，镜子里这个人是谁？会不会他才是真正的我？&lt;/p&gt;&#xA;&lt;p&gt;又是一段东拼西扯的意识流文字。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>4Key音游段位单曲成绩计算的程序实现</title>
      <link>https://blog.verdant.ee/posts/4key%E9%9F%B3%E6%B8%B8%E6%AE%B5%E4%BD%8D%E5%8D%95%E6%9B%B2%E6%88%90%E7%BB%A9%E8%AE%A1%E7%AE%97%E7%9A%84%E7%A8%8B%E5%BA%8F%E5%AE%9E%E7%8E%B0/</link>
      <pubDate>Sat, 07 Jun 2025 13:08:07 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/4key%E9%9F%B3%E6%B8%B8%E6%AE%B5%E4%BD%8D%E5%8D%95%E6%9B%B2%E6%88%90%E7%BB%A9%E8%AE%A1%E7%AE%97%E7%9A%84%E7%A8%8B%E5%BA%8F%E5%AE%9E%E7%8E%B0/</guid>
      <description>&lt;h2 id=&#34;前言&#34;&gt;前言&lt;/h2&gt;&#xA;&lt;p&gt;其实这个坑我很早以前就想开了，在我刚开始学编程那会就一直想写一个这个东西。但苦于数学进度没达到，要用到加权平均数，这东西我前两天才学到，之前对数学也一直是懒得学的状态，要不然几乎是看不懂那个算法的。&lt;/p&gt;&#xA;&lt;p&gt;我手头有一个&lt;a href=&#34;https://github.com/Special-Week&#34;&gt;Special-Week&lt;/a&gt;写的网页版的单曲成绩计算器，就以这个为研究样本吧。以下简称原作者为sw（如有冒犯请联系修改）&lt;/p&gt;&#xA;&lt;h2 id=&#34;数据结构设计&#34;&gt;数据结构设计&lt;/h2&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 基础的4k类&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;class&lt;/span&gt; Dan4k {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        constructor(key1, key2, key3, key4, danName) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_key1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; key1;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_key2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; key2;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_key3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; key3;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_key4 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; key4;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_danName &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; danName;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;每一个段（LN、Om），sw都单独写了一个内部类，继承Dan4k。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// lnDan类&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;class&lt;/span&gt; LnDan &lt;span style=&#34;color:#e67e80&#34;&gt;extends&lt;/span&gt; Dan4k {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        constructor(key1, lnKey1, key2, lnKey2, key3, lnKey3, key4, lnKey4, danName) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;super&lt;/span&gt;(key1, key2, key3, key4, danName);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_lnKey1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; lnKey1;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_lnKey2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; lnKey2;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_lnKey3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; lnKey3;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_lnKey4 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; lnKey4;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// ma段&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;class&lt;/span&gt; MaDan &lt;span style=&#34;color:#e67e80&#34;&gt;extends&lt;/span&gt; Dan4k {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        constructor(key1, key2, key3, key4, name1, name2, name3, name4, danName) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;super&lt;/span&gt;(key1, key2, key3, key4, danName);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name1;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name2;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name3;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name4 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name4;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// reform段&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;class&lt;/span&gt; ReformDan &lt;span style=&#34;color:#e67e80&#34;&gt;extends&lt;/span&gt; Dan4k {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        constructor(key1, key2, key3, key4, name1, name2, name3, name4, danName) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;super&lt;/span&gt;(key1, key2, key3, key4, danName);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name1;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name2;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name3;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;this&lt;/span&gt;.m_name4 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; name4;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// om段&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;class&lt;/span&gt; OmDan &lt;span style=&#34;color:#e67e80&#34;&gt;extends&lt;/span&gt; Dan4k {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        constructor(key1, key2, key3, key4, danName) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;super&lt;/span&gt;(key1, key2, key3, key4, danName);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;我打算重写的程序不带LN玩了，我自己也没玩过LN，不清楚是什么机制。那就来看看剩下的几个类。&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;Dan4k&lt;/code&gt;类定义了一个段位的基础属性，但是这个参数key1-4是用来做什么在当前上下文暂且不清楚，是第n首歌的物量吧。&lt;/p&gt;&#xA;&lt;p&gt;那么由此可以推断，这些类都描述了一个谱面的基本属性：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;物量&lt;/li&gt;&#xA;&lt;li&gt;歌曲名称&lt;/li&gt;&#xA;&lt;li&gt;段位名称&#xA;然后分支匹配数据并计算。我也用C语言实现一个。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 整个段位信息&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;struct&lt;/span&gt; Dan {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 段位名字&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; dan_name; &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 四首歌的名字，用于匹配数据&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; song1_name;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; song2_name;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; song3_name;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; song4_name;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 四首歌的物量&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; song1_key;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; song2_key;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; song3_key;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; song4_key;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}Dan;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;来看看网页版中数据是如何存储的&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// MaDan数据&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; MaArr &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; [&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;813&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;955&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;907&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;654&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Glitch Nerds&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Borealis&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Niflheim&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Moon&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;1dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1152&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;850&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;950&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;969&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Follow Tomorrow&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Bronze Coffin&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Keigan no Zettaireido&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;SakuraMirage&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;2dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1169&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1143&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;974&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1347&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Quon&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Genkyoku o Kirikizamu&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Gin no Kaze&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Adjudicatorz-Danzai-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;3dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1400&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1402&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1685&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1599&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Tenkuu no Yoake&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;VALLISTA&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Crystal World ~Fracture~&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Zenithalize&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;4dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1953&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2250&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2166&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1667&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Ten Thousand Tons of Anonymous Letters&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Chips of Notes&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Despair of Elferia&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Kamigami no Asobi&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;5dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1487&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1424&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1381&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1587&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Sweet Cherry X&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Akasagarbha&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;HELLO EveryOne&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;DataErr0r&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;6dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1909&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1814&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1777&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2681&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Fairy Stage&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Xross Infection&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Wave&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Blue Zenith&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;7dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1962&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1067&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2388&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1772&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;The Lost Dedicated&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;The Party We Have Never Seen&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Finixe&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Ultimate Dream&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;8dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1799&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2023&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2283&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1787&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Dusk&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Panic Popn Picnic&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Kick-ass Kung-Fu Carnival&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Yakusoku no kimi&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;9dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2606&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2188&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2194&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2187&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Chaser&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Loli Fantasy&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Daydream&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Moon Gate&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;10dan&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2160&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1952&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1821&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3249&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Border of Life&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Scorpion Dance&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;The Island of Albatross&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;beautiful loli thing&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex1&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2871&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2024&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1871&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2452&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Hitsune no youmeiri&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;紫阳花-AZISAI-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;love&amp;amp;justice&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;message&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex2&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2327&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1593&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2166&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2200&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Jumble Rumble&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;End Time&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;++&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Crow Solace&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2731&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2653&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2033&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2761&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;EDM Jumpers&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;line-epsilon&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Contrapasso -paradiso-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;YELL!&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex4&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;3229&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2731&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2561&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2109&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Satori de Pon!&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Legend of Seeker&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Crystal World -Fracture-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Wizdomiot&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex5&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1766&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1861&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3171&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1680&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Sepia&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Nopea&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Satori Trisis&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Death&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex6&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2339&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2461&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2511&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2177&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Paranoia&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Boulafacet&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Paraclete -Miracle-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Yumemi no Shonen&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex7&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1929&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2380&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2710&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;4675&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Martail Arts&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Gene Disruption&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Paradigm Shift&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Death Melody&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex8&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;3468&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3335&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3698&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;5061&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Only my railgun&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;-Purgatorium-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Blue Zenith&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Inner Universe&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;exfin&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;492&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;529&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;595&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;681&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Ikitoshi Ikerumono&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Rambling Pleat&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Yi Meng Qian Xiao&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;White Eternity&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;0danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;695&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;621&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;718&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1279&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Rex Incoqnito&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Koiseyo Otome!&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Break&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;KING&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;1danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1397&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1090&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;805&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1212&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Stargazer&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Seyana&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Love Emotion&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Mermaid Girl&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;2danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1055&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1489&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1288&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1789&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Koi Kou Enishi&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Onegai!Kon Kon Oinari-sama&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;The Last page&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Hoshi ga Furanai Machi&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;3danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1865&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1434&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1284&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1839&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Umiyuri Kaiteitan&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Fire in the sky&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Icyxis&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;The Crimson Empire&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;4danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1282&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1706&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1473&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1939&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Platinum Disco&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Cute na Kanojo&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Reimei Sketchbook&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Joker&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;5danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1694&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1636&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1803&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2115&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Chocolate Disco&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Call Me, Beep Me (If You Wanna Reap Me)&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;DIE IN THE SEA&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;unhappy century&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;6danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1701&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1799&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2132&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1899&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Don&amp;#39;t Stop The Music&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Six Acid Strings&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Arkadia [Illusion]&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Valkyrie Revolutia&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;7danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2237&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2081&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2280&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2000&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Don&amp;#39;t let you down&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Yoru ni Kakeru&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Snow Veil -Shoujo to Kemono no Mori-&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Positive Dance Time&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;8danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2374&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1899&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2142&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1810&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Kikai Shoujo Gensou&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Cold Planet&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Stray Star&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Unleashed World&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;9danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2034&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1740&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2270&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2166&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Hiensou&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Rocky Buinne&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Yue Ai Yue Ye&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Spin Eternally&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;10danv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;1952&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2013&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1953&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2111&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Scorpion Dance&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Tailin no Soul&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Eiya no Parade&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Onsoku Uchuu Ryokou&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex1v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2107&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1953&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2386&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2674&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Moments&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Towards the Horizon&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Torikago&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Frontier Explorer&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex2v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2518&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2636&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2326&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2511&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Edison&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;INTERNET OVERDOSE&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Euthanasia&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Fin.ArcDeaR&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex3v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2634&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2212&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2336&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2602&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ZENITHALIZE&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Asymmetrical Grooves&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Pure Ruby&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;EVERLASTING HAPPiNESS&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex4v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2734&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2417&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3089&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2974&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Bring Our Ignition Back&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Unsan-musho&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Electric Angel&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Kegare Naki Bara Juuji&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex5v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2483&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2276&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2921&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3194&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Defeat awaken battle ship&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Extraction&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Pastel Subliminal&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Synthesized Fortress&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex6v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2846&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2260&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2333&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3347&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;LiFE Garden&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Alpha&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Stay Alive&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Heaven&amp;#39;s Fall&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex7v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;3789&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3663&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2424&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3255&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Hayabusa&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Shuu no hazama&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Amatsukami&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;CRIMSON FIGHTER&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex8v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;3888&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3030&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3581&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3700&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;crazy_tek (DJ Noriken Remix)&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Nhelv&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Shuuten&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Deadly force - Put an end&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;ex9v3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;new&lt;/span&gt; MaDan(&lt;span style=&#34;color:#d699b6&#34;&gt;2828&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3362&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;3393&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;5100&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Infinity Heaven&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;NEURO-CLOUD-9&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Kizuato&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;Runengon&amp;#34;&lt;/span&gt;, &lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;exfinv3&amp;#34;&lt;/span&gt;),&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    ]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;可以看到，简单地调用构造函数新建对象。继续实现：&#xA;我们可以写一个&lt;code&gt;init&lt;/code&gt;函数，根据需要创建结构体变量。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;Dan&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;dan_data_init&lt;/span&gt;(Dan&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;, &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; songs_key);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;第二个参数是存放物量的数组，这样就实现了代码复用，减少重复代码的编写，定义一次所有物量即可。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 常规段&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_1dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;813&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;955&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;907&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;654&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_2dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1152&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;850&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;950&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;969&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_3dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1169&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1143&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;974&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1347&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_4dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1400&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1402&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1685&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1599&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_5dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1953&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2250&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2166&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1667&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_6dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1487&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1424&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1381&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1587&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_7dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1909&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1814&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1777&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2681&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_8dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1962&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1067&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2388&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1772&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_9dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;1799&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2023&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2283&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;1787&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; mld_10dan_total_keys[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {&lt;span style=&#34;color:#d699b6&#34;&gt;2606&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2188&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2194&lt;/span&gt;, &lt;span style=&#34;color:#d699b6&#34;&gt;2187&lt;/span&gt;};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这里目前把常规段都录入了，那要怎么按需匹配创建结构体变量呢？可以通过一个指针数组保存这些数据数组的地址，然后根据用户输入的数字直接作为索引，创建结构体变量并进行初始化赋值。&lt;/p&gt;&#xA;&lt;p&gt;优点：避免if/switch分支判断逐个比较，时间复杂度为常数阶。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; dan_total_keys_index[] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; {mld_1dan_total_keys, mld_2dan_total_keys, mld_3dan_total_keys, mld_4dan_total_keys, mld_5dan_total_keys, mld_6dan_total_keys, mld_7dan_total_keys, mld_8dan_total_keys, mld_9dan_total_keys, mld_10dan_total_keys};&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;后续接着往这个数组里面装指针即可。&lt;/p&gt;&#xA;&lt;p&gt;基本的数据结构实现了，就可以开始研究一下算法，后续再录入数据吧。&lt;/p&gt;&#xA;&lt;h2 id=&#34;算法实现&#34;&gt;算法实现&lt;/h2&gt;&#xA;&lt;p&gt;曾经听群友讲过这个东西核心理念是加权平均数，最近才学到，那就来看看怎么做这个平均数吧。&lt;/p&gt;&#xA;&lt;p&gt;直接看原作者是怎么实现的&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;function&lt;/span&gt; normal_calculation(accArr, noteArr) {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; score1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; temp1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; score2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; temp1 &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; temp2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; score3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; temp2 &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; temp3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; score4 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; temp3 &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;])&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; [score1, score2, score3, score4]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;第一首的ACC不变，这个不说了。&lt;/p&gt;&#xA;&lt;p&gt;这个temp算的是什么？？？&lt;/p&gt;&#xA;&lt;p&gt;刚刚去看了一下引用，accArr存放着四首的玩家成绩Acc，noteArr存着这四首歌的Note总数量。&lt;/p&gt;&#xA;&lt;p&gt;还是没搞明白这个temp在干什么，看这段代码是真想骂街啊。&lt;/p&gt;&#xA;&lt;p&gt;用1dan举例子，Note和ACC：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;813, 955, 907, 654&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;99   98   96   94&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;del&gt;叠批来了&lt;/del&gt;&lt;/p&gt;&#xA;&lt;p&gt;Malody的每一个判定都有不同的权重，都有对应不同的Acc衰减，所以每一首歌曲结束后都是一个加权平均数。程序要做的事情就是逆推出原本的Acc。&lt;/p&gt;&#xA;&lt;p&gt;所以&lt;code&gt;accArr&lt;/code&gt;是一个累计加权平均值数组。&#xA;&lt;code&gt;noteArr&lt;/code&gt;是每批数据的权重。&#xA;目标：计算每批数据的&lt;strong&gt;独立加权平均值&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;h3 id=&#34;数学逻辑&#34;&gt;数学逻辑&lt;/h3&gt;&#xA;&lt;p&gt;&lt;strong&gt;第一批数据：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; score1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;直接使用第一个累计平均值a1，此时只有第一批数据。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;第二批数据：&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-js&#34; data-lang=&#34;js&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; temp1 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; accArr[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;let&lt;/span&gt; score2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; temp1 &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; noteArr[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;累计平均值&lt;code&gt;a2 = (n1s1 +n2s2) / (n1 + n2)&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;解得&lt;code&gt;s2&lt;/code&gt;:&lt;code&gt;(n1 +n2)a2 - n1s1 / n2&lt;/code&gt;&#xA;&amp;hellip;&amp;hellip;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;额&amp;hellip;这一顿推导，给我也整不会了。我数学奇烂，那就用一个简明易懂的例子来理解吧。&lt;/p&gt;&#xA;&lt;h3 id=&#34;人话&#34;&gt;人话&lt;/h3&gt;&#xA;&lt;p&gt;假设参加了4次考试&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;第一次考了80分(score1)&lt;/li&gt;&#xA;&lt;li&gt;第二次的平均分是93.3(accArr[1])&lt;/li&gt;&#xA;&lt;li&gt;第三次的平均分是95(accArr[2])&lt;/li&gt;&#xA;&lt;li&gt;第四次的平均分是97.5(accArr[3])&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;但是你忘了每次考试的重要程度（权重）：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;第一次考试占10(noteArr[0] = 10)&lt;/li&gt;&#xA;&lt;li&gt;第二次 20(noteArr[1] = 20)&lt;/li&gt;&#xA;&lt;li&gt;第三次  30(noteArr[2] = 30)&lt;/li&gt;&#xA;&lt;li&gt;第四次 40(noteArr[3] = 40)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;你想知道每次考试单独的平均分是多少&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;第一次考试：&#xA;直接用平均分（因为只有一次考试）&lt;/li&gt;&#xA;&lt;li&gt;第二次考试：&#xA;先算总分：&lt;code&gt;前两次总分 = (10+20)*93.3 = 2800&lt;/code&gt;&#xA;减去第一次的分数：&lt;code&gt;第二次分数 = 2800 - 10 * 80 = 2000&lt;/code&gt;&#xA;第二次平均分： &lt;code&gt;score2 = 2000 / 20 = 100&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;第三次考试：&#xA;总分：&lt;code&gt;(10 + 20 + 30 )*95 = 5700&lt;/code&gt;&#xA;减去前两次：&lt;code&gt;第三次分数 = 5700 - 2800&lt;/code&gt;&#xA;平均分：&lt;code&gt;score3 = 2900 / 30 ≈ 96.7&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;第四次考试&#xA;总分：&lt;code&gt;(10+20+30+40)*97.5 = 9750&lt;/code&gt;&#xA;减去前3次：&lt;code&gt;第四次分数 = 9750 - 5700 = 4050&lt;/code&gt;&#xA;平均分：&lt;code&gt;score4 = 4050 / 40 = 101.25&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;写着写着突然发现&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;typedef&lt;/span&gt; &lt;span style=&#34;color:#e67e80&#34;&gt;struct&lt;/span&gt; Dan&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 四首歌的物量&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; songs_total_keys;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;} Dan;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这个数据结构只需要一个数组。&lt;/p&gt;&#xA;&lt;p&gt;人话说完了，该说说计算机的话了。&lt;/p&gt;&#xA;&lt;h3 id=&#34;实现&#34;&gt;实现&lt;/h3&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#b2c98f&#34;&gt;common_calc&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;total_keys, &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;player_acc)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 权重：total_keys&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 分数：player_acc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 返回的数组，保存计算完成的Acc&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;result &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt;)&lt;span style=&#34;color:#b2c98f&#34;&gt;malloc&lt;/span&gt;(&lt;span style=&#34;color:#e67e80&#34;&gt;sizeof&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt;) &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;4&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;if&lt;/span&gt; (result &lt;span style=&#34;color:#7a8478&#34;&gt;==&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;NULL&lt;/span&gt;)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#b2c98f&#34;&gt;printf&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;[ERROR] 内存分配失败！&amp;#34;&lt;/span&gt;);&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#d699b6&#34;&gt;NULL&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; song1_acc, song2_acc, song3_acc, song4_acc;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 第一首歌：直接取第一个累积平均值&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    result[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 第二首歌：((n0 + n1)*a1 - n0*a0) / n1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; sum2 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    result[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (sum2 &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;0&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 第三首歌：((n0 + n1 + n2)*a2 - (n0 + n1)*a1) / n2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; sum3 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; sum2 &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    result[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (sum3 &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; sum2 &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;1&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 第四首歌：((n0 + n1 + n2 + n3)*a3 - (n0 + n1 + n2)*a2) / n3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#dbbc7f&#34;&gt;double&lt;/span&gt; sum4 &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; sum3 &lt;span style=&#34;color:#7a8478&#34;&gt;+&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    result[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;=&lt;/span&gt; (sum4 &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;] &lt;span style=&#34;color:#7a8478&#34;&gt;-&lt;/span&gt; sum3 &lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; player_acc[&lt;span style=&#34;color:#d699b6&#34;&gt;2&lt;/span&gt;]) &lt;span style=&#34;color:#7a8478&#34;&gt;/&lt;/span&gt; total_keys[&lt;span style=&#34;color:#d699b6&#34;&gt;3&lt;/span&gt;];&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e67e80&#34;&gt;return&lt;/span&gt; result;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;然后就是主函数处理用户输入了，没什么含金量，不水了。&lt;/p&gt;&#xA;</description>
    </item>
    <item>
      <title>C语言的头文件与OOP范式的抽象类、接口的异同点</title>
      <link>https://blog.verdant.ee/posts/c%E8%AF%AD%E8%A8%80%E7%9A%84%E5%A4%B4%E6%96%87%E4%BB%B6%E4%B8%8Eoop%E8%8C%83%E5%BC%8F%E7%9A%84%E6%8A%BD%E8%B1%A1%E7%B1%BB%E6%8E%A5%E5%8F%A3%E7%9A%84%E5%BC%82%E5%90%8C%E7%82%B9/</link>
      <pubDate>Fri, 06 Jun 2025 20:16:56 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/c%E8%AF%AD%E8%A8%80%E7%9A%84%E5%A4%B4%E6%96%87%E4%BB%B6%E4%B8%8Eoop%E8%8C%83%E5%BC%8F%E7%9A%84%E6%8A%BD%E8%B1%A1%E7%B1%BB%E6%8E%A5%E5%8F%A3%E7%9A%84%E5%BC%82%E5%90%8C%E7%82%B9/</guid>
      <description>&lt;h2 id=&#34;引言&#34;&gt;引言&lt;/h2&gt;&#xA;&lt;p&gt;说真的，从去年十一月份开始接触编程，到现在也好几个月了，自认为进步速度较快，但速度快也就导致了深度浅，走马观花式的学习，现在还是有很多理解不深刻的点，今天来仔细研究一下这个问题。我也是先入为主，第一门编程语言学的是Java，所以再接触C，一些概念就混淆了。&lt;/p&gt;&#xA;&lt;h2 id=&#34;c语言模块化设计的核心&#34;&gt;C语言模块化设计的核心&lt;/h2&gt;&#xA;&lt;p&gt;头文件本质是对外提供的接口&lt;strong&gt;契约&lt;/strong&gt;，包含函数声明、宏定义、结构体类型声明。例如：&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-c&#34; data-lang=&#34;c&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// math_utils.h&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#ifndef MATH_UTILS_H&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#define MATH_UTILS_H&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#b2c98f&#34;&gt;add&lt;/span&gt;(&lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; a, &lt;span style=&#34;color:#dbbc7f&#34;&gt;int&lt;/span&gt; b);  &lt;span style=&#34;color:#859289;font-style:italic&#34;&gt;// 函数声明&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#e67e80&#34;&gt;#endif&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;&#xA;&lt;li&gt;编译隔离：通过头文件守卫(#ifndef)实现模块之间的编译隔离。&lt;/li&gt;&#xA;&lt;li&gt;虽然头文件可以实现函数，但这会破坏模块化。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;模块化实现规范&#34;&gt;模块化实现规范&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;源文件承载具体实现，通过包含对应头文件实现联系&lt;/li&gt;&#xA;&lt;li&gt;模块间通过&lt;code&gt;extern&lt;/code&gt;关键字声明共享全局变量（谨慎使用）&lt;/li&gt;&#xA;&lt;/ul&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;接口是一系列方法的声明，一个接口就是在描述一种能力。&lt;/p&gt;&#xA;&lt;p&gt;设计目标上，抽象类为了代码复用+多台，而接口是行为契约。&lt;/p&gt;&#xA;&lt;h2 id=&#34;设计范式对比&#34;&gt;设计范式对比&lt;/h2&gt;&#xA;&lt;h3 id=&#34;c模块化-vs-oop抽象&#34;&gt;C模块化 vs OOP抽象&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;抽象粒度：C模块关注功能单元（做什么），而OOP抽象关注对象行为契约（是谁做什么）&lt;/li&gt;&#xA;&lt;li&gt;扩展方式：C通过函数指针传递上下文，OOP通过继承、实现扩展。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
    </item>
    <item>
      <title>这样的博客的意义是？</title>
      <link>https://blog.verdant.ee/posts/%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E5%8A%A0%E5%AF%86%E7%A0%81%E7%9A%84%E6%84%8F%E4%B9%89%E6%98%AF/</link>
      <pubDate>Mon, 19 May 2025 21:53:10 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/%E5%8D%9A%E5%AE%A2%E6%96%87%E7%AB%A0%E5%8A%A0%E5%AF%86%E7%A0%81%E7%9A%84%E6%84%8F%E4%B9%89%E6%98%AF/</guid>
      <description>&lt;h2 id=&#34;博客文章的密码&#34;&gt;博客文章的密码&lt;/h2&gt;&#xA;&lt;p&gt;博客文章加密码，意义何在？&lt;/p&gt;&#xA;&lt;p&gt;写博客的意义是？&lt;/p&gt;&#xA;&lt;p&gt;写博客的意义之一，不是放大自己的声音，表达自己的观点吗？&lt;/p&gt;&#xA;&lt;p&gt;这就要牵扯到你写博客的目的。如果你说，你写博客是为了取悦自己，那为什么要把文章发出来？取悦自己是真的吗？还是对自己网站没有流量的自我安慰？不允许他人看见，那我只能认为您财力精力都很强盛，有财力购买服务器、主题；有精力维护服务器、网站。为什么不写在备忘录里呢？&lt;/p&gt;&#xA;&lt;p&gt;发出来，不是为了被人看见？&lt;/p&gt;&#xA;&lt;p&gt;还是说，是在扮演什么角色、人设给什么人看？&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;我个人一直十分痛恨各大平台的强制注册手段，复制代码要注册、展开文章要注册，打开评论区还要注册。所以在我一开始使用动态博客程序的时候，从来没想过有强迫读者注册才能评论。&lt;/p&gt;&#xA;&lt;p&gt;这个问题依然要归结到写博客的意义。如果你写博客，是为了变现，利用在各个博客的评论区乱尿增加的一点SEO权重带来的可怜流量，和不知道从哪里抄搬来的技术文章，连格式都不调一下就挂在网站上又或是分享一大堆所谓免费资源，引流关注微信公众号的，强迫注册，为了赚钱，不寒碜。吗？&lt;/p&gt;&#xA;&lt;p&gt;很他妈寒碜！&lt;/p&gt;&#xA;&lt;p&gt;读者吃着你搬来的别人拉的屎，又要被你骗去你自建的茅房，这钱就算拿到，也是脏的，好好掂量一下这钱里都有什么。&lt;/p&gt;&#xA;&lt;p&gt;如果是正常的博客，要强迫读者注册才可评论，查看文章，那更令人费解。技术文章下，读者遇到了问题，或想更近一步讨论；表达观点、分享日常的文章下，读者看到一个有趣的灵魂，一个，强迫注册，都无异于直接抹杀读者讨论的念头。输入邮箱或手机号，接收验证码、输入验证码，再登录。加之服务器地理位置、配置等原因导致的访问不畅，每一秒所做的每一个行为，都是在一丝丝抽离由文字与读者建立起的联系。&lt;/p&gt;&#xA;&lt;p&gt;最后，只能说上一句：&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;我写博客只为取悦自己。&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;</description>
    </item>
    <item>
      <title>CSS鼠标指针操作</title>
      <link>https://blog.verdant.ee/posts/css%E9%BC%A0%E6%A0%87%E6%8C%87%E9%92%88%E6%93%8D%E4%BD%9C/</link>
      <pubDate>Tue, 04 Mar 2025 10:13:10 +0000</pubDate><author>i@glowisle.me (五葉地錦)</author>
      <guid>https://blog.verdant.ee/posts/css%E9%BC%A0%E6%A0%87%E6%8C%87%E9%92%88%E6%93%8D%E4%BD%9C/</guid>
      <description>&lt;p&gt;今天在上网冲浪的时候，看到Github上有一个明日方舟风格的&lt;a href=&#34;https://github.com/Yue-plus/hexo-theme-arknights&#34;&gt;主题&lt;/a&gt;，这个主题让我感到新鲜的一点是网页中的鼠标指针特效&lt;/p&gt;&#xA;&lt;p&gt;这么舒服的动画效果我必须也要做一个，说干就干，新建个HTML文档。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;cursor&lt;/span&gt;: &lt;span style=&#34;color:#e67e80&#34;&gt;pointer&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样，我们整个网页的鼠标指针样式就都变成了小手指的样式，不过这样还是太丑，我们仿照arknights主题的样式，打开PS，画一个指针图标出来看看&lt;/p&gt;&#xA;&lt;p&gt;使用url()属性可以替换自己的素材图片&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#d6cbb4;background-color:#252b2e;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-css&#34; data-lang=&#34;css&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#7a8478&#34;&gt;*&lt;/span&gt; {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#e67e80&#34;&gt;cursor&lt;/span&gt;: &lt;span style=&#34;color:#d699b6&#34;&gt;url&lt;/span&gt;(&lt;span style=&#34;color:#b2c98f&#34;&gt;&amp;#34;./source/cu.ico&amp;#34;&lt;/span&gt;), &lt;span style=&#34;color:#e67e80&#34;&gt;auto&lt;/span&gt;;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;这样鼠标指针的效果就做好了（因为我的截图软件要用鼠标指针选区，所以截不到图）&#xA;a&lt;/p&gt;&#xA;</description>
    </item>
  </channel>
</rss>
