我的笔记

苟日新,日日新,又日新。

由于人的记忆力是有限的,所以我们应该记录自己常年积累的知识。

tools

Powershell

一.开启 powershell

  1. win + R 输入 powershell

  2. 管理员身份运行 Ctrl + Shift + Enter

PowerShell 升级和 Windows Terminal 配置

  1. 查看 PowerShell 当前版本
$PSVersionTable
  1. 更新 PowerShell

添加中科大镜像源

winget source add --name winget --arg https://mirrors.ustc.edu.cn/winget-source
winget search PowerShell # 查询可用的 PowerShell 包
  1. 安装(微软发布的 PowerShell)
winget install --id Microsoft.PowerShell --source winget
  1. 打开 Windows Terminal 的 settings.json 并修改配置(示例,替换为你的 GUID)
{
  "defaultProfile": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
  "profiles": {
    "list": [
      {
        "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
        "name": "PowerShell",
        "source": "Windows.Terminal.PowershellCore",
        "hidden": false
      }
    ]
  }
}

二. 文件相关命令

  1. 进入文件夹
cd .\
  1. 返回上级目录
cd ..
  1. 创建目录 / 文件
mkdir .\NewFolder

ni .\file.txt -ItemType File
  1. 删除文件或目录
rm .\file.txt
  1. 移动 / 重命名
mv .\source.txt .\dest.txt
  1. 使用 VS Code 打开当前目录
code .
  1. 清空回收站(无提示)
Clear-RecycleBin -Force -Confirm:$false

三. 常用命令

环境变量

  1. 显示环境变量
gci env:
  1. 设置(追加)环境变量路径
$env:Path += ";C:\你的\路径"

网络配置

  1. 显示本机 IP
ipconfig
  1. 测试网络连通性
ping <IP 或 主机名>
  1. 关闭防火墙(谨慎)
netsh advfirewall set allprofiles state off
  1. 显示网络统计信息
netstat -an
  1. 显示本地路由表
route print
  1. 显示/查询防火墙规则
Get-NetFirewallRule

winget

window提供的包管理工具,类似于apt-get、yum等。

更新

  1. 查看winget源
winget source list
  1. 更新源
winget source update
  1. 更新软件
winget upgrade --all

常用软件

  • vscode
winget install  Microsoft.VisualStudioCode -s winget
  • git
winget install  Git.Git -s winget
  • chrome
winget install  Google.Chrome -s winget
  • 7zip
winget install  7zip.7zip -s winget
  • JLC EDA Pro
winget install  JLC.LCEDA.Pro -s winget
  • arduino
winget install  ArduinoSA.IDE.stable -s winget
  • bandizip
winget install  Bandisoft.Bandizip -s winget
  • draw.io
winget install  JGraph.Draw io.Desktop -s winget
  • obs-studio
winget install  OBSProject.OBSStudio -s winget
  • telegram
winget install  Telegram.TelegramDesktop -s winget
  • nano
winget install  okibcn.nano -s winget
  • vim
winget install  vim.vim -s winget
  • wireguard
winget install  WireGuard.WireGuard -s winget
  • QQ
winget install  Tencent.QQ -s winget
  • wechat
winget install  Tencent.WeChat -s winget

Oh my posh

PowerShell 提示符美化工具。

安装和更新

安装

winget install JanDeDobbeleer.OhMyPosh -s winget

检查版本

oh-my-posh version

通过 winget 安装后,通常不需要手动追加 Path

更新

winget upgrade JanDeDobbeleer.OhMyPosh -s winget

主题配置(推荐:落地到本地文件)

下面以 aliens 为例,执行一次即可:

$themeDir = Join-Path $HOME "Documents\PowerShell\themes"
New-Item -ItemType Directory -Force -Path $themeDir | Out-Null

$themeFile = Join-Path $themeDir "aliens.omp.json"
Invoke-WebRequest `
  -Uri "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/aliens.omp.json" `
  -OutFile $themeFile

$PROFILE 中加入:

$ompTheme = Join-Path $HOME "Documents\PowerShell\themes\aliens.omp.json"
if (Test-Path $ompTheme) {
    $ompShell = if ($PSVersionTable.PSEdition -eq "Core") { "pwsh" } else { "powershell" }
    oh-my-posh init $ompShell --config $ompTheme | Invoke-Expression
}

立即生效:

. $PROFILE

