本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法。 部署Go语言项目 本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法。 独立部署 Go 语言支持跨平台交叉编译,也就是说我们可以在 Windows 或 Mac 平台下编写代码,并且将代码编译成能够在 Linux amd64 服务器上运行的程序。 对于简单的项目,通常我们只需要将编译后的二进制文件拷贝到服务器上,然后设置为后台守护进程运行即可。 编译 编译可以通过以…

2021-06-15 51点热度 0人点赞 阅读全文

本文介绍了如何使用Docker以及Docker Compose部署我们的 Go Web 程序。 为什么需要Docker? 使用docker的主要目标是容器化。也就是为你的应用程序提供一致的环境,而不依赖于它运行的主机。 想象一下你是否也会遇到下面这个场景,你在本地开发了你的应用程序,它很可能有很多的依赖环境或包,甚至对依赖的具体版本都有严格的要求,当开发过程完成后,你希望将应用程序部署到web服务器。这个时候你必须确保所有依赖项都安装正确并且版本也完全相同,否则应用程序可能会崩溃并无法运行。如果你想在另一个web服…

2021-06-15 37点热度 0人点赞 阅读全文

本文回顾了Go语言中select语句的一些用法,并延伸出了一个如何在select中实现优先级的小技巧,希望能对大家有所帮助。 Go语言在select语句中实现优先级 select语句介绍 Go 语言中的 select语句用于监控并选择一组case语句执行相应的代码。它看起来类似于switch语句,但是select语句中所有case中的表达式都必须是channel的发送或接收操作。一个典型的select使用示例如下: select { case <-ch1: fmt.Println("liwenzho…

2021-06-15 13点热度 0人点赞 阅读全文

本文翻译自RabbitMQ官网的Go语言客户端系列教程,共分为六篇,本文是第一篇——HelloWorld。 这些教程涵盖了使用RabbitMQ创建消息传递应用程序的基础知识。 你需要安装RabbitMQ服务器才能完成这些教程,请参阅安装指南或使用Docker镜像。 这些教程的代码是开源的,官方网站也是如此。 先决条件 本教程假设RabbitMQ已安装并运行在本机上的标准端口(5672)。如果你使用不同的主机、端口或凭据,则需要调整连接设置。 RabbitMQ Go语言客户端教程(一) 介绍 RabbitMQ是一个消…

2021-06-15 17点热度 0人点赞 阅读全文

本文翻译自RabbitMQ官网的Go语言客户端系列教程,共分为六篇,本文是第二篇——任务队列。 这些教程涵盖了使用RabbitMQ创建消息传递应用程序的基础知识。 你需要安装RabbitMQ服务器才能完成这些教程,请参阅安装指南或使用Docker镜像。 这些教程的代码是开源的,官方网站也是如此。 先决条件 本教程假设RabbitMQ已安装并运行在本机上的标准端口(5672)。如果你使用不同的主机、端口或凭据,则需要调整连接设置。 任务队列/工作队列 (使用Go RabbitMQ客户端) 在第一个教程中,我们编写程序…

2021-06-15 19点热度 0人点赞 阅读全文

本文翻译自RabbitMQ官网的Go语言客户端系列教程,共分为六篇,本文是第三篇——发布/订阅。 这些教程涵盖了使用RabbitMQ创建消息传递应用程序的基础知识。 你需要安装RabbitMQ服务器才能完成这些教程,请参阅安装指南或使用Docker镜像。 这些教程的代码是开源的,官方网站也是如此。 先决条件 本教程假设RabbitMQ已安装并运行在本机上的标准端口(5672)。如果你使用不同的主机、端口或凭据,则需要调整连接设置。 发布/订阅 在上一个教程中,我们创建了一个工作队列。工作队列背后的假设是每个任务只传…

2021-06-15 26点热度 0人点赞 阅读全文

本文翻译自RabbitMQ官网的Go语言客户端系列教程,共分为六篇,本文是第四篇——路由。 这些教程涵盖了使用RabbitMQ创建消息传递应用程序的基础知识。 你需要安装RabbitMQ服务器才能完成这些教程,请参阅安装指南或使用Docker镜像。 这些教程的代码是开源的,官方网站也是如此。 先决条件 本教程假设RabbitMQ已安装并运行在本机上的标准端口(5672)。如果你使用不同的主机、端口或凭据,则需要调整连接设置。 路由 (使用Go RabbitMQ客户端) 在上一教程中,我们构建了一个简单的日志记录系统…

2021-06-15 21点热度 0人点赞 阅读全文

本文翻译自RabbitMQ官网的Go语言客户端系列教程,共分为六篇,本文是第五篇——topic。 这些教程涵盖了使用RabbitMQ创建消息传递应用程序的基础知识。 你需要安装RabbitMQ服务器才能完成这些教程,请参阅安装指南或使用Docker镜像。 这些教程的代码是开源的,官方网站也是如此。 先决条件 本教程假设RabbitMQ已安装并运行在本机上的标准端口(5672)。如果你使用不同的主机、端口或凭据,则需要调整连接设置。 topic交换器(主题交换器) 发送到topic交换器的消息不能具有随意的routi…

2021-06-15 18点热度 0人点赞 阅读全文

本文翻译自RabbitMQ官网的Go语言客户端系列教程,共分为六篇,本文是第六篇——RPC。 这些教程涵盖了使用RabbitMQ创建消息传递应用程序的基础知识。 你需要安装RabbitMQ服务器才能完成这些教程,请参阅安装指南或使用Docker镜像。 这些教程的代码是开源的,官方网站也是如此。 先决条件 本教程假设RabbitMQ已安装并运行在本机上的标准端口(5672)。如果你使用不同的主机、端口或凭据,则需要调整连接设置。 远程过程调用(RPC) (使用Go RabbitMQ客户端) 在第二个教程中,我们学习了…

2021-06-15 16点热度 0人点赞 阅读全文

本文翻译自官方wiki,整理了Go语言中关于切片操作的一些技巧。 本文翻译自官方wiki,整理了Go语言中关于切片操作的一些技巧。 备注:由于行文需要,一些细节与原文存在些许出入。 切片操作常用技巧 复制 将切片a中的元素复制到切片b中。 最简单的、最常用的方法就是使用内置的copy函数。 b = make([]T, len(a)) // 一次将内存申请到位 copy(b, a) 除了使用内置的copy函数外,还有下面两种使用append函数复制切片的方法。 b = append([]T(nil),…

2021-06-15 15点热度 0人点赞 阅读全文
12