go

白应穷奇14 小时前
go
go 日志综合指南各位Gophers们,我是gogogo,欢迎大家关注我。今天我要讨论Go语言中的日志记录,以及为什么你们中的大多数人可能都做错了。不过不用担心,日志记录表面上看起来很简单,但它是一门黑暗的艺术,能让你的应用程序比你还没来得及说“panic: runtime error”就更快地崩溃。
DemonAvenger19 小时前
网络协议·架构·go
从零实现RPC框架:Go语言版想象一下,你正在构建一个分布式系统,服务之间需要像调用本地函数一样顺畅地通信。这正是 远程过程调用(RPC,Remote Procedure Call) 的魅力所在。RPC 屏蔽了网络通信的复杂性,让开发者专注于业务逻辑,而无需操心底层的 socket 编程。在微服务架构中,RPC 是服务间高效通信的基石,例如订单服务与库存服务之间的交互。
robin_zjw1 天前
go
Go中的优雅关闭:实用模式原文:victoriametrics.com/blog/go-gra…任何应用程序中的正常关闭通常都满足三个最低条件:
用户6757049885021 天前
后端·go
Wire,一个神奇的Go依赖注入神器!在介绍 wire 工具之前,我们先聊聊什么是控制反转(IoC)与依赖注入(DI)?它们解决了什么问题?
一个热爱生活的普通人1 天前
后端·go
拒绝文档陷阱!用调试器啃下 Google ToolBox 数据库工具箱源码阅读源码是提升自己和快速获取某个知识的很不错的方式,如何高效的阅读源码每个程序员可能都有自己不同的见解,这里我就简单介绍下我是如何阅读源码的:
程序员爱钓鱼1 天前
后端·go·trae
Go语言实战案例:编写一个简易聊天室服务端本篇为《Go语言100个实战案例 · 网络与并发篇》第9篇,介绍如何使用 Go 编写一个简易的聊天室服务端。聊天室的实现涉及到并发连接管理、消息广播和客户端管理等重要的并发编程概念。通过本案例,你将学会如何构建一个高效、灵活的聊天系统。
程序员爱钓鱼1 天前
后端·go·trae
Go语言实战案例:实现一个并发端口扫描器本篇为《Go语言100个实战案例 · 网络与并发篇》第8篇,介绍如何使用 Go 实现一个并发端口扫描器。通过 Goroutine 并发扫描多个端口,极大地提升端口扫描的效率。本文不仅讲解了如何使用 Go 的并发特性,还涉及了如何处理超时和错误,保证端口扫描的健壮性和效率。
DemonAvenger1 天前
网络协议·架构·go
构建实时应用:WebSocket+Go实战在数字时代,实时性已经成为许多应用的核心竞争力。无论是朋友间畅聊的即时通讯工具,还是实时更新股价的金融仪表盘,亦或是团队协作的在线白板,实时应用都在改变我们的交互方式。实时应用,顾名思义,是指能够在用户操作的瞬间传递信息、更新状态的应用,其核心在于低延迟和双向通信。想象一下,实时应用就像一场没有延迟的对话,信息在客户端和服务器之间如流水般顺畅传递。
Joker-01111 天前
算法·go·哈希算法·map
深入 Go 底层原理(十二):map 的实现与哈希冲突map 是 Go 语言中使用频率极高的数据结构,它提供了快速的键值对存取能力。虽然 map 的使用非常简单,但其底层的实现却是一个精心设计的哈希表,它需要高效地处理哈希计算、数据存储、扩容以及最关键的——哈希冲突。
岁忧1 天前
java·c++·leetcode·链表·面试·go
(LeetCode 面试经典 150 题) 138. 随机链表的复制 (哈希表)思路:哈希表,时间复杂度0(n)。C++版本:JAVA版本:GO版本:
程序员爱钓鱼2 天前
google·go·trae
Go语言实战案例:TCP服务器与客户端通信在网络编程中,TCP 是最常见的传输协议之一。Go 提供了 net 包,可以方便地实现 TCP 服务器与客户端通信。本篇将以实战形式演示如何用 Go 创建一个 TCP 服务器,并让多个客户端与之通信。
程序员爱钓鱼2 天前
google·go·trae
Go语言实战案例:多协程并发下载网页内容本文是《Go语言100个实战案例 · 网络与并发篇》第6篇,实战演示如何使用 Goroutine 和 Channel,实现多协程并发抓取网页内容,提升网络请求效率,为构建爬虫、内容聚合器、API 批量采集器打下基础。
岁忧2 天前
java·c++·算法·leetcode·go·散列表
(nice!!!)(LeetCode 每日一题) 2561. 重排水果 (哈希表 + 贪心)思路:哈希表+贪心,时间复杂度0(nlogn)。哈希表来记录两个数组中元素的差异情况,如果相差的值不是偶数,那无法相等,返回-1即可。 差值都为偶数,那可以开始交换,用数组a、b来记录两个篮子需要交换的水果。理论上是选这两个篮子组合里最小的一半即可,但没有限制水果的交换次数,此时可能会存在最小的一个水果呢,用于做中间商,交换两个数组中的元素,也就是进行两次。细节看注释。
活椰拿铜2 天前
后端·go
令牌桶限流算法的实现📌 限流并不是为了限制业务使用,而是服务的自我保护,防止预期外的风险事件,更好的为业务服务限流是解决各种过载、雪崩等问题的有效手段。之前了解到令牌桶限流算法的概念,直观理解有一个后台线程去生成令牌,Go官方包有令牌桶限流器的封装,令牌并非靠另一个协程异步刷入而是“读写时生成”。
葫芦和十三2 天前
后端·go·trae
Go 泛型“黑话”:any 和 interface{} 完全一样吗?👋 大家好,我是十三。上周在团队中无意听到一位同学说:“Go语言里的 any 和 interface{} 是完全一样的。”
yuadsl30103 天前
go
heyicache--性能极限版的freecache你可能会有这样的经历作为一个golang后端工程师,维护着一套推荐/搜索/广告系统明明用户只是对你的首页发起了一次请求,你的服务却召回了成千上万个item
Code季风3 天前
分布式·微服务·go
从超卖到数据一致:分布式锁的最佳实践与演进历程在分布式系统中,并发操作共享资源(如库存、订单)是常见场景,而 “超卖”“重复提交” 等问题往往源于缺乏跨节点的同步机制。本文从实际业务场景出发,详解如何通过普通锁、数据库悲观锁、乐观锁解决分布式并发问题,分析每种方案的原理、实现与适用场景,为你的业务选择提供参考。
程序员爱钓鱼3 天前
后端·go·trae
Go语言实战案例:使用channel实现生产者消费者模型本文是「Go语言100个实战案例 · 网络与并发篇」系列第4篇,带你通过一个实战案例掌握 Channel 的用法,并用它优雅地实现经典并发模式:生产者-消费者模型。
程序员爱钓鱼3 天前
后端·go·trae
Go语言实战案例:使用select监听多个channel本篇为《Go语言100个实战案例 · 网络与并发篇》第5篇,聚焦 Go 并发中的一个强力工具:select。我们将通过实际案例学习如何优雅地监听多个 Channel,实现多任务处理、超时控制和非阻塞通信等并发技巧。