构建大型 Rust 项目: pacakges, crates 和 modules
好的判断力是经验的结果,经验是错误判断的结果。
Mark Twain.
IC 公司的 Rust 代码库从 2019 年 6 月的空存储库增长到 2022 年初的近 350,000 行代码。这种快速增长告诉我,对于相对较小的项目来说,运作良好的决策可能会随着时间的推移开始拖累项目。本文评估了 Rust 代码组织选项,并提出了有效使用它们的方法。
标签
好的判断力是经验的结果,经验是错误判断的结果。
Mark Twain.
IC 公司的 Rust 代码库从 2019 年 6 月的空存储库增长到 2022 年初的近 350,000 行代码。这种快速增长告诉我,对于相对较小的项目来说,运作良好的决策可能会随着时间的推移开始拖累项目。本文评估了 Rust 代码组织选项,并提出了有效使用它们的方法。
我们严重依赖大型Go monorepo 进行后端开发,它提供了代码可重用性和可发现性等优势。然而,随着我们的不断发展,管理大型 monorepo 带来了一系列独特的挑战。
例如,使用 Go 命令(如 go get
和) go list
在获取驻留在大型多模块存储库中的 Go 模块时可能会非常慢。这种缓慢状态会影响开发人员的工作效率,给我们的持续集成 (CI) 系统带来负担,并使我们的版本控制系统主机 (VCS) GitLab 不堪重负。
在这篇博文中,我们将了解 Go模块代理 Athens 如何帮助改善我们使用大型 Go monorepo 工程师的开发人员体验。
Elixir 有一个 for
的特殊形式,称为“列表推导式 (list comprehension)”,大多数人对它的全部能力并不完全理解。它可以做的不仅仅是一个简单的 for
循环,实际上它有点像 Enum 和 Stream 模块聚在一起并且有一个宏。我想让你知道这件事!
如果您准备发布你的第一个版本 Rust 项目,您可能希望将一些包含预构建二进制文件(适用于 macOS、Linux 和 Windows)的资产上传到您的 GitHub 发布页面。这是使您的项目广泛可用的最早步骤之一,并且在设置其他安装方法(如Homebrew)时将有很大帮助。但是,弄清楚交叉编译并不容易,尤其是在通过 GitHub Actions 进行交叉编译时。
一开始,Go和Rust之间就有明显的区别。Go更专注于构建Web API和小型服务,这些服务可以无限扩展,特别是在 Goroutines 的强大功能下。Rust也可以实现后者,但从开发人员体验的角度来看,事情要困难得多。
Rust可以很好地处理大量数据和其他CPU密集型操作,例如执行算法。这是Rust对Go最大的优势;要求高性能的项目通常更适合Rust。
在本教程中,我们将比较Go和Rust,评估每种编程语言的性能、并发性、内存管理和整体开发人员体验。我们还将介绍这些元素的概述,以帮助您为您的项目选择正确的语言。
Deno KV是最早内置在运行时中的数据库之一。这意味着您无需执行任何额外的步骤,例如预配数据库或复制和粘贴 API 密钥即可构建有状态应用程序。要打开与数据存储的连接,只需编写:
const kv = await Deno.openKv();
除了作为具有简单和灵活 API 的键值存储之外,它还是一个具有原子事务、一致性控制和极高性能的适用于生产环境的数据库。
通过这个介绍性教程,您将学习如何使用 Deno KV 构建用 Oak 编写的简单有状态 CRUD API 服务。我们将介绍:
在我们开始之前,Deno KV 目前在 Deno 1.33 及更高版本中通过 --unstable
标志使用。如果您有兴趣在Deno Deploy上使用Deno KV,请加入候补名单,因为它仍处于封闭测试阶段。
请按照下面操作或查看源代码。
软件开发是IT领域中最有价值的职业之一。
Java是最受欢迎的编程语言之一。
如果 Java 平台呼唤您,并且您想沉浸在 Spring、Jakarta EE、Maven、Jenkins 和 Android 开发的世界中,这里是开发人员可以遵循的 2023 年 Java 路线图。
JavaScript,无可争议的Web开发之王,正在被破坏——不是被竞争对手的语言或革命性的新技术所破坏,而是被它自己过去的包袱所破坏。这个阴险的破坏者就是CommonJS,一个我们已经容忍了太久的古董模块系统。
Rust 编译时间经常被视为需要改进的领域,包括在年度社区调查中。缓慢的编译时间可能会成为其被采用的障碍,因此改进编译时间有助于扩大 Rust 语言的影响。这也是我们的目标之一:提高更多内存安全软件的潜力,特别是在互联网基础设施的最关键部分(例如网络、TLS、DNS、操作系统内核等)。
在这篇博客中,我们将探讨如何将 Golang 接口转换为字符串。接口是 Go 中的一项强大功能,允许灵活且可重用的代码。尽管此转换没有内置函数,但我们将引导您了解各种技术并提供代码示例。最后,您将能够自信地将 Golang 接口转换为字符串。让我们开始吧!
我们如何有效地将 Golang 字节 (Bytes) 转换为字符串,反之亦然?这个问题经常出现在编程世界中,因为操作和转换数据类型是一项常见的任务。在这篇博客中,我们将探讨在 Golang 中转换这些数据类型的过程,提供简洁的解释和实用的代码示例。最后,您将拥有轻松处理这些转换并提高编程技能的知识。所以,让我们深入了解 Golang 中的字节操作世界!
你有没有想过如何让你的自定义 Python 对象更具可读性和易于理解?好吧,这就是 Python __str__
和 __repr__
方法出现的地方。这就像一种神奇的方法,它使我们能够决定将对象转换为字符串时应该如何显示。在这篇博客中,我们将深入探讨 __str__
和 __repr__
方法的迷人世界,并探索它们如何提升您的编程技能
在 Go 语言中,字符串表示字符序列,其中每个字符使用 UTF-8 进行编码,并且可以跨越一个或多个字节。要在 Golang 中拆分字符串,我们可以方便地使用字符串包提供的内置函数。在使用这些功能之前,导入字符串包非常重要。在这篇博客中,我们将通过一个说明性的例子来探索 Golang 拆分字符串。我们将深入探讨 Go 语言中提供的各种有助于字符串拆分的函数,例如 SplitAfter
、SplitAfterN
等。我们将研究字符串拆分有用的不同情况和场景。
您是否厌倦了在 Google 上搜索您的名字却找不到您的在线形象的痕迹?您想在搜索结果的汪洋大海中脱颖而出,让人们更容易找到您吗?好吧,你来对地方了!在这篇博客中,我们将探讨如何将自己添加到 Google 搜索结果中,并通过说“嘿 Google,将我添加到搜索”或搜索“将我添加到 Google 上的搜索”来提高您的在线知名度。不要再躲在阴影里了——让我们潜入其中吧!
您是否厌倦了编写冗长、重复的代码来操作 Python 中的列表?告别那些挣扎吧!Python 列表推导式是为了挽救这一天。这是一种强大的技术,可让您优雅而简单地转换和过滤列表。在这篇博客中,我们将一起探索列表推导式的世界,从基础知识到高级技术。让我们深入了解 Python 列表推导式的魔力。哦,不要错过最后关于列表推导式的有趣事实!
在本博客中,我们将学习如何使用 C++创建贪吃蛇游戏。贪吃蛇游戏是一款经典且流行的游戏,玩家在其中控制一条在屏幕上移动的蛇,试图吃食物并避免与墙壁或自己的尾巴相撞。我们将逐步完成该过程,并解释代码中使用的必要函数和参数。
您是否厌倦了学习冗长的文章或书籍,但需要分析或享受它们?谷歌为你提供了一个答案!Google 云文本转语音功能可将文本转换为听起来自然的语音。在 Google 云语音的帮助下,您可以收听自己喜欢的文章,书籍或网站内容材料,而不会给眼睛带来任何压力。在这篇博客中,让我们详细了解 Google Cloud 文字转语音及其 API。
Python 网页爬虫是一种用于自动从网站中提取数据的技术。使用 Python 网页爬虫,您可以从网站中提取文本、图像、视频和其他类型的内容等信息。对于想要收集数据以用于分析、研究或营销目的的企业和个人来说,这是一个强大的工具。在这篇博文中,我们将探讨 Python 网页爬虫、它的好处以及如何有效地使用它。
作为 Go 开发人员,您可能已经使用了两个常用的命令,go run
和 go build
,它们用于构建、测试和运行您的 Go 应用程序。这两个命令都有特定的用途并执行不同的功能。
在这篇博文中,我们将更深入地探讨这两个命令之间的差异,并帮助您为您的项目选择合适的命令。
您是否厌倦了编写无法生成所需结果的代码?您是否正在寻找一种提高代码自然语言处理能力的方法?看看 OpenAI API 就是您的最佳选择!在这篇博客中,我们将讨论如何使用 Python 中的 OpenAI API 来增强代码的语言理解能力。