自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(256)
  • 资源 (5)
  • 收藏
  • 关注

原创 Pod 重启多场景复盘:OOM、日志阻塞、并发 map 读写导致程序崩溃

近期业务Pod频繁重启,经排查发现三类不同根因:一是内核级OOMKill,容器内存超cgroup限制被强制杀掉;二是虚拟设备死循环导致日志同步写阻塞,协程堆积、内存持续上涨;三是Go程序并发map读写冲突引发panic崩溃。通过dmesg、docker inspect、日志堆栈等多层排查,定位问题本质。后续将推行标准化Checklist,强化异步任务ctx.Copy()使用、日志异步化与降级策略,建立内存增速、协程数等监控告警,实现故障闭环治理。

2026-09-11 17:38:31 142

原创 Docker 多容器日志统一查看

方法(xargsgrep适合快速回顾,一次性获取所有容器的近期 panic 信息。方法(xargsgrep适合实时监控,持续跟踪新产生的 panic。这两种方法都已在生产环境中验证有效,简单高效,无需额外安装工具。如果你还使用 Kubernetes,也可以结合kubectl或stern实现类似效果。希望本文能帮助你在排查容器 panic 时节省时间。如有问题,欢迎留言交流!

2026-08-28 15:50:28 224

原创 多人点餐 WebSocket 实时同步:技术方案选型深度分析

不要因为一个 bug 就换掉整个技术栈。Redis Pub/Sub 是多人点餐实时同步的正确工具,问题是代码写错了,把代码修好就行。本文基于真实生产环境事故复盘编写,所有代码均来自实际项目,已脱敏处理。

2026-08-25 11:07:52 335

原创 WebSocket 连接管理器协程(goroutine)泄漏问题:线上事故复盘与定位分析

摘要:本文记录了一次WebSocket长连接服务在用餐高峰期不可用2小时的事故分析过程。事故初期误判为带宽或单机问题,但常规应急手段(扩容、重启、回滚)均无效。事后通过日志和pprof工具定位到根因:Redis Pub/Sub缓冲打满导致连接断开,同时代码存在竞态问题(锁外写入与持锁关闭channel并发引发panic)。进一步分析发现,panic后的无限制协程重拉机制导致协程泄漏(3天内累计创建1600万协程),最终耗尽资源。解决方案包括修复竞态、优化协程管理、完善监控,并沉淀为开发规范以避免类似问题复发

2026-08-24 15:24:18 356

原创 深入理解ClickHouse存储设计:从列式存储三大困惑到与Kafka的设计同源性

本文深入解析ClickHouse列式存储的核心原理,并与Kafka进行对比,揭示高吞吐数据系统的通用设计范式。主要观点如下: 分段局部连续:列式存储并非整列全局连续,而是在数据片段(Part)内部实现列数据连续存储,通过追加新Part和后台合并解决空间问题。 行号自然对齐:同一Part内各列通过行偏移量自动关联,无需冗余存储主键,配合稀疏索引实现高效查询定位。 列存性能优势:通过列裁剪减少IO、向量化过滤和统计元数据剪枝实现快速查询,不依赖传统联合索引。 与Kafka设计对比:两者都采用分段存储、顺序追加、

2026-08-05 10:18:17 428

原创 从对话到资产:我在AI编程中落地“隐性知识沉淀”的完整实践

本文分享了作者通过AI辅助编程时沉淀设计决策的实践经验。作者发现与AI讨论技术方案时的修改意见往往流失,于是设计了一套"实时废气回收"工作流:在每次方案修改时,自动提取背后的设计规则并结构化存储为Markdown表格。这些规则既指导后续开发(如避免冗余结构、优化查询路径),又能驱动测试用例生成,形成"规则沉淀-代码生成-测试验证"的闭环。该方法显著降低了重复沟通成本,提高了代码一致性,并将隐性知识转化为团队资产。作者建议从半自动开始,注重规则场景化表述,并定期维护规则库。目前仍存在规则粒度控制、文件写入权限

2026-06-04 16:56:03 558 5

原创 Docker部署Kafka持久化遇到的各种问题及解决方案

摘要 在使用 docker-compose 部署 Kafka 时,重启后 Topic 和消息丢失的问题源于 broker.id 随机变化和持久化配置不当。未固定 KAFKA_BROKER_ID 会导致数据目录随机生成,消费者组协调失败。解决方案包括:固定 KAFKA_BROKER_ID,显式指定数据目录路径(KAFKA_LOG_DIRS),持久化 ZooKeeper 数据,并正确配置 KAFKA_ADVERTISED_LISTENERS。最终通过调整 docker-compose.yml 实现数据持久化和稳

2026-04-28 10:08:22 466

原创 Kafka Docker 部署持久化避坑指南:解决重启后 Cluster ID 不匹配问题

Kafka Docker 持久化配置问题解决方案 问题现象 重启 Kafka Docker 容器后,Topic 和消息全部丢失 添加数据卷后 Kafka 无限重启,报错 InconsistentClusterIdException 根因分析 仅持久化 Kafka 数据目录而未持久化 ZooKeeper 数据 ZooKeeper 重启后生成新 Cluster ID,与 Kafka 本地存储的旧 ID 不匹配 解决方案 为 ZooKeeper 添加正确的数据卷挂载: volumes: - ./zookeeper

2026-04-28 09:11:42 720

原创 Sqids ID混淆技术深度测试报告:安全性、可靠性与最佳实践

文章摘要 Sqids是一款开源ID混淆库,能将数字ID转换为短字符串。测试验证了其核心特性:确定性加密(同一输入始终输出相同结果)、大规模数据支持(0-5000万次测试无重复)、配置敏感性(字母表变化导致不同结果)以及特殊字符兼容性。测试表明Sqids在编码一致性(1000万次解码100%正确)、唯一性(Map验证无冲突)和安全性(字母表作为密钥)方面表现优异,特别适合需要短ID且保护隐私的场景,如URL缩短或用户ID隐藏。

2026-04-23 16:31:35 410

原创 飞书多维表格进阶:实现“徒弟填表→自动通知师傅→师傅只填自己的数据”

本文介绍如何利用飞书多维表格实现"徒弟提交记录自动通知师傅补充填写"的业务场景。通过人员字段设置、自动化流程配置和精细化权限控制三个关键步骤,实现:1)徒弟提交后自动触发消息通知;2)师傅仅能看到和编辑与自己相关的记录;3)通过表单视图实现定向数据修改。配置过程包括创建人员类型字段、设置条件触发的工作流、配置行级权限等核心操作,最终形成完整的业务闭环。该方法适用于工单分发、绩效考核等需要定向数据流转的企业场景,无需开发即可快速实现数据隔离和自动化提醒功能。

