202501114
每日一谚:Use `any` for generics and `interface{}` for interfaces
Go工具链版本已不由你定:go和toolchain指令详解
通过示例全面解析Go向前兼容性以及go.mod中go和toolchain指令的使用方法
Go 1.24 交互式教程
Go 1.24 预计于 2月份发布,现在是探索新功能的好时机。官方的发布说明比较枯燥,因此我准备了一个交互式版本,其中包含许多示例,展示了变化之处以及新的行为。本文涵盖了泛型类型别名、弱指针、改进的终结器、Swiss Tables、并发哈希 Trie 映射、目录作用域文件系统访问、基准测试循环、测试用合成时间、测试上下文和工作目录、丢弃日志输出、追加器接口、更多字符串和字节迭代器、SHA-3 和相关算法、HTTP 协议、省略 JSON 中的零值、随机文本以及工具依赖项等诸多方面。 我还提供了对所描述功能的提案 (P) 和提交 (CL) 的链接。查看它们以了解动机和实现细节。
Fallthrough | Go语言的优点与不足
本期节目中,Kris 与 Ian、Matt 和 Dylan 共同探讨了 Go 语言的优点和不足。他们涵盖了大约 30 个主题,包括 defer、net/http、Vanity URL 和模块等。为了避免听众感到信息过载,节目中没有包含“不受欢迎的观点”环节,但节目中穿插了大量的个人观点。希望您喜欢这期内容丰富的节目。如果您有任何不同意见或认为我们遗漏了一些内容,请在社交媒体或评论区告知我们!感谢收听,祝您聆听愉快!
HTTP/2 的工作原理以及如何在 Go 中启用它
本文深入探讨了 HTTP/2 的工作原理,它通过在单个 TCP 连接上多路复用多个流来解决应用层中的 head-of-line 阻塞问题。与 HTTP/1.1 顺序处理请求不同,HTTP/2 允许通过具有独立 ID 的独立流进行并行处理。Go 标准库在使用 HTTPS 时开箱即用地支持 HTTP/2,并且通过一些配置,它也可以在普通 HTTP 上工作。文章详细解释了 HTTP/2 的框架结构、HPACK 压缩、流控制以及如何在 Go 中启用 HTTP/2,并提供了代码示例。
我们用一个 Go 包删除了 335 行代码
Prayershub 使用 FFmpeg 处理音频时遇到了挑战,代码难以维护且效率低下。为了解决这个问题,他们创建了 Podio,一个基于 Go 的音频处理库。Podio 简化了音频处理流程,将繁重的任务卸载到云端,从而减少了 335 行代码,并将音频编译速度提高了 2.4 倍以上。Podio 提供了简洁的 API,支持音频拼接、循环、淡入淡出等功能,极大提升了开发效率和用户体验。
Go 1.24 新特性详解 - 第二部分
本文是 Go 1.24 新特性详解系列的第二部分,主要介绍了标准库中的两个变化:`runtime.SetFinalizer` 和 `runtime.AddCleanup` 的区别,以及新的 `weak` 包和弱指针的用法。文章通过示例代码和详细解释,阐述了如何更好地进行资源清理以及弱指针在缓存和内部化机制中的应用。
Meet Gordon: An AI Agent for Docker
Salesforce 的 JDK 11 到 JDK 17 迁移:大型 Java 应用程序现代化的经验教训
本文讲述了 Salesforce 如何完成从 JDK 11 到 JDK 17 的迁移。这对于确保 Salesforce 核心应用程序(包括 Sales Cloud、Service Cloud 和 Marketing Cloud)的性能和可扩展性至关重要。文章详细介绍了团队如何克服封装挑战和重大更改,以及如何在迁移的同时升级构建系统并保持向后兼容性,同时保持运营稳定性并为未来的发展铺平道路。
2024年 CNCF 项目模糊测试概览
CNCF 通过安全审计、供应链评估和安全自动化工作等一系列举措,保持其项目的较高安全水平。本文将介绍 CNCF 的模糊测试计划及其在 2024 年的影响。模糊测试是一种通过对给定 API 或代码库执行大量任意输入来查找安全性和可靠性错误的技术。文章回顾了 CNCF 模糊测试在 2024 年取得的成果,包括对 Lima、Keycloak 和 OpenTelemetry 项目的模糊测试审计,并展示了通过 OSS-Fuzz 发现的漏洞数量及其趋势,以及一些具体的安全漏洞案例。
构建 Kubernetes Operator | 实用指南
Kubernetes 是一项伟大的革命性技术,它改变了开发人员对云基础设施的思考和交互方式。Kubernetes(也称为 K8s)是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。它基于与 Google 每周运行数十亿个容器相同的原则构建,Kubernetes 可以在不增加运维团队规模的情况下进行扩展。尽管 Kubernetes 功能强大,但它本质上是一种容器编排技术。虽然它极大地简化了部署和扩展,但它并没有解决软件工程师在软件开发和 DevOps 中遇到的所有挑战。为了解决这个问题,Kubernetes 提供了扩展和定制以满足团队需求的方法。它提供多种语言的客户端库。但更好的选择是 Kubernetes Operator。Kubernetes Operator 是一种在 Kubernetes 上自动化管理复杂应用程序的方法。它通过使用自定义资源和控制器来管理应用程序的生命周期,自动化部署、扩展和更新等任务。Operator 将应用程序的操作知识编码到 Kubernetes 中,从而更容易管理有状态或复杂的负载,减少人工干预。本文将介绍构建您自己的自定义 Kubernetes Operator 的指南。我们将介绍自定义资源定义、控制器以及 Kubernetes 控制器运行时。
Zig入门
这是一本关于Zig编程语言的开放获取书籍,面向初学者和经验丰富的开发者。通过小型项目(如Base64编码器/解码器、HTTP服务器和图像过滤器)学习Zig语言的语法、数据结构、内存分配器、文件系统和I/O、可选类型、测试和调试方法、错误处理、构建系统、与C语言的互操作性、线程和SIMD等内容。
AI驱动的原型设计:v0、Bolt和Lovable对比
本文探讨了三个用于原型设计组件和应用程序的AI辅助开发工具:Vercel的v0、StackBlitz的Bolt和Lovable。文章从工程角度出发,分析了它们在快速构建最小可行产品(MVP)中的实际应用、局限性和权衡。v0擅长快速UI原型设计,Bolt侧重于前端和全栈开发,Lovable则强调易用性和团队协作。文章还总结了这些工具的常见挑战,并根据不同用例提出了相应的推荐。
apache/answer
A Q&A platform software for teams at any scales. Whether it's a community forum, help center, or knowledge management platform, you can always count on Apache Answer.
cli/cli
GitHub’s official command line tool
aws/aws-sdk-go-v2
AWS SDK for the Go programming language.
urfave/cli
A simple, fast, and fun package for building command line apps in Go
techschool/simplebank
Backend master class: build a simple bank service in Go
binwiederhier/ntfy
Send push notifications to your phone or desktop using PUT/POST
authelia/authelia
The Single Sign-On Multi-Factor portal for web apps
kgretzky/evilginx2
Standalone man-in-the-middle attack framework used for phishing login credentials along with session cookies, allowing for the bypass of 2-factor authentication
uber-go/zap
Blazing fast, structured, leveled logging in Go.
VictoriaMetrics/VictoriaMetrics
VictoriaMetrics: fast, cost-effective monitoring solution and time series database
siderolabs/talos
Talos Linux is a modern Linux distribution built for Kubernetes.
rclone/rclone
"rsync for cloud storage" - Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Azure Blob, Azure Files, Yandex Files
testcontainers/testcontainers-go
Testcontainers for Go is a Go package that makes it simple to create and clean up container-based dependencies for automated integration/smoke tests. The clean, easy-to-use API enables developers to programmatically define containers that should be run as part of a test and clean up those resources when the test is done.
containerd/containerd
An open and reliable container runtime
HavocFramework/Havoc
The Havoc Framework
golang-jwt/jwt
Go implementation of JSON Web Tokens (JWT).
cert-manager/cert-manager
Automatically provision and manage TLS certificates in Kubernetes
aquasecurity/trivy
Find vulnerabilities, misconfigurations, secrets, SBOM in containers, Kubernetes, code repositories, clouds and more
fsnotify/fsnotify
Cross-platform filesystem notifications for Go.
zeromicro/go-zero
A cloud-native Go microservices framework with cli tool for productivity.
stretchr/testify
A toolkit with common assertions and mocks that plays nicely with the standard library
sirupsen/logrus
Structured, pluggable logging for Go.
编辑:Tony Bai
编辑主页:tonybai.com
GopherDaily项目:github.com/bigwhite/gopherdaily
Copyright 2019-2024 GopherDaily