本地草稿
npm 缓存
npm cache get config 查看配置的缓存目录
npm cache add 单独添加某个包到缓存
npm cache clean 清除所有缓存
npm cache vertify 验证缓存的有效性,清除无用和损坏的缓存
npm i
--prefer-offline 跳过任何条件请求(304协商缓存)直接使用缓存数据,当缓存无法匹配时,访问网络
--prefer-online 强制重新验证缓存数据,并用新验证通过的数据刷新缓存
--offline 强制使用缓存,如果无法匹配则会出现代码错误
vite 打包时添加前缀的规则
vite打包时,不会为不存在的script引用添加前缀
也就是说,如果script引入的文件不存在,它就不会为它添加前缀
git分支概览
# 显示本地与远程分支的跟踪信息
git branch -vv
# 格式化以上命令
git branch -vv --format="%(refname:short) %(upstream:short)" | column -t
在linux中,找出所有正在监听外部连接的端口
# 使用 ss 命令(推荐)
sudo ss -tlnp | grep LISTEN
# 或者使用 netstat 命令
sudo netstat -tlnp | grep LISTEN
Docker 从入门到精通
一、核心概念
| 概念 | 说明 |
|---|---|
| 镜像 (Image) | 只读模板,包含运行应用所需的一切(代码、依赖、系统库) |
| 容器 (Container) | 镜像的运行实例,类似一个轻量虚拟机 |
| 仓库 (Registry) | 存储镜像的地方,Docker Hub 是默认公共仓库 |
| Dockerfile | 构建镜像的脚本,定义镜像的每一层 |
| Docker Compose | 多容器编排工具,用 YAML 定义多服务应用 |
类比理解:镜像 = 类,容器 = 实例,Dockerfile = 源代码
二、镜像操作
# 拉取
docker pull nginx:latest # 从仓库下载镜像
docker pull mysql:8.0 # 指定版本
# 查看
docker images # 列出本地所有镜像
docker images -a # 包含中间层镜像
# 删除
docker rmi nginx:latest # 删除镜像
docker rmi <image_id> # 用 ID 删除
# 构建
docker build -t myapp:v1 . # 根据当前目录 Dockerfile 构建
docker build -t myapp:v1 -f Dockerfile.prod . # 指定 Dockerfile
# 打标签
docker tag myapp:v1 myrepo/myapp:v1 # 给镜像加新名称
# 推送
docker push myrepo/myapp:v1 # 推送到仓库
# 清理
docker image prune -a # 删除所有未使用的镜像
docker system prune -a # 清理所有未使用的资源(镜像+容器+网络)
三、容器操作
# 运行
docker run nginx # 前台运行(Ctrl+C 停止)
docker run -d nginx # 后台运行(detached)
docker run -d --name myweb -p 8080:80 nginx # 命名 + 端口映射
docker run -d -v /host/dir:/container/dir nginx # 挂载目录
docker run -it ubuntu bash # 交互式终端
# 查看
docker ps # 运行中的容器
docker ps -a # 所有容器(含已停止)
docker logs <name/id> # 查看日志
docker logs -f <name/id> # 实时跟踪日志
docker exec -it <name/id> bash # 进入容器内部
# 生命周期
docker stop <name/id> # 停止
docker start <name/id> # 启动已停止的容器
docker restart <name/id> # 重启
docker rm <name/id> # 删除(需先停止)
docker rm -f <name/id> # 强制删除
# 信息
docker inspect <name/id> # 查看容器详细信息
docker stats # 实时资源占用
docker top <name/id> # 容器内进程
四、Dockerfile 编写
# 基础镜像
FROM python:3.11-slim
# 维护者(可选)
LABEL maintainer="you@example.com"
# 设置工作目录
WORKDIR /app
# 复制文件(先复制依赖文件,利用缓存层)
COPY requirements.txt .
# 执行命令(安装依赖)
RUN pip install -r requirements.txt
# 复制项目代码
COPY . .
# 暴露端口(仅声明,不实际映射)
EXPOSE 8000
# 设置环境变量
ENV MY_VAR=value
# 容器启动命令
CMD ["python", "app.py"]
# 构建时参数
ARG BUILD_VERSION=1.0
关键指令:
| 指令 | 作用 | 示例 |
|---|---|---|
FROM |
基础镜像(必须有) | FROM python:3.11 |
RUN |
构建时执行命令 | RUN apt install -y curl |
COPY |
复制文件到镜像 | COPY . /app |
ADD |
类似 COPY,支持自动解压 tar | ADD app.tar.gz /app |
WORKDIR |
设置工作目录 | WORKDIR /app |
ENV |
设置环境变量 | ENV PORT=8000 |
ARG |
构建时变量 | ARG VERSION=1.0 |
EXPOSE |
声明端口 | EXPOSE 8000 |
VOLUME |
声明匿名卷 | VOLUME /data |
CMD |
容器启动命令(可覆盖) | CMD ["python","app.py"] |
ENTRYPOINT |
容器入口(不易覆盖) | ENTRYPOINT ["python"] |
CMD vs ENTRYPOINT:
CMD可被docker run后面的命令覆盖ENTRYPOINT不会被覆盖,CMD的参数会追加给它
五、端口与网络
# 端口映射
-p 8080:80 # 宿主机 8080 → 容器 80
-p 127.0.0.1:8080:80 # 只监听本机
-p 8080-8090:80-90 # 端口范围
# 网络模式
--network bridge # 默认,独立网络,容器间通过 IP 通信
--network host # 共享宿主机网络(Linux),无需端口映射
--network none # 无网络
--network mynet # 自定义网络
# 自定义网络
docker network create mynet
docker run --network mynet --name web nginx
docker run --network mynet --name db mysql
# web 容器内可直接用 "db" 作为主机名访问 MySQL
六、数据持久化
# 三种方式
-v /host/path:/container/path # Bind Mount(绑定宿主机目录)
-v myvolume:/container/path # Named Volume(Docker 管理的命名卷)
--tmpfs /container/path # Tmpfs(仅内存,重启丢失)
# 命名卷操作
docker volume create mydata # 创建
docker volume ls # 列出
docker volume inspect mydata # 查看详情
docker volume rm mydata # 删除
选择建议:
- 开发调试 → Bind Mount(代码实时同步)
- 生产数据 → Named Volume(由 Docker 管理,更可靠)
- 临时缓存 → Tmpfs
七、Docker Compose
services:
web:
build: . # 从 Dockerfile 构建
# image: nginx:latest # 或直接用镜像
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
environment:
- NODE_ENV=production
env_file:
- .env
depends_on:
- db # 依赖 db 服务
restart: unless-stopped
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: "123456"
volumes:
- dbdata:/var/lib/mysql
healthcheck: # 健康检查
test: ["CMD", "mysqladmin", "ping"]
interval: 10s
retries: 5
volumes:
dbdata: # 声明命名卷
常用命令:
docker compose up -d # 后台启动所有服务
docker compose down # 停止并删除容器
docker compose down -v # 同时删除数据卷
docker compose logs -f # 查看日志
docker compose logs web # 查看指定服务日志
docker compose ps # 查看服务状态
docker compose restart # 重启所有服务
docker compose exec web bash # 进入某个服务的容器
docker compose pull # 拉取最新镜像
docker compose up --build # 重新构建并启动
docker compose config # 验证并查看最终配置
八、多阶段构建(优化镜像大小)
# Stage 1: 构建
FROM python:3.11 AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt
COPY . .
# Stage 2: 运行(只复制需要的文件)
FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY --from=builder /app /app
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "app.py"]
效果:构建工具(gcc 等)不会进入最终镜像,体积大幅减小。
九、实用技巧
# 查看镜像构建历史
docker history nginx:latest
# 查看磁盘占用
docker system df
# 一键清理(镜像+容器+网络+缓存)
docker system prune -a --volumes
# 导出/导入镜像(离线传输)
docker save -o nginx.tar nginx:latest
docker load -i nginx.tar
# 导出/导入容器(含状态)
docker export -o web.tar web
docker import web.tar myweb:latest
# 限制资源
docker run -m 512m --cpus 1.5 nginx # 内存 512MB,CPU 1.5 核
# 查看容器 IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <name>
十、常见问题速查
| 问题 | 解决 |
|---|---|
| 镜像拉取超时 | 配置 registry-mirrors 或使用代理 |
| 容器内无法联网 | 检查 DNS:docker run --dns 8.8.8.8 |
| 端口被占用 | lsof -i :8080 查看占用进程 |
| 容器启动后立即退出 | docker logs <name> 查看错误 |
| 磁盘空间不足 | docker system prune -a |
| 文件修改不生效 | 检查 volume 挂载路径是否正确 |
| 容器间无法通信 | 确认在同一自定义网络中 |
知识体系总结
Docker
├── 镜像 (Image)
│ ├── Dockerfile 构建
│ ├── 多阶段构建优化
│ └── 仓库管理 (push/pull)
├── 容器 (Container)
│ ├── 生命周期 (run/stop/rm)
│ ├── 端口映射 (-p)
│ ├── 数据挂载 (-v)
│ └── 网络 (--network)
├── 编排 (Compose)
│ ├── 服务定义 (services)
│ ├── 依赖管理 (depends_on)
│ ├── 健康检查 (healthcheck)
│ └── 数据卷 (volumes)
└── 运维
├── 日志 (logs)
├── 监控 (stats)
├── 清理 (prune)
└── 资源限制 (-m, --cpus)
什么是大模型?
大模型就是一个巨大无比的、可查询的条件概率表(虽然以神经网络参数的形式存储)。所谓的“智能行为”,不过是在足够精细的概率空间中,对下一个最合理的符号进行连续预测。当模型足够大、数据足够全,这种概率预测在人类看来,就表现得像理解、推理和创造。
所以,你的直觉很准确——大模型的神奇,本质上就是“规模化概率”带来的必然涌现。它没有真正的因果理解,但它拥有迄今为止人类创造出的最复杂的“关联概率网”。
WSL
# 已安装的 Linux 发行版列表,显示它们当前的状态和 WSL 版本
wsl --list --verbose
# 简写
wsl -l -v
# 关闭wsl
wsl --shutdown
校园网联合镜像站
https://mirrors.cernet.edu.cn/
环境变量相关
powershell 查看设置环境变量
$env:XXX
setx XXX "value"
查找:gci Env:(全部) gci Env:*ARK*(通配符)
linux
终端级:
直接执行:export MY_VAR="hello"
用户级:
编辑 ~/.bashrc 文件,末尾添加 export MY_VAR="hello"
source ~/.bashrc 使配置立即生效
系统级:
编辑 /etc/profile 或 /etc/environment 文件,其他同上
echo $MY_VAR
查找env | grep 关键字
浙公网安备 33010602011771号