自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Go中国

Golang语言相关的资讯推送。

  • 博客(1197)
  • 收藏
  • 关注

转载 充分利用每个字节:Go 的内存打包秘密揭晓!

Go 以其简单的设计而闻名,受到云原生应用程序的青睐。它拥有独特的天赋和特殊功能,由于其幕后的工程奇迹,常常使天平偏向偏袒。为什么要讨论结构中的填充?在快节奏的软件开发世界中,生成式人工智能可以在几分钟内生成文章,因此深入研究人工智能可能掩盖的主题至关重要。本博客旨在阐明 Go 的一个看似小众但关键的方面——结构填充。这个聪明的功能可以非常有效地优化内存使用,以至于它可能会为考虑转换的 Java ...

2024-04-19 12:03:50 9

转载 Go 从版本 1.0 到 1.22的性能变化

两年前,我在 1.2 到 1.18 的所有 Go 版本上比较了 GoAWK 解释器的两个不同基准。在本文中,我重新运行这些基准测试,添加缺少的 Go 版本(1.0 和 1.1)以及新版本(1.19 到 1.22)。我还包含了 Go 1.20 中添加的配置文件引导优化 (PGO) 的结果。我将引用我原来文章中的一些内容,这样您就不必重新阅读旧文章来理解设置。用 Go 编写的程序可以通过多种方式变得更...

2024-04-18 09:40:47 12

转载 Go 开发者调查 2024 年结果(AI相关)

背景这篇文章分享了我们在 2024 年 1 月和 2 月进行的最新 Go 开发者调查的结果。除了捕捉有关使用 Go 和 Go 工具的观点和挑战之外,我们本次调查的主要关注领域是开发者如何开始使用 Go(或其他语言)的 AI 相关用例,以及那些正在学习 Go 或希望扩展 Go 技能集的人面临的特殊挑战。我们从 Go 博客以及 VS Code Go 插件中的随机提示招募参与者。今年,在 JetBrai...

2024-04-17 18:30:00 11

转载 Go Tips #001 一行代码测量函数的执行时间

“Golang Tips 是翻译的 Phuong Le @func25[1] 陆陆续续的发表的推文,目前已经发表 70+了。我征得 Phuong Le 的同意后,会逐步把这些推翻翻译过来,发布到公众号上。因为是推文,可能原作者的内容比较简单,比如第一个 tip 就一张图片,我会相应的进行扩充,丰富其内容。后续也会在 github 建立一个项目,大家都可以参与进行翻译。我们可以通过 defer,实现...

2024-04-15 17:01:14 9

转载 Goroutine调度器揭秘

你以前可能听说过 Goroutine 调度器,但你对它的工作原理了解多少?它如何将 goroutine 与线程配对?不用着急理解上面的图像,因为我们要从最基本的开始。goroutine 被分配到线程中运行,这由 goroutine 调度器在后台处理。根据我们之前的讨论,我们了解到以下关于 goroutine 的几点:就原始执行速度而言,goroutine 并不一定比线程更快,因为它们需要在实际线程...

2024-04-11 08:01:21 10

转载 【Go】透彻理解 Context

使用 Go 开发后台服务程序,经常会用到上下文 (context.Context)。这是因为远程服务调用,往往会受网络环境等因素的影响,产生耗时长、丢包无返回等异常状况。因此,无论是我们自身提供的服务,还是调用下游的服务,都需要在一定的时间内有完成或取消,并释放资源。很多人有用了 context.Context,但是对于其具体的功能或者原理不甚清楚,甚至觉着这是个比较复杂的东西。实际上,Conte...

2024-04-08 08:00:46 20

转载 Go 1.22引入的包级变量初始化次序问题

细心的朋友可能已经注意到,从春节后,我的博客就“停更”了!实际上,这一情况部分是因为工作上的事务繁忙,另一部分则是因为我将工作之外的闲暇时间更多地投入到一本即将于今年中下旬出版的书的撰写了:在之前的积累基础上,我花了两个多月的时间完成了初稿。当然,我也深切地怀念博客写作所带来的乐趣和与读者的互动。正巧,今天一位学员在《Go语言第一课》专栏[1]留言给了我一个恢复下笔的机会。借此,我也准备恢复一下博...

2024-04-04 08:30:34 20

转载 探索Kubernetes v1.30:激动人心的新功能和升级!

