Skip to content
Calvin's Blog

摸鱼精选第 36 期

Jun 1, 2024 — Reading

C++20 标准引入了对协程的支持。协程可以用于实现自定义协程类型,需要包括至少一个协程关键字(co_return、co_yield、co_await)并符合协程要求的返回类型。标准库已经提供了一种协程类型 std::generator(C++23),可用于实现惰性计算的元素序列。协程类型的实现需要考虑返回类型、promise 类型和可等待类型。另外,还介绍了异常处理、协作任务、协作任务与异步性以及可等待协程等七种协程类型。 关键段落

本文介绍了在 Swift 中使用 actors 时,如何确保代码在特定线程上执行,以及在异步和同步环境中如何分派线程。同时还介绍了在 Swift 6 中的严格并发检查功能,以及如何预防意外的线程目标。最后强调了了解编译器的行为和预期线程目标的重要性。 关键点

在 jemalloc 中,使用基数树(Radix Tree)来快速查找线性地址对应的元数据,提高内存管理效率。基数树是一种压缩的 Trie 数据结构,通过共享公共前缀来减少存储需求,适用于需要快速查找的场景。jemalloc 的基数树针对内存线性地址做索引,具有高效的查找和插入操作,仅有两层结构,通过槽位定位唯一的线性地址区域。这种简单而高效的数据结构体现了“简单性是真理的标志”的理念,易于维护和操作。

在 Windows 上编写 Swift 代码的开发体验非常出色。Visual Studio Code(以下简称“VS Code”)是在 Windows 上编写 Swift 代码的首选开发环境。官方的 Swift 扩展为 VS Code 提供了丰富的集成功能,包括构建、调试、代码导航、自动补全等。此外,Swift 工具链包括 Swift Package Manager(SPM),CMake 等工具,为开发者提供了更多的控制和支持。同时,开发者可以使用 LLDB 进行调试,也可以利用 Windows 的第一方调试工具进行性能分析和调试。 关键内容

在 SwiftUI 中,对于多行文本字段,可以使用 onSubmit 修饰符来触发当按下回车键提交文本字段并关闭键盘时的操作。另外,还可以创建自定义的视图修饰符来实现多行文本字段的提交功能。 关键段落

这篇文章介绍了如何在 Flutter 应用中使用 Riverpod 包来组织全局状态管理。作者推荐了一个使用 Mixin 类来管理 Provider 的策略,这样可以简化代码并提高可维护性。文章提供了一个清晰的步骤指导,包括如何创建和使用 Mixin,以及如何将 Provider 集成到 Flutter 的 State 管理中。通过示例代码,作者展示了如何通过 Riverpod 的 ProviderMixin 来访问和管理状态,使得整个状态管理过程更加直观和高效。

介绍了所在项目使用的 jemalloc5.3.0 及其内部关键数据结构,包括与其他内存分配器的比较、各种数据结构的细节和相互关系等。

重要亮点