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 然后选择刚刚下载的插件包就可以了 重点,在远程服务器安装vscode server 在装完插件之后 重启 vscode 就可以看到界面有变化 如果顺利的话 新建连接,连接上去后会自动下载 vscode-ssh-server。 ...

December 19, 2025 · 5 min · 934 words · 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 · 533 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 登录。 我一般喜欢改个 hostname 和时区 1 2 hostnamectl set-hostname <new-hostname> sudo timedatectl set-timezone Asia/Hong_Kong 2. 创建新用户(避免日常使用 root) 1 2 sudo adduser youruser sudo usermod -aG sudo youruser 👉 将 youruser 换成你自己的管理用户名。 ...

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

什么是浏览器指纹:10 分钟彻底了解 16 个指纹

什么是浏览器指纹:10 分钟彻底了解 16 个指纹 作者:AdsPower — 2024-04-29 整理者:gpt5.1 ℹ️ Note 虽说摘自他山,但是这是开启什么系列以来第一个合适的命题,干脆直接塞进分类充数。跑起来最重要。 简介 当你访问网站(例如社交网站 / 电商网站)时,网站可能会悄悄收集你浏览器 / 设备的各种细节 —— 比如 IP、所用操作系统、屏幕分辨率、安装字体等。 这些看似无关紧要的信息组合在一起,就可能构成一个“浏览器指纹”(browser fingerprint),使网站能够识别你为一个独特访问者 —— 即使你清除 Cookies 或启用了“隐私模式”。 理解常见的浏览器指纹项,有助于: 理解网站为何/如何“识别”你; 在使用“指纹浏览器”或“反指纹/虚拟环境”时,更理性地设计你的环境配置; 提高多个账号并行运营时(例如电商、社媒、营销等)的安全性与隐蔽性。 为什么网站要收集浏览器指纹 浏览器指纹可以让网站“记住你是谁”。即便你清除 Cookies,网站也可能通过指纹判断“你回来过”。 对于电商网站 / 社交平台,识别用户是否“真实”、是否“同人 操作多个账号”很重要,指纹就是一个重要依据。 对于需要管理多个账号(例如营销、社媒运营、电商多店铺等)的用户/团队,了解、控制指纹可以帮助减少账号关联、降低被封禁/风控的风险。 常见的 16 种浏览器指纹及其含义 以下是文章列出的 16 项指纹(fingerprint)及其作用/特性: # 指纹类型 含义 / 来源 / 作用 1 IP 地址 用于识别用户设备的网络地址,是最基础的识别方式。 2 地理位置 通过 IP 推断出用户所在国家 / 地区 /城市甚至经纬度/邮政编码等。 3 时区与当地时间 基于地理位置或系统设置,可以反映用户的“真实”或“伪装”时区信息;如果与 IP 的地理位置不一致,则可能被检测为异常。 4 User Agent(UA) 表示浏览器类型、版本、操作系统等信息,是常见且重要的指纹组成。 5 浏览器语言 浏览器设置的首选语言 (Accept-Language) 。不同语言设置也可能被用作识别。 6 字体 (Fonts) 设备安装的字体集合 — 不同用户可能安装不同字体,通过字体列表也能区分用户。 7 屏幕分辨率 包括显示器分辨率以及浏览器窗口的可视区域大小,不同显示设备和窗口设置会不同。 8 WebGL / WebGPU 通过图形 API 获取设备 GPU / 显示能力相关信息,作为硬件相关指纹的一部分。 9 媒体设备指纹 (Media Devices) 通过浏览器对音频 / 视频设备 (如麦克风、摄像头) 的检测获取硬件信息 (设备类型、标签、分辨率等)。 10 AudioContext 浏览器处理音频的能力 /特性 — 也可能因设备 /软件设置不同而不同,可用于区分用户。 11 ClientRects 浏览器在渲染网页时,对页面元素的位置、布局进行计算 — 这些布局信息(受设备/窗口/浏览器微差异影响)也可能差异显著。 12 SpeechVoices 浏览器/系统提供的语音合成 (Text-to-Speech) 选项 (语音种类、语言、性别等) — 设备不同可能有不同选项,也可作为指纹。 13 硬件并发数 (hardwareConcurrency) 表示设备处理器的逻辑核心数 (CPU 线程数),通过 navigator.hardwareConcurrency 获取 — 不同设备可能不同。 14 设备内存 (deviceMemory) 设备可用内存 (RAM) 大小 (通过 navigator.deviceMemory 获取) — 虽然该值有限制 (通常返回 2/4/6/8 之一),但仍可能被用于区分。 15 Do Not Track (DNT) 浏览器隐私设置中的 “不追踪” 标志 — 如果用户开启了 DNT,该设置也可能成为唯一性特征。 16 Canvas 指纹 (Canvas Fingerprint) 通过让浏览器在一个 <canvas> 上绘制图形/文本,然后分析其渲染结果 (轮廓/像素/抗锯齿等细节) — 因为每台设备 (硬件 + 字体 + 显卡) 不同,渲染结果可能略有不同,从而形成独特“指纹”。 使用“指纹浏览器 / 虚拟环境”保护账户安全 如果你在运营多个账号 — 比如社交媒体账号、电商店铺账号、营销账号等 — 想避免因“相同设备/环境指纹”被关联或封禁,可以考虑使用“指纹浏览器 / 虚拟浏览器环境”。例如 AdsPower 就是这样一种工具,它允许你为每个账号创建独立的浏览器环境,并对上述多个指纹项目进行自定义/模拟。 ...

December 10, 2025 · 2 min · 243 words · Ray

lambda 引发的编程语言陈年知识回顾

偷听会议室老板拷打同事知道什么是 lambda 吗?同时我正在看一篇关于使用aws mqtt的文章,里面提到了aws lambda。我一想,lambda 不就是匿名函数吗,然后呢,似乎我并不了解他,就好像我看到一只鸟,我知道他叫布谷鸟,也许我知道他还叫大杜鹃(实际不知道,我刚刚搜的),英文名叫Cuculus canorus,但是我依旧不了解他( 费曼父亲的教导),那么我深深反思,我不知道什么是 lambda,我现在需要知道一下。 所以在这过程里,我问了一些问题,什么是 lambda、什么是 Lisp、什么是一等公民、什么是闭包、python 的 map 是啥 什么是Lambda 我有一种中国学生的特性,写东西模糊有一种框架 1. 定义 2. 内容 3. 意义 4. 展望。 感觉这很蠢,但我暂时没有更棒的方式,当然这种文章不会有展望 这个就读 Lambda λ ,希腊字母表第 11 个字母 Lambda - Wikipedia 为什么匿名函数叫 Lambda Anonymous function - Wikipedia Anonymous functions originate in the work of Alonzo Church in his invention of the lambda calculus, in which all functions are anonymous, in 1936, before electronic computers.[2] In several programming languages, anonymous functions are introduced using the keyword lambda, and anonymous functions are often referred to as lambdas or lambda abstractions. Anonymous functions have been a feature of programming languages since Lisp in 1958, and a growing number of modern programming languages support anonymous functions. ...

December 5, 2025 · 2 min · 426 words · Ray