主题配置(不落地文件,直接用 URL)

如果你不想下载主题文件,也可以直接用远程配置:

oh-my-posh init pwsh --config "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/agnosterplus.omp.json" | Invoke-Expression

注意事项

  1. 某些环境下 $env:POSH_THEMES_PATH 为空,不建议直接依赖它拼接主题路径。
  2. 图标显示异常(方块/问号)时,先安装 Nerd Font:
oh-my-posh font install Meslo --headless
  1. 安装字体后,确保终端字体已切换到 Nerd Font(例如 MesloLGLDZ Nerd Font):
  • Windows Terminal: settings.json 中设置 profiles.defaults.font.face
  • VS Code: settings.json 中设置 terminal.integrated.fontFamily
  1. 如果使用 Windows PowerShell 遇到 running scripts is disabled on this system,建议切换到 PowerShell 7 (pwsh) 作为默认终端。

主题列表

Git

一.安装 Git

  1. 官网下载 下载

  2. Windows下载

winget install --id Git.Git -e --source winget
  1. Linux 下载
sudo apt-get install git # Debian/Ubuntu
sudo yum install git     # CentOS/RHEL

二.配置 Git

在 powershell 中输入git检测是否配置完成

配置用户

  1. 初始化 Git 仓库
git init
  1. 设置用户名和邮箱
git config user.name 'ptsfdtz'
git config user.email 'pitousanfadetuzi@gmail.com'
  1. 查看邮箱用户配置
git config --list
  1. 配置 git

进入 gitconfig 文件

code ~/.gitconfig # vscode

添加以下内容

[user]
    name=ptsfdtz
    email=pitousanfadetuzi@gmail.com
[http]
    proxy=http://127.0.0.1:7890
[https]
    proxy=http://127.0.0.1:7890
[init]
    defaultBranch=main
[pull]
    ff=only

令 git 使用 clash 代理

三.初次提交模板

  1. 项目初始化
git init
echo "# README" > README.md
git add README.md
git commit -m "First commit"
  1. 添加远程仓库链接
git remote add origin #仓库链接
  1. 默认分支 main
git branch -M main
  1. 提交到 github 仓库
git push -f -u origin main

四.常用命令

  • 查看当前状态
git status
  • 查看提交记录
git log
  • 回退到上一个版本
git reset --hard HEAD^
  • 回退到上上个版本
git reset --hard HEAD^^
  • 回退到指定版本
git reset --hard HEAD^^
  • 分支相关的操作
git branch ##查看分支

git branch <name> ##创建分支

git checkout <name> ##切换分支

git checkout -b <name> ##创建+切换分支

git merge <name> ##合并某分支到当前分支

git merge --no-ff -m "..." <name> ##使用普通模式合并分支,可以显示合并历史

git branch (-m | -M) <oldbranch> <newbranch> ##重命名分支

git branch -d <name> ##删除分支

git branch -D <name> ##强行删除未合并分支

git log --graph ##查看分支合并图

git log --graph --pretty=oneline --abbrev-commit ##也可以查看分支合并图

git tag <num> ##创建标签

git push --tags ##推送标签

docker

wireguard

一.安装 wireguard

在服务端安装

  1. 获取 root 权限
sudo i
  1. 安装 wireguard 软件
apt install wireguard resolvconf -y
  1. 开启ip转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p

二.配置服务端

配置服务端公钥和私钥

  1. 进入配置存储目录,调整目录权限
sudo su #切换到root用户
cd /etc/wireguard/
umask 077 #调整目录默认权限
  1. 生成服务器密钥
wg genkey > server.key #生成私钥
wg pubkey < server.key > server.key.pub #通过私钥生成公钥
  1. 生成客户端密钥(client1)
wg genkey > client1.key #生成私钥
wg pubkey < client1.key > client1.key.pub #通过私钥生成公钥

显示所有生成的密钥

cat server.key && cat server.key.pub && cat client1.key && cat client1.key.pub

创建服务器配置文件

nano /etc/wireguard/wg0.conf

添加服务器配置文件内容

[Interface]
PrivateKey = $(cat server.key) # 填写本机的privatekey 内容
Address = 10.0.8.1 #本机虚拟局域网IP

PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
#注意eth0需要为本机网卡名称

ListenPort = 50814 # 监听端口
DNS = 8.8.8.8