2026-04-23 16:29:34 1444

原创 高并发营销活动系统:乐观锁在奖励次数限制中的完整工程实践

本文探讨了在高并发会员裂变活动中如何实现精确的奖励计数限制。系统采用三层防护机制:1) Kafka消息幂等防止重复消费;2) Redis分布式锁控制用户事件并发;3) PostgreSQL乐观锁(ON CONFLICT)确保邀请人奖励次数不超限。文章详细分析了业务场景、并发挑战,并给出了包含消息预处理、分布式锁获取、事务处理等环节的完整流程设计。核心逻辑通过独立处理每条奖励规则,确保邀请人和被邀请人的奖励发放互不影响,同时利用幂等键和条件更新精确控制奖励计数。这种分层防护体系有效解决了高并发下的数据一致性问

2026-04-17 13:42:09 614

原创 PostgreSQL 高级并发控制:使用 ON CONFLICT DO NOTHING 实现高并发下的奖励计数限制

摘要本文探讨了高并发营销系统中奖励次数限制的实现方案。针对传统模式在并发场景下易出现数据超限的问题,提出基于PostgreSQL的ON CONFLICT DO NOTHING特性的解决方案。通过Go+GORM实战案例,展示了如何利用数据库唯一约束与原子更新构建可靠的奖励计数系统。文章详细解析了该语法的核心语义,设计了包含联合唯一索引的数据模型,并提供了完整的接口实现和并发测试验证。该方案有效解决了"初始化记录"与"原子递增"的竞态问题,确保奖励计数严格遵循业务规则。

