用四个2创造奇迹:一个数学谜题的优雅解法
一个看似简单的数学谜题:仅用四个数字2和任何数学运算,生成任何自然数。从小学算术到大学高等数学,都能参与其中。最初看似简单的挑战,随着引入指数、阶乘等,难度陡增。最终,物理学家狄拉克利用嵌套平方根和对数,找到了一个通解,优雅地解决了这个世纪难题,即使只使用四个2。
阅读更多
一个看似简单的数学谜题:仅用四个数字2和任何数学运算,生成任何自然数。从小学算术到大学高等数学,都能参与其中。最初看似简单的挑战,随着引入指数、阶乘等,难度陡增。最终,物理学家狄拉克利用嵌套平方根和对数,找到了一个通解,优雅地解决了这个世纪难题,即使只使用四个2。
阅读更多
本文深入探讨了 Python 中流行的 JIT 装饰器模式,特别是 JAX 和 Triton 库中的应用。作者通过一个简化的示例,从零开始实现了三种 JIT 装饰器:基于 AST 的、基于字节码的和基于追踪的。基于 AST 的方法直接处理抽象语法树;基于字节码的方法利用 Python 的字节码解释器;基于追踪的方法则通过运行时追踪函数执行来构建表达式 IR。文章详细比较了这三种方法的优缺点,并以 JAX 和 Numba 为例,阐述了它们在实际应用中的策略。
阅读更多
本文是关于Raft分布式一致性算法的系列文章的第一篇,介绍了Raft算法的基本概念和架构。Raft算法用于解决在多个服务器上复制确定性状态机的问题,确保即使部分服务器崩溃,服务也能保持可用性。文章解释了Raft的核心组件,包括状态机、日志、一致性模块,以及领导者和跟随者角色,并阐述了客户端与Raft集群的交互方式。此外,文章还讨论了Raft的容错能力和CAP定理,以及选择Go语言作为实现语言的原因。后续文章将深入探讨Raft算法的实现细节。
阅读更多
本文探讨了如何在 Go 应用程序中利用机器学习模型,特别是大型语言模型(LLM)。文章首先介绍了使用现成的互联网 LLM 服务(如 ChatGPT 和 Gemini)以及本地运行的开源模型(如 Llama 和 Mistral)的简便方法,并推荐使用 Ollama 或 Llamafile 等工具简化本地模型部署和 API 调用。接着,文章深入讲解了如何使用 Python 作为辅助程序,通过自定义模型实现更高级的定制化。文章以 Gemma 和 JAX 为例,演示了如何构建一个 Python 服务器,通过 REST API 为 Go 应用程序提供本地 LLM 推理服务。此外,文章还展示了如何使用 TensorFlow 和 Keras 训练一个简单的图像分类模型,并通过 Unix 域套接字实现 Go 客户端与 Python 服务器之间的低延迟通信。
阅读更多
文章介绍了如何在 Linux 系统上使用 Go 语言构建静态链接的二进制文件。作者首先解释了 Go 语言默认情况下并不总是生成静态链接的二进制文件,特别是在使用 cgo 的情况下,需要额外的设置才能实现。文章详细介绍了如何使用 musl libc 和 Zig 工具链来构建静态链接的 Go 二进制文件,并提供了一些示例代码来说明这些方法。
阅读更多
本文介绍了泰勒级数和麦克劳林级数,它们是用于逼近函数的多项式。麦克劳林级数是泰勒级数的一种特殊形式,用于在0附近逼近函数。文章首先通过逼近余弦函数的例子直观地解释了麦克劳林级数的工作原理,然后推导了麦克劳林级数的公式。接着,文章介绍了泰勒级数,它可以用于在任意点附近逼近函数。文章以逼近自然对数函数为例说明了泰勒级数的应用。最后,文章讨论了幂级数的收敛性,并使用比值检验来确定麦克劳林级数和泰勒级数的收敛区间。
阅读更多
本文介绍了如何使用 Go 程序读取谷歌表格数据。文章提供了两种方法:使用服务账户和 OAuth 2.0。使用服务账户时,需要创建服务账户并下载私钥,然后在程序中使用私钥进行身份验证。使用 OAuth 2.0 时,需要在 GCP 控制台中设置 OAuth 2.0 客户端 ID,并在程序中使用客户端 ID 和密钥进行身份验证。文章还提供了一个完整的示例程序,演示了如何使用这两种方法读取谷歌表格数据。
阅读更多
该网站提供了有关在Go中进行快速XML流式处理的信息,重点介绍了使用高速和轻量级的streadfast XML解析器。它涵盖了StreamFast的安装、使用和优点,并讨论了基于事件的流式处理模型。
阅读更多