go

福兮说9 小时前
后端·go
Go 优雅退出:Shutdown 之后,后台 goroutine 还在跑(四个实测的坑)几乎每个 Go 服务的 main 函数里都有这么一段:看起来很完整:收到信号,给 5 秒让正在处理的请求跑完,然后退出。大家管这叫「优雅退出」。
jeffwang10 小时前
搜索引擎·postgresql·go
不装分词插件,用 PostgreSQL 做中文商品搜索:bigram + 向量 + RRF,以及「单字搜不到」这个坑做电商搜索,第一反应往往是上 Elasticsearch,或者给 PostgreSQL 装 zhparser / pg_jieba。 这两条路都能走,但都有代价:多一套集群要运维,或者要自己打一个带扩展的数据库镜像。
云浪12 小时前
后端·go
通过 Goroutine 搞懂 Go 并发与常见的 9 个坑Goroutine 是 Go Runtime 管理的轻量级并发执行单元,可以理解为 Go 的协程。Goroutine 就像 Go 程序里的“轻量级小工”,Go Runtime 就像是调度员,负责安排这些小工什么时候干活、在哪个线程上干活。
福兮说17 小时前
go
singleflight 防缓存击穿,这四个坑它不会替你挡缓存击穿的标准答案之一是 singleflight:同一个 key 同时来一千个请求,只放一个去查库,其余的等着拿结果。golang.org/x/sync/singleflight 一共不到两百行,接进去也就三行代码。
我的div丢了肿么办17 小时前
后端·go
自定义类型和类型别名以及实例化结构体的5种方式注意类型别名和自定义类型的区别注意:结构体首字母可以大写也可以小写, 大写表示这个结构体是公有的,在其他的包里面可以使用。 小写表示这个结构体是私有的,只有这个包里面才能使用。
小满zs17 小时前
后端·go
Go语言第十三章(互斥锁,读写锁)上一篇用 channel 在协程之间传数据。 有时协程要共改同一块内存——比如几个协程一起往同一个切片里 append。这时通道不是唯一答案,标准库 sync 里的锁也很常用。
福兮说17 小时前
后端·go
errgroup 的六个坑:Wait 之后 ctx 已取消、SetLimit 嵌套死锁,以及另外四个errgroup 大概是 Go 里被用得最多的并发工具之一。十行代码就能把"并发跑一批任务、有一个失败就整体失败"写完,比手搓 sync.WaitGroup + 错误 channel 干净得多。
福兮说17 小时前
后端·go
Go 解析邮件的三个坑:GBK 标题、QP 正文,以及 NextPart 偷偷帮你做的事收邮件这件事,协议层(SMTP 收信)其实没多难,真正磨人的是拿到原始报文之后:标题是一串 =?GBK?B?xPq1...?=,正文是一堆 =C4=FA=B5=C4,同一封信里 HTML 和纯文本各一份,外面还可能再套一层附件。
我的div丢了肿么办17 小时前
后端·go
go语言中的时间time时间类型有一个自带的方法 Format 进行格式化, 需要注意的是Go语言中格式化时间模板不是常见的 Y-m-d H:M:S形式, 而是使用Go的诞生时间2006年1月2号15点04分(记忆口诀为20061234) 注意一下go语言中的小时 03时 表示12小时制 15时 表示24小时制
沙蒿同学18 小时前
vue.js·后端·go
一个人做完一套企业级系统,赚到了第一个 1000 块先交个底:1000 块不多,一台好点的笔记本屏幕都不一定够。但它是这套系统收到的第一笔钱,而且是拼出来的:69 块一份的安装包,在某二手交易平台上一份一份卖出去,加上企业客户的白标定制单,两条路凑到了 1000。有人愿意给一个独立开发者写的东西掏钱,这事比金额有意思。
福兮说18 小时前
go
用 Go 从零写一个只收信的 SMTP 服务:协议、坑和上线前要想清楚的事做临时邮箱这类功能,绕不开一个问题:信从哪来。最省事的是买个邮件服务商的入站 Webhook,对方收信后 POST 给你。但如果你想完全自己掌控(不想让第三方经手用户的验证码邮件,或者单纯想省钱),就得自己起一个 SMTP 服务,挂在 25 端口上,等全世界的邮件服务器来投递。
newerp18 小时前
后端·程序员·go
GC 触发时机与调优理解了"三色标记"和"写屏障"两个算法支柱之后,自然会追问一个工程问题:GC 到底什么时候会被触发?什么时候该让它多跑、什么时候该让它少跑?
探索云原生18 小时前
docker·ai·云原生·kubernetes·go
一个 Deployment 就能跑 vLLM,为什么还需要 KServe?在 Kubernetes 上启动一个推理服务并不难。如果只有一个模型,vLLM + Deployment 确实够了。但服务多起来以后,模型从哪里加载、使用哪个 Runtime、GPU 怎么分配、服务怎么暴露,每个服务都要重复处理一遍,配置很快就会散落在一堆 YAML 里。KServe 解决的不是怎么启动 vLLM,而是怎么用统一的方式管理这些模型服务。
alsmile6 天前
后端·开源·go
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现规则引擎,简单说是:给业务逻辑提供一种专门的表达语言,而不用每次用代码重写一遍。物联网的场景联动,就是规则引擎最常见的一种形态:一段规则 = 触发器(什么时候开始)+ 条件(满足什么判断)+ 动作(做什么事)。比如:
茉莉玫瑰花茶6 天前
go
GO [ 变量 ]前面我们已经学习了 Go 的基本语法、数据类型以及常量。接下来开始学习 Go 语言中最常用的基础概念:变量。
lpfasd1236 天前
go·串口·中控
展厅中控总体架构本文按当前代码阐述,不写账号、口令、令牌、现场目录和具体地址。早期方案里的「单文件数据库、以网络唤醒为主」已不再是现状。
茉莉玫瑰花茶6 天前
go
GO [ 条件/循环控制 ]前面我们已经学习了 Go 的变量、常量、数据类型以及输入输出。接下来开始学习 Go 程序如何根据不同条件执行不同代码:条件控制。
茉莉玫瑰花茶6 天前
go
GO [ 数据类型 ]前面我们已经了解了 Go 程序的基本结构、变量声明以及常量的基本写法。接下来开始学习 Go 语言中非常重要的一部分:数据类型。
云浪7 天前
后端·go
Go Context 到底是什么?Context 是 Go 中用来控制“一次任务生命周期”的工具。可以用于取消任务、设置超时时间和在一次请求链路中传递一些上下文信息。
newerp7 天前
后端·程序员·go
系统调用与 M/P 解绑当一个 goroutine 执行 read()、write() 或 accept() 等阻塞式系统调用时,线程(M)会从用户态陷入内核态。如果这时 M 仍然霸占着 Processor(P),那么 P 上的其他 goroutine 就会集体"干等"——这是对 CPU 资源的极大浪费。Go 运行时的解决方案是:进入系统调用前立即解绑 M 和 P,把 P 转手给能干活的新 M。