diff --git a/src/content/posts/开发日记/python包管理工具uv使用.md b/src/content/posts/开发日记/python包管理工具uv使用.md
new file mode 100644
index 0000000..c68326a
--- /dev/null
+++ b/src/content/posts/开发日记/python包管理工具uv使用.md
@@ -0,0 +1,350 @@
+---
+title: 开发日记/python包管理工具uv使用
+published: 2026-01-18T19:23:07
+description: "uv 是一个极速的 Python 包管理和项目管理工具,由 Rust 编写。本文介绍了 uv 的安装、基础用法以及如何使用它来替代 pip、poetry 和 pyenv。"
+image: ""
+
+draft: false
+lang: ""
+category: "开发日记"
+tags:
+ - "python"
+ - "包管理"
+ - "uv"
+ - "rust"
+---
+
+# uv 使用指南
+
+在 Python 的开发生态中,包管理和环境管理一直是一个让人头疼的话题。从 `pip` 到 `pipenv`,再到 `poetry` 和 `pdm`,工具层出不穷。而最近,由 Astral(Ruff 的开发者)推出的 **uv** 横空出世,凭借其**极快的速度**和**全能的特性**,迅速成为了 Python 开发者的新宠。
+
+本文将带你快速上手 uv,体验这个"终结者"级别的工具。
+
+## 什么是 uv?
+
+`uv` 是一个用 Rust 编写的 Python 包安装器和解析器。它的设计初衷是替代 `pip`、`pip-tools` 和 `virtualenv`,但随着版本的迭代,它现在已经具备了替代 `poetry`(项目管理)、`pyenv`(Python 版本管理)和 `pipx`(工具管理)的能力。
+
+**核心特点:**
+
+- **极速**:比 pip 快 10-100 倍。
+- **全能**:一个工具搞定 Python 安装、虚拟环境、依赖管理、工具运行。
+- **兼容**:兼容 `pyproject.toml` 标准。
+
+## 1. 安装 uv
+
+uv 提供了多种安装方式,推荐使用官方的独立安装脚本,这样升级和管理更方便。
+
+### macOS / Linux
+
+```bash
+curl -LsSf https://astral.sh/uv/install.sh | sh
+```
+
+### Windows (PowerShell)
+
+```powershell
+powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
+```
+
+### 使用 pip 安装
+
+如果你只是想尝鲜,也可以通过 pip 安装:
+
+```bash
+pip install uv
+```
+
+安装完成后,可以通过以下命令验证:
+
+```bash
+uv --version
+```
+
+## 2. 项目管理 (Modern Workflow)
+
+这是 uv 目前最推荐的使用方式,类似于 `poetry` 或 `npm` 的体验。
+
+### 初始化项目
+
+```bash
+# 创建一个新项目
+uv init my-project
+cd my-project
+```
+
+
+
+
+
+这将创建一个 `pyproject.toml` 文件和一个 `.python-version` 文件。
+
+### 添加依赖
+
+不再需要手动激活虚拟环境,`uv add` 会自动处理虚拟环境的创建和依赖的安装。
+
+```bash
+# 添加依赖
+uv add requests
+
+# 添加开发依赖 (例如 pytest)
+uv add --dev pytest
+```
+
+
+
+
+
+
+
+### 配置国内镜像源
+
+#### 配置项目镜像
+
+可以参考这个 `https://uv.oaix.tech/blog/2025/06/17/quickly-set-uv-package-index-is-china-mirror/` 来配置国内镜像源。
+
+
+
+
+
+在 ` pyproject.toml` 里面添加下面的内容
+
+```toml
+[[tool.uv.index]]
+name = "tencent"
+url = "https://mirrors.cloud.tencent.com/pypi/simple/" # 腾讯云镜像源
+```
+
+
+
+
+
+
+
+可以看到里面已经用上镜像了
+
+#### 配置全局镜像源
+
+参考这个 `https://www.cnblogs.com/ljbguanli/p/19357762`
+
+全局配置后,所有项目默认使用指定镜像,无需重复设置。
+
+步骤 1:找到配置文件路径
+
+- Linux/macOS:~/.config/uv/config.toml
+- Windows:%USERPROFILE%\.config\uv\config.toml(如 C:\Users\你的用户名\.config\uv\config.toml)
+
+步骤 2:创建/编辑配置文件
+
+```
+# Linux/macOS:用 vim 打开(若文件不存在会自动创建)
+vim ~/.config/uv/config.toml
+# Windows:用记事本打开
+Write-Host $env:USERPROFILE
+
+
+notepad %USERPROFILE%\.config\uv\config.toml
+```
+
+```toml
+# 阿里云镜像(推荐,稳定性好)
+[registries.pypi]
+index = "https://mirrors.aliyun.com/pypi/simple/"
+```
+
+
+
+
+
+
+
+
+
+
+
+> 不过网上推荐的都是直接设置环境变量 `UV_DEFAULT_INDEX`
+
+For Linux Users:
+
+```bash
+# 推荐使用清华源
+echo 'export UV_DEFAULT_INDEX="https://pypi.tuna.tsinghua.edu.cn/simple"'>> ~/.bashrc
+
+# 或者用阿里源
+# echo 'export UV_DEFAULT_INDEX="https://mirrors.aliyun.com/pypi/simple/"' >> ~/.bashrc
+
+# 让配置立即生效
+source ~/.bashrc
+```
+
+For Windows Users:
+
+ 这个只在当前会话生效,关闭会话后就会失效。
+```powershell
+$env:UV_DEFAULT_INDEX = "https://pypi.tuna.tsinghua.edu.cn/simple"
+```
+
+想永久生效就
+
+
+环境变量不知道去哪儿找可以直接 windows 搜索 `环境变量` 就可以找到。
+
+
+
+
+
+
+
+### 如果是已经有的项目,如何用 uv 同步包呢?
+
+如果是已经有的项目,你可以使用 `uv sync` 命令来同步项目的依赖。
+
+```bash
+uv sync
+```
+
+这将根据 `pyproject.toml` 中的配置,安装所有必要的依赖。
+
+
+
+
+
+### 运行代码
+
+使用 `uv run` 可以在项目的虚拟环境中执行命令,无需显式激活环境。
+
+```bash
+# 运行脚本
+uv run main.py
+
+# 运行工具
+uv run pytest
+```
+
+
+
+
+
+### 同步环境
+
+如果你拉取了别人的代码,或者手动修改了 `pyproject.toml`,可以使用 `sync` 命令同步环境:
+
+```bash
+uv sync
+```
+
+## 3. Python 版本管理
+
+uv 内置了 Python 版本管理功能,这意味着你不再需要安装 `pyenv` 或 `conda` 来管理不同的 Python 版本。
+
+```bash
+# 列出可用的 Python 版本
+uv python list
+
+# 安装特定版本的 Python
+uv python install 3.12
+
+# 为当前项目指定 Python 版本
+uv python pin 3.11
+```
+
+当你运行 `uv run` 或 `uv sync` 时,uv 会自动下载并使用项目指定的 Python 版本。
+
+这个也可以用镜像,不然走github国内很慢
+很简单
+
+
+
+```
+UV_PYTHON_INSTALL_MIRROR
+
+https://mirror.nju.edu.cn/github-release/astral-sh/python-build-standalone/
+```
+
+linux的话
+```bash
+export UV_PYTHON_INSTALL_MIRROR="https://mirror.nju.edu.cn/github-release/astral-sh/python-build-standalone/"
+```
+
+
+
+## 4. 脚本支持 (Script Support)
+
+uv 对单文件脚本的支持非常出色。你可以在脚本顶部声明依赖,uv 会自动下载并运行,且不会污染全局环境。
+
+创建一个 `example.py`:
+
+```python
+# /// script
+# requires-python = ">=3.11"
+# dependencies = [
+# "requests<3",
+# "rich",
+# ]
+# ///
+
+import requests
+from rich.pretty import pprint
+
+resp = requests.get("https://peps.python.org/api/peps.json")
+data = resp.json()
+pprint([(k, v["title"]) for k, v in data.items()][:10])
+```
+
+直接运行:
+
+```bash
+uv run example.py
+```
+
+uv 会自动解析头部元数据,创建一个临时环境并安装依赖,然后执行脚本。
+
+## 5. 工具管理 (Tool Management)
+
+类似于 `pipx`,uv 可以安装和运行全局的 Python 命令行工具。
+
+```bash
+# 临时运行一个工具 (例如 ruff)
+uvx ruff check .
+# 或者
+uv tool run ruff check .
+
+# 安装一个工具到全局
+uv tool install black
+```
+
+## 6. 兼容 pip 的接口 (Legacy Interface)
+
+如果你不想改变现有的工作流,只想利用 uv 的速度,可以使用它的 pip 兼容接口。
+
+```bash
+# 创建虚拟环境
+uv venv
+
+# 创建指定版本的虚拟环境
+uv venv --python 3.12
+
+# 激活环境 (Windows)
+.venv\Scripts\activate
+# 激活环境 (macOS/Linux)
+source .venv/bin/activate
+
+# 安装依赖 (替代 pip install)
+uv pip install requests
+
+# 从 requirements.txt 安装
+uv pip install -r requirements.txt
+
+# 生成锁定文件 (替代 pip-compile)
+uv pip compile pyproject.toml -o requirements.txt
+```
+
+## 总结
+
+uv 正在以惊人的速度重塑 Python 的开发体验。它不仅解决了"慢"的问题,更重要的是它试图统一碎片化的 Python 工具链。
+
+**迁移建议:**
+
+- **新项目**:直接使用 `uv init` 和 `uv add` 的工作流。
+- **老项目**:可以先用 `uv pip` 替代 `pip` 加速安装,时机成熟后迁移到 `pyproject.toml` 管理。
+- **脚本**:强烈推荐使用 `uv run` 运行带依赖声明的单文件脚本。
+
diff --git a/src/content/posts/开发日记/springboot项目logback配置.md b/src/content/posts/开发日记/springboot项目logback配置.md
new file mode 100644
index 0000000..7a4bce6
--- /dev/null
+++ b/src/content/posts/开发日记/springboot项目logback配置.md
@@ -0,0 +1,230 @@
+---
+title: 开发日记/springboot项目logback配置
+published: 2026-01-18T19:24:15
+description: ''
+image: 'https://blog.meowrain.cn/api/i/2026/01/18/vuaftq-1.webp'
+
+draft: false
+lang: ''
+category: '开发日记'
+tags:
+ - 'springboot'
+ - 'logback'
+---
+
+# 文件内容 可通用
+可以直接复制到项目的 `src/main/resources/logback-spring.xml` 文件中。
+
+
+
+```xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${CONSOLE_LOG_PATTERN}
+ UTF-8
+
+
+
+
+
+ ${LOG_FILE_PATH}/${time-month}/${time-month-day}/info.log
+
+ ${LOG_FILE_PATH}/${time-month}/${time-month-day}/info.%d{yyyy-MM-dd}.%i.log.gz
+ 100MB
+ 31
+ 100GB
+
+
+ ${FILE_LOG_PATTERN}
+ UTF-8
+
+
+
+ INFO
+
+
+
+ ${LOG_FILE_PATH}/${time-month}/${time-month-day}/error.log
+
+ ${LOG_FILE_PATH}/${time-month}/${time-month-day}/error.%d{yyyy-MM-dd}.%i.log.gz
+ 100MB
+ 31
+ 100GB
+
+
+ ${FILE_LOG_PATTERN}
+ UTF-8
+
+
+
+ ERROR
+ ACCEPT
+ DENY
+
+
+
+
+
+ 0
+ 512
+
+
+
+ 0
+ 512
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+## 配置详解
+
+### 1. 根节点配置 (``)
+
+```xml
+
+```
+
+* **scan="true"**: 配置文件如果发生改变,将会被重新加载。
+* **scanPeriod="10 seconds"**: 监测配置文件是否有修改的时间间隔,默认单位是毫秒。
+* **debug="false"**: 关闭 Logback 框架自身的内部状态信息打印,设置为 `true` 时可以在控制台看到 Logback 的加载过程,有助于排查 Logback 配置错误。
+
+### 2. 基础引用与变量定义
+
+#### 引入 Spring Boot 默认配置
+```xml
+
+```
+这行代码引入了 Spring Boot 预定义的日志配置,包含了控制台输出的彩色日志格式 `CONSOLE_LOG_PATTERN` 等常用变量。
+
+#### 获取 Spring 配置属性
+```xml
+
+```
+* ``: 允许从 Spring 的 `Environment` 中读取属性并暴露给 Logback。
+* 这里读取了 `spring.application.name`(应用名称)赋值给变量 `APP_NAME`,用于后续生成日志文件路径。
+
+#### 定义时间戳变量
+```xml
+
+
+```
+定义了两个时间戳变量,用于构建按月或按天归档的目录结构。
+
+#### 定义日志路径
+```xml
+
+```
+* `${LOG_PATH:-./logs/${APP_NAME}}`: 这是一个默认值语法。如果环境变量 `LOG_PATH` 存在,则使用它;否则使用 `./logs/${APP_NAME}`。
+
+### 3. 日志格式 (`FILE_LOG_PATTERN`)
+
+```xml
+
+```
+* `%d`: 日期时间。
+* `[%thread]`: 线程名。
+* `%-5level`: 日志级别(左对齐,5字符宽)。
+* `%logger{50}`: 类名(最大长度50,超长会智能缩写)。
+* `[%X{traceId:-}]`: 这是一个 MDC (Mapped Diagnostic Context) 变量。用于分布式链路追踪,如果 MDC 中有 `traceId` 则显示,否则显示 `-`。
+* `%msg`: 日志具体内容。
+* `%n`: 换行。
+
+### 4. 输出源 (Appenders)
+
+#### 控制台输出 (`CONSOLE`)
+使用 `ConsoleAppender` 将日志输出到标准输出,并直接复用了 Spring Boot 默认的 `CONSOLE_LOG_PATTERN`。
+
+#### 滚动文件输出 (`INFO_FILE` / `ERROR_FILE`)
+使用 `RollingFileAppender` 实现日志文件的滚动策略。
+
+* **滚动策略 (`SizeAndTimeBasedRollingPolicy`)**:
+ * **按时间滚动**: 每天生成一个新的日志文件 (`%d{yyyy-MM-dd}`).
+ * **按大小滚动**: 如果单天日志超过 `100MB` (`%i`),会切分出新文件。
+ * **历史保留**: `31` 保留最近 31 天的日志。
+ * **总大小限制**: `100GB` 限制所有日志文件总大小不超过 100GB。
+
+* **过滤器 (Filter)**:
+ * `INFO_FILE` 使用 `ThresholdFilter`: 记录 `INFO` 及以上级别(INFO, WARN, ERROR)。
+ * `ERROR_FILE` 使用 `LevelFilter`: **只**记录 `ERROR` 级别。
+ * `onMatch=ACCEPT`: 匹配 ERROR 则记录。
+ * `onMismatch=DENY`: 不匹配则丢弃。
+
+### 5. 异步处理 (`AsyncAppender`)
+
+```xml
+
+ 0
+ 512
+
+
+```
+* **作用**: 将日志写入操作放入独立线程执行,避免高并发下 IO 操作阻塞业务线程,提高应用性能。
+* **queueSize**: 异步队列深度,默认为 256,这里调整为 512。
+* **discardingThreshold**: 默认为队列剩余 20% 容量时丢弃 TRACE/DEBUG/INFO 日志。设置为 `0` 表示**不丢弃任何日志**,即使队列满了也阻塞等待,保证日志不丢失。
+
+### 6. 环境隔离 (``)
+
+```xml
+ ...
+ ...
+```
+Logback 支持 Spring 的 Profile 功能。
+* 当 `spring.profiles.active=dev` 时,激活 dev 块内的配置。
+* 当 `spring.profiles.active=prod` 时,激活 prod 块内的配置。
+
+当前配置中,`dev` 和 `prod` 都输出了 `CONSOLE`、`ASYNC_ERROR` 和 `ASYNC_INFO`,在实际生产环境中,通常会移除 `CONSOLE` Appender 以减少不必要的控制台输出性能损耗。