技术教程

Go语言零到一:测试驱动开发(go语言自动化测试)

引言测试驱动开发 (Test-Driven Development,TDD) 是一种软件开发方法论,强调在编写实际代码之前先编写测试。这种方法有助于确保代码的质量,同时也促进了更好的设计和文档化。1. TDD 的基本原理TDD 包括以下三个关键步骤:编写测试:首先编写一个失败的测试案例。编写代码:编写最小的代码使测试通过。重构代码:在不破坏现有测试的情况下优 …

借助AI学习开源代码git0.7之三git-init-db

借助AI学习开源代码git0.7之三git-init-dbinit-db.c会编译生成git-init-db命令,该命令主要是初始化对象数据库。init-db.c代码分析init-db.c是Git用于初始化对象数据库(object database)的工具程序,主要功能是创建Git仓库的基础目录结构。以下是核心代码分析:safe_create_dir函数 : …

Go 1.25 新特性全面解析:性能优化、并发改进与标准库增强

一、Go 1.25 概述与发布背景Go 1.25 是 Go 语言的最新主要版本,计划于 2025 年 8 月正式发布。作为 Go 语言的重要更新,Go 1.25 延续了该语言 "稳中求进" 的发展策略,聚焦于性能优化、安全性提升和开发者体验改进。这一版本代表了 Go 语言的又一次重要进步,特别是在云原生环境和容器化部署场景中表现突出。Go 1 …

Go语言零到一:覆盖率报告(go 代码覆盖率)

引言覆盖率报告是一种衡量测试质量的方式,它展示了代码中哪些部分已经被测试覆盖,哪些部分还没有。1. 生成覆盖率报告生成覆盖率数据:使用 -coverprofile 选项来生成覆盖率数据文件。示例:go test .... -coverprofile=coverage.out分析覆盖率数据:使用 go tool cover 命令来分析覆盖率数据。示例:go t …

go-zero 使用 redis 作为 cache 的 2 种姿势

在 go-zero 框架内,如在 rpc 的应用 service 中,其内部已经预置了 redis 的应用,所以我们只需要在配置中加入相关字段即可,另外,在 svcContext 声明 redis client 后即可在具体的业务逻辑处理中应用。但这里有个问题,如我用的是 go-zero 1.5.0 版本,从源码分析来看,redis 的连接并没用到 连接池, …

Go语言实现微服务间大文件流式传输:突破性能瓶颈的实战方案

"每次传输大文件都让微服务集群陷入瘫痪?内存溢出警告频发?网络带宽被瞬间榨干?" 这些痛点正在扼杀你的分布式系统性能! 为什么传统方案会杀死你的微服务?当微服务需要传输高清视频、大型数据集或批量图片时,传统方案通常面临三大致命伤:内存黑洞:将整个文件加载到内存导致OOM崩溃带宽杀手:未经压缩的原始数据传输拖慢整个集群脆弱链路:网络波动导致重传 …

以Twig模板为例浅学一手SSTI(tw模型官网)

什么是SSTISSTI:开局一张图,姿势全靠ySSTI,即服务器端模板注入(Server-Side Template Injection)常见的注入有:SQL 注入,XSS 注入,XPATH 注入,XML 注入,代码注入,命令注入等等。sql注入已经出世很多年了,对于sql注入的概念和原理很多人应该是相当清楚了,SSTI也是注入类的漏洞,其成因其实是可以类比 …

Android Framework 输入子系统(01)核心机制 inotify和epoll

本章关键点总结 & 说明:本章节主要关注 以上思维导图即可。inotify机制类似 PC端的hotplug热插拔机制(Hotplug机制案例说明:内核发现键盘接入拔出->启动hotplug进程->消息传入输入系统),但这种机制过于繁琐,因此Android并不使用这种机制,而是在输入系统中使用inotify检测目录devinput下的文件变化。接下 …