2026-04-17 11:26:31 452

原创 飞书多维表格技巧:用“查找引用”实现明细表自动汇总到汇总表

本文介绍了一种利用飞书多维表格实现明细表自动汇总到汇总表的方法。通过"查找引用"字段和工作流配置,当明细表新增或修改徒弟记录时,汇总表能实时更新师傅的汇总数据。实现步骤包括:1)创建明细表和汇总表;2)配置查找引用字段实现数据关联;3)设置工作流确保新增师傅自动创建汇总记录。该方法具有零代码、实时更新、灵活扩展等优势,适用于各类"一对多"数据汇总场景,有效提升数据管理效率。

2026-04-01 10:27:39 1845

原创 委托模式详解

委托模式是一种将职责转移给其他对象的结构型设计模式。它通过定义委托接口,让委托者持有被委托者的引用,实现功能解耦。示例展示了打印机委托和事件处理两种场景,对比了紧耦合实现的弊端:违反开闭原则、职责混乱、难以测试和扩展。委托模式通过面向接口编程和组合,提高了代码的灵活性和可维护性,支持运行时动态替换行为,是Go语言中实现松耦合设计的有效方式。

2026-03-26 10:56:15 462

原创 零运维基础:Kafka Docker完整部署+全链路问题排查实战指南

本文记录了零运维基础的Go开发人员通过SSH部署Kafka 2.3.0的全过程。主要内容包括: 服务器环境准备:创建目录结构并配置权限 编写JAAS认证配置文件实现外网强制账号密码认证 编写docker-compose.yml实现双端口隔离(内网免密9093/外网认证9092) 部署过程中遇到的4类典型问题及解决方案: docker-compose命令不存在 Go客户端连接报错 最终实现Kafka+Docker部署,并配套Kafdrop可视化面板 全文提供完整部署步骤和问题排查思路,适合开发人员参考实现生产

2026-03-26 10:03:04 467

原创 Kafka Docker 部署避坑指南:监听器配置与客户端连接问题深度解析

Kafka Docker部署中监听器配置是关键,本文通过三个版本逐步优化: 初版问题:端口映射不全导致Kafdrop无法连接,需明确映射9092端口并配置监听地址为0.0.0.0 二版问题:内外监听器分离时,Go客户端连接成功但发送消息失败,因Metadata返回的broker地址(kafka:9093)在宿主机无法解析 终版方案: 使用自定义Docker网络 区分内部(kafka:9092)和外部(localhost:9092)监听器 确保Metadata返回地址与客户端环境匹配 核心结论:Kafka监听

2026-03-17 10:44:29 580

原创 Redis SCAN 命令使用指南(华为云Redis版)

摘要:Redis的SCAN命令是KEYS命令的安全替代方案,支持增量式键遍历。它包含SCAN、SSCAN、HSCAN和ZSCAN四个子命令,分别用于遍历键、集合、哈希和有序集合。SCAN具有非阻塞、游标迭代和灵活过滤等优势,适用于动态Key获取、批量数据处理和键空间巡检等场景。华为云Redis建议控制COUNT值在100-1000之间,避免业务高峰期操作,并注意集群版需要遍历所有分片。与KEYS命令相比,SCAN虽可能重复/遗漏,但性能更好且不阻塞服务,是生产环境推荐方案。

2026-03-13 10:14:45 495

原创 解决华为云编译构建“找不到历史CommitID”的坑:克隆深度是关键

摘要: 华为云CodeArts编译构建服务中,使用历史CommitID构建时提示“找不到版本”的常见原因是浅克隆限制。系统默认只拉取最近几次提交(由“克隆深度”参数控制),导致无法识别更早的CommitID。解决方法为调整代码下载配置中的克隆深度值(建议≤25),或改用Tag构建。合理配置此参数可解决构建失败问题,确保历史版本可追溯。(149字)

2026-03-05 15:23:43 245

