作者回复: 说得非常好! 对于「有着复杂业务逻辑的高性能服务器」,除了你说的这些,还有在处理的整个 pipeline 中要考虑引入 hook 做事件通知,以满足日志,监控等需求。在第 21 讲我们讨论 KV server 的时候,会逐步把你说的这些点都体现到。
作者回复: 👍
作者回复: 👍 全都跟下来啦。可以试着写写 nodejs 的支持。如果有疑问,可以去 github repo 里找答案 :)
作者回复: 👍 希望能够帮到
作者回复: 谢谢抬爱!
作者回复: 我就是在需要的时候查阅,并不会系统地去一篇篇读。对于要了解的数据结构,我会去看它都实现了哪些 trait。未来你会逐渐明白这非常重要。有时候甚至被数据结构自己提供了哪些功能更重要。
作者回复: 谢谢赞赏!
作者回复: 谢谢!这周先给大家看看 Rust 能做什么,怎么做。下周起就要从堆和栈的关系入手讲所有权啦。
作者回复: 谢谢夸奖!希望能够帮到。
作者回复: 首先 deref 的用途不是模拟继承。它最根源的需求是为只能指针提供对内部数据的方便的访问:https://doc.rust-lang.org/std/ops/trait.Deref.html。当你需要你的数据结构在使用时用起来可以感觉和内部的数据类似时,可以使用 Deref trait。比如我可以构建一个 Memmap 结构,把文件 mmap 到内存中,但如果我提供一系列额外的接口,会让使用者很不方便,但我把它 deref 到 &[u8],让用户操作起来像一个内存 buffer,用起来就很舒服。当然,滥用它会给使用者带来一些困惑,所以标准文档建议只有在构建智能指针时使用。 我的建议: 1. 简单的数据结构的封装。像我 DataSet 的使用那样。 2. 智能指针。比如你要实现一个 SmartString,在 < 24 字节时使用栈上的内存,更大的字符串才使用 String。这样的场合,如果不用 Deref,使用起来会非常不友好。