1 2 3 4 5 ··· 92 下一页
摘要: 文件操作命令 find find 用于在指定目录下查找文件或子目录,如果不指定查找目录,则在当前目录下查找 命令格式:find path -option [-print] [ -exec/-ok command {} \ ]; 「print」:将匹配的文件输出到标准输出 「exec」:对匹配的文件作 阅读全文
posted @ 2021-07-24 15:06 牛奔 阅读(1306) 评论(1) 推荐(1)
摘要: 前言 在 Go 开发者日常工作中,经常会遇到需要同时使用多个 Go 版本的情况——比如项目依赖旧版本的特性、测试新版本的兼容性,或者团队成员使用不同版本。手动管理 Go 环境不仅麻烦,还容易导致环境污染和切换不便。这时,一款轻量级的命令行工具就能大幅提升效率。 GVM:Go 版本管理器安装与使用指南 阅读全文
posted @ 2026-04-02 10:07 牛奔 阅读(25) 评论(0) 推荐(0)
摘要: 问题排查指南 问题描述 执行 go run main.go 时出现以下编译错误: # github.com/go-playground/validator/v10 ../../../go/pkg/mod/github.com/go-playground/validator/v10@v10.20.0/ 阅读全文
posted @ 2026-04-02 09:57 牛奔 阅读(4) 评论(0) 推荐(0)
摘要: 前言 在现代 Web 应用中,验证码是防止机器人攻击和恶意请求的重要手段。相比传统的图形验证码,滑动行为验证码具有更好的用户体验。本文将介绍如何使用 go-captcha 库在 Go 后端和 Vue 前端实现滑动验证码功能。 技术栈 后端:Go + Gin 框架 前端:Vue 3 + Element 阅读全文
posted @ 2026-03-31 21:00 牛奔 阅读(114) 评论(0) 推荐(0)
摘要: 介绍 Bun 是一个 超级快的 JavaScript/TypeScript 运行时,它不只是比 Node.js 快,还把包管理、测试、打包等功能全部打包到一个工具里。 https://bun.com/ Bun 到底是什么?它能取代 Node.js 吗? 简单来说,Bun 的目标就是成为 Node.j 阅读全文
posted @ 2026-03-31 20:47 牛奔 阅读(172) 评论(0) 推荐(0)
摘要: GOMAXPROCS 决定: 同一时间最多有多少个 goroutine 可以并行运行(占用 CPU)。 更准确说: 它决定 P(Processor)的数量。 一、回忆一下 GMP 模型 我们之前讲过: G = goroutine(任务) M = 线程(干活的) P = 调度资源(必须持有才能执行 G 阅读全文
posted @ 2026-02-08 23:03 牛奔 阅读(65) 评论(0) 推荐(0)
摘要: 前言 goroutine 初始栈很小(≈2KB),但可以自动变大。 那它是怎么做到的? 一、先说结论 goroutine 的栈扩容是通过: 在函数调用前做“栈空间检查”,如果不够,就调用 runtime 进行扩容。 关键机制是: stack guard + morestack 二、goroutine 阅读全文
posted @ 2026-02-07 22:11 牛奔 阅读(19) 评论(0) 推荐(0)
摘要: 前言 很多人听说: goroutine 很轻,可以开几十万 但为什么轻?到底轻在哪里? 我们从 内存、创建成本、切换成本、调度方式 四个维度拆开讲清楚。 一、最核心的一句话 goroutine 轻,是因为它是用户态调度 + 小栈 + 自己管理切换。 而线程: 是内核调度 + 大栈 + 内核切换。 差 阅读全文
posted @ 2026-02-07 22:02 牛奔 阅读(10) 评论(0) 推荐(0)
摘要: 前言 “能抢占”和“频繁抢占”是两回事。 如果抢占太频繁,会导致: 上下文切换开销大 cache 失效 调度成本增加 性能下降 所以 Go 的设计目标是: 能抢占,但不会乱抢占。 我们一步步讲清楚它是怎么控制频率的。 一、核心原则:不是随时抢占,而是“时间片 + 条件触发” Go 不会在每一行代码都 阅读全文
posted @ 2026-02-07 21:45 牛奔 阅读(13) 评论(0) 推荐(0)
摘要: 一、什么是“抢占式调度”? 先理解什么是“抢占”。 非抢占式(早期 Go) 早期 Go(1.14 之前): goroutine 只有在 函数调用 channel 操作 syscall runtime 检查点 才会被切换。 如果一个 goroutine 写成: for { } 会发生什么? 👉 它永 阅读全文
posted @ 2026-02-07 21:34 牛奔 阅读(38) 评论(0) 推荐(0)
摘要: 一、为什么需要调度模型? 先问一个问题: Go 里可以同时开成千上万个 goroutine,它是怎么做到的? 如果每个 goroutine 都对应一个操作系统线程,那系统早就炸了。 因为: 线程很重(几 MB 栈空间) 创建销毁成本高 线程切换开销大 所以 Go 自己实现了一套“用户级调度器”。 二 阅读全文
posted @ 2026-02-07 21:30 牛奔 阅读(31) 评论(0) 推荐(0)
1 2 3 4 5 ··· 92 下一页