首页
关于
文章打赏记录
Search
1
项目一:Revit电缆自动布置
54 阅读
2
如何使用 LoRA 微调 DeepSeek R1
13 阅读
3
revit二次开发入门
10 阅读
4
Dynamo 连缀属性
5 阅读
5
第十四章结课考试
4 阅读
linux
AI
Dynamo
Python
C#编程技术基础
C#实战项目
随笔
登录
Search
标签搜索
CSharp
基础知识
Dynamo
数据应用
AI
BIM管理
TomHanck4
累计撰写
41
篇文章
累计收到
6
条评论
首页
栏目
linux
AI
Dynamo
Python
C#编程技术基础
C#实战项目
随笔
页面
关于
文章打赏记录
搜索到
41
篇与
的结果
2026-02-23
Ubuntu 24.04(内核 6.17)上对 UGREEN WiFi6 AX300(AIC8800)驱动的适配与安装过程
AIC8800 WiFi 驱动:6.17 内核适配与安装总结记一次在Ubuntu 24.04(内核 6.17)上对 UGREEN WiFi6 AX300(AIC8800)驱动的适配与安装过程。资源下载绿联官方驱动下载(Linux) 绿联 Wi-Fi 6 无线网卡 AX300 系列驱动(Linux 系统) 适用型号:CM760-25262、CM761-35263、CM860-75511、CM957-75614 | 文件版本:V1.6一、背景与问题终端沙箱报错 在 Cursor 中出现 “Terminal sandbox could not start”,与 Linux 6.2+ 的 AppArmor 有关。可安装官方 AppArmor 包或使用 ~/.cursor/sandbox.json 中 "type": "insecure_none" 临时关闭沙箱。驱动编译失败 执行 sudo apt install curl 时触发了未配置完成的 aic8800fdrvpackage,其 post-install 脚本在编译内核模块时失败,原因包括:内核 6.17 中 del_timer / del_timer_sync 已改为 timer_delete / timer_delete_sync5.4+ 中 wakeup_source_create/add/remove/destroy 已移除,需用 wakeup_source_register / wakeup_source_unregistercfg80211 回调 set_wiphy_params、set_tx_power 增加 radio_idx 参数cfg80211_rx_spurious_frame、cfg80211_rx_unexpected_4addr_frame 增加 link_id 参数定时器回调中 from_timer 需改为 container_of 等适配部分 switch 需要显式 fallthrough 以消除 -Wimplicit-fallthrough 报错二、源码修改清单(6.17 内核适配)驱动源码路径:aic8800_linux_drvier/drivers/aic8800/aic8800_fdrv/(及同目录下相关文件)。文件修改内容aicwf_tcp_ack.c增加 #include <linux/timer.h>rwnx_compat.h增加 #include <linux/timer.h>;6.2+ 用宏将 del_timer/del_timer_sync 映射为 timer_delete/timer_delete_sync;6.2+ 为 from_timer 提供兼容宏(实际多数处已改为 container_of)rwnx_wakelock.c5.4+ 使用 wakeup_source_register(dev,name) 与 wakeup_source_unregister(ws);rwnx_wakeup_init 改为接收 struct rwnx_hw * 以传入 dev;rwnx_wakeup_deinit 在 5.4+ 仅调用 wakeup_source_unregisterrwnx_wakelock.hrwnx_wakeup_init 声明改为 (struct rwnx_hw *, const char *);增加 struct rwnx_hw 前向声明rwnx_main.c增加 #include <linux/timer.h>;set_wiphy_params 在 6.2+ 增加 int radio_idx;set_tx_power 在 6.2+ 增加 int radio_idx;定时器回调中用 container_of(t, struct rwnx_hw, p2p_alive_timer) 等替代 from_timer;多处 switch 增加 fallthrough;rwnx_rx.c增加 #include <linux/timer.h>;6.2+ 对 cfg80211_rx_spurious_frame / cfg80211_rx_unexpected_4addr_frame 增加第三参数 link_id(传 -1);defrag_timeout_cb、reord_timeout_handler 中用 container_of(t, struct defrag_ctrl_info, defrag_timer) 等替代 from_timerrwnx_tx.c一处 switch 增加 fallthrough;aicwf_sdio.c定时器回调中用 container_of(t, struct aic_sdio_dev, timer) 替代 from_timer三、编译驱动在驱动目录下执行(需已安装对应内核头文件,如 linux-headers-$(uname -r)):cd /path/to/UGREEN_WiFi6_AX300_Driver_Linux_.../aic8800_linux_drvier/drivers/aic8800 make -C /lib/modules/$(uname -r)/build M=$(pwd) modules成功后会生成:aic_load_fw/aic_load_fw.koaic8800_fdrv/aic8800_fdrv.ko四、安装脚本说明原 install_setup.sh 使用 su -c,在无交互终端时无法输入密码。因此新增两个脚本,均在 项目根目录下的 aic8800_linux_drvier 中执行。1. install_with_sudo.sh(安装固件与 udev)复制 fw/aic8800DC 到 /lib/firmware/复制 tools/aic.rules 到 /etc/udev/rules.d/执行 udevadm trigger 与 udevadm control --reload若存在 /dev/aicudisk 等虚拟光驱设备则执行 eject使用:cd /home/fsy/Downloads/UGREEN_WiFi6_AX300_Driver_Linux_CM760-25262_CM761-35263_CM860-75511_V1.6/aic8800_linux_drvier ./install_with_sudo.sh按提示输入 sudo 密码即可。2. load_modules.sh(加载内核模块)先检查 aic_load_fw、aic8800_fdrv 是否已加载(lsmod)未加载则执行 sudo insmod ... 加载对应 .ko若已加载(例如之前装过 aic8800fdrvpackage),会提示“已在运行,跳过”,避免 “File exists” 报错使用:cd /home/fsy/Downloads/UGREEN_WiFi6_AX300_Driver_Linux_CM760-25262_CM761-35263_CM860-75511_V1.6/aic8800_linux_drvier ./load_modules.sh五、推荐操作顺序应用上述源码修改并完成编译(第三节)。在 aic8800_linux_drvier 目录执行:./install_with_sudo.sh。再执行:./load_modules.sh。使用 ip a 或 nmcli device wifi 等确认无线网卡是否出现并可用。六、若通过 deb 包安装若系统之前或之后通过 aic8800fdrvpackage 的 deb 安装,需保证其使用的源码与本次修改一致,或在安装前先移除该包再按本文档从源码编译并安装:sudo dpkg --remove --force-remove-reinstreq aic8800fdrvpackage # 仅当该包导致问题时然后再按第三、四节编译并运行 install_with_sudo.sh 与 load_modules.sh。文档基于当前驱动版本与内核 6.17.0-14-generic 整理。
2026年02月23日
0 阅读
0 评论
0 点赞
2026-02-23
Cherry Studio 在 WSL 中的安装说明
Cherry Studio 在 WSL 中的安装说明环境WSL2(Ubuntu Noble / 24.04)使用 WSLg 显示图形界面(Windows 11)1. 安装 deb 包cd "/mnt/c/users/12828/desktop/新建文件夹" sudo dpkg -i Cherry-Studio-1.7.19-amd64.deb若出现依赖错误,执行:sudo apt-get update sudo apt-get install -f仍有缺失依赖时可手动安装:sudo apt-get install libnotify4 libnss3 libxss1 xdg-utils libsecret-1-0然后再次执行:sudo dpkg -i Cherry-Studio-1.7.19-amd64.deb2. 声音库(解决 libasound.so.2)Ubuntu 24 中包名为 libasound2t64:sudo apt-get install libasound2t643. 启动方式可执行文件位于 /opt/Cherry Studio/,未加入 PATH,需用完整路径:/opt/Cherry\ Studio/CherryStudio可选:创建软链接,之后可直接用 cherrystudio 命令:sudo ln -sf "/opt/Cherry Studio/CherryStudio" /usr/local/bin/cherrystudio然后:cherrystudio4. 中文显示修复(方框 □□□□)安装中文字体:sudo apt-get install fonts-noto-cjk可选备用:sudo apt-get install fonts-wqy-zenhei安装后关闭并重新打开 Cherry Studio。5. Emoji 显示修复安装 emoji 字体并刷新字体缓存:sudo apt-get install fonts-noto-color-emoji fc-cache -fv可选:sudo apt-get install fonts-emojione fc-cache -fv安装后关闭并重新打开 Cherry Studio。6. 一键安装依赖(可选)若在新 WSL 或新系统上重装,可先执行以下命令再装 deb:sudo apt-get update sudo apt-get install -f libasound2t64 fonts-noto-cjk fonts-noto-color-emoji fc-cache -fv然后再执行本文第 1 步的 dpkg -i。7. 注意事项WSLg:需 Windows 11,WSL 2,图形会直接显示在 Windows 桌面。Windows 10:需在 Windows 安装 X 服务器(如 VcXsrv),并在 WSL 中设置 export DISPLAY=... 后再运行 Cherry Studio。每次修改字体或安装新字体后,建议重启 Cherry Studio 以生效。
2026年02月23日
0 阅读
0 评论
0 点赞
2026-02-22
基于 Windows 11 + AMD 8060S(统一内存 128GB)环境的llama.cpp 使用指南
llama.cpp 使用指南基于 Windows 11 + AMD 8060S(统一内存 128GB)环境整理。文件下载llama.cpp 程序(含 llama-cli、llama-server)官方 Releases 页面(推荐从这里选对应平台压缩包): https://github.com/ggml-org/llama.cpp/releasesWindows 常用构建(在当页的 Assets 里找):Vulkan(AMD 显卡推荐):llama-*-bin-win-vulkan-x64.zip仅 CPU:llama-*-bin-win-cpu-x64.zipCUDA(NVIDIA):llama-*-bin-win-cuda-*.zip 不要用 rocm / hip 的 Windows 包,在 Win 上易报错。官网说明: https://llama-cpp.com/GGUF 模型Hugging Face(搜索模型名 + GGUF): https://huggingface.co/models?search=ggufQwen 官方(如 Qwen3-Coder-Next): https://huggingface.co/Qwen 在模型页的 "Files and versions" 中选 .gguf 文件或分片包下载。ModelScope 魔搭(国内访问较稳,可搜 GGUF): https://www.modelscope.cn 模型库中搜索模型名或「GGUF」,在模型页下载 .gguf 或分片。Youtu-VL-4B-Instruct-GGUF(腾讯优图 4B 视觉语言模型): https://www.modelscope.cn/models/Tencent-YouTu-Research/Youtu-VL-4B-Instruct-GGUF/summary 在模型页「Files」中下载主模型 .gguf;若提供 mmproj-*.gguf 等多模态投影文件,需一并下载并与主模型同目录或按说明指定。Unsloth(预量化 GGUF,含 Dynamic 2.0 等): https://huggingface.co/unsloth 在 Unsloth 组织下按模型名选仓库,在 "Files and versions" 中下载 GGUF;说明见 https://docs.unsloth.ai。解压 llama.cpp 的 zip 后,将 llama-cli.exe、llama-server.exe 等与模型路径配置好即可使用(见下文)。1. 基本运行1.1 命令行(llama-cli)# 指定模型路径(分片模型只需指定第一个文件,会自动加载其余分片) ./llama-cli.exe -m "E:\models\Qwen3-Coder-Next\Qwen3-Coder-Next\Qwen3-Coder-Next-REAM-MXFP4_MOE.gguf"1.2 强制 CPU(GPU 报错时)./llama-cli.exe -m "你的模型路径.gguf" -ngl 0-ngl 0 表示不加载任何层到 GPU,全部用 CPU。2. Windows 下 GPU 后端说明后端说明ROCm/HIP主要为 Linux 设计,在 Windows 上对新卡(如 gfx1151)支持差,易出现 ROCm error: unspecified launch failure。VulkanAMD 在 Windows 上推荐,需使用带 Vulkan 的 llama.cpp 发行版。CPU-ngl 0,最稳定。若下载的是「Vulkan 版」但日志里仍出现 ROCm/ggml-hip,说明同目录下存在 HIP 相关 DLL 被优先加载。可临时重命名禁用:Rename-Item ggml-hip.dll ggml-hip.dll.bak Rename-Item hipblas.dll hipblas.dll.bak Rename-Item libhipblaslt.dll libhipblaslt.dll.bak然后重新运行,程序会使用 Vulkan。 注意:若本身是 ROCm 专用构建(如路径含 llamacpp-rocm),需从官方 releases 重新下载 Vulkan 或 MSVC 版本,而不是仅改 DLL。3. llama-server 部署3.1 基础启动./llama-server.exe -m "模型路径.gguf" --port 8080 --host 0.0.0.0启动后访问:http://localhost:8080。3.2 常用参数速查参数含义示例-m模型路径必填-c / --ctx-size上下文长度(token 数)-c 2048 或 --ctx-size 32768-ngl放到 GPU 的层数,0=全 CPU-ngl 99 全 GPU,-ngl 0 全 CPU--portHTTP 端口--port 8080--host监听地址,0.0.0.0 允许外网访问--host 0.0.0.0--threadsCPU 线程数--threads 8--batch-size批大小,影响显存/内存512、256、128--ubatch-size微批大小256、128、64--cache-type-kK cache 数据类型,用于省显存f16、q8_0、q4_1--cache-type-vV cache 数据类型同上--flash-attn使用 Flash Attention(若已编译)可省显存--alias模型别名(便于识别)--alias "Qwen3-Coder-Next"4. 显存/内存优化模型体积远小于「显存占用」是正常现象:除了权重,还有 KV cache 和推理时的中间结果。4.1 显存不足(例如 8GB 独显)减小上下文:-c 512 或 -c 1024减少 GPU 层数:-ngl 10 或 -ngl 0(纯 CPU)减小批处理:--batch-size 128 --ubatch-size 64示例(低显存):./llama-server.exe -m "模型路径.gguf" -c 512 -ngl 10 --port 8080 --threads 6 --batch-size 128 --ubatch-size 644.2 统一内存(如 8060S + 128GB 系统内存)可用较大上下文并尽量用 GPU,同时控制 KV cache 类型以控制总内存占用:使用 f16 KV cache(相对 f32 约减半):--cache-type-k f16 --cache-type-v f16更激进:--cache-type-k q8_0 --cache-type-v q8_0 或 q4_1按需限制上下文:-c 4096 或 -c 2048示例(统一内存 + 控制占用):./llama-server.exe -m "模型路径.gguf" -c 4096 -ngl 99 --port 8080 --threads 8 --batch-size 512 --ubatch-size 256 --cache-type-k f16 --cache-type-v f16若仍占用过高,可把上下文改为 -c 2048,并把 cache 改为 q4_1:./llama-server.exe -m "模型路径.gguf" -c 2048 -ngl 99 --port 8080 --threads 8 --batch-size 512 --cache-type-k q4_1 --cache-type-v q4_15. Qwen3-Coder-Next 推荐参数(官方风格)可与上面任意 server 命令组合使用:参数推荐值说明--temp1.0采样温度--top-p0.95nucleus sampling--top-k40top-k 采样--min-p0.01注意:llama.cpp 默认常为 0.05,Qwen 推荐 0.01--repeat-penalty1.0禁用重复惩罚示例(Qwen 推荐 + 内存优化):./llama-server.exe -m "E:\models\Qwen3-Coder-Next\Qwen3-Coder-Next\Qwen3-Coder-Next-REAM-MXFP4_MOE.gguf" --alias "Qwen3-Coder-Next" --ctx-size 32768 --temp 1.0 --top-p 0.95 --top-k 40 --min-p 0.01 --repeat-penalty 1.0 -ngl 99 --port 8080 --threads 8 --batch-size 512 --cache-type-k q4_1若仍觉内存/显存占用高,可把 --ctx-size 改为 16384 或 8192。6. 故障排查简表现象处理方向ROCm 报错、hipMemGetInfo 失败使用 -ngl 0 或换 Vulkan 版本;在 Windows 避免用 ROCm 专用构建。想用 Vulkan 却仍加载 HIP检查同目录 ggml-hip.dll 等,临时重命名或使用纯 Vulkan 发行版。显存/内存占用远大于模型大小降低 -c、减小 --batch-size/--ubatch-size,使用 --cache-type-k/--cache-type-v(如 q4_1、q8_0、f16)。大模型在小显存卡上跑不动减小 -ngl(或 -ngl 0),或换更小量化/更小参数量模型。7. 参考命令汇总纯 CPU、省内存:./llama-server.exe -m "模型路径.gguf" -c 1024 -ngl 0 --port 8080 --threads 8 --batch-size 256Vulkan GPU + 控制占用(统一内存):./llama-server.exe -m "模型路径.gguf" -c 4096 -ngl 99 --port 8080 --threads 8 --batch-size 512 --cache-type-k q4_1 --cache-type-v q4_1Qwen3-Coder-Next 推荐 + 32K 上下文:./llama-server.exe -m "E:\models\Qwen3-Coder-Next\Qwen3-Coder-Next\Qwen3-Coder-Next-REAM-MXFP4_MOE.gguf" --alias "Qwen3-Coder-Next" --ctx-size 32768 --temp 1.0 --top-p 0.95 --top-k 40 --min-p 0.01 --repeat-penalty 1.0 -ngl 99 --port 8080 --threads 8 --batch-size 512 --cache-type-k q4_1 --host 0.0.0.0按实际显存/内存和需求,调整 -c、-ngl、--batch-size 和 --cache-type-* 即可。8. Qwen3-Next-80B-A3B-Thinking(Thinking 推理模型)模型说明见 unsloth/Qwen3-Next-80B-A3B-Thinking。仅思维模式,需较长输出空间做推理;官方推荐采样:Temperature=0.6, TopP=0.95, TopK=20, MinP=0;常规请求建议 max 输出 32K token,复杂推理可设更大。推荐启动命令(统一内存 / 大内存):./llama-server.exe -m "E:\models\Qwen3-Next-80B-A3B\MXFP4_MOE\Qwen3-Next-80B-A3B-Thinking-MXFP4_MOE-00001-of-00003.gguf" --alias "Qwen3-Next-80B-A3B-Thinking" --ctx-size 32768 -n 32768 --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0 -ngl 99 --port 8080 --threads 8 --batch-size 512 --ubatch-size 256 --cache-type-k f16 --cache-type-v f16 --host 0.0.0.0参数取值说明-m分片第一文件路径自动加载 00002、00003--alias服务里显示的模型名客户端选模型时用--ctx-size32768上下文长度,可改为 65536/131072(更吃内存)-n32768单次最大生成 token,thinking 需足够长--temp0.6官方推荐--top-p0.95官方推荐--top-k20官方推荐--min-p0官方推荐-ngl99GPU 层数,显存不够可减小或 -ngl 0 纯 CPU--cache-type-k/vf16省内存,可改为 q4_1 进一步省省内存版(减小上下文与批大小):./llama-server.exe -m "E:\models\Qwen3-Next-80B-A3B\MXFP4_MOE\Qwen3-Next-80B-A3B-Thinking-MXFP4_MOE-00001-of-00003.gguf" --alias "Qwen3-Next-80B-A3B-Thinking" --ctx-size 16384 -n 16384 --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0 -ngl 99 --port 8080 --threads 8 --batch-size 256 --ubatch-size 128 --cache-type-k q4_1 --cache-type-v q4_19. Youtu-VL-4B-Instruct-GGUF(腾讯优图视觉语言模型)模型页: https://www.modelscope.cn/models/Tencent-YouTu-Research/Youtu-VL-4B-Instruct-GGUF/summary说明:腾讯优图 4B 视觉语言模型(VLM),支持图像 + 文本输入,需 带多模态支持的 llama.cpp。本地路径示例:E:\models\Youtu-VL-4B-Instruct\F16\Youtu-VL-4B-Instruct-F16.gguf 若该模型需 mmproj(多模态投影),将 mmproj-*.gguf 与主模型放同目录,启动时加 --mmproj "同目录\mmproj-xxx.gguf"。推荐启动命令(本地 F16 模型,含 mmproj):./llama-server.exe -m "E:\models\Youtu-VL-4B-Instruct\F16\Youtu-VL-4B-Instruct-F16.gguf" --mmproj "E:\models\Youtu-VL-4B-Instruct\F16\mmproj-Youtu-VL-4b-Instruct-BF16.gguf" --port 8080 --image-max-tokens 2048 --temp 0.1 --top-p 0.001 --repeat-penalty 1.05 -n 12280 --host 0.0.0.0参数取值说明-m主模型 .gguf 路径必填--mmprojmmproj-*.gguf 路径多模态视觉编码投影,与主模型同目录时按实际文件名填写--port8080HTTP 端口--image-max-tokens2048图像编码最大 token 数--temp0.1低温度,输出更稳定--top-p0.001nucleus 采样--repeat-penalty1.05抑制重复-n12280单次最大生成 token 数--host0.0.0.0允许外网访问按需可加:-ngl 99(GPU 层数)、--alias "Youtu-VL-4B"、-c 4096(上下文长度)。若显存/内存紧张,可减小 -n、-c 或 --image-max-tokens。10. GLM-4.7-Flash(MXFP4_MOE / Claude Opus 4.5 推理蒸馏版)模型页: https://huggingface.co/TeichAI/GLM-4.7-Flash-Claude-Opus-4.5-High-Reasoning-Distill本地路径示例:E:\models\GLM-4.7-Flash\MXFP4_MOE\GLM-4.7-Flash-Claude-4.5-Opus-i1-MXFP4_MOE_XL-exp.gguf说明:智谱 GLM-4.7-Flash 经 Claude Opus 4.5 High Reasoning 蒸馏的 MXFP4 MOE 量化版(Coding / Science / Deep Research)。单文件 GGUF;若为分片,-m 只填第一个文件即可。官方建议 llama.cpp 使用 --min-p 0.01(默认 0.05)。推荐启动命令(含官方采样参数):./llama-server.exe -m "E:\models\GLM-4.7-Flash\MXFP4_MOE\GLM-4.7-Flash-Claude-4.5-Opus-i1-MXFP4_MOE_XL-exp.gguf" --alias "GLM-4.7-Flash" --ctx-size 32768 --temp 1.0 --top-p 0.95 --min-p 0.01 --repeat-penalty 1.0 -ngl 99 --port 8080 --threads 8 --batch-size 512 --cache-type-k f16 --cache-type-v f16 --host 0.0.0.0参数取值说明-m模型 .gguf 路径必填;分片时填第一个文件--alias服务中显示的模型名客户端选模型用--ctx-size32768上下文长度,可按需改为 16384 等--temp1.0通用任务;工具调用/基准可用 0.7--top-p0.95通用;工具调用可改为 1.0--min-p0.01官方建议(llama.cpp 默认 0.05)--repeat-penalty1.0关闭或 1.0-ngl99GPU 层数,显存不足可减小或 -ngl 0 纯 CPU--port8080HTTP 端口--cache-type-k/vf16省内存,可改为 q4_1 进一步省显存/内存紧张时可将 --ctx-size 改为 16384,--batch-size 改为 256,或加 --cache-type-k q4_1 --cache-type-v q4_1。若效果不佳,可尝试 --temp 0.5 或 0.6。
2026年02月22日
3 阅读
0 评论
0 点赞
2026-02-18
AMD Ryzen AI MAX+ 395 ROCm WSL2 安装VLLM指南
AMD Ryzen AI MAX+ 395 ROCm WSL2 安装指南硬件信息CPU: AMD Ryzen AI MAX+ PRO 395GPU: AMD Radeon 8060S (40 CU, 32GB 显存)架构: gfx1151安装步骤1. Windows 端安装1.1 安装 AMD 驱动下载最新驱动:https://www.amd.com/en/support/download/drivers.html运行安装程序,选择 "Custom Install"只勾选 "AMD Chipset Drivers"(其他组件不需要)完成安装并重启1.2 安装 Windows SDK下载:https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/安装时只勾选 "Windows SDK for Desktop C++ Apps"记住安装路径(通常是 C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\)1.3 安装 WSL2# 检查 WSL 版本 wsl --version # 如果未安装,运行 wsl --install -d Ubuntu-24.042. WSL2 端安装2.1 进入 WSL2wsl2.2 检查 Ubuntu 版本lsb_release -a # 确认是 Ubuntu 24.042.3 安装 ROCm 7.2# 下载 ROCm 安装器 wget https://repo.radeon.com/amdgpu-install/7.2/ubuntu/noble/amdgpu-install_7.2.70200-1_all.deb # 安装 sudo apt install ./amdgpu-install_7.2.70200-1_all.deb # 更新系统 sudo apt update # 安装依赖 sudo apt install python3-setuptools python3-wheel # 添加用户到 render 和 video 组 sudo usermod -a -G render,video $LOGNAME # 安装 ROCm sudo apt install rocm2.4 验证 ROCm 安装# 检查 ROCm 目录 tree -L 1 /opt # 应该看到 rocm-7.2.0 目录2.5 编译安装 librocdxg安装编译工具sudo apt install cmake git build-essential克隆并编译# 克隆仓库 git clone https://github.com/ROCm/librocdxg.git cd librocdxg # 设置 Windows SDK 路径(根据实际安装路径调整) export win_sdk='/mnt/c/Program Files (x86)/Windows Kits/10/Include/10.0.26100.0/' # 编译 mkdir -p build cd build cmake .. -DWIN_SDK="${win_sdk}/shared" make sudo make install2.6 设置环境变量# 临时设置(当前会话有效) export HSA_ENABLE_DXG_DETECTION=1 # 永久设置(添加到 ~/.bashrc) echo 'export HSA_ENABLE_DXG_DETECTION=1' >> ~/.bashrc source ~/.bashrc2.7 验证 GPU 识别rocminfo预期输出:Agent 1: CPU (AMD RYZEN AI MAX+ PRO 395)Agent 2: GPU (gfx1151, AMD Radeon 8060S, 32GB 显存)3. 使用 ROCm3.1 使用 Docker 容器(推荐)docker run -it \ -v /usr/lib/wsl/lib/libdxcore.so:/usr/lib/libdxcore.so \ -v /opt/rocm/lib/librocdxg.so:/usr/lib/librocdxg.so \ -e HSA_ENABLE_DXG_DETECTION=1 \ --device=/dev/dxg \ --cap-add=SYS_PTRACE \ --security-opt seccomp=unconfined \ --ipc=host \ --shm-size 8G \ rocm/pytorch:latest在容器内测试:import torch print(torch.cuda.is_available()) # 应该返回 True print(torch.cuda.get_device_name(0)) # 显示 GPU 名称3.2 在 WSL2 虚拟环境中安装 PyTorch + vLLM步骤 1:创建工作目录和虚拟环境# 创建工作目录 mkdir -p ~/ai-workspace cd ~/ai-workspace # 创建虚拟环境 python3 -m venv vllm-env预期输出:无输出表示成功# 激活虚拟环境 source vllm-env/bin/activate预期输出:命令提示符前出现 (vllm-env)(vllm-env) fsy@HPAgent:~/ai-workspace$# 验证虚拟环境 which python预期输出:/home/fsy/ai-workspace/vllm-env/bin/python# 升级 pip pip install --upgrade pip预期输出:Successfully installed pip-24.x.x步骤 2:设置环境变量# 临时设置(当前会话有效) export HSA_ENABLE_DXG_DETECTION=1 # 永久设置(推荐) echo 'export HSA_ENABLE_DXG_DETECTION=1' >> ~/.bashrc source ~/.bashrc验证环境变量:echo $HSA_ENABLE_DXG_DETECTION预期输出:1步骤 3:安装 PyTorch(ROCm 7.1)pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.1预期输出:Collecting torch Downloading https://download.pytorch.org/whl/rocm7.1/torch-2.10.0%2Brocm7.1-cp312-cp312-linux_x86_64.whl (2.8 GB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.8/2.8 GB 10.5 MB/s eta 0:00:00 ... Successfully installed torch-2.10.0+rocm7.1 torchvision-0.x.x torchaudio-2.x.x注意:下载大小约 2.8-3.5 GB安装时间:5-15 分钟(取决于网速和磁盘速度)如果看起来卡住,可以用 watch -n 1 'du -sh ~/.cache/pip' 查看下载进度步骤 4:验证 PyTorch 和 GPUpython -c "import torch; print(f'PyTorch: {torch.__version__}'); print(f'CUDA available: {torch.cuda.is_available()}'); print(f'GPU: {torch.cuda.get_device_name(0) if torch.cuda.is_available() else \"N/A\"}')"预期输出:PyTorch: 2.10.0+rocm7.1 CUDA available: True GPU: AMD Radeon(TM) 8060S Graphics如果输出不正确:CUDA available: False → 检查环境变量 HSA_ENABLE_DXG_DETECTIONGPU: N/A → 运行 rocminfo 检查 GPU 是否被识别步骤 5:安装 vLLM(从源码编译)# 安装编译依赖 pip install ninja packaging wheel预期输出:Successfully installed ninja-1.x.x packaging-24.x wheel-0.x.x# 克隆 vLLM 仓库 cd ~/ai-workspace git clone https://github.com/vllm-project/vllm.git cd vllm预期输出:Cloning into 'vllm'... remote: Enumerating objects: xxxxx, done. remote: Counting objects: 100% (xxxx/xxxx), done. ...# 1. 先安装构建依赖(--no-build-isolation 时 pip 不会自动装,否则会报 No module named 'setuptools_scm') pip install "cmake>=3.26.1" ninja "packaging>=24.2" "setuptools>=77.0.3,<81.0.0" "setuptools-scm>=8" wheel "jinja2>=3.1.6" regex build "protobuf>=5.29.6" "grpcio-tools==1.78.0" # 2. 安装 vLLM(编译过程需要 10-20 分钟) # ROCm 必须加 --no-build-isolation,否则 pip 会用临时环境里的 CUDA 版 torch,导致报错 CUDA_HOME is not set pip install -e . --no-build-isolation预期输出:Obtaining file:///.../vllm Checking if build backend supports build_editable ... done ... Building wheels for collected packages: vllm Building wheel for vllm (pyproject.toml) ... done Successfully built vllm Successfully installed vllm-0.16.0rc2.dev276+ge24663c5a.rocm720 ...(最后一行会列出大量依赖;vllm 版本带 rocm720 等后缀表示 ROCm 构建成功,实际版本号随源码与 ROCm 版本变化。)注意:先装构建依赖:使用 --no-build-isolation 时 pip 不会安装 pyproject 里的构建依赖,需先执行上面的 pip install cmake ninja ...,否则会报 ModuleNotFoundError: No module named 'setuptools_scm'。ROCm 安装必须使用 --no-build-isolation:这样会使用当前环境已安装的 ROCm 版 PyTorch 参与构建;若不加,pip 会在临时环境中安装默认(CUDA)版 torch,构建时会报 AssertionError: CUDA_HOME is not set。编译时间:10-20 分钟CPU 使用率会很高(50-100%)如果编译失败,检查是否有足够的内存(建议 8GB+)步骤 6:验证 vLLMpython -c "import vllm; print(f'vLLM version: {vllm.__version__}')"预期输出(示例):vLLM version: 0.16.0rc2.dev276+ge24663c5a.rocm720步骤 7:测试 vLLM 推理(可选)创建测试脚本 test_vllm.py:from vllm import LLM, SamplingParams # 加载小模型测试 print("Loading model...") llm = LLM(model="facebook/opt-125m") # 生成文本 print("Generating text...") prompts = ["Hello, my name is"] sampling_params = SamplingParams(temperature=0.8, top_p=0.95, max_tokens=20) outputs = llm.generate(prompts, sampling_params) print("\nResults:") for output in outputs: print(f"Prompt: {output.prompt}") print(f"Generated: {output.outputs[0].text}")运行测试:python test_vllm.py预期输出:Loading model... INFO: Initializing an LLM engine with config: ... Generating text... Results: Prompt: Hello, my name is Generated: John Smith and I am a software engineer...步骤 8:启动 vLLM API 服务器(可选)# 启动 API 服务器(单 GPU) python -m vllm.entrypoints.api_server \ --model facebook/opt-125m \ --dtype float16 \ --port 8000预期输出:INFO: Started server process [xxxxx] INFO: Waiting for application startup. INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8000测试 API(另开终端):curl http://localhost:8000/generate \ -H "Content-Type: application/json" \ -d '{"prompt": "What is AMD?", "max_tokens": 50}'预期输出:{"text":["What is AMD?\nAMD (Advanced Micro Devices) is a semiconductor company that designs and manufactures computer processors..."]}常见问题问题 1:虚拟环境移动后无法安装包error: externally-managed-environment解决方案:虚拟环境不能移动,必须重新创建deactivate rm -rf ~/ai-workspace/vllm-env cd ~/ai-workspace python3 -m venv vllm-env source vllm-env/bin/activate # 重新安装 PyTorch(有缓存,很快) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.1问题 2:PyTorch 安装卡住解决方案:查看下载进度# 另开终端 watch -n 1 'du -sh ~/.cache/pip'如果确实卡住:# Ctrl+C 取消 pip cache purge pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.1 --timeout 1000 -v问题 3:vLLM 编译失败解决方案:检查内存和依赖# 检查可用内存 free -h # 如果内存不足,增加 swap sudo fallocate -l 8G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile # 重新编译(ROCm 需加 --no-build-isolation;若报 setuptools_scm 等缺失,先执行上文「安装 vLLM」里的构建依赖安装命令) pip install -e . --no-build-isolation版本信息WSL 版本: 2.6.3.0Ubuntu: 24.04 LTSROCm: 7.2librocdxg: 1.1.0AMD 驱动: 26.2.1 或更新版本PyTorch: 2.x(ROCm 7.1 版本)vLLM: 最新版本兼容性根据官方文档,支持以下 Ryzen AI 系列:AMD Ryzen AI Max+ 395 ✅AMD Ryzen AI Max 390AMD Ryzen AI Max 385AMD Ryzen AI 9 HX 375AMD Ryzen AI 9 HX 370AMD Ryzen AI 9 365参考资料ROCm 官方文档: https://rocm.docs.amd.com/librocdxg GitHub: https://github.com/ROCm/librocdxgAMD 驱动下载: https://www.amd.com/en/support/download/drivers.htmlWindows SDK: https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/故障排除GPU 未识别# 检查环境变量 echo $HSA_ENABLE_DXG_DETECTION # 检查设备节点 ls -la /dev/dxg # 重新加载 WSL # 在 PowerShell 中运行 wsl --shutdown wslDocker 容器无法访问 GPU确保运行容器时包含所有必需参数:--device=/dev/dxg-v /usr/lib/wsl/lib/libdxcore.so:/usr/lib/libdxcore.so-v /opt/rocm/lib/librocdxg.so:/usr/lib/librocdxg.so-e HSA_ENABLE_DXG_DETECTION=1安装日期: 2026-02-18测试状态: ✅ 成功识别 GPU,ROCm 正常工作
2026年02月18日
1 阅读
0 评论
0 点赞
2026-01-07
PostgreSQL 安装和使用指南
PostgreSQL 安装和使用指南目录概述安装 PostgreSQL基本配置启动和停止服务用户和权限管理数据库操作表和数据操作备份和恢复性能调优基础常用命令总结故障排除概述PostgreSQL 是一个功能强大的开源关系型数据库管理系统,支持 SQL 标准,并提供了许多现代特性,如复杂查询、外键、触发器、视图、事务完整性等。主要特性ACID 事务支持多版本并发控制 (MVCC)支持多种数据类型可扩展的类型系统丰富的索引类型全文搜索JSON 和 JSONB 支持存储过程和函数安装 PostgreSQL在 Ubuntu/Debian 上安装# 更新包列表 sudo apt update # 安装 PostgreSQL sudo apt install postgresql postgresql-contrib # 检查版本 psql --version在 CentOS/RHEL 上安装# 安装 PostgreSQL 仓库 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm # 安装 PostgreSQL sudo yum install -y postgresql15-server postgresql15-contrib # 初始化数据库 sudo /usr/pgsql-15/bin/postgresql-15-setup initdb # 启动服务 sudo systemctl start postgresql-15 sudo systemctl enable postgresql-15在 macOS 上安装# 使用 Homebrew 安装 brew install postgresql # 启动服务 brew services start postgresql使用 Docker 安装# 拉取 PostgreSQL 镜像 docker pull postgres:15 # 运行容器 docker run --name postgres-db -e POSTGRES_PASSWORD=mypassword -e POSTGRES_DB=mydb -p 5432:5432 -d postgres:15基本配置配置文件位置PostgreSQL 的主要配置文件通常位于:/etc/postgresql/15/main/postgresql.conf (Ubuntu/Debian)/var/lib/pgsql/15/data/postgresql.conf (CentOS/RHEL)/usr/local/var/postgres/postgresql.conf (macOS with Homebrew)常用配置参数# 监听地址 (默认只监听本地) listen_addresses = '*' # 端口 (默认 5432) port = 5432 # 最大连接数 max_connections = 100 # 共享缓冲区大小 (设置为系统内存的 25%) shared_buffers = 256MB # 工作内存 work_mem = 4MB # 维护工作内存 maintenance_work_mem = 64MB # 检查点间隔 checkpoint_completion_target = 0.9 # WAL 日志级别 wal_level = replica # 最大 WAL 发送者进程数 max_wal_senders = 10修改配置后重启服务# Ubuntu/Debian sudo systemctl restart postgresql # CentOS/RHEL sudo systemctl restart postgresql-15 # macOS brew services restart postgresql启动和停止服务系统服务管理# 启动服务 sudo systemctl start postgresql # 停止服务 sudo systemctl stop postgresql # 重启服务 sudo systemctl restart postgresql # 查看状态 sudo systemctl status postgresql # 开机自启 sudo systemctl enable postgresql手动启动# 切换到 postgres 用户 sudo -u postgres -i # 启动 PostgreSQL pg_ctl -D /var/lib/postgresql/15/main start # 停止 PostgreSQL pg_ctl -D /var/lib/postgresql/15/main stop用户和权限管理切换到 postgres 用户sudo -u postgres psql # 或者 sudo su - postgres psql创建用户-- 创建普通用户 CREATE USER username WITH PASSWORD 'password'; -- 创建超级用户 CREATE USER admin WITH SUPERUSER PASSWORD 'password'; -- 创建用户并指定权限 CREATE USER app_user WITH PASSWORD 'password' CREATEDB CREATEROLE;修改用户密码-- 修改密码 ALTER USER username PASSWORD 'new_password'; -- 强制修改密码 (下次登录时) ALTER USER username PASSWORD NULL;删除用户DROP USER username;角色和权限-- 创建角色 CREATE ROLE readonly; -- 授予权限 GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly; -- 撤销权限 REVOKE SELECT ON ALL TABLES IN SCHEMA public FROM readonly; -- 授予数据库连接权限 GRANT CONNECT ON DATABASE mydb TO username; -- 授予表权限 GRANT SELECT, INSERT, UPDATE, DELETE ON table_name TO username;数据库操作创建数据库-- 创建数据库 CREATE DATABASE mydb; -- 创建数据库并指定所有者 CREATE DATABASE mydb OWNER username; -- 创建数据库并指定编码 CREATE DATABASE mydb OWNER username ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8' TEMPLATE template0;连接数据库# 使用 psql 连接 psql -h localhost -U username -d mydb # 或者直接连接默认数据库 psql -U username mydb列出数据库-- 列出所有数据库 \l -- 或者 SELECT datname FROM pg_database;删除数据库-- 删除数据库 (需要超级用户权限) DROP DATABASE mydb;表和数据操作创建表-- 创建简单表 CREATE TABLE users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(255) UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 创建带有外键的表 CREATE TABLE posts ( id SERIAL PRIMARY KEY, user_id INTEGER REFERENCES users(id), title VARCHAR(200) NOT NULL, content TEXT, published_at TIMESTAMP );数据类型数据类型描述示例SERIAL自增整数id SERIALINTEGER整数age INTEGERVARCHAR(n)可变长度字符串name VARCHAR(100)TEXT无限长度文本content TEXTBOOLEAN布尔值active BOOLEANTIMESTAMP时间戳created_at TIMESTAMPDATE日期birth_date DATENUMERIC(p,s)精确数值price NUMERIC(10,2)JSONBJSON 数据metadata JSONB插入数据-- 插入单行数据 INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com'); -- 插入多行数据 INSERT INTO users (name, email) VALUES ('李四', 'lisi@example.com'), ('王五', 'wangwu@example.com'); -- 插入并返回数据 INSERT INTO users (name, email) VALUES ('赵六', 'zhaoliu@example.com') RETURNING id, name, email;查询数据-- 查询所有数据 SELECT * FROM users; -- 选择特定列 SELECT name, email FROM users; -- 带条件查询 SELECT * FROM users WHERE name LIKE '张%'; -- 排序 SELECT * FROM users ORDER BY created_at DESC; -- 分页 SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 20; -- 聚合查询 SELECT COUNT(*) FROM users; SELECT AVG(age) FROM users WHERE age IS NOT NULL; -- 连接查询 SELECT u.name, p.title FROM users u JOIN posts p ON u.id = p.user_id;更新数据-- 更新单行 UPDATE users SET name = '张三新' WHERE id = 1; -- 更新多行 UPDATE users SET active = true WHERE created_at < '2024-01-01'; -- 更新并返回 UPDATE users SET email = 'newemail@example.com' WHERE id = 1 RETURNING id, name, email;删除数据-- 删除特定行 DELETE FROM users WHERE id = 1; -- 删除所有数据 DELETE FROM users; -- 清空表 (保留表结构) TRUNCATE TABLE users;索引-- 创建索引 CREATE INDEX idx_users_email ON users(email); CREATE INDEX idx_users_name ON users(name); -- 创建唯一索引 CREATE UNIQUE INDEX idx_users_unique_email ON users(email); -- 创建复合索引 CREATE INDEX idx_posts_user_published ON posts(user_id, published_at); -- 查看索引 SELECT * FROM pg_indexes WHERE tablename = 'users'; -- 删除索引 DROP INDEX idx_users_email;备份和恢复使用 pg_dump 备份# 备份整个数据库 pg_dump -U username -h localhost mydb > backup.sql # 备份压缩格式 pg_dump -U username -h localhost -Fc mydb > backup.dump # 备份特定表 pg_dump -U username -h localhost -t users mydb > users_backup.sql # 只备份数据 pg_dump -U username -h localhost --data-only mydb > data_only.sql # 只备份结构 pg_dump -U username -h localhost --schema-only mydb > schema_only.sql使用 pg_restore 恢复# 从 SQL 文件恢复 psql -U username -h localhost -d mydb < backup.sql # 从压缩文件恢复 pg_restore -U username -h localhost -d mydb backup.dump # 创建数据库并恢复 createdb -U username newdb pg_restore -U username -h localhost -d newdb backup.dump逻辑备份脚本#!/bin/bash # 自动备份脚本 BACKUP_DIR="/var/backups/postgresql" DATE=$(date +%Y%m%d_%H%M%S) DB_NAME="mydb" DB_USER="postgres" mkdir -p $BACKUP_DIR pg_dump -U $DB_USER -h localhost -Fc $DB_NAME > $BACKUP_DIR/${DB_NAME}_${DATE}.dump # 删除7天前的备份 find $BACKUP_DIR -name "*.dump" -mtime +7 -delete echo "Backup completed: ${DB_NAME}_${DATE}.dump"物理备份 (使用 pg_basebackup)# 创建基础备份 pg_basebackup -U postgres -h localhost -D /var/lib/postgresql/backup -Fp -Xs -P # 恢复时停止服务,清理数据目录,复制备份文件,重启服务性能调优基础查看系统状态-- 查看当前连接 SELECT * FROM pg_stat_activity; -- 查看表大小 SELECT schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size FROM pg_tables ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC; -- 查看索引使用情况 SELECT schemaname, tablename, indexname, idx_scan, idx_tup_read, idx_tup_fetch FROM pg_stat_user_indexes ORDER BY idx_scan DESC; -- 查看慢查询 SELECT query, calls, total_time, mean_time, rows FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;配置参数调优# 内存配置 shared_buffers = 256MB # 通常设置为系统内存的 25% work_mem = 4MB # 单个查询可用的内存 maintenance_work_mem = 64MB # 维护操作内存 effective_cache_size = 1GB # 操作系统缓存大小 # 检查点配置 checkpoint_completion_target = 0.9 wal_buffers = 16MB max_wal_size = 1GB min_wal_size = 80MB # 查询规划器 random_page_cost = 1.1 # SSD 设为 1.1,HDD 设为 4.0 effective_io_concurrency = 200 # SSD 设为 200,HDD 设为 2索引优化-- 查看未使用的索引 SELECT schemaname, tablename, indexname FROM pg_stat_user_indexes WHERE idx_scan = 0; -- 查看重复索引 SELECT pg_size_pretty(sum(pg_relation_size(indexrelid))) as size, array_agg(indexrelid::regclass) as indexes FROM pg_index GROUP BY indrelid, indkey HAVING count(*) > 1; -- EXPLAIN 分析查询 EXPLAIN ANALYZE SELECT * FROM users WHERE name = '张三';表优化-- 重新组织表 (VACUUM) VACUUM users; -- 完全清理表 VACUUM FULL users; -- 重新建立索引 REINDEX TABLE users; -- 分析表统计信息 ANALYZE users;常用命令总结psql 命令# 连接数据库 psql -U username -d dbname -h host -p port # 执行 SQL 文件 psql -U username -d dbname -f file.sql # 导出查询结果 psql -U username -d dbname -c "SELECT * FROM users" -o output.txtpsql 内部命令-- 帮助 \? -- 列出数据库 \l -- 切换数据库 \c dbname -- 列出表 \dt -- 描述表结构 \d table_name -- 列出用户 \du -- 查看查询历史 \s -- 执行操作系统命令 \! ls -la -- 退出 \q系统管理命令# 查看 PostgreSQL 进程 ps aux | grep postgres # 查看日志 tail -f /var/log/postgresql/postgresql-15-main.log # 检查配置文件语法 postgres -C config_file # 重新加载配置 pg_ctl reload -D /var/lib/postgresql/15/main故障排除常见问题连接被拒绝检查服务是否启动:sudo systemctl status postgresql检查监听地址配置检查防火墙设置权限不足-- 检查用户权限 SELECT * FROM information_schema.role_table_grants WHERE grantee = 'username'; -- 授予权限 GRANT ALL PRIVILEGES ON DATABASE mydb TO username;磁盘空间不足-- 查看数据库大小 SELECT pg_size_pretty(pg_database_size('mydb')); -- 查看表大小 SELECT schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) FROM pg_tables ORDER BY pg_total_relation_size DESC LIMIT 10;查询性能问题-- 启用查询统计 CREATE EXTENSION IF NOT EXISTS pg_stat_statements; -- 查看慢查询 SELECT query, calls, total_time/calls as avg_time FROM pg_stat_statements ORDER BY total_time DESC LIMIT 5;恢复数据库# 停止服务 sudo systemctl stop postgresql # 清理数据目录 sudo rm -rf /var/lib/postgresql/15/main/* # 从备份恢复 sudo -u postgres pg_restore -C -d postgres /path/to/backup.dump # 启动服务 sudo systemctl start postgresql监控和维护-- 查看当前活动连接 SELECT datname, usename, client_addr, state, query_start FROM pg_stat_activity WHERE state != 'idle'; -- 查看锁定情况 SELECT blocked_locks.pid as blocked_pid, blocked_activity.usename as blocked_user, blocking_locks.pid as blocking_pid, blocking_activity.usename as blocking_user, blocked_activity.query as blocked_statement FROM pg_locks blocked_locks JOIN pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid JOIN pg_locks blocking_locks ON blocking_locks.locktype = blocked_locks.locktype AND blocking_locks.database IS NOT DISTINCT FROM blocked_locks.database AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation AND blocking_locks.page IS NOT DISTINCT FROM blocked_locks.page AND blocking_locks.tuple IS NOT DISTINCT FROM blocked_locks.tuple AND blocking_locks.virtualxid IS NOT DISTINCT FROM blocked_locks.virtualxid AND blocking_locks.transactionid IS NOT DISTINCT FROM blocked_locks.transactionid AND blocking_locks.classid IS NOT DISTINCT FROM blocked_locks.classid AND blocking_locks.objid IS NOT DISTINCT FROM blocked_locks.objid AND blocking_locks.objsubid IS NOT DISTINCT FROM blocked_locks.objsubid AND blocking_locks.pid != blocked_locks.pid JOIN pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid WHERE NOT blocked_locks.granted;扩展和插件-- 查看已安装扩展 SELECT * FROM pg_extension; -- 安装常用扩展 CREATE EXTENSION IF NOT EXISTS pg_stat_statements; -- 查询统计 CREATE EXTENSION IF NOT EXISTS uuid-ossp; -- UUID 支持 CREATE EXTENSION IF NOT EXISTS postgis; -- 地理信息支持 CREATE EXTENSION IF NOT EXISTS pg_trgm; -- 模糊匹配这个指南涵盖了 PostgreSQL 的基本安装、配置、使用和维护。如果你在使用过程中遇到特定问题,请提供详细的错误信息以获得更精确的帮助。
2026年01月07日
1 阅读
0 评论
0 点赞
1
2
3
4
...
9