登录社区云,与社区用户共同成长
邀请您加入社区
本文聚焦 Go 1.24 map 底层重构,解释它如何从旧版 bucket + overflow 方案,演进为 Swiss Table + 局部 split 的新结构,以及它所带来的性能提升。
Go channel 从学习到入坑,教你如何爱上channel。
Java、Go和Rust在并发模型上各具优势。Java 21通过虚拟线程(Loom)实现高效并发,兼容传统阻塞式编程,适合企业级应用;Go凭借轻量级Goroutine和G-P-M调度模型,成为云原生开发的首选;Rust的无栈协程和零成本抽象则适用于高性能基础设施(如数据库、网关),提供极致性能与安全性。选择取决于场景:Java适合传统业务,Go适合微服务,Rust适合极限性能需求。
本文介绍了基于CesiumJS+React+Go的三维无人机编队实时巡航可视化系统。系统实现了多机同步仿真、真实地理坐标渲染、智能相机跟随等功能。关键技术包括:后端使用Go开发飞行模拟器,通过WebSocket以5Hz推送数据;前端采用React+CesiumJS,设计帧级插值引擎将数据平滑渲染至60fps;实现Haversine距离计算、Bearing航向角等核心算法。文章详细讲解了系统架构、数
最近私信问我面试题的小伙伴实在太多了,一个个回有点回不过来。我花了两个周末,把星球里大家公认最容易挂的。
本文基于Istio+ChaosMesh+Nacos构建微服务韧性体系,通过实测12服务集群验证治理效果。核心实践包括:1)Istio金丝雀发布使故障影响面降至5%;2)自适应熔断器将库存宕机时的订单错误率从98.7%降至3.2%;3)OpenTelemetry统一采集使跨服务问题定位效率提升90%;4)Nacos实现配置秒级生效;5)ChaosMesh演练发现HPA扩容延迟问题并优化至45秒。治理
本文基于真实业务场景,探讨了消息队列(Kafka)在分布式系统中的实践方案。通过用户注册-邮件服务解耦、CQRS读写分离、Saga事务模式等典型案例,详细展示了消息队列在异步解耦、削峰填谷、最终一致性等场景的应用。重点包括:1)Kafka生产消费的可靠实现(幂等性、精确一次语义);2)事件驱动架构实现服务解耦;3)CQRS模式提升查询性能;4)Saga模式处理分布式事务。所有方案均在Minikub
分布式能力不是“锦上添花”,而是:🔹 配置中心:让变更如呼吸般自然🔹 链路追踪:让故障无处遁形🔹 熔断降级:在风暴中守护系统生命线🔹 Metrics:用数据说话,告别“我觉得”
Go-zero 的微服务进阶之路:始于 goctl 的契约驱动与提效,立于 zrpc 与 etcd 的架构互联,成于 熔断限流等全链路服务治理的坚实保障。
Go语言逃逸分析机制解析 逃逸分析是Go编译器决定变量分配在栈还是堆的重要机制。当变量在函数结束后仍需被访问时,就会发生"逃逸"到堆内存的情况。栈内存分配仅需两个CPU指令,回收代价小;而堆内存分配需要寻找合适内存块并通过GC回收,系统开销较大。 编译器根据变量是否被外部引用决定逃逸:函数外部未引用的优先放栈,存在引用的必定放堆。常见逃逸场景包括:返回局部变量指针、分配大对象超
其实我们可以完全不用ServerMux,因为 http.ListenAndServe()的第二个参数就是Handler,可以传入任意实现ServerHTTP的对象,包括自定义路由器。w.Write([]byte("用户列表..."))} else {// 启动。
若你追求快速开发与分布式能力,选Go;若你追求极致性能与内存安全,选Rust;若你在构建大型系统,两者结合使用,效果最佳
Arbess 是一款开源免费的 CI/CD 工具,本文将详细介绍如何安装配置使用Arbess+GitLab+PostIn实现Go项目自动化构建部署并进行接口自动化测试。
在 2025 年的前十名中也出现了一些有趣的变化。需要注意的是,TIOBE 指数并不意味着某种语言是“最好的”或是编写代码行数最多的语言。Java 是否能继续凭借其(有时被认为)冗长、样板代码多以及甲骨文(Oracle)所有的背景,抵挡住 C# 的攻势,仍是一个开放的问题。此外,Zig 在 2025 年从第 61 位攀升到第 42 位,看来是进入 TIOBE 前 30 的有力候选者。为便于观察更大
本文介绍了从零搭建移动端数字人生成应用的实战过程。采用React+Vite前端和Go+Gin后端架构,通过D-ID API实现头像上传、文本/音频选择、视频生成等功能。前端提供移动友好交互,后端处理接口封装、资源托管和安全校验。项目实现了开发/生产双环境支持,包含完整数据流设计、鉴权策略和部署方案。关键点包括:代理配置、CORS处理、任务轮询机制、安全建议等,并提供了常见问题排查和扩展优化方向。
go-zero v1.9.3 在负载均衡、链路追踪、ORM 逻辑与 gRPC 连接策略方面带来了全面升级,使框架在微服务稳定性、性能及最佳实践对齐方面更进一步。
本文并非否定 sync.Pool,而是分享技术选型的思考过程,帮助大家更准确地使用它
这周在对终端网络聊天室项目进行实现异步消息队列功能的时候,要利用到redis来实现消息持久化。针对实现消息对列功能redis提供的类型有列表List,发布订阅PubSub以及stream流, 其中List结构也可以作为一个消息队列来实现数据持久化,但是存在消息丢失,只支持单消费者模式等缺陷;而PubSub虽然采用发布订阅模式,支持多生产多消费模型,却不支持数据持久化,同时也无法避免消息丢失和队列溢
项目运行前都需要怎么设计?做那些准备呢?本篇博客将会拆解 Go 应用启动的核心代码逻辑
摘要: Go语言在企业级开发中因性能与并发优势快速崛起,但其缺乏Java注解机制(如Spring的@RestController、@Autowired),导致开发效率受限。设计上,Go强调显式与简洁,反对运行时"魔法",牺牲了注解驱动的便利性。开发者需依赖结构体标签、代码生成或手动配置,增加了样板代码。当前Go框架(如Gin、go-zero)多为功能库,缺乏Spring Boo
在 Go 语言中,一元运算符(一些只需要一个操作数的运算符称为一元运算符(或单目运算符)。在 Go 语言中,除了之前提到的五类主要运算符,还有一些重要的特殊运算符,它们提供了底层内存操作、类型处理、通道控制等核心功能。Go 的运算符设计体现了 “显式优于隐式” 的哲学,通过掌握这些运算符的特性和最佳实践,可以编写出更高效、更安全的 Go 代码。是 Golang 中特有的一个位运算符,作用是按位清除
本文介绍了Softhub软件下载站前端分片上传功能的实现方案。通过Vue3和Element Plus构建了完整的文件上传流程,包含三个核心组件:上传资源组件负责文件选择和初始化,分片上传逻辑实现文件分割和断点续传,资源管理组件提供已上传资源的管理功能。系统采用5MB分片大小,配合进度条显示,实现了稳定高效的大文件上传。特别处理了后端雪花算法生成的大整数ID,确保数据精度不丢失。整体架构清晰,通过流
本文介绍了一个基于Hyperledger Fabric的不动产登记与交易平台,实现了房产登记、交易流程的数字化管理。系统采用前后端分离架构,后端使用Go语言和Gin框架,前端基于Vue.js和Ant Design Vue。核心功能包括不动产证书管理、网签合同创建和税务处理,所有关键数据(如房产证书、交易合同、税务记录)均存储在区块链上确保安全透明。系统支持多角色协作:普通用户提交申请、税务部门处理
浅析 Golang 的内存管理,并对 Golang 的内存逃逸和内存泄漏进行了解学习。
函数比较长,我做了截取。而我们的变量 a 和 变量 c 有一个共同特点,就是它们是“空 struct”,空 struct 是不占用内存空间的。很多人认为 a 和 b 是 2 个不同的对象实例,便认为 a 和 b 具备不同的内存地址,故而判断 a==b 的结果为 false。空结构体实例可进行相等性比较,因为没有值,所以同类型空结构体的所有实例在值上是相等的(a == b 恒为 true)。一是节省
管道:本质上就是一个数据结构--队列(先进先出)它本身就是并发安全的,不需要加锁。管道是有类型的,一个string类型的管道只能存放string类型的数据。管道是引用类型。
ARG用于定义构建时的变量,可以在构建时通过参数覆盖。构建阶段使用 Go 镜像作为基础设置 Go 环境编译代码生成二进制文件运行阶段使用轻量级的 OpenEuler 镜像配置运行时环境从构建阶段复制二进制文件设置启动命令。
I/O密集型任务(如数据库查询、文件操作)性能优异,但CPU密集型任务会阻塞事件循环,导致整体延迟。:类似PHP的阻塞式模型(如Rails默认配置),通过多进程(Unicorn)或多线程(Puma)优化,但内存占用高1911。:采用阻塞式I/O,每个请求对应一个独立进程(如Apache的Prefork模式),资源消耗高,尤其在内存占用方面179。:同步模式下性能与PHP相当,异步模式下(如Fast
Go函数篇;init函数、匿名函数、字符串函数、日期函数、内置函数,闭包处理、defer机制
和服务类似,一个检查可以通过检查定义或HTTP API请求来注册.我们将使用和检查定义来注册检查.和服务类似,因为这是建立检查最常用的方式.// 健康检查的 HTTP API 方式 curl http://localhost:8500/v1/health/state/critical重启agent或者发送SIGHUP信号,就可以看到日志输出。
在我重构JVM尝试实现泛型时,在阅读《深入理解JVM》这本书时,对Java泛型的实现原因和应用场景有了一定了解,书中也将其与C#泛型进行了简单对比。当我去年在学习Golang时,也发现了Golang在1.8后才提供了泛型,并不是原生自带而是与Java类似在中间版本加入的特性,网上也有众多言论在抨击Golang泛型 "代码丑陋","使用别扭"。
根据 csview 对 Golang 关键字的八股文进行整理。
Go语言的简洁性、并发能力和云原生基因使其在AI时代持续占据优势。深耕云原生:掌握K8s生态,成为基础设施层专家。拥抱AI工具:用AI提升编码效率,同时探索Go在AI工程化中的新场景。保持底层思维:理解运行时机制(如GC算法),避免成为“调参工程师”。Go语言以其简洁、高效和并发能力成为现代开发者的首选语言之一。从基础语法到高并发编程,再到云原生架构设计,Go的学习路径清晰且实用。在AI时代,Go
使用def关键字定义函数。```pythonprint(greet("Python"))# 输出 "Hello, Python!```使用class关键字定义类。```pythonclass Dog:definitprint(dog.bark())# 输出 "Buddy says woof!```
在 Linux 和类 Unix 系统中,信号是一个用于通知程序某些事件的机制。信号可以由内核、用户或其他进程发送。
本文根据字节跳动服务框架团队研发工程师在 CloudWeGo 技术沙龙暨三周年庆典中演讲内容《ROG——高性能 Go 实现》整理。
今天和大家分享一款超好用的开源轻量级文件分享工具 Go File,如何在本地 Ubuntu 使用 Docker 快速部署,并结合 cpolar 内网穿透工具一键发布公网,轻松实现随时随地远程访问分享文件。无论是办公还是日常生活中,我们都会遇到使用 PC 设备和安卓设备之间进行文件传输的时候。最近找到的这款 Go File 就是一款非常不错的文件传输工具。可用于局域网内分享文件和文件夹,直接跑满本地
通过以上示例,我们展示了如何在Go语言中使用NATS构建一个事件驱动的系统,并且引入了持久化订阅、主题过滤和错误处理等高级特性。这些技术结合在一起,可以帮助您构建出高效、可靠且易于扩展的分布式系统。希望这些信息对您有所帮助!
Go 官网:https://go.dev/官网除了提供学习内容外,还提供了在线执行工具,可以浅浅尝试一下。访问地址:https://go.dev/tour/welcome/1func main() { fmt.Println("Hello, 世界")}Go 语言凭借其高效并发、快速编译、简洁易用的特性,已逐渐成为系统编程和后端开发中的主流选择之一。在未来,Go 很可能在更多高性能领域中获得更广泛的
在 Go 语言中,Context 包是用于传递请求范围数据、取消信号和截止时间的机制。它通常被用来处理 goroutine 之间的通信和取消。Context 包是 Go 语言内置的,它可以很方便地使用,而不需要额外的依赖。Context 包是一个轻量级的工具,它提供了一个标准的接口,用于在 goroutine 之间传递请求范围的数据、取消信号和截止时间。Context 包实现了一种类似于树状结构的
go语言有一句很经典的话,不要通过共享内存来通信,而应该通过通信来共享内存;关闭一个末初始化的 channel 会产生 panic。channel只能被关闭一次,对同一个channel重复关闭会产生 panic。向一个已关闭的 channel 发送消息会产生 panic。从一个已关闭的channel读取消息不会发生panic,会一直读取所有数据,直到零值。
我们还是喜欢大道至简这个设计思路,开发本来简单,写程序应该是一种享受,开发框架也是需要简单,不能增加开发者开发时的心里负担。我们大家喜欢Go,就是Go的设计者们初心就是为了减少开发者的心智负担。所以GoFly框架也是志在简洁简单、开发舒服、减少开发者心智负担。
目录,用于存储构建产物,包括编译后的二进制文件、依赖项的编译结果等。另外Rust也占用了大量空间(而且Rust不仅编译速度慢,编译出来的产物,debug模式下也相当大)目录是 Rust 项目构建后的产物,通常可以安全地删除,特别是如果只是在本地开发时使用。也可能占用一些磁盘空间,尤其是当你安装了多个工具链或组件时。这是一把梭哈,还可以通过子命令,清理特定类型的缓存,清理超过x天没有使用的缓存等。好
线程,进程,协程goroutine,context,GMP,内存泄露,waitgroup使用