From 93c16f002ff606a6b9392d2cf2b4bb14b99666bf Mon Sep 17 00:00:00 2001 From: sunface Date: Mon, 27 Feb 2023 11:40:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=BF=9B=E9=98=B6=E5=AE=9E?= =?UTF-8?q?=E6=88=98=EF=BC=9A=E5=AE=9E=E7=8E=B0=E4=B8=80=E4=B8=AA=E7=AE=80?= =?UTF-8?q?=E5=8D=95=E7=9A=84=20reids?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dump.rdb | Bin 925 -> 427 bytes src/SUMMARY.md | 45 +++++++++--------- .../tokio => advance-practice}/async.md | 0 .../bridging-with-sync.md | 0 .../tokio => advance-practice}/channels.md | 0 .../tokio => advance-practice}/frame.md | 0 .../getting-startted.md | 0 .../graceful-shutdown.md | 0 src/advance-practice/intro.md | 9 ++++ .../tokio => advance-practice}/io.md | 0 .../tokio => advance-practice}/overview.md | 0 .../tokio => advance-practice}/select.md | 0 .../shared-state.md | 0 .../tokio => advance-practice}/spawning.md | 0 .../tokio => advance-practice}/stream.md | 0 .../async/async-await.md | 0 .../async/future-excuting.md | 0 .../async/getting-started.md | 0 src/{async-rust => advance/async}/intro.md | 14 +++--- .../async/multi-futures-simultaneous.md | 0 .../async/pain-points-and-workarounds.md | 0 .../async/pin-unpin.md | 0 .../async/web-server.md | 0 src/async-rust/async/intro.md | 5 -- src/async-rust/tokio/intro.md | 8 ---- 25 files changed, 37 insertions(+), 44 deletions(-) rename src/{async-rust/tokio => advance-practice}/async.md (100%) rename src/{async-rust/tokio => advance-practice}/bridging-with-sync.md (100%) rename src/{async-rust/tokio => advance-practice}/channels.md (100%) rename src/{async-rust/tokio => advance-practice}/frame.md (100%) rename src/{async-rust/tokio => advance-practice}/getting-startted.md (100%) rename src/{async-rust/tokio => advance-practice}/graceful-shutdown.md (100%) create mode 100644 src/advance-practice/intro.md rename src/{async-rust/tokio => advance-practice}/io.md (100%) rename src/{async-rust/tokio => advance-practice}/overview.md (100%) rename src/{async-rust/tokio => advance-practice}/select.md (100%) rename src/{async-rust/tokio => advance-practice}/shared-state.md (100%) rename src/{async-rust/tokio => advance-practice}/spawning.md (100%) rename src/{async-rust/tokio => advance-practice}/stream.md (100%) rename src/{async-rust => advance}/async/async-await.md (100%) rename src/{async-rust => advance}/async/future-excuting.md (100%) rename src/{async-rust => advance}/async/getting-started.md (100%) rename src/{async-rust => advance/async}/intro.md (52%) rename src/{async-rust => advance}/async/multi-futures-simultaneous.md (100%) rename src/{async-rust => advance}/async/pain-points-and-workarounds.md (100%) rename src/{async-rust => advance}/async/pin-unpin.md (100%) rename src/{async-rust => advance}/async/web-server.md (100%) delete mode 100644 src/async-rust/async/intro.md delete mode 100644 src/async-rust/tokio/intro.md diff --git a/dump.rdb b/dump.rdb index 5cddf864b615ca2d3b48eccb38da9cdf4f3f208f..854e08d29c5646a4b2b08e2d9b739745aaf90223 100644 GIT binary patch delta 47 zcmbQszM6T0fncukpX6U0rNyZ!y1A*jhc;}U=qSp>%s4T^Wpf`BJ0nL^L!@Z2?bjm! DtIrXg delta 557 zcmX|;KWGzC9Dv{5wN2Wp)tWXg;;-i-l1tuQl8c^LFRg-g64RlSf}VFT$(hT0;oiHJ zw3Kw}WN9JG%a%5uVW1gWsFsam>j z<_kK;*v!EjsY>oW8UFFEefaqO_s*lk?T28aGBo6pzYKFpBc(Q&PX$-4OBkorfGmTj13cRmC^uH1l%a}nG$hG z!P*D~5jKI6B@k7gRya%y!*oa-!9rkVuqWkdnuhH`Uy#soh0iE#pp|a_PPczU3H%y? z^YE;NINXq$ce~O^tjvOdEs+q;!V9^{H&h0uxS~19(Isxzd~f{7{I8Z;ev+ES$x^b<}4#Oudepiz0KW!(=W82 P|B1hT@ayyB*O}U1il4GV diff --git a/src/SUMMARY.md b/src/SUMMARY.md index a6f47aec..6361a56b 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -115,30 +115,29 @@ - [Macro 宏编程](advance/macro.md) + - [async/await 异步编程](advance/async/intro.md) + - [async 编程入门](advance/async/getting-started.md) + - [底层探秘: Future 执行与任务调度](advance/async/future-excuting.md) + - [定海神针 Pin 和 Unpin](advance/async/pin-unpin.md) + - [async/await 和 Stream 流处理](advance/async/async-await.md) + - [同时运行多个 Future](advance/async/multi-futures-simultaneous.md) + - [一些疑难问题的解决办法](advance/async/pain-points-and-workarounds.md) + - [实践应用:Async Web 服务器](advance/async/web-server.md) + +- [进阶实战: 实现一个简单 redis](advance-practice/intro.md) + - [tokio 概览](advance-practice/overview.md) + - [使用初印象](advance-practice/getting-startted.md) + - [创建异步任务](advance-practice/spawning.md) + - [共享状态](advance-practice/shared-state.md) + - [消息传递](advance-practice/channels.md) + - [I/O](advance-practice/io.md) + - [解析数据帧](advance-practice/frame.md) + - [深入 async](advance-practice/async.md) + - [select](advance-practice/select.md) + - [类似迭代器的 Stream](advance-practice/stream.md)) + - [优雅的关闭](advance-practice/graceful-shutdown.md) + - [异步跟同步共存](advance-practice/bridging-with-sync.md) -- [Rust 异步编程](async-rust/intro.md) - - - [async/await 异步编程](async-rust/async/intro.md) - - [async 编程入门](async-rust/async/getting-started.md) - - [底层探秘: Future 执行与任务调度](async-rust/async/future-excuting.md) - - [定海神针 Pin 和 Unpin](async-rust/async/pin-unpin.md) - - [async/await 和 Stream 流处理](async-rust/async/async-await.md) - - [同时运行多个 Future](async-rust/async/multi-futures-simultaneous.md) - - [一些疑难问题的解决办法](async-rust/async/pain-points-and-workarounds.md) - - [实践应用:Async Web 服务器](async-rust/async/web-server.md) - - [Tokio 使用指南](async-rust/tokio/intro.md) - - [tokio 概览](async-rust/tokio/overview.md) - - [使用初印象](async-rust/tokio/getting-startted.md) - - [创建异步任务](async-rust/tokio/spawning.md) - - [共享状态](async-rust/tokio/shared-state.md) - - [消息传递](async-rust/tokio/channels.md) - - [I/O](async-rust/tokio/io.md) - - [解析数据帧](async-rust/tokio/frame.md) - - [深入 async](async-rust/tokio/async.md) - - [select](async-rust/tokio/select.md) - - [类似迭代器的 Stream](async-rust/tokio/stream.md)) - - [优雅的关闭](async-rust/tokio/graceful-shutdown.md) - - [异步跟同步共存](async-rust/tokio/bridging-with-sync.md) - [Rust 难点攻关](difficulties/intro.md) - [切片和切片引用](difficulties/slice.md) diff --git a/src/async-rust/tokio/async.md b/src/advance-practice/async.md similarity index 100% rename from src/async-rust/tokio/async.md rename to src/advance-practice/async.md diff --git a/src/async-rust/tokio/bridging-with-sync.md b/src/advance-practice/bridging-with-sync.md similarity index 100% rename from src/async-rust/tokio/bridging-with-sync.md rename to src/advance-practice/bridging-with-sync.md diff --git a/src/async-rust/tokio/channels.md b/src/advance-practice/channels.md similarity index 100% rename from src/async-rust/tokio/channels.md rename to src/advance-practice/channels.md diff --git a/src/async-rust/tokio/frame.md b/src/advance-practice/frame.md similarity index 100% rename from src/async-rust/tokio/frame.md rename to src/advance-practice/frame.md diff --git a/src/async-rust/tokio/getting-startted.md b/src/advance-practice/getting-startted.md similarity index 100% rename from src/async-rust/tokio/getting-startted.md rename to src/advance-practice/getting-startted.md diff --git a/src/async-rust/tokio/graceful-shutdown.md b/src/advance-practice/graceful-shutdown.md similarity index 100% rename from src/async-rust/tokio/graceful-shutdown.md rename to src/advance-practice/graceful-shutdown.md diff --git a/src/advance-practice/intro.md b/src/advance-practice/intro.md new file mode 100644 index 00000000..1b30478e --- /dev/null +++ b/src/advance-practice/intro.md @@ -0,0 +1,9 @@ +# 进阶实战: 实现一个简单 redis + +在入门实战,你可以说众览半山不咋小,但是能坚持到这里,甚至当完成后,就真的是一览众山小,余敌皆鱼虾了。 + +在进阶实战中,我们要来真的了,之前的简单命令行程序,是真的简单,但是这次的简单 redis 是真的不简单,在这里你将被迫使用十八般武艺,特别的,我们还将学会 Rust 异步镇山之宝 `tokio` 包的使用。 + + +> 本章在内容上大量借鉴和翻译了 tokio 官方文档[Tokio Tutorial](https://tokio.rs/tokio/tutorial), 但是重新组织了内容形式并融入了很多自己的见解和感悟,给大家提供更好的可读性和知识扩展性 + diff --git a/src/async-rust/tokio/io.md b/src/advance-practice/io.md similarity index 100% rename from src/async-rust/tokio/io.md rename to src/advance-practice/io.md diff --git a/src/async-rust/tokio/overview.md b/src/advance-practice/overview.md similarity index 100% rename from src/async-rust/tokio/overview.md rename to src/advance-practice/overview.md diff --git a/src/async-rust/tokio/select.md b/src/advance-practice/select.md similarity index 100% rename from src/async-rust/tokio/select.md rename to src/advance-practice/select.md diff --git a/src/async-rust/tokio/shared-state.md b/src/advance-practice/shared-state.md similarity index 100% rename from src/async-rust/tokio/shared-state.md rename to src/advance-practice/shared-state.md diff --git a/src/async-rust/tokio/spawning.md b/src/advance-practice/spawning.md similarity index 100% rename from src/async-rust/tokio/spawning.md rename to src/advance-practice/spawning.md diff --git a/src/async-rust/tokio/stream.md b/src/advance-practice/stream.md similarity index 100% rename from src/async-rust/tokio/stream.md rename to src/advance-practice/stream.md diff --git a/src/async-rust/async/async-await.md b/src/advance/async/async-await.md similarity index 100% rename from src/async-rust/async/async-await.md rename to src/advance/async/async-await.md diff --git a/src/async-rust/async/future-excuting.md b/src/advance/async/future-excuting.md similarity index 100% rename from src/async-rust/async/future-excuting.md rename to src/advance/async/future-excuting.md diff --git a/src/async-rust/async/getting-started.md b/src/advance/async/getting-started.md similarity index 100% rename from src/async-rust/async/getting-started.md rename to src/advance/async/getting-started.md diff --git a/src/async-rust/intro.md b/src/advance/async/intro.md similarity index 52% rename from src/async-rust/intro.md rename to src/advance/async/intro.md index 0e5123fd..57281dca 100644 --- a/src/async-rust/intro.md +++ b/src/advance/async/intro.md @@ -1,11 +1,9 @@ -# Rust 异步编程 +# 异步编程 + 在艰难的学完 Rust 入门和进阶所有的 70 个章节后,我们终于来到了这里。假如之前攀登的是珠穆朗玛峰,那么现在攀登的就是乔戈里峰( 比珠峰还难攀爬... )。 -如果你想开发 Web 服务器、数据库驱动、消息服务等需要高并发的服务,那么本章的内容将值得认真对待和学习,将从以下方面深入讲解 Rust 的异步编程: +如果你想开发 Web 服务器、数据库驱动、消息服务等需要高并发的服务,那么本章的内容将值得认真对待和学习。 + +接下来,我们将深入了解 async/await 的使用方式及背后的原理。 -- Rust 异步编程的通用概念介绍 -- Future 以及异步任务调度 -- async/await 和 Pin/Unpin -- 异步编程常用的三方库 -- tokio 库 -- 一些示例 \ No newline at end of file +> 本章在内容上大量借鉴和翻译了原版英文书籍[Asynchronous Programming In Rust](https://rust-lang.github.io/async-book/01_getting_started/01_chapter.html), 特此感谢 diff --git a/src/async-rust/async/multi-futures-simultaneous.md b/src/advance/async/multi-futures-simultaneous.md similarity index 100% rename from src/async-rust/async/multi-futures-simultaneous.md rename to src/advance/async/multi-futures-simultaneous.md diff --git a/src/async-rust/async/pain-points-and-workarounds.md b/src/advance/async/pain-points-and-workarounds.md similarity index 100% rename from src/async-rust/async/pain-points-and-workarounds.md rename to src/advance/async/pain-points-and-workarounds.md diff --git a/src/async-rust/async/pin-unpin.md b/src/advance/async/pin-unpin.md similarity index 100% rename from src/async-rust/async/pin-unpin.md rename to src/advance/async/pin-unpin.md diff --git a/src/async-rust/async/web-server.md b/src/advance/async/web-server.md similarity index 100% rename from src/async-rust/async/web-server.md rename to src/advance/async/web-server.md diff --git a/src/async-rust/async/intro.md b/src/async-rust/async/intro.md deleted file mode 100644 index 0b55ac86..00000000 --- a/src/async-rust/async/intro.md +++ /dev/null @@ -1,5 +0,0 @@ -# 异步编程 - -接下来,我们将深入了解 async/await 的使用方式及背后的原理。 - -> 本章在内容上大量借鉴和翻译了原版英文书籍[Asynchronous Programming In Rust](https://rust-lang.github.io/async-book/01_getting_started/01_chapter.html), 特此感谢 diff --git a/src/async-rust/tokio/intro.md b/src/async-rust/tokio/intro.md deleted file mode 100644 index 5a7c043f..00000000 --- a/src/async-rust/tokio/intro.md +++ /dev/null @@ -1,8 +0,0 @@ -# Tokio 使用指南 - -在上一个章节中,我们提到了 Rust 异步编程的限制,其中之一就是你必须引入社区提供的异步运行时,其中最有名的就是 `tokio`。 - -在本章中,我们一起来看看 `tokio` 到底有什么优势,以及该如何使用它。 - -> 本章在内容上大量借鉴和翻译了 tokio 官方文档[Tokio Tutorial](https://tokio.rs/tokio/tutorial), 但是重新组织了内容形式并融入了很多自己的见解和感悟,给大家提供更好的可读性和知识扩展性 -