🌓

新手小白也能会!Kratos 框架单元测试从入门到上手

作为编程新手,你是不是也有这样的困扰:想验证一个接口功能,总要先把整个项目跑起来,再用 Postman 一遍遍地调试验证?不仅耗时,还得依赖项目完整运行。今天就以 Kratos 框架为例,手把手教你写单元测试——不用启动整个项目,也能精准验证功能逻辑,从小白到「单元测试大佬」(假的🤡)~ 一、先搞懂:单元测试到底解决什么问题?单元测试的核心是测试项目中某个...

阅读全文

实习复盘:遇到问题的分类与总结

下面是我近3个月遇到的问题和解决,根据我的实习日报整理来,按技术工具类、框架开发类、数据库操作类、项目协作类、业务逻辑类五大维度进行分类,并提炼对应的思考与解决方案,形成可复用的经验沉淀。分享给大家~ 一、 技术工具类问题1. Go 语言基础与工具链 遇到的问题 思考与解决方案 go path/go root/go modul...

阅读全文

像做蛋糕一样写Makefile:后端自动化工具入门

作为后端开发者,你是不是每天都在重复敲这些命令:go build 编译代码、go test 跑单元测试、手动清理编译产物…… 不仅麻烦,还容易输错参数? 今天就给大家安利一个解放双手的神器 ——make + Makefile,用它来自动化项目流程,从此告别重复命令,效率直接翻倍! 一、先搞懂:make 到底是什么?你可以把 make 想象成一个自动化执行任务...

阅读全文

Gorm Preload 核心用法与避坑指南

Gorm 的 Preload 是多表关联查询的核心功能,能高效解决 N+1 查询问题,但配置 foreignKey 和 references 时容易踩坑。本文精简梳理其核心原理、配置规则与避坑要点,帮助快速掌握用法。 一、Preload 核心价值与原理1. 核心价值 解决 N+1 问题:批量查询+内存拼接,仅需 2 次数据库请求,提升性能; 简化逻辑:无...

阅读全文

新手也能懂的分层设计:为什么项目里要先定义接口再实现

作为刚接触企业级项目的 Go 新手,我最近发现一个很有意思的现象:同事写代码时,总爱先在 Proto 里定义一堆接口,再用结构体去实现具体逻辑。调用的时候也不直接用结构体对象,而是通过接口方法调用 —— 刚开始看代码时满脑子疑惑:这不是多此一举吗?直接写实现不好吗?为啥要绕这么一圈? 直到后来遇到一个实际需求,再加上和 GPT 梳理思路,我才恍然大悟:原...

阅读全文

接口设计场景下数据层的最佳实践

设计数据库的小tips1、数据库表字段不建议设置值时允许为null。 NULL 的比较特性:任何与 NULL 的比较(=, !=, <, >)结果都不是 TRUE 或 FALSE,而是 UNKNOWN。这使得 WHERE 子句的行为变得难以预测。 函数与运算的行为不确定:大多数聚合函数(如 SUM, AVG, COUNT)会忽略 NULL 值...

阅读全文

万米跑后的流水账

今天参加公司的万米跑,很开心拿到了这次比赛的女子第一名,这份成就感永远铭记,虽然成绩并不是很优秀(没有突破自己的个人最好成绩),但是这个过程是让人时刻兴奋的,关键是,在跑步的过程中认识了跟跑的高中生,试着影响他去了解学习ai和计算机。在这个过程中,我反复强调兴趣和做热爱的事情,实际上也是在说给自己,做热爱的喜欢的事情,然后不顾一切后果~ 而现在,我认为我在...

阅读全文

Kafka的理解?

Kafka 本质上是一个消息队列中间件,经常在高并发的场景下我们会见到它,那顾名思义它就是面向于高并发的场景。下面我们来简单了解一下它吧~ kafka有几个关键的概念既然是消息队列,那么一定包含生产者和消费者: 每个生产者生产的消息都会属于一个topic,同一个topic的消息们会按照策略被分到不同的分区(partion)中,为了高可用,每个topic的多个...

阅读全文

GMP模型的理解

GMP 是 Go 语言特有的协程调度模型: 其中 G 代表 Goroutine(协程), M 代表 Machine(工作线程), P 代表 Processor(逻辑处理器), 其中G、P 在用户空间,M在内核空间。 Goroutine(协程)本质上是一个go程序的函数,在主函数中用go关键字标注,那么这个函数就会独立于主函数并发并发运行,也就是说它可以不按程...

阅读全文

Git合并冲突解决与操作逻辑(AI版)

基于自己的思考结合AI给我梳理的总结,强烈建议看,真的非常条理性,易读也易懂。 在多人协作的 Git 开发流程中,代码冲突是不可避免的场景。如何优雅地解决冲突并确保本地修改不丢失,需要一套清晰的操作逻辑。以下是对冲突解决思路的梳理与优化: 一、冲突场景的核心矛盾当多人基于同一分支开发时,若远程分支已存在他人提交的新内容,而你的本地修改基于旧版本进行,此时...

阅读全文