-
使用 Asynq 实现 Go 异步任务处理
1. 介绍 Asynq 是一个 Go 库,用于对任务进行排队并与工作人员异步处理它们。 它的工作原理: 客户端将任务放入队列 服务器从队列中拉出任务并为每个任务启动一个工作 goroutine 多个工作人员同时处理任务 仓库链接:https://github.com/hibiken/asynq) # 2. 快速开始 2.1 准备工作 确保已安装并运行了redis redis-server 安装asynq软件包 go get -u github.com/hibiken/asynq 创建项目asy…
-
Golang 中使用 JSON 时如何区分空字段和未设置字段?
Golang 中使用 JSON 时如何区分空字段和未设置字段?
-
为什么 Go 用起来会难受?这 6 个细节你知道吗
在做新的应用选型时,我们会进行应用编程语言的选择,这时会纠结 Java、PHP、Go...各种,会思考有没有致命的问题,不能用?
-
Go 中的数据分析——如何使用 Gota 包
数据分析是过滤、操纵和处理原始数据和数据集以从中获得洞察力的过程。 Python 和 R 通常是数据分析的首选语言。但是这些天,Go 正为此目的而变得越来越流行。 在本教程中,我们将介绍 Gota(Go 中的数据分析包)及其核心功能和用途。 先决条件 了解 Golang 中的函数式编程。 安装了 Go 的 Golang IDE(我使用 Goland 和 Go 1.17.6,但您可以使用其他任何版本) 什么是戈塔? Gota 是 Go 编程语言的数据框和数据整理模块。 Gota 类似于 Pytho…
-
使用Golang开发OpenStack服务的CLI
由于我们需要编写自己服务的客户端,之前参考过magnum的python客户端,编写过一个,整体感受就是: 一件简单的事儿,被他封装的很复杂,而且还有一个关键痛点,部署问题: 1.依赖python环境 2. 蹩脚的二进制打包方式。因此,作为一个产品的CLI,以二进制方式交付会带来诸多方便,比如cloud foundry也用golang重写了他的客户端部分。 Cobra简介 在博客的开篇写过一篇cobra的博客: 如何使用golang编写漂亮的命令行工具, 很多流行的CLI都基于这个库开发,比如ku…
-
Google资助Linux项目,Linux内核将首次出现Rust代码
这家搜索引擎巨头正努力尝试在 Linux 内核中使用 Rust 代码,这是在几十年来只使用 C 语言后的一次重大技术转变。 Google 在周四表示,他们正在资助一个项目,通过用 Rust 编程语言编写操作系统的内核部分来提高 Linux 的安全性。如果该项目成功,这种变化将标志着一个开源软件项目的重大技术转变,这一举措可以加强互联网和智能设备的安全性,毕竟 Linux 是 Android、Chrome OS 以及互联网中众多基础设施的基础。 Miguel Ojeda 曾编写过大型强子对撞机粒子…
-
找到恶意软件包:Go 语言生态系统中的供应链攻击是怎样的?
近期发生的严重的 SolarWinds 攻击事件和新型 “依赖混淆“攻击,让供应链攻击成为讨论焦点:攻陷供应链中不太安全的元素,导致更安全的目标遭攻陷。 供应链攻击的流行目标一直都是流行编程语言的很多包管理系统,如 NPM (JavaScript)、Rubygems (Ruby) 以及 PyPI (Python)。这些系统常年来遭受恶意攻击,攻击者上传恶意包并等待受害者安装。 目前为止,尚未看到关于 Go 生态系统的供应链攻击情况。鉴于 Go 语言是我的新宠,我决定自己做一些调查。 好在依赖混淆…
-
Go 中如何准确地判断和识别各种网络错误
Go语言集成了简单易用的网路库,今天的推送是一线架构师分享的Go网络库使用入门指南。 Go 自带的网络标准库可能让很多第一次使用它的人感慨,这个库让网络编程的门槛低到了令人发指的地步。然而,封装层次与开发人员的可控性往往是矛盾的。Go 的网络库封装程度算是一个不错的折衷,绝大部分时候,我们只需要调用 Dial, Read, Write Close 几个基本操作就可以了。 但是,网络是复杂的。我们有时候需要细致的处理网络中的各种错误,根据不同的错误进行不同的处理。比如我们遇到一个网络错误时,需要区…
-
50 万行Go代码,美国一组织从Python 2迁移到 Go
美国教育非营利组织可汗学院(Khan Academy)方面透露,其已经用谷歌的 Go 编程语言完成了 50 万行代码,以取代此前用 Python 2 编写的后台服务器。根据介绍,可汗学院在其 Goliath 项目下实现了从 Python 2 到 Go 的大转变。Goliath 最初是使用 Python 2 实现的;从 2019 年开始,可汗学院逐步将其迁移到了 Go。 当我们开始 Goliath 项目的时候,团队中没有人知道 Go,只是通过实验验证了 Go 是相较而言更好的选择。今天,我们所有的…
-
如何用Golang协程实现流量统计系统?
相信专业的程序开发人员都对并发编程十分熟悉。实现并发编程有进程、线程等方式,但是多进程和多线程并不是很完美。都是有内核进行调度,有 CPU 时间片的概念,进行抢占式调度,对于编程来说,难度比较大。 而 Golang 作为一门现代化的编程语言,它不需要你直面这些复杂的问题。本质上, goroutine 就是协程。 不同的是,Golang 在 runtime、系统调用等多方面对 goroutine 调度进行了封装和处理,当遇到长时间执行或者进行系统调用时,会主动把当前 goroutine 的CPU …