GO学习笔记 | 在windows下安装wrk并压测
在windows下安装wrk并压测一、环境与背景 宿主机:Windows 11(版本 10.0.26200) 子系统:WSL 2 + Ubuntu(通过 wsl --install -d Ubuntu 安装) 工具:wrk(HTTP 压测工具) 二、安装 WSL 2 与 Ubuntu1. 检查 WSL 是否已安装12# 在 Windows CMD / PowerShell 中执行wsl -l -v 若提示wsl不是命令,需先启用功能;若显示docker-desktop等,说明已装好。 2. 安装 Ubuntu 发行版1wsl --install -d Ubuntu 耗时:约 3~10 分钟(视网速而定,约 1GB 镜像)。 初始化:安装完成后自动启动,按要求创建普通用户(不要填 root,如 darling)并设置密码。 3. 进入 Ubuntu 子系统1wsl -d Ubuntu 可能让你输入用户名密码啥的,你就输吧,一直往下走就行 此时提示符变为 用户名@计算机名:~$,即已进入 Linux 环境。 三、在 Ubuntu 中安装 wrk1....
GO学习笔记 | golang数据源访问k8s内部数据库连接时产生的问题
golang数据源访问k8s内部数据库连接时产生的问题背景 集群:Docker Desktop 内置 K8s(新版内部使用 kind),配置的是LoadBalancer,并不是NodePort MySQL Service 在 K8s 内正常 Running,后端写数据正常 问题:GoLand ide数据源连不上 localhost:11309 根因新版 Docker Desktop K8s 改用 kind,LoadBalancer 类型无法分配 External-IP(一直 <pending>),所以 localhost:11309 不可达。旧版可以直连,新版必须走其他方式。 可行方案解决方法:port-forward(推荐) 笔者亲测可行 1kubectl port-forward service/webook-mysql 13309:11309 GoLand 配 localhost:13309 终端保持开启,关闭后连接即断 可用脚本放到后台或开机自启,减少手动操作 NodePort...
GO学习笔记 | 第九章节 JWT、Redis 入门与 K8s 部署实战| K8s 部署 web服务、 MySQL、Redis 与 Ingress
GO学习笔记 | 第九章节 JWT、Redis 入门与 K8s 部署实战| K8s 部署 web服务、MySQL、Redis 与 Ingress代码仓库地址:Darling-123456/go_learning: go学习过程记录 核心内容:kubectl 日志调试、K8s部署web服务、K8s 部署 MySQL、K8s 部署 Redis、Ingress 七层路由、环境变量配置、K8s 面试要点前置知识:K8s Deployment/Service 基本概念、Docker 镜像 一、kubectl 常用调试命令1.1 查看 Pod 日志123456789# 查看指定 Pod 的日志kubectl logs <pod-name># 实时跟踪(follow 模式,有一条输出一条)kubectl logs -f <pod-name># 先列出所有 Podkubectl get podskubectl logs -f webook-deployment-xxx-yyy -f 相当于 tail...
GO学习笔记 | window安装kubectl并配置到环境变量
window安装kubectl并配置到环境变量找了半天发现没啥好教程,感觉这样弄还行,遂发出来 在windows下用管理员运行 1winget install Kubernetes.kubectl 这是目前 Windows 下最快、最省心的方法,它会自动帮你下载文件并配置到系统环境变量(PATH)里,装完就能直接用。 安装完成后输入下面的命令 1kubectl version --client 1234#成功之后的C:\Users\xxx>kubectl version --clientClient Version: v1.34.1Kustomize Version: v5.7.1 如果输出系统无法执行制定程序的话,输入这个命令 1where kubectl 它会给你打印出 Windows 到底是从哪个文件夹里找的 kubectl.exe。 如果是类似 C:\Users\你的用户名\kubectl.exe,那绝对就是那个 2KB 的坏文件。找到它之后,去那个文件夹里,把这个 kubectl.exe 删掉! 然后重新输入,看看是不是输出版本号就行了
GO学习笔记 | 第八章节 JWT、Redis 入门与 K8s 部署实战| JWT 深化
GO学习笔记 | 第八章节 JWT、Redis 入门与 K8s 部署实战| JWT 深化代码仓库地址:Darling-123456/go_learning: go学习过程记录 核心内容:系统保护(限流 + 登录安全增强)前置知识:JWT 登录校验、Gin 中间件、Redis 基础 一、保护登录系统概述 功能做完之后,只要跟浏览器/终端用户打交道,就必须考虑一个问题:怎么保护好你的系统? 分两个方面: 正常用户会不会搞崩你的系统?——按产品设计的正常用法,系统能不能撑住? 如果有人不按套路出牌(攻击者),你的系统能撑住吗? 对中小公司来说,第一条基本不是问题;大公司两条都要考虑。 最明显的漏洞:注册和登录。任何人都可以注册/登录,攻击者用脚本构造高并发请求,就能把系统和数据库一起打崩。注册影响新用户接入,登录影响已有用户——这是非常关键的路径,必须保护好。 保护手段:限流 + 登录辅助信息校验。 二、限流:限制请求数量 2.1...
GO学习笔记 | git使用记录(持续更新)
git使用记录(持续更新)代码仓库地址:Darling-123456/go_learning: go学习过程记录 记录一下使用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...
GO学习笔记 | 第七章节 JWT、Redis 入门与 K8s 部署实战| Session 深入与 JWT 入门
GO学习笔记 | 第七章节 JWT、Redis 入门与 K8s 部署实战| Session 深入与 JWT 入门代码仓库地址:Darling-123456/go_learning: go学习过程记录 核心内容:多实例 Session 共享、面向接口编程实践、Session 刷新机制、JWT 结构原理与登录校验前置知识:Gin Session 中间件、Cookie/Session 机制、分层架构 一、Debug 技巧:分层断点定位1.1 请求经过的完整链路123456浏览器请求 → 日志确认到达 → Middleware 1 → Middleware 2 → Middleware 3 → handler(业务入口) → service(业务逻辑) → repository(存储抽象) → dao(数据库操作) 1.2 定位问题的策略 先看 Gin 日志:确认后端是否收到请求(有请求一定有日志) 在 handler 入口打断点:看是否到达业务逻辑(没到就是中间件拦截了) 逐层打断点:web → service →...
GO学习笔记 | 第五章节 用户基本功能与 Gin|GORM 入门| 跨域、中间件与 GORM 入门
GO学习笔记 | 第五章节 用户基本功能与 Gin|GORM 入门| 跨域、中间件与 GORM 入门代码仓库地址:Darling-123456/go_learning: go学习过程记录 核心内容:跨域问题(CORS)、中间件(Middleware)、GORM 增删改查、Docker Compose 启动数据库、项目分层设计前置知识:Gin 路由注册、请求绑定、参数校验 一、跨域问题(CORS) 1.1 什么是跨域? 当你用浏览器打开前端页面,前端向后端发请求时,如果前端和后端的「家」不一样,浏览器就会阻止这次请求——这就是跨域。 怎么判断是不是「同一家」? 浏览器看三个东西: 判定维度 举例:同一家 举例:不是同一家 协议 都是 http:// http:// vs https:// 域名 都是 localhost qq.com vs wechat.com 端口 都是 :3000 :3000 vs...
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 目录(里面应该有...








