引言测试驱动开发 (Test-Driven Development,TDD) 是一种软件开发方法论,强调在编写实际代码之前先编写测试。这种方法有助于确保代码的质量,同时也促进了更好的设计和文档化。1. TDD 的基本原理TDD 包括以下三个关键步骤:编写测试:首先编写一个失败的测试案例。编写代码:编写最小的代码使测试通过。重构代码:在不破坏现有测试的情况下优 …
技术教程
借助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 语言的最新主要版本,计划于 2025 年 8 月正式发布。作为 Go 语言的重要更新,Go 1.25 延续了该语言 "稳中求进" 的发展策略,聚焦于性能优化、安全性提升和开发者体验改进。这一版本代表了 Go 语言的又一次重要进步,特别是在云原生环境和容器化部署场景中表现突出。Go 1 …
引言覆盖率报告是一种衡量测试质量的方式,它展示了代码中哪些部分已经被测试覆盖,哪些部分还没有。1. 生成覆盖率报告生成覆盖率数据:使用 -coverprofile 选项来生成覆盖率数据文件。示例:go test .... -coverprofile=coverage.out分析覆盖率数据:使用 go tool cover 命令来分析覆盖率数据。示例:go t …
在 go-zero 框架内,如在 rpc 的应用 service 中,其内部已经预置了 redis 的应用,所以我们只需要在配置中加入相关字段即可,另外,在 svcContext 声明 redis client 后即可在具体的业务逻辑处理中应用。但这里有个问题,如我用的是 go-zero 1.5.0 版本,从源码分析来看,redis 的连接并没用到 连接池, …
版本信息仓颉版本 0.53.18Golang版本 1.22.8Java版本 corretto-1.8.0_452源码仓颉package cangjie_testimport std.time.MonoTimeimport std.sync.SyncCounterimport std.fs.*import std.io.BufferedOutputStream …
前言在 POSIX 系统中,进程间通信是一个很有意思的话题。POSIX信号量进程是3种 IPC(Inter-Process Communication) 机制之一,3种 IPC 机制源于 POSIX.1 的实时扩展。Single UNIX Specification 将3种机制(消息队列,信号量和共享存储)置于可选部分中。在 SUSv4 之前,POSIX 信 …
"每次传输大文件都让微服务集群陷入瘫痪?内存溢出警告频发?网络带宽被瞬间榨干?" 这些痛点正在扼杀你的分布式系统性能! 为什么传统方案会杀死你的微服务?当微服务需要传输高清视频、大型数据集或批量图片时,传统方案通常面临三大致命伤:内存黑洞:将整个文件加载到内存导致OOM崩溃带宽杀手:未经压缩的原始数据传输拖慢整个集群脆弱链路:网络波动导致重传 …
什么是SSTISSTI:开局一张图,姿势全靠ySSTI,即服务器端模板注入(Server-Side Template Injection)常见的注入有:SQL 注入,XSS 注入,XPATH 注入,XML 注入,代码注入,命令注入等等。sql注入已经出世很多年了,对于sql注入的概念和原理很多人应该是相当清楚了,SSTI也是注入类的漏洞,其成因其实是可以类比 …
本章关键点总结 & 说明:本章节主要关注 以上思维导图即可。inotify机制类似 PC端的hotplug热插拔机制(Hotplug机制案例说明:内核发现键盘接入拔出->启动hotplug进程->消息传入输入系统),但这种机制过于繁琐,因此Android并不使用这种机制,而是在输入系统中使用inotify检测目录devinput下的文件变化。接下 …