[Peer]
PublicKey =  $(cat client1.key.pub)  #自动client1的公钥
AllowedIPs = 10.0.8.10/32 #客户端所使用的IP" > wg0.conf

查看你的默认网卡

ip route list table main default

如果网卡不正确更改默认网卡 将 eth0 改为enp4s0

启动服务

wg-quick up wg0 #启动wg0
wg-quick down wg0 #关闭wg0

配置客户端

  1. 下载客户端

下载链接:https://www.wireguard.com/install/

  1. 配置客户端

新建隧道

  1. 配置隧道
[Interface]
PrivateKey = 6M8HEZioew+vR3i53sPc64Vg40YsuMzh4vI1Lkc88Xo= #此处为client1的私钥
Address = 10.0.8.10 #此处为peer规定的客户端IP
MTU = 1500

[Peer]
PublicKey = Tt5WEa0Vycf4F+TTjR2TAHDfa2onhh+tY8YOIT3cKjI= #此处为server的公钥
AllowedIPs = 10.0.8.0/24 #此处为允许的服务器IP
Endpoint = 114.132.56.178:50814 #服务器对端IP+端口

配置防火墙

允许端口转发

  1. 进入配置文件
sudo vim /etc/sysctl.conf
  1. 编辑内容
net.ipv4.ip_forward=1
  1. 重启防火墙
sudo sysctl -p

重启防火墙

  1. 查看防火墙是否启动成功
sudo ufw status
  1. 如果防火墙未启动,则启动防火墙
ufw allow 51820/udp

查看是否连接成功

客户端

ping 10.0.8.1

服务器

sudo tcpdump -envi wg0

设置服务器开机启动wireguard

systemctl enable wg-quick@wg0

参考

  1. bilibili

nano

一. linux安装

sudo apt update && sudo apt install nano -y # Debian/Ubuntu系统
sudo yum install nano -y                     # CentOS/RHEL系统
sudo dnf install nano -y                     # Fedora系统

二. Windows安装

winget install --id Nano.Nano -e --source winget

三. 配置

nano ~/.nanorc

添加以下内容

set linenumbers
set mouse
set autoindent
set softwrap
include "/usr/share/nano/*.nanorc"

四. 使用

nano 文件名

# 保存文件: Ctrl + O

# 退出 nano: Ctrl + X

# 查找文本: Ctrl + W

# 剪切文本: Ctrl + K

# 粘贴文本: Ctrl + U

# 撤销操作: Alt + U

# 重做操作: Alt + E

vim

languages

nodejs

安装NVM

windows下推荐使用nvm-windows

Linux和macOS下推荐使用nvm

使用NVM安装Node.js

nvm install <version>
nvm use <version>

全局安装包

npm install -g <package-name>
  1. pnpm:
npm install -g pnpm
  1. yarn:
npm install -g yarn
  1. typescript:
npm install -g typescript
  1. ts-node:
npm install -g ts-node

go

安装 Go(Windows)

推荐优先使用 winget 安装:

winget install --id GoLang.Go --source winget --accept-source-agreements --accept-package-agreements

也可以使用官方安装包:

验证安装

go version
go env GOROOT
go env GOPATH

如果命令找不到,先重开终端再试一次。

模块和项目初始化

创建第一个项目

mkdir hello-go
cd hello-go
go mod init hello-go

创建 main.go

package main

import "fmt"

func main() {
	fmt.Println("hello go")
}

运行项目:

go run .

常用命令

go mod tidy
go fmt ./...
go test ./...
go build ./...

常用配置

配置国内代理(可选)

go env -w GOPROXY=https://goproxy.cn,direct
go env -w GOSUMDB=sum.golang.google.cn

查看当前配置:

go env GOPROXY
go env GOSUMDB

恢复默认:

go env -u GOPROXY
go env -u GOSUMDB

经验总结

  1. go install <module>@latest 安装的可执行文件默认在 GOPATH\bin
  2. 如果安装了工具但命令不可用,先确认 GOPATH\bin 是否在 Path 中。
  3. go mod tidy 建议作为日常命令,能及时清理和补齐依赖。
  4. go test ./... 可以快速覆盖整个项目包的基础回归。

python

安装 Python(Windows)

推荐使用 winget 安装官方版本:

winget install --id Python.Python.3.14 --source winget --accept-source-agreements --accept-package-agreements --override "InstallAllUsers=0 PrependPath=1 Include_launcher=1 Include_pip=1"

