<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>所有文章 - 研发日志 · R&amp;D Log</title><link>https://rd163.visword.com/posts/</link><description>所有文章 | 研发日志 · R&amp;D Log</description><generator>Hugo -- gohugo.io</generator><language>zh-CN</language><managingEditor>whutluohui@gmail.com (小智晖)</managingEditor><webMaster>whutluohui@gmail.com (小智晖)</webMaster><copyright>本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。</copyright><lastBuildDate>Tue, 21 Jul 2026 00:00:00 +0800</lastBuildDate><atom:link href="https://rd163.visword.com/posts/" rel="self" type="application/rss+xml"/><item><title>分布式计算平台-Boinc</title><link>https://rd163.visword.com/posts/distributed-computation-boinc/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/distributed-computation-boinc/</guid><description>&lt;p>BOINC 是 Berkeley Open Infrastructure for Network Computing 的首字母缩写，即伯克利开放式网络计算平台，是用于志愿计算和网格计算的开放的中间件系统。&lt;/p>
&lt;p>BOINC 最早是为了支持 SETI@home 项目而开发的，之后逐渐成了最为主流的分布式计算平台，为众多的数学、物理、化学、生命科学、地球科学等学科类别的项目所使用。BOINC 的开发目的是为了帮助研究人员更方便地获得分布在世界各地的志愿者的计算资源。&lt;/p></description></item><item><title>kubernetes 网络模型</title><link>https://rd163.visword.com/posts/k8s-networking-model/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-networking-model/</guid><description><![CDATA[<h2 id="k8s通信原理" class="headerLink">
    <a href="#k8s%e9%80%9a%e4%bf%a1%e5%8e%9f%e7%90%86" class="header-mark"></a>K8s通信原理</h2><p>这是一张由外向内的典型的容器网络架构图。</p>
<p><img class="tw:inline" loading="lazy" src='https://wmxiaozhi.github.io/picx-images-hosting/picx-imgs/k8s-net/k8s-network-arch.png'     ></p>
<p>为了能够正常通信，图中每个参与通信的实体都需要有一个 IP 地址，由集群外部到集群内部：</p>
<table>
	<thead>
			<tr>
					<th>IP类型</th>
					<th>说明</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td>Proxy-IP</td>
					<td>代理层公网地址IP，外部访问应用的网关服务器。[实际需要关注的IP]</td>
			</tr>
			<tr>
					<td>Service-IP</td>
					<td>Service的固定虚拟IP，Service-IP是内部，外部无法寻址到。</td>
			</tr>
			<tr>
					<td>Node-IP</td>
					<td>容器宿主机的主机IP。</td>
			</tr>
			<tr>
					<td>Container-Bridge-IP</td>
					<td>容器网桥（docker0）IP，容器的网络都需要通过容器网桥转发。</td>
			</tr>
			<tr>
					<td>Pod-IP</td>
					<td>Pod的IP，等效于Pod中网络容器的Container-IP。</td>
			</tr>
			<tr>
					<td>Container-IP</td>
					<td>容器的IP，容器的网络是个隔离的网络空间。</td>
			</tr>
	</tbody>
</table>
<h3 id="容器间通信" class="headerLink">
    <a href="#%e5%ae%b9%e5%99%a8%e9%97%b4%e9%80%9a%e4%bf%a1" class="header-mark"></a>容器间通信</h3><p>先来看最简单的情况， 即同一个Pod内部容器之间的通信：</p>]]></description></item><item><title>kubernetes 网络技术与服务通信</title><link>https://rd163.visword.com/posts/k8s-network-and-service/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-network-and-service/</guid><description><![CDATA[<h2 id="1-引言" class="headerLink">
    <a href="#1-%e5%bc%95%e8%a8%80" class="header-mark"></a>1. 引言</h2><p>K8s 是一个开源的容器编排平台，用来自动化部署、管理容器化的应用程序, Bcs 是腾讯开源的容器管理平台。后者相较于前者，功能要更丰富些，bcs主要聚焦于复杂应用场景下的容器化应用的部署和整合， 除了兼容原生的的K8s外，对于游戏的这种场景提供了特别的适配。</p>]]></description></item><item><title>k8s 服务网格（Service Mesh）</title><link>https://rd163.visword.com/posts/k8s-service-mesh-istio/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-service-mesh-istio/</guid><description><![CDATA[<p>希腊语言中大概是风帆的意思， 发音  [iːst&rsquo;iəʊ] ，相当于中文的 伊斯特亿欧。</p>
<h2 id="1-为何使用服务网格why" class="headerLink">
    <a href="#1-%e4%b8%ba%e4%bd%95%e4%bd%bf%e7%94%a8%e6%9c%8d%e5%8a%a1%e7%bd%91%e6%a0%bcwhy" class="header-mark"></a>1. 为何使用服务网格？(Why)</h2><ul>
<li>服务网格并没有给我们带来新功能，它是用于解决其他工具已经解决过的问题，只不过这次是在云原生的  Kubernetes 环境下的实现。</li>
<li>MVC 三层 Web 应用程序架构下，服务之间的通讯并不复杂，在应用程序内部自己管理即可，但是在现今的复杂的大型网站情况下，单体应用被分解为众多的微服务，服务之间的依赖和通讯十分复杂，出现了 Twitter 开发的 Finagle、Netflix 开发的 Hystrix 和 Google 的 Stubby 这样的 ”胖客户端“ 库，这些就是早期的服务网格，但是它们都近适用于特定的环境和特定的开发语言，并不能作为平台级的服务网格支持。</li>
<li>在云原生架构下，容器的使用给予了异构应用程序的更多可行性， Kubernetes 增强的应用的横向扩容能力，用户可以快速的编排出复杂环境、复杂依赖关系的应用程序，同时开发者又无须过分关心应用程序的监控、扩展性、服务发现和分布式追踪这些繁琐的事情而专注于程序开发，赋予开发者更多的创造性。</li>
</ul>
<h2 id="2-简介what" class="headerLink">
    <a href="#2-%e7%ae%80%e4%bb%8bwhat" class="header-mark"></a>2. 简介（What）</h2><p>服务网格有如下几个特点：</p>]]></description></item><item><title>K8s dns 技术实现原理</title><link>https://rd163.visword.com/posts/k8s-dns-intro/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-dns-intro/</guid><description><![CDATA[<p>K8s 中DNS采用的服务器方案也在不断演变， 早期用的是 kube-dns， 从 1.11 版本开始 默认的dns服务器 由 kube-dns切换到了 coredns。</p>
<p><a href="https://coredns.io/2018/11/27/cluster-dns-coredns-vs-kube-dns/" target="_blank" rel="noopener noreferrer">kube-dns 与 coredns 性能数据对比</a></p>]]></description></item><item><title>Boinc 后台服务搭建</title><link>https://rd163.visword.com/posts/distributed-computation-boinc-server-setup/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/distributed-computation-boinc-server-setup/</guid><description><![CDATA[<h2 id="源码编译安装部署" class="headerLink">
    <a href="#%e6%ba%90%e7%a0%81%e7%bc%96%e8%af%91%e5%ae%89%e8%a3%85%e9%83%a8%e7%bd%b2" class="header-mark"></a>源码编译安装部署</h2><p>参考  <a href="https://boinc.berkeley.edu/trac/wiki/ServerIntro" target="_blank" rel="noopener noreferrer">Boinc Server搭建</a></p>
<p><strong>用户和组</strong></p>
<p>BOINC server programs 运行需要两个不同的用户账号:</p>
<ul>
<li>Web账号： 即Apache http服务需要的账号， 调度程序、文件上传以及Web程序使用该账号运行 (不同Linux发行版该账号可能不同，如 Fedora 叫：&lsquo;apache&rsquo;;  Debian 叫 &lsquo;www-data&rsquo;).</li>
<li>项目账号： 其它程序的运行，主要是任务管理程序， 该账号不建议用root， 可以用一个已经存在的用户账号或者新建一个账号，如 boincadm。</li>
</ul>
<p>创建用户</p>]]></description></item><item><title>VsCode+cline+DeepSeek 进行辅助编程</title><link>https://rd163.visword.com/posts/deepseek-coding-with-vscode-cline/</link><pubDate>Sun, 09 Feb 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/deepseek-coding-with-vscode-cline/</guid><description><![CDATA[<p>用法参考视频 <a href="https://www.youtube.com/watch?v=ft1nCPQqeW8" target="_blank" rel="noopener noreferrer">AI辅助开发利器Cline + DeepSeek R1 + Claude【大师推荐】</a></p>
<p><a href="https://github.com/cline/cline" target="_blank" rel="noopener noreferrer">Cline</a> 是一个可以在你的IDE 中运行的自主编程助手，能够创建、编辑文件，执行命令，甚至利用浏览器。</p>]]></description></item><item><title>llama.cpp 使用</title><link>https://rd163.visword.com/posts/llama-cpp-get-started/</link><pubDate>Sat, 08 Mar 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/llama-cpp-get-started/</guid><description><![CDATA[<h2 id="install" class="headerLink">
    <a href="#install" class="header-mark"></a>Install</h2><div class="code-block highlight is-open show-line-numbers  tw:group tw:my-2">
  <div class="
    
    tw:flex 
    tw:flex-row
    tw:flex-1 
    tw:justify-between 
    tw:w-full tw:bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw:mx-2 
        tw:flex
        tw:flex-row
        tw:flex-1"
      aria-hidden="true">
          <span class="tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></span>
          <span class="tw:select-none tw:my-1! tw:block">bash</span>
      </button>

   <div class="tw:flex">
      <button 
        class="
          line-number-button
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.show-line-numbers]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw:select-none 
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.is-wrap]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw:select-none
          tw:mx-2 
          tw:hidden
          tw:group-[.is-open]:block
          tw:hover:text-fgColor-link 
          tw:print:hidden!"
        title="Copy code">
          <span class="copy-icon tw:block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw:hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw:select-none 
          tw:mx-2 
          tw:block 
          tw:group-[.is-open]:hidden 
          tw:print:hidden!" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw:block tw:m-0 tw:p-0"><code 
    id="codeblock-id-40" 
    class="
      chroma 
      tw:block! 
      tw:p-0
      tw:m-0
      tw:transition-[max-height] 
      tw:duration-500 
      tw:ease-in-out 
      tw:group-[.is-closed]:max-h-0! 
      tw:group-[.is-wrap]:text-wrap
      tw:overflow-y-hidden
      tw:overflow-x-auto
      tw:scrollbar-thin
      "><span class="line"><span class="cl">git clone https://github.com/ggml-org/llama.cpp.git
</span></span><span class="line"><span class="cl">mkdir build <span class="o">&amp;&amp;</span> <span class="nb">cd</span> build
</span></span><span class="line"><span class="cl">cmake .. 
</span></span><span class="line"><span class="cl">make <span class="o">&amp;&amp;</span> make install</span></span></code></pre>
</div>
<h2 id="gguf量化" class="headerLink">
    <a href="#gguf%e9%87%8f%e5%8c%96" class="header-mark"></a>GGUF量化</h2><p><strong>一、GGUF量化过程</strong></p>]]></description></item><item><title>AI网关-Higress部署</title><link>https://rd163.visword.com/posts/ai-gateway-higress-deployment/</link><pubDate>Sun, 23 Mar 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/ai-gateway-higress-deployment/</guid><description><![CDATA[<h2 id="部署方式" class="headerLink">
    <a href="#%e9%83%a8%e7%bd%b2%e6%96%b9%e5%bc%8f" class="header-mark"></a>部署方式</h2><h3 id="1-云原生部署" class="headerLink">
    <a href="#1-%e4%ba%91%e5%8e%9f%e7%94%9f%e9%83%a8%e7%bd%b2" class="header-mark"></a>1. 云原生部署</h3><p>支持 部署到 Kubernetes，或者 本地k8s， 如 Kind。具体参考</p>
<ul>
<li><a href="https://higress.cn/docs/latest/ops/deploy-by-helm/?spm=36971b57.d107700.0.0.23882d89GafqV0" target="_blank" rel="noopener noreferrer">使用 Helm 进行云原生部署</a></li>
<li><a href="https://higress.cn/docs/latest/user/quickstart/?spm=36971b57.d107700.0.0.23882d89GafqV0" target="_blank" rel="noopener noreferrer">部署到本地k8s，如Kind</a></li>
</ul>
<h3 id="2-docker-compose部署" class="headerLink">
    <a href="#2-docker-compose%e9%83%a8%e7%bd%b2" class="header-mark"></a>2. Docker-Compose部署</h3><p>参考</p>]]></description></item><item><title>trpc-cpp流式服务</title><link>https://rd163.visword.com/posts/trpc-cpp-stream-service/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/trpc-cpp-stream-service/</guid><description><![CDATA[<h2 id="流式应用场景" class="headerLink">
    <a href="#%e6%b5%81%e5%bc%8f%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af" class="header-mark"></a>流式应用场景</h2><ul>
<li>大规模数据包。 比如，有一个大文件需要传输。 使用流式 RPC 时，客户端分片读出文件内容后直接写入到流中，服务端可以按客户端写入顺序读取到文件分片内容，然后执行业务逻辑。 如果使用单次 RPC，需要多次调用RPC方法，会遇到分包、组包、乱序、业务逻辑上下文切换等问题。</li>
<li>实时场景。 比如，股票行情走势，资讯 Feeds 流。 服务端接收到消息后，需要往多个客户端进行实时消息推送，流式 RPC 可以在一次 RPC 调用过程中，推送完整的消息列表。</li>
<li>Istio、Envoy、Nacos 等项目，内部都是用 gRPC 作为通信协议来实现控制平面</li>
</ul>
<h2 id="三种流式-rpc-方法" class="headerLink">
    <a href="#%e4%b8%89%e7%a7%8d%e6%b5%81%e5%bc%8f-rpc-%e6%96%b9%e6%b3%95" class="header-mark"></a>三种流式 RPC 方法</h2><p>tRPC 协议的流式 RPC 分为三种类型：</p>]]></description></item><item><title>Js 协程简介</title><link>https://rd163.visword.com/posts/js-corouting-intro/</link><pubDate>Sun, 13 Apr 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/js-corouting-intro/</guid><description><![CDATA[<p>这篇文章 <a href="https://zh.javascript.info/async" target="_blank" rel="noopener noreferrer">JavaScript Promise，async/await</a> 是对 async/await 最详细的介绍，而且 文章开源：</p>
<ul>
<li><a href="https://github.com/javascript-tutorial/zh.javascript.info" target="_blank" rel="noopener noreferrer">现代 JavaScript 教程中文版</a></li>
</ul>
<h2 id="callback回调" class="headerLink">
    <a href="#callback%e5%9b%9e%e8%b0%83" class="header-mark"></a>callback(回调)</h2><p>回调地狱：</p>
<div class="code-block highlight is-closed show-line-numbers  tw:group tw:my-2">
  <div class="
    
    tw:flex 
    tw:flex-row
    tw:flex-1 
    tw:justify-between 
    tw:w-full tw:bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw:mx-2 
        tw:flex
        tw:flex-row
        tw:flex-1"
      aria-hidden="true">
          <span class="tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></span>
          <span class="tw:select-none tw:my-1! tw:block">js</span>
      </button>

   <div class="tw:flex">
      <button 
        class="
          line-number-button
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.show-line-numbers]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw:select-none 
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.is-wrap]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw:select-none
          tw:mx-2 
          tw:hidden
          tw:group-[.is-open]:block
          tw:hover:text-fgColor-link 
          tw:print:hidden!"
        title="Copy code">
          <span class="copy-icon tw:block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw:hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw:select-none 
          tw:mx-2 
          tw:block 
          tw:group-[.is-open]:hidden 
          tw:print:hidden!" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw:block tw:m-0 tw:p-0"><code 
    id="codeblock-id-103" 
    class="
      chroma 
      tw:block! 
      tw:p-0
      tw:m-0
      tw:transition-[max-height] 
      tw:duration-500 
      tw:ease-in-out 
      tw:group-[.is-closed]:max-h-0! 
      tw:group-[.is-wrap]:text-wrap
      tw:overflow-y-hidden
      tw:overflow-x-auto
      tw:scrollbar-thin
      "><span class="line"><span class="cl"><span class="nx">loadScript</span><span class="p">(</span><span class="s1">&#39;1.js&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">script</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">  <span class="k">if</span> <span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="nx">handleError</span><span class="p">(</span><span class="nx">error</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">    <span class="c1">// ...
</span></span></span><span class="line"><span class="cl">    <span class="nx">loadScript</span><span class="p">(</span><span class="s1">&#39;2.js&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">script</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">      <span class="k">if</span> <span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="nx">handleError</span><span class="p">(</span><span class="nx">error</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">      <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">        <span class="c1">// ...
</span></span></span><span class="line"><span class="cl">        <span class="nx">loadScript</span><span class="p">(</span><span class="s1">&#39;3.js&#39;</span><span class="p">,</span> <span class="kd">function</span><span class="p">(</span><span class="nx">error</span><span class="p">,</span> <span class="nx">script</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">          <span class="k">if</span> <span class="p">(</span><span class="nx">error</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="nx">handleError</span><span class="p">(</span><span class="nx">error</span><span class="p">);</span>
</span></span><span class="line"><span class="cl">          <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl">            <span class="c1">// ...加载完所有脚本后继续 (*)
</span></span></span><span class="line"><span class="cl">          <span class="p">}</span>
</span></span><span class="line"><span class="cl">        <span class="p">});</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">      <span class="p">}</span>
</span></span><span class="line"><span class="cl">    <span class="p">});</span>
</span></span><span class="line"><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">});</span></span></span></code></pre>
</div>
<p>嵌套调用的&quot;金字塔&quot;随着每个异步行为会向右增长。很快它就失控了。</p>]]></description></item><item><title>golang 性能优化工具</title><link>https://rd163.visword.com/posts/golang-perf-opti-tools/</link><pubDate>Mon, 14 Apr 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-perf-opti-tools/</guid><description><![CDATA[<p>在 Golang 中，性能优化分析工具是定位瓶颈、优化代码的关键。以下是常用的工具及其使用场景和方法：</p>
<hr>
<h2 id="性能剖析工具" class="headerLink">
    <a href="#%e6%80%a7%e8%83%bd%e5%89%96%e6%9e%90%e5%b7%a5%e5%85%b7" class="header-mark"></a>性能剖析工具</h2><h3 id="1" class="headerLink">
    <a href="#1" class="header-mark"></a><strong>1. <code>pprof</code> 性能剖析工具</strong></h3><p>Go 内置的 <code>pprof</code> 包提供 CPU、内存、Goroutine、阻塞等维度的性能分析，支持可视化（火焰图、调用链）。</p>]]></description></item><item><title>C/C++面试基础知识</title><link>https://rd163.visword.com/posts/cpp-interview/</link><pubDate>Thu, 08 May 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/cpp-interview/</guid><description><![CDATA[<h2 id="cc-basics" class="headerLink">
    <a href="#cc-basics" class="header-mark"></a>C/C++ Basics</h2><h3 id="如何定义一个只能在堆上栈上生成对象的类" class="headerLink">
    <a href="#%e5%a6%82%e4%bd%95%e5%ae%9a%e4%b9%89%e4%b8%80%e4%b8%aa%e5%8f%aa%e8%83%bd%e5%9c%a8%e5%a0%86%e4%b8%8a%e6%a0%88%e4%b8%8a%e7%94%9f%e6%88%90%e5%af%b9%e8%b1%a1%e7%9a%84%e7%b1%bb" class="header-mark"></a>如何定义一个只能在堆上（栈上）生成对象的类？</h3><blockquote>
  <p><a href="https://www.nowcoder.com/questionPractice/0a584aa13f804f3ea72b442a065a7618" target="_blank" rel="noopener noreferrer">如何定义一个只能在堆上（栈上）生成对象的类?</a></p>

</blockquote><h4 id="只能在堆上" class="headerLink">
    <a href="#%e5%8f%aa%e8%83%bd%e5%9c%a8%e5%a0%86%e4%b8%8a" class="header-mark"></a>只能在堆上</h4><p>方法：将析构函数设置为私有</p>
<p>原因：C++ 是静态绑定语言，编译器管理栈上对象的生命周期，编译器在为类对象分配栈空间时，会先检查类的析构函数的访问性。若析构函数不可访问，则不能在栈上创建对象。</p>]]></description></item><item><title>server学习路线</title><link>https://rd163.visword.com/posts/server-learning-roadmap/</link><pubDate>Sun, 14 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/server-learning-roadmap/</guid><description><![CDATA[<h2 id="良好的系统设计" class="headerLink">
    <a href="#%e8%89%af%e5%a5%bd%e7%9a%84%e7%b3%bb%e7%bb%9f%e8%ae%be%e8%ae%a1" class="header-mark"></a>良好的系统设计</h2><ul>
<li><a href="https://github.com/ruanyf/weekly/blob/master/docs/issue-362.md" target="_blank" rel="noopener noreferrer">GitHub 工程师总结什么是良好的系统设计</a></li>
</ul>
<p><strong>总结如下：</strong></p>
<p>1、</p>
<p>程序设计是组装代码，系统设计是组装服务。</p>
<p>程序设计的组件是变量、函数、类等，系统设计的组件是服务器、数据库、缓存、队列、事件总线、代理等。</p>]]></description></item><item><title>UnrealEngine-4.23.1 引擎编译安装及 Dedicated Server 服务搭建</title><link>https://rd163.visword.com/posts/ue4-ds-getting-started/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/ue4-ds-getting-started/</guid><description><![CDATA[<p>本文将详细介绍如何在 Windows 操作系统上 编译安装UnrealEngine-4.23.1引擎，并搭建ds服务。</p>
<p><strong>为什么要编译安装 UnrealEngine？</strong></p>]]></description></item><item><title>分布式计算平台</title><link>https://rd163.visword.com/posts/distributed-computation/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/distributed-computation/</guid><description><![CDATA[<h2 id="boinc" class="headerLink">
    <a href="#boinc" class="header-mark"></a><a href="https://github.com/BOINC/boinc" target="_blank" rel="noopener noreferrer">boinc</a></h2><ul>
<li>
<p><a href="https://boinc.berkeley.edu/trac/wiki/TitleIndex" target="_blank" rel="noopener noreferrer">Wiki索引</a></p>
<ul>
<li><a href="https://boinc.berkeley.edu/trac/wiki/ProjectOptions#Schedulingoptionsandparameters" target="_blank" rel="noopener noreferrer">config.xml 字段说明</a></li>
</ul>
</li>
<li>
<p><a href="https://github.com/BOINC/boinc.wiki.git" target="_blank" rel="noopener noreferrer">github wiki</a></p>
</li>
</ul>
<h3 id="1-部署服务" class="headerLink">
    <a href="#1-%e9%83%a8%e7%bd%b2%e6%9c%8d%e5%8a%a1" class="header-mark"></a>1. 部署服务</h3><p><strong>源码编译安装部署</strong></p>
<p>参考  <a href="https://boinc.berkeley.edu/trac/wiki/ServerIntro" target="_blank" rel="noopener noreferrer">Boinc Server搭建</a></p>
<p><strong>docker部署</strong></p>
<p>参考 <a href="https://github.com/marius311/boinc-server-docker" target="_blank" rel="noopener noreferrer">Boinc Server Docker</a></p>]]></description></item><item><title>Kubernetes 中文指南</title><link>https://rd163.visword.com/posts/k8s-handbook/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-handbook/</guid><description><![CDATA[<h2 id="术语解释" class="headerLink">
    <a href="#%e6%9c%af%e8%af%ad%e8%a7%a3%e9%87%8a" class="header-mark"></a>术语解释</h2><ul>
<li>Istio: Istio 是由 Google、IBM 和 Lyft 开源的微服务管理、保护和监控框架. Istio 并不是首字母缩写，但如果一定要说它代表着什么，也许会是 “I Secure, Then I Observe”（我保护，我观察），或者 &ldquo;I’m Sexy To Infrastructure Operators.&quot;（我对基础设施运营商富有吸引力）。</li>
</ul>
<h2 id="k8s-与-云原生的关系" class="headerLink">
    <a href="#k8s-%e4%b8%8e-%e4%ba%91%e5%8e%9f%e7%94%9f%e7%9a%84%e5%85%b3%e7%b3%bb" class="header-mark"></a>k8s 与 云原生的关系</h2><h3 id="云原生定义" class="headerLink">
    <a href="#%e4%ba%91%e5%8e%9f%e7%94%9f%e5%ae%9a%e4%b9%89" class="header-mark"></a>云原生定义</h3><p>云原生是一种行为方式和设计理念，究其本质，凡是能够提高云上资源利用率和应用交付效率的行为或方式都是云原生的。</p>]]></description></item><item><title>K8s 网络插件 SRIOV-CNI</title><link>https://rd163.visword.com/posts/k8s-cni-sriov/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-cni-sriov/</guid><description><![CDATA[<p>SRIOV-CNI最早由腾讯互娱计算资源团队开发， 后被 CNI 社区接纳，并被Intel关注和<a href="https://github.com/Intel-Corp/sriov-cni" target="_blank" rel="noopener noreferrer">Fork</a>。</p>
<p>SRIOV-CNI 为K8s 提供一种 Underlay 网络。 其主要是 基于 网卡虚拟化技术 SR-IOV 实现的。</p>]]></description></item><item><title>k8s 服务网格（Service Mesh）</title><link>https://rd163.visword.com/posts/k8s-service-mesh/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-service-mesh/</guid><description><![CDATA[<p>希腊语言中大概是风帆的意思， 发音  [iːst&rsquo;iəʊ] ，相当于中文的 伊斯特亿欧。</p>
<p>如果用一句话来解释什么是服务网格，可以将它比作是应用程序或者说微服务间的 TCP/IP，负责服务之间的网络调用、限流、熔断和监控。</p>]]></description></item><item><title>dns 基础知识</title><link>https://rd163.visword.com/posts/dns-basic/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/dns-basic/</guid><description><![CDATA[<h2 id="一基础知识" class="headerLink">
    <a href="#%e4%b8%80%e5%9f%ba%e7%a1%80%e7%9f%a5%e8%af%86" class="header-mark"></a>一、基础知识</h2><p><strong>记录类型</strong></p>
<ul>
<li>A 记录：它记录域名与 IPv4 地址的对应关系。目前用的最多的 DNS 记录就是这个。</li>
<li>AAAA 记录：它对应的是 IPv6，可以理解成新一代的 A 记录。以后会用的越来越多的。</li>
<li>NS 记录：记录 DNS 域对应的权威服务器域名，权威服务器域名必须要有对应的 A 记录。通过这个记录，可以将子域名的解析分配给别的 DNS 服务器。</li>
<li>CNAME 记录: 记录域名与另一个域名的对应关系，用于给域名起别名。这个用得也挺多的。</li>
<li>MX 记录：记录域名对应的邮件服务器域名，邮件服务器的域名必须要有对应的 A 记录。</li>
<li>SRV 记录：SRV 记录用于提供服务发现。SRV 记录的内容有固定格式：优先级 权重 端口 目标地址，例如0 5 5060 sipserver.example.com</li>
</ul>
<p><strong>解析方式</strong></p>]]></description></item><item><title>macOS 常用快捷键</title><link>https://rd163.visword.com/posts/mac-shortcut-key/</link><pubDate>Mon, 13 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/mac-shortcut-key/</guid><description><![CDATA[<h1 id="1-macos-快捷键简介" class="headerLink">
    <a href="#1-macos-%e5%bf%ab%e6%8d%b7%e9%94%ae%e7%ae%80%e4%bb%8b" class="header-mark"></a>1. macOS 快捷键简介</h1><p>macOS 上有几个常用的修饰键： <strong>Command（或 Cmd）⌘</strong>、<strong>Option（或 Alt）⌥</strong>、<strong>Caps Lock ⇪</strong>、<strong>Shift ⇧</strong>、<strong>Control（或 Ctrl）⌃</strong>、<strong>Fn</strong>。</p>]]></description></item><item><title>怎么使用AI大模型画图</title><link>https://rd163.visword.com/posts/ai-drawing-with-model/</link><pubDate>Thu, 23 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/ai-drawing-with-model/</guid><description><![CDATA[<h2 id="模型选择" class="headerLink">
    <a href="#%e6%a8%a1%e5%9e%8b%e9%80%89%e6%8b%a9" class="header-mark"></a>模型选择</h2><p>可以在 replicate 网站上寻找合适的绘图模型。</p>
