XDB's Blog

ASP.NET Core 实现标签图片批量打包下载功能

业务场景 在物流标签管理系统中,我们需要实现一个功能:根据计划编号批量下载标签图片。具体需求如下: 每个计划包含多个箱子 每个箱子需要贴多张标签 标签图片存储在远程服务器,提供URL地址 需要将图片按 计划编号/箱号/标签图片 的目录结构打包成ZIP文件 直接返回文件流给前端下载 技术难点 1. 内存占用问题 如果简单地将所有图片下载到内存,再打包成ZIP,...

在 Ocelot 网关中实现可重复读取的请求 Body

在使用 Ocelot 作为 API 网关时,我们经常需要在网关层读取请求体(Body)做一些事情,比如: 记录请求日志 验签(Signature 验证) 数据解密或敏感字段过滤 但默认情况下,一旦网关中读取了 HttpRequest.Body,这个流就被“消耗”掉了,下游服务将无法再读取到请求体。 本文将介绍如何在 Ocelot 中开启“可重复读取的请求 Body”,让网...

深入理解 C# 底层机制:值类型、字符串驻留、虚调用、委托、锁、异步与 GC

🧩 一、值类型可以放在堆、栈或寄存器上吗? ✅ 答案 可以。值类型 不仅能放在栈上,在某些情况下也会被放在 堆 或 寄存器 中。 💡 原理分析 局部变量的值类型(例如 int a = 10;)通常分配在 栈上。 引用类型的字段中的值类型成员(例如 class Person { public int Age; })存放在 堆上,因为整个对象都在堆中。 当执行 装箱(Box...

一键推送 Docker Hub 镜像到阿里云镜像仓库(含完整脚本)

🚀 一键推送 Docker Hub 镜像到阿里云镜像仓库(含完整脚本) 在国内使用 Docker Hub 时,经常会遇到 503 Service Unavailable 或 拉取速度极慢 的问题。 为了解决这个问题,我们可以将镜像从 Docker Hub 同步到 阿里云镜像仓库(ACR),以后就能稳定高速地从阿里云拉取。 本文将介绍如何将镜像(例如 xiebinn/dotnet:8.0-...

使用 `partial class` 拆分大型 Service 的最佳实践

在实际项目中,随着业务不断扩展,一个 Service 很容易变得越来越庞大,甚至上万行代码。比如我这里的 TransportPlanService,已经有 1w+ 行代码,维护成本极高。 为了让代码更清晰、易于维护,可以使用 C# 的 partial class 特性,将类的实现按业务场景拆分到不同文件。本文总结了一套实用的拆分方法与命名规范。 1. 基础思路 主文件:放通用...

高并发支付系统的账户冻结与异步处理优化

在高并发支付场景中,单用户多笔支付容易成为系统瓶颈,尤其是在账户余额调整和账务记录写入时。本文结合实践经验和支付宝、微信支付的设计思路,分享一种 “冻结金额 + 异步队列” 的优化方案,并介绍数据库设计和异常处理策略。 1. 问题背景 传统支付流程: 用户发起支付请求; 系统锁定用户账户(分布式锁); 修改账户余额; 写入账务流水; 释放锁。 高并发情况下...

Linux 下使用 `rm` 命令安全删除并保留指定文件/文件夹

在日常运维或开发过程中,我们经常会遇到这样的需求: 想要清空某个目录下的所有内容,但又需要保留部分文件或文件夹。 如果直接使用 rm -rf ./*,会把当前目录下所有内容全部删除,非常危险。 本文将介绍几种安全的写法,并提供一个通用脚本,方便日常使用。 1. 删除时保留单个文件 比如,我们要删除当前目录下所有内容,但保留 vps3WqbS4P.txt 这个文件,可以这样写: fi...