- 博客(972)
- 资源 (6)
- 收藏
- 关注
原创 go 中 GOMAXPROCS 详解
不是物理核心数,而是:包含超线程(Hyper-Threading)包含容器 / cgroup 限制后的 CPU 数例如:4 核 8 线程的机器→ 默认可能是 8Docker 限制 2 核→ 默认是 24 核 CPU → 默认 GOMAXPROCS = 48 核 CPU → 默认 GOMAXPROCS = 8传 0 表示“只读取,不修改”。从Go 1.5开始:默认值改为不再默认 1默认是 1那时多核不会自动利用。
2026-02-08 23:03:00
390
原创 goroutine 栈是如何“自动扩容”的?
goroutine 初始栈很小(≈2KB),但可以自动变大。那它是怎么做到的?函数调用前做栈检查→ 不够则调用 morestack→ 分配更大连续栈→ 复制旧栈→ 修正指针→ 继续执行morestack连续栈复制指针修正。
2026-02-07 22:11:00
421
原创 为什么 goroutine 比线程轻?
很多人听说:goroutine 很轻,可以开几十万但为什么轻?到底轻在哪里?我们从内存、创建成本、切换成本、调度方式四个维度拆开讲清楚。小栈(2KB 起步)动态栈增长用户态创建用户态切换M:N 调度复用线程这五点叠加,才造就了“几十万 goroutine”。
2026-02-07 22:02:00
407
原创 Go 如何避免频繁抢占?
能抢占”和“频繁抢占”是两回事。上下文切换开销大cache 失效调度成本增加性能下降所以 Go 的设计目标是:能抢占,但不会乱抢占。我们一步步讲清楚它是怎么控制频率的。1️⃣ 有时间片阈值(≈10ms)2️⃣ 只标记抢占,不立即中断3️⃣ 只在安全点真正切换4️⃣ 只抢占长时间运行的 G5️⃣ 不重复发送信号Go 通过:时间片阈值 + 抢占标志 + 安全点 + 信号节流机制避免了频繁抢占。
2026-02-07 21:45:00
687
原创 Go 是如何做抢占式调度的?
先理解什么是“抢占”。一句话版本:Go 通过向线程发送信号,在安全点打断 goroutine,实现异步抢占式调度。时间片到→ 标记抢占→ 发信号→ 跳到调度器→ 切换 goroutine。
2026-02-07 21:34:00
291
原创 如何理解 Go 的调度模型,以及 G / M / P 各自的职责
G 是任务M 是执行者P 是调度资源M 必须拿到 P 才能执行 GG = 干什么M = 谁干P = 批准干 + 排队系统如果你以后面试,可以这样回答:Go 使用 GMP 调度模型。G 表示 goroutine,是待执行的任务。M 是操作系统线程,真正执行代码。P 是调度资源,维护本地 goroutine 队列。M 必须绑定 P 才能执行 G。Go 通过本地队列 + 工作窃取算法,实现高效并发调度。
2026-02-07 21:30:00
417
原创 这大概是我读过关于AI大模型最全面、好读又易懂的文章了
作者:白玉光正如李飞飞在她的自传中的说的:人工智能算法不是像传统算法那样,被告知该做什么,而是通过数据来学习该做什么,这也是本文想要表达的核心内容。导读:推开AI的门,你是站在门外怕迟到的人。很多人害怕迟到,害怕在众目睽睽之下,被视作一个犯错的学生。就如同,AI“呼的一下”就来了,并且发展迅猛,很多人也怕被它甩在后面,而我就是其中之一。神经网络是了解AI大模型无法绕过的话题,是现代大模型的基石。
2026-02-07 15:57:00
639
原创 Docker 容器 HTTPS 请求超时(TLS handshake timeout),原来是 MTU 在捣乱
最近遇到一个很头疼的问题:但奇怪的是:从容器里ping目标域名/IP 是通的,而且延迟也很正常用测试,也卡在 TLS 握手阶段,半天出不来结果乍一看像网络不通,但 ping 又没问题,DNS 也解析正常,简直让人怀疑人生。容器 HTTPS 握手超时 + ping 通 → 十有八九是 MTU 惹的祸尤其是用云主机、自建 K8s、OpenStack、VPN、Overlay 网络的时候,优先检查宿主机 MTU 和 Docker 默认 1500 是否匹配。
2026-02-07 15:30:00
674
原创 Git 提交后发现作者信息错了,如何安全修复已 push 的历史?
提交并 push 完代码后,发现 Git 的 author name / email 设置错了,导致贡献记录、头像显示异常。
2026-01-17 09:50:00
322
原创 Docker Compose 修改配置后 restart 不生效的原因及正确做法
在使用 Docker Compose 管理容器时,经常遇到一种情况:修改了(或)中的配置(如端口、环境变量、卷挂载、command 等),执行后却没有任何变化。
2026-01-14 11:25:00
297
原创 如何更好理解分布式中的CAP
P → Partition tolerance 分区容忍(网络分区容忍)分区就是:这些机器之间的网络突然出问题了,导致一部分机器跟另一部分机器“失联”了。但这是不可避免的,因为现实世界的网络不可能100%可靠。“分区容忍”,系统被劈成孤岛了,它还得继续工作,不能直接整体崩溃。P的本质要求是:系统要能“容忍”这种网络分裂的局面,继续提供服务(哪怕服务质量下降)。如果系统没有分区容忍,一个服务失联,其他服务器就停止运行,等待信号恢复,防止数据出现不一致,但这样做太极端了。
2026-01-13 21:40:00
376
原创 grafana 二次开发,制作镜像流程
根据 tag 创建 git分支,git checkout -b 分支名 标签名。启动 grafana,通过。
2026-01-11 13:41:00
369
1
原创 k8s The node had condition:[DiskPressure]
在查看pod运行状态时,发现有的pod的状态是Evicted,通过describe去查看发现了的报错原因是kubelet检测到本地磁盘使用率超过了85%,这是kubelet方法只有两种,要么清理磁盘或者磁盘扩容,要么就是修改 kubelet 的配置。
2026-01-11 13:37:00
346
原创 Docker 自定义桥接网络下容器内无法解析域名及无外部网络访问的完整排查与解决
在 Ubuntu 20.04 上的一台曾作为 Kubernetes 节点的服务器,退役后直接用于运行 docker-compose 部署的业务容器。使用自定义桥接网络的容器无法解析外部域名,且无法访问外部网络(ping 外部 IP 100% 丢包),而使用模式的容器一切正常。
2026-01-11 13:32:00
1086
原创 Docker Compose 解决服务间 DNS 解析失败问题
在使用 Docker Compose 部署微服务架构时,发现部分服务无法通过容器名称解析其他服务,导致服务启动失败并进入重启循环。分层排查:从基础设施(Elasticsearch)到网络层(DNS)逐步排查日志分析:通过容器日志快速定位问题类型网络测试:使用简单的测试容器验证网络连通性配置检查:检查 Docker 守护进程的配置参数。
2026-01-11 13:28:00
487
原创 GVM:Go 版本管理器安装与使用指南
Go 语言(Golang)发展迅速,经常需要切换不同版本来进行开发、测试或兼容旧项目。GVM(Go Version Manager,由 moovweb 开发)是一个经典的 Go 版本管理工具,它可以轻松安装、管理多个 Go 版本,并切换使用。虽然 GVM 项目已不再活跃维护(最后更新在 2023 年),但它在许多场景下仍然可用,尤其是支持从二进制直接安装现代 Go 版本(如 go1.25.x)。
2026-01-07 22:44:00
810
原创 Docker Compose 两种安装与使用方式详解(适用于 Docker 19.03 版本)
在实际运维中,我们经常会遇到不同机器上 Docker 版本不一致的情况,尤其是很多生产服务器还在运行较老的 Docker Engine 版本(如 19.03.x)。方式一:独立二进制版(docker-compose,带连字符)—— 经典的 Compose V1方式二:CLI 插件版(docker compose,无连字符)—— 现代的 Compose V2/V5本文以 Docker 19.03.15(Ubuntu 20.04)为例,详细对比这两种方式的安装、使用和特点,帮助你快速选择适合自己的方案。
2026-01-06 11:17:00
400
原创 Kubernetes 节点安全维护全流程:从驱逐 Pod 到彻底清理残留
在 Kubernetes 集群运维中,经常需要对单个节点进行维护,比如升级内核、重装 NVIDIA 驱动、扩容磁盘甚至重装系统。安全地将节点隔离出来,确保不影响集群其他部分,同时彻底清理本地残留,避免容器和 Pod 反复重建。下面分享一套经过实战验证的完整流程,适用于大多数基于 kubeadm 或类似方式部署的集群(版本 v1.20+ 均适用)。cordon 阻止调度强制删除 Pod停止 kubelet 让节点 NotReady(阻止重建)彻底清理本地残留。
2026-01-06 10:40:00
478
原创 docker compose up 命令,默认配置文件自动查找规则
如果你经常使用 Docker Compose 来管理多容器应用,一定会遇到这样的场景:在项目目录下直接敲,然后它就“神奇地”找到了你的配置文件。但如果你没指定-f参数,它到底是怎么找到文件的呢?Docker Compose 的配置文件查找规则其实非常人性化:既保留了对老项目的兼容性,又在推动大家向更现代的命名方式迁移。建议所有新项目立即切换到,既符合官方推荐,也能避免未来可能的兼容性困扰。下次运行时,不妨检查一下你的项目里用的是哪个文件名——也许是时候重命名了呢?
2026-01-05 09:42:00
536
原创 Mac 使用 React-Native 使用无线调试商米机,配合Stripe 终端
场景:Mac 用 React-Native 调试 Stripe 终端,商米机 USB-A 口插终端,USB-C 口插电脑。现象:电脑线一拔,终端就能被识别;一插上,终端直接消失。原因:商米机只有一个 USB 控制器,要么当 Device(被 PC 调试),要么当 Host(去枚举终端),二者互斥。解法:把调试通道从 USB 迁到 Wi-Fi,让 USB-A 口永远留给 Stripe 终端。下面 5 分钟搞定。
2026-01-01 18:44:00
489
原创 macOS 使用 conda,同时本地安装了python,遇到 ModuleNotFoundError: No module named ‘xxx‘` 解决
我在激活的 Conda 环境中执行,安装成功。。明明环境激活了,包也装好了,为什么就是找不到?我的 conda 已经加入到本地环境变量中了。macOS + Conda 用户,如果同时安装了 python.org 官方版 Python,极容易踩 alias 坑。建议优先使用 Conda/Miniconda 管理所有 Python 环境,避免多版本冲突。养成习惯:遇到 ModuleNotFoundError 时,先用和检查一下实际执行的是哪个解释器。
2025-12-27 16:04:00
520
原创 git本地提交后,解决push被拒绝 error: failed to push some refs to
下午改完需求结果终端突然翻脸:Git 贴心地提示:先 把远程新提交合并进来。我照做,却又被泼一盆冷水:一句话总结:本地与远程分叉了,Git 不知道听谁的,干脆罢工。我不想保留本地这次 commit,只想让本地代码完全回到远程最新状态,相当于“我什么都没改”。于是目标变成:撤回本地 commit,并丢弃对应改动。先把远程最新状态拉下来(只更新远程跟踪分支,不影响本地)强制让当前分支指针回到远程版本,同时清空工作区 会连同工作区一起回退,本地改动全部丢失,请确保不需要它们。如果只想保留改
2025-12-20 11:32:00
372
原创 LLaMa-Factory 使用 Llama-3-8B-Instruct 在 NVIDIA 双卡 Quadro P5000 16G 环境跑通4bit模型微调全过程
由于 P5000 VRAM 有限,我们优先使用 QLoRA(4-bit 量化)模式进行高效微调,避免 OOM(内存不足)错误。
2025-12-10 22:43:00
419
原创 php 7.4 配置安装php-zbarcode扩展
不是 PHP 官方扩展(这是一个较旧的仓库,最后更新于多年前,但支持 PHP 5.x 到 7.x,包括 7.4。克隆后需检查兼容性并编译。(这个 fork 明确支持 PHP 7,并修复了部分崩溃 bug,适合 PHP 7.4 使用。我将使用进行编译安装扩展。
2025-11-26 20:19:00
350
原创 git 清理未跟踪文件
在 Git 中,“清理未跟踪文件”指的是删除工作区里那些的文件和文件夹(比如编译生成的文件、node_modules、log 文件、.env 等)。
2025-11-20 09:11:00
249
原创 NATS教程:使用 Docker 部署,并测试 WebSocket 连接,Node 客户端 nats 连接,浏览器实时通信
NATS 是一个高效的开源消息系统,支持 WebSocket 作为传输层,这允许浏览器或其他 Web 客户端直接连接到 NATS 服务器。组件地址说明普通客户端(Node/Go)推荐后端使用,性能最高WebSocket 客户端浏览器、前端直接连接HTTP 监控查看服务器状态Docker 镜像官方最小镜像 ~10MBNode.js 库最新版 2.11+浏览器库零依赖,直接 script 引入。
2025-11-18 09:22:00
544
原创 LLaMA-Factory 使用 Qwen2-1.5B-Instruct 在华为 Ascend NPU docker环境上进行模型微调
Atlas A2训练系列(Atlas 800T A2, Atlas 900 A2 PoD, Atlas 200T A2 Box16, Atlas 300T A2)Atlas 800I A2推理系列(Atlas 800I A2)数据集文件,alpaca_gpt4_zh_50.json。我的环境是华为昇腾 910b 系列,所以自己制作镜像。数据集描述文件,dataset_info.json。默认情况下 LLaMA-Factory 镜像有。下载完整模型库到指定文件夹中。npu A2版本的镜像。
2025-11-17 15:34:00
508
原创 大模型微调的本质、原理与应用
通过微调,可以使模型更好地适应特定领域的需求和特征。大模型微调是利用特定领域的数据集对已预训练的大模型进行进一步训练的过程。大模型微调的步骤:在选定相关数据集和预训练模型的基础上,通过设置合适的超参数并对模型进行必要的调整,使用特定任务的数据对模型进行训练以优化其性能。大模型微调的方式:可通过全量调整所有参数以充分适应新任务,或采用参数高效微调技术仅优化部分参数以实现快速且低成本的迁移学习。这一步与传统的fine-tuning类似,即使用标注过的数据来调整预训练模型的参数,使其更好地适应特定任务或领域。
2025-10-30 11:15:00
677
原创 kubectl describe 命令输出中,带有 # 前缀参数解释
在 Kubernetes 的命令输出中,liveness 和 readiness 探针(probe)的阈值字段如#success=1和#failure=3带有前缀是,并且这是 Kubernetes 的标准显示方式。
2025-10-30 09:22:00
310
原创 k8s 默认进入容器的用户是什么
在 Kubernetes(k8s)中,使用命令进入容器时,默认用户取决于容器镜像(Dockerfile)中定义的USER指令。如果镜像未指定任何用户(这是大多数基础镜像如ubuntu或alpine的默认情况),则默认用户为(UID 0)。
2025-10-30 09:18:00
445
原创 git 舍弃当前所有修改
可选:同时清理未跟踪的文件(如新添加的文件)(包括工作区和暂存区的更改)在 Git 中,如果你想要。已提交的内容,只影响。
2025-10-17 07:22:00
230
原创 linux 修改本地时区
虽然现代Linux发行版更倾向于使用timedatectl,但了解如何手动修改这些文件也是有帮助的。不过,直接修改这些文件通常不推荐,因为它可能会绕过某些系统级别的配置管理工具。对于使用systemd的系统(如最新的Ubuntu、Fedora、CentOS 7及以上版本等),可以使用timedatectl命令来查看和设置时区。如果你不确定时区的确切名称,可以使用tzselect命令来交互式地选择时区。替换为你希望设置的时区。
2025-10-10 17:43:00
411
原创 react useCallback Hook详解
的作用:缓存函数,防止每次渲染生成新函数引用,优化性能。使用场景配合React.memo避免子组件不必要渲染。在useEffect或useMemo中缓存函数,避免重复运行。语法,返回缓存的函数,依赖项变化时更新。注意事项:只在需要时使用,正确声明依赖数组。
2025-09-29 16:48:00
493
原创 react useMemo Hook详解
useMemouseMemo的作用:缓存计算结果,避免重复执行昂贵计算,保持引用稳定。使用场景优化复杂计算(比如过滤、排序大数据)。缓存对象/数组,配合React.memo避免子组件不必要渲染。语法,返回缓存的值,依赖项变化时重新计算。注意事项:只在需要时使用,正确声明依赖数组。
2025-09-29 16:45:00
360
原创 react useContext Hook详解
useContextuseContext的作用:在函数组件中访问 Context 的值,解决 props 层层传递问题。使用步骤用创建 Context。用提供数据。用在子组件获取数据。常见场景:主题切换、用户信息、语言设置等。注意事项:确保在 Provider 范围内使用,优化性能,避免滥用。
2025-09-29 16:39:00
345
原创 k8s ephemeral-storage资源详解
在 Kubernetes(k8s)中,是一种用于限制 Pod 或容器使用的资源的机制。临时存储(ephemeral storage)通常指容器在运行时使用的本地磁盘空间,包括容器的可写层(如容器镜像的临时文件)、日志文件、以及 Pod 挂载的空卷(如emptyDir以下是对。
2025-09-29 16:38:00
444
phpExcel中文帮助手册
2018-10-29
深入PHP:面向对象、模式与实践(第3版)完整版带书签.pdf
2018-01-10
echarts 2018最新各省市地理坐标
2018-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