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 部署实战| 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学习笔记 | 第八章节 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 目录(里面应该有...
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)初始栈很小(约...








