Day01 Go 环境与基础

Day01 Go 环境与基础 首先准备环境。(之前为了搞些小工具,多多少少接触一点go,不过几乎可以说为0) 那么最重要的:官网,哪里的文档都不如亲妈的描述 Note go.dev Documentation - The Go Programming Language go.dev/learn 打开网站反正左右都是个download 找个适合的下载吧(感觉这个都能单开一篇来写,这里没写是因为之前已经装过了) 完成之后terminal里可以看到版本号 Note 如果暂时不装环境。官方有一个 A Tour of Go,可以直接在这里学最基础的一些语法 A Tour of Go 这里有个很有意思的事情,可以看到他的那句 打印居然是 Hello,世界,而不是咱们熟知的hello world,我还特意检查了一下是不是我的翻译插件又出bug了 那么grok小助手帮我搜一下吧(最近弄了个小号池) 主要是为了展示 Go对Unicode和UTF-8的完美支持 这里的指南总计需要半个小时左右即可阅读完毕,建议可以先读一遍。同时,我在读了一半的中文版后强烈建议有能力的一定要读英文版,当然,我读起来还是一卡一卡的啦(和今晚的网络质量一样😡) Packages Every Go program is made up of packages. Programs start running in package main. ...

December 19, 2025 · 8 min · 1572 words · Updated: December 20, 2025 · Ray

VScode ssh server 离线下载

Note 微软大战代码的 SSH 工具挺好用,一直用它连接远程服务器进行开发,控制文件或者直接 terminal 运行命令都很方便。 但是当remote server 网络不好以及系统太老就歇菜了,那么如果下载 server 很久都没解决,我觉得应该可以离线下载并上传这个 server 主要参考文章 知乎 前言 要用 remote ssh in vscode,首先使用 vscode 的这一端,比如你的 windows or mac 就需要有 ssh client。25 年了,一般都会自带,如果这个都不知道,应该不会搜到我这篇文章。 其次 安装 remote-ssh 插件,我这里由于现在在用 cursor 就直接用 cursor 做例子截图 方法 1:直接在 vscode 中的 sidebar 中 Extentions 下载 我这里是已经下载的样子 方法2:从网页下载离线插件包 vscode market vscode 应该有 UI 可以点到,但是我这里就用命令行表达一下意思。install from VSIX 然后选择刚刚下载的插件包就可以了 ...

December 19, 2025 · 5 min · 932 words · Ray

浅尝 SOCKS5

Note socks5 是什么,是不是还有 1234,socks5 和 常见的 vless 等一样吗 ?和 vpn 一样吗?怎么用呢?怎么建立呢?假如我有一个服务器 A 在美国,还有一个服务器B 在香港。我要访问的服务不允许香港IP。我应该怎么做呢? 最近做一些小项目遇到的问题,让我云里雾里,本身关于这些的知识就没有系统学过,当实践用到时难受的一比,而 GPT 最近的一次更新后一直根据长期 memory 回答我的问题,污染严重,蠢得如同** 项目概况 项目可以理解为某平台简易注册机、批量注册账号有一个需要注意的就是隐藏你的真实信息,当我固定一个 IP 和固定的 session 信息或 浏览器指纹进行大量账号注册是肯定会出发风控的。 而 playwright 配合 Chromium + 带认证的 SOCKS5 代理是不能很好的兼容,所以引发了一些知识补充过程 本文主要是解决网络问题。 术语解释 SOCKS5 是什么? SOCKS - Wikipedia SOCKS5(Socket Secure 5)是一种网络代理协议,作用就是在你的电脑(客户端)和目标网站/服务之间插入一个“中间人”(代理服务器),负责转发数据。它支持 TCP 和 UDP(游戏、视频、BT 都行),还支持用户名密码认证、IPv6 和域名解析。 它不自带加密(数据明文),所以速度快,但单独裸用不太安全(常和 TLS 等结合)。 SOCKS5 和常见的 VLESS 等一样吗? 不一样,是不同层面的东西: SOCKS5:一般是本地接口(你电脑上 127.0.0.1:1080),浏览器或软件直接连它。 VLESS(或 VMess、Trojan、Hysteria2 等):是远程服务器协议,主要用在 V2Ray/Xray/sing-box/Clash 这类工具里。它轻量、支持加密+伪装,专门用来“翻墙”或抗检测。 典型用法: 你的软件(Clash/sing-box)本地开一个 SOCKS5 端口 → 用 VLESS 协议 加密连海外服务器 → 服务器再直连互联网。 ...

December 16, 2025 · 1 min · 168 words · Updated: December 20, 2026 · Ray

go 怎么学