<ul>
<li><a href="https://replicate.com/explore" target="_blank" rel="noopener noreferrer">replicate</a></li>
</ul>
<p>例如：图像生成（Generate images）模型，用户使用次数最多的是 字节跳动的这个 sdxl 模型，但经过实际验证，flux-schnell的效果要更好：</p>]]></description></item><item><title>美国地址</title><link>https://rd163.visword.com/posts/american-address/</link><pubDate>Thu, 23 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/american-address/</guid><description>&lt;p>美国地址的格式是从小到大，先写名字，然后是道路地址，然后是市名、州名缩写和邮编。如果要写国家（USA），写在邮编后面。&lt;/p>
&lt;p>名字很简单不谈了。道路地址的格式是「数字+街名+房号」。490 2nd St, Suite 300 就是「第二街 490 号 300 室」。数字前面不需要加「No.」，这是很多中国人会犯的错误。街道类型可能是 Street/Road/Drive/Lane/Highway 等等之一，通常缩写为 St/Rd/Dr/Ln/Hwy 等。独栋房屋没有房号不用写，如果是公寓楼或者办公楼，则在街名后面加逗号，空一格，然后写房号。公寓写 Apt. 300，办公楼写 Suite 300 或缩写为 Ste. 300。也可以简写为 #300，公寓和办公楼都适用。&lt;/p></description></item><item><title>DeepSeek 提示词</title><link>https://rd163.visword.com/posts/deepseek-prompts/</link><pubDate>Fri, 14 Feb 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/deepseek-prompts/</guid><description><![CDATA[<h3 id="周报" class="headerLink">
    <a href="#%e5%91%a8%e6%8a%a5" class="header-mark"></a>周报</h3><div class="code-block highlight is-open show-line-numbers  tw:group tw:my-2">
  <div class="
    
    tw:flex 
    tw:flex-row
    tw:flex-1 
    tw:justify-between 
    tw:w-full tw:bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw:mx-2 
        tw:flex
        tw:flex-row
        tw:flex-1"
      aria-hidden="true">
          <span class="tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></span>
          <span class="tw:select-none tw:my-1! tw:block">text</span>
      </button>

   <div class="tw:flex">
      <button 
        class="
          line-number-button
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.show-line-numbers]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw:select-none 
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.is-wrap]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw:select-none
          tw:mx-2 
          tw:hidden
          tw:group-[.is-open]:block
          tw:hover:text-fgColor-link 
          tw:print:hidden!"
        title="Copy code">
          <span class="copy-icon tw:block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw:hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw:select-none 
          tw:mx-2 
          tw:block 
          tw:group-[.is-open]:hidden 
          tw:print:hidden!" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw:block tw:m-0 tw:p-0"><code 
    id="codeblock-id-1" 
    class="
      chroma 
      tw:block! 
      tw:p-0
      tw:m-0
      tw:transition-[max-height] 
      tw:duration-500 
      tw:ease-in-out 
      tw:group-[.is-closed]:max-h-0! 
      tw:group-[.is-wrap]:text-wrap
      tw:overflow-y-hidden
      tw:overflow-x-auto
      tw:scrollbar-thin
      "><span class="line"><span class="cl">你是一个周报汇总助手，用户每次输入工作内容，你将其填充为一篇完整的周报并进行润色，用 markdown 格式以分点叙述的形式输出。</span></span></code></pre>
</div>
<h3 id="面试官" class="headerLink">
    <a href="#%e9%9d%a2%e8%af%95%e5%ae%98" class="header-mark"></a>面试官</h3><div class="code-block highlight is-open show-line-numbers  tw:group tw:my-2">
  <div class="
    
    tw:flex 
    tw:flex-row
    tw:flex-1 
    tw:justify-between 
    tw:w-full tw:bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw:mx-2 
        tw:flex
        tw:flex-row
        tw:flex-1"
      aria-hidden="true">
          <span class="tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></span>
          <span class="tw:select-none tw:my-1! tw:block">text</span>
      </button>

   <div class="tw:flex">
      <button 
        class="
          line-number-button
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.show-line-numbers]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw:select-none 
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.is-wrap]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw:select-none
          tw:mx-2 
          tw:hidden
          tw:group-[.is-open]:block
          tw:hover:text-fgColor-link 
          tw:print:hidden!"
        title="Copy code">
          <span class="copy-icon tw:block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw:hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw:select-none 
          tw:mx-2 
          tw:block 
          tw:group-[.is-open]:hidden 
          tw:print:hidden!" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw:block tw:m-0 tw:p-0"><code 
    id="codeblock-id-2" 
    class="
      chroma 
      tw:block! 
      tw:p-0
      tw:m-0
      tw:transition-[max-height] 
      tw:duration-500 
      tw:ease-in-out 
      tw:group-[.is-closed]:max-h-0! 
      tw:group-[.is-wrap]:text-wrap
      tw:overflow-y-hidden
      tw:overflow-x-auto
      tw:scrollbar-thin
      "><span class="line"><span class="cl">我希望您扮演面试官的角色。我将是应聘者，而您将为&#34;C++ 后台开发&#34;职位问我面试问题。我希望您只回复面试官一方的内容，不要一次写下整个对话。请一个一个地提问，像真实的面试官一样，然后等待我的回答。</span></span></code></pre>
</div>
<h3 id="做图表" class="headerLink">
    <a href="#%e5%81%9a%e5%9b%be%e8%a1%a8" class="header-mark"></a>做图表</h3><div class="code-block highlight is-open show-line-numbers  tw:group tw:my-2">
  <div class="
    
    tw:flex 
    tw:flex-row
    tw:flex-1 
    tw:justify-between 
    tw:w-full tw:bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw:mx-2 
        tw:flex
        tw:flex-row
        tw:flex-1"
      aria-hidden="true">
          <span class="tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></span>
          <span class="tw:select-none tw:my-1! tw:block">text</span>
      </button>

   <div class="tw:flex">
      <button 
        class="
          line-number-button
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.show-line-numbers]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw:select-none 
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.is-wrap]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw:select-none
          tw:mx-2 
          tw:hidden
          tw:group-[.is-open]:block
          tw:hover:text-fgColor-link 
          tw:print:hidden!"
        title="Copy code">
          <span class="copy-icon tw:block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw:hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw:select-none 
          tw:mx-2 
          tw:block 
          tw:group-[.is-open]:hidden 
          tw:print:hidden!" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw:block tw:m-0 tw:p-0"><code 
    id="codeblock-id-3" 
    class="
      chroma 
      tw:block! 
      tw:p-0
      tw:m-0
      tw:transition-[max-height] 
      tw:duration-500 
      tw:ease-in-out 
      tw:group-[.is-closed]:max-h-0! 
      tw:group-[.is-wrap]:text-wrap
      tw:overflow-y-hidden
      tw:overflow-x-auto
      tw:scrollbar-thin
      "><span class="line"><span class="cl">You are an AI assistant skilled in using Mermaid diagrams to explain concepts and answer questions. When responding to user queries, please follow these guidelines:
