博客文章
-
如何给 commit sign 一下
2023-11-16
最近在参加开源项目的时候,其中 Approver 要求我去给我的 commit sign 一下,也就是给对应的 commit 加上一个签名,这种签名有两种方式 Signed-off-by(您提供的这种):是一文本记录,用于表明责任和许可同意。它很容易被任何人复制和添加。 - GPG 签名(git c...
-
Alembic 数据库迁移工具
2023-11-15
Alembic 是一个 Python 环境中的数据库迁移工具,类似于 Go 语言中 GORM 的数据库迁移功能。它是 SQLAlchemy 的迁移工具扩展,用于管理数据库架构变更的版本控制。 在 Alembic 中最简单的命令就是初始化项目: alembic init migrations
-
Python 依赖问题
2023-11-15
在 Python 中,没有像 Go 语言中那样的内置模块依赖管理工具(如 Go Modules)。我们通常使用 uv 或 poetry 来管理项目依赖,这两个工具都基于 Python 的虚拟环境(venv)机制。所谓的 venv,实际上是在项目目录中创建一系列文件夹,用于隔离不同项目的依赖。 当你为...
-
IaC 基础设施即代码
2023-11-15
我用一个盖房子的比喻来给你解释“Infrastructure as Code”。 **传统方式(手动盖房):**
-
Go 代码大全
2023-11-15
Go 语言关于结构体的字段封装是通过字段命名的大小写来完成的, 当我们
-
OTEL Manual Reader 组件
2025-9-20
首先我们需要看下这个接口是如何使用的 1. 创建一个 manual reader 组件, 并传递给 meter provider
-
OTLP 导出器的部分失败问题
2025-9-20
OTLP 是 opentelemetry 中的协议传输标准,在收集到对应的metrics, trace,log 这些数据之后,我们往往会把对应的数据发送到远端,比如对应的 collector 对于整个数据传输的结果其实是存在三种状态的: 1. 失败状态: 比如因为网络问题出现的失败 2. 部分失败:...
-
opentelemetry 中的跨上下文传播
2023-9-20
在 otel 中有一个非常神奇的接口叫做 TextMapPropagator 这个接口用来在分布式追踪系统用于跨进程传播上下文信息的核心组件。 type TextMapPropagator interface { Inject(ctx context.Context, carrier TextMa...
-
消息队列中超时问题
2025-9-22
在Java应用中,我们往往会使用spring-kafka组件简单的设置一下group_id, topic就开始消费消息了,其实这样会埋下巨大的安全隐患,即当消费速度过慢时有可能会触发rebalance, 这批消息被分配到另一个消费者,然后新的消费者还会消费过慢,再次rebalance, 这样一直恶性...
-
PyProc 源码分析 (持续更新中)
2025-9-22
PyProc 的 frame 结构分成了两个部分, 第一个部分是对应的帧头, 第二部是对应的 数据部分, 也就是对应的数据部分,类型下面这样 [header][payload]
-
rabbitmq
2025-9-22
在 Python 中 `%` 左边是字符串的话,右边可以是一个值,表示对应的字符串格式化
-
RabbitMQ 与 Aio-Pika
2025-9-22
整个 rabbitmq 分成了 四个部分 1. producer: 用来生成对应的消息, 将消息发送出去 2. exchange: 用来按照对应的 router 把消息转发到对应的 queue 上面去 3. queue: 负责持久化对应的消息,兔子mq 的消息持久化机制是通过 Erlang 的 分布...
-
Python ORM
2025-9-22
首先一句话解释一下 session 是一个数据库会话,它是一个用对象抽象过程的简单接口,用于与数据库进行交互。
-
APSchduler 介绍
2025-9-22
是的,**在你当前的代码中使用 `AsyncIOScheduler` 时,默认情况下会等到上一个 `self.run()` 执行完毕之后,才会开启下一个 job**。 这正是 APScheduler 的 **interval trigger**(间隔触发器)的默认行为,具体由参数 `coalesce...