技术栈
go
狼爷
3 小时前
架构
·
go
Go 重试机制终极指南:基于 go-retry 打造可靠容错系统
在分布式系统、API 调用、数据库操作等场景中,网络抖动、服务临时不可用等问题时有发生。重试机制作为容错设计的核心手段,能有效提升系统稳定性——但不合理的重试策略(如无限制重试、固定间隔重试)可能导致雪崩效应或资源耗尽。本文将深入解析 sethvargo/go-retry 这个轻量且强大的 Go 重试库,带你从原理到实践,构建灵活、安全、高效的重试逻辑。
不爱笑的良田
10 小时前
云原生
·
容器
·
kubernetes
·
go
从零开始的云原生之旅(十六):金丝雀发布实战:灰度上线新版本
使用 Istio 实现 90/10 流量分割,安全地灰度上线新版本!在《初探服务网格:Istio 让微服务更简单》中,我们已经完成了从 Ingress 到 Istio 的迁移,理解了 Gateway、VirtualService、DestinationRule 三大核心资源的作用。但理论终归要落地到实战,而最能体现 Istio 价值的场景莫过于 金丝雀发布(Canary Release)。
嘿嘿
1 天前
后端
·
go
·
gin
使用 Gin 框架加载 HTML 模板:`LoadHTMLGlob` 和 `LoadHTMLFiles` 的比较与优化
PS:在使用gin框架渲染前端模板时遇到了问题,关于这俩方法的一个区别,记录下来备忘一下。在使用 Gin 框架开发 Web 应用时,模板渲染是一个常见的需求。Gin 提供了 LoadHTMLGlob 和 LoadHTMLFiles 两个函数来加载 HTML 模板。本文将详细介绍这两个函数的用法,并结合实际项目需求,探讨如何更灵活地加载模板文件,特别是当模板文件分布在多个子文件夹中时。
Java水解
1 天前
后端
·
go
为何最终我放弃了 Go 的 sync.Pool
一句话总结:保存和复用临时对象,减少内存分配,降低GC压力举个简单的例子:json的[反序列化]在文本解析和网络通信中非常常见,当程序并发度非常高的情况下, 短时间内需要创建大量临时对象。而这些临时对象都是分配在堆上的,会给GC造成很大的压力,严重影响程序的性能。 所以可以通过sync.Pool来解决。
得物技术
1 天前
java
·
后端
·
go
Golang HTTP请求超时与重试:构建高可靠网络请求|得物技术
在分布式系统中,网络请求的可靠性直接决定了服务质量。想象一下,当你的支付系统因第三方API超时导致订单状态不一致,或因瞬时网络抖动造成用户操作失败,这些问题往往源于HTTP客户端缺乏完善的超时控制和重试策略。Golang标准库虽然提供了基础的HTTP客户端实现,但在高并发、高可用场景下,我们需要更精细化的策略来应对复杂的网络环境。
喵个咪
2 天前
后端
·
go
Kratos 下使用 Protobuf FieldMask 完全指南
当我们使用 gRPC 进行跨服务通讯时,调用方往往只需要响应中的部分字段 —— 冗余字段不仅会增加网络传输成本,更可能触发不必要的下游依赖调用(比如为了返回一个非核心字段,需要额外调用 2 个服务)。
Mgx
2 天前
go
内存网盘 - Go语言实现的WebDAV内存文件系统
这个 Go 小玩具,让内存秒变网盘!关机就消失,重命名随便改,还能自动挂成 Z 盘——这不是魔法,是 Go 写的 WebDAV 内存文件系统!
百锦再
3 天前
android
·
java
·
开发语言
·
python
·
rust
·
django
·
go
第15章 并发编程
并发编程是现代软件开发中不可或缺的重要组成部分,它允许程序同时执行多个任务,从而充分利用多核处理器的能力,提高程序的性能和响应性。Rust以其独特的所有权系统和类型系统,在保证内存安全的同时,提供了强大而灵活的并发编程能力。本章将深入探讨Rust的并发编程特性,包括线程管理、消息传递、共享状态以及Sync和Send trait。
虫洞没有虫
3 天前
笔记
·
go
·
区块链
Go语言学习笔记(一)
① Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。② Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。
wohuidaquan
4 天前
go
AI为何跳过你?GEO中的E-E-A-T权重
AI为何跳过你?GEO中的E-E-A-T权重如何决定推荐命运当一位用户在生成式AI中输入“苏州家庭收纳服务怎么选”,AI迅速列出三家本地品牌,却唯独遗漏了某家实际口碑极佳、案例丰富的团队。问题不在内容数量,而在AI是否“信任”你——这背后,是GEO(生成式引擎优化)中日益关键的E-E-A-T机制:经验(Experience)、专业性(Expertise)、权威性(Authoritativeness)与可信度(Trustworthiness)。
百锦再
4 天前
android
·
java
·
开发语言
·
后端
·
python
·
rust
·
go
选择Rust的理由:从内存管理到抛弃抽象
作为一名程序员,你一定遇到过这些糟心时刻:这些问题在C/C++中很常见,但在Rust中,它们大多在编译阶段就被消灭了!秘诀就是Rust的所有权系统和零成本抽象哲学。
百锦再
4 天前
开发语言
·
后端
·
rust
·
go
·
内存
·
时间
·
抽象
大话Rust的前生今世
(本故事纯属戏说,如有雷同,那绝对是因为Rust太耀眼)话说那二十一世纪头十年,软件江湖一片腥风血雨。C++老怪已修炼三十余载,内力深厚却走火入魔,动不动就使出“内存泄漏掌”、“段错误指”,各大门派弟子无不闻风丧胆。Java道长虽稳坐企业厅堂,却因“虚拟机神功”拖泥带水,被嵌入式小帮派嗤之以鼻。 就在这混沌之时, Mozilla 神殿中,一位名叫格雷登·霍雷的年轻修士,在某个雷电交加的午夜突然拍案而起:“这内存管理的苦,我等受够了!” 原来格雷登在家折腾个人项目时,突发奇想要重写浏览器引擎。这浏览器乃软件
俞凡
6 天前
go
Golang 构建网络漏洞扫描器
本文完整介绍了如何基于 Golang 从零开始开发一个完善的网络漏洞扫描器。原文:Building a Network Vulnerability Scanner with Go
百锦再
6 天前
android
·
java
·
开发语言
·
git
·
rust
·
go
·
错误
第14章 智能指针
智能指针是Rust中管理堆内存和实现复杂所有权模式的核心工具。它们不仅像普通指针一样指向某个内存地址,还拥有额外的元数据和功能,如引用计数、内部可变性等。Rust的智能指针系统建立在所有权和借用规则之上,提供了在编译时和运行时保证内存安全的多种方式。本章将深入探讨各种智能指针的特性和使用场景,从基础的Box<T>到复杂的引用计数和内部可变性模式。
Mgx
6 天前
go
用 Go 写个“端口扫描器”,100 行代码扫描你家路由器?(别慌,只是看看谁在开门!)
免责声明:本文仅供学习交流,请勿用于非法扫描他人设备。你扫你自己的电脑,我鼓掌;你扫隔壁老王的服务器,警察叔叔鼓掌 👮♂️。
mao毛
6 天前
微服务
·
go
go项目适配DTM,gozero已经适配dtm了,goframe项目要怎么适配?
以下是gozero的示例,本质不就是维护了dtm配置dtm与go-zero进行了深度合作,打造了go-zero原生支持分布式事务的解决方案,提供了极简的用户体验。
Mgx
6 天前
go
一文讲透 Go 的 defer:你的“善后管家“,别让他变成“背锅侠“!
在 Go 的世界里,defer 就像你雇的一个超靠谱管家:你只管往前冲,他默默在你出门前关灯、锁门、浇花、顺手把猫粮倒上……
Mgx
6 天前
go
剪贴板监控记:用 Go 写一个 Windows 剪贴板监控器
"复制即监控,粘贴即暴露。"—— 一位不愿透露姓名的剪贴板监视器开发者你有没有想过,当你按下 Ctrl+C 的那一瞬间,你的剪贴板内容其实可以被"悄悄"记录下来?别慌,这不是什么黑客教程,而是一次用 Go 语言 和 Windows API 玩转系统底层的趣味实验!
百锦再
7 天前
android
·
网络
·
人工智能
·
python
·
golang
·
rust
·
go
第11章 泛型、trait与生命周期
泛型、trait和生命周期是Rust类型系统的三大支柱,它们共同构成了Rust在保证内存安全的同时提供零成本抽象的能力。本章将深入探讨这些核心概念,揭示它们如何协同工作来创建既灵活又安全的代码。
百锦再
7 天前
android
·
java
·
开发语言
·
python
·
rust
·
go
·
erlang
第12章 测试编写
测试是软件开发中不可或缺的重要环节,它确保代码的正确性、可靠性和可维护性。Rust语言内置了一个强大而灵活的测试框架,使得编写和运行测试变得异常简单。本章将全面深入地探讨Rust测试的各个方面,从基础的测试函数编写到复杂的集成测试组织,从测试驱动开发实践到性能测试与基准测试。