原创 代码沼泽里的屈原:一个后端工程师的自白

摘要: 在混乱的代码系统中坚持专业操守,如同屈原行吟泽畔,清醒却孤独。面对技术债务,作者提出优化方案却被忽视,转而采取渐进式修复策略,但仍难抵系统腐化。为此总结出“沼泽生存法则”:防御性编程、测试兜底和量化风险,以最小代价维持系统运行。文章强调“课题分离”——系统问题是公司的责任,而个人应坚守代码质量,不为改变环境,只为保持专业尊严。最后指出,若环境长期消耗热情,或许是时候重新评估匹配度;但坚持整洁代码本身,就是对抗熵增的意义。在技术沼泽中,每个保持清醒的开发者都是当代的“代码屈原”。

2026-03-05 13:35:01 578

原创 弹窗缓存重构技术方案

弹窗配置系统缓存优化方案摘要 针对现有缓存架构的缺陷,提出五项优化决策:1)采用Cache-Aside模式,先更新数据库再删除缓存;2)简化缓存键设计,移除城市字段,将匹配逻辑移至内存处理;3)引入customCache工具包封装缓存操作;4)实施双删策略确保一致性;5)优化对象创建方式避免字段遗漏。优化后预计实现Redis内存减少90%、写操作耗时降低70%、代码重复率减少80%,同时保持99%以上的缓存命中率。方案解决了原设计存在的缓存冗余、城市匹配耦合、写操作风险等问题,显著提升系统性能和可维护性。

2026-03-05 13:21:33 473

原创 面向接口编程与单元测试最佳实践

本文探讨了如何通过面向接口编程提高代码可测试性。以StoreThemeConditionChecker为例,分析了直接依赖数据库模型导致的测试痛点:需要准备真实数据库、测试缓慢且不稳定。解决方案是将储值操作抽象为StoreConditionChecker接口,业务代码依赖接口而非具体实现。生产环境使用真实数据库实现,测试环境则通过Mock实现模拟各种场景。这种解耦方式使单元测试变得快速、稳定且隔离,有效解决了代码与外部依赖强耦合的问题,展示了依赖倒置原则在提升测试效率中的实际应用。

2026-03-04 17:11:30 600

原创 golang:Redis Mock 测试模板

本文提供了一个使用redismock/v8库进行Redis单元测试的Go语言模板。主要内容包括: 依赖引入:使用go-redis/redis和redismock/v8库进行Redis操作模拟 核心结构: mockRedis结构体实现Redis接口 测试函数模板包含测试用例表、mock设置和执行验证 测试流程: 创建Redis mock客户端 设置mock预期行为 执行测试方法 验证结果和mock调用情况 使用说明: 替换占位符适配具体业务 支持多种Redis操作模拟 提供并行测试和错误处理建议 该模板适用于

2026-03-04 16:56:21 273

原创 从结对到范式:SDD驱动下的AI协同编程新实践

本文提出SDD(方案驱动开发)协同编程范式,通过结构化流程解决AI编程中的不可靠性问题。核心方法包括:技术方案先行作为开发契约,渐进式代码生成与校验,测试闭环保障质量,高频提交控制风险。实践表明,这种系统化设计能有效应对AI代码暴走、错误累积等问题,将人机协作从即兴模式升级为可信赖的开发流程。文章还提炼了文档契约化、最小化迭代等落地原则,为团队级AI协同提供了方法论支持。

2026-01-22 14:48:13 1173

原创 AI与人协同:开发领域的转型实践与深度思考

本文分享了AI与开发者协同工作的实践经验与思考。作者通过PostgreSQL批量写入优化、企业微信消息推送系统设计等案例,展示了AI在方案设计、代码生成、测试验证等场景中的价值,总结出"发散-收敛-细化"的协同模式。文章指出LLM本质是概率预测器而非理解者,其成功率随任务复杂度呈指数级下降,因此需要构建"人机协同"新范式:通过确定性优先、减少可能性空间、阶段性交付等原则,用系统设计对抗个体不可靠性。最后提出将AI协同从个体扩展到团队层面,打造工具链、建立规范,并探索A

