Arch Linux 常用软件

本文部内容理论上基于Arch的发行版都可以使用本文进行安装。推荐的发行版本 Manajro EndeavourOS CachyOS 如果您安装好了manajro但是又不想重装系统,可以试下这个脚本来将Manjaro自动转换为Arch。此外,DHH的omarchy (github)也值得一试~ Arch 安装后必装的软件 通过archinstall 安装以后,是没图形界面的。需要安装下面的一些软件和配置 安装时,声音后端的选择: PulseAudio,历史悠久、最为常用; PipeWire,新生代,采用全新架构,整合多种音频后端(PulseAudio、ALSA和JACK),提供低延迟的音频体 连接无线网 iwctl # 进入交互式命令行 device list # 列出无线网卡设备名,比如无线网卡看到叫 wlan0 station wlan0 scan # 扫描网络 station wlan0 get-networks # 列出所有 wifi 网络 station wlan0 connect wifi-name # 进行连接,注意这里无法输入中文。回车后输入密码即可 exit # 连接成功后退出 启用网络 systemctl enable dhcpcd systemctl enable wpa_supplicant systemctl enable NetworkManager 蓝牙 sudo systemctl enable --now bluetooth 如果没这个服务,可能需要通过 paru -S bluetooth进行安装。 如果需要启用蓝牙音频支持,请安装 paru -S pulseaudio-bluetooth 蓝牙高级管理工具 paru -S blueman...

go-kratos使用备忘