兴奋不?我们不都是吗?Kubernetes v1.30 版本带来了一系列令人期待的更新,包括动态资源分配(DRA)的结构化参数和节点交换内存SWAP支持的改进。动态资源分配的结构化参数增加了资源管理的透明度和效率,而节点交换内存的改进则提高了系统稳定性。现在让我们探讨一下将 Kubernetes 1.30 提升到新版本的主要功能。Kubernetes v1.30 的主要变化1. 动态资源分配(...

2024-04-02 08:01:10 73

转载 修复go tool pprof存在的“bug”

问题源起之前写了一段根据当前内存占用,获取pprof指标文件的代码,如下:packagemainimport("fmt""os""runtime""runtime/pprof""strconv""time")funcmain(){ticker:=time.NewTicker(10*time.Second)gofunc(){fo...

2024-03-29 08:00:16 22

转载 2024 Gopher Meetup 武汉站活动

微派网络与 GoCN 社区联合举办GopherMeetup一起来看看武汉站活动的精彩瞬间吧2024年3月23日,微派网络与国内领先的Go开发者社区GoCN携手共同举办一场技术盛宴——2024 Gopher Meetup 武汉站活动。Part1 活动背景作为国内最具规模和生命力的Go开发者社区,GoCN的线下meetup活动一直是Gopher们了解前沿发展、深度分享经验的重要平台。微派网络作为武汉...

2024-03-27 08:01:29 80

转载 更强大的Go执行跟踪能力

runtime/trace 包[1]包含了一个强大的工具,可用于理解和调试 Go 程序。该功能允许我们在一段时间内对每个 goroutine 的执行进行跟踪。使用go tool trace 命令[2](或优秀的开源工具gotraceui[3]),我们就可以可视化和探索这些跟踪数据。跟踪的魔力在于,它可以轻松揭示程序中一些通过其他方式很难发现的问题。例如,大量 goroutine 在同一个 chan...

2024-03-26 08:01:52 20

转载 go 中更加强大的 traces

原文地址:More powerful Go execution traces原文作者:Michael Knyszek本文永久链接:https://github.com/gocn/translator/blob/master/2024/w12_more_powerful_go_execution_traces.md译者:小超人Go 版本: 1.22+runtime/trace包包含一个用于理解并且排...

2024-03-22 08:01:35 26

转载 Go 中的高速数据包处理:从 net.Dial 到 AF_XDP

“推进 Go 的极限:从 net.Dial 到系统调用、AF_PACKET 和极速 AF_XDP。数据包发送性能的基准测试。最近,我编写了一个 Go 程序,向数百万个 IP 地址发送 ICMP ping 消息[1]。显然,我希望这个过程能尽可能快速高效地完成。因此,这促使我研究各种与网络栈交互和快速发送数据包的各种方法。这是一个有趣的旅程,所以在本文中,我将分享一些学习成果,并记录下来供将来参考:...

2024-03-20 08:04:09 63

转载 LeetCode Linked List 刷题模板

链表特点 图片来源: https://en.wikipedia.org/相较于数组,链表的特点如下:优点动态长度:链表的长度可以动态调整 (内存充足的情况下),不需要像数组预先指定大小内存无需连续:链表中的元素在内存中可以是不连续的,提升内存使用灵活性缺点随机访问低效:链表随机访问时,需要从头节点开始遍历,时间复杂度为 O(N)插入和删除操作低效:链表中插入和删除元素时,需要移动大量元素,时间复...

2024-03-18 08:01:07 22

转载 K8s蓝绿部署:优雅应对应用程序更新挑战

Kubernetes 是一个开源容器编排系统,可简化软件部署、扩展和管理。蓝绿部署是一种部署模式,通过同时运行两个相同的生产环境来最大限度地减少停机时间。通过创建蓝色和绿色部署,设置服务和路由规则,以及执行蓝绿部署来更新应用程序版本,可以轻松管理和更新应用程序。Kubernetes 是一个开源容器编排系统,可简化软件部署、扩展和管理。它最初由 Google 设计,现在由云原生计算基金会监管。蓝绿部...

2024-03-13 08:00:12 43

转载 《从慢速到SIMD》聊Go边界检查消除

在翻译的从慢速到 SIMD一文中, SourceGraph 工程师其中的一个优化就是边界检查消除(BCE,bounds check elimination)技术,同时他也抛给了读者一个问题:“为啥在使用 a[i:i+4:i+4] 而不是 a[i:i+4]?本文第一部分先回答这个问题。第二部分介绍更好的边界检查消除方法。第三部分再全面梳理 Go 的边界检查消除技术。为啥在使用 a[i:i+4:i+4...

2024-03-11 08:02:30 23

转载 滴滴基于 Clickhouse 构建新一代日志存储系统

ClickHouse 是2016年开源的用于实时数据分析的一款高性能列式分布式数据库,支持向量化计算引擎、多核并行计算、高压缩比等功能,在分析型数据库中单表查询速度是最快的。2020年开始在滴滴内部大规模地推广和应用,服务网约车和日志检索等核心平台和业务。本文主要介绍滴滴日志检索场景从 ES 迁移到 CK 的技术探索。背景此前,滴滴日志主要存储于 ES 中。然而,ES 的分词、倒排和正排等功能导致...

2024-03-06 09:01:46 34

转载 元老与新秀:Go sort.Search()和sort.Find()

sort.Search()sort.Search() 提交于遥远的2010年11月11日,提交者是Go三位创始人之一的Robert Griesemer[1], 随Go第一个正式版本一起发布从这个意义上说,是标准库元老级的函数了~sort.Search()[2] 用于在排序的切片或数组中查找元素//Searchusesbinarysearchtofindandreturnthes...

2024-03-04 08:01:07 38

转载 优化AI生命周期:k8s下大模型部署的新选择!

前言AI 商业化的时代,大模型推理训练会被更加广泛的使用。比较理性的看待大模型的话,一个大模型被训练出来后,无外乎两个结果,第一个就是这个大模型没用,那就没有后续了;另一个结果就是发现这个模型很有用,那么就会全世界的使用,这时候主要的使用都来自于推理,不论是 openAI 还是 midjourney,用户都是在为每一次推理行为付费。随着时间的推移,模型训练和模型推理的使用比重会是三七开,甚至二八开...

2024-02-29 08:03:35 253

转载 Kubernetes GC 设计与实现

概述 Kubernetes 和内置垃圾回收编程语言 (例如 Go, Java) 一样,内部也有垃圾回收机制,用于清理集群中的下列资源:终止的 Pod已完成的 Job附属的主对象已经不存在的对象未使用的容器和容器镜像StorageClass 回收策略为 Delete 的 PV 卷过期的证书签名...和编程语言中的 GC 运行机制一样,Kubernetes 中的垃圾回收周期自动执行,集群内每个运行 ...

2024-02-27 08:00:35 30

转载 Meetup武汉站议题揭晓~趁现在!速速报名...

GoCN 社区将在2024年全面开启线下活动,全年将在北京、上海、深圳、武汉、成都、杭州、广州等地举办线下 meetup 及大会。GoCN 是目前国内外享有盛誉的 Go 语言社区,每一年的大会都会造就不同的讲师和企业,线下活动也成为 Gopher 们了解前沿发展、深度分享的平台,每年都有上千人参与其中,是讲师们很好的展现平台。3月23日,由GoCN社区联合微派网络共同举办的的技术盛宴——武汉mee...

2024-02-23 19:37:43 61

转载 Go语言进入Tiobe指数前10名

谷歌的 Go 语言(即 golang)在 Tiobe 语言流行度指数中达到了历史最高位置。该语言目前在语言流行度排名中排名第八,并且多年来一直在上升。Go可能最出名的是用于开发Docker和Kubernetes的语言,一年前在 Tiobe 指数中攀升至前 10 名,但目前的排名是有史以来最高的。Tiobe 首席执行官 Paul Jansen 回忆了 2009 年 11 月 Google 宣布 Go...

2024-02-22 08:00:38 34

转载 Go中最常用的数据校验库

项目地址: github.com/go-playground/validator/v10标记标记说明例required必填Field或Struct validate:"required"omitempty空时忽略Field或Struct validate:"omitempty"len长度Field validate:"len=0"eq等于Field validate:"eq=0"gt大于Field...

2024-02-21 08:01:43 30

转载 Meetup上海站开启报名!这次千万不要错过!

GoCN 社区将在2024年全面开启线下活动,全年将在北京、上海、深圳、武汉、成都、杭州、广州等地举办线下 meetup 及大会。GoCN 是目前国内外享有盛誉的 Go 语言社区,每一年的大会都会造就不同的讲师和企业,线下活动也成为 Gopher 们了解前沿发展、深度分享的平台,每年都有上千人参与其中,是讲师们很好的展现平台。在阳春三月的柔情中,上海站的Meetup如期绽放,成为汇聚技术与友谊的璀...

2024-02-19 14:53:52 431

转载 从慢速到SIMG: 一个Go优化的故事

SourceGraph 的工程师 Camden Cheek 提供的一个利用 SIMD 进行 Go 性能优化的故事:From slow to SIMD: A Go optimization story[1]。这是一个关于某函数的故事,这个函数被大量调用,而且这些调用都在关键路径上。让我们来看看如何让它变快。剧透一下,这个函数是一个点积函数。“点积(Dot Product),也称为内积或数量积,是一种...

2024-02-18 08:00:28 33

转载 Go语言版本1.22的路由增强功能

Go 1.22对 net/http包中的路由器进行了两项增强:方式匹配和通配符。这些特性允许你将常见的路由表示为模式,而非Go代码。尽管这些功能简单易解释和使用,但想选择成功模式的正确规则(当多个模式匹配一个请求时)依然是个挑战。我们作出这些改变是为了持续让Go成为构建生产系统的优秀语言。我们研究了许多第三方web框架,提取出我们认为最常用的特性,并将它们集成进 net/http。然后我们通过在G...

2024-02-14 23:27:16 60

转载 极限挑战:使用 Go 打造百亿级文件系统的实践之旅

JuiceFS 企业版是一款为云环境设计的分布式文件系统,单命名空间内可稳定管理高达百亿级数量的文件。构建这个大规模、高性能的文件系统面临众多复杂性挑战,其中最为关键的环节之一就是元数据引擎的设计。JuiceFS 企业版于 2017 年上线,经过几年的不断迭代和优化,在单个元数据服务进程使用 30 GiB 内存的情况下,能够管理约 3 亿个文件,并将元数据请求的平均处理时间维持在 100 微秒量级...

2024-02-07 13:22:01 39

转载 Go语言通知协程退出(取消)的几种方式

在 Go 语言中,控制goroutine的退出或取消很重要,这能使资源得到合理利用,避免潜在的内存泄露。如下是一些在 Go 中通知协程退出的常见方式:使用通道(Channel):通过发送特定的信号或关闭通道来通知协程退出。这是最简单直接的方法。使用 context 包:context 包提供了一种更标准化的方式来传递取消信号、超时、截止时间等控制信息。**使用 sync.WaitGroup**:虽...

2024-02-05 08:01:27 153

转载 K8Studio登场!全新K8S IDE助力轻松管理集群

K8Studio 是一个新的 Kubernetes 工具,可轻松管理云端或裸机上的 Kubernetes 集群。它提供直观界面,支持在云环境或裸机上管理集群。K8Studio 致力于创建一个全面的图形界面,使用户能够轻松管理他们的 Kubernetes 集群。与 Lens Kubernetes 或 OpenLens 类似,K8Studio 是一个跨平台客户端 IDE,可与 Kubernetes 集...

2024-01-31 08:01:28 469

转载 2024年的Rust与Go

本文译自《Rust vs Go in 2024》[1]。我可以说些什么而不让大家生气吗?Rust和Go哪个更好?你应该为下一个项目选择哪种语言,为什么?两者在性能、简单性、安全性、功能特性、规模化(scale)和并发性等方面如何比较?它们有什么共同点,又有什么根本区别?让我们通过Rust和Go的友好且公平的比较来找到答案。1. Rust和Go都很棒首先,非常重要的是,Go和Rust都是绝对优秀的编...

2024-01-29 08:00:35 58

转载 节后首场meet up,议题征集及现场招聘正式启动

GoCN 社区将在2024年全面开启线下活动,全年将在北京、上海、深圳、武汉、成都、杭州、广州等地举办线下 meetup 及大会。GoCN 是目前国内外享有盛誉的 Go 语言社区,每一年的大会都会造就不同的讲师和企业,线下活动也成为 Gopher 们了解前沿发展、深度分享的平台,每年都有上千人参与其中,是讲师们很好的展现平台。三月我们将开启上海、武汉两城市的线下meetup~上海站:3月2日武汉站...

2024-01-26 15:01:49 44

转载 一个例子,给你讲透典型的Go并发控制

Go中可以使用一个go关键字让程序异步执行一个比较常见的场景:逐个异步调用多个函数,或者循环中异步调用funcmain(){godo1()godo2()godo3()}//或者funcmain(){fori:=range[]int{1,2,3}{godo(i)}}如果了解Go并发机制,就知道main在其他goroutine运行完成之前...

2024-01-24 08:02:21 69

转载 2024年必看!K8s安全、AI运维、CI/CD新趋势

各位gopher,GoCN社区将全面开启线下活动,在此征集一下大家的想法和建议~有其他想法或建议的欢迎在评论区留言~~2024年要密切关注和关注什么????本文总结了2024年需要密切关注的技术趋势,包括Cilium对Kubernetes安全的影响、Hubble在Kubernetes可观察性和网络中的角色、k8sgpt为Kubernetes运维引入的人工智能、Tekton作为CI/CD系统的开源框架、T...

2024-01-22 08:01:33 99 1

转载 亲测体验Go语言模糊测试

何为 模糊测试 (Fuzz Testing)?模糊测试是一种自动化的软件测试技术,它通过向程序提供无效、意外或随机的数据作为输入来检测软件中的错误、漏洞或失败。这种测试方法的目的是找到程序处理意外或异常输入时可能会崩溃或表现出异常行为的地方。模糊测试已成为软件开发和安全领域的一个重要组成部分。对很多基础软件,金融类软件,安全圈子的各位"师傅"们,可能在跑着若干Fuzz Testing以寻找漏洞。作...

2024-01-19 08:00:33 45

转载 不看就落后了,Go 1.22 中更好的http router

很多人为了使用Go web中更好的路由,会使用第三方的库httprouter、gorilla/mux等。在明年的春节左右发布的Go 1.22中,Go官方终于对标准库中的http.ServeMux下手了,对它的功能进行了优化,终于可以抛弃第三方库了。一个令人兴奋的提案预计将在Go 1.22中实现—— 增强标准库net/http包中默认HTTP服务多路复用器的模式匹配能力。现有的多路复用器(http...

2024-01-17 08:00:31 130

转载 别再用GDB了,一文掌握Go最好用的调试器Delve

2024年我们将全面开启线下meetup,为了确保我们的活动能够满足大家的需求和兴趣,希望邀请大家一起参与投票,选择最适合的城市。另外我们开放2024议题征集通道,欢迎各位有实战经验、独特观点的小伙伴勇跃分享~议题提交扫这里~????导读Delve 是 Go 中使用最多的调试器,本文基于 Delve 对 Go 的调试进行了介绍。如果你对基于日志的调试感到无奈,不妨看一下本文。读完全文还可以参加文末龙年红...

2024-01-15 10:31:50 131

转载 如何从 0 到 1 搭建十亿级包裹 API Versioning ?

AfterShip 是一家服务国际电商赛道的 B2B SaaS 公司,自 2012 年成立。近几年业务持续高速增长,主要业务包括提供全球物流订单追踪系统、退换货系统、邮件营销、商品推荐等电商 SaaS 解决方案。在近日,AfterShip 与 GoCN 联合举办的 GopherDay 技术交流会上,AfterShip 高级研发工程师 Li-Hang 进行了《从 0 到 1 搭建十亿级包裹 API ...

2024-01-12 10:10:30 49

转载 每秒百万数据点 Go 应用监控系统演进

AfterShip 是一家服务国际电商赛道的 B2B SaaS 公司,自 2012 年成立,近几年业务持续高速增长,目前公司的Go应用监控系统每秒已超过百万数据点,其系统如何从 0 到 1 的演进过程,对大量公司都有参考意义。在近日,AfterShip 与 GoCN 联合举办的 GopherDay 技术交流会上,AfterShip高级 SRE 工程师Alan Zhang 进行了《每秒百万数...

2024-01-11 08:01:58 61

转载 依赖Kafka的Go单元测试例解

Kafka[1]是Apache基金会开源的一个分布式事件流处理平台,是Java阵营(最初为Scala)中的一款杀手级应用,其提供的高可靠性、高吞吐量和低延迟的数据传输能力,让其到目前为止依旧是现代企业级应用系统以及云原生应用系统中使用的重要中间件。在日常开发Go程序时,我们经常会遇到一些依赖Kafka的代码[2],如何对这些代码进行测试,尤其是单测是摆在Go开发者前面的一个现实问题!有人说用moc...

2024-01-10 08:01:26 66

转载 放弃PHP转投Go,10万行代码重构升级一步到位!

????导读腾讯新闻底层页服务是重要的核心场景请求 QPS 3.5万+,单日请求量10亿+。涉及到五大场景:腾讯新闻客户端、腾讯新闻微信与 QQ 插件、腾讯网、腾讯新闻分享页、腾讯新闻小程序。由于之前项目是位于 PHP、Go-gin 代码仓库当中,存在诸多问题,历史包袱重、技术框架不统一、服务稳定性低、开发效率差,极大影响着业务运行的稳定性和效率。因此我们迫切需要对底层页进行服务升级,本文是对升级过程中...

2024-01-08 08:02:58 84

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除