2026-01-22 13:46:59 782

原创 企业知识库解决方案调研文档(模板)

企业知识库解决方案调研摘要 为构建安全高效的企业SOP知识库,调研对比了四类方案: SaaS方案(如HelpLook):部署快但数据在第三方云端,隔离性低; 二开/私有化方案(如Confluence+AI):数据本地化,需开发支持; 开源方案(如FastGPT):自主可控但技术门槛高; 完全自研:安全性最优但研发成本极高。 核心权衡:数据隔离(安全)与实施成本。建议短期试点B/C类方案验证效果,长期视需求逐步转向自研或开源架构。优先保障机密数据安全,同时平衡开发资源与效率。

2025-12-23 11:15:48 425

原创 基于券类型路由的渐进式重构:函数式选项模式与管道模式的完美结合

本文介绍了电商系统中优惠券订单处理的重构实践。原有CreateCouponOrder函数膨胀至200+行,存在代码臃肿、难以测试和扩展等问题。重构采用函数式选项模式与管道模式相结合的策略,通过按券类型路由实现双逻辑并存:高德券走新管道逻辑,其他券保持原有处理。路由层CreateCouponOrderWithRoute识别券类型并分发请求,同时通过选项函数传递已查询数据避免重复操作。原有函数改造后返回选项函数,支持数据复用。管道模式处理高德券时,通过上下文结构传递状态,各步骤实现独立接口,确保业务连续性和风险

2025-12-17 16:54:39 1110

原创 解耦与提效:券订单系统重构全方案(策略+工厂+管道)

本文针对餐饮O2O系统中订单与券管理耦合度过高的问题,提出了一套系统重构方案。原有系统存在逻辑强耦合、流程混乱、事务一致性难保障和扩展性差四大痛点。通过采用策略模式+管道模式+事务策略的混合架构,实现了业务解耦和流程优化。方案包含清晰的分层设计(API/Service/Domain/Model/Enum层)、核心设计模式组合(策略模式封装券逻辑、管道模式编排流程)以及完整的基础定义实现(订单状态、券类型等枚举和请求响应结构体)。重构后系统显著提升了可维护性和扩展性,为多平台券接入提供了标准化解决方案。

2025-11-27 18:10:22 724

原创 基于GMP模型分而治之思想:实现Slice无锁化并发写操作的实践

本文探讨了Go语言中高并发场景下的Slice无锁化写入方案。通过借鉴GMP调度模型的"分而治之"思想,为每个goroutine预分配独立的数组写入位置,避免了传统加锁方式带来的性能瓶颈。方案具有完全无锁、内存安全、高性能等特点,适用于批量数据获取和并行计算等场景。基准测试显示,相比传统加锁方式,无锁化方案性能提升显著。该技术实现简单却效果显著,是解决并发写操作的优雅方案。

2025-11-19 10:19:21 1139

原创 高效批量数据写入:PostgreSQL COPY 协议实战指南

PostgreSQL COPY协议批量数据写入实战指南 摘要:针对PostgreSQL批量写入大量数据时遇到的参数数量限制问题,本文介绍了使用COPY协议的高效解决方案。COPY协议采用二进制格式直接传输数据,避免了SQL解析开销,可实现百万级数据无分片写入,同时保持事务安全和低内存占用。文章详细讲解了COPY协议原理,并提供了Go语言实现代码和完整测试用例,包括数据验证、事务管理和性能对比。相比传统分批插入,COPY协议在20000条数据测试中展现出显著性能优势,具备更低的内存占用和更少的网络请求次数。

2025-11-19 09:04:35 751

原创 分布式事务:可靠事件队列、TCC和SAGAS事务

本文探讨了分布式系统中解决事务一致性的三种方案:可靠事件队列、TCC和SAGA事务。可靠事件队列通过消息中间件实现最终一致性;TCC采用预留资源的方式保证隔离性,但实现复杂;SAGA更适合外部系统场景,将大事务拆分为可补偿的子事务。特别指出SAGA与事件溯源(ES)存在深刻的内在联系:SAGA的事务步骤可建模为不可变事件,其补偿逻辑与ES的"回溯"机制同构。这种架构融合为复杂分布式事务提供了健壮、透明的解决方案,尤其在涉及外部系统时展现出独特优势。