Note 突发奇想,想做一个镜像站,不想用 Java,觉得 go 可以试试,问问 gpt 速学 go可不可能。让他给我安排 28 天的计划如下。后续开启 go-learn 进行学习 🗓 Go 学习每日任务清单(28 天 × 每天 2 小时) 阶段 1:Go 基础与并发模型(Day 1–7) 🧠 目标:掌握 Go 核心语法 + 并发思想 天数 主题 任务与练习 Day 1 Go 环境与项目结构 - 安装 Go- 运行 go mod init demo- 了解 go run, go build, go fmt, go test- 写出第一个 “Hello, Go!” Day 2 基础语法与函数 - 学习变量声明、常量、函数、多返回值、error- 练习:写一个简单计算器函数- 理解 defer、panic、recover Day 3 Struct 与方法 - 定义一个 User 结构体并实现 Hello() 方法- 使用指针接收者 vs 值接收者- 熟悉 JSON 序列化 (encoding/json) Day 4 Slice / Map / Range / 指针 - 练习创建与遍历 Slice 与 Map- 理解 make 与 new- 写一个词频统计器(word counter) Day 5 并发基础:goroutine + channel - 启动多个 goroutine 打印任务编号- 使用 channel 汇总结果- 写一个并发 worker pool Day 6 同步机制:sync + context - 使用 sync.WaitGroup 控制 goroutine 结束- 写一个带超时的 context 任务- 理解 select 与 channel 超时 Day 7 小项目复盘:并发爬虫 - 实现:并发请求一组 URL,输出状态码与耗时- 使用 goroutine + WaitGroup + channel 汇总结果 阶段 2:Web 服务与数据库实战(Day 8–14) 🧠 目标:掌握 Gin + GORM + JWT + Viper 的使用 天数 主题 任务与练习 Day 8 Gin 入门 - 安装 Gin- 编写基础路由 /ping, /hello/:name- 使用 POST 接收 JSON Day 9 中间件与统一响应 - 编写 Logging Middleware- 返回标准格式:{"code":0,"msg":"ok","data":{}}- 全局异常恢复 Day 10 GORM ORM 基础 - 初始化数据库连接(SQLite 或 PostgreSQL)- 定义 User 模型并自动建表- 实现基础 CRUD Day 11 配置管理:Viper - 使用 viper 读取 .env / config.yaml- 设置多环境配置(dev/prod) Day 12 用户注册 + 登录 + JWT - 安装 github.com/golang-jwt/jwt/v5- 编写 /register /login- JWT 中间件鉴权 Day 13 日志系统 - 使用 zap 替换 fmt.Println- 日志包含 traceID / request path- 按天滚动日志文件 Day 14 阶段项目复盘 项目:UserService- 注册 / 登录 / 获取用户信息- 使用 Gin + GORM + JWT + Zap 组合完成 Demo 阶段 3:多租户架构与上下文传递(Day 15–21) 🧠 目标:理解租户隔离 + 实现租户中间件 天数 主题 任务与练习 Day 15 多租户概念与三种模型 - 理解 DB 级 / Schema 级 / Row 级(tenant_id)隔离差异- 选择你项目的隔离策略(建议 Row 级) Day 16 模型扩展 tenant_id - 修改所有表结构添加 tenant_id 字段- 写 GORM hook:自动注入 tenant_id Day 17 请求上下文传递 - Middleware 读取 Header 中的 X-Tenant-ID- 注入到 context.Context 并传入 GORM Day 18 多数据源支持 - 设计 map[string]*gorm.DB 缓存连接池- 允许按租户动态切换数据源 Day 19 路由分组与租户验证 - 添加租户中间件:验证租户合法性- 限制跨租户访问 Day 20 RBAC 权限控制 - 表设计:tenant, user, role, user_role- 定义角色枚举(ADMIN / USER)- 编写权限检查中间件 Day 21 阶段项目复盘 项目:TenantHub- 多租户用户系统- Header 传递租户- 每租户独立用户空间 阶段 4:工程化、测试与部署(Day 22–28) 🧠 目标:形成可部署的生产级项目骨架 天数 主题 任务与练习 Day 22 项目结构重构 - 使用 Clean Architecture- 拆分目录:cmd/, internal/, pkg/- 抽象 service/dao/controller Day 23 单元测试与 Mock - 使用 testing + testify/assert- 对 service 层编写测试- 模拟数据库操作 Day 24 CLI 工具开发 - 创建 cmd/migrate/main.go- 支持命令:create-tenant, migrate Day 25 Docker 化部署 - 编写多阶段 Dockerfile- 使用 docker-compose 启动 Postgres + API 服务 Day 26 性能与并发优化 - 使用 go test -bench . 做基准测试- 优化 goroutine 复用、连接池大小 Day 27 CI/CD 与版本管理 - 用 Makefile 或 GitHub Actions 构建发布包- 输出二进制 ./bin/mthub Day 28 项目总结与发布 - 写 README- 总结架构与经验- 打包上传到私有镜像仓库(可选) 🧱 最终成果(Day 28 完成后) 你将拥有: ...

December 16, 2025 · 3 min · 532 words · Ray

新服务器初始化 2

Note 又剁手搞了台小鸡,重温一下服务器初始化 参考文章 Linux服务器的初步配置流程 - 阮一峰的网络日志 之前我写的 博客服务器初始化 | 安落滢 Blog但是写的比较简单,这次稍微整理一下格式和一些细节,并且加上一些安全配置 那么文章是老文章了,所以新的流程会有一丢丢变化,可以偷一些懒 📌 前提 本文假设你已经: 安装好最新的 Ubuntu Server LTS(例如 Ubuntu 24.04 LTS 或 22.04 LTS)系统;参考官方安装流程可以先完成基本安装和网络配置。 有 root 或 sudo 权限来执行系统初始化操作。 步骤 内容 登录 & 用户 创建普通用户、禁用 root SSH 系统更新 更新升级及自动安全升级 安全配置 SSH 强化、UFW、Fail2Ban 系统增强 Chrony、Audit、安全扫描 其他 时区、Swap、常用工具 🚀 一、首次登录 & 用户账号设定 1. 登录服务器 1 ssh root@your_server_ip 如果是云主机一般默认创建了一个 sudo 用户,可以直接用该用户登录,而不要直接用 root 登录。 ...

December 15, 2025 · 2 min · 317 words · Ray