我搭建的一个kratos项目模板,欢迎使用,仓库地址 需要特别注意的一些建议 API路由覆盖的问题 比如有两个接口 A get /v1/user/{user_id}和 B get /v1/user/profile如果A定义在B之前,那么B可能会被A覆盖路由。需要将A放到B之前。 JWT使用的建议 摘自极客时间课程《高并发系统实战课》 通讯过程必须使用 HTTPS 协议,这样才可以降低被拦截的可能。 要注意限制 token 的更换次数,并定期刷新 token,比如用户的 access_token 每天只能更换 50 次,超过了就要求用户重新登陆,同时 token 每隔 15 分钟更换一次。这样可以降低 token 被盗取后给用户带来的影响。 Web 用户的 token 保存在 cookie 中时,建议加上 httponly、SameSite=Strict 限制,以防止 cookie 被一些特殊脚本偷走。 配置文件 配置文件校验 配合buf的validate可以方便地进行配置文件的校验,在程序启动之前就对配置文件进行一次校验。下面是一个简单的proto配置定义 syntax = "proto3"; package conf; import "buf/validate/validate.proto"; import "google/protobuf/duration.proto"; option go_package = "github.com/tpl-x/kratos/internal/conf;conf"; message Bootstrap { Server server = 1; Data data = 2; Log log = 3; } message Server { message HTTP { string network = 1; string addr = 2; google....

Arch NVIDIA 驱动故障排查与修复指南

本文基于warp Terminal的修复操作使用deepseek进行复盘 问题描述 在EndeavourOS系统更新后,显示器因NVIDIA驱动问题停止工作,主要症状如下: nvidia-smi 命令报错: NVIDIA-SMI 失败:无法与NVIDIA驱动通信 检测不到显示设备: xrandr --listproviders 提供方数量:0 内核模块缺失: modprobe: 致命错误:在/lib/modules/6.16.6-arch1-1中找不到nvidia模块 问题根源 版本不匹配 nvidia=580.82.07-2 与 nvidia-utils=580.82.07-1 版本不一致 内核兼容性问题 预编译的nvidia驱动不支持新内核(6.16.6-arch1-1) 驱动类型限制 标准nvidia软件包无法自动重建内核模块 完整解决方案 1. 排除问题包进行系统更新 paru -Syyu --ignore nvidia,nvidia-utils,nvidia-settings --noconfirm 2. 卸载问题驱动并安装DKMS版本 paru -R nvidia --noconfirm # 移除问题驱动包 paru -S nvidia-dkms --noconfirm # 安装DKMS版本 3. 加载NVIDIA模块并验证 sudo modprobe nvidia # 强制加载驱动模块 nvidia-smi # 验证驱动状态 预期输出示例: +-----------------------------------------------------------------------------+ | NVIDIA-SMI 580.82.07 驱动版本: 580.82.07 CUDA版本: 12.1 | |-------------------------------+----------------------+----------------------+ | GPU 名称 持久性| Bus-Id 显存使用 | 易失性非校正ECC | | 风扇 温度 性能 功耗上限 | 显存使用率 | GPU利用率 计算模式 | |===============================+======================+======================| | 0 NVIDIA RTX 3050 关闭 | 00000000:01:00....

一些适合小朋友的电影合辑

资源整理来自网络,如有侵权,请联系我删除. 因为小朋友看不懂字幕,所以优先收集的是带多音轨的版本资源。 外国 蜘蛛侠 magnet:?xt=urn:btih:DF16B7D9B96E46D78DCC3241ECDBFA456C15CF90&dn=蜘蛛侠全家桶&tr=udp://tracker.openbittorrent.com:80/announce&tr=udp://tracker.opentrackr.org:1337/announce 哈利波特 magnet:?xt=urn:btih:BC9997161B52E3472156BBF5D51541E793BA8233&dn=[y5y4.com]哈利波特1-8合集.多语音轨字幕.珍藏版.Harry.Potter.Collection.2001-2011.BluRay.1080p.x265.10bit.DuoAudio-AIU 驯龙高手 magnet:?xt=urn:btih:53330826EE05220B5E79DDD3B734D6178DE69467&dn=【首发于高清影视之家 www.BBQDDQ.com】驯龙高手2[国粤英多音轨+简繁英双语字幕].How.to.Train.Your.Dragon.2.2014.UHD.BluRay.2160p.MultiAudio.DTS-X.MA.7.1.x265.10bit.HDR-ALT magnet:?xt=urn:btih:5E89BC62EA3443A7A28D4366A00CFA78959A0E32&dn=【首发于高清影视之家 www.BBQDDQ.com】驯龙高手3[国粤英多音轨+简繁英字幕].How.to.Train.Your.Dragon.The.Hidden.World.2019.UHD.BluRay.2160p.MultiAudio.TrueHD(Atmos).7.1.x265.10bit.HDR-ALT magnet:?xt=urn:btih:6F417913B9C669C5CBCC3C6FE1ABEE9D2F7BE953&dn=【首发于高清影视之家 www.BBQDDQ.com】驯龙高手[国粤英多音轨+简繁英字幕].How.To.Train.Your.Dragon.2010.UHD.BluRay.2160p.MultiAudio.DTS-X.MA.7.1.x265.10bit.HDR-ALT 漫威十年十八部大作中英双语 magnet:?xt=urn:btih:BE8EBED29654C90DDC59B2552E7A7FF5F4BB068B

在并发Go应用中保持顺序【译】

原文链接 https://destel.dev/blog/preserving-order-in-concurrent-go 并发是 Go 语言的一大优势,但它带来一个根本性的权衡:当多个 goroutine 同时处理数据时,自然顺序会被打乱。大多数情况下,这并无大碍——无序处理已足够,且更快速、更简单。 但有时,顺序至关重要。 当顺序至关重要 以下是三个需要保持顺序至关重要的实际场景: 实时日志增强 :您正在处理高流量的日志流,通过数据库或外部 API 为每个条目添加用户元数据。顺序处理无法跟上输入速率,但并发处理会打乱顺序,使得增强后的日志对依赖时间顺序的下游消费者变得不可用。 在文件列表中查找首个匹配项 :您需要从云存储下载文件列表,并找到包含特定字符串的第一个文件。并发下载速度更快,但完成顺序是乱序的——第 50 个文件可能比第 5 个文件先完成,因此您不能简单地返回找到的第一个匹配项,因为无法确定更早的文件是否也包含该字符串。 时间序列数据处理 :这个场景激发了我的原始实现。我需要下载 90 天的交易日志(每个约 600MB),提取部分数据,然后比较连续日期的数据以进行趋势分析。顺序下载需要数小时;并发下载可实现数量级的速度提升,但会破坏我进行比较所需的时间关联性。 挑战很明确:我们需要在不牺牲结果顺序可预测性的前提下获得并发处理的速度优势。这不仅是理论问题——更是影响实际大规模系统的现实约束。 本文将探讨我在生产级 Go 应用中开发并采用的三种方法。我们将构建一个并发的 OrderedMap 函数,它能在保持顺序的同时将输入通道转换为输出通道,并支持具有背压机制的无限流处理。通过对每种方法进行基准测试,我们将理解其权衡取舍,并在此过程中发现令人惊讶的性能洞见。 问题:为何并发会破坏顺序 让我们快速回顾一下为什么并发会打乱顺序。原因之一是各个 goroutine 处理任务的速度不同。另一个常见原因——我们无法预测 Go 运行时如何精确调度 goroutine。 例如,goroutine #2 可能在 goroutine #1 完成第 10 项之前就处理完了第 50 项,导致结果顺序错乱。这是并发处理的自然行为。 若想查看实际效果,这里有一个在 Go Playground 上的快速演示 。 设计理念:背压与缓冲的权衡 传统的顺序并发方法采用某种重排序缓冲区或队列。当工作线程计算出结果但尚不能写入输出时,该结果会被暂存于缓冲区中,直至能够按正确顺序写入。 在这种设计中,缓冲区通常可以无限制地增长。这种情况发生在: 输入存在倾斜 – 早期项目的处理时间比后续项目更长 下游消费者处理速度较慢 另一种常见方法是将所有结果暂存于内存中(切片/映射等)再进行排序。但我们今天的目标是构建一个流式解决方案,它能够: 最小化延迟 – 结果一旦准备就绪立即输出 处理无限输入流 – 支持任意大甚至无限的输入(例如从标准输入或网络流读取) 保持内存受限 – 避免不必要地在内存中累积结果 话虽如此,下面介绍的算法是背压优先的。如果工作协程还无法将结果写入输出通道,它就会阻塞。这种设计受内存限制,并保持了开发者对 Go 通道行为的预期。...

Zsh自动完成文件的一个例子

亚马逊发布了kiro ,基于Claude,于是下载安装文件,发现在它的安装文件里面有那么一个文件。 文件内容如下 #compdef kiro local arguments arguments=( '(-d --diff)'{-d,--diff}'[compare two files with each other]:file to compare:_files:file to compare with:_files' \*'--folder-uri[open a window with given folder uri(s)]:folder uri: ' \*{-a,--add}'[add folder(s) to the last active window]:directory:_directories' '(-g --goto)'{-g,--goto}'[open a file at the path on the specified line and column position]:file\:line[\:column]:_files -r \:' '(-n --new-window -r --reuse-window)'{-n,--new-window}'[force to open a new window]' '(-n --new-window -r --reuse-window)'{-r,--reuse-window}'[force to open a file or folder in an already opened window]' '(-w --wait)'{-w,--wait}'[wait for the files to be closed before returning]' '--locale=[the locale to use (e....

使用go编写一个简单的人脸识别服务

需要下载相关的模型 https://github.com/Kagami/go-face-testdata 下面的models 代码实现 代码如下 package main import ( "encoding/base64" "encoding/json" "errors" "fmt" "io" "log" "math" "net/http" "os" "path/filepath" "strconv" "sync" "time" "unsafe" "github.com/Kagami/go-face" "github.com/gorilla/mux" ) // Config 配置结构 type Config struct { Port string `json:"port"` ModelsDir string `json:"models_dir"` UploadsDir string `json:"uploads_dir"` TempDir string `json:"temp_dir"` DataFile string `json:"data_file"` MaxFileSize int64 `json:"max_file_size"` DefaultThreshold float32 `json:"default_threshold"` LogLevel string `json:"log_level"` } // Person 人员结构(支持多样本) type Person struct { ID int `json:"id"` Name string `json:"name"` Samples []FaceSample `json:"samples"` Created time....

通过比较两个 Go pprof文件来发现性能问题【译】

原文链接 https://www.dolthub.com/blog/2025-06-20-go-pprof-diffing/ 我们正在努力进行兼容性工作 Doltgres,世界上首个且唯一的版本控制兼容 Postgres 的 SQL 数据库。这意味着它能够开箱即用地与 Postgres 兼容的每一款库和工具协同工作。近来我们投入了大量精力在 SQLAlchemy 上,这是一款流行的 Python ORM。他们的 MySQL 集成与 Dolt 配合完美无缺,但他们的 Postgres 版本显然完全不同,严重依赖 pg_catalog 表。一位客户尝试使用后发现存在许多空白 ,因为 Doltgres 未将系统表(例如 dolt_log)包含在 pg_catalog 表中。所以我修复了这个问题,但这导致我们其中一个测试套件出现了神秘的性能退化,速度慢了 3 倍。 费了相当大的心思才弄清楚为什么这样一个看似无害的更改会导致性能出现如此巨大的差异。最终,最有帮助的是一个令人惊叹的 Go 工具链工具:使用 -base 选项来可视化两个性能分析之间的差异。 pprof 使用 pprof 对两个 profile 进行差异比较 Go 自带了一个强大的性能分析工具,pprof。与某些其他语言不同,您必须在代码中显式启用它才能获取性能分析结果;您不能事后进行或使用命令行标志。这很简单,但您必须编写代码来实现它。在我们的案例中,我将它直接放置在被分析的性能测试方法中。 func TestRegressionTests(t *testing.T) { // We'll only run this on GitHub Actions, so set this environment variable to run locally if _, ok := os.LookupEnv("REGRESSION_TESTING"); !ok { // t....

Git Submodule Update 命令备忘笔记

核心命令差异分析 git submodule update 行为:将子模块检出到父仓库记录的特定提交(commit hash) 特点:保持与父仓库 .gitmodules 和索引中记录的版本一致 适用场景:需要精确重现项目某个时间点的状态 局限性:不会拉取远程最新提交,只同步到父仓库索引中记录的版本 git submodule update --remote --recursive 行为:将子模块更新到远程分支的最新提交 特点:忽略父仓库记录的提交,直接拉取远程最新版本 适用场景:需要获取子模块的最新开发进度 常见困惑:为什么普通 update 拉取不到最新版本? 问题现象 许多开发者会遇到这种情况: # 执行普通更新,发现子模块没有更新到最新版本 git submodule update # 但是使用 --remote 参数却能拉取到最新版本 git submodule update --remote --recursive 根本原因分析 这个现象的核心在于 Git 子模块的版本绑定机制: 父仓库记录的是具体提交:当你添加子模块时,父仓库会在其索引中记录子模块的具体 commit hash 普通 update 遵循绑定版本:git submodule update 只会将子模块检出到父仓库记录的那个具体提交 –remote 忽略绑定版本:git submodule update --remote 会直接从远程仓库拉取最新提交 实际演示场景 # 查看当前子模块状态 git submodule status # 输出示例:-a1b2c3d4 path/to/submodule (v1.0-5-ga1b2c3d) # 父仓库记录的是 a1b2c3d4 这个提交 # 即使远程仓库已经有新的提交 e5f6g7h8 # 使用普通 update git submodule update # 子模块仍然停留在 a1b2c3d4 # 使用 --remote 参数 git submodule update --remote # 子模块更新到最新的 e5f6g7h8 详细参数说明 --remote 参数 # 更新到远程分支最新版本 git submodule update --remote # 指定远程分支 git submodule update --remote --branch main --recursive 参数 # 递归更新嵌套的子模块 git submodule update --recursive # 组合使用 git submodule update --remote --recursive 其他常用参数 # 强制更新(丢弃本地修改) git submodule update --force # 初始化并更新 git submodule update --init --recursive # 并行更新(提高速度) git submodule update --jobs 4 配置选项管理 局部配置(仅当前仓库) 设置子模块默认更新行为 # 设置特定子模块跟踪远程分支 git config -f ....

Claude Code使用笔记

来自https://x.com/shao__meng/status/1950196917595754662的ClaudeCode技巧 安装 你需要有nodejs这样的环境,bun没进行测试.需要安装npm或者pnpm包管理器 安装 Claude Code nodejs环境 pnpm install -g @anthropic-ai/claude-code bun环境 Option 1: Install globally and run bun add -g @anthropic-ai/claude-code bun run --bun claude Option 2: Use bunx to run directly bunx --bun @anthropic-ai/claude-code Add MCP Server (This works!) You can add the MCP server using this command: claude mcp add context7 -- bunx -y @upstash/context7-mcp deno环境 安装Deno curl -fsSL https://deno.land/install.sh | sh 全局按照Claude code deno install --global -A npm:@anthropic-ai/claude-code 将 ~/....