GO学习笔记 | git使用记录(持续更新)
git使用记录(持续更新)记录一下使用git的过程 起初是学习的go课程是21周的,我想把每周学的东西单独做个提交,顺带练练git,就尝试建立分支什么的 week212345git add .git commit -m "week2: 登录注册 + session中间件"git branch week2 # 从当前 commit 创建分支,但你还留在 master 上git push origin mastergit push origin week2 这是master分支,而week2分支和这个一样的 但是我的week2里面本意是只想放项目相关的代码的,所以执行了以下命令 1234git checkout week2 # 切到 week2 分支git rm -r gin/ gorm/ go_exercise/ homework/ leetcode/ # 删掉这些目录git commit -m "week2: 登录+注册功能"git push origin week2
GO学习笔记 | 第六章节 用户基本功能与 Gin|GORM 入门| 分层架构、密码加密与登录校验
GO学习笔记 | 第六章节 用户基本功能与 Gin|GORM 入门| 分层架构、密码加密与登录校验核心内容:项目分层落地(handler-service-repository-dao)、bcrypt 密码加密、Cookie/Session 机制、登录校验中间件、用户注册完整链路前置知识:Gin 路由与中间件、GORM 增删改查、Docker Compose 一、项目分层架构落地 0.改造代码 1.1 为什么要分层?这次要解决的第一个问题是:数据库代码放在哪? 如果所有代码都堆在一个文件里,很快会变成一坨「意大利面条」。分层之后,每一层只干一件事,修改一处不影响其他地方。 1.2 四层架构1234567请求 → handler(处理 HTTP) ↓ service(业务逻辑) ↓ repository(存储抽象) ↓ dao(数据库操作) 逐层说明: 层 职责 类比 handler 接收 HTTP 请求,调用 service,返回 HTTP...
GO学习笔记 | 第五章节 用户基本功能与 Gin|GORM 入门| 跨域、中间件与 GORM 入门
GO学习笔记 | 第五章节 用户基本功能与 Gin|GORM 入门| 跨域、中间件与 GORM 入门核心内容:跨域问题(CORS)、中间件(Middleware)、GORM 增删改查、Docker Compose 启动数据库、项目分层设计前置知识:Gin 路由注册、请求绑定、参数校验 一、跨域问题(CORS) 1.1 什么是跨域? 当你用浏览器打开前端页面,前端向后端发请求时,如果前端和后端的「家」不一样,浏览器就会阻止这次请求——这就是跨域。 怎么判断是不是「同一家」? 浏览器看三个东西: 判定维度 举例:同一家 举例:不是同一家 协议 都是 http:// http:// vs https:// 域名 都是 localhost qq.com vs wechat.com 端口 都是 :3000 :3000 vs :8080 三个只要有一个不同,浏览器就认为是跨域,直接拦住。 为什么浏览器要多管闲事?防止黑客在你的网页里植入恶意脚本,偷偷往别的服务器发请求。 怎么识别跨域错误? 打开浏览器 F12 → Console,看到 CORS 或...
GO学习笔记 | Docker安装
Docker安装安装前必看:系统要求 Windows 10 21H2及以上版本 / Windows 11 所有版本 CPU至少2核4G内存,推荐8G以上内存 必须开启CPU虚拟化(下文会教怎么看) 一、第一步:开启CPU虚拟化(不开启直接报错)Docker依赖虚拟机技术,必须先确认CPU虚拟化已开启,否则安装完也启动不了: 按 Ctrl + Shift + Esc 打开任务管理器 切换到【性能】→【CPU】,看右侧是否显示虚拟化:已启用 ✅ 已启用:直接进入下一步 ❌ 已禁用:重启电脑,开机时按对应快捷键进入BIOS开启VT/虚拟化技术 不同品牌电脑进入BIOS快捷键: 品牌 快捷键 品牌 快捷键 联想(台式/笔记本) F12 / F2 惠普 F10 / Esc 戴尔 F2 华硕/微星 Del / F2 华为/荣耀 F2 其他品牌 开机看屏幕提示,一般是F2/F10/Del 进入BIOS后找到「VT-x」「Virtualization...
GO学习笔记 | 运行gorm快速入门例子时遇到的问题
运行gorm快速入门例子时遇到的问题:# runtime/cgo cc1.exe: sorry, unimplemented: 64-bit mode not compiled in这个报错非常典型,主要是因为 Go 环境是 64 位的,但电脑上配置的 C 语言编译器(GCC/MinGW)是 32 位的。 为什么会报这个错? # runtime/cgo:说明你当前运行的程序用到了 Go 调用 C 语言代码的机制(CGO)。 cc1.exe:这是 GCC 编译器的核心程序。 sorry, unimplemented: 64-bit mode not compiled in:你电脑上的这个 cc1.exe 是被编译成 32 位的。当 64 位的 Go 程序要求它编译 64 位的代码时,它直接报错罢工,说“我没这功能”。 推荐做法(一劳永逸): 去 GitHub 下载 MinGW-w64 的在线安装包,或者直接下载 x86_64 版本的 TDM-GCC(切记一定要选 x86_64 或 64-bit 版本)。 安装完成后,找到 bin 目录(里面应该有...
GO学习笔记 | 刷leetcode中常用的go基础语法点
刷leetcode中常用的go基础语法点 基础声明123456789101112131415// 局部变量x := 0s := []int{1, 2, 3}m := map[int]string{1: "a"}// 空 slice / map(之后用 append 填)s := make([]int, 0) // nil slice 也能 append,但 make 意图更明确s := make([]int, 0, 10) // 预分配容量,知道大概长度时更高效m := make(map[int]string)// 二维 slicedp := make([][]int, n)for i := range dp { dp[i] = make([]int, m)} Slice 操作(每日必用)123456789101112131415161718192021222324// 追加s = append(s, x)// 末尾删除(模拟 pop)s = s[:len(s)-1]//...
GO学习笔记 | GO面试要点笔记(持续更新)
GO面试要点笔记(持续更新)第一周 1.问题回答1. 什么是闭包?闭包有什么缺陷? 什么是闭包:闭包是指一个函数(在 Go 中通常指匿名函数)引用了其外部作用域中的变量。即使该外部函数已经返回,这个匿名函数依然可以访问并修改这些外部变量。 缺陷(注意事项): 内存泄漏:如果闭包长期存活(例如作为全局变量或长期运行的协程),其捕获的外部变量将一直无法被 GC 回收,导致内存占用过高。 共享变量副作用:在循环中使用闭包非常容易出错。例如 for i:=0; i<10; i++ { go func() { println(i) }() } 会打印多个 10,因为所有闭包共享了同一个变量 i。 性能开销:闭包本质上是通过指针访问外部变量,底层涉及逃逸分析,有一定的性能开销。 2. 什么情况下会出现栈溢出? 无限递归:函数直接或间接地无限调用自身,导致调用栈无限堆积。 分配过大的局部变量:在函数内部声明了非常大且不能逃逸到堆上的数组或结构体,导致单个栈帧过大。 Go 特定情况:Go 的协程(Goroutine)初始栈很小(约...
GO学习笔记 | 安装和配置gorm过程中遇到的问题
安装和配置gorm过程中遇到的问题安装12go get -u gorm.io/gormgo get -u gorm.io/driver/sqlite 快速入门泛型 API (>= v1.30.0)12345678910111213141516171819202122232425262728293031323334353637383940package mainimport ( "context" "gorm.io/driver/sqlite" "gorm.io/gorm")type Product struct { gorm.Model Code string Price uint}func main() { db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) if err != nil { ...
GO学习笔记 | 第四讲注册功能相关内容复盘
GO学习笔记 | 第四讲注册功能相关内容复盘1. Engine vs ContextEngine:gin.Default() 返回一个 *gin.Engine,它是整个 HTTP 服务器的抽象。一个 Engine = 一个逻辑服务器,绑定一个端口。可以启动多个 Engine 监听不同端口(比如 :8080 给用户,:8081 给后台管理)。 Context:*gin.Context 代表一次请求。每个 HTTP 请求到达时,Gin 创建一个 Context,把 Request(输入)和 Writer(输出)都包进去,然后传给路由处理函数。请求结束,Context 销毁。 一句话:Engine 是长生命周期(进程级),Context 是短生命周期(一次请求)。 2. 参数路由 vs 通配路由1234567891011// 参数路由:匹配路径中的一段server.GET("/users/:name", handler)// /users/zhangsan → 匹配,ctx.Param("name") =...
GO学习笔记 | CORS 跨域问题笔记
CORS 跨域问题笔记问题描述前端(localhost:3000)调用后端(localhost:8080)接口时,浏览器控制台报错: 1234Access to XMLHttpRequest at 'http://localhost:8080/users/signup' from origin'http://localhost:3000' has been blocked by CORS policy: Response to preflightrequest doesn't pass access control check: No 'Access-Control-Allow-Origin'header is present on the requested resource. Axios 返回 Network Error,请求被浏览器拦截。 原因浏览器同源策略:端口不同即为跨域。POST 请求会先发 OPTIONS 预检,后端未返回 CORS 头导致拦截。 注:Postman...