2025-11-12 16:33:23 980

原创 企业微信消息推送系统设计:基于ES(事件溯源思想)解耦规则与任务架构

本文介绍了一种基于事件溯源(Event Sourcing)思想设计的企业微信消息推送系统架构。系统通过将规则与执行任务解耦,采用"任务只增不改"原则,有效解决了传统方案中状态管理复杂、并发冲突等问题。核心设计包含规则管理器、规则调度器和任务调度器三大组件,通过规则表、任务表和发送日志表实现消息推送全流程管理。系统支持立即发送、定时发送和周期发送三种模式,采用乐观并发控制降低分布式锁复杂度,提升了系统的可靠性和可扩展性。数据库表结构中,任务表承担了"事件存储"角色,完整

2025-11-12 13:59:04 1003

原创 优雅地Mock时间:gomonkey实现time.Now()替换的原理与实践

文章摘要:gomonkey库通过函数地址替换实现在单元测试中对time.Now()的无侵入Mock,解决了时间依赖问题。其核心原理是修改函数机器指令,将标准库函数跳转到自定义mock函数。具体实现包括:构建跳转指令、备份原指令、修改机器码。该方案无需改动业务代码,使测试更加稳定可靠,适用于需要控制时间的测试场景。

2025-11-11 14:37:32 260

原创 架构权衡与实践:基于“约束大于规范”的缓存组件封装

文章摘要:本文介绍了一个基于业务需求封装的Redis缓存组件,重点讨论了延时双删机制的应用场景与实现细节。该机制通过两次删除操作(立即删除+延迟删除)应对主从同步延迟导致的数据一致性问题。组件采用缓存穿透防护(设置特殊占位符)、并发控制(singleflight)、指数退避重试等策略,并支持随机化过期时间避免缓存雪崩。代码示例展示了双删策略、错误处理和缓存操作的核心实现,同时探讨了架构设计中复杂度与可靠性的平衡考量。

2025-10-24 16:56:58 406

原创 从golang从GMP模型到分布式架构:无锁化思想的高并发实践

摘要:本文探讨如何借鉴Go语言GMP模型的无锁化思想应对高并发场景。核心思想是通过数据分片和本地缓存将全局竞争转化为局部操作,如将库存分散到多个数据库实例或应用本地内存。针对分布式环境下的扩缩容和故障恢复问题,提出两种方案:中心调度器模式和基于分布式缓存的共享池模式。最终通过分层设计实现高效与可靠的统一,体现了"分而治之"的并发处理智慧。(149字)

2025-10-24 16:17:00 1154

原创 K8s日志查看与程序更新验证指南

本文探讨了在Kubernetes集群中查看Go程序日志和验证服务更新的问题。针对控制台输出不可见的问题,指出应该使用kubectl logs命令而非直接进入容器shell查看。对于验证服务更新,建议通过检查Pod镜像标签、强制重启Deployment、对比程序版本信息等方式确认。文章提供了具体命令示例和排查思路,帮助开发者解决K8s环境下的日志查看和版本验证问题。

2025-08-20 08:48:44 805

原创 Kubernetes 负载均衡现象解析:为何同一批次请求集中于单个 Pod

在Windows本地Kubernetes集群中,通过Traefik和Kubernetes Service实现负载均衡时,发现循环请求会集中路由到同一Pod,间隔后才切换。这主要是由于Kubernetes Service默认启用会话亲和性和HTTP长连接复用机制:1)同一TCP连接内的请求会被固定到同一Pod;2)Traefik仅转发到Service的NodePort,实际负载均衡由Kubernetes Service完成。解决方案需调整会话亲和性或强制新建连接来实现请求均匀分布。

2025-08-20 08:44:08 734

原创 Kubernetes 常用命令

