PageSourceSearch

https://www.skyzh.dev/blog/

html skyzh.dev collected 2026-10-03 19:03:50 UTC 24,354 bytes, 53 lines download raw bytes

1<!DOCTYPE html><html lang="en" data-astro-cid-3zuafzni> <head><!-- Global Metadata --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> <link rel="icon" href="/favicon.ico"> <meta name="generator" content="Astro v7.1.1"> <!-- Astro Nano font preloads --> <link rel="preload" href="/_astro/inter-latin-400-normal.C38fXH4l.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="/_astro/inter-latin-500-normal.Cerq10X2.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="/_astro/inter-latin-600-normal.LgqL8muc.woff2" as="font" type="font/woff2" crossorigin> <!-- Canonical URL --> <link rel="canonical" href="https://www.skyzh.dev/blog/"> <!-- Primary Meta Tags --> <title>Blog | Alex Chi Z.</title> <meta name="title" content="Blog | Alex Chi Z."> <meta name="description" content="Alex Chi's personal website"> <!-- Twitter --> <meta property="twitter:card" content="summary"> <meta property="twitter:site" content="iskyzh"> <meta property="twitter:url" content="https://www.skyzh.dev/blog/"> <meta property="twitter:title" content="Blog | Alex Chi Z."> <meta property="twitter:description" content="Alex Chi's personal website"> <meta property="twitter:image" content="https://www.skyzh.dev/images/skyzh.jpeg"> <!-- Open Graph / Facebook --> <meta property="og:type" content="website"> <meta property="og:url" content="https://www.skyzh.dev/blog/"> <meta property="og:title" content="Blog | Alex Chi Z."> <meta property="og:description" content="Alex Chi's personal website"> <meta property="og:image" content="https://www.skyzh.dev/images/skyzh.jpeg"> <!-- sitemap --> <link rel="sitemap" href="/sitemap-index.xml"> <link rel="alternate" type="application/rss+xml" title="Alex Chi Z." href="/rss.xml"> 
1<script>
2	(() => {
3		document.documentElement.classList.remove("dark");
4		document.documentElement.dataset.theme = "light";
5
6		/* Theme preferences are disabled for now. Restore this block with the
7		 * controls in Footer.astro to re-enable light/dark/system selection.
8		const preference = localStorage.getItem("theme") || "system";
9		const dark = preference === "dark" ||
10			(preference === "system" && window.matchMedia("(prefers-color-scheme: dark)").matches);
11		document.documentElement.classList.toggle("dark", dark);
12		document.documentElement.dataset.theme = preference;
13		*/
14	})();
15</script>
15  <!-- Google tag (gtag.js)
vendor: 64 bytes, lines 15-16
15
16<script async src="https://www.googletagmanager.com/gtag/js?id=
16G-812BQ96S8Q
vendor: 12 bytes, line 16
16"></script>
17<script>
18  
vendor: 134 bytes, lines 18-22
18window.dataLayer = window.dataLayer || [];
19  function gtag(){dataLayer.push(arguments);}
20  gtag('js', new Date());
21
22  gtag('config', '
22G-812BQ96S8Q
vendor: 4 bytes, line 22
22');
23</script>
23 --> 
23<script async src="https://analytics.umami.is/script.js" data-website-id="b7635e6c-8c66-456d-92fa-b8fed556bde7"></script>
23<link rel="stylesheet" href="/_astro/Header.Dt5Vt96s.css"><style>.post-row[data-astro-cid-geb7tcfo]{grid-template-columns:7.3rem minmax(0,1fr);align-items:center;gap:.75rem;display:grid}.post-row[data-astro-cid-geb7tcfo] time{color:var(--text-muted);font-size:.875rem}.post-card[data-astro-cid-geb7tcfo]{border:1px solid var(--border);border-radius:.55rem;justify-content:space-between;align-items:center;gap:.75rem;min-width:0;padding:.8rem .9rem;font-family:Inter,ui-sans-serif,system-ui,sans-serif;text-decoration:none;transition:background-color .18s,border-color .18s,color .18s;display:flex}.post-card[data-astro-cid-geb7tcfo]:hover{border-color:var(--border-strong);background:var(--surface-hover)}.post-copy[data-astro-cid-geb7tcfo]{flex-direction:column;min-width:0;display:flex}.post-copy[data-astro-cid-geb7tcfo] strong[data-astro-cid-geb7tcfo],.post-copy[data-astro-cid-geb7tcfo]>span[data-astro-cid-geb7tcfo]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.post-copy[data-astro-cid-geb7tcfo]>span[data-astro-cid-geb7tcfo]{color:var(--text-muted);font-size:.875rem}.external-marker[data-astro-cid-geb7tcfo]{color:var(--text-muted);margin-left:.35rem;font-size:.875em}svg[data-astro-cid-geb7tcfo]{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7px;flex:none;width:1.15rem;height:1.15rem;transition:transform .18s}.post-card[data-astro-cid-geb7tcfo]:hover svg[data-astro-cid-geb7tcfo]{transform:translate(.18rem)}.post-row[data-astro-cid-geb7tcfo].compact{grid-template-columns:minmax(0,1fr)}@media (width<=560px){.post-row[data-astro-cid-geb7tcfo]{grid-template-columns:1fr;gap:.35rem}}
24.blog-list[data-astro-cid-3zuafzni]{flex-direction:column;gap:2.75rem;display:flex}.blog-heading[data-astro-cid-3zuafzni]{margin:0;font-weight:600}section[data-astro-cid-3zuafzni],.year-group[data-astro-cid-3zuafzni]{flex-direction:column;gap:1rem;display:flex}h2[data-astro-cid-3zuafzni],h3[data-astro-cid-3zuafzni]{margin:0}ul[data-astro-cid-3zuafzni]{flex-direction:column;gap:.9rem;margin:0;padding:0;list-style:none;display:flex}.previous-posts[data-astro-cid-3zuafzni]{border-top:1px solid var(--border);padding-top:2.75rem}
25</style></head> <body data-astro-cid-3zuafzni> <header data-astro-cid-nen7h5rs> <div class="container">  <div class="header-inner" data-astro-cid-nen7h5rs> <a class="site-name" href="/" data-astro-cid-nen7h5rs>Alex Chi Z.</a> <nav aria-label="Primary navigation" data-astro-cid-nen7h5rs> <a href="/blog/" class="active" data-astro-cid-nen7h5rs="true" data-astro-cid-evkijfd6> blog </a> <span aria-hidden="true" data-astro-cid-nen7h5rs>/</span> <a href="/work/" data-astro-cid-nen7h5rs="true" data-astro-cid-evkijfd6> work </a> <span aria-hidden="true" data-astro-cid-nen7h5rs>/</span> <a href="/cv/" data-astro-cid-nen7h5rs="true" data-astro-cid-evkijfd6> cv </a> </nav> </div>  </div> </header> <main data-astro-cid-3zuafzni> <div class="container">  <div class="blog-list" data-astro-cid-3zuafzni> <h1 class="blog-heading" data-astro-cid-3zuafzni>Blog</h1> <section data-astro-cid-3zuafzni> <h2 data-astro-cid-3zuafzni>2025</h2> <ul data-astro-cid-3zuafzni> <li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2025-02-06T17:00:00.000Z"> Feb 6, 2025 </time> <a class="post-card" href="/blog/2025-02-06-optimizer-lesson-01/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> Plan Representation: #1 Lesson Learned from Building an Optimizer  </strong> <span data-astro-cid-geb7tcfo>Let&#39;s find out the best plan representation for building an extensible query optimizer.</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li> </ul> </section><section data-astro-cid-3zuafzni> <h2 data-astro-cid-3zuafzni>2023</h2> <ul data-astro-cid-3zuafzni> <li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2023-12-31T10:00:00.000Z"> Dec 31, 2023 </time> <a class="post-card" href="/blog/2023-12-31-lsm-kv-separation-overview/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo>
25 Key-Value Separation in LSM Storage Engines  </strong> <span data-astro-cid-geb7tcfo>In this blog post, we walk through several different implementations of key-value separation in LSM storage engines.</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2023-12-28T07:00:00.000Z"> Dec 28, 2023 </time> <a class="post-card" href="/blog/2023-12-28-store-of-streaming-states/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> State Store in Streaming Systems  </strong> <span data-astro-cid-geb7tcfo>In this blog post, we walk through three different approaches to designing state stores in streaming systems.</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2023-12-20T10:00:00.000Z"> Dec 20, 2023 </time> <a class="post-card" href="/blog/2023-12-20-the-final-semester-in-bustub/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> My Final Semester in BusTub  </strong> <span data-astro-cid-geb7tcfo>During Chi’s final semester at CMU, he made many changes to the BusTub project. In this post, he shares the story behind the BusTub MVCC project and his approach to designing a good course project.</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2023-08-11T21:00:00.000Z"> Aug 11, 2023 </time> <a class="post-card" href="/blog/2023-08-11-a-year-in-bustub/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> A Year in BusTub  </strong> <span data-astro-cid-geb7tcfo>This blog post revisits everything that has happened in BusTub in the past year and sets the next milestone for the system.</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2023-07-09T17:00:00.000Z"> Jul 9, 2023 </time> <a class="post-card" href="/blog/2023-07-09-blog-update/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> Blog Updates and Reactions Powered by Neon Postgres + Vercel  </strong> <span data-astro-cid-geb7tcfo>Chi has updated his blog to use the Astro web framework. You can now react to each post by clicking the reaction buttons at the end; the feature is powered by Vercel Edge Functions and Neon Postgres.</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2023-04-07T04:00:00.000Z"> Apr 7, 2023 </time> <a class="post-card" href="/blog/2023-03-02-bustub-query-processing/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> Query Processing in BusTub  </strong> <span data-astro-cid-geb7tcfo>Query Processing in BusTub</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li> </ul> </section><section data-astro-cid-3zuafzni> <h2 data-astro-cid-3zuafzni>2022</h2> <ul data-astro-cid-3zuafzni> <li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-12-28T18:00:00.000Z"> Dec 28, 2022 </time> <a class="post-card" href="/blog/2022-12-28-shared-state-in-risingwave/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> Shared Indexes and Joins in Streaming Databases <span class="external-marker" aria-label="Originally published elsewhere" data-astro-cid-geb7tcfo>↗</span> </strong> <span data-astro-cid-geb7tcfo>
25Shared Indexes and Joins in Streaming Databases</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-12-27T21:00:00.000Z"> Dec 27, 2022 </time> <a class="post-card" href="/blog/2022-12-27-mini-lsm/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> MiniLSM: Build an LSM-Tree Storage Engine in a Week! <span class="external-marker" aria-label="Originally published elsewhere" data-astro-cid-geb7tcfo>↗</span> </strong> <span data-astro-cid-geb7tcfo>MiniLSM: Build an LSM-Tree Storage Engine in a Week</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-07-12T12:00:00.000Z"> Jul 12, 2022 </time> <a class="post-card" href="/blog/2022-07-12-risedev/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> Developer Experience Counts: Behind the Scenes of RiseDev <span class="external-marker" aria-label="Originally published elsewhere" data-astro-cid-geb7tcfo>↗</span> </strong> <span data-astro-cid-geb7tcfo>Developer Experience Counts: Behind the Scenes of RiseDev</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li> </ul> </section> <section class="previous-posts" data-astro-cid-3zuafzni> <h2 data-astro-cid-3zuafzni>Previous posts in Chinese</h2> <div class="year-group" data-astro-cid-3zuafzni> <h3 data-astro-cid-3zuafzni>2023</h3> <ul data-astro-cid-3zuafzni> <li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2023-12-22T16:00:00.000Z"> Dec 22, 2023 </time> <a class="post-card" href="/blog/2023-12-23-third-semester-in-cmu/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> 迟宝宝的匹村 CMU 秋游记 <span class="external-marker" aria-label="Originally published elsewhere" data-astro-cid-geb7tcfo>↗</span> </strong> <span data-astro-cid-geb7tcfo>迟宝宝的匹村 CMU 秋游记 / CMU 第三学期的学期总结</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2023-05-12T16:00:00.000Z"> May 12, 2023 </time> <a class="post-card" href="/blog/2023-05-13-second-semester-in-cmu/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> 迟宝宝的匹村 CMU 春游记 <span class="external-marker" aria-label="Originally published elsewhere" data-astro-cid-geb7tcfo>↗</span> </strong> <span data-astro-cid-geb7tcfo>迟宝宝的匹村 CMU 春游记 / CMU 第二学期的学期总结</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li> </ul> </div><div class="year-group" data-astro-cid-3zuafzni> <h3 data-astro-cid-3zuafzni>2022</h3> <ul data-astro-cid-3zuafzni> <li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-12-04T16:00:00.000Z"> Dec 4, 2022 </time> <a class="post-card" href="/blog/2022-12-05-first-semester-in-cmu/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> 迟宝宝的匹村 CMU 游记 <span class="external-marker" aria-label="Originally published elsewhere" data-astro-cid-geb7tcfo>↗</span> </strong> <span data-astro-cid-geb7tcfo>迟宝宝的匹村 CMU 游记 / CMU 第一学期的学期总结</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-10-06T02:00:00.000Z"> Oct 6, 2022 </time> <a class="post-card" href="/blog/2022-10-05-bustub-query-processing/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> BusTub 养成记:从课程项目到 SQL 数据库  </strong> <span data-astro-cid-geb7tcfo>BusTub 养成记:从课程项目到 SQL 数据库</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-06-18T02:00:00.000Z"> Jun 18, 2022 </time> <a class="post-card" href="/blog/2022-06-18-rusttalk-rust-database/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> RustTalk 第四期:与迟先生聊 Rust 与数据库系统 <span class="external-marker" aria-label="Originally published elsewhere" data-astro-cid-geb7tcfo>↗</span> </strong> <span data-astro-cid-geb7tcfo>RustTalk 第四期:与迟先生聊 Rust 与数据库系统</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-05-29T15:00:00.000Z"> May 29, 2022 </time> <a class="post-card" href="/blog/2022-05-29-shared-state-in-risingwave/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> 流处理引擎中基于共享状态索引的 Delta Join  </strong> <span data-astro-cid-geb7tcfo>流处理引擎中基于共享状态索引的 Delta Join</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-04-06T16:00:00.000Z"> Apr 6, 2022 </time> <a class="post-card" href="/blog/2022-04-07-master-application/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> 22 Fall 出国申请 MSCS 的流水账 <span class="external-marker" aria-label="Originally published elsewhere" data-astro-cid-geb7tcfo>↗</span> </strong> <span data-astro-cid-geb7tcfo>22 Fall 出国申请 MSCS 的流水账</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-02-01T06:00:00.000Z"> Feb 1, 2022 </time> <a class="post-card" href="/blog/2022-02-01-rust-type-exercise-in-database-executors-final/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> 用 Rust 做类型体操 (下篇)  </strong> <span data-astro-cid-geb7tcfo>
25用 Rust 做类型体操 (下篇)</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-01-31T06:00:00.000Z"> Jan 31, 2022 </time> <a class="post-card" href="/blog/2022-01-31-gat-async-trait/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> 在 Rust 中用 GAT 手动实现零开销 async trait  </strong> <span data-astro-cid-geb7tcfo>在 Rust 中用 GAT 手动实现零开销 async trait</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-01-24T15:00:00.000Z"> Jan 24, 2022 </time> <a class="post-card" href="/blog/2022-01-24-rust-type-exercise-in-database-executors-middle/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> 用 Rust 做类型体操 (中篇)  </strong> <span data-astro-cid-geb7tcfo>用 Rust 做类型体操 (中篇)</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-01-22T08:00:00.000Z"> Jan 22, 2022 </time> <a class="post-card" href="/blog/2022-01-22-rust-type-exercise-in-database-executors/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> 用 Rust 做类型体操 (上篇)  </strong> <span data-astro-cid-geb7tcfo>用 Rust 做类型体操 (上篇)</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2022-01-15T14:00:00.000Z"> Jan 15, 2022 </time> <a class="post-card" href="/blog/2022-01-15-store-of-streaming-states/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> 流处理系统中状态的表示和存储  </strong> <span data-astro-cid-geb7tcfo>流处理系统中状态的表示和存储</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li> </ul> </div><div class="year-group" data-astro-cid-3zuafzni> <h3 data-astro-cid-3zuafzni>2021</h3> <ul data-astro-cid-3zuafzni> <li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2021-08-07T04:00:00.000Z"> Aug 7, 2021 </time> <a class="post-card" href="/blog/2021-08-07-lsm-kv-separation-overview/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> LSM 存储引擎中 KV 分离的实现  </strong> <span data-astro-cid-geb7tcfo>LSM 存储引擎中 KV 分离的实现</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2021-06-14T14:00:00.000Z"> Jun 14, 2021 </time> <a class="post-card" href="/blog/2021-06-14-deep-dive-io-uring/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> io_uring 的接口与实现  </strong> <span data-astro-cid-geb7tcfo>io_uring 的接口与实现</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li><li class="post-row" data-astro-cid-geb7tcfo> <time datetime="2021-01-30T09:37:23.000Z"> Jan 30, 2021 </time> <a class="post-card" href="/blog/2021-01-30-async-random-read-with-rust/" data-astro-cid-geb7tcfo> <span class="post-copy" data-astro-cid-geb7tcfo> <strong data-astro-cid-geb7tcfo> 在 Rust 中实现基于 io_uring 的异步随机读文件  </strong> <span data-astro-cid-geb7tcfo>在 Rust 中实现基于 io_uring 的异步随机读文件</span> </span> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-geb7tcfo> <path d="M5 12h14M13 6l6 6-6 6" data-astro-cid-geb7tcfo></path> </svg> </a> </li> </ul> </div> </section> </div>  </div> </main> <footer data-astro-cid-jo6i4kqk> <div class="container">  <div class="footer-inner" data-astro-cid-jo6i4kqk> <div data-astro-cid-jo6i4kqk>&copy; 2026 <span aria-hidden="true" data-astro-cid-jo6i4kqk>
25|</span> Alex Chi Z.</div> <div class="footer-actions" data-astro-cid-jo6i4kqk>  <button class="theme-button" id="back-to-top" aria-label="Back to top" title="Back to top" data-astro-cid-jo6i4kqk> <svg viewBox="0 0 24 24" aria-hidden="true" data-astro-cid-jo6i4kqk> <path d="m18 15-6-6-6 6" data-astro-cid-jo6i4kqk></path> </svg> </button> </div> </div>  </div> </footer> 
25<script>
26	/* Theme selection is disabled for now. Restore this block with the
27	 * commented controls above and the preference code in BaseHead.astro.
28	const applyTheme = (preference) => {
29		const dark = preference === "dark" ||
30			(preference === "system" && window.matchMedia("(prefers-color-scheme: dark)").matches);
31		document.documentElement.classList.toggle("dark", dark);
32		document.documentElement.dataset.theme = preference;
33	};
34
35	document.querySelectorAll("[data-theme-choice]").forEach((button) => {
36		button.addEventListener("click", () => {
37			const preference = button.dataset.themeChoice;
38			localStorage.setItem("theme", preference);
39			applyTheme(preference);
40		});
41	});
42
43	window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change", () => {
44		if ((localStorage.getItem("theme") || "system") === "system") {
45			applyTheme("system");
46		}
47	});
48	*/
49
50	document.getElementById("back-to-top")?.addEventListener("click", () => {
51		window.scrollTo({ top: 0, behavior: "smooth" });
52	});
53</script>
53 </body> </html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.