公司的大佬说之前某大厂为了安全函数的替换耗资10亿美金。可想安全很重要,安全函数很重要,对于我们做系统软件的来说很重要。为什么要替换成安全函数,这里面就涉及到了一种漏洞攻击,缓冲区溢出攻击。缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。理想的情况是:程序会检查数据长度,而且并不允许输入超过缓冲区长度的字符。 …
sprintf头文件
版本信息仓颉版本 0.53.18Golang版本 1.22.8Java版本 corretto-1.8.0_452源码仓颉package cangjie_testimport std.time.MonoTimeimport std.sync.SyncCounterimport std.fs.*main() {let start = MonoTime.now() …
作者:gillyang,腾讯PCG后台开发工程师| 导语 近期,我们接管并重构了十多年前的 Query 理解祖传代码,代码量减少80%,性能、稳定性、可观测性都得到大幅度提升。本文将介绍重构过程中系统实现、DIFF修复、coredump 修复等方面的优化经验。1 背景1.1 接手7 月份组织架构调整后,我们组接手了搜索链路中的 Query 理解基础模块,包括 …
引言单元测试是软件开发的重要组成部分,它帮助开发者验证代码的功能是否按预期工作。测试文件结构命名约定:测试文件名以 _test.go 结尾。测试函数名以 Test 开头。示例,当前测试文件名 mypackage_test.go:package mypackage import "testing"func TestAdd(t *testing. …
许多程序员在编程时都没有遵循一条规则,即操作字符串时,边界检查是必需的。否则,就有可能出现堆栈缓冲区溢出。不管你是一个开发人员,还是测试或研究人员,理解缓冲区溢出的原理都很重要。尽管操作系统和编译器已经提升了安全性,但最好的安全还是自己能够识别并消除这种潜在的编程错误。本文将通过一个编程例子,简要分析堆栈缓冲区溢出的原理和利用。下面是一段对特定目标进行Nma …
引言测试驱动开发 (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 的连接并没用到 连接池, …
