protocolbuffers/protobuf
Protobuf是谷歌打造的通用数据格式,让不同编程语言的程序能互相交换数据
Protocol Buffers(简称Protobuf)是谷歌开发的数据序列化格式,能把程序里的结构化数据转换成可以存储或通过网络传输的紧凑形式。开发者只需在.proto文件里定义一次数据结构,protoc编译器就能自动生成C++、Java、Python等多种语言的对应代码。这个获得71769个star的仓库同时提供了编译器和多种语言的运行时库。
它做什么
- 定义了一套与编程语言、平台无关的数据序列化(把数据转换成可存储或传输的形式)方式
- 只需在.proto文件中定义一次数据结构,protoc编译器就能为C++、Java、Python、C#、Ruby、PHP等语言生成对应代码
- Go、JavaScript、Dart的支持放在各自独立的配套仓库中
- 使用Bazel构建系统的项目可以通过Bzlmod(需Bazel 8以上)或较旧的WORKSPACE方式引入protobuf依赖
- 项目建议锁定在正式发布版本上使用,而不是main分支的最新代码,因为后者可能随时出现不兼容的改动
为什么重要
当不同语言编写的服务器和客户端、或者不同公司的系统之间需要交换数据时,双方必须遵循同一套规则,而Protobuf正是被广泛采用的标准之一。做API、微服务或基于gRPC通信开发的工程师在实际工作中很可能会用到这套格式。
本仓库术语
- 序列化(serialization) · 把程序中的数据转换成可以保存或传输的形式的过程
- protoc · 读取.proto文件并为各编程语言生成对应代码的protobuf编译器
- .proto文件 · 用于定义待交换数据结构(字段、类型等)的protobuf专用配置文件
- Bazel / Bzlmod · 谷歌开发的构建系统及其依赖管理方式
- 运行时(runtime) · 生成的代码实际运行时所依赖的库
仓库简介(英文)
Protocol Buffers - Google's data interchange format
在 GitHub 打开热门仓库
- openai/codexOpenAI的编程智能体现在可以直接在终端里运行了
- cordiverse/cordis一个可以随时插拔功能模块的TypeScript编程框架
- ripienaar/free-for-dev一个仓库汇总了开发者能用的所有免费云服务、API和协作工具
- Wei-Shaw/sub2api让一份Claude、OpenAI、Gemini、Grok订阅可以被多人拼车共用的中转服务器
- multica-ai/andrej-karpathy-skills一份指令文件,防止AI编程助手偷偷瞎猜、乱改代码
- eneskirca/nodeterm把散乱的终端标签页和AI编程代理统一摆到一张可拖拽的画布上
- affaan-m/ECC让AI编程助手养成工程师式工作习惯的工具集
- n8n-io/n8n不用写代码,靠拖拽连接模块就能搭建自动化流程和AI智能体的工具n8n