ASP.NET Core 实现标签图片批量打包下载功能
业务场景 在物流标签管理系统中,我们需要实现一个功能:根据计划编号批量下载标签图片。具体需求如下: 每个计划包含多个箱子 每个箱子需要贴多张标签 标签图片存储在远程服务器,提供URL地址 需要将图片按 计划编号/箱号/标签图片 的目录结构打包成ZIP文件 直接返回文件流给前端下载 技术难点 1. 内存占用问题 如果简单地将所有图片下载到内存,再打包成ZIP,...
业务场景 在物流标签管理系统中,我们需要实现一个功能:根据计划编号批量下载标签图片。具体需求如下: 每个计划包含多个箱子 每个箱子需要贴多张标签 标签图片存储在远程服务器,提供URL地址 需要将图片按 计划编号/箱号/标签图片 的目录结构打包成ZIP文件 直接返回文件流给前端下载 技术难点 1. 内存占用问题 如果简单地将所有图片下载到内存,再打包成ZIP,...
在使用 Ocelot 作为 API 网关时,我们经常需要在网关层读取请求体(Body)做一些事情,比如: 记录请求日志 验签(Signature 验证) 数据解密或敏感字段过滤 但默认情况下,一旦网关中读取了 HttpRequest.Body,这个流就被“消耗”掉了,下游服务将无法再读取到请求体。 本文将介绍如何在 Ocelot 中开启“可重复读取的请求 Body”,让网...
🧩 一、值类型可以放在堆、栈或寄存器上吗? ✅ 答案 可以。值类型 不仅能放在栈上,在某些情况下也会被放在 堆 或 寄存器 中。 💡 原理分析 局部变量的值类型(例如 int a = 10;)通常分配在 栈上。 引用类型的字段中的值类型成员(例如 class Person { public int Age; })存放在 堆上,因为整个对象都在堆中。 当执行 装箱(Box...
死锁排查 SHOW ENGINE INNODB STATUS; 定位死锁语句 在更新 warehouse_TransitShipments 表时,执行如下 SQL 出现 InnoDB 死锁: UPDATE warehouse_TransitShipments AS t JOIN ( SELECT ShipmentId, CASE WHE...
🚀 一键推送 Docker Hub 镜像到阿里云镜像仓库(含完整脚本) 在国内使用 Docker Hub 时,经常会遇到 503 Service Unavailable 或 拉取速度极慢 的问题。 为了解决这个问题,我们可以将镜像从 Docker Hub 同步到 阿里云镜像仓库(ACR),以后就能稳定高速地从阿里云拉取。 本文将介绍如何将镜像(例如 xiebinn/dotnet:8.0-...
在实际项目中,随着业务不断扩展,一个 Service 很容易变得越来越庞大,甚至上万行代码。比如我这里的 TransportPlanService,已经有 1w+ 行代码,维护成本极高。 为了让代码更清晰、易于维护,可以使用 C# 的 partial class 特性,将类的实现按业务场景拆分到不同文件。本文总结了一套实用的拆分方法与命名规范。 1. 基础思路 主文件:放通用...
在高并发支付场景中,单用户多笔支付容易成为系统瓶颈,尤其是在账户余额调整和账务记录写入时。本文结合实践经验和支付宝、微信支付的设计思路,分享一种 “冻结金额 + 异步队列” 的优化方案,并介绍数据库设计和异常处理策略。 1. 问题背景 传统支付流程: 用户发起支付请求; 系统锁定用户账户(分布式锁); 修改账户余额; 写入账务流水; 释放锁。 高并发情况下...
在日常使用 Docker Compose 时,很多人会遇到这样的问题: 如何像 Kubernetes 一样运行多个副本? 多个副本之间是否会自动实现负载均衡? 不同版本的 Docker Compose 在这方面有什么区别? 本文将结合实际测试,总结 Docker Compose 的多副本与负载均衡机制。 1. Docker Compose 多副本的实现 在 Com...
在将 .NET 8 WinForms 程序通过 Visual Studio Installer Project (vdproj) 打包成 MSI 时,我遇到了一系列问题,从快捷方式指向 DLL,到 WebView2 无法正常启动。经过多次尝试,最终成功解决。这里记录一下完整过程和关键点,供参考。 1. 正确使用发布版本,而不是主输出 在传统的 .NET Framework 项目中,安...
在日常运维或开发过程中,我们经常会遇到这样的需求: 想要清空某个目录下的所有内容,但又需要保留部分文件或文件夹。 如果直接使用 rm -rf ./*,会把当前目录下所有内容全部删除,非常危险。 本文将介绍几种安全的写法,并提供一个通用脚本,方便日常使用。 1. 删除时保留单个文件 比如,我们要删除当前目录下所有内容,但保留 vps3WqbS4P.txt 这个文件,可以这样写: fi...