本文介绍了在Windows环境下使用Kind创建本地Kubernetes集群并集成Traefik进行负载均衡后,如何进入集群容器内部的操作方法。通过kubectl命令获取服务对应Pod名称,使用kubectl exec进入容器控制台进行调试,并提供了常用Kubernetes命令,包括查看集群信息、节点状态、Pod详情和日志等。文章详细说明了如何通过标签筛选Pod、进入容器内部的操作步骤及注意事项,为开发者提供了实用的集群管理和问题排查指南。

2025-08-19 09:42:04 909

原创 在 Windows 上使用 Kind 创建本地 Kubernetes 集群并集成Traefik 进行负载均衡

本文记录了在Windows环境下使用Kind创建本地Kubernetes集群并部署Go服务的完整流程。通过Go1.17环境安装Kind工具,创建集群后,独立运行Traefik作为Ingress控制器。详细说明了构建Go服务镜像、加载到Kind集群、配置Deployment/Service/Ingress等步骤,并解决了Traefik独立运行与集群服务的连接问题。最终通过配置共享网络和动态路由,实现了外部访问(hello.local)的负载均衡,验证了流量分发到多个Pod的功能。

2025-08-19 09:03:30 1312 1

原创 评论父子级关系的高效删除方案:避免递归

本文提出了一种基于路径存储的高效多级评论删除方案。通过在创建评论时记录完整的评论链路路径(如"1,2,3,4"),取代传统递归删除方式。当删除某条评论时,只需使用LIKE条件匹配该路径前缀即可批量标记删除(软删除)目标评论及其所有子评论。该方案显著提升了删除效率,避免了递归查询的性能损耗,同时采用软删除机制保证数据完整性。方案实现包括创建时生成路径、删除时批量更新等核心逻辑,适用于层级较深或数据量大的评论系统场景,兼具性能和可维护性优势。

2025-08-15 08:48:38 404

原创 gorm:全局禁用默认带有deleted_at IS NULL查询条件

GORM默认启用软删除功能,对含deleted_at字段的模型查询会自动添加deleted_at IS NULL条件。本文解释了该机制的原理,并提供了三种解决方案:1)全局取消软删除过滤,通过注册查询钩子强制所有查询返回全部数据;2)单次查询使用Unscoped()方法;3)模型层面移除软删除特性。这些方法可帮助开发者在需要时灵活控制软删除行为。

2025-08-15 08:45:32 577

java环境安装包,jdk

java环境安装包,jdk

2024-03-06

datagridview 标题中添加checkbox

解决方案用VS2017编程。在datagridview的列标题中添加checkbox,实现对整列进行全选,反选功能。

2018-07-25

ASP.NET MVC 5高级编程 第5版(中文版)

ASP.NET MVC5高级编程(第5版.NET开发经典名著)作为Microsoft备受欢迎的MVC技术的最新版本,MVC 5是一个成熟的Web应用程序框架,支持快速的、TDD友好的开发。MVC允许开发人员创建动态的、数据驱动的网站。这样的网站具有复杂的功能,如单页面应用程序、针对移动设备优化、适应性呈现等。本书还包括了MVC 5.1和MVC 5.2中的一些新特性。通过采用分步骤讲解的方法,指导读者如何充分利用MVC。本平台提供的是中文版。 本书的作者加洛韦不是Microsoft的ASP.NET MVC专家,就是ASP.NET MVC领域的智者,所以作为一本实用的教程,不但强化开发人员对概念的认识,也帮助开发人员创建自己的应用程序。 主要内容 解释了ASP.NET MVC框架与其他“每个页面一个文件”的Web框架的区别 介绍了控制器、视图、模型、表单、HTML辅助方法、数据注解和验证、成员资格、授权、安全性和路由 新增了对One ASP.NET项目模板、ASP.NET Identity、Bootstrap和特性路由的介绍 探讨了一些重要主题,如Ajax、NuGet、依赖注入、单元测试和MVC扩展 提供了分步骤指导。

2018-07-03

C#公共通用类

