技术栈
go
心月狐的流火号
9 小时前
go
·
源码阅读
Go sync.Mutex 源码解析:设计哲学与工程智慧
在并发编程的世界中,互斥锁是守护共享资源的基石。Go语言的sync.Mutex以其简洁的API背后,隐藏着精巧而高效的设计。从快速路径的极致优化到慢速路径的智能自适应,从正常模式的高性能到饥饿模式的强公平,每一个细节都凝聚着Go团队对并发编程的深刻理解。本文将深入sync.Mutex的源码世界,探寻其背后的设计哲学与工程智慧。
Anthony_4926
10 小时前
mysql
·
go
·
orm
【踩坑】gorm 回写主键不正确
语雀UI更舒服:www.yuque.com/anthonyzhao…GORM 官方文档中说,当通过数据的指针来创建数据时,会回写插入数据的主键。即便是批量插入,GORM 也会返回所有主键值。 GORM 创建
IUGEI
1 天前
java
·
数据库
·
后端
·
mysql
·
go
【MySQL】SQL慢查询如何排查?从慢查询排查到最终优化完整流程
如何判断某个SQL属于慢查询?慢查询并不是凭借感觉判断的,而是有明确指标的,MySQL默认执行超过10s的SQL叫慢查询,但实际生产一般会调到1s以下,甚至是300ms,当某条SQL执行时间超过阈值,则会被记录到日志当中,这个日志就是慢查询日志。
Daydreamer
1 天前
go
Trpc配置插件
业务配置是供业务使用的配置,它由业务程序定义配置的格式,含义和参数范围,trpc 框架并不使用业务配置,也不关心配置的含义。框架仅仅关心如何获取配置内容,解析配置,发现配置变化并告知业务程序。
诗意地回家
1 天前
vscode
·
go
niuhe.conf 配置文件说明
文档原文在之前的版本中,niuhe 插件默认会把你当前打开的文件夹当作项目的根目录。这在大多数情况下没问题——比如你直接打开 server 文件夹,插件就能正常工作。
yagamiraito_
2 天前
算法
·
leetcode
·
go
757. 设置交集大小至少为2 (leetcode每日一题)
暂无题目描述主要是学习动态开点线段树怎么写,自顶向下查询即可. 如果查询区间包含了当前node的l和r则直接返回数据,否则二分之后继续递归查询。 更新也是一样的逻辑,如果当前区间已经包含了当前的l和r则直接更新当前区间即可。 注意有一个懒更新的思想,每一个node节点都有一个lazy标记,查询和更新操作下一层子节点之前,需要判断当前node是否有lazy标记,如有,需要及时更新子节点的值,再去做查询和更新操作
Code_Artist
2 天前
分布式
·
后端
·
go
robfig/cron定时任务库快速入门
robfig/cron 是 Go 生态里最常用、最稳定的定时任务库之一。它支持标准 Cron 表达式、秒级调度、任务并发控制、任务日志、带上下文执行等功能,非常适合生产环境。
川白
2 天前
go
用 Go 写多线程粒子动画:踩坑终端显示与跨平台编译【含 Windows Terminal 配置 + Go 交叉编译脚本】
我本来想用Go语言写个终端粒子动画程序,直观展示Go多协程效果,想着 go run main.go 就能轻松看到成果,结果这过程中掉进了不少坑,今天就跟大家聊聊。
zhuyasen
3 天前
nginx
·
go
·
gin
Go 实战:在 Gin 基础上上构建一个生产级的动态反向代理
作为后端开发者,我们对 Nginx 肯定不陌生。它是反向代理和负载均衡的绝对霸主。但你是否遇到过这样的场景:你的业务处于快速迭代期,后端服务节点频繁变动,或者需要做灰度发布。每次调整上游(Upstream)服务器,都得去改 nginx.conf,然后小心翼翼地执行 nginx -s reload。
Tsblns
3 天前
go
从Go http.HandleFunc()函数 引出"函数到接口"的适配思想
在 Go 语言中,我们经常看到这样的代码:但查看 http.HandleFunc 的源码,却发现它要求处理程序必须实现 Handler 接口:
Schuyler2025
3 天前
go
年轻人的第一个 GO 桌面应用:用 Wails 做个学习搭子计时器
告别控制台应用,用Go语言打造你的第一个桌面软件你是否遇到这些问题?你能学到什么?使用 HTML/CSS/JavaScript实现:
狼爷
4 天前
架构
·
go
Go 重试机制终极指南:基于 go-retry 打造可靠容错系统
在分布式系统、API 调用、数据库操作等场景中,网络抖动、服务临时不可用等问题时有发生。重试机制作为容错设计的核心手段,能有效提升系统稳定性——但不合理的重试策略(如无限制重试、固定间隔重试)可能导致雪崩效应或资源耗尽。本文将深入解析 sethvargo/go-retry 这个轻量且强大的 Go 重试库,带你从原理到实践,构建灵活、安全、高效的重试逻辑。
不爱笑的良田
4 天前
云原生
·
容器
·
kubernetes
·
go
从零开始的云原生之旅(十六):金丝雀发布实战:灰度上线新版本
使用 Istio 实现 90/10 流量分割,安全地灰度上线新版本!在《初探服务网格:Istio 让微服务更简单》中,我们已经完成了从 Ingress 到 Istio 的迁移,理解了 Gateway、VirtualService、DestinationRule 三大核心资源的作用。但理论终归要落地到实战,而最能体现 Istio 价值的场景莫过于 金丝雀发布(Canary Release)。
嘿嘿
5 天前
后端
·
go
·
gin
使用 Gin 框架加载 HTML 模板:`LoadHTMLGlob` 和 `LoadHTMLFiles` 的比较与优化
PS:在使用gin框架渲染前端模板时遇到了问题,关于这俩方法的一个区别,记录下来备忘一下。在使用 Gin 框架开发 Web 应用时,模板渲染是一个常见的需求。Gin 提供了 LoadHTMLGlob 和 LoadHTMLFiles 两个函数来加载 HTML 模板。本文将详细介绍这两个函数的用法,并结合实际项目需求,探讨如何更灵活地加载模板文件,特别是当模板文件分布在多个子文件夹中时。
Java水解
5 天前
后端
·
go
为何最终我放弃了 Go 的 sync.Pool
一句话总结:保存和复用临时对象,减少内存分配,降低GC压力举个简单的例子:json的[反序列化]在文本解析和网络通信中非常常见,当程序并发度非常高的情况下, 短时间内需要创建大量临时对象。而这些临时对象都是分配在堆上的,会给GC造成很大的压力,严重影响程序的性能。 所以可以通过sync.Pool来解决。
得物技术
5 天前
java
·
后端
·
go
Golang HTTP请求超时与重试:构建高可靠网络请求|得物技术
在分布式系统中,网络请求的可靠性直接决定了服务质量。想象一下,当你的支付系统因第三方API超时导致订单状态不一致,或因瞬时网络抖动造成用户操作失败,这些问题往往源于HTTP客户端缺乏完善的超时控制和重试策略。Golang标准库虽然提供了基础的HTTP客户端实现,但在高并发、高可用场景下,我们需要更精细化的策略来应对复杂的网络环境。
喵个咪
6 天前
后端
·
go
Kratos 下使用 Protobuf FieldMask 完全指南
当我们使用 gRPC 进行跨服务通讯时,调用方往往只需要响应中的部分字段 —— 冗余字段不仅会增加网络传输成本,更可能触发不必要的下游依赖调用(比如为了返回一个非核心字段,需要额外调用 2 个服务)。
Mgx
6 天前
go
内存网盘 - Go语言实现的WebDAV内存文件系统
这个 Go 小玩具,让内存秒变网盘!关机就消失,重命名随便改,还能自动挂成 Z 盘——这不是魔法,是 Go 写的 WebDAV 内存文件系统!
百锦再
7 天前
android
·
java
·
开发语言
·
python
·
rust
·
django
·
go
第15章 并发编程
并发编程是现代软件开发中不可或缺的重要组成部分,它允许程序同时执行多个任务,从而充分利用多核处理器的能力,提高程序的性能和响应性。Rust以其独特的所有权系统和类型系统,在保证内存安全的同时,提供了强大而灵活的并发编程能力。本章将深入探讨Rust的并发编程特性,包括线程管理、消息传递、共享状态以及Sync和Send trait。
虫洞没有虫
7 天前
笔记
·
go
·
区块链
Go语言学习笔记(一)
① Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。② Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。