</span></span><span class="line"><span class="cl">1. Analyze the user&#39;s question to determine if a diagram would be suitable for explanation or answering. Suitable scenarios for using diagrams include, but are not limited to: process descriptions, hierarchical structures, timelines, relationship maps, etc.
</span></span><span class="line"><span class="cl">2. If you decide to use a diagram, choose the most appropriate type of Mermaid diagram, such as Flowchart, Sequence Diagram, Class Diagram, State Diagram, Entity Relationship Diagram, User Journey, Gantt, Pie Chart, Quadrant Chart, Requirement Diagram, Gitgraph (Git) Diagram, C4 Diagram, Mindmaps, Timeline, Zenuml, Sankey, XYChart, Block Diagram, etc.
</span></span><span class="line"><span class="cl">3. Write the diagram code using Mermaid syntax, ensuring the syntax is correct. Place the diagram code between ```mermaid fenced code blocks.
</span></span><span class="line"><span class="cl">4. Provide textual explanations before and after the diagram, explaining the content and key points of the diagram.
</span></span><span class="line"><span class="cl">5. If the question is complex, use multiple diagrams to explain different aspects.
</span></span><span class="line"><span class="cl">6. Ensure the diagram is clear and concise, avoiding over-complication or information overload.
</span></span><span class="line"><span class="cl">7. Where appropriate, combine textual description and diagrams to comprehensively answer the question.
</span></span><span class="line"><span class="cl">8. If the user&#39;s question is not suitable for a diagram, answer in a conventional manner without forcing the use of a diagram.
</span></span><span class="line"><span class="cl">Remember, the purpose of diagrams is to make explanations more intuitive and understandable. When using diagrams, always aim to enhance the clarity and comprehensiveness of your responses.</span></span></code></pre>
</div>
<p>中文翻译如下：</p>]]></description></item><item><title>C++内存泄露检测工具</title><link>https://rd163.visword.com/posts/memleak-check-tools-for-cpp/</link><pubDate>Sat, 22 Mar 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/memleak-check-tools-for-cpp/</guid><description><![CDATA[<p>在服务器后台开发中，排查和定位C++内存泄漏的常用工具和方法可分为以下几类，结合其特点和使用场景进行选择：</p>
<hr>
<h2 id="工具分类" class="headerLink">
    <a href="#%e5%b7%a5%e5%85%b7%e5%88%86%e7%b1%bb" class="header-mark"></a>工具分类</h2><h3 id="1-动态检测工具" class="headerLink">
    <a href="#1-%e5%8a%a8%e6%80%81%e6%a3%80%e6%b5%8b%e5%b7%a5%e5%85%b7" class="header-mark"></a><strong>1. 动态检测工具</strong></h3><h4 id="valgrind-memcheck" class="headerLink">
    <a href="#valgrind-memcheck" class="header-mark"></a><strong>Valgrind Memcheck</strong></h4><ul>
<li>
<p><strong>特点</strong>：</p>
<ul>
<li>• Linux下经典工具，检测内存泄漏、越界访问、未初始化内存等问题。</li>
<li>• 无需重新编译代码（但建议编译时保留调试符号 <code>-g</code>）。</li>
<li>• 运行速度较慢，适合测试环境。</li>
</ul>
</li>
<li>
<p><strong>使用方式</strong>：</p>]]></description></item><item><title>Boost.Asio 简介</title><link>https://rd163.visword.com/posts/cpp-boost-asio-intro/</link><pubDate>Tue, 08 Apr 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/cpp-boost-asio-intro/</guid><description><![CDATA[<h2 id="概述" class="headerLink">
    <a href="#%e6%a6%82%e8%bf%b0" class="header-mark"></a>概述</h2><p>Boost.Asio 是一个跨平台的、主要用于网络和其他一些底层输入/输出编程的 C++ 库。</p>
<p>Asio，即「异步 IO」(Asynchronous Input/Output),本是一个<a href="http://think-async.com/Asio" target="_blank" rel="noopener noreferrer">独立的 C++ 网络程序库</a>,似乎并不为人所知，后来因为被 Boost 相中，才声名鹊起。</p>]]></description></item><item><title>trpc微服务寻址方案设计</title><link>https://rd163.visword.com/posts/trpc-service-addressing-scheme-design/</link><pubDate>Sun, 01 Jun 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/trpc-service-addressing-scheme-design/</guid><description><![CDATA[<h2 id="服务命名" class="headerLink">
    <a href="#%e6%9c%8d%e5%8a%a1%e5%91%bd%e5%90%8d" class="header-mark"></a>服务命名</h2><p>tRPC 在服务命名上定义了以下 3 个维度信息：</p>
<ul>
<li><strong>app 名（应用名）</strong>：表示某个业务系统的名称，用于标识某个业务下不同服务模块的一个集合。</li>
<li><strong>server 名（模块名）</strong>：表示具体服务模块的名称，一般也称为模块的进程名称。</li>
<li><strong>service 名</strong>：表示具体服务提供者的名称，一般使用 proto 文件定义的 Service 名称。</li>
</ul>
<p>其中 <code>app.server</code> 的组合在全局上要具备唯一性。</p>]]></description></item><item><title>Go语言Web框架：Beego</title><link>https://rd163.visword.com/posts/golang-beego/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-beego/</guid><description><![CDATA[<h2 id="beego框架概述" class="headerLink">
    <a href="#beego%e6%a1%86%e6%9e%b6%e6%a6%82%e8%bf%b0" class="header-mark"></a>Beego框架概述</h2><p>Beego是一个用Go语言开发的全栈MVC框架，由国人谢孟军（Asta Xie）开发并维护。它借鉴了Python的Django和Flask等框架的设计思想，同时结合了Go语言的特性，为开发者提供了一套完整的Web开发解决方案。</p>]]></description></item><item><title>Linux 中的虚拟网络接口</title><link>https://rd163.visword.com/posts/linux-virtual-network-interfaces/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/linux-virtual-network-interfaces/</guid><description><![CDATA[<h2 id="tuntap" class="headerLink">
    <a href="#tuntap" class="header-mark"></a>tun/tap</h2><ul>
<li>对应字符设备 <code>/dev/net/tun</code>。</li>
<li>是操作系统内核中的虚拟网络设备，由用户层程序提供数据的接收与传输。</li>
<li>普通的物理网络接口如 <code>eth0</code>，它的两端分别是内核协议栈和外面的物理网络。而对于 TUN/TAP 虚拟接口如 <code>tun0</code>，它的一端一定连接着用户层程序，另一端则视配置方式的不同而变化，可以直连内核协议栈，也可以是某个 bridge。</li>
<li>TUN 和 TAP 的区别在于工作的网络层次不同：用户程序通过 TUN 设备只能读写网络层的 IP 数据包，而 TAP 设备则支持读写链路层的数据包（通常是以太网数据包，带有 Ethernet header）。</li>
<li>TUN 与 TAP 的关系，就类似于 socket 与 raw socket。</li>
<li>TUN/TAP 应用最多的场景是 VPN 代理，比如 clash、tun2socks。</li>
</ul>
<h2 id="ipip" class="headerLink">
    <a href="#ipip" class="header-mark"></a>ipip</h2><p>即 IPv4 in IPv4，在 IPv4 报文的基础上再封装一个 IPv4 报文。</p>]]></description></item><item><title>K8s 网络插件 Flannel</title><link>https://rd163.visword.com/posts/k8s-cni-flannel/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-cni-flannel/</guid><description><![CDATA[<h2 id="cnicontainer-network-interface" class="headerLink">
    <a href="#cnicontainer-network-interface" class="header-mark"></a>CNI（Container Network Interface）</h2><p>CNI 全称为 Container Network Interface，是用来定义容器网络的一个规范。<a href="https://github.com/containernetworking/cni" target="_blank" rel="noopener noreferrer">containernetworking/cni</a> 是一个 CNCF 的 CNI 实现项目，包括基本的 bridge、macvlan 等基本网络插件。</p>]]></description></item><item><title>C/C++ 实现的服务器和服务器相关的库</title><link>https://rd163.visword.com/posts/cpp-servers/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/cpp-servers/</guid><description><![CDATA[<h2 id="http-server" class="headerLink">
    <a href="#http-server" class="header-mark"></a>HTTP Server</h2><h3 id="nginx" class="headerLink">
    <a href="#nginx" class="header-mark"></a>NGINX</h3><h3 id="haproxy" class="headerLink">
    <a href="#haproxy" class="header-mark"></a>HAProxy</h3><h3 id="envoy" class="headerLink">
    <a href="#envoy" class="header-mark"></a>Envoy</h3><h3 id="apache-http-server" class="headerLink">
    <a href="#apache-http-server" class="header-mark"></a>Apache HTTP Server</h3><h3 id="apache-traffic-server" class="headerLink">
    <a href="#apache-traffic-server" class="header-mark"></a>Apache Traffic Server</h3><ul>
<li><a href="https://github.com/apache/trafficserver" target="_blank" rel="noopener noreferrer">Apache Traffic Server</a></li>
</ul>
<p>Apache Traffic Server™ 是一种高性能 Web 代理缓存，它通过在网络边缘缓存经常访问的信息来提高网络效率和性能。这使内容在物理上更接近最终用户，同时实现更快的交付并减少带宽使用。Traffic Server 旨在通过最大化现有和可用带宽来改善企业、互联网服务提供商 (ISP)、骨干提供商和大型 Intranet 的内容交付。</p>]]></description></item><item><title>使用 Certbot 为 Nginx 网站服务器设置永久免费的 HTTPS 证书</title><link>https://rd163.visword.com/posts/nginx-free-certificates-with-certbot/</link><pubDate>Mon, 13 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/nginx-free-certificates-with-certbot/</guid><description><![CDATA[<p>目前流行的免费 HTTPS 证书申请方案主要有两种:</p>
<ul>
<li><a href="https://github.com/acmesh-official/acme.sh" target="_blank" rel="noopener noreferrer">acme.sh</a>:采用纯 Shell 实现，拥有完善的中文文档，依赖少，适合脚本化场景。</li>
<li><a href="https://certbot.eff.org/" target="_blank" rel="noopener noreferrer">Certbot</a>:由 EFF(Electronic Frontier Foundation)维护，官方文档完善，与 Let&rsquo;s Encrypt 配套使用最为广泛。</li>
</ul>
<p>本文介绍第二种方式，即在 Nginx 上使用 Certbot 的 Webroot 模式申请并自动续签证书。</p>]]></description></item><item><title>DeepSeek 部署方案</title><link>https://rd163.visword.com/posts/deepseek-deployment/</link><pubDate>Fri, 07 Feb 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/deepseek-deployment/</guid><description>&lt;p>DeepSeek 是近期非常火爆的开源大模型，国产大模型 DeepSeek 凭借其优异的性能和对硬件资源的友好性，受到了众多开发者的关注。&lt;/p>
&lt;p>无奈在使用时，DeepSeek 官方总是提示「服务器繁忙，请稍后再试」，这可怎么办？&lt;/p></description></item><item><title>AI网关-Higress简介</title><link>https://rd163.visword.com/posts/ai-gateway-higress-intro/</link><pubDate>Sun, 23 Mar 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/ai-gateway-higress-intro/</guid><description><![CDATA[<p><a href="https://higress.cn/" target="_blank" rel="noopener noreferrer">Higress</a> 是一款云原生 API 网关，内核基于 Istio 和 Envoy，可以用 Go、Rust、JS 等语言编写 Wasm 插件，内置数十个开箱即用的通用插件，并提供开箱即用的控制台（在线 demo 请点<a href="https://demo.higress.io" target="_blank" rel="noopener noreferrer">这里</a>）。</p>]]></description></item><item><title>线性回归</title><link>https://rd163.visword.com/posts/linear-regression/</link><pubDate>Sat, 26 Apr 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/linear-regression/</guid><description>&lt;p>回归（regression）是一类能为一个或多个自变量与因变量之间关系建模的方法。在自然科学和社会科学领域，回归经常用来表示输入与输出之间的关系。&lt;/p></description></item><item><title>部署postfix服务进行发送邮件</title><link>https://rd163.visword.com/posts/postfix_deployment_to_sendmail/</link><pubDate>Wed, 09 Jul 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/postfix_deployment_to_sendmail/</guid><description><![CDATA[<h2 id="概述" class="headerLink">
    <a href="#%e6%a6%82%e8%bf%b0" class="header-mark"></a>概述</h2><p>若只需发送邮件（如监控报警、事务通知）,无需接收邮件，可采用 Postfix 或 SSMTP 的极简配置。本文介绍如何部署 Postfix 服务进行发送邮件。</p>
<p>如果需要收发同时支持，可采用 iRedMail 部署。</p>
<p>以下是 <strong>Postfix 邮件服务器部署的标准化流程</strong>,涵盖从安装到安全加固的完整步骤，适用于生产环境。</p>]]></description></item><item><title>代码覆盖率</title><link>https://rd163.visword.com/posts/code-coverage/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/code-coverage/</guid><description>&lt;p>代码覆盖率（Code Coverage）是软件测试中的一种度量方式，用于描述程序中源代码被测试执行到的比例和程度，所得比例即为代码覆盖率。&lt;/p>
&lt;p>代码覆盖率指标通常包含下面几类：&lt;/p></description></item><item><title>kube-dns</title><link>https://rd163.visword.com/posts/k8s-dns-kubedns/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-dns-kubedns/</guid><description><![CDATA[<h2 id="简介" class="headerLink">
    <a href="#%e7%ae%80%e4%bb%8b" class="header-mark"></a>简介</h2><p>从 Kubernetes v1.3 版本开始，集群会通过 cluster add-on 插件管理器自动启动内置的 DNS 服务。</p>
<blockquote>
  <p>说明：自 Kubernetes v1.12 起，CoreDNS 已取代 kube-dns 成为默认的集群 DNS 插件。本文介绍的是早期 kube-dns 方案，新集群建议使用 <a href="../k8s-dns-coredns" rel="">CoreDNS</a>。</p>]]></description></item><item><title>Github Pages + jekyll 搭建个人网站和博客</title><link>https://rd163.visword.com/posts/github-pages-setup-with-jekyll/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/github-pages-setup-with-jekyll/</guid><description>&lt;p>Jekyll 是 GitHub Pages 官方支持的静态网站生成工具，最大的优势在于可以直接在 GitHub 上用 VS Code Online 编辑 Markdown 文件，提交后由 GitHub 自动完成 HTML 的生成与部署。除了 Jekyll，常见的替代方案还有:&lt;/p></description></item><item><title>HttpAPI规范及生态组件</title><link>https://rd163.visword.com/posts/http-api-spec/</link><pubDate>Wed, 19 Feb 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/http-api-spec/</guid><description><![CDATA[<h2 id="背景" class="headerLink">
    <a href="#%e8%83%8c%e6%99%af" class="header-mark"></a>背景</h2><p>随着业务的增多，越来越多的服务需要提供 HTTP 协议的 API 接口供第三方调用。由于 HTTP API 并不像 tRPC 等协议那样有一套通用的协议规范来约束接口，API 开发者通常需要提供一份独立的 API 文档来说明每个接口的详细参数。</p>]]></description></item><item><title>c++20协程简介</title><link>https://rd163.visword.com/posts/cpp20-corouting-intro/</link><pubDate>Sun, 06 Apr 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/cpp20-corouting-intro/</guid><description><![CDATA[<h2 id="c20-协程简介" class="headerLink">
    <a href="#c20-%e5%8d%8f%e7%a8%8b%e7%ae%80%e4%bb%8b" class="header-mark"></a>C++20 协程简介</h2><p>参考：</p>
<ul>
<li><a href="https://github.com/0voice/cpp_backend_awsome_blog/blob/main/%E3%80%90NO.241%E3%80%91%E5%8D%8F%E7%A8%8B%E5%8F%8Ac%2B%2B%2020%E5%8E%9F%E7%94%9F%E5%8D%8F%E7%A8%8B%E7%A0%94%E7%A9%B6%E6%8A%A5%E5%91%8A.md" target="_blank" rel="noopener noreferrer">协程及 C++ 20 原生协程研究报告</a></li>
<li><a href="https://0cch.com/uploads/2022/02/k&#43;2021.pdf" target="_blank" rel="noopener noreferrer">2021K+ 全球软件研发行业创新峰会：深入解析 C++20 协程（PDF）</a></li>
</ul>
<p>C++20 协程通过 Promise 和 Awaitable 接口的十余个函数，向程序员暴露出定制协程流程和行为的入口。实现一个最简单的协程，通常需要用到其中的 8 个（5 个 Promise 函数 + 3 个 Awaitable 函数）。下面先从 Awaitable 的 3 个函数说起。</p>]]></description></item><item><title>python3 开发环境搭建</title><link>https://rd163.visword.com/posts/python3-development-env-setup/</link><pubDate>Sat, 20 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/python3-development-env-setup/</guid><description><![CDATA[<h2 id="版本选择" class="headerLink">
    <a href="#%e7%89%88%e6%9c%ac%e9%80%89%e6%8b%a9" class="header-mark"></a>版本选择</h2><p>建议使用 Python 3.10 及以上版本，因为更低版本已陆续停止维护。以 Python 3.8 为例，它已于 <strong>2024-10-07</strong> 正式结束生命周期（End of Life, EOL）,Python 官方不再提供 bug 修复和安全更新。</p>]]></description></item><item><title>导航网站</title><link>https://rd163.visword.com/posts/nav-sites/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/nav-sites/</guid><description><![CDATA[<p>整理一份按技术栈归类的开源导航站项目清单，方便挑选合适的方案自建导航页或浏览器主页。</p>
<h2 id="react--nextjs" class="headerLink">
    <a href="#react--nextjs" class="header-mark"></a>React / Next.js</h2><ul>
<li><a href="https://github.com/liwenka1/next-web-nav" target="_blank" rel="noopener noreferrer">next-web-nav 一个简单好用的导航网站</a>:基于 Next.js 14 + Tailwind CSS + shadcn/ui，本地数据持久化，支持可视化数据管理面板。</li>
<li><a href="https://github.com/6677-ai/tap4-ai-webui" target="_blank" rel="noopener noreferrer">tap4-ai-webui</a>:面向 AI 工具站的导航模板，内置支付能力。
<blockquote>
  <p>注：截至核实日，该仓库返回 404，可能已迁移或下架，请以最新链接为准。</p>]]></description></item><item><title>Strapi 介绍</title><link>https://rd163.visword.com/posts/strapi-intro/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/strapi-intro/</guid><description>&lt;p>Strapi 是一个开源的 Headless CMS（无头内容管理系统）。它允许开发者通过自定义的方式快速构建、管理和分发内容。Strapi 提供了一个强大的后端 API，同时支持 RESTful 和 GraphQL 两种接入方式，使得开发者可以方便地将内容分发到任何设备或服务，无论是网站、移动应用还是 IoT 设备。&lt;/p></description></item><item><title>K8s 的一些设计理念</title><link>https://rd163.visword.com/posts/k8s-perspective/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-perspective/</guid><description>&lt;p>分析和理解 Kubernetes 的设计理念，可以使我们更深入地了解整个系统，更好地利用它管理分布式部署的云原生应用;另一方面，也能让我们借鉴其在分布式系统设计方面的经验。&lt;/p></description></item><item><title>K8s CNI 网络插件</title><link>https://rd163.visword.com/posts/k8s-network-cni/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-network-cni/</guid><description>&lt;p>Kubernetes 的网络模型要求每个 Pod 都拥有独立的 IP，并能在不同节点间互通。CNI（Container Network Interface）便是实现这一模型的标准接口，kubelet 在创建 Pod 时会调用配置好的 CNI 插件来完成网卡与 IP 的分配。下面整理了社区常见的 CNI 插件以及性能测评与选型建议。&lt;/p></description></item><item><title>JS引擎</title><link>https://rd163.visword.com/posts/js-engine/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/js-engine/</guid><description><![CDATA[<h2 id="1-javascriptcore" class="headerLink">
    <a href="#1-javascriptcore" class="header-mark"></a>1. JavaScriptCore</h2><p>JavaScriptCore（简称 JSC）是 WebKit 默认的内嵌 JS 引擎。在维基百科上它都没有独立词条，只在 WebKit 词条的三级目录里被介绍了一下。个人感觉这多少有些不像话，毕竟它也是老牌 JS 引擎了。</p>]]></description></item><item><title>macOS 的 defaults 命令</title><link>https://rd163.visword.com/posts/mac-cmd-defaults/</link><pubDate>Tue, 21 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/mac-cmd-defaults/</guid><description><![CDATA[<p><code>/usr/bin/defaults</code> 是 macOS(早期称 Mac OS X)系统自带的用户默认配置读写命令，几乎所有原生应用的偏好设置都通过它来管理。</p>
<p><a href="https://macos-defaults.com/" target="_blank" rel="noopener noreferrer">macos-defaults.com</a> 这个网站收录了大量 <code>defaults</code> 在修改 <strong>Dock</strong>、<strong>Screenshots</strong>、<strong>Finder</strong> 等模块时的具体用法，并且完全开源，开源地址:</p>]]></description></item><item><title>如何创建 XML 网站地图 (并向 Google 提交)</title><link>https://rd163.visword.com/posts/how-to-create-sitemap/</link><pubDate>Fri, 24 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/how-to-create-sitemap/</guid><description>&lt;p>网站地图（SiteMap）是一个网站所有链接的容器。很多网站的链接层次比较深，爬虫很难抓取到，网站地图可以方便爬虫抓取网站页面，通过抓取这些页面，清晰了解网站的架构。网站地图一般存放在根目录下并命名为 &lt;code>sitemap.xml&lt;/code>,为爬虫指路，增加网站重要内容页面的收录。简单来说，网站地图就是根据网站的结构、框架、内容生成的导航网页文件。此外，网站地图对提高用户体验也有好处，它们为网站访问者指明方向，帮助迷失的访问者找到他们想看的页面。&lt;/p></description></item><item><title>ComfyUI教程</title><link>https://rd163.visword.com/posts/comfyui-get-started/</link><pubDate>Mon, 10 Mar 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/comfyui-get-started/</guid><description><![CDATA[<h2 id="术语解释" class="headerLink">
    <a href="#%e6%9c%af%e8%af%ad%e8%a7%a3%e9%87%8a" class="header-mark"></a>术语解释</h2><ul>
<li>VAE:变分自动编码器（Variational Autoencoder）,负责图像在像素空间与潜空间之间的转换。</li>
<li>CLIP 模型：全称 Contrastive Language-Image Pre-Training(对比式语言-图像预训练模型),用于将文本编码为模型可理解的特征。</li>
<li>T5:Google 提出的文本编码器，FLUX 等模型用它来理解更复杂、更长的提示词。</li>
</ul>
<h2 id="安装" class="headerLink">
    <a href="#%e5%ae%89%e8%a3%85" class="header-mark"></a>安装</h2><p>参考 GitHub 官方仓库，直接下载桌面安装包:</p>]]></description></item><item><title>图片加水印的命令行工具</title><link>https://rd163.visword.com/posts/tools-for-image-watermark/</link><pubDate>Thu, 13 Mar 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/tools-for-image-watermark/</guid><description><![CDATA[<p>在 Linux 或 macOS 系统中，可以通过命令行工具（如 <strong>ImageMagick</strong> 或 <strong>FFmpeg</strong>）快速为图片添加水印。相比图形化软件，命令行方式更便于批量处理与脚本化。以下是几种常用方法。</p>]]></description></item><item><title>Higress 的 OCI 扩展插件</title><link>https://rd163.visword.com/posts/ai-gateway-higress-oci-ext/</link><pubDate>Sat, 29 Mar 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/ai-gateway-higress-oci-ext/</guid><description><![CDATA[<h2 id="oci" class="headerLink">
    <a href="#oci" class="header-mark"></a>OCI</h2><p>OCI（Open Container Initiative，开放容器倡议）是一个轻量级、开放的治理组织，在 Linux 基金会的支持下成立，致力于围绕容器格式和运行时创建开放的行业标准。OCI 项目由 Docker、CoreOS（后被 Red Hat 收购，相应席位由 Red Hat 继承）以及容器行业的其他领导者于 2015 年 6 月启动。其技术委员会（Technical Oversight Board，TOB）成员随时间有所更迭，历史上曾包括 Red Hat、Microsoft、Docker、IBM、Google、SUSE 等，具体成员可查阅 <a href="https://github.com/opencontainers/tob" target="_blank" rel="noopener noreferrer">OCI Technical Oversight Board</a>。</p>]]></description></item><item><title>C++协程介绍</title><link>https://rd163.visword.com/posts/fiber-intro-for-cpp/</link><pubDate>Mon, 31 Mar 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/fiber-intro-for-cpp/</guid><description><![CDATA[<h2 id="协程coroutine与纤程fiber区别" class="headerLink">
    <a href="#%e5%8d%8f%e7%a8%8bcoroutine%e4%b8%8e%e7%ba%a4%e7%a8%8bfiber%e5%8c%ba%e5%88%ab" class="header-mark"></a>协程（coroutine）与纤程（fiber）区别</h2><h3 id="协程coroutine" class="headerLink">
    <a href="#%e5%8d%8f%e7%a8%8bcoroutine" class="header-mark"></a>协程（Coroutine）</h3><p>N:1 协程。</p>
<p>协程是语言级别的特性（C++20 原生支持），由编译器生成状态机逻辑，通过 <code>co_await</code>、<code>co_yield</code> 等关键字实现隐式挂起和恢复，无需直接操作底层上下文。</p>]]></description></item><item><title>Python 协程简介</title><link>https://rd163.visword.com/posts/python-corouting-intro/</link><pubDate>Sun, 13 Apr 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/python-corouting-intro/</guid><description><![CDATA[<p>Python 在 3.5 版本中引入了协程相关的语法糖 <code>async</code> 和 <code>await</code>，在 Python 3.7 版本中又提供了 <code>asyncio.run()</code> 来运行一个协程。因此建议大家学习协程时直接使用 Python 3.7 及以上版本。</p>
<p>Python 官方提供了各版本的 asyncio 文档，详见<a href="https://docs.python.org/zh-cn/3.13/library/asyncio-task.html" target="_blank" rel="noopener noreferrer">协程与任务官方文档</a>。</p>]]></description></item><item><title>GOAP(Goal-Oriented Action Planning)算法</title><link>https://rd163.visword.com/posts/algorithm-goap/</link><pubDate>Sat, 13 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/algorithm-goap/</guid><description><![CDATA[<h2 id="goap-概述" class="headerLink">
    <a href="#goap-%e6%a6%82%e8%bf%b0" class="header-mark"></a>GOAP 概述</h2><p>GOAP(Goal-Oriented Action Planning，目标导向行动规划)是一种基于目标的智能决策算法，常用于游戏 AI、机器人控制等领域。它由 Jeff Orkin 在 Monolith Productions 开发游戏《F.E.A.R.》(2005)时系统化提出，并在 GDC 2006 的演讲《Three States and a Plan: The A.I. of F.E.A.R.》中介绍给业界，此后成为游戏 AI 的经典规划范式之一。</p>]]></description></item><item><title>Vite 入门</title><link>https://rd163.visword.com/posts/get-started-with-vite/</link><pubDate>Tue, 21 Jul 2026 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/get-started-with-vite/</guid><description><![CDATA[<blockquote>
  <p>Next generation frontend tooling. It&rsquo;s fast!</p>

</blockquote><ul>
<li><a href="https://github.com/vitejs/vite" target="_blank" rel="noopener noreferrer">Vite GitHub 仓库</a></li>
</ul>
<h2 id="为什么快" class="headerLink">
    <a href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e5%bf%ab" class="header-mark"></a>为什么快</h2><ul>
<li>Vite 在启动时将应用中的模块区分为<strong>依赖</strong>(dependencies)与<strong>源码</strong>(source code)两类，从而改进了开发服务器的启动时间。依赖多为第三方库，变动不频繁，Vite 使用 esbuild 对其进行预打包;源码则按需通过原生 ESM 提供给浏览器。</li>
<li>在 Vite 中，HMR(热模块替换)是在原生 ESM 之上执行的。编辑某个文件时，Vite 只需要精确地使已编辑模块与其最近的 HMR 边界之间的链失活（大多数时候只是模块本身）,因此无论应用规模如何，HMR 始终能保持快速更新。</li>
</ul>
<h2 id="快速开始" class="headerLink">
    <a href="#%e5%bf%ab%e9%80%9f%e5%bc%80%e5%a7%8b" class="header-mark"></a>快速开始</h2><p>安装:</p>]]></description></item><item><title>程序员的酒后真言</title><link>https://rd163.visword.com/posts/drunk-post-of-a-programmer/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/drunk-post-of-a-programmer/</guid><description><![CDATA[<p>美国最大的网络论坛 Reddit 上，前几年有一个热帖。</p>
<p>一位当了好几年工程师的程序员说自己喝醉了，从业已经十年，心里有好多话想说,&ldquo;我可能会后悔今天说了这些话。&rdquo;</p>]]></description></item><item><title>SEO-向谷歌提交网站</title><link>https://rd163.visword.com/posts/submit-website-to-google/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/submit-website-to-google/</guid><description><![CDATA[<h2 id="谷歌是如何找到并索引你的内容的" class="headerLink">
    <a href="#%e8%b0%b7%e6%ad%8c%e6%98%af%e5%a6%82%e4%bd%95%e6%89%be%e5%88%b0%e5%b9%b6%e7%b4%a2%e5%bc%95%e4%bd%a0%e7%9a%84%e5%86%85%e5%ae%b9%e7%9a%84" class="header-mark"></a>谷歌是如何找到并索引你的内容的？</h2><p>Google 官方做过一支科普视频 <a href="https://www.youtube.com/watch?v=BNHR6IQJGZs" target="_blank" rel="noopener noreferrer">《How Search Works》</a>。</p>
<p>谷歌会通过下面 4 个主要环节来查找并索引你的内容。</p>
<p>小提示：由于谷歌内部算法复杂，下面的流程在一定程度上做了简化。</p>]]></description></item><item><title>Redis 数据类型</title><link>https://rd163.visword.com/posts/redis-data-type/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/redis-data-type/</guid><description><![CDATA[<p>Redis 主要支持以下几种数据类型:</p>
<ul>
<li><strong>String(字符串)</strong>:基本的数据存储单元，可以存储字符串、整数或者浮点数。</li>
<li><strong>Hash(哈希)</strong>:一个键值对集合，可以存储多个字段。</li>
<li><strong>List(列表)</strong>:一个简单的列表，可以存储一系列有序的字符串元素。</li>
<li><strong>Set(集合)</strong>:一个无序集合，可以存储不重复的字符串元素。</li>
<li><strong>Zset(Sorted Set，有序集合)</strong>:类似于集合，但是每个元素都有一个分数（score）与之关联。</li>
<li><strong>位图（Bitmaps）</strong>:基于字符串类型，可以对每个位进行操作。</li>
<li><strong>HyperLogLog(超日志)</strong>:用于基数统计，可以估算集合中的唯一元素数量。</li>
<li><strong>Geospatial(地理空间)</strong>:用于存储地理位置信息。</li>
<li><strong>Pub/Sub(发布/订阅)</strong>:一种消息通信模式，允许客户端订阅消息通道，并接收发布到该通道的消息。</li>
<li><strong>Stream(流)</strong>:用于消息队列和日志存储，支持消息的持久化和时间排序。</li>
<li><strong>Modules(模块)</strong>:Redis 支持动态加载模块，可以扩展 Redis 的功能。</li>
</ul>
<h2 id="zsetsorted-set有序集合" class="headerLink">
    <a href="#zsetsorted-set%e6%9c%89%e5%ba%8f%e9%9b%86%e5%90%88" class="header-mark"></a>Zset(Sorted Set，有序集合)</h2><p>Redis Zset 和 Set 一样，也是 string 类型元素的集合，且不允许重复的成员。</p>]]></description></item><item><title>Python embeddable 版本安装过程记录</title><link>https://rd163.visword.com/posts/python-embeddable-install/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/python-embeddable-install/</guid><description><![CDATA[<ul>
<li>操作系统：Windows 11</li>
<li>Python 版本：Python 3.10</li>
</ul>
<h2 id="step-1安装-python-310" class="headerLink">
    <a href="#step-1%e5%ae%89%e8%a3%85-python-310" class="header-mark"></a>Step 1：安装 Python 3.10</h2><p>从下载列表 <a href="https://www.python.org/downloads/release/python-3100/" target="_blank" rel="noopener noreferrer">Python 3.10.0</a> 可以看出，Installer 版本的安装文件大小比 Embeddable 版本大很多：</p>]]></description></item><item><title>Perl 语言学习</title><link>https://rd163.visword.com/posts/perl-study/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/perl-study/</guid><description><![CDATA[<h2 id="perl-背景" class="headerLink">
    <a href="#perl-%e8%83%8c%e6%99%af" class="header-mark"></a><a href="https://github.com/Perl/perl5" target="_blank" rel="noopener noreferrer">Perl</a> 背景</h2><p>Perl 全称为 Practical Extraction and Report Language，意为「实用提取和报告语言」。</p>
<p>Perl 由 Larry Wall 于 1987 年创建，其灵感来自 C、sed、awk、shell 脚本以及许多其他编程语言的特性。</p>]]></description></item><item><title>Kubernetes Gateway API 简介</title><link>https://rd163.visword.com/posts/k8s-gateway-api-intro/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-gateway-api-intro/</guid><description><![CDATA[<h2 id="背景" class="headerLink">
    <a href="#%e8%83%8c%e6%99%af" class="header-mark"></a>背景</h2><p>Kubernetes Gateway API 是 Kubernetes 社区（SIG-Network）在原有 Ingress 基础上设计的一套全新流量入口 API 规范，项目最早以 <code>service-apis</code> 的名义于 2019 年作为沙箱项目启动，后更名为 Gateway API。它以 CRD 形式安装到集群中，并不随 Kubernetes 核心版本直接发布。相比 Ingress，Gateway API 定位为下一代入口 API，提供了更丰富的能力：支持 HTTP 之外更多协议（如 TCP、UDP、TLS、gRPC 等），具备更强的扩展性，可以通过 CRD 灵活新增特定的 Gateway 类型（例如 AWS Gateway、Envoy Gateway 等），并支持更细粒度的流量路由规则，可以精确到服务级别；而 Ingress 的最小路由单元通常是路径，主要面向 HTTP 流量。</p>]]></description></item><item><title>k8s 网络插件 Calico</title><link>https://rd163.visword.com/posts/k8s-cni-calico/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-cni-calico/</guid><description><![CDATA[<h2 id="简介" class="headerLink">
    <a href="#%e7%ae%80%e4%bb%8b" class="header-mark"></a>简介</h2><p>Calico 是一个纯三层的数据中心网络方案（不需要 Overlay），与 OpenStack、Kubernetes、AWS、GCE 等 IaaS 和容器平台都有良好的集成。</p>]]></description></item><item><title>Boinc 任务分配</title><link>https://rd163.visword.com/posts/distributed-computation-boinc-job-assign/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/distributed-computation-boinc-job-assign/</guid><description><![CDATA[<p>参考 <a href="https://github.com/BOINC/boinc/wiki/AssignedWork" target="_blank" rel="noopener noreferrer">AssignedWork</a>。</p>
<p>任务分配分两种情况：广播（Broadcast）和绑定（Targeted Jobs）。</p>
<p>先从任务提交命令说起。</p>
<div class="code-block highlight is-open show-line-numbers  tw:group tw:my-2">
  <div class="
    
    tw:flex 
    tw:flex-row
    tw:flex-1 
    tw:justify-between 
    tw:w-full tw:bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw:mx-2 
        tw:flex
        tw:flex-row
        tw:flex-1"
      aria-hidden="true">
          <span class="tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></span>
          <span class="tw:select-none tw:my-1! tw:block">bash</span>
      </button>

   <div class="tw:flex">
      <button 
        class="
          line-number-button
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.show-line-numbers]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw:select-none 
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.is-wrap]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw:select-none
          tw:mx-2 
          tw:hidden
          tw:group-[.is-open]:block
          tw:hover:text-fgColor-link 
          tw:print:hidden!"
        title="Copy code">
          <span class="copy-icon tw:block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw:hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw:select-none 
          tw:mx-2 
          tw:block 
          tw:group-[.is-open]:hidden 
          tw:print:hidden!" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw:block tw:m-0 tw:p-0"><code 
    id="codeblock-id-1" 
    class="
      chroma 
      tw:block! 
      tw:p-0
      tw:m-0
      tw:transition-[max-height] 
      tw:duration-500 
      tw:ease-in-out 
      tw:group-[.is-closed]:max-h-0! 
      tw:group-[.is-wrap]:text-wrap
      tw:overflow-y-hidden
      tw:overflow-x-auto
      tw:scrollbar-thin
      "><span class="line"><span class="cl">bin/create_work --appname worker --wu_name worker_nodelete input</span></span></code></pre>
</div>
<p><code>create_work</code> 的一些重要参数说明:</p>]]></description></item><item><title>LLM 时代下的 AI 网关</title><link>https://rd163.visword.com/posts/gateway-for-ai/</link><pubDate>Thu, 23 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/gateway-for-ai/</guid><description><![CDATA[<h2 id="ai-网关" class="headerLink">
    <a href="#ai-%e7%bd%91%e5%85%b3" class="header-mark"></a>AI 网关</h2><p>AI Gateway（又称大模型网关、AI 网关）是位于应用与 AI/LLM 服务之间的一层流量管理组件，在开源社区已有较为成熟的技术实现。它在应用与模型服务之间承担统一入口的职责：无论调用的是预置模型还是自研模型，都可以经由网关完成路由、鉴权与调用，方便业务方在数据分析、应用开发等场景中接入 AI 能力。同时，AI 网关还提供配套工具，帮助监控模型调用性能，并为后续优化提供数据支撑。</p>]]></description></item><item><title>DeepSeek 模型发展时间线</title><link>https://rd163.visword.com/posts/deepseek-models-development-timeline/</link><pubDate>Fri, 07 Feb 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/deepseek-models-development-timeline/</guid><description><![CDATA[<h2 id="2023-年" class="headerLink">
    <a href="#2023-%e5%b9%b4" class="header-mark"></a>2023 年</h2><p>2023 年 7 月，DeepSeek（深度求索）在杭州成立，由幻方量化创始人梁文锋创立，专注于通用人工智能（AGI）与大模型研发，并依托幻方积累的算力资源开展训练。</p>]]></description></item><item><title>LLM Retrieval-Augmented Generation(RAG)</title><link>https://rd163.visword.com/posts/llm-retrieval-augmented-generation/</link><pubDate>Fri, 14 Feb 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/llm-retrieval-augmented-generation/</guid><description><![CDATA[<p>相关论文: <a href="https://arxiv.org/abs/2005.11401" target="_blank" rel="noopener noreferrer">Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks</a>(Lewis et al., 2020)。此外，还有一个 <a href="https://github.com/SmartFlowAI/Hand-on-RAG" target="_blank" rel="noopener noreferrer">手搓的 RAG</a> GitHub 项目，可以一窥 RAG 的全貌。</p>
<h2 id="什么是检索增强生成" class="headerLink">
    <a href="#%e4%bb%80%e4%b9%88%e6%98%af%e6%a3%80%e7%b4%a2%e5%a2%9e%e5%bc%ba%e7%94%9f%e6%88%90" class="header-mark"></a>什么是检索增强生成?</h2><p>检索增强生成（Retrieval-Augmented Generation,RAG）是一个概念，它旨在为大语言模型（Large Language Model,LLM）提供额外的、来自外部知识源的信息。这样，LLM 在生成更精确、更贴合上下文的答案的同时，也能有效减少产生误导性信息（即&quot;幻觉&quot;）的可能。</p>]]></description></item><item><title>png 格式工具</title><link>https://rd163.visword.com/posts/png-format-tools/</link><pubDate>Thu, 13 Mar 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/png-format-tools/</guid><description><![CDATA[<h2 id="工具示例imagemagick" class="headerLink">
    <a href="#%e5%b7%a5%e5%85%b7%e7%a4%ba%e4%be%8bimagemagick" class="header-mark"></a>工具示例：ImageMagick</h2><p>PNG 格式支持多种预定义的文本块类型（如 <code>tEXt</code>、<code>iTXt</code>、<code>zTXt</code>），用于存储作者、版权、描述等文本元数据。这些数据块会被大多数图片查看器和编辑器保留。</p>]]></description></item><item><title>Kubernetes 渐进式发布</title><link>https://rd163.visword.com/posts/k8s-rollout/</link><pubDate>Wed, 23 Apr 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-rollout/</guid><description><![CDATA[<p>通常渐进式发布主要包括两类：蓝绿发布和金丝雀发布。本文对此做详细介绍，前置背景可参考:</p>
<ul>
<li><a href="https://www.hebye.com/docs/k8s-roll/k8s-roll-1dd4l55dga9d1" target="_blank" rel="noopener noreferrer">k8s 应用更新策略：灰度发布和蓝绿发布</a></li>
</ul>
<h2 id="常规方案" class="headerLink">
    <a href="#%e5%b8%b8%e8%a7%84%e6%96%b9%e6%a1%88" class="header-mark"></a>常规方案</h2><h3 id="蓝绿发布" class="headerLink">
    <a href="#%e8%93%9d%e7%bb%bf%e5%8f%91%e5%b8%83" class="header-mark"></a>蓝绿发布</h3><p>蓝绿部署中一共存在两套系统：一套是正在对外提供服务的系统，标记为「绿色」;另一套是准备发布的系统，标记为「蓝色」。两套系统都是功能完善、可独立运行的系统，只是版本和对外服务状态不同。</p>
<p>当需要用新版本替换线上旧版本时，会在现有系统之外部署一套使用新版本代码的全新系统。此时两套系统并存：继续对外提供服务的旧系统是绿色系统，新部署的系统是蓝色系统。切换时只需把流量入口指向蓝色系统即可完成发布;如需回退，再把流量切回绿色系统。</p>]]></description></item><item><title>kimi k2模型介绍</title><link>https://rd163.visword.com/posts/kimi_k2_model_intro/</link><pubDate>Sun, 20 Jul 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/kimi_k2_model_intro/</guid><description><![CDATA[<p>Kimi K2 是北京月之暗面科技有限公司（Moonshot AI）于 2025 年 7 月推出的万亿参数 MoE(混合专家)架构大模型，包含两个主要版本:<strong>Kimi-K2-Base</strong>(基座模型)和 <strong>Kimi-K2-Instruct</strong>(指令微调模型)。以下是它们的详细介绍。</p>]]></description></item><item><title>详解圈复杂度</title><link>https://rd163.visword.com/posts/code-cyclomatic-complexity/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/code-cyclomatic-complexity/</guid><description><![CDATA[<h2 id="什么是圈复杂度" class="headerLink">
    <a href="#%e4%bb%80%e4%b9%88%e6%98%af%e5%9c%88%e5%a4%8d%e6%9d%82%e5%ba%a6" class="header-mark"></a>什么是圈复杂度?</h2><p>圈复杂度（Cyclomatic Complexity）是一种代码复杂度的衡量标准，由 Thomas J. McCabe, Sr. 于 1976 年在论文 <em>A Complexity Measure</em>(IEEE Transactions on Software Engineering, SE-2(4): 308-320)中提出，目的是指导程序员写出更具可测性和可维护性的代码。</p>]]></description></item><item><title>如何使用主机当前用户运行 docker</title><link>https://rd163.visword.com/posts/run-docker-with-same-host-user/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/run-docker-with-same-host-user/</guid><description>&lt;p>当我们在 Docker 容器中挂载宿主机目录时，如果容器内进程默认以 root 身份运行，新生成的文件会属于 root，宿主机当前用户往往无权读写。为了避免这种权限错乱，我们需要让容器内的进程以宿主机当前用户的 UID/GID 运行。下面提供两种方法。&lt;/p></description></item><item><title>Python 与 bash 脚本共享配置文件的最佳实践</title><link>https://rd163.visword.com/posts/python-bash-share-conf/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/python-bash-share-conf/</guid><description>&lt;p>同一个工程的代码中常常会同时包含 Python 代码和 bash 脚本，不可避免地会用到配置文件。某些场景下，这两种语言需要共享同一份配置。怎么实现呢？一般有两种方案：&lt;/p></description></item><item><title>Nginx 内存池机制</title><link>https://rd163.visword.com/posts/nginx-mem-pool/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/nginx-mem-pool/</guid><description><![CDATA[<p>Nginx 的内存池设计得非常精妙，它在满足小块内存申请的同时，也处理大块内存的申请请求，同时还允许挂载自己的数据区域及对应的数据清理操作。</p>
<p>Nginx 内存池的实现主要集中在 <code>src/core/ngx_palloc.{h,c}</code> 中，一些支持函数位于 <code>src/os/unix/ngx_alloc.{h,c}</code> 中。这些支持函数主要是对原有的 <code>malloc</code> / <code>free</code> / <code>memalign</code> 等函数的封装。</p>]]></description></item><item><title>Linux LD_PRELOAD 技术介绍</title><link>https://rd163.visword.com/posts/linux-ld-preload/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/linux-ld-preload/</guid><description><![CDATA[<h2 id="ld_preload-介绍" class="headerLink">
    <a href="#ld_preload-%e4%bb%8b%e7%bb%8d" class="header-mark"></a>LD_PRELOAD 介绍</h2><p>LD_PRELOAD 是 Linux/Unix 系统的一个环境变量，它能够影响程序运行时的链接行为，允许在程序启动前指定优先加载的动态链接库。借助这个环境变量，可以在主程序与其依赖的动态链接库之间插入额外的动态库，甚至覆盖系统标准函数库中的实现。</p>]]></description></item><item><title>Kubernetes CRD 和 Operator</title><link>https://rd163.visword.com/posts/k8s-opeator/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-opeator/</guid><description>&lt;p>CRD 的全称是 CustomResourceDefinition，是 Kubernetes 为提高可扩展性、让开发者自定义资源（如 Deployment、StatefulSet 等）的一种方法。&lt;/p></description></item><item><title>K8s 服务网格配置发现协议</title><link>https://rd163.visword.com/posts/k8s-service-mesh-config-proto/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-service-mesh-config-proto/</guid><description><![CDATA[<p>在服务网格场景下，控制面需要把监听器、路由、集群、端点、证书等配置高效、一致地下发到数据面（每个 sidecar 代理）。本文梳理 Istio 历史上使用过的两类配置分发协议：基于订阅的 <strong>MCP</strong> 与 Envoy 原生的 <strong>xDS</strong>。</p>]]></description></item><item><title>Gin 开发后台服务最佳实践</title><link>https://rd163.visword.com/posts/best-practice-for-gin/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/best-practice-for-gin/</guid><description><![CDATA[<p><a href="https://github.com/gin-gonic/gin" target="_blank" rel="noopener noreferrer">gin</a> 是一个由 Go 语言实现的 HTTP Web 框架，基于 httprouter，主打高性能与简洁的 API 设计，常用于构建 REST API 与微服务。</p>
<p><a href="https://github.com/skyhee/gin-doc-cn" target="_blank" rel="noopener noreferrer">gin 中文文档</a> 系统介绍了路由、无缝重启、中间件、数据库接入等常用方法，可作为入门与速查参考。</p>]]></description></item><item><title>Boinc 网络通信协议</title><link>https://rd163.visword.com/posts/distributed-computation-boinc-net-protocol/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/distributed-computation-boinc-net-protocol/</guid><description><![CDATA[<p>官网文档对此有简要介绍：</p>
<ul>
<li><a href="https://github.com/BOINC/boinc/wiki/CommIntro" target="_blank" rel="noopener noreferrer">网络交互概览（CommIntro）</a></li>
</ul>
<p><img class="tw:inline" loading="lazy" src='https://raw.githubusercontent.com/wiki/BOINC/boinc/comm.png'   alt="boinc-net-proto"  ></p>
<p>为了更好地观察 BOINC 客户端与服务器的通信流程，可以在客户端开启 <code>http_debug</code>、<code>http_xfer_debug</code> 调试选项。当加入新项目时，便可在日志中观察到客户端与服务器之间的通信协议内容。</p>]]></description></item><item><title>阿里千问系列模型</title><link>https://rd163.visword.com/posts/qwenlm-intro/</link><pubDate>Sat, 08 Mar 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/qwenlm-intro/</guid><description><![CDATA[<h2 id="简介" class="headerLink">
    <a href="#%e7%ae%80%e4%bb%8b" class="header-mark"></a>简介</h2><p>阿里通义千问（Qwen）系列模型由 QwenLM 团队维护，相关代码与文档均托管在 GitHub。</p>
<p><strong>GitHub 组织与仓库:</strong></p>
<ul>
<li><a href="https://github.com/QwenLM" target="_blank" rel="noopener noreferrer">QwenLM</a>:Qwen 团队的官方 GitHub 组织,涵盖 Qwen、Qwen-VL、Qwen-Coder、Qwen-Agent 等多个仓库(后续随版本迭代持续新增 Qwen2/Qwen3 等系列)。</li>
</ul>
<p><strong>官方博客:</strong></p>]]></description></item><item><title>静态网站生成工具</title><link>https://rd163.visword.com/posts/static-site-gen-tools/</link><pubDate>Tue, 25 Mar 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/static-site-gen-tools/</guid><description>&lt;p>下面整理常见的静态网站生成工具（Static Site Generator，SSG）与文档站点方案，记录它们的特点与代表性应用案例，便于横向对比与选型。&lt;/p></description></item><item><title>C++ Promise/Future 模型</title><link>https://rd163.visword.com/posts/cpp-promise-future-intro/</link><pubDate>Sun, 06 Apr 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/cpp-promise-future-intro/</guid><description>&lt;p>Promise/Future 是一种经典的异步抽象，正因为它提供了一套「标准化」的概念，因而衍生出许多可能性。这就如同工业史上的集装箱、软件界的 Docker——凭借「标准化」这一关键属性，不同组件可以简单地自由组合，从而大幅提升整体效率。&lt;/p></description></item><item><title>HTML5 语义化标签</title><link>https://rd163.visword.com/posts/html5-semantic-tags/</link><pubDate>Sun, 01 Jun 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/html5-semantic-tags/</guid><description><![CDATA[<h2 id="语义化标签" class="headerLink">
    <a href="#%e8%af%ad%e4%b9%89%e5%8c%96%e6%a0%87%e7%ad%be" class="header-mark"></a>语义化标签</h2><p>在 [HTML5] 标准中，新增了若干用于增强页面语义的标签，常见的有 <code>article</code>、<code>section</code>、<code>nav</code>、<code>aside</code>、<code>main</code> 等。与大多数普通标签不同，浏览器在渲染这些标签时仅仅把它们当作普通的 <code>div</code> 块级元素处理，不会添加任何额外的展现逻辑;也就是说，这些标签的作用仅在于增强语义。对 Web 开发者而言，使用这些标签的实际意义主要有两点：搜索引擎优化（SEO）,以及提升页面的可访问性（accessibility）。</p>]]></description></item><item><title>Markdown 转换为 HTML 的golang开源项目</title><link>https://rd163.visword.com/posts/golang-markdown-to-html/</link><pubDate>Fri, 13 Jun 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-markdown-to-html/</guid><description><![CDATA[<p>在 Go 语言生态中，有不少优秀的开源项目可以将 Markdown 转换为 HTML。下面整理几款常见的工具和库，供选型参考。</p>
<h2 id="goldmark" class="headerLink">
    <a href="#goldmark" class="header-mark"></a>Goldmark</h2><p>GitHub：<a href="https://github.com/yuin/goldmark" target="_blank" rel="noopener noreferrer">https://github.com/yuin/goldmark</a></p>
<p>特点：</p>
<ul>
<li>高性能，完全符合 CommonMark 标准。</li>
<li>原生支持扩展（如表格、任务列表、删除线、脚注、数学公式等）。</li>
<li>被许多知名项目采用，Hugo 自 v0.60.0 起将其作为默认 Markdown 渲染器。</li>
<li>仅依赖标准库，API 简洁，易于集成。</li>
<li>提供 Playground：<a href="https://yuin.github.io/goldmark/playground/" target="_blank" rel="noopener noreferrer">https://yuin.github.io/goldmark/playground/</a></li>
</ul>
<div class="code-block highlight is-closed show-line-numbers  tw:group tw:my-2">
  <div class="
    
    tw:flex 
    tw:flex-row
    tw:flex-1 
    tw:justify-between 
    tw:w-full tw:bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw:mx-2 
        tw:flex
        tw:flex-row
        tw:flex-1"
      aria-hidden="true">
          <span class="tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></span>
          <span class="tw:select-none tw:my-1! tw:block">go</span>
      </button>

   <div class="tw:flex">
      <button 
        class="
          line-number-button
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.show-line-numbers]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw:select-none 
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.is-wrap]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw:select-none
          tw:mx-2 
          tw:hidden
          tw:group-[.is-open]:block
          tw:hover:text-fgColor-link 
          tw:print:hidden!"
        title="Copy code">
          <span class="copy-icon tw:block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw:hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw:select-none 
          tw:mx-2 
          tw:block 
          tw:group-[.is-open]:hidden 
          tw:print:hidden!" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw:block tw:m-0 tw:p-0"><code 
    id="codeblock-id-1" 
    class="
      chroma 
      tw:block! 
      tw:p-0
      tw:m-0
      tw:transition-[max-height] 
      tw:duration-500 
      tw:ease-in-out 
      tw:group-[.is-closed]:max-h-0! 
      tw:group-[.is-wrap]:text-wrap
      tw:overflow-y-hidden
      tw:overflow-x-auto
      tw:scrollbar-thin
      "><span class="line"><span class="cl"><span class="kn">import</span><span class="w"> </span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="s">&#34;bytes&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="s">&#34;github.com/yuin/goldmark&#34;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nx">md</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">goldmark</span><span class="p">.</span><span class="nf">New</span><span class="p">()</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="kd">var</span><span class="w"> </span><span class="nx">buf</span><span class="w"> </span><span class="nx">bytes</span><span class="p">.</span><span class="nx">Buffer</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="k">if</span><span class="w"> </span><span class="nx">err</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">md</span><span class="p">.</span><span class="nf">Convert</span><span class="p">([]</span><span class="nb">byte</span><span class="p">(</span><span class="s">&#34;# Hello&#34;</span><span class="p">),</span><span class="w"> </span><span class="o">&amp;</span><span class="nx">buf</span><span class="p">);</span><span class="w"> </span><span class="nx">err</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="kc">nil</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="nb">panic</span><span class="p">(</span><span class="nx">err</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="p">}</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="nx">html</span><span class="w"> </span><span class="o">:=</span><span class="w"> </span><span class="nx">buf</span><span class="p">.</span><span class="nf">String</span><span class="p">()</span></span></span></code></pre>
</div>
<h2 id="blackfriday" class="headerLink">
    <a href="#blackfriday" class="header-mark"></a>Blackfriday</h2><p>GitHub：<a href="https://github.com/russross/blackfriday" target="_blank" rel="noopener noreferrer">https://github.com/russross/blackfriday</a></p>]]></description></item><item><title>怎么设计及保存密码</title><link>https://rd163.visword.com/posts/how-to-save-password/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/how-to-save-password/</guid><description><![CDATA[<p>保存密码的目的只有一个：保证账号安全。下面我们分阶段来分析。</p>
<h2 id="问题分析" class="headerLink">
    <a href="#%e9%97%ae%e9%a2%98%e5%88%86%e6%9e%90" class="header-mark"></a>问题分析</h2><ul>
<li>首先要注意，不能给所有账号设置相同的密码，否则一旦某家网站泄露，就会面临撞库攻击的风险，因此需要给不同账号设置不同的密码。我之前就被盗过几次号，原因就是我的密码几乎都是统一的，除非有些网站强制要求包含大写字母和符号。可随之而来的问题是：密码太多，难以记忆。</li>
<li>这时可以准备一个笔记本，把自己不同账户的密码都记下来。用笔记本记录密码也有两个问题：其一，笔记本丢失或忘带；其二，笔记本被他人偷看。</li>
<li>为了解决上述问题，可以做好备份——随身携带一本，家里放置一本，这样可以解决遗失问题。但如何解决忘带问题呢？出门不小心忘带笔记本了，这时要在室外输入一个密码怎么办？最好的解决办法是网络备份。</li>
<li>网络备份的方案有很多，比如可以用网盘、网络笔记软件，或者 GitHub 来存储密码文件。</li>
<li>这时又会面临新的问题：存储在网络上的文件如何保证安全？即不被人发现，或者即便被人发现，也无法窥探到真实的密码内容。</li>
</ul>
<p>所以这里最关键的问题，就是如何解决密码在网络上的存储问题。</p>]]></description></item><item><title>VuePress 使用指南</title><link>https://rd163.visword.com/posts/vuepress-getting-started/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/vuepress-getting-started/</guid><description><![CDATA[<p>本文基于 <a href="https://vuepress.vuejs.org/zh/" target="_blank" rel="noopener noreferrer">VuePress 官方文档</a> 整理而成。</p>
<h2 id="介绍" class="headerLink">
    <a href="#%e4%bb%8b%e7%bb%8d" class="header-mark"></a>介绍</h2><p>VuePress 是一个以 Markdown 为中心的静态网站生成器。你可以使用 Markdown 来书写内容（如文档、博客等），然后 VuePress 会帮助你生成一个静态网站来展示它们。</p>]]></description></item><item><title>Typst</title><link>https://rd163.visword.com/posts/rust-typst/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/rust-typst/</guid><description>&lt;p>&lt;a href="https://github.com/typst/typst" target="_blank" rel="noopener noreferrer">Typst&lt;/a> 是一款专门为排版而生的新生代工具，主体用 Rust 编写，采用 Apache-2.0 协议。它完全摒弃了传统排版系统的历史包袱，着眼于现代化的功能与设计，成功克服了 LaTeX 等老牌方案的一些固有的不足。&lt;/p></description></item><item><title>K8s 跨集群通信</title><link>https://rd163.visword.com/posts/k8s-pod-to-pod-different-clusters/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-pod-to-pod-different-clusters/</guid><description>&lt;p>跨集群 Pod 通信（Cross-Cluster Pod-to-Pod Communication）是多集群架构里最常被问到的问题之一。按底层网络是否互通，可以分两种情况讨论。&lt;/p></description></item><item><title>k8s 暴露服务的方式</title><link>https://rd163.visword.com/posts/k8s-expose/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-expose/</guid><description><![CDATA[<h2 id="暴露-service-的三种方式" class="headerLink">
    <a href="#%e6%9a%b4%e9%9c%b2-service-%e7%9a%84%e4%b8%89%e7%a7%8d%e6%96%b9%e5%bc%8f" class="header-mark"></a>暴露 Service 的三种方式</h2><p>Kubernetes 中将 Service 暴露给集群外部访问，最常用的有三种类型：NodePort、LoadBalancer 和 Ingress。（ClusterIP 仅在集群内部可达，ExternalName 则通过 DNS CNAME 映射，二者不在本文讨论的对外暴露范围内。）</p>]]></description></item><item><title>K8s Nginx Ingress Controller 简介</title><link>https://rd163.visword.com/posts/k8s-nginx-ingress-controller/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-nginx-ingress-controller/</guid><description>&lt;p>在 Kubernetes 集群中，Ingress 作为集群内服务对外暴露的访问接入点，几乎承载着集群内服务访问的所有流量。&lt;/p>
&lt;p>Ingress 是 Kubernetes 中的一个资源对象，用来管理集群外部访问集群内部服务的方式。通过 Ingress 资源可以配置不同的转发规则，根据 Host、URL 路径等条件，将请求路由到不同 Service 所对应的后端 Pod。&lt;/p></description></item><item><title>Golang web框架</title><link>https://rd163.visword.com/posts/golang-web-framework/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-web-framework/</guid><description><![CDATA[<h2 id="fiber" class="headerLink">
    <a href="#fiber" class="header-mark"></a>Fiber</h2><ul>
<li><a href="https://github.com/gofiber/fiber" target="_blank" rel="noopener noreferrer">Fiber</a>:受 Express.js 启发的 Go Web 框架，底层基于 fasthttp，主打零内存分配与高性能。</li>
</ul>
<p>基于 Fiber 的开源项目:</p>
<ul>
<li><a href="https://github.com/Finb/bark-server" target="_blank" rel="noopener noreferrer">bark-server</a>:iOS 推送通知服务 Bark 的后端。</li>
</ul>
<h2 id="macaron" class="headerLink">
    <a href="#macaron" class="header-mark"></a>Macaron</h2><ul>
<li><a href="https://github.com/go-macaron/macaron" target="_blank" rel="noopener noreferrer">Macaron</a>:高生产力、模块化的 Go Web 框架。目前已进入维护模式，不再新增功能，官方推荐其后继者 <a href="https://github.com/flamego/flamego" target="_blank" rel="noopener noreferrer">Flamego</a>。</li>
</ul>
<h2 id="beego" class="headerLink">
    <a href="#beego" class="header-mark"></a>Beego</h2><ul>
<li><a href="https://github.com/beego/beego" target="_blank" rel="noopener noreferrer">Beego</a>:老牌高性能 Go Web 框架，提供 ORM、缓存、日志、配置、任务等一整套模块。注：原作者仓库 <code>astaxie/beego</code> 已迁移至 <code>beego/beego</code> 组织，请使用新地址。</li>
</ul>
<h2 id="gin" class="headerLink">
    <a href="#gin" class="header-mark"></a>Gin</h2><ul>
<li><a href="https://github.com/gin-gonic/gin" target="_blank" rel="noopener noreferrer">Gin</a>:使用最广泛的 Go Web 框架，采用 httprouter 改造的路由，性能高、API 简洁，中间件生态丰富。</li>
</ul>
<h2 id="echo" class="headerLink">
    <a href="#echo" class="header-mark"></a>Echo</h2><ul>
<li><a href="https://github.com/labstack/echo" target="_blank" rel="noopener noreferrer">Echo</a>:高性能、极简的 Go Web 框架，自动 TLS、HTTP/2、可扩展中间件支持完善。</li>
</ul>
<h2 id="chi" class="headerLink">
    <a href="#chi" class="header-mark"></a>Chi</h2><ul>
<li><a href="https://github.com/go-chi/chi" target="_blank" rel="noopener noreferrer">chi</a>:轻量、兼容 <code>net/http</code> 的路由库，API 与标准库无缝衔接，适合构建可组合的 HTTP 服务。</li>
</ul>
<h2 id="gorilla" class="headerLink">
    <a href="#gorilla" class="header-mark"></a>Gorilla</h2><ul>
<li><a href="https://github.com/gorilla/mux" target="_blank" rel="noopener noreferrer">gorilla/mux</a>:强大的 HTTP 路由与请求匹配器，功能丰富。Gorilla 工具集曾在 2022 年底被归档，后由新的维护者团队接管并恢复维护。</li>
<li><a href="https://github.com/gorilla/websocket" target="_blank" rel="noopener noreferrer">gorilla/websocket</a>:Go 社区应用最广泛的 WebSocket 库。</li>
</ul>
<h2 id="fasthttp" class="headerLink">
    <a href="#fasthttp" class="header-mark"></a>fasthttp</h2><ul>
<li><a href="https://github.com/valyala/fasthttp" target="_blank" rel="noopener noreferrer">fasthttp</a>:为极端性能优化的 HTTP 实现，吞吐量与内存占用均显著优于标准库 <code>net/http</code>,但 API 与 <code>net/http</code> 不兼容。</li>
</ul>
<h2 id="httprouter" class="headerLink">
    <a href="#httprouter" class="header-mark"></a>httprouter</h2><ul>
<li><a href="https://github.com/julienschmidt/httprouter" target="_blank" rel="noopener noreferrer">httprouter</a>:基于 radix tree 的高性能路由，是众多 Go Web 框架（含 Gin）的底层路由原型。</li>
</ul>
<h2 id="hertz" class="headerLink">
    <a href="#hertz" class="header-mark"></a>Hertz</h2><p>Hertz(发音 [həːts],赫兹)是字节跳动开源的 Golang 微服务 HTTP 框架，由 <a href="https://github.com/cloudwego" target="_blank" rel="noopener noreferrer">CloudWeGo</a> 社区维护。它最初 fork 自 fasthttp，在设计上参考了 Gin、Echo 等开源框架的优势，并结合字节跳动内部对高性能与可扩展性的诉求进行了重构与演进。其默认网络库使用 CloudWeGo 自研的 <a href="https://github.com/cloudwego/netpoll" target="_blank" rel="noopener noreferrer">Netpoll</a>(基于 epoll),并保留了切换至 Go 标准网络库的能力，具有高易用性、高性能、高扩展性等特点，目前在字节跳动内部已大规模使用。</p>]]></description></item><item><title>Gitbook 简介</title><link>https://rd163.visword.com/posts/gitbook-intro/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/gitbook-intro/</guid><description><![CDATA[<h2 id="图书项目结构" class="headerLink">
    <a href="#%e5%9b%be%e4%b9%a6%e9%a1%b9%e7%9b%ae%e7%bb%93%e6%9e%84" class="header-mark"></a>图书项目结构</h2><p><code>README.md</code> 和 <code>SUMMARY.md</code> 是 Gitbook 项目中最核心的两个文件。其中 <code>README.md</code> 是 Gitbook 官方规定的<strong>必需文件</strong>,<code>SUMMARY.md</code> 虽然是可选的，但几乎是实际项目里不可或缺的&quot;目录骨架&quot;——一本最简单的 Gitbook 至少需要 <code>README.md</code>,而只要章节多于一篇，通常都会配上 <code>SUMMARY.md</code>。它们在一本书中承担不同的作用。</p>]]></description></item><item><title>docker-compose 简介</title><link>https://rd163.visword.com/posts/docker-compose-intro/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/docker-compose-intro/</guid><description><![CDATA[<h2 id="docker-compose-中-volumes-参数说明" class="headerLink">
    <a href="#docker-compose-%e4%b8%ad-volumes-%e5%8f%82%e6%95%b0%e8%af%b4%e6%98%8e" class="header-mark"></a>docker-compose 中 volumes 参数说明</h2><p>docker-compose 通过 <code>volumes</code> 配置数据卷来实现数据持久化。常见有两种写法。</p>
<p><strong>第一种：本地路径直接挂载（bind mount）</strong></p>]]></description></item><item><title>Python HTTP 客户端库</title><link>https://rd163.visword.com/posts/python-http-client-libs/</link><pubDate>Wed, 15 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/python-http-client-libs/</guid><description><![CDATA[<h2 id="urlliburllib2" class="headerLink">
    <a href="#urlliburllib2" class="header-mark"></a>urllib、urllib2</h2><p>Python 2 时代常用的标准库 HTTP 客户端是 <code>urllib</code> 和 <code>urllib2</code>,它们提供了 URL 编码、请求构造、认证、重定向等基础能力，让我们能在不依赖第三方库的情况下完成大多数 HTTP 调用。两者的分工略有差异:<code>urllib</code> 偏向基础 URL 处理,<code>urllib2</code> 则在请求定制（如自定义 header、handler、opener）上更强大。</p>]]></description></item><item><title>Golang 内存泄露定位</title><link>https://rd163.visword.com/posts/golang-mem-leak/</link><pubDate>Sun, 20 Apr 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-mem-leak/</guid><description>&lt;p>Golang 作为自带垃圾回收（Garbage Collection，GC）机制的语言，可以自动管理内存。但在实际开发中，如果代码编写不当，仍然会出现内存泄漏的情况。&lt;/p></description></item><item><title>Kubernetes 优雅停止</title><link>https://rd163.visword.com/posts/k8s-termination-grace/</link><pubDate>Fri, 09 May 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-termination-grace/</guid><description>&lt;p>在 Kubernetes（K8s）中，Pod 的优雅终止是一个有序的过程，旨在确保 Pod 中运行的应用程序能够平滑关闭、释放资源，并尽可能减少因突然关闭带来的数据丢失和服务中断。&lt;/p></description></item><item><title>虚幻引擎 UE 学习路线</title><link>https://rd163.visword.com/posts/ue-learning-roadmap/</link><pubDate>Sun, 07 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/ue-learning-roadmap/</guid><description><![CDATA[<h2 id="一启动项目" class="headerLink">
    <a href="#%e4%b8%80%e5%90%af%e5%8a%a8%e9%a1%b9%e7%9b%ae" class="header-mark"></a>一、启动项目</h2><h3 id="1-roguelike" class="headerLink">
    <a href="#1-roguelike" class="header-mark"></a>1. Roguelike</h3><ul>
<li><a href="https://github.com/vxiaozhi/ActionRoguelike" target="_blank" rel="noopener noreferrer">Action Roguelike C++ Unreal Engine Game</a></li>
</ul>
<p>推荐理由：</p>
<ul>
<li>足够简单而且代码开源；</li>
<li>提供 UE4.x - UE5.x 的支持；</li>
<li>有中英文教程：
<ul>
<li><a href="https://www.cnblogs.com/Qiu-Bai/p/17180550.html" target="_blank" rel="noopener noreferrer">斯坦福课程 UE4 C++ ActionRoguelike 游戏实例教程 0. 绪论</a></li>
</ul>
</li>
</ul>
<h3 id="step" class="headerLink">
    <a href="#step" class="header-mark"></a>Step</h3><div class="code-block highlight is-open show-line-numbers  tw:group tw:my-2">
  <div class="
    
    tw:flex 
    tw:flex-row
    tw:flex-1 
    tw:justify-between 
    tw:w-full tw:bg-bgColor-secondary
    ">      
    <button 
      class="
        code-block-button
        tw:mx-2 
        tw:flex
        tw:flex-row
        tw:flex-1"
      aria-hidden="true">
          <span class="tw:group-[.is-open]:rotate-90 tw:transition-[transform] tw:duration-500 tw:ease-in-out tw:print:hidden! tw:w-min tw:h-min tw:my-1 tw:mx-1"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"/></svg></span>
          <span class="tw:select-none tw:my-1! tw:block">bash</span>
      </button>

   <div class="tw:flex">
      <button 
        class="
          line-number-button
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.show-line-numbers]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle line numbers"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z"/></svg></button>

      <button 
        class="
          wrap-code-button
          tw:select-none 
          tw:mx-2 
          tw:hidden 
          tw:group-[.is-open]:block 
          tw:group-[.is-wrap]:text-fgColor-link 
          tw:print:hidden!" 
        title="Toggle code wrap"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z"/></svg></button>
      
      <button 
        class="
          copy-code-button
          tw:select-none
          tw:mx-2 
          tw:hidden
          tw:group-[.is-open]:block
          tw:hover:text-fgColor-link 
          tw:print:hidden!"
        title="Copy code">
          <span class="copy-icon tw:block"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M433.941 65.941l-51.882-51.882A48 48 0 0 0 348.118 0H176c-26.51 0-48 21.49-48 48v48H48c-26.51 0-48 21.49-48 48v320c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48v-48h80c26.51 0 48-21.49 48-48V99.882a48 48 0 0 0-14.059-33.941zM266 464H54a6 6 0 0 1-6-6V150a6 6 0 0 1 6-6h74v224c0 26.51 21.49 48 48 48h96v42a6 6 0 0 1-6 6zm128-96H182a6 6 0 0 1-6-6V54a6 6 0 0 1 6-6h106v88c0 13.255 10.745 24 24 24h88v202a6 6 0 0 1-6 6zm6-256h-64V48h9.632c1.591 0 3.117.632 4.243 1.757l48.368 48.368a6 6 0 0 1 1.757 4.243V112z"/></svg></span>
          <span class="check-icon tw:hidden"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"/></svg></span>
      </button>
        
      <button 
        class="
          tw:select-none 
          tw:mx-2 
          tw:block 
          tw:group-[.is-open]:hidden 
          tw:print:hidden!" 
        disabled
        aria-hidden="true"><svg class="icon"
    xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) --><path d="M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z"/></svg></button>
    </div>
  </div>
  <pre style="counter-reset: codeblock;" class="tw:block tw:m-0 tw:p-0"><code 
    id="codeblock-id-1" 
    class="
      chroma 
      tw:block! 
      tw:p-0
      tw:m-0
      tw:transition-[max-height] 
      tw:duration-500 
      tw:ease-in-out 
      tw:group-[.is-closed]:max-h-0! 
      tw:group-[.is-wrap]:text-wrap
      tw:overflow-y-hidden
      tw:overflow-x-auto
      tw:scrollbar-thin
      "><span class="line"><span class="cl">git clone git@github.com:vxiaozhi/ActionRoguelike.git
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> ActionRoguelike
</span></span><span class="line"><span class="cl">git checkout UE5.3</span></span></code></pre>
</div>
<blockquote>
  <p>注:该 fork 保留了多个历史分支(<code>UE4.25</code>/<code>4.26</code>/<code>4.27</code>/<code>5.1</code>/<code>5.2</code>/<code>5.3</code>/<code>5.4</code>/<code>5.5</code> 等),可按课程对应的引擎版本 <code>git checkout</code> 切换。如需更新的 UE5.6 示例,可参考上游 <a href="https://github.com/tomlooman/ActionRoguelike" target="_blank" rel="noopener noreferrer">tomlooman/ActionRoguelike</a> 的 <code>UE5.6-CourseProject</code> 分支。</p>]]></description></item><item><title>行为树算法</title><link>https://rd163.visword.com/posts/behavior-tree/</link><pubDate>Sun, 14 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/behavior-tree/</guid><description>&lt;p>行为树（Behavior Tree）是一种用于描述 AI 行为的树状数据结构，通过节点之间的层次关系来组织复杂的行为逻辑。它最初在游戏 AI 领域流行，后被广泛应用于机器人决策系统，逐渐成为替代传统有限状态机（FSM）的通用方案。&lt;/p></description></item><item><title>使用 Rust 创建 Web 应用程序</title><link>https://rd163.visword.com/posts/web-app-with-rust/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/web-app-with-rust/</guid><description><![CDATA[<p>Rust 凭借零成本抽象、强类型系统和出色的 WebAssembly(Wasm)编译目标，正逐步成为前端开发的一个新选项。借助 <code>wasm-bindgen</code> 与 <code>wasm-pack</code> 等工具链，开发者可以将 Rust 代码编译为 Wasm 模块在浏览器中运行，从而在保留类型安全与高性能的同时绕开传统 JavaScript 生态的部分痛点。</p>]]></description></item><item><title>WordPress 安装配置实践</title><link>https://rd163.visword.com/posts/wordpress-setup/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/wordpress-setup/</guid><description>&lt;p>WordPress 的部署方式相当灵活，既可以一条命令在本地起一个测试站，也可以借助云厂商的应用镜像快速搭建生产站点。本文整理三种实际使用过的安装方式，并对比其适用场景。前置的环境要求（PHP 7.4+/8.x、MySQL 5.5+/MariaDB、Apache 或 Nginx）在《为什么选择 WordPress》一文中已有说明，这里不再赘述。&lt;/p></description></item><item><title>Python Web 框架</title><link>https://rd163.visword.com/posts/python-web-framework/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/python-web-framework/</guid><description><![CDATA[<p>Python 生态里有不少成熟的 Web 框架，各自针对不同的场景做了取舍。本文按&quot;大而全 / 微框架 / 高性能异步&quot;三类，记录我在调研与使用过程中沉淀的几款主流框架要点，以及若干实操链接。</p>]]></description></item><item><title>Nginx + PHP-FPM 部署与调优</title><link>https://rd163.visword.com/posts/php-nginx/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/php-nginx/</guid><description><![CDATA[<p>PHP-FPM(FastCGI Process Manager)是 PHP 官方维护的 FastCGI 协议实现，自 <strong>PHP 5.3.3(2010 年 7 月发布)</strong> 起合并进 PHP 核心代码库，在此之前它只是 Andréi Nigmatulin 维护的一个独立补丁。合并后，编译 PHP 时加上 <code>--enable-fpm</code> 即可获得 <code>php-fpm</code> 二进制，SAPI(Server API)名称为 <code>fpm-fcgi</code>。源码位于 PHP 主仓库的 <code>sapi/fpm/</code> 目录，入口文件为 <a href="https://github.com/php/php-src/blob/master/sapi/fpm/fpm/fpm_main.c" target="_blank" rel="noopener noreferrer"><code>sapi/fpm/fpm/fpm_main.c</code></a>。</p>]]></description></item><item><title>Linux 中通过函数名字符串在 C/C++ 里获取并调用函数地址</title><link>https://rd163.visword.com/posts/linux-get-func-addr-by-name/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/linux-get-func-addr-by-name/</guid><description>&lt;p>在写服务端代码时，有时会遇到这样一个需求：手里只有一段字符串形式的函数名（比如从配置文件、RPC 路由表或测试 harness 里读出来）,却要据此拿到函数的内存地址并调用它。这在 C/C++ 这种编译期绑定（static binding）的语言里并不天然——编译器在编译期就把函数调用绑成了固定地址，符号信息默认只在链接阶段使用，运行期通常不可见。&lt;/p></description></item><item><title>Linux 反弹 Shell</title><link>https://rd163.visword.com/posts/linux-reverse-shell/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/linux-reverse-shell/</guid><description><![CDATA[<h2 id="前言" class="headerLink">
    <a href="#%e5%89%8d%e8%a8%80" class="header-mark"></a>前言</h2><p>在渗透测试（Penetration Testing）和攻防演练中，Linux 主机上获取一个可交互的命令行是最常见的诉求之一。当目标机由于防火墙、NAT、动态 IP 等原因无法被直接访问时，常规的「正向连接」就会失效，此时需要用到<strong>反弹 Shell（Reverse Shell，又称反向 Shell）</strong>。</p>]]></description></item><item><title>K8s 服务治理</title><link>https://rd163.visword.com/posts/k8s-service-governance/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-service-governance/</guid><description>&lt;p>微服务架构将单体应用拆分为众多独立部署的服务，服务间的依赖与通信变得极其复杂。如何对这些分布式服务进行&lt;strong>注册发现、流量调度、故障容错、统一配置和可观测&lt;/strong>,就是「服务治理（Service Governance）」要解决的核心问题。在 Kubernetes 已成为事实标准的今天，服务治理方案大致沿着「SDK/胖客户端库」到「Service Mesh 服务网格」两条路线演进。&lt;/p></description></item><item><title>Golang 入门</title><link>https://rd163.visword.com/posts/get-started-with-golang/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/get-started-with-golang/</guid><description><![CDATA[<h2 id="为什么是-go" class="headerLink">
    <a href="#%e4%b8%ba%e4%bb%80%e4%b9%88%e6%98%af-go" class="header-mark"></a>为什么是 Go</h2><p>云风在 2010 年写下的一段话，至今仍是关于 Go (Go language，又称 Golang) 最朴素的注脚:</p>
<blockquote>
  <p>我发现我花了四年时间锤炼自己用 C 语言构建系统的能力，试图找到一个规范，可以更好的编写软件。结果发现只是对 Go 的模仿。缺乏语言层面的支持，只能是一个拙劣的模仿。</p>]]></description></item><item><title>Gitbook 输出为静态网站</title><link>https://rd163.visword.com/posts/gitbook-outfile/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/gitbook-outfile/</guid><description><![CDATA[<p>Gitbook Legacy CLI 的默认输出形态是<strong>静态网站</strong>(一组纯 HTML/CSS/JavaScript 文件)。只要本地的 <code>SUMMARY.md</code>、<code>book.json</code> 与各章节 Markdown 都已就绪，就可以用 CLI 自带的两条命令把它渲染成可以直接放到任意 Web 服务器上的静态站点。本文介绍这两种构建方式:<code>gitbook serve</code>(边预览边生成)与 <code>gitbook build</code>(只构建、不启动服务)。</p>]]></description></item><item><title>GitBook CLI 命令行速览</title><link>https://rd163.visword.com/posts/gitbookcli/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/gitbookcli/</guid><description>&lt;p>GitBook CLI 是 GitBook 官方早期提供的命令行工具，可以把一批 Markdown 文件组织成结构化的电子书或文档站点，支持生成静态网站、PDF、EPUB、MOBI 等多种格式。它在前端文档、API 手册、内部知识库等场景曾经非常流行。&lt;/p></description></item><item><title>Docker容器时间如何与宿主机同步问题解决方案</title><link>https://rd163.visword.com/posts/how-to-fix-docker-timezone/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/how-to-fix-docker-timezone/</guid><description>&lt;p>容器默认时区是 UTC（Coordinated Universal Time，协调世界时），而宿主机在国内一般配置为 &lt;code>Asia/Shanghai&lt;/code>，两者正好相差 8 小时——这是大多数 Java/Python/Go 应用日志时间、定时任务（cron）触发时间、数据库时间戳对不上的根本原因。本文先讲清楚根因，再给出五种常见的同步方案及取舍。&lt;/p></description></item><item><title>Envoy xDS 协议介绍</title><link>https://rd163.visword.com/posts/xds-for-envoy/</link><pubDate>Mon, 24 Mar 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/xds-for-envoy/</guid><description><![CDATA[<p>xDS（Extensible Discovery Service，可扩展发现服务）是 Envoy 代理用来从控制面（Control Plane）获取动态配置的一组 gRPC/REST API 的统称。这里的 &ldquo;x&rdquo; 代表具体的资源类型，例如 Listener、Route、Cluster、Endpoint，分别对应 LDS、RDS、CDS、EDS。借助 xDS，Envoy 能够在不停机、不 reload 的情况下热更新监听器、路由表、上游集群、证书等几乎所有运行期配置，这正是 Istio、Higress 等服务网格与云原生网关实现毫秒级配置生效的底层基础。</p>]]></description></item><item><title>trpc/brpc/grpc 协议设计对比</title><link>https://rd163.visword.com/posts/proto_disign_for_trpc_grpc_brpc/</link><pubDate>Wed, 09 Jul 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/proto_disign_for_trpc_grpc_brpc/</guid><description><![CDATA[<p>在微服务与高性能后端场景中，RPC(Remote Procedure Call，远程过程调用)框架的协议设计直接决定了吞吐、延迟、可观测性和生态兼容性。本文梳理三套具有代表性的 RPC 协议：腾讯开源的 <strong>tRPC</strong>、Apache <strong>bRPC</strong>(baidu_std)以及 Google 主导的 <strong>gRPC</strong>,从协议帧格式、通信模式和传输层三个维度做对比。</p>]]></description></item><item><title>Python asyncio 的事件循环机制</title><link>https://rd163.visword.com/posts/python-asyncio-event-loop/</link><pubDate>Sun, 07 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/python-asyncio-event-loop/</guid><description>&lt;p>在使用 Python 的 asyncio 库实现异步编程时，协程（coroutine）与事件循环（event loop）这两个概念总是形影不离：协程只声明了「怎么挂起、怎么恢复」,而真正驱动这些协程不断推进的「调度器」,就是事件循环。理解事件循环的角色，是写出正确的异步代码、以及做性能选型（比如要不要换 uvloop）的前提。&lt;/p></description></item><item><title>Blender 简介</title><link>https://rd163.visword.com/posts/blender/</link><pubDate>Fri, 10 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/blender/</guid><description><![CDATA[<p>Blender 是一款免费开源（GPL-3.0 协议）的 3D 创作套件（3D creation suite），由 Blender Foundation 维护。它并非单一的建模工具，而是覆盖了整个 3D 制作管线：建模（modeling）、绑骨（rigging）、动画（animation）、模拟（simulation）、渲染（rendering）、合成（compositing）、运动跟踪（motion tracking）以及视频剪辑（video editing）。官方将其定位为&quot;the free and open source 3D creation suite&quot;。</p>]]></description></item><item><title>云原生 API 网关</title><link>https://rd163.visword.com/posts/cloud-native-api-gateway/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/cloud-native-api-gateway/</guid><description><![CDATA[<p>在 Kubernetes 与微服务架构中，API 网关（API Gateway）是南北向流量的统一入口，承担路由、认证、限流、可观测、协议转换等职责。与 Kubernetes 原生的 <code>Ingress</code> 相比，API 网关通常提供更丰富的流量治理能力;而随着 <a href="https://gateway-api.sigs.k8s.io/" target="_blank" rel="noopener noreferrer">Gateway API</a> 成为 Ingress 的继任者，网关也越来越多地以 <code>GatewayClass</code> 实现的身份接入集群。</p>]]></description></item><item><title>内存优化综述</title><link>https://rd163.visword.com/posts/mem-opt-overview/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/mem-opt-overview/</guid><description>&lt;p>任何一个复杂系统的内存分配与释放策略，其最优解几乎都不是依赖某一种「通用」的分配器，而是&lt;strong>按照对象的特性进行分类管理&lt;/strong>:把不同生命期、不同大小、不同访问模式的对象，交给与之匹配的专用机制来处理。这种「分而治之」的思路贯穿了从内核到应用层的所有高性能内存子系统。&lt;/p></description></item><item><title>Zig 语言简介</title><link>https://rd163.visword.com/posts/zig-lang-intro/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/zig-lang-intro/</guid><description><![CDATA[<p><a href="https://ziglang.org/" target="_blank" rel="noopener noreferrer">Zig</a> 是一门通用的编程语言和配套工具链，官方用三个词概括其设计目标：<strong>robust（健壮）、optimal（最优）、reusable（可重用）</strong>。它由 Andrew Kelley 主导设计，第一份公开提交可以追溯到 2015 年，目前由 2020 年成立的非营利组织 Zig Software Foundation（ZSF）维护。截至本文更新时，最新稳定版本为 0.16.0（仍处于 1.0 之前的快速迭代期，API 尚未冻结）。</p>]]></description></item><item><title>Open Graph Protocol（开放图谱协议）</title><link>https://rd163.visword.com/posts/open-graph-protocol/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/open-graph-protocol/</guid><description><![CDATA[<h2 id="简介" class="headerLink">
    <a href="#%e7%ae%80%e4%bb%8b" class="header-mark"></a>简介</h2><p>Open Graph Protocol（开放图谱协议），简称 <strong>OG 协议</strong>，是一种网页元信息（Meta Information）标记协议，属于 Meta Tag（Meta 标签）范畴。它最早由 Facebook 在 2010 年的 F8 开发者大会上公布，目标是<strong>为社交分享而生</strong>：通过一组 <code>&lt;meta&gt;</code> 标签标准化网页的元数据使用，让社交媒体平台能够以丰富的&quot;图形对象（Graph Object）&ldquo;形式来表示被分享的页面内容，使其他网站的内容也能像平台原生内容一样被呈现，进而促进站点与社交平台之间的集成。</p>]]></description></item><item><title>Linux cron 定时任务</title><link>https://rd163.visword.com/posts/crontab/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/crontab/</guid><description><![CDATA[<p><code>cron</code> 是类 Unix 系统中基于时间的任务调度器，守护进程 <code>crond</code>(在 Debian/Ubuntu 上叫 <code>cron</code>)每分钟扫描一次 crontab 表，匹配到当前时间就触发对应命令。它的用途非常广泛：定期备份、日志轮转、证书续期、数据同步、健康检查……几乎所有&quot;每隔一段时间就要跑一遍&quot;的需求都可以交给它。这篇文章梳理 crontab 的表达式语法、常用命令、系统级目录约定，以及生产环境里最容易踩到的坑。</p>]]></description></item><item><title>K8s 演示文稿及学习资源汇总</title><link>https://rd163.visword.com/posts/k8s-presentations/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-presentations/</guid><description>&lt;p>本文整理 Kubernetes(简称 K8s)学习路径上值得收藏的演示文稿、视频分享、官方文档与社区资源。内容面向不同阶段的学习者：从概念入门、网络模型深挖，到生产实践与认证考试，均可在此找到对应素材。文中链接以官方渠道与社区一手资料为主，尽量规避失效或转载失真的内容。&lt;/p></description></item><item><title>K8s 网络插件 Cilium</title><link>https://rd163.visword.com/posts/k8s-cni-cilium/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-cni-cilium/</guid><description><![CDATA[<h2 id="简介" class="headerLink">
    <a href="#%e7%ae%80%e4%bb%8b" class="header-mark"></a>简介</h2><p>Cilium 是一个基于 eBPF 和 XDP 的高性能容器网络方案，代码开源在 <a href="https://github.com/cilium/cilium" target="_blank" rel="noopener noreferrer">github.com/cilium/cilium</a>，目前已从 CNCF 毕业，是云原生网络领域事实上的标准之一。它通过在 Linux 内核中动态插入 eBPF 字节码，把网络转发、安全策略、负载均衡和可观测性逻辑下沉到内核态执行，无需修改应用代码或容器配置。</p>]]></description></item><item><title>K8s Ingress 介绍</title><link>https://rd163.visword.com/posts/k8s-ingress-intro/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-ingress-intro/</guid><description><![CDATA[<p>在 Kubernetes 中，把集群内服务暴露给外部访问有多种方式:<code>ClusterIP</code> 仅集群内可达,<code>NodePort</code> 在每个节点上开一个端口,<code>LoadBalancer</code> 借助云厂商的负载均衡器把流量引入。这些方式都属于四层（L4）入口，但当流量是 HTTP/HTTPS 时，我们往往希望按域名（Host）和 URL 路径（Path）做更精细的路由、统一做 TLS 终止、复用一个公网 IP 对外。<code>Ingress</code> 就是为此而生的七层（L7）资源对象。</p>]]></description></item><item><title>Google 统计接入</title><link>https://rd163.visword.com/posts/google-analytics/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/google-analytics/</guid><description>&lt;p>Google Analytics(谷歌分析，以下简称 GA)是 Google 提供的免费网站流量分析服务，可以统计访问量、来源、用户行为等指标。当前线上版本为 Google Analytics 4(GA4),它采用基于事件（event-based）的数据模型，取代了旧的基于会话（session-based）的 Universal Analytics(UA)。Google 已于 &lt;strong>2023 年 7 月 1 日&lt;/strong>停止处理标准 Universal Analytics 属性的数据（360 属性的截止日期为 2024 年 7 月 1 日）,新接入的网站应直接使用 GA4。&lt;/p></description></item><item><title>Golang 模板</title><link>https://rd163.visword.com/posts/golang-template/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-template/</guid><description><![CDATA[<p>模板引擎是 Web 开发里把数据渲染成文本（尤其是 HTML）的基础设施。Go 在标准库里直接提供了 <a href="https://pkg.go.dev/text/template" target="_blank" rel="noopener noreferrer"><code>text/template</code></a> 与 <a href="https://pkg.go.dev/html/template" target="_blank" rel="noopener noreferrer"><code>html/template</code></a> 两个包，接口一致但安全模型不同;生态中还有 <a href="https://github.com/flosch/pongo2" target="_blank" rel="noopener noreferrer"><code>pongo2</code></a>、<a href="https://github.com/valyala/quicktemplate" target="_blank" rel="noopener noreferrer"><code>quicktemplate</code></a> 等第三方方案。本文记录 Go 模板的标准库用法、最容易踩坑的「自动转义」机制，以及选型时的性能参考。</p>]]></description></item><item><title>Golang 程序加载配置最佳实践</title><link>https://rd163.visword.com/posts/best-practice-for-go-conf/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/best-practice-for-go-conf/</guid><description><![CDATA[<p>程序的配置（key、连接串、端口、特性开关等）往往会随部署环境（dev / staging / prod）变化，而代码本身不变。这正是 <a href="https://12factor.net/config" target="_blank" rel="noopener noreferrer">Twelve-Factor App</a> 中「配置（Config）」一章的核心观点:<strong>配置应与代码严格分离</strong>,且推荐将环境相关的配置放进环境变量（env vars）,因为它们易于在不同部署间切换、不易被误提交进版本库，并且与语言和操作系统无关。</p>]]></description></item><item><title>Golang 常用的工具与功能库</title><link>https://rd163.visword.com/posts/golang-util-libs/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-util-libs/</guid><description>&lt;p>Go 标准库覆盖面相当广，但工程实践中仍有许多「写起来啰嗦、但又避不开」的常见需求：类型之间的安全转换、切片去重、字符串处理、优雅重启、后台任务编排、网络报文解析等。本文梳理几款在 Go 项目里出现频率较高的工具与功能库，介绍其定位、核心特性和维护状态，便于选型时参考。所有库均在 GitHub 上开源，文末附官方链接。&lt;/p></description></item><item><title>DeepSeek 前端方案</title><link>https://rd163.visword.com/posts/deepseek-frontend/</link><pubDate>Sat, 08 Feb 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/deepseek-frontend/</guid><description><![CDATA[<p>DeepSeek 的 API（API base URL 为 <code>https://api.deepseek.com</code>）兼容 OpenAI 接口规范，模型 <code>deepseek-chat</code>、<code>deepseek-coder</code> 均支持 Function Calling、JSON Output 与 FIM（Fill in the Middle）补全，这意味着凡能接入 OpenAI 的前端项目，理论上都能&quot;换 Base URL + 换 API Key&quot;直接接入 DeepSeek。官方维护的 <a href="https://github.com/deepseek-ai/awesome-deepseek-integration" target="_blank" rel="noopener noreferrer">awesome-deepseek-integration</a> 仓库按 Applications、Agent Frameworks、RAG Frameworks、IM Bots、IDE Extensions 等维度汇总了数百个可接入项目，是选型的第一入口。</p>]]></description></item><item><title>内网穿透工具</title><link>https://rd163.visword.com/posts/local-server-expose-to-internet/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/local-server-expose-to-internet/</guid><description>&lt;p>内网穿透（Intranet Penetration / NAT Traversal）用于把位于 NAT 或防火墙后面的本地服务（local server）暴露到公网，常用于在家自托管服务、临时 Webhook 调试、远程访问内网开发环境等场景。在没有公网 IP 的情况下，需要借助一台具有公网 IP 的中转节点反向代理流量。&lt;/p></description></item><item><title>代码风格最佳实践</title><link>https://rd163.visword.com/posts/best-practice-for-code-style/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/best-practice-for-code-style/</guid><description><![CDATA[<p>代码风格（code style）不是格式化工具跑出来的最终样式，而是一套贯穿命名、接口、注释、文件组织与错误处理的工程习惯。好的代码风格让代码&quot;为读者而写&quot;(optimize for the reader),在团队成员流动、代码规模膨胀时仍可维护。最有效的学习方式之一，是去读那些被工业界长期验证、口碑极佳的开源项目源码——本文先罗列一批值得精读的项目，再从它们身上归纳几条可复用的实践。</p>]]></description></item><item><title>蔡勒公式(Zeller's Congruence)</title><link>https://rd163.visword.com/posts/zellers-congruence/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/zellers-congruence/</guid><description><![CDATA[<p>短视频里刷到漫画家蔡志忠说他能根据任意日期迅速说出是星期几，好奇心被勾了起来，顺手查了一下。这类&quot;心算星期&quot;背后的通用方法，就是本文要介绍的<strong>蔡勒公式（Zeller&rsquo;s congruence）</strong>——给定一个日期，代入一行同余式即可算出它是星期几。</p>]]></description></item><item><title>北极星（Polaris）</title><link>https://rd163.visword.com/posts/tencent-polaris/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/tencent-polaris/</guid><description>&lt;p>在微服务与分布式架构里，服务实例动态扩缩容、跨语言调用、跨环境互通是常态，随之而来的服务注册发现、流量控制、故障容错、配置下发等问题都需要一个统一的治理面来承载。北极星（Polaris，项目代号 PolarisMesh）正是腾讯针对这一诉求开源的服务发现与治理平台，在腾讯内部已经支撑了百万级服务注册和十万亿级日接口调用，通用性与稳定性经过大规模验证。&lt;/p></description></item><item><title>tproxy（透明代理）</title><link>https://rd163.visword.com/posts/tproxy/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/tproxy/</guid><description><![CDATA[<h2 id="什么是透明代理" class="headerLink">
    <a href="#%e4%bb%80%e4%b9%88%e6%98%af%e9%80%8f%e6%98%8e%e4%bb%a3%e7%90%86" class="header-mark"></a>什么是透明代理</h2><p><a href="https://www.kernel.org/doc/html/latest/networking/tproxy.html" target="_blank" rel="noopener noreferrer">tproxy</a> 即 transparent（透明）proxy。这里的 transparent 有两层含义：</p>
<ul>
<li><strong>对 client（客户端）透明</strong>：客户端无需任何额外配置，既不必修改请求地址，也不必采用代理协议与代理服务器协商。相比之下，socks 或 http 代理都需要在客户端显式设置代理地址，并在发起请求时通过代理协议告知代理服务器真实的目标地址。</li>
<li><strong>对 server（服务端）透明</strong>：服务端看到的是 client 端的地址，而非 proxy 的地址，仿佛请求从未经过中转。</li>
</ul>
<p>换句话说，在一条透明的链路里，两端都不知道代理的存在。这与传统代理协议（如 HTTP CONNECT、SOCKS5）形成鲜明对比，后者要求应用感知代理并主动与之交互。</p>]]></description></item><item><title>Kmesh：基于 eBPF 的内核原生服务网格数据平面</title><link>https://rd163.visword.com/posts/k8s-service-mesh-kmesh/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-service-mesh-kmesh/</guid><description><![CDATA[<h2 id="背景" class="headerLink">
    <a href="#%e8%83%8c%e6%99%af" class="header-mark"></a>背景</h2><p>像 Istio 这样的服务网格（Service Mesh）已经成为管理复杂微服务架构的核心手段，提供流量管理、安全（mTLS）和可观测性等能力。Sidecar 模型——在每个业务 Pod 旁注入一个 Envoy 代理——是过去几年最主流的数据平面实现。它功能完备、对应用透明，但在性能与资源开销上代价不菲。</p>]]></description></item><item><title>K8s 多集群</title><link>https://rd163.visword.com/posts/k8s-multi-cluster/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-multi-cluster/</guid><description><![CDATA[<h2 id="1-为什么需要-k8s-多集群" class="headerLink">
    <a href="#1-%e4%b8%ba%e4%bb%80%e4%b9%88%e9%9c%80%e8%a6%81-k8s-%e5%a4%9a%e9%9b%86%e7%be%a4" class="header-mark"></a>1. 为什么需要 K8s 多集群</h2><p>在讨论方案之前，先厘清概念。所谓 K8s 多集群（Multi-Cluster）,顾名思义就是多个 Kubernetes 集群协同工作。企业或组织可能根据自身需求，出于隔离性、可用性、合规性或使用成本等考虑，将应用运行在一个或多个集群中。在更成熟的形态下，应用实际运行的集群能够动态调度，不同集群间的应用也应支持相互访问。</p>]]></description></item><item><title>GitBook 使用入门</title><link>https://rd163.visword.com/posts/gitbook-get-started/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/gitbook-get-started/</guid><description><![CDATA[<blockquote>
  <p>GitBook 是一个基于 Node.js 的命令行工具（Command Line Interface, CLI）,可使用 Git/GitHub 和 Markdown 来制作精美的电子书与技术文档。</p>

</blockquote><p>本文是 GitBook 系列的开篇，面向第一次接触 GitBook 的读者，介绍它的定位、安装方式、目录结构和最常用的命令，帮助你从零搭出一本能在线阅读的电子书。后续章节会分别讲解<a href="../gitbook-intro" rel="">项目结构</a>、<a href="../gitbookcli" rel="">命令行速览</a>与<a href="../gitbook-output" rel="">输出格式</a>。</p>]]></description></item><item><title>Gitbook 基本安装</title><link>https://rd163.visword.com/posts/gitbook-how-to-use/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/gitbook-how-to-use/</guid><description>&lt;p>本文介绍 Gitbook 旧版命令行工具（Legacy CLI）的安装前置条件、安装步骤与版本校验方法，并补充当前在新版 Node.js 环境下的兼容性注意事项。Gitbook 的安装本质上是「准备 Node.js 运行时 → 通过 npm 安装 CLI → 校验版本」三步。&lt;/p></description></item><item><title>django-cms</title><link>https://rd163.visword.com/posts/django-cms-intro/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/django-cms-intro/</guid><description>&lt;p>由 Django 编写的企业级 CMS(Content Management System，内容管理系统),它功能实用、安全可靠，支持拖拽上传图片、轮播图、Docker 部署等功能，可轻松进行二次开发，多用于构建企业官网，比如：国家地理（National Geographic）、NASA、L&amp;rsquo;Oréal、Canonical、PBS 等机构的网站都基于它开发而成。本文整理其背景、核心概念与本地启动方式，方便快速评估是否适合自己的项目。&lt;/p></description></item><item><title>使用 webp-tools 实现 WebP 与 PNG、JPG 的格式转换</title><link>https://rd163.visword.com/posts/webp-format-conversion/</link><pubDate>Fri, 24 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/webp-format-conversion/</guid><description><![CDATA[<p>WebP 是 Google 开发的一种现代图像格式（image format），针对 Web 场景做了专门优化。它同时支持<strong>有损压缩（lossy compression）<strong>和</strong>无损压缩（lossless compression）</strong>，并允许携带透明通道（alpha channel）。根据官方资料，无损 WebP 在同等质量下通常比 PNG 小约 <strong>26%</strong>，有损 WebP 在等价 SSIM（结构相似度）质量下比 JPEG 小 <strong>25%–34%</strong>；对于带透明通道的 RGB 图像，WebP 文件相比 PNG 可小到约三分之一。</p>]]></description></item><item><title>基于 boost.asio 的 WebSocket 类库:WebSocket++ 实践要点</title><link>https://rd163.visword.com/posts/cpp-websocket-base-on-boost-asio/</link><pubDate>Thu, 05 Jun 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/cpp-websocket-base-on-boost-asio/</guid><description><![CDATA[<p>在 C++ 项目中接入 WebSocket(RFC 6455)时，如果团队已经在使用 Boost，那么基于 <code>boost::asio</code> 的类库是阻力最小的选择。本文记录笔者在实际项目中使用 <a href="https://github.com/zaphoyd/websocketpp" target="_blank" rel="noopener noreferrer">WebSocket++</a>(仓库命名 <code>websocketpp</code>)的一些关键特性与踩坑点，重点关注协程环境下的线程模型，以及多连接场景下的正确用法。</p>]]></description></item><item><title>Pug：高性能 JavaScript 模板引擎入门</title><link>https://rd163.visword.com/posts/js-template-engine-pug/</link><pubDate>Wed, 11 Jun 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/js-template-engine-pug/</guid><description>&lt;p>Pug 是一款用 JavaScript 实现的高性能模板引擎（template engine），同时支持 Node.js 与浏览器环境，语法深受 Haml 启发。它通过缩进（indentation）而非闭合标签来组织 HTML 结构，让模板代码更简洁、更具可读性。官方仓库 &lt;a href="https://github.com/pugjs/pug" target="_blank" rel="noopener noreferrer">pugjs/pug&lt;/a> 的描述是「robust, elegant, feature rich template engine for Node.js」，目前最新稳定版本为 3.0.x，采用 MIT 协议开源。&lt;/p></description></item><item><title>斯坦福小镇 AI:Generative Agents 论文解读</title><link>https://rd163.visword.com/posts/generative-agents/</link><pubDate>Wed, 27 Aug 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/generative-agents/</guid><description><![CDATA[<p>2023 年 4 月，斯坦福大学与谷歌研究院的研究人员在 arXiv 上发布了论文《Generative Agents: Interactive Simulacra of Human Behavior》(arXiv:2304.03442),后续被 ACM UIST 2023 收录。他们在《模拟人生》(The Sims)风格的沙盒小镇 Smallville 中放入 25 个由大语言模型（LLM）驱动的虚拟居民，每个居民拥有独立的性格、日程与社交关系，可以自主移动、对话、记忆和决策。这项工作把 LLM 从&quot;回答问题的工具&quot;推到了&quot;模拟可信人类行为的代理&quot;这一新范式，成为后续 Agent 浪潮（如 AutoGPT、MetaGPT、AI Town 等）的重要参照。</p>]]></description></item><item><title>用 Rust 实现的应用有哪些？</title><link>https://rd163.visword.com/posts/rust-apps/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/rust-apps/</guid><description>&lt;p>Rust 是一门强调**内存安全（memory safety）&lt;strong>与&lt;/strong>零成本抽象（zero-cost abstractions）**的系统级编程语言，同时具备 C/C++ 量级的运行性能与现代语言的人体工程学。正因为它既快又安全，越来越多追求性能、对延迟敏感或者需要在底层直接控制系统资源的工具，开始把 Rust 作为首选语言。本文按使用场景，盘点一批在生产环境中真实存在、且较有代表性的 Rust 实现的开源应用，方便选型与学习参考。&lt;/p></description></item><item><title>前端低代码平台</title><link>https://rd163.visword.com/posts/ui-low-code/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/ui-low-code/</guid><description><![CDATA[<p>低代码（Low-Code）并不是要把前端工程师替代掉，而是把&quot;重复且价值低的部分&quot;用配置化的方式沉淀下来——表单、CRUD 页面、后台管理界面、数据看板，这些场景长期占用大量人力却创新度有限。本文按&quot;纯前端低代码 / 微前端 / 前后端一体&quot;三类，梳理几个值得纳入技术选型的开源项目。</p>]]></description></item><item><title>机器狗技术</title><link>https://rd163.visword.com/posts/robot-dog-tech/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/robot-dog-tech/</guid><description>&lt;p>机器狗（Quadruped Robot，四足机器人）是过去十年进展最显著的机器人形态之一。从实验室里能完成后空翻的 MIT Mini Cheetah，到能在工地、变电站、巡检现场落地的商用产品，这条技术路线的核心驱动力之一是&lt;strong>开源&lt;/strong>。本文梳理机器狗技术栈的两个根基——MIT Mini Cheetah 软件项目和机器人操作系统（ROS）,以及国内主要厂商的开源资源，方便快速建立一张「技术地图」。&lt;/p></description></item><item><title>函数调用关系绘制</title><link>https://rd163.visword.com/posts/function-call-drawing/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/function-call-drawing/</guid><description><![CDATA[<h2 id="简介" class="headerLink">
    <a href="#%e7%ae%80%e4%bb%8b" class="header-mark"></a>简介</h2><p><a href="https://www.gnu.org/software/cflow/" target="_blank" rel="noopener noreferrer">cflow</a> 是 GNU 项目维护的一款 C 语言静态分析（static analysis）工具，能够扫描源码并生成函数之间的调用关系图（call graph）。它不需要运行程序，仅依赖源代码本身，因此非常适合用于梳理陌生代码库、排查遗留项目或为代码写文档。</p>]]></description></item><item><title>x86 汇编语言</title><link>https://rd163.visword.com/posts/x86-asm/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/x86-asm/</guid><description>&lt;p>x86 汇编是贴近硬件底层的编程接口，在性能调优、漏洞分析、逆向工程（reverse engineering）、shellcode 编写和操作系统内核开发中经常用到。本文整理日常工作中最常用的速查内容：机器码与助记符的对应、指令编码规则，以及反汇编工具的常见用法。&lt;/p></description></item><item><title>Python 的 dataclass</title><link>https://rd163.visword.com/posts/python-dataclass/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/python-dataclass/</guid><description><![CDATA[<p><code>dataclasses</code> 是 Python 3.7 起进入标准库的一个模块，由 <a href="https://peps.python.org/pep-0557/" target="_blank" rel="noopener noreferrer">PEP 557</a> 引入，作者是 Eric V. Smith。它的核心目标是：为「主要用来存储数据的类」自动生成 <code>__init__</code>、<code>__repr__</code>、<code>__eq__</code> 等样板方法（boilerplate）,让开发者把精力放在字段定义上而不是重复的 <code>def __init__(self, ...)</code>。</p>]]></description></item><item><title>PHP + Nginx 部署模式总览</title><link>https://rd163.visword.com/posts/php-nginx-deploy/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/php-nginx-deploy/</guid><description>&lt;p>在生产环境部署 PHP 应用时，Nginx 与 PHP-FPM(FastCGI Process Manager)的组合是最主流的方案。PHP-FPM 自 PHP 5.3.3 起就已经合并进 PHP 核心代码库(源码位于 &lt;code>sapi/fpm/&lt;/code>),通过 FastCGI 协议与 Web 服务器通信，负责管理 worker 进程池来执行 PHP 脚本。&lt;/p></description></item><item><title>HTTP 相关的 C 库：libmicrohttpd 与 libcurl</title><link>https://rd163.visword.com/posts/http-libs/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/http-libs/</guid><description><![CDATA[<p>在 C/C++ 项目里，如果只想做最简单的 HTTP 收发，往往不必引入一整套 Web 框架。根据角色不同，常用的有两类基础库：</p>
<ul>
<li><strong>服务端库（HTTP server）</strong>：把 HTTP 协议层封装好，让应用嵌入一个监听端口、处理请求的逻辑，典型代表是 GNU 的 <strong>libmicrohttpd</strong>。</li>
<li><strong>客户端库（HTTP client）</strong>：负责发起请求、处理重定向、TLS、Cookie 等，事实标准是 <strong>libcurl</strong>。</li>
</ul>
<p>下面分别记录这两组库的要点，作为日后选型与查阅的索引。</p>]]></description></item><item><title>fzf 使用笔记</title><link>https://rd163.visword.com/posts/fzf/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/fzf/</guid><description><![CDATA[<p><a href="https://github.com/junegunn/fzf" target="_blank" rel="noopener noreferrer">fzf</a> 是一款用 Go 语言编写的通用命令行模糊查找器（fuzzy finder）,以单一二进制分发、速度极快，官方称可在毫秒级处理上百万条目。它的本质是一个交互式过滤器——任何以换行分隔的列表(文件、进程、命令历史、Git 分支、<code>/etc/hosts</code> 中的主机名等)都能丢给它，再用模糊匹配快速缩小范围，最后把选中项输出到 STDOUT。</p>]]></description></item><item><title>DeepSeek 联网搜索方案</title><link>https://rd163.visword.com/posts/deepseek-web-search-api/</link><pubDate>Sat, 08 Feb 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/deepseek-web-search-api/</guid><description><![CDATA[<p>DeepSeek 的训练语料存在截止时间，模型本身并不知道&quot;今天发生了什么&quot;。要让它回答股价、新闻、最新文档这类实时问题，必须额外接一条通往互联网的通道。常见的做法不是去训练一个新模型，而是通过 <strong>Function Calling(函数调用)</strong> 让模型在需要时主动触发一次外部搜索，再把结果作为上下文喂回去，这本质上是一种轻量级的 RAG(Retrieval-Augmented Generation，检索增强生成)。</p>]]></description></item><item><title>WebDAV 自建方案选型与实践</title><link>https://rd163.visword.com/posts/webdav-deploy/</link><pubDate>Fri, 28 Feb 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/webdav-deploy/</guid><description><![CDATA[<p>WebDAV(Web Distributed Authoring and Versioning,RFC 4918)是在 HTTP 之上扩展的一组方法(如 <code>PUT</code>、<code>PROPFIND</code>、<code>MKCOL</code>、<code>COPY</code>、<code>MOVE</code>),使得 Web 服务器可以当作可读写的网盘来用。相比 SFTP 或 NFS，它的优势在于走标准 HTTP(S) 端口、穿透代理和防火墙更友好，并且被几乎所有的笔记软件（如 Obsidian 的 Remotely Save 插件）、文件管理器（Windows 资源管理器、macOS Finder、Linux Nautilus/Dolphin）原生支持。</p>]]></description></item><item><title>实时语音转文字</title><link>https://rd163.visword.com/posts/realtime_audio_to_text/</link><pubDate>Sat, 23 Aug 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/realtime_audio_to_text/</guid><description>&lt;p>实时语音转文字（Real-time Automatic Speech Recognition，简称实时 ASR）是会议纪要、字幕生成、语音助手等场景的基础能力。与「先录音再转写」的离线模式不同，实时方案需要在用户说话的同时，把浏览器或终端采集到的音频流低延迟地送到识别引擎，并把识别结果以流式方式回传给前端。本文先梳理一条端到端链路涉及的核心组件，再介绍开源项目 IntraScribe 的实现思路，以及 fastrtc、FunASR 等关键框架的定位与用法。&lt;/p></description></item><item><title>游戏剧情交互开发工具</title><link>https://rd163.visword.com/posts/storyline-interactive-tools/</link><pubDate>Mon, 08 Sep 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/storyline-interactive-tools/</guid><description><![CDATA[<p>剧情与对话系统（Discourse System / Dialogue System）是叙事驱动型游戏的骨架。它既要让策划与写手用接近剧本的语法快速产出分支内容，也要让程序能在 Unity、Godot、Unreal 等引擎里挂接事件、动画与本地化管线。本文按&quot;脚本语言 + 运行时 + 工具链&quot;三个层次梳理几款主流的开源工具，重点放在最早出现在原文中的 Yarn Spinner 生态，并补充 Ink 与 Ren&rsquo;Py 作为对照。</p>]]></description></item><item><title>Docker Desktop 开源替代方案</title><link>https://rd163.visword.com/posts/open-source-alternatives-for-docker-desktop/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/open-source-alternatives-for-docker-desktop/</guid><description>&lt;p>Docker Desktop 一直是 macOS 和 Windows 上最便利的容器开发环境，但自 2021 年 8 月 31 日 Docker 调整订阅条款后，员工数 ≥ 250 人&lt;strong>或&lt;/strong>年营收 ≥ 1000 万美元的企业必须购买付费订阅才能合规使用。Docker Engine 本身仍是 Apache 2.0 开源，但 Docker Desktop 这一桌面发行版不再免费。这一变化促使社区涌现出一批高质量的开源替代方案。&lt;/p></description></item><item><title>为什么选择 WordPress</title><link>https://rd163.visword.com/posts/why-use-wordpress/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/why-use-wordpress/</guid><description>&lt;p>WordPress 是一款用 PHP 开发的开源内容管理系统（Content Management System，CMS），最初于 2003 年由 Matt Mullenweg 和 Mike Little 发布，主要用于搭建博客、企业官网、内容门户乃至小型电商站。它以 GPLv2（or later）协议开源，至今仍是全球使用最广泛的 CMS。&lt;/p></description></item><item><title>计算器</title><link>https://rd163.visword.com/posts/calculator/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/calculator/</guid><description>&lt;p>计算器（calculator）几乎是每台操作系统都会预装的工具。看似简单，背后却涉及一套成熟的表达式求值算法，而具体形态又从命令行、桌面到 Web 各有取舍。日常开发中，能熟练用一行命令算清一个表达式、做一次单位换算或进制转换，往往比反复切到鼠标点击 GUI 更高效。本文先聊一聊命令行里最常驻的 &lt;code>bc&lt;/code>，再扩展到全平台的开源桌面/Web 计算器，以及支撑它们的表达式求值原理。&lt;/p></description></item><item><title>集成前端 UI 与 API Server 的最佳实践</title><link>https://rd163.visword.com/posts/integrate-frontend-and-api/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/integrate-frontend-and-api/</guid><description>&lt;p>前端 UI 与 API Server 如何「拼到一起」是每个全栈项目迟早要回答的问题。即便前后端在开发期完全独立，真正上线时也要决定：浏览器从哪里取静态资源、跨域请求如何收敛、单域还是子域、静态文件由谁托管。本文按「集成形态」为主线，梳理几种主流方案及其背后的取舍，并附上开源项目作为参考实现。&lt;/p></description></item><item><title>vLLM</title><link>https://rd163.visword.com/posts/vllm/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/vllm/</guid><description><![CDATA[<p>vLLM 是一个高吞吐、低显存占用的库，用于大语言模型（LLM）的推理（inference）与服务（serving），由加州大学伯克利分校 Sky Computing Lab 开源，与 HuggingFace 生态无缝集成。它最初作为 <a href="https://arxiv.org/abs/2309.06180" target="_blank" rel="noopener noreferrer">SOSP 2023 论文</a> <em>Efficient Memory Management for Large Language Model Serving with PagedAttention</em> 的配套工程实现发布，目前是社区中最主流的 GPU 推理框架之一。</p>]]></description></item><item><title>K8s 中的开放接口</title><link>https://rd163.visword.com/posts/k8s-open-interfaces/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-open-interfaces/</guid><description><![CDATA[<p>Kubernetes 作为云原生应用的基础调度平台，常被类比为&quot;云原生的操作系统&quot;。和传统操作系统通过驱动屏蔽硬件差异类似，Kubernetes 通过一组<strong>开放接口（Open Interfaces）</strong> 把计算、网络、存储这三类最基础的资源抽象出来，让上游可以对接不同的后端实现，而无需修改 Kubernetes 核心代码。这种可插拔（pluggable）的设计，是 Kubernetes 能够支撑极其多样化的基础设施的关键。</p>]]></description></item><item><title>K8s 网关介绍</title><link>https://rd163.visword.com/posts/k8s-gateway-intro/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-gateway-intro/</guid><description><![CDATA[<p>在 Kubernetes 中，把集群内服务暴露给外部用户访问，最早也最广泛使用的 API 是 Ingress。Ingress 解决了&quot;以域名和路径将外部 HTTP/HTTPS 流量路由到集群内 Service&quot;这一基本问题，但在长期实践中暴露出一些结构性短板：它只覆盖 HTTP/HTTPS，扩展能力几乎完全依赖各 Ingress Controller 自定义的 annotation，无法表达流量权重、请求头匹配、跨命名空间挂载等需求，也难以对应现实中&quot;基础设施、集群运维、应用开发&quot;三种角色的职责划分。</p>]]></description></item><item><title>K8s 本地安装</title><link>https://rd163.visword.com/posts/k8s-install-locally/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-install-locally/</guid><description>&lt;p>在学习和开发 Kubernetes(K8s)应用时，先在本地计算机上搭建一个集群用于验证，通常是最高效的方式。Kubernetes 官方文档专门将这类场景归为「学习环境（Learning Environment）」,与「生产环境（Production Environment）」相对。本文聚焦「安装」这一动作，给出四种主流本地安装方案的速查命令与关键点。&lt;/p></description></item><item><title>JSON 转 Go 结构体的几种方案</title><link>https://rd163.visword.com/posts/golang-json-to-struct/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-json-to-struct/</guid><description><![CDATA[<p>在对接 RESTful API 或解析配置文件时，把一段 JSON 示例手工逐字段翻译成 Go 的 <code>struct</code> 是一件繁琐且容易出错的事。好在社区已经提供了不少自动化方案，从浏览器里的在线工具，到本地命令行，再到 IDE 内建的转换功能，基本可以覆盖大多数场景。本文梳理几种常用方案，并补充 <code>encoding/json</code> 的 struct tag 关键用法，帮助你在不同情境下做出选择。</p>]]></description></item><item><title>JSON 可视化编辑工具盘点</title><link>https://rd163.visword.com/posts/json-visual-edit/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/json-visual-edit/</guid><description>&lt;p>JSON（JavaScript Object Notation）几乎是今天所有 Web API 和配置文件的默认载体。但当数据嵌套层级变深、字段数量变多，纯文本的 JSON 就开始「反人类」:括号配错一个、逗号漏掉一个、键名拼错一个，都需要肉眼在海量文本里排查。可视化编辑（visual editing）的核心思路，是把这棵抽象的语法树（AST）还原成可点选、可折叠、可校验的图形界面，让人而不是正则去理解结构。&lt;/p></description></item><item><title>Golang 服务相关的库</title><link>https://rd163.visword.com/posts/golang-service-libs/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-service-libs/</guid><description><![CDATA[<p>在构建后端服务时，Go 生态提供了从轻量 Web 框架到完整微服务框架的多层选择。相比单纯的路由库(如 <code>chi</code>、<code>gorilla/mux</code>)或高性能 HTTP 库(如 <code>fasthttp</code>),「服务级」框架通常还承担了 RPC 通信、服务治理、代码生成、配置管理等工程化职责。本文集中梳理几款在生产环境广泛使用的 Go 服务端框架与工具，便于在选型时横向对照。</p>]]></description></item><item><title>Go 语言 Web 框架：Macaron</title><link>https://rd163.visword.com/posts/golang-macaron/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-macaron/</guid><description><![CDATA[<p><a href="https://github.com/go-macaron/macaron" target="_blank" rel="noopener noreferrer">Macaron</a> 是一个用 Go 语言编写的高效、模块化 Web 框架，官方仓库自我定位为「a high productive and modular web framework in Go」。它与 Gin、Beego、Echo 等同属 Go 生态中较早期出现的一批 Web 框架，设计思路继承自 <a href="https://github.com/go-martini/martini" target="_blank" rel="noopener noreferrer">Martini</a>,底层依赖 <a href="https://github.com/codegangsta/inject" target="_blank" rel="noopener noreferrer">codegangsta/inject</a> 实现依赖注入，但在路由层做了重写，显著降低了反射开销与内存占用。详细的中文文档可参考:</p>]]></description></item><item><title>Gitbook 输出PDF</title><link>https://rd163.visword.com/posts/gitbook-pdfandebook/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/gitbook-pdfandebook/</guid><description>&lt;p>GitBook 命令行工具(&lt;code>gitbook-cli&lt;/code>)支持把 Markdown 写成的书籍导出为 PDF 文件，便于打印、归档或在无网络环境下阅读。本篇整理 PDF 导出的命令、依赖、配置项以及常见问题。&lt;/p></description></item><item><title>逻辑回归</title><link>https://rd163.visword.com/posts/logistic-regression/</link><pubDate>Sat, 26 Apr 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/logistic-regression/</guid><description>&lt;p>Logistic Regression 虽然被称为「回归」，但其实际上是一个&lt;strong>分类模型&lt;/strong>，并最常用于二分类（binary classification）。它因模型简单、可并行化、可解释性强，且训练和推理代价都较低，在广告点击率预估、风控、医疗诊断等工业场景中至今仍被广泛使用，常常作为强基线（strong baseline）出现。&lt;/p></description></item><item><title>boost.asio 网络编程</title><link>https://rd163.visword.com/posts/boost-asio-cpp-network/</link><pubDate>Tue, 03 Jun 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/boost-asio-cpp-network/</guid><description><![CDATA[<h2 id="引言" class="headerLink">
    <a href="#%e5%bc%95%e8%a8%80" class="header-mark"></a>引言</h2><p>在 C++ 后端开发领域，<strong>Boost.Asio</strong>（Asynchronous Input/Output）几乎是事实上的网络与底层 I/O 标准库。它不仅支撑了大量开源项目（如 websocketpp、cpp-httplib 的部分实现思路），也是 C++ 标准委员会 <strong>Networking TS</strong> 的原型基础。本文整理 Asio 的核心概念、设计模式以及实战要点，帮助你在写第一个高并发服务端时不踩坑。</p>]]></description></item><item><title>使用 LetterAvatar 在 Go 中生成字母头像</title><link>https://rd163.visword.com/posts/golang-letter-avatar/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-letter-avatar/</guid><description><![CDATA[<h2 id="背景为什么需要字母头像" class="headerLink">
    <a href="#%e8%83%8c%e6%99%af%e4%b8%ba%e4%bb%80%e4%b9%88%e9%9c%80%e8%a6%81%e5%ad%97%e6%af%8d%e5%a4%b4%e5%83%8f" class="header-mark"></a>背景：为什么需要字母头像</h2><p>在论坛、IM、评论区这类 UGC(User-Generated Content)场景中，相当一部分用户不会主动上传头像。如果默认显示统一的灰色占位图，界面会显得单调，也不利于快速识别用户。一个常见的做法是：用昵称的首个字符叠加在彩色背景上，生成所谓的「字母头像」(Letter Avatar)。Notion、Linear、Slack 等不少 SaaS 产品都采用了类似策略。</p>]]></description></item><item><title>使用 KubeRay 在 Kubernetes 中托管 Ray 工作负载</title><link>https://rd163.visword.com/posts/running-ray-on-k8s/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/running-ray-on-k8s/</guid><description>&lt;p>Ray 是源自 UC Berkeley RISELab 的通用分布式计算框架，被广泛用于机器学习训练、超参搜索、强化学习和在线推理。当团队规模扩大、需要在多租户的共享集群上跑 Ray 时，把 Ray 装到裸机或虚拟机往往会陷入调度、容错和版本管理的泥潭。Kubernetes 已经成为事实标准的工作负载编排平台，而 KubeRay 正是把 Ray 与 Kubernetes 桥接起来的官方推荐方案。&lt;/p></description></item><item><title>模板编程语言 Liquid</title><link>https://rd163.visword.com/posts/template-lang-liquid/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/template-lang-liquid/</guid><description>&lt;p>Liquid 是一门开源的模板语言（template language）,由 Shopify 创造并用 Ruby 实现。它是 Shopify 主题（theme）的骨骼，负责把店铺后台的动态内容渲染成浏览器看到的 HTML。自 2006 年起，Liquid 就在 Shopify 的生产环境中使用，如今已被大量 Web 应用所采纳，其中最知名的莫过于 GitHub Pages 默认的静态站点生成器 Jekyll。&lt;/p></description></item><item><title>跨域资源共享 CORS 详解</title><link>https://rd163.visword.com/posts/http-cors/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/http-cors/</guid><description><![CDATA[<h2 id="简介" class="headerLink">
    <a href="#%e7%ae%80%e4%bb%8b" class="header-mark"></a>简介</h2><p>CORS(Cross-Origin Resource Sharing，跨域资源共享)是一个基于 HTTP 头的安全机制，允许服务器声明浏览器可以从<strong>哪些源（origin）</strong> 加载自己提供的资源。源由 <strong>协议（scheme）、域名（host）和端口（port）</strong> 三者共同决定，任一不同即视为跨域。</p>]]></description></item><item><title>Webpack 入门教程</title><link>https://rd163.visword.com/posts/webpack/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/webpack/</guid><description>&lt;p>Webpack 是一款用于现代 JavaScript 应用的&lt;strong>静态模块打包器&lt;/strong>(static module bundler)。它从一个或多个入口出发，递归地构建出整个应用的依赖关系图（dependency graph）,然后把每个模块组合成一个或多个 bundle(产物包)。尽管近两年 Vite、Turbopack、Rspack 等基于原生 ESM 或 Rust 的新工具快速崛起，Webpack 依然是大量线上项目和企业脚手架的主流选择，理解它的概念模型对前端工程化仍然必不可少。&lt;/p></description></item><item><title>Ollama 的 WebUI 选型</title><link>https://rd163.visword.com/posts/ollama-webui/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/ollama-webui/</guid><description><![CDATA[<p><a href="https://github.com/ollama/ollama" target="_blank" rel="noopener noreferrer">Ollama</a> 是目前最流行的本地大语言模型（Large Language Model，LLM）运行器之一，基于 <a href="https://github.com/ggml-org/llama.cpp" target="_blank" rel="noopener noreferrer">llama.cpp</a> 构建，采用 Go 语言封装，MIT 协议开源。它把权重下载、量化版本选择、上下文管理、推理参数等繁琐细节都收拢在一条命令背后，让 macOS、Windows、Linux 用户可以像 <code>docker run</code> 一样在本地跑起 Llama、Qwen、Gemma、DeepSeek、GLM 等开源模型。但 Ollama 本身只暴露一个命令行界面与一个 HTTP API，若希望像使用 ChatGPT 那样在浏览器里对话、管理多轮会话、上传文档，就需要再搭配一个 WebUI。本文先回顾 Ollama 的接口形态，再盘点几类常见的 WebUI 方案与选型要点。</p>]]></description></item><item><title>Linux 网络命名空间</title><link>https://rd163.visword.com/posts/linux-net-namespace/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/linux-net-namespace/</guid><description><![CDATA[<p>网络命名空间（network namespace，常缩写为 netns）是 Linux 内核提供的一种资源隔离机制。它让不同进程看到完全独立的网络栈：网卡接口、路由表、防火墙规则、ARP 表、端口号乃至 <code>/proc/net</code> 与 <code>/sys/class/net</code> 的视图，彼此互不干扰。</p>]]></description></item><item><title>Linux 网络负载均衡</title><link>https://rd163.visword.com/posts/linux-net-lb/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/linux-net-lb/</guid><description><![CDATA[<h2 id="什么是负载均衡" class="headerLink">
    <a href="#%e4%bb%80%e4%b9%88%e6%98%af%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1" class="header-mark"></a>什么是负载均衡</h2><p><strong>负载均衡（Load Balancing）</strong> 是指将大量并发请求或数据流量按某种策略分发到多台后端节点上分别处理，从而提升系统的整体吞吐能力、可用性与可扩展性。它的本质是在客户端和服务端之间引入一个&quot;分发层&quot;,对外暴露统一入口，对内把流量调度到一组真实服务器。</p>]]></description></item><item><title>Linux GRE 隧道配置与原理</title><link>https://rd163.visword.com/posts/linux-generic-routing-encapsulation/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/linux-generic-routing-encapsulation/</guid><description><![CDATA[<p>GRE(Generic Routing Encapsulation，通用路由封装)是一种轻量、通用的三层隧道协议，能够在一个网络层协议之上承载&quot;任意&quot;网络层协议的报文。它由 Cisco 提出，核心规范为 RFC 2784，后续被 RFC 2890(扩展 Key 与序号字段)和 RFC 9601 更新。Linux 内核原生支持 GRE(<code>ip_gre</code> 模块),配合 iproute2 工具集即可在两台主机之间建立点对点隧道，常用于跨网络打通私网、与 IPsec 组合提供带路由能力的 VPN，或在云网络（如早期 OpenStack Neutron + OVS）中承载租户流量。</p>]]></description></item><item><title>IM 开源解决方案</title><link>https://rd163.visword.com/posts/im-open-source/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/im-open-source/</guid><description>&lt;p>在业务系统里集成即时通讯（Instant Messaging,IM）能力，是客服、社交、协同办公、IoT 等场景常见的需求。直接对接厂商的推送通道或 SaaS 服务会带来数据出境、付费、定制化受限等问题，因此&lt;strong>自建一套开源 IM 系统&lt;/strong>成为很多团队的选择。&lt;/p></description></item><item><title>Git 服务搭建</title><link>https://rd163.visword.com/posts/git-server/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/git-server/</guid><description><![CDATA[<p>在团队私有代码托管、内网交付或学习 Git 内部原理的场景中，不依赖 GitHub、Gitea 这类平台，只用一台带 SSH 服务的 Linux 机器就能跑起一台可用的 Git 服务器。本文基于 Pro Git 官方文档的 &ldquo;Git on the Server&rdquo; 一章，整理协议选型、最小化搭建步骤，以及若干安全加固要点。</p>]]></description></item><item><title>CSRF 跨站请求伪造详解</title><link>https://rd163.visword.com/posts/http-csrf/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/http-csrf/</guid><description><![CDATA[<h2 id="简介" class="headerLink">
    <a href="#%e7%ae%80%e4%bb%8b" class="header-mark"></a>简介</h2><p>CSRF(Cross-Site Request Forgery，跨站请求伪造)是一种针对 Web 应用的攻击方式。攻击者诱导已登录（已通过身份认证）的用户，在他们不知情的情况下，以其身份向目标网站发送了一个恶意请求。由于浏览器在跨站请求中<strong>会自动携带目标域的 Cookie</strong>,服务器看到请求带着有效的会话凭证，就会把它当作合法用户本人的操作并予以执行。</p>]]></description></item><item><title>Android 应用程序中的 Coredump 抓取与分析</title><link>https://rd163.visword.com/posts/android-debug-coredump/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/android-debug-coredump/</guid><description><![CDATA[<p>在 Android 平台上，一旦业务进入音视频、图形渲染、JNI 桥接或自研 SDK 等领域，Native 层（C/C++）崩溃就成为无法回避的问题。与 Java 层崩溃不同，Native 崩溃抛出的是 <code>SIGSEGV</code>、<code>SIGABRT</code> 等信号（signals）,栈帧地址是一串十六进制数，直接看日志几乎读不出有用信息。要在这种环境下定位问题，必须先拿到&quot;崩溃现场&quot;——也就是本文要讨论的 <strong>Coredump 与 Tombstone</strong>。</p>]]></description></item><item><title>LLM 工作流编排方案</title><link>https://rd163.visword.com/posts/llm-workflow-compose/</link><pubDate>Fri, 14 Feb 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/llm-workflow-compose/</guid><description><![CDATA[<p>单纯调用一个大语言模型（Large Language Model,LLM）的 API 只能解决一次性问答。当业务需要把&quot;检索知识库 → 调用 LLM → 执行工具 → 分支判断 → 输出结构化结果&quot;串联成一条流水线时，就需要<strong>工作流编排</strong>(Workflow Orchestration)。围绕 LLM 的编排能力，业界通常也称之为 LLMOps 平台或 AI Agent(智能体)平台。</p>]]></description></item><item><title>用 AIGC 开发 Web UI 界面的产品</title><link>https://rd163.visword.com/posts/web-development-by-aigc/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/web-development-by-aigc/</guid><description>&lt;p>AIGC（AI-Generated Content，人工智能生成内容）正在重塑 Web 前端开发的工作流。过去需要设计师交付稿、工程师手写组件、再反复联调的链路，现在被压缩成「描述 / 截图 / 拾取 → 生成可运行代码」的一步。本文按「文本生成 UI」「截图/UI 拾取生成代码」「AI 代码编辑器」三类，梳理目前主流的 AIGC Web UI 产品，并给出选型参考。&lt;/p></description></item><item><title>英汉词典</title><link>https://rd163.visword.com/posts/dict/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/dict/</guid><description>&lt;p>在终端环境下阅读英文文档、写代码或翻译时，频繁切换到浏览器查词会打断思路。一个顺手、响应快、可离线的词典工具能显著提升效率。本文整理几类常见的开源英汉词典方案，包括命令行查词工具、离线词典数据库与桌面词典软件。&lt;/p></description></item><item><title>任务代理服务</title><link>https://rd163.visword.com/posts/job-agent-service/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/job-agent-service/</guid><description><![CDATA[<p>在落地 CI/CD 流水线时，团队迟早会撞到一类问题：控制面（SaaS 上的流水线定义、调度、日志查看）足够好用，但执行面却受限于厂商托管的运行环境——网络不通内网、镜像拉取慢、需要的 GPU 或特殊硬件拿不到、或者合规上代码不能出私网。这时通常的解法是把<strong>作业执行</strong>从云厂商剥离出来，放到自己的基础设施上，这就是所谓的<strong>任务代理服务（Runner / Agent）</strong>。</p>]]></description></item><item><title>解决 Linux 终端中光标消失的问题</title><link>https://rd163.visword.com/posts/linux-terminal-cursor-disappear/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/linux-terminal-cursor-disappear/</guid><description>&lt;p>在使用 Linux 终端（Terminal）时，偶尔会遇到一个让人困惑的现象：输入命令时光标（那个用来标识插入位置的小方块或竖线）突然不见了，但键入的字符仍然能正常显示。这种情况几乎都不是系统故障，而是某个程序退出时没有正确恢复终端状态所导致。本文梳理其成因与多种修复手段。&lt;/p></description></item><item><title>独立开发者相关网址收集</title><link>https://rd163.visword.com/posts/independent-developer-site/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/independent-developer-site/</guid><description>&lt;p>独立开发者（indie developer / indie hacker）通常需要在没有大团队支持的情况下，独立完成产品的前端、后端、数据库、认证、支付、部署、运营等全部环节。要在有限的精力下快速验证想法（idea）并把产品推向海外市场，选对工具栈比堆功能更重要。本文整理两类资源：一是社区维护的「工具集仓库」,可以直接照着选型;二是在出海团队里反复出现、值得长期投入的核心服务。&lt;/p></description></item><item><title>Web 前端框架</title><link>https://rd163.visword.com/posts/web-framework/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/web-framework/</guid><description>&lt;p>Web 前端框架（Web Frontend Framework）为浏览器端应用提供组件化模型、路由、状态管理、构建工具链等一整套约定与基础设施。本文按「底层库 → 上层框架 → 构建工具 → 国内方案」的脉络，梳理目前主流的几类技术栈，便于快速建立整体认识。&lt;/p></description></item><item><title>Vue.js 框架入门</title><link>https://rd163.visword.com/posts/vuejs/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/vuejs/</guid><description>&lt;p>Vue(发音 /vjuː/,同 view)是一个用于构建用户界面（user interface）的 JavaScript 框架，基于标准 HTML、CSS 与 JavaScript 构建。它由尤雨溪（Evan You）于 2014 年发布，目前主版本为 Vue 3，截至撰稿时最新稳定版为 3.5 系列。Vue 在官方文档中将自己定位为「渐进式框架」(progressive framework)——可以根据项目复杂度逐步引入，从给静态页面加点交互，到构建复杂的单页应用（Single-Page Application, SPA）、服务端渲染（SSR）、静态站点生成（SSG）,甚至配合 Electron / Capacitor 打包为桌面端或移动端应用。&lt;/p></description></item><item><title>Tmux</title><link>https://rd163.visword.com/posts/tmux/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/tmux/</guid><description><![CDATA[<p>Tmux 是一个终端复用器（terminal multiplexer），采用 ISC 许可证发布，作者 Nicholas Marriott，源码托管在 <a href="https://github.com/tmux/tmux" target="_blank" rel="noopener noreferrer">tmux/tmux</a>。它最核心的能力是把&quot;会话&quot;与&quot;终端窗口&quot;彻底解绑：进程在服务器后台持续运行，关闭终端、SSH 掉线都不会让任务中断。本文整理 Tmux 的层级模型、常用命令与配置要点，便于日常查阅。</p>]]></description></item><item><title>PHP 与 Golang 协同：用 RoadRunner 给 PHP 应用换一颗 Go 的心脏</title><link>https://rd163.visword.com/posts/php-with-golang/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/php-with-golang/</guid><description>&lt;p>PHP 与 Go 的结合并不少见，但在工程实践中，最常见的合作形态并不是「把 PHP 代码改写成 Go」,而是让 Go 接管网络层与进程管理，让 PHP 专注于业务逻辑。&lt;strong>RoadRunner&lt;/strong> 正是这种思路的代表性项目：它用 Go 写了一个高性能的应用服务器（application server）,把 PHP 进程作为长驻 worker(常驻工作进程)调度起来，从而绕开了传统 PHP-FPM 在每个请求上重复引导框架的开销。&lt;/p></description></item><item><title>Make 的替代品</title><link>https://rd163.visword.com/posts/make-alternative/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/make-alternative/</guid><description><![CDATA[<p><a href="https://www.gnu.org/software/make/" target="_blank" rel="noopener noreferrer">Make</a> 诞生于 1976 年，几乎是 Unix 生态里事实上的构建工具标准。它的 <code>Makefile</code> 语法以「Tab 缩进敏感」「跨平台 shell 行为不一致」「变量与模式规则陡峭」著称。在 Go、Node.js、Rust 这类现代化项目里，直接用 Make 经常会踩到平台差异和语法陷阱。</p>]]></description></item><item><title>Golang 学习书籍与资源推荐</title><link>https://rd163.visword.com/posts/golang-books/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-books/</guid><description>&lt;p>Go(Golang)自 2009 年由 Google 开源以来，凭借简洁的语法、原生的并发支持（goroutine/channel）和出色的工程化体验，逐渐成为云原生、后端服务和命令行工具领域的主力语言之一。学习一门语言，官方文档和一本好书的组合往往比零散的博客更系统。本文整理一份 Go 学习书单，既包含国际公认的经典，也保留了几份对中文开发者友好的免费资料，并按阶段给出选书建议。&lt;/p></description></item><item><title>DNS 全局负载均衡（GSLB）介绍</title><link>https://rd163.visword.com/posts/dns-gslb/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/dns-gslb/</guid><description><![CDATA[<h2 id="什么是-gslb" class="headerLink">
    <a href="#%e4%bb%80%e4%b9%88%e6%98%af-gslb" class="header-mark"></a>什么是 GSLB</h2><p><strong>GSLB（Global Server Load Balancing，全局服务器负载均衡）</strong> 是一种跨多个地理区域、多个数据中心进行流量调度与分发的技术。它在标准 DNS 解析链路中插入一层智能调度，根据用户来源、节点健康状态、链路质量等条件，将请求导向&quot;最优&quot;的服务节点。</p>]]></description></item><item><title>Conda 的替代品</title><link>https://rd163.visword.com/posts/alternatives-for-conda/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/alternatives-for-conda/</guid><description><![CDATA[<h2 id="背景为什么需要替代品" class="headerLink">
    <a href="#%e8%83%8c%e6%99%af%e4%b8%ba%e4%bb%80%e4%b9%88%e9%9c%80%e8%a6%81%e6%9b%bf%e4%bb%a3%e5%93%81" class="header-mark"></a>背景：为什么需要替代品</h2><p>长期以来，Anaconda Distribution 和 Miniconda 是 Python 数据科学与科学计算场景下最常用的发行版。然而自 2020 年起，Anaconda, Inc. 更新了其服务条款（Terms of Service）,对商业用途做出了限制:</p>]]></description></item><item><title>Auth-Wiki</title><link>https://rd163.visword.com/posts/auth-wiki/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/auth-wiki/</guid><description><![CDATA[<p>在平时做后端服务、对接第三方登录或设计权限系统时，经常会遇到 OAuth、OIDC、SAML、PKCE、JWT 这类术语。官方规范（RFC）读起来晦涩，博客文章又常常各执一词。<strong>Auth-Wiki</strong> 正是为填补这块空白而存在的开源知识库——它由 <a href="https://github.com/logto-io/logto" target="_blank" rel="noopener noreferrer">Logto</a> 团队发起维护，系统性地收录了与身份验证（Authentication）、授权（Authorization）以及身份与访问管理（IAM）相关的术语条目。</p>]]></description></item><item><title>域名解析(DNS) -- CoreDNS</title><link>https://rd163.visword.com/posts/k8s-dns-coredns/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-dns-coredns/</guid><description>&lt;p>在 Kubernetes 中,服务发现(Service Discovery)的核心机制之一就是 DNS。每个 Service、每个有状态的 Pod 都会获得一个稳定的域名,业务容器只需要用域名访问即可,无需关心背后的 IP 变化。承担这一职责的默认组件,正是 &lt;strong>CoreDNS&lt;/strong>。&lt;/p></description></item><item><title>如何在 K8s 上运行 Spark</title><link>https://rd163.visword.com/posts/running-spark-on-k8s/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/running-spark-on-k8s/</guid><description>&lt;p>Apache Spark 自 2.3 版本开始提供对 Kubernetes 的原生支持,在 3.0 版本中正式 GA。把 Spark 跑在 K8s 上,可以利用容器的弹性伸缩和资源隔离能力,摆脱对 YARN 或独立集群管理器(Standalone)的依赖,让数据工程与现有云原生体系统一在一起。本文整理在 K8s 上运行 Spark 的两种主流方式、关键概念和落地要点。&lt;/p></description></item><item><title>客服系统</title><link>https://rd163.visword.com/posts/customer-service-system/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/customer-service-system/</guid><description>&lt;p>客服系统(Customer Service System)是企业用于接待访客、处理咨询、管理工单与维护客户关系的软件平台。早期它仅指嵌在网页右下角的「在线聊天小窗」,随着业务复杂度上升,逐步演变为涵盖网页、App、微信公众号/小程序、企业微信、QQ、邮件、电话语音等通路的「全渠道(Omnichannel)联络中心」。&lt;/p></description></item><item><title>计算机经典书籍</title><link>https://rd163.visword.com/posts/awesome-cs-books/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/awesome-cs-books/</guid><description>&lt;p>计算机科学的知识体系庞杂，从底层的数字电路、计算机系统结构，到上层的算法、网络与软件架构，每一层都有沉淀多年的经典教材。读经典的好处在于：它们大多由领域内的权威学者撰写，经过全球高校与企业多年使用检验，概念的表述严谨、体系完整，可以作为长期参考。&lt;/p></description></item><item><title>后台技术</title><link>https://rd163.visword.com/posts/server-tech/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/server-tech/</guid><description>&lt;p>「后台技术」(Backend / Server-side Technology)是一个边界宽泛、持续演化的概念。它泛指运行在服务器侧、为前端(浏览器、App、小程序、IoT 设备等)提供数据与业务能力支撑的全部技术栈,涵盖编程语言、应用框架、存储、消息、网络、运维、安全等多个层面。&lt;/p></description></item><item><title>安德斯·海尔斯伯格(Anders Hejlsberg)</title><link>https://rd163.visword.com/posts/anders-hejlsberg/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/anders-hejlsberg/</guid><description>&lt;p>安德斯·海尔斯伯格(Anders Hejlsberg)是当代最具影响力的编程语言设计师之一。从上世纪 80 年代的 Turbo Pascal,到 90 年代的 Delphi,再到 2000 年之后的 C# 与 TypeScript,他参与或主导设计的语言与开发工具横跨了近四十年的软件工业史。本文按时间线梳理他的主要工作与贡献。&lt;/p></description></item><item><title>Wagtail 介绍</title><link>https://rd163.visword.com/posts/wagtail-intro/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/wagtail-intro/</guid><description>&lt;p>在 Python 的 Web 生态里,Django 已经足够成熟,但要做一套让非技术人员也能顺畅发布内容的网站,通常还需要一个内容管理系统(Content Management System,CMS)。Wagtail 就是这样一个基于 Django 构建的开源 CMS,由英国数字 agency Torchbox 于 2014 年开源,目前由社区维护,被 NASA、Google、Mozilla、MIT、UC Berkeley、NHS 等机构用于生产环境。&lt;/p></description></item><item><title>Python 可视化调试</title><link>https://rd163.visword.com/posts/python-visual-debug/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/python-visual-debug/</guid><description>&lt;p>「可视化调试」在 Python 语境下有两层含义:一是用图形界面(GUI)的调试器,在断点处查看变量、调用栈与求值表达式;二是把程序的执行过程可视化,用时间线、火焰图等呈现函数调用顺序与耗时。前者解决「程序为什么是这个状态」,后者解决「程序究竟是怎么跑的」。本文介绍三种常用方案。&lt;/p></description></item><item><title>ptrace 学习笔记</title><link>https://rd163.visword.com/posts/linux-ptrace-intro/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/linux-ptrace-intro/</guid><description><![CDATA[<p><code>ptrace(2)</code> 是 Linux(以及多数现代 Unix)提供的一个系统调用,允许一个进程(<strong>tracer</strong>,跟踪者)观察、控制另一个进程(<strong>tracee</strong>,被跟踪者)的执行,并读写其内存与寄存器。它是 <code>strace</code>、<code>gdb</code> 等工具的底层基石(perf trace 走的是 perf_event_open tracepoint 路径,刻意避开 ptrace 的高开销),也是反调试、沙箱、热补丁等技术的实现入口。本文整理其工作模型、常用 request 与典型示例。</p>]]></description></item><item><title>K8s 源码阅读</title><link>https://rd163.visword.com/posts/k8s-source-review/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-source-review/</guid><description><![CDATA[<h2 id="概述" class="headerLink">
    <a href="#%e6%a6%82%e8%bf%b0" class="header-mark"></a>概述</h2><p>Kubernetes 的主仓库 <a href="https://github.com/kubernetes/kubernetes" target="_blank" rel="noopener noreferrer"><code>kubernetes/kubernetes</code></a> 是一个以 Go 为主(占比约 97%)的庞大项目,截至本文写作时提交数已超过 14 万。直接从根目录切入很容易迷失方向,阅读源码前先理解它的整体结构、构建机制和典型调用链,可以显著降低入门成本。</p>]]></description></item><item><title>k8s 本地化安装部署</title><link>https://rd163.visword.com/posts/k8s-local-deploy/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-local-deploy/</guid><description>&lt;p>在学习和开发 Kubernetes(K8s)应用时,先在本地计算机上搭建一个集群用于测试和验证,是最高效的方式之一。官方文档将这些场景归为「学习环境(Learning Environment)」,与「生产环境(Production Environment)」相对。本文梳理四种主流的本地化部署工具,并对比其适用场景。&lt;/p></description></item><item><title>K8s Ingress 控制器</title><link>https://rd163.visword.com/posts/k8s-ingress-controller/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/k8s-ingress-controller/</guid><description><![CDATA[<p>Kubernetes 的 <code>Ingress</code> 资源只声明了「外部 HTTP/HTTPS 流量如何路由到集群内的 Service」,它本身不会产生任何转发行为。真正监听 Ingress 变化、把规则翻译成数据面配置、并对外接收流量的程序,就是 <strong>Ingress 控制器(Ingress Controller)</strong>。本文梳理它的工作原理与主流开源实现,并提供一个多维度对比与选型参考。</p>]]></description></item><item><title>Golang 常用日志库</title><link>https://rd163.visword.com/posts/golang-log-libs/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/golang-log-libs/</guid><description><![CDATA[<p>日志是服务可观测性的基石。Go 生态中,日志库大致经历了「标准库 <code>log</code> → 第三方结构化日志库(<code>logrus</code>、<code>zap</code>、<code>zerolog</code>) → 标准库 <code>log/slog</code>」三个阶段。本文梳理几款在工程中常见的 Go 日志库,介绍其定位、特性与基础用法,便于在实际选型时参考。</p>]]></description></item><item><title>GitHub 开源替代方案</title><link>https://rd163.visword.com/posts/open-source-alternatives-for-github/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/open-source-alternatives-for-github/</guid><description>&lt;p>当团队需要在内部网络部署一套代码托管平台，或希望对仓库、issue、CI/CD 流程拥有完整控制权时，自托管的 Git 服务就成了 GitHub 之外的常见选择。本文梳理几个主流的开源替代方案，重点介绍三个轻量级项目 Gogs、Gitea、GitBucket，并补充 GitLab CE 与 Forgejo 作为对照。&lt;/p></description></item><item><title>server-management</title><link>https://rd163.visword.com/posts/server-management/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/server-management/</guid><description>&lt;p>服务器运维管理(Server Management)是指对 Linux/Windows 服务器从上线到下线全生命周期的配置、监控、部署、安全与维护工作。对个人开发者和中小团队而言,如何在「效率」与「可控性」之间取得平衡,是选型时最核心的问题。本文按运维工作的几个维度梳理常见思路,并对比三类管理方式:原生命令行、配置管理工具、Web 管理面板。&lt;/p></description></item><item><title>游戏强化训练</title><link>https://rd163.visword.com/posts/game-rl-trainning/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/game-rl-trainning/</guid><description>&lt;p>游戏是强化学习(Reinforcement Learning, RL)最经典也最成熟的实验场。规则清晰、状态可观测、奖励可量化、能够无限次对弈——这些特性让棋类、电子竞技、Atari 游戏成为验证 RL 算法的天然沙盒。本文梳理「游戏强化训练」涉及的核心概念、关键里程碑、主流框架,以及代表性开源复现项目。&lt;/p></description></item><item><title>无头 CMS</title><link>https://rd163.visword.com/posts/headless-cms/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/headless-cms/</guid><description>&lt;p>传统的内容管理系统（如 WordPress、Drupal）把后端内容管理与前端页面渲染耦合在一起，编辑在后台写好内容，系统通过内置的主题模板直接输出 HTML。这种方式在单体站点场景下开箱即用，但当业务需要把同一份内容分发到 Web、移动 App、小程序、IoT 设备等多个端时，模板化的前端就成了限制。&lt;/p></description></item><item><title>如何获取 App 源码</title><link>https://rd163.visword.com/posts/how-to-get-app-source/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/how-to-get-app-source/</guid><description>&lt;p>在移动应用开发中,获取一份可用的 App 源码通常有两种出发点:一是基于现成的模板或项目做二次开发(reskin / 换皮),加速产品上线;二是参考成熟实现学习架构与最佳实践。本文梳理常见的合法获取渠道,并说明各自的授权方式和适用场景。&lt;/p></description></item><item><title>可视化</title><link>https://rd163.visword.com/posts/visual/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/visual/</guid><description><![CDATA[<p>软件开发与计算机科学教学中,「可视化」是把抽象逻辑转化为可感知图形的有效手段。按照用途,可视化工具大致可分为三类:<strong>算法可视化</strong>(帮助理解数据结构与算法的执行过程)、<strong>调试可视化</strong>(帮助分析程序运行状态与调用关系)、<strong>数据可视化</strong>(用于绘制业务数据、网络拓扑等)。本文按这三类梳理常用工具。</p>]]></description></item><item><title>互联网公司经典技术架构</title><link>https://rd163.visword.com/posts/classic-technical-architecture/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/classic-technical-architecture/</guid><description>&lt;p>互联网公司过去二十余年的技术演进，几乎浓缩了现代分布式系统的所有关键议题。从早期单机支撑百万 PV 的 LAMP 架构，到今日以 Kubernetes 为基础的云原生体系，每一次范式迁移的背后，都是业务规模、团队组织与基础设施能力三者共同作用的结果。本文按时间线梳理这套演进路径，并引用几家代表性公司的公开资料作为佐证。&lt;/p></description></item><item><title>工作周报自动总结</title><link>https://rd163.visword.com/posts/auto-weekly/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/auto-weekly/</guid><description>&lt;p>工作周报是研发团队常见的同步手段,但每周末手工翻阅五天日记、再归纳成文,既耗时又容易遗漏。本文记录一套基于 &lt;a href="https://obsidian.md/" target="_blank" rel="noopener noreferrer">Obsidian&lt;/a> 的自动化方案:每日按固定模板写日记,周末由插件汇总引用、再由 AI 模型生成可读的周报草稿。&lt;/p></description></item><item><title>Rust 实现的命令行工具</title><link>https://rd163.visword.com/posts/cmd-by-rust/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/cmd-by-rust/</guid><description><![CDATA[<p>近年来,Rust 在命令行工具领域出现了一大批高质量的项目。许多经典的 Unix 命令(<code>cat</code>、<code>ls</code>、<code>grep</code>、<code>find</code>、<code>cd</code> 等)都有了 Rust 重写的现代版本,它们在保留原工具习惯的同时,提供了更好的性能、更友好的输出和更丰富的功能。</p>]]></description></item><item><title>Mac 重装系统</title><link>https://rd163.visword.com/posts/mac-system-reinstall/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/mac-system-reinstall/</guid><description>&lt;p>重装 macOS 是排查系统故障、出售或转让设备前的常见操作。与早期需要光盘或 U 盘引导不同，现代 Mac 内置了 &lt;strong>macOS Recovery(恢复系统)&lt;/strong>,通过开机时的组合键或长按电源键即可进入,从联网下载安装镜像,无需额外介质。本文整理 Intel 与 Apple Silicon 两种机型进入 Recovery 的官方流程,并说明抹盘重装、启动 U 盘制作等关键步骤。&lt;/p></description></item><item><title>Go 语言实现的命令行工具</title><link>https://rd163.visword.com/posts/cmd-by-golang/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/cmd-by-golang/</guid><description>&lt;p>Go 语言在命令行工具领域有着大量优质项目。得益于交叉编译简单、单文件分发、启动快、并发模型轻量等特性,Go 已成为现代 CLI 工具最常用的实现语言之一。本文以 DNS 查询工具 &lt;a href="https://github.com/mr-karan/doggo" target="_blank" rel="noopener noreferrer">doggo&lt;/a> 为例,介绍这类工具的设计思路与实际用法。&lt;/p></description></item><item><title>Gitbook 输出格式</title><link>https://rd163.visword.com/posts/gitbook-output/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/gitbook-output/</guid><description>&lt;p>GitBook 命令行工具（&lt;code>gitbook-cli&lt;/code>）可以把 Markdown 或 AsciiDoc 写成的源文件，构建为多种可分发的内容形态。本篇先对几种常见的输出格式做整体介绍，具体的操作细节在后续文章展开。&lt;/p></description></item><item><title>dive</title><link>https://rd163.visword.com/posts/docker-dive/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/docker-dive/</guid><description>&lt;p>在写 Dockerfile 时,我们经常会遇到一个问题:镜像构建出来后,只能看到一个最终体积,却不知道每一层(layer)到底加了什么、改了什么、又被覆盖或删除了什么。&lt;code>docker history&lt;/code> 只能给出粗略的命令和尺寸,无法看到具体的文件变化。&lt;/p></description></item><item><title>代码阅读工具</title><link>https://rd163.visword.com/posts/source-code-explore/</link><pubDate>Sun, 20 Apr 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/source-code-explore/</guid><description><![CDATA[<p>阅读陌生代码库是工程师日常工作的重要组成部分。面对动辄数十万行的源码,仅靠编辑器内置的跳转和搜索往往难以快速建立全局认知。围绕「理解代码」这一需求,开源社区沉淀出两类工具:一类以 <strong>Doxygen</strong> 为代表,侧重从源码与注释中<strong>抽取并生成文档</strong>;另一类以 <strong>Sourcetrail</strong> 为代表,侧重提供<strong>交互式的源码浏览器</strong>,帮助人在图形界面中追踪符号与调用关系。本文对这两款工具做一次梳理。</p>]]></description></item><item><title>通知推送服务方案</title><link>https://rd163.visword.com/posts/notify-push-service/</link><pubDate>Sat, 31 May 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/notify-push-service/</guid><description>&lt;p>在服务端开发与运维场景中,常常需要把监控告警、构建结果、定时任务状态等信息以推送通知的形式实时发送到手机或桌面。直接接入各厂商的推送通道(APNs、FCM)成本较高,而第三方 SaaS 又涉及数据出境和付费问题。此时,&lt;strong>自建通知推送服务&lt;/strong>成为一种兼顾可控性与简洁性的选择。&lt;/p></description></item><item><title>后台技术图谱</title><link>https://rd163.visword.com/posts/server-technical-map/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0800</pubDate><author><name>小智晖</name></author><guid>https://rd163.visword.com/posts/server-technical-map/</guid><description><![CDATA[<h1>《后端架构师技术图谱》</h1>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84" target="_blank" rel="noopener noreferrer">数据结构</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%98%9f%e5%88%97" target="_blank" rel="noopener noreferrer">队列</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%9b%86%e5%90%88" target="_blank" rel="noopener noreferrer">集合</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%93%be%e8%a1%a8%e6%95%b0%e7%bb%84" target="_blank" rel="noopener noreferrer">链表、数组</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ad%97%e5%85%b8%e5%85%b3%e8%81%94%e6%95%b0%e7%bb%84" target="_blank" rel="noopener noreferrer">字典、关联数组</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%a0%88" target="_blank" rel="noopener noreferrer">栈</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%a0%91" target="_blank" rel="noopener noreferrer">树</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%8c%e5%8f%89%e6%a0%91" target="_blank" rel="noopener noreferrer">二叉树</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%8c%e5%85%a8%e4%ba%8c%e5%8f%89%e6%a0%91" target="_blank" rel="noopener noreferrer">完全二叉树</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b9%b3%e8%a1%a1%e4%ba%8c%e5%8f%89%e6%a0%91" target="_blank" rel="noopener noreferrer">平衡二叉树</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%8c%e5%8f%89%e6%9f%a5%e6%89%be%e6%a0%91bst" target="_blank" rel="noopener noreferrer">二叉查找树（BST）</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%ba%a2%e9%bb%91%e6%a0%91" target="_blank" rel="noopener noreferrer">红黑树</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#b-bb%e6%a0%91" target="_blank" rel="noopener noreferrer">B，B+，B*树</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#lsm-%e6%a0%91" target="_blank" rel="noopener noreferrer">LSM 树</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#bitset" target="_blank" rel="noopener noreferrer">BitSet</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b8%b8%e7%94%a8%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreferrer">常用算法</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8e%92%e5%ba%8f%e6%9f%a5%e6%89%be%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreferrer">排序、查找算法</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%80%89%e6%8b%a9%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreferrer">选择排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%86%92%e6%b3%a1%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreferrer">冒泡排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8f%92%e5%85%a5%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreferrer">插入排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%bf%ab%e9%80%9f%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreferrer">快速排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%bd%92%e5%b9%b6%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreferrer">归并排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b8%8c%e5%b0%94%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreferrer">希尔排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%a0%86%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreferrer">堆排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%ae%a1%e6%95%b0%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreferrer">计数排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%a1%b6%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreferrer">桶排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9f%ba%e6%95%b0%e6%8e%92%e5%ba%8f" target="_blank" rel="noopener noreferrer">基数排序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%8c%e5%88%86%e6%9f%a5%e6%89%be" target="_blank" rel="noopener noreferrer">二分查找</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#java-%e4%b8%ad%e7%9a%84%e6%8e%92%e5%ba%8f%e5%b7%a5%e5%85%b7" target="_blank" rel="noopener noreferrer">Java 中的排序工具</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b8%83%e9%9a%86%e8%bf%87%e6%bb%a4%e5%99%a8" target="_blank" rel="noopener noreferrer">布隆过滤器</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ad%97%e7%ac%a6%e4%b8%b2%e6%af%94%e8%be%83" target="_blank" rel="noopener noreferrer">字符串比较</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#kmp-%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreferrer">KMP 算法</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b7%b1%e5%ba%a6%e4%bc%98%e5%85%88%e5%b9%bf%e5%ba%a6%e4%bc%98%e5%85%88" target="_blank" rel="noopener noreferrer">深度优先、广度优先</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%b4%aa%e5%bf%83%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreferrer">贪心算法</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9b%9e%e6%ba%af%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreferrer">回溯算法</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%89%aa%e6%9e%9d%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreferrer">剪枝算法</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8a%a8%e6%80%81%e8%a7%84%e5%88%92" target="_blank" rel="noopener noreferrer">动态规划</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%b4%e7%b4%a0%e8%b4%9d%e5%8f%b6%e6%96%af" target="_blank" rel="noopener noreferrer">朴素贝叶斯</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8e%a8%e8%8d%90%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreferrer">推荐算法</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%80%e5%b0%8f%e7%94%9f%e6%88%90%e6%a0%91%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreferrer">最小生成树算法</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%80%e7%9f%ad%e8%b7%af%e5%be%84%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreferrer">最短路径算法</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b9%b6%e5%8f%91" target="_blank" rel="noopener noreferrer">并发</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#java-%e5%b9%b6%e5%8f%91" target="_blank" rel="noopener noreferrer">Java 并发</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%a4%9a%e7%ba%bf%e7%a8%8b" target="_blank" rel="noopener noreferrer">多线程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%ba%bf%e7%a8%8b%e5%ae%89%e5%85%a8" target="_blank" rel="noopener noreferrer">线程安全</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%80%e8%87%b4%e6%80%a7%e4%ba%8b%e5%8a%a1" target="_blank" rel="noopener noreferrer">一致性、事务</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%8b%e5%8a%a1-acid-%e7%89%b9%e6%80%a7" target="_blank" rel="noopener noreferrer">事务 ACID 特性</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%8b%e5%8a%a1%e7%9a%84%e9%9a%94%e7%a6%bb%e7%ba%a7%e5%88%ab" target="_blank" rel="noopener noreferrer">事务的隔离级别</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#mvcc" target="_blank" rel="noopener noreferrer">MVCC</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%94%81" target="_blank" rel="noopener noreferrer">锁</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#java%e4%b8%ad%e7%9a%84%e9%94%81%e5%92%8c%e5%90%8c%e6%ad%a5%e7%b1%bb" target="_blank" rel="noopener noreferrer">Java中的锁和同步类</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%85%ac%e5%b9%b3%e9%94%81--%e9%9d%9e%e5%85%ac%e5%b9%b3%e9%94%81" target="_blank" rel="noopener noreferrer">公平锁 &amp; 非公平锁</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%82%b2%e8%a7%82%e9%94%81" target="_blank" rel="noopener noreferrer">悲观锁</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b9%90%e8%a7%82%e9%94%81--cas" target="_blank" rel="noopener noreferrer">乐观锁 &amp; CAS</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#aba-%e9%97%ae%e9%a2%98" target="_blank" rel="noopener noreferrer">ABA 问题</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#copyonwrite%e5%ae%b9%e5%99%a8" target="_blank" rel="noopener noreferrer">CopyOnWrite容器</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#ringbuffer" target="_blank" rel="noopener noreferrer">RingBuffer</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8f%af%e9%87%8d%e5%85%a5%e9%94%81--%e4%b8%8d%e5%8f%af%e9%87%8d%e5%85%a5%e9%94%81" target="_blank" rel="noopener noreferrer">可重入锁 &amp; 不可重入锁</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%92%e6%96%a5%e9%94%81--%e5%85%b1%e4%ba%ab%e9%94%81" target="_blank" rel="noopener noreferrer">互斥锁 &amp; 共享锁</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%ad%bb%e9%94%81" target="_blank" rel="noopener noreferrer">死锁</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f" target="_blank" rel="noopener noreferrer">操作系统</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%ae%a1%e7%ae%97%e6%9c%ba%e5%8e%9f%e7%90%86" target="_blank" rel="noopener noreferrer">计算机原理</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#cpu" target="_blank" rel="noopener noreferrer">CPU</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%a4%9a%e7%ba%a7%e7%bc%93%e5%ad%98" target="_blank" rel="noopener noreferrer">多级缓存</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%bf%9b%e7%a8%8b" target="_blank" rel="noopener noreferrer">进程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%ba%bf%e7%a8%8b" target="_blank" rel="noopener noreferrer">线程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%8f%e7%a8%8b" target="_blank" rel="noopener noreferrer">协程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#linux" target="_blank" rel="noopener noreferrer">Linux</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreferrer">设计模式</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f%e7%9a%84%e5%85%ad%e5%a4%a7%e5%8e%9f%e5%88%99" target="_blank" rel="noopener noreferrer">设计模式的六大原则</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#23%e7%a7%8d%e5%b8%b8%e8%a7%81%e8%ae%be%e8%ae%a1%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreferrer">23种常见设计模式</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af" target="_blank" rel="noopener noreferrer">应用场景</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%95%e4%be%8b%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreferrer">单例模式</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%b4%a3%e4%bb%bb%e9%93%be%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreferrer">责任链模式</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#mvc" target="_blank" rel="noopener noreferrer">MVC</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#ioc" target="_blank" rel="noopener noreferrer">IOC</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#aop" target="_blank" rel="noopener noreferrer">AOP</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#uml" target="_blank" rel="noopener noreferrer">UML</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%be%ae%e6%9c%8d%e5%8a%a1%e6%80%9d%e6%83%b3" target="_blank" rel="noopener noreferrer">微服务思想</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ba%b7%e5%a8%81%e5%ae%9a%e5%be%8b" target="_blank" rel="noopener noreferrer">康威定律</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%bf%90%e7%bb%b4--%e7%bb%9f%e8%ae%a1--%e6%8a%80%e6%9c%af%e6%94%af%e6%8c%81" target="_blank" rel="noopener noreferrer">运维 &amp; 统计 &amp; 技术支持</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b8%b8%e8%a7%84%e7%9b%91%e6%8e%a7" target="_blank" rel="noopener noreferrer">常规监控</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#apm" target="_blank" rel="noopener noreferrer">APM</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bb%9f%e8%ae%a1%e5%88%86%e6%9e%90" target="_blank" rel="noopener noreferrer">统计分析</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8c%81%e7%bb%ad%e9%9b%86%e6%88%90cicd" target="_blank" rel="noopener noreferrer">持续集成(CI/CD)</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#jenkins" target="_blank" rel="noopener noreferrer">Jenkins</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%8e%af%e5%a2%83%e5%88%86%e7%a6%bb" target="_blank" rel="noopener noreferrer">环境分离</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%87%aa%e5%8a%a8%e5%8c%96%e8%bf%90%e7%bb%b4" target="_blank" rel="noopener noreferrer">自动化运维</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#ansible" target="_blank" rel="noopener noreferrer">Ansible</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#puppet" target="_blank" rel="noopener noreferrer">puppet</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#chef" target="_blank" rel="noopener noreferrer">chef</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b5%8b%e8%af%95" target="_blank" rel="noopener noreferrer">测试</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#tdd-%e7%90%86%e8%ae%ba" target="_blank" rel="noopener noreferrer">TDD 理论</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%95%e5%85%83%e6%b5%8b%e8%af%95" target="_blank" rel="noopener noreferrer">单元测试</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8e%8b%e5%8a%9b%e6%b5%8b%e8%af%95" target="_blank" rel="noopener noreferrer">压力测试</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%85%a8%e9%93%be%e8%b7%af%e5%8e%8b%e6%b5%8b" target="_blank" rel="noopener noreferrer">全链路压测</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#ab-%e7%81%b0%e5%ba%a6%e8%93%9d%e7%bb%bf%e6%b5%8b%e8%af%95" target="_blank" rel="noopener noreferrer">A/B 、灰度、蓝绿测试</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%99%9a%e6%8b%9f%e5%8c%96" target="_blank" rel="noopener noreferrer">虚拟化</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#kvm" target="_blank" rel="noopener noreferrer">KVM</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#xen" target="_blank" rel="noopener noreferrer">Xen</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#openvz" target="_blank" rel="noopener noreferrer">OpenVZ</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%b9%e5%99%a8%e6%8a%80%e6%9c%af" target="_blank" rel="noopener noreferrer">容器技术</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#docker" target="_blank" rel="noopener noreferrer">Docker</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%ba%91%e6%8a%80%e6%9c%af" target="_blank" rel="noopener noreferrer">云技术</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#openstack" target="_blank" rel="noopener noreferrer">OpenStack</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#devops" target="_blank" rel="noopener noreferrer">DevOps</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%96%87%e6%a1%a3%e7%ae%a1%e7%90%86" target="_blank" rel="noopener noreferrer">文档管理</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%ad%e9%97%b4%e4%bb%b6" target="_blank" rel="noopener noreferrer">中间件</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#web-server" target="_blank" rel="noopener noreferrer">Web Server</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#nginx" target="_blank" rel="noopener noreferrer">Nginx</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#openresty" target="_blank" rel="noopener noreferrer">OpenResty</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#Tengine" target="_blank" rel="noopener noreferrer">Tengine</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#apache-httpd" target="_blank" rel="noopener noreferrer">Apache Httpd</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#tomcat" target="_blank" rel="noopener noreferrer">Tomcat</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9e%b6%e6%9e%84%e5%8e%9f%e7%90%86" target="_blank" rel="noopener noreferrer">架构原理</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%b0%83%e4%bc%98%e6%96%b9%e6%a1%88" target="_blank" rel="noopener noreferrer">调优方案</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#jetty" target="_blank" rel="noopener noreferrer">Jetty</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bc%93%e5%ad%98" target="_blank" rel="noopener noreferrer">缓存</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%ac%e5%9c%b0%e7%bc%93%e5%ad%98" target="_blank" rel="noopener noreferrer">本地缓存</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%a2%e6%88%b7%e7%ab%af%e7%bc%93%e5%ad%98" target="_blank" rel="noopener noreferrer">客户端缓存</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%8d%e5%8a%a1%e7%ab%af%e7%bc%93%e5%ad%98" target="_blank" rel="noopener noreferrer">服务端缓存</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#web%e7%bc%93%e5%ad%98" target="_blank" rel="noopener noreferrer">Web缓存</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#memcached" target="_blank" rel="noopener noreferrer">Memcached</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#redis" target="_blank" rel="noopener noreferrer">Redis</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9e%b6%e6%9e%84" target="_blank" rel="noopener noreferrer">架构</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9b%9e%e6%94%b6%e7%ad%96%e7%95%a5" target="_blank" rel="noopener noreferrer">回收策略</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#tair" target="_blank" rel="noopener noreferrer">Tair</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b6%88%e6%81%af%e9%98%9f%e5%88%97" target="_blank" rel="noopener noreferrer">消息队列</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b6%88%e6%81%af%e6%80%bb%e7%ba%bf" target="_blank" rel="noopener noreferrer">消息总线</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b6%88%e6%81%af%e7%9a%84%e9%a1%ba%e5%ba%8f" target="_blank" rel="noopener noreferrer">消息的顺序</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#rabbitmq" target="_blank" rel="noopener noreferrer">RabbitMQ</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#rocketmq" target="_blank" rel="noopener noreferrer">RocketMQ</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#activemq" target="_blank" rel="noopener noreferrer">ActiveMQ</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#kafka" target="_blank" rel="noopener noreferrer">Kafka</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#redis-%e6%b6%88%e6%81%af%e6%8e%a8%e9%80%81" target="_blank" rel="noopener noreferrer">Redis 消息推送</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#zeromq" target="_blank" rel="noopener noreferrer">ZeroMQ</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%9a%e6%97%b6%e8%b0%83%e5%ba%a6" target="_blank" rel="noopener noreferrer">定时调度</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%95%e6%9c%ba%e5%ae%9a%e6%97%b6%e8%b0%83%e5%ba%a6" target="_blank" rel="noopener noreferrer">单机定时调度</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e5%ae%9a%e6%97%b6%e8%b0%83%e5%ba%a6" target="_blank" rel="noopener noreferrer">分布式定时调度</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#rpc" target="_blank" rel="noopener noreferrer">RPC</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#dubbo" target="_blank" rel="noopener noreferrer">Dubbo</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#thrift" target="_blank" rel="noopener noreferrer">Thrift</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#grpc" target="_blank" rel="noopener noreferrer">gRPC</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%b0%e6%8d%ae%e5%ba%93%e4%b8%ad%e9%97%b4%e4%bb%b6" target="_blank" rel="noopener noreferrer">数据库中间件</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#sharding-jdbc" target="_blank" rel="noopener noreferrer">Sharding Jdbc</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%97%a5%e5%bf%97%e7%b3%bb%e7%bb%9f" target="_blank" rel="noopener noreferrer">日志系统</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%97%a5%e5%bf%97%e6%90%9c%e9%9b%86" target="_blank" rel="noopener noreferrer">日志搜集</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%85%8d%e7%bd%ae%e4%b8%ad%e5%bf%83" target="_blank" rel="noopener noreferrer">配置中心</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#api-%e7%bd%91%e5%85%b3" target="_blank" rel="noopener noreferrer">API 网关</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bd%91%e7%bb%9c" target="_blank" rel="noopener noreferrer">网络</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%8f%e8%ae%ae" target="_blank" rel="noopener noreferrer">协议</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#osi-%e4%b8%83%e5%b1%82%e5%8d%8f%e8%ae%ae" target="_blank" rel="noopener noreferrer">OSI 七层协议</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#tcpip" target="_blank" rel="noopener noreferrer">TCP/IP</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#http" target="_blank" rel="noopener noreferrer">HTTP</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#http20" target="_blank" rel="noopener noreferrer">HTTP2.0</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#https" target="_blank" rel="noopener noreferrer">HTTPS</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bd%91%e7%bb%9c%e6%a8%a1%e5%9e%8b" target="_blank" rel="noopener noreferrer">网络模型</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#epoll" target="_blank" rel="noopener noreferrer">Epoll</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#java-nio" target="_blank" rel="noopener noreferrer">Java NIO</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#kqueue" target="_blank" rel="noopener noreferrer">kqueue</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%bf%9e%e6%8e%a5%e5%92%8c%e7%9f%ad%e8%bf%9e%e6%8e%a5" target="_blank" rel="noopener noreferrer">连接和短连接</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%a1%86%e6%9e%b6" target="_blank" rel="noopener noreferrer">框架</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%9b%b6%e6%8b%b7%e8%b4%9dzero-copy" target="_blank" rel="noopener noreferrer">零拷贝（Zero-copy）</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ba%8f%e5%88%97%e5%8c%96%e4%ba%8c%e8%bf%9b%e5%88%b6%e5%8d%8f%e8%ae%ae" target="_blank" rel="noopener noreferrer">序列化(二进制协议)</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#hessian" target="_blank" rel="noopener noreferrer">Hessian</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#protobuf" target="_blank" rel="noopener noreferrer">Protobuf</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%b0%e6%8d%ae%e5%ba%93" target="_blank" rel="noopener noreferrer">数据库</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9f%ba%e7%a1%80%e7%90%86%e8%ae%ba" target="_blank" rel="noopener noreferrer">基础理论</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%85%b3%e7%b3%bb%e6%95%b0%e6%8d%ae%e5%ba%93%e8%ae%be%e8%ae%a1%e7%9a%84%e4%b8%89%e5%a4%a7%e8%8c%83%e5%bc%8f" target="_blank" rel="noopener noreferrer">关系数据库设计的三大范式</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#mysql" target="_blank" rel="noopener noreferrer">MySQL</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8e%9f%e7%90%86" target="_blank" rel="noopener noreferrer">原理</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#innodb" target="_blank" rel="noopener noreferrer">InnoDB</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%bc%98%e5%8c%96" target="_blank" rel="noopener noreferrer">优化</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%b4%a2%e5%bc%95" target="_blank" rel="noopener noreferrer">索引</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%81%9a%e9%9b%86%e7%b4%a2%e5%bc%95-%e9%9d%9e%e8%81%9a%e9%9b%86%e7%b4%a2%e5%bc%95" target="_blank" rel="noopener noreferrer">聚集索引, 非聚集索引</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%a4%8d%e5%90%88%e7%b4%a2%e5%bc%95" target="_blank" rel="noopener noreferrer">复合索引</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%87%aa%e9%80%82%e5%ba%94%e5%93%88%e5%b8%8c%e7%b4%a2%e5%bc%95ahi" target="_blank" rel="noopener noreferrer">自适应哈希索引(AHI)</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#explain" target="_blank" rel="noopener noreferrer">explain</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#nosql" target="_blank" rel="noopener noreferrer">NoSQL</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#mongodb" target="_blank" rel="noopener noreferrer">MongoDB</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#hbase" target="_blank" rel="noopener noreferrer">Hbase</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e" target="_blank" rel="noopener noreferrer">搜索引擎</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e%e5%8e%9f%e7%90%86" target="_blank" rel="noopener noreferrer">搜索引擎原理</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#lucene" target="_blank" rel="noopener noreferrer">Lucene</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#elasticsearch" target="_blank" rel="noopener noreferrer">Elasticsearch</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#solr" target="_blank" rel="noopener noreferrer">Solr</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#sphinx" target="_blank" rel="noopener noreferrer">sphinx</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%80%a7%e8%83%bd" target="_blank" rel="noopener noreferrer">性能</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%80%a7%e8%83%bd%e4%bc%98%e5%8c%96%e6%96%b9%e6%b3%95%e8%ae%ba" target="_blank" rel="noopener noreferrer">性能优化方法论</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%b9%e9%87%8f%e8%af%84%e4%bc%b0" target="_blank" rel="noopener noreferrer">容量评估</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#cdn-%e7%bd%91%e7%bb%9c" target="_blank" rel="noopener noreferrer">CDN 网络</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%bf%9e%e6%8e%a5%e6%b1%a0" target="_blank" rel="noopener noreferrer">连接池</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%80%a7%e8%83%bd%e8%b0%83%e4%bc%98" target="_blank" rel="noopener noreferrer">性能调优</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%a4%a7%e6%95%b0%e6%8d%ae" target="_blank" rel="noopener noreferrer">大数据</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b5%81%e5%bc%8f%e8%ae%a1%e7%ae%97" target="_blank" rel="noopener noreferrer">流式计算</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#storm" target="_blank" rel="noopener noreferrer">Storm</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#flink" target="_blank" rel="noopener noreferrer">Flink</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#kafka-stream" target="_blank" rel="noopener noreferrer">Kafka Stream</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af-1" target="_blank" rel="noopener noreferrer">应用场景</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#hadoop" target="_blank" rel="noopener noreferrer">Hadoop</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#hdfs" target="_blank" rel="noopener noreferrer">HDFS</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#mapreduce" target="_blank" rel="noopener noreferrer">MapReduce</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#yarn" target="_blank" rel="noopener noreferrer">Yarn</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#spark" target="_blank" rel="noopener noreferrer">Spark</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%89%e5%85%a8" target="_blank" rel="noopener noreferrer">安全</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#web-%e5%ae%89%e5%85%a8" target="_blank" rel="noopener noreferrer">web 安全</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#xss" target="_blank" rel="noopener noreferrer">XSS</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#csrf" target="_blank" rel="noopener noreferrer">CSRF</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#sql-%e6%b3%a8%e5%85%a5" target="_blank" rel="noopener noreferrer">SQL 注入</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#hash-dos" target="_blank" rel="noopener noreferrer">Hash Dos</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%84%9a%e6%9c%ac%e6%b3%a8%e5%85%a5" target="_blank" rel="noopener noreferrer">脚本注入</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%bc%8f%e6%b4%9e%e6%89%ab%e6%8f%8f%e5%b7%a5%e5%85%b7" target="_blank" rel="noopener noreferrer">漏洞扫描工具</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%aa%8c%e8%af%81%e7%a0%81" target="_blank" rel="noopener noreferrer">验证码</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#ddos-%e9%98%b2%e8%8c%83" target="_blank" rel="noopener noreferrer">DDoS 防范</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%94%a8%e6%88%b7%e9%9a%90%e7%a7%81%e4%bf%a1%e6%81%af%e4%bf%9d%e6%8a%a4" target="_blank" rel="noopener noreferrer">用户隐私信息保护</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ba%8f%e5%88%97%e5%8c%96%e6%bc%8f%e6%b4%9e" target="_blank" rel="noopener noreferrer">序列化漏洞</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8a%a0%e5%af%86%e8%a7%a3%e5%af%86" target="_blank" rel="noopener noreferrer">加密解密</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%af%b9%e7%a7%b0%e5%8a%a0%e5%af%86" target="_blank" rel="noopener noreferrer">对称加密</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%93%88%e5%b8%8c%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreferrer">哈希算法</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%9d%9e%e5%af%b9%e7%a7%b0%e5%8a%a0%e5%af%86" target="_blank" rel="noopener noreferrer">非对称加密</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%8d%e5%8a%a1%e5%99%a8%e5%ae%89%e5%85%a8" target="_blank" rel="noopener noreferrer">服务器安全</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%b0%e6%8d%ae%e5%ae%89%e5%85%a8" target="_blank" rel="noopener noreferrer">数据安全</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%b0%e6%8d%ae%e5%a4%87%e4%bb%bd" target="_blank" rel="noopener noreferrer">数据备份</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bd%91%e7%bb%9c%e9%9a%94%e7%a6%bb" target="_blank" rel="noopener noreferrer">网络隔离</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%86%85%e5%a4%96%e7%bd%91%e5%88%86%e7%a6%bb" target="_blank" rel="noopener noreferrer">内外网分离</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%99%bb%e5%bd%95%e8%b7%b3%e6%9d%bf%e6%9c%ba" target="_blank" rel="noopener noreferrer">登录跳板机</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8e%88%e6%9d%83%e8%ae%a4%e8%af%81" target="_blank" rel="noopener noreferrer">授权、认证</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#rbac" target="_blank" rel="noopener noreferrer">RBAC</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#oauth20" target="_blank" rel="noopener noreferrer">OAuth2.0</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#oidc" target="_blank" rel="noopener noreferrer">OIDC</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#saml" target="_blank" rel="noopener noreferrer">SAML</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8f%8c%e5%9b%a0%e7%b4%a0%e8%ae%a4%e8%af%812fa" target="_blank" rel="noopener noreferrer">双因素认证（2FA）</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%95%e7%82%b9%e7%99%bb%e5%bd%95sso" target="_blank" rel="noopener noreferrer">单点登录(SSO)</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b8%b8%e7%94%a8%e5%bc%80%e6%ba%90%e6%a1%86%e6%9e%b6" target="_blank" rel="noopener noreferrer">常用开源框架</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%bc%80%e6%ba%90%e5%8d%8f%e8%ae%ae" target="_blank" rel="noopener noreferrer">开源协议</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%97%a5%e5%bf%97%e6%a1%86%e6%9e%b6" target="_blank" rel="noopener noreferrer">日志框架</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#log4jlog4j2" target="_blank" rel="noopener noreferrer">Log4j、Log4j2</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#logback" target="_blank" rel="noopener noreferrer">Logback</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#orm" target="_blank" rel="noopener noreferrer">ORM</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bd%91%e7%bb%9c%e6%a1%86%e6%9e%b6" target="_blank" rel="noopener noreferrer">网络框架</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#web-%e6%a1%86%e6%9e%b6" target="_blank" rel="noopener noreferrer">Web 框架</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#spring-%e5%ae%b6%e6%97%8f" target="_blank" rel="noopener noreferrer">Spring 家族</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b7%a5%e5%85%b7%e6%a1%86%e6%9e%b6" target="_blank" rel="noopener noreferrer">工具框架</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e8%ae%be%e8%ae%a1" target="_blank" rel="noopener noreferrer">分布式设计</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%89%a9%e5%b1%95%e6%80%a7%e8%ae%be%e8%ae%a1" target="_blank" rel="noopener noreferrer">扩展性设计</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%a8%b3%e5%ae%9a%e6%80%a7--%e9%ab%98%e5%8f%af%e7%94%a8" target="_blank" rel="noopener noreferrer">稳定性 &amp; 高可用</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%a1%ac%e4%bb%b6%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1" target="_blank" rel="noopener noreferrer">硬件负载均衡</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%bd%af%e4%bb%b6%e8%b4%9f%e8%bd%bd%e5%9d%87%e8%a1%a1" target="_blank" rel="noopener noreferrer">软件负载均衡</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%99%90%e6%b5%81" target="_blank" rel="noopener noreferrer">限流</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ba%94%e7%94%a8%e5%b1%82%e5%ae%b9%e7%81%be" target="_blank" rel="noopener noreferrer">应用层容灾</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%b7%a8%e6%9c%ba%e6%88%bf%e5%ae%b9%e7%81%be" target="_blank" rel="noopener noreferrer">跨机房容灾</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%ae%b9%e7%81%be%e6%bc%94%e7%bb%83%e6%b5%81%e7%a8%8b" target="_blank" rel="noopener noreferrer">容灾演练流程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b9%b3%e6%bb%91%e5%90%af%e5%8a%a8" target="_blank" rel="noopener noreferrer">平滑启动</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%b0%e6%8d%ae%e5%ba%93%e6%89%a9%e5%b1%95" target="_blank" rel="noopener noreferrer">数据库扩展</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%af%bb%e5%86%99%e5%88%86%e7%a6%bb%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreferrer">读写分离模式</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e7%89%87%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreferrer">分片模式</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%8d%e5%8a%a1%e6%b2%bb%e7%90%86" target="_blank" rel="noopener noreferrer">服务治理</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%8d%e5%8a%a1%e6%b3%a8%e5%86%8c%e4%b8%8e%e5%8f%91%e7%8e%b0" target="_blank" rel="noopener noreferrer">服务注册与发现</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9c%8d%e5%8a%a1%e8%b7%af%e7%94%b1%e6%8e%a7%e5%88%b6" target="_blank" rel="noopener noreferrer">服务路由控制</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e4%b8%80%e8%87%b4" target="_blank" rel="noopener noreferrer">分布式一致</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#cap-%e4%b8%8e-base-%e7%90%86%e8%ae%ba" target="_blank" rel="noopener noreferrer">CAP 与 BASE 理论</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e9%94%81" target="_blank" rel="noopener noreferrer">分布式锁</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e4%b8%80%e8%87%b4%e6%80%a7%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreferrer">分布式一致性算法</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#paxos" target="_blank" rel="noopener noreferrer">PAXOS</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#zab" target="_blank" rel="noopener noreferrer">Zab</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#raft" target="_blank" rel="noopener noreferrer">Raft</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#gossip" target="_blank" rel="noopener noreferrer">Gossip</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%a4%e9%98%b6%e6%ae%b5%e6%8f%90%e4%ba%a4%e5%a4%9a%e9%98%b6%e6%ae%b5%e6%8f%90%e4%ba%a4" target="_blank" rel="noopener noreferrer">两阶段提交、多阶段提交</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b9%82%e7%ad%89" target="_blank" rel="noopener noreferrer">幂等</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e4%b8%80%e8%87%b4%e6%96%b9%e6%a1%88" target="_blank" rel="noopener noreferrer">分布式一致方案</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f-leader-%e8%8a%82%e7%82%b9%e9%80%89%e4%b8%be" target="_blank" rel="noopener noreferrer">分布式 Leader 节点选举</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#tcctryconfirmcancel-%e6%9f%94%e6%80%a7%e4%ba%8b%e5%8a%a1" target="_blank" rel="noopener noreferrer">TCC(Try/Confirm/Cancel) 柔性事务</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%88%86%e5%b8%83%e5%bc%8f%e6%96%87%e4%bb%b6%e7%b3%bb%e7%bb%9f" target="_blank" rel="noopener noreferrer">分布式文件系统</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%94%af%e4%b8%80id-%e7%94%9f%e6%88%90" target="_blank" rel="noopener noreferrer">唯一ID 生成</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%85%a8%e5%b1%80%e5%94%af%e4%b8%80id" target="_blank" rel="noopener noreferrer">全局唯一ID</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%80%e8%87%b4%e6%80%a7hash%e7%ae%97%e6%b3%95" target="_blank" rel="noopener noreferrer">一致性Hash算法</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%ae%be%e8%ae%a1%e6%80%9d%e6%83%b3--%e5%bc%80%e5%8f%91%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreferrer">设计思想 &amp; 开发模式</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#ddddomain-driven-design---%e9%a2%86%e5%9f%9f%e9%a9%b1%e5%8a%a8%e8%ae%be%e8%ae%a1" target="_blank" rel="noopener noreferrer">DDD(Domain-driven Design - 领域驱动设计)</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%91%bd%e4%bb%a4%e6%9f%a5%e8%af%a2%e8%81%8c%e8%b4%a3%e5%88%86%e7%a6%bbcqrs" target="_blank" rel="noopener noreferrer">命令查询职责分离(CQRS)</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%b4%ab%e8%a1%80%e5%85%85%e8%a1%80%e6%a8%a1%e5%9e%8b" target="_blank" rel="noopener noreferrer">贫血，充血模型</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#actor-%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreferrer">Actor 模式</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%93%8d%e5%ba%94%e5%bc%8f%e7%bc%96%e7%a8%8b" target="_blank" rel="noopener noreferrer">响应式编程</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#reactor" target="_blank" rel="noopener noreferrer">Reactor</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#rxjava" target="_blank" rel="noopener noreferrer">RxJava</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#vertx" target="_blank" rel="noopener noreferrer">Vert.x</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#dodaf20" target="_blank" rel="noopener noreferrer">DODAF2.0</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#serverless" target="_blank" rel="noopener noreferrer">Serverless</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#service-mesh" target="_blank" rel="noopener noreferrer">Service Mesh</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%a1%b9%e7%9b%ae%e7%ae%a1%e7%90%86" target="_blank" rel="noopener noreferrer">项目管理</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9e%b6%e6%9e%84%e8%af%84%e5%ae%a1" target="_blank" rel="noopener noreferrer">架构评审</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%87%8d%e6%9e%84" target="_blank" rel="noopener noreferrer">重构</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%bb%a3%e7%a0%81%e8%a7%84%e8%8c%83" target="_blank" rel="noopener noreferrer">代码规范</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%bb%a3%e7%a0%81-review" target="_blank" rel="noopener noreferrer">代码 Review</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#rup" target="_blank" rel="noopener noreferrer">RUP</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%9c%8b%e6%9d%bf%e7%ae%a1%e7%90%86" target="_blank" rel="noopener noreferrer">看板管理</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#scrum" target="_blank" rel="noopener noreferrer">SCRUM</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%95%8f%e6%8d%b7%e5%bc%80%e5%8f%91" target="_blank" rel="noopener noreferrer">敏捷开发</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9e%81%e9%99%90%e7%bc%96%e7%a8%8bxp" target="_blank" rel="noopener noreferrer">极限编程（XP）</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bb%93%e5%af%b9%e7%bc%96%e7%a8%8b" target="_blank" rel="noopener noreferrer">结对编程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#pdca-%e5%be%aa%e7%8e%af%e8%b4%a8%e9%87%8f%e7%ae%a1%e7%90%86" target="_blank" rel="noopener noreferrer">PDCA 循环质量管理</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#fmea%e7%ae%a1%e7%90%86%e6%a8%a1%e5%bc%8f" target="_blank" rel="noopener noreferrer">FMEA管理模式</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%80%9a%e7%94%a8%e4%b8%9a%e5%8a%a1%e6%9c%af%e8%af%ad" target="_blank" rel="noopener noreferrer">通用业务术语</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8a%80%e6%9c%af%e8%b6%8b%e5%8a%bf" target="_blank" rel="noopener noreferrer">技术趋势</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%94%bf%e7%ad%96%e6%b3%95%e8%a7%84" target="_blank" rel="noopener noreferrer">政策、法规</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%b3%95%e5%be%8b" target="_blank" rel="noopener noreferrer">法律</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%a5%e6%a0%bc%e9%81%b5%e5%ae%88%e5%88%91%e6%b3%95253%e6%b3%95%e6%9d%a1" target="_blank" rel="noopener noreferrer">严格遵守刑法253法条</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9e%b6%e6%9e%84%e5%b8%88%e7%b4%a0%e8%b4%a8" target="_blank" rel="noopener noreferrer">架构师素质</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9b%a2%e9%98%9f%e7%ae%a1%e7%90%86" target="_blank" rel="noopener noreferrer">团队管理</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8b%9b%e8%81%98" target="_blank" rel="noopener noreferrer">招聘</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%b5%84%e8%ae%af" target="_blank" rel="noopener noreferrer">资讯</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%a1%8c%e4%b8%9a%e8%b5%84%e8%ae%af" target="_blank" rel="noopener noreferrer">行业资讯</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%85%ac%e4%bc%97%e5%8f%b7%e5%88%97%e8%a1%a8" target="_blank" rel="noopener noreferrer">公众号列表</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%8d%9a%e5%ae%a2" target="_blank" rel="noopener noreferrer">博客</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9b%a2%e9%98%9f%e5%8d%9a%e5%ae%a2" target="_blank" rel="noopener noreferrer">团队博客</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%aa%e4%ba%ba%e5%8d%9a%e5%ae%a2" target="_blank" rel="noopener noreferrer">个人博客</a></li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bb%bc%e5%90%88%e9%97%a8%e6%88%b7%e7%a4%be%e5%8c%ba" target="_blank" rel="noopener noreferrer">综合门户、社区</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e9%97%ae%e7%ad%94%e8%ae%a8%e8%ae%ba%e7%b1%bb%e7%a4%be%e5%8c%ba" target="_blank" rel="noopener noreferrer">问答、讨论类社区</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e8%a1%8c%e4%b8%9a%e6%95%b0%e6%8d%ae%e5%88%86%e6%9e%90" target="_blank" rel="noopener noreferrer">行业数据分析</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%b8%93%e9%a1%b9%e7%bd%91%e7%ab%99" target="_blank" rel="noopener noreferrer">专项网站</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%85%b6%e4%bb%96%e7%b1%bb" target="_blank" rel="noopener noreferrer">其他类</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8e%a8%e8%8d%90%e5%8f%82%e8%80%83%e4%b9%a6" target="_blank" rel="noopener noreferrer">推荐参考书</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9c%a8%e7%ba%bf%e7%94%b5%e5%ad%90%e4%b9%a6" target="_blank" rel="noopener noreferrer">在线电子书</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%ba%b8%e8%b4%a8%e4%b9%a6" target="_blank" rel="noopener noreferrer">纸质书</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%bc%80%e5%8f%91%e6%96%b9%e9%9d%a2" target="_blank" rel="noopener noreferrer">开发方面</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%9e%b6%e6%9e%84%e6%96%b9%e9%9d%a2" target="_blank" rel="noopener noreferrer">架构方面</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8a%80%e6%9c%af%e7%ae%a1%e7%90%86%e6%96%b9%e9%9d%a2" target="_blank" rel="noopener noreferrer">技术管理方面</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9f%ba%e7%a1%80%e7%90%86%e8%ae%ba-1" target="_blank" rel="noopener noreferrer">基础理论</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b7%a5%e5%85%b7%e6%96%b9%e9%9d%a2" target="_blank" rel="noopener noreferrer">工具方面</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%a4%a7%e6%95%b0%e6%8d%ae%e6%96%b9%e9%9d%a2" target="_blank" rel="noopener noreferrer">大数据方面</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%8a%80%e6%9c%af%e8%b5%84%e6%ba%90" target="_blank" rel="noopener noreferrer">技术资源</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%bc%80%e6%ba%90%e8%b5%84%e6%ba%90" target="_blank" rel="noopener noreferrer">开源资源</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%89%8b%e5%86%8c%e6%96%87%e6%a1%a3%e6%95%99%e7%a8%8b" target="_blank" rel="noopener noreferrer">手册、文档、教程</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%9c%a8%e7%ba%bf%e8%af%be%e5%a0%82" target="_blank" rel="noopener noreferrer">在线课堂</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%bc%9a%e8%ae%ae%e6%b4%bb%e5%8a%a8" target="_blank" rel="noopener noreferrer">会议、活动</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b8%b8%e7%94%a8app" target="_blank" rel="noopener noreferrer">常用APP</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%89%be%e5%b7%a5%e4%bd%9c" target="_blank" rel="noopener noreferrer">找工作</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e5%b7%a5%e5%85%b7" target="_blank" rel="noopener noreferrer">工具</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e4%bb%a3%e7%a0%81%e6%89%98%e7%ae%a1" target="_blank" rel="noopener noreferrer">代码托管</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e6%96%87%e4%bb%b6%e6%9c%8d%e5%8a%a1" target="_blank" rel="noopener noreferrer">文件服务</a></li>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%e7%bb%bc%e5%90%88%e4%ba%91%e6%9c%8d%e5%8a%a1%e5%95%86" target="_blank" rel="noopener noreferrer">综合云服务商</a>
<ul>
<li><a href="https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#vps" target="_blank" rel="noopener noreferrer">VPS</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<p><strong>（Toc generated by <a href="https://github.com/xingshaocheng/simple-php-github-toc" target="_blank" rel="noopener noreferrer">simple-php-github-toc</a> ）</strong></p>]]></description></item></channel></rss>