----------Database-------------- 1.DataTable帮助类(DataTableHelper.cs) 2.Access数据库文件操作辅助类(JetAccessUtil.cs) 5.查询条件组合辅助类(SearchCondition.cs) 6.查询信息实体类(SearchInfo.cs) 8.Sql命令操作函数(可用于安装程序的时候数据库脚本执行)(SqlScriptHelper.cs) ----------Device-------------- 声音播放辅助类(AudioHelper.cs) 摄像头操作辅助类,包括开启、关闭、抓图、设置等功能(Camera.cs) 提供用于操作【剪切板】的方法(ClipboardHelper.cs) 获取电脑信息(Computer.cs) 提供用户硬件唯一信息的辅助类(FingerprintHelper.cs) 读取指定盘符的硬盘序列号(HardwareInfoHelper.cs) 提供访问键盘当前状态的属性(KeyboardHelper.cs) 全局键盘钩子。这可以用来在全球范围内捕捉键盘输入。(KeyboardHook.cs) 模拟鼠标点 击(MouseHelper.cs) 全局鼠标钩子。这可以用来在全球范围内捕获鼠标输入。(MouseHook.cs) MP3文件播放操作辅助类(MP3Helper.cs) 关联文件(ExtensionAttachUtil.cs) 注册文件关联的辅助类(FileAssociationsHelper.cs) 打开、保存文件对话框操作辅助类(FileDialogHelper.cs) 常用的文件操作辅助类FileUtil(FileUtil.cs) INI文件操作辅助类(INIFileUtil.cs) 独立存储操作辅助类(IsolatedStorageHelper.cs) 序列号操作辅助类(Serializer.cs) 获取一个对象,它提供用于访问经常引用的目录的属性。(SpecialDirectories.cs) 简单的Word操作对象(WordCombineUtil.cs) 这个类提供了一些实用的方法来转换XML和对象。(XmlConvertor.cs) XML操作类(XmlHelper.cs) ----------Format-------------- 参数验证的通用验证程序。(ArgumentValidation.cs) 这个类提供了实用方法的字节数组和图像之间的转换。(ByteImageConvertor.cs) byte字节数组操作辅助类(BytesTools.cs) 处理数据类型转换,数制转换、编码转换相关的类(ConvertHelper.cs) CRC校验辅助类(CRCUtils.cs) 枚举操作公共类(EnumHelper.cs) 身份证操作辅助类(IDCardHelper.cs) 检测字符编码的类(IdentifyEncoding.cs) RGB颜色操作辅助类(MyColors.cs) 日期操作类(MyDateTime.cs) 转换人民币大小金额辅助类(RMBUtil.cs) 常用的字符串常量(StringConstants.cs) 简要说明TextHelper。(StringUtil.cs) 获取中文字首字拼写,随机发生器,按指定概率随机执行操作(Util.cs) 各种输入格式验证辅助类(ValidateUtil.cs) ----------Network-------------- Cookie操作辅助类(CookieManger.cs) FTP操作辅助类(FTPHelper.cs) HTML操作类(HttpHelper.cs) 网页抓取帮助(HttpWebRequestHelper.cs) Net(NetworkUtil.cs) IE代理设置辅助类(ProxyHelper.cs) ----------Winform-------------- 跨线程的控件安全访问方式(CallCtrlWithThreadSafety.cs) CheckBoxList(CheckBoxListUtil.cs) 窗口管理类(ChildWinManagement.cs) 由马丁·米勒http://msdn.microsoft.com/en-us/library/ms996492.aspx提供一个简单的方法打印工作的一个RichTextBox一个帮手(ExRichTextBoxPrintHelper.cs) 显示,隐藏或关闭动画形式。(FormAnimator.cs) 对窗体进行冻结、解冻操作辅助类(FreezeWindowUtil.cs) 窗体全屏操作辅助类(Ful

2018-09-07

ADB_v1.0.32_tool

附有txt格式的安装办法 包含四个文件,adb.exe AdbWinApi.dll AdbWinUsbApi.dll fastboot.exe

2018-12-10

考勤管理源码

请使用VS2017打开。WinForm端的考勤管理源码。仅供学习参考。

2018-07-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除