Go语言学习笔记(一)
前言2017年,简单的学习了一下Go语言,但苦于当时的工作没有办法实践,而我又刚换了工作,每天都要加班到最后一班地铁,没多久,学习的内容就基本上忘光光了,今年得空,可以在学习下Go语言,手头上也有两个项目有时间去重构,那就重新学习一次吧。本次学习使用go 1.26版本。 Go语言介绍Go语言由Google开发,对于程序开发效率、并发、云原生等有非常好的支持。对于Java程序员来说,学习起来非常容易。 核心特性:天然并发(Goroutine)、强类型、编译速度极快、垃圾回收(GC)、静态链接成单个可执行二进制文件。 适用场景:云原生开发(Docker/K8s 均由 Go 编写)、微服务、系统工具、高性能网络服务。 GOROOT和GOPATH对于Go新手还是有必要明确下这两个环境变量的含义,不然很容易纯靠字面意思搞错。 GOROOT,就是Go SDK的安装路径,不是go语言的项目路径,对于Java程序员来说,就是JDK的路径。 GOPATH,工作区路径,类似于Eclipse+maven的组合,将workspace和.m2合并在一个目录。最开始用起来老别扭了,不过从Go ...
Rust学习笔记
从2024年简单的学习了下Rust后,就再也没怎么使用过,最近得闲,准备好好学习下rust。看了下之前记录的Rust笔记略显过时,倒不如从头再来,再学一遍! 安装Rust下载rustup和其他编程语言不同,安装Rust需要安装的是rustup,然后再利用rustup来安装Rust。这里就推荐使用官网的下载器来安装,我之前使用Scoop安装了rust,但是实际上它不过是个二进制的程序而已,并不满足rust开发。 打开官方文档安装 Rust - Rust 程序设计语言,在这里下载rustup-init.exe,下载后先不着急安装,配置项环境变量。 配置环境变量这一步需要配置四个变量,分别是rustup和cargo安装的路径,以及加速器地址。打开设置 -> 高级系统设置 -> 环境变量,在用户变量中设置如下四个环境变量 1234# 安装路径,cargo类似于pypi,rustup类似于rust安装器CARGO_HOME=D:\devtools\rust\cargoRUSTUP_HOME=D:\devtools\rust\rustup 配置字节加速器,不然慢的要死 ...
放弃nvm改换fnm
今天用Claude调试以前的前端项目时,我需要使用nodejs14,按照往常的习惯直接使用nvm install 14,并且切换过去即可。但这次出问题了,我是用nvm use 14,虽然显示切换成功了,但使用node -v依旧显示的时nodejs 24的版本。后续折腾一番环境变量,终于可以切换了,但安装nodejs 14的时候又出幺蛾子了(实测nodejs 18就没问题),npm死活装不上,虽然可以通过手动下载等方式将其配置好,但也略嫌麻烦,于是就萌生了更换工具的想法。 对于Nodejs的版本管理工具,还有另外一个使用Rust实现的fnm。具体请查看Schniz/fnm: 🚀 Fast and simple Node.js version manager, built in Rust。我目前使用scoop来管理这些开发软件,所以安装也是极其方便。(别忘了先卸载nvm) 1scoop install fnm 安装完成后,其命令几乎和nvm一样一样的。 12345678910111213141516171819# 安装nodefnm install 24fnm i...
使用wsl安装Linux系统
中午无聊,打算装两个Linux玩玩,我选择了Fedora42和Arch,这两个系统在WSL中式支持的,但默认安装在C盘,还得再导出导入一次才能换到其他盘,那何必多此一举,直接导入到其他盘即可。下面介绍下本次安装的过程。 系统包准备 Fedora42 ,Fedroa42 下载地址 ArchLinux,ArchLinux下载地址 打开Fedora下载地址,Fedora官方支持WSL的镜像,所以只需要下载Fedora-WSL-Base-42-1.1.x86_64.tar.xz即可。 打开ArchLinux下载地址,Arch官方没有WSL的镜像,我们下载archlinux-bootstrap-x86_64.tar.zst,然后在任意一个Linux中使用zstd命令将其转换为tar包。以Ubuntu为例 123sudo apt install zstd# 解压 zst 并打包为 tarzstd -d archlinux-bootstrap-x86_64.tar.zst ArchLinux默认会比其他发行版多一层目录root.x86_64,所以这个包还需要再处理下才行,不能直...
使用Rclone备份数据到CloudFlare R2
接上一篇,将能迁移的服务都迁移到PostgreSQL后,再配置上自动备份脚本,基本上就可以高枕无忧了,本来想备份到阿里云OSS的,想了想本站几乎是ALL IN Cloudflare,那就直接备份到CloudFlare R2吧,正好也快一点。下面就记录下备份的方法。 创建CloudFlare R2桶在面板首页->存储和数据库 -> R2对象存储中,创建一个桶,我起的名字就是backup。 创建完成后发,返回桶列表,点击右下角的Account Deatails下面的Manage,按钮,创建一个Token。 1、权限必须是管理员读和写,选对象读和写执行rclone命令会报权限错误。 2、因为1,所以最好将客户端IP限制一下,反正VPS都是静态的IP地址,不然要是被泄露了那就完犊子了~ 创建好后,给你三个信息,分别是访问密钥 ID(access_key_id)、机密访问密钥(secret_access_key)、为 S3 客户端使用管辖权地特定的终结点(endpoint)。暂时记录下来,下一步要用。 安装Rclone要备份到CloudFlare R2,那就需要Rc...
升级umami-mysql到v3-postgresql
今天抽空,将自己维护的服务都升级了一下,看了下umami从v3开始就不再支持MySQL,而我目前是用MySql版本的,本着用新不用旧、能早升级早升级的理念,那就只能升级加迁移数据库了,下面分享下过程。 导出MySql的数据直接在宿主机执行 12docker exec -i db mysqldump --no-create-info --default-character-set=utf8mb4 --quick --skip-add-locks \-u root -p umamidb > /tmp/mydbdump.sql 根据自己习惯来。 定义环境变量在docker-compose.yaml同级目录下,创建init-db目录,里面创建一个文件init.sql。内容如下: 12345678910-- Umami的数据库初始化脚本CREATE USER umamiuser WITH PASSWORD 'password';ALTER USER umamiuser CREATEDB;CREATE DATABASE umamidb OWNER umamiuse...
ServicePointManager不支持具有socks5方案的代理
最近将大部分的开发工具都由WinGet替换为scoop了,一切配置妥当后今天发现给GitHub提交代码时,需要重新验证账号,但通过浏览器认证后一直提示一个错误:fatal: ServicePointManager 不支持具有 socks5 方案的代理,我配置代理一般都是http_proxy,因为它兼容性更好,但此时出现的错误又的确是socks5的问题,想来是多年前配置的了,一直使用也没啥问题,后来我删除了credential中的github账号信息,又出现了这个问题。 解决方案出现这个问题也比较容易解决,只需要查看下git config,看下都是哪里配置了socks5协议的代理。 1git config --global --list 输出如下: 12http.https://github.com.proxy=socks5://127.0.0.1:1080http.https://github.com.proxy=socks5://127.0.0.1:1080 将其覆盖一下即可,我本地监听端口是1080,一般默认的是7890,根据自己实际情况修改。 123git con...
Windows Scoop工具常见错误及处理方式
最近也是将大量的软件管理从WinGet切换到scoop,WinGet总是出现一些幽灵链接,虽然可以通过注册表扫描等方式将其修复,个人还是很反感注册表。索性将能用scoop管理的也都用scoop管理,不过在使用过程中,还是遇到了一点点问题,也是比较容易解决。 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。这个问题应该也比较容易遇到,本质上就是万恶的GFW,导致某些资源无法连接(S3、google cloud等),这里需要来一手代理即可。 1scoop config proxy 127.0.0.1:1080 如果想取消,则执行下面的命令 1scoop config rm proxy Couldn’t find manifest for ‘xxx’安装miniconda时会出现这个错误是因为 miniconda3 不在 Scoop 的 Main(核心)软件库中,它被收录在专门存放编程相关工具的 Extras 软件库里。只需要添加一下即可。 123scoop bucket add extras// 然后重新安装scoop install miniconda...
给Debian服务器上的OpenClaw安装浏览器
通过前文配置后OpenClaw后,如果需要运行一些自动化任务、抓取数据等需求还需要通过浏览器来实现。但是默认debian是没有安装的浏览器的,本篇介绍下如何给Debian安装浏览器,并且配置到OpenClaw中。 下载Chrome浏览器对于Debian/Ubuntu发行版 1wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 对于CentOS/RHEL发行版 1wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 一般deb和rpm包就覆盖了国内大部分用户的发行版。这个地址是可以直接连接的。 安装浏览器和字体对于Debian/Ubuntu发行版 1sudo apt install -y ./google-chrome-stable_current_amd64.deb 对于CentOS/RHEL发行版 123sudo yum i...
Debian安装OpenClaw
环境安装以Debian为例,配置好SSH-KEY(本机 -> 服务器免密码登录),提前注册号阿里云百炼模型、Kimi模型、DeepSeek模型、bigmodel(GLM)等模型的账号,该实名实名,该充值充值(Kimi充值才能解速)。 安装nvm1234567891011sudo apt update sudo apt upgrade // 安装依赖sudo apt install build-essential libssl-dev // 安装nvmcurl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh bash // 重新打开session即可。// 安装nodejs 24nvm install 24// 切换到nvmnve use 24 安装git1sudo apt install git -y 安装OpenClaw本篇使用npm的方式安装 如果你的服务器没有配置ssh-key到github,那么你还需要配置一下,将ssh替换为https 12git config --gl...