说明:

  1. PrependPath=1 会把 Python 和 Scripts 目录加入 Path
  2. Include_launcher=1 会安装 py 启动器。
  3. Include_pip=1 会安装 pip

验证安装

python --version
pip --version
py --version

如果当前终端提示找不到命令,先重开终端再试。

虚拟环境

创建虚拟环境:

python -m venv .venv

激活虚拟环境(PowerShell):

.\.venv\Scripts\Activate.ps1

退出虚拟环境:

deactivate

常用命令

升级 pip

python -m pip install --upgrade pip

安装依赖:

pip install <package-name>

导出依赖:

pip freeze > requirements.txt

按依赖文件安装:

pip install -r requirements.txt

经验总结

  1. 本机实测通过 winget 安装后,python.exepip.exepy.exe 都已安装在用户目录下: C:\Users\16526\AppData\Local\Programs\Python\Python314\
  2. 用户级 Path 虽然已更新,但当前已打开的终端会话不会自动刷新,重开终端后命令才会直接可用。
  3. 如果执行 python 仍跳转到 Microsoft Store,需要在系统设置中关闭 App Execution Aliases 里的 python.exe/python3.exe
  4. 验收建议至少检查三项:python --versionpip --versionpy --version

rust

安装 Rust(Windows)

推荐使用 rustup,方便后续切换工具链和升级。

winget install --id Rustlang.Rustup --source winget --accept-source-agreements --accept-package-agreements

验证安装

rustup --version
rustc --version
cargo --version

如果命令找不到,先重开终端再试一次。

常用命令

更新工具链

rustup update

查看已安装工具链

rustup toolchain list

设置默认工具链

rustup default stable

创建并运行第一个项目

cargo new hello-rust
cd hello-rust
cargo run

经验总结

  1. winget 安装 Rustlang.Rustup 后,~\.cargo\bin 会放置 rustup/rustc/cargo
  2. 用户级 Path 即使已经包含 ~\.cargo\bin,当前终端会话也可能还不可见。
  3. 最稳妥做法是重开终端;如果想每次启动都兜底,可在 PowerShell profile 中补一段:
$cargoBin = Join-Path $HOME ".cargo\bin"
if ((Test-Path $cargoBin) -and -not (($env:Path -split ';') -contains $cargoBin)) {
    $env:Path = "$cargoBin;$env:Path"
}
  1. 验收不要只看 rustup,至少同时确认 rustccargo 版本。

C/C++

devops

ci_cd

kubernetes

nginx

prometheus

grafana

frontend

react

pnpm 和 vite 创建

pnpm create vite my-react-app --template react
cd my-react-app
pnpm install
pnpm run dev

github workflow

name: Deploy to GitHub Pages

on:
  push:
    branches: ["main"]
  workflow_dispatch:

permissions:
  contents: write

concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup pnpm
        uses: pnpm/action-setup@v4
        with:
          version: latest

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"
          cache: "pnpm"

      - name: Install dependencies
        run: pnpm install

      - name: Build
        run: pnpm build
        env:
          BASE_URL: /${{ github.event.repository.name }}/

      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v4
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./dist
          user_name: "github-actions[bot]"
          user_email: "github-actions[bot]@users.noreply.github.com"

vue

nextjs

pnpm 创建

pnpm create next-app my-nextjs-app
cd my-nextjs-app
pnpm install
pnpm run dev

github workflow

name: Deploy Next.js 16 to GitHub Pages

on:
  push:
    branches: ["main"]
  workflow_dispatch:

permissions:
  contents: write

concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup pnpm
        uses: pnpm/action-setup@v4
        with:
          version: latest

      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: "20"
          cache: "pnpm"

      - name: Install dependencies
        run: pnpm install

      - name: Build (Next.js static export)
        run: pnpm build
        env:
          NEXT_PUBLIC_BASE_PATH: /${{ github.event.repository.name }}

      - name: Deploy to GitHub Pages
        uses: peaceiris/actions-gh-pages@v4
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./out
          user_name: "github-actions[bot]"
          user_email: "github-actions[bot]@users.noreply.github.com"

svelte

vite

tailwindcss

backend

gin

fastapi

desktop

electron

tauri

wails

安装wails

需要安装go 1.18+

wails 官方安装文档

go install github.com/wailsapp/wails/v2/cmd/wails@latest

react-native

database

mysql

postgresql

redis