Go语言中的TCP/IP网络编程

Go语言TCP/IP网络编程 乍一看,通过TCP/IP层连接两个进程会感觉可怕, 但是在Go语言中可能比你想象的要简单的多。 TCP/IP层发送数据的应用场景 当然很多情况下,不是大多数情况下,使用更高级别的网络协议毫无疑问会更好,因为可以使用华丽的API, 它们隐藏了很多技术细节。现在根据不同的需求,有很多选择,比如消息队列协议, gRPC, protobuf, FlatBuffers, RESTful网站API, websocket等等。 然而在一些特殊的场景下,特别是小型项目,选择任何其他...阅读全文

2018-05-05 04:34:37 WalkerQiao
阅读:2238 评论:0

基于go搭建微服务实践教程 (一)

概览 下面这张图就是我们将要搭建的项目的概览图。我们将开始写第一个微服务之后我们会一点点完成这张图的所有内容。 讲解:白色虚线的方框内: docker swarm集群,运行在一个或多个节点上。蓝色方框内: Spring cloud/Netflix OSS提供的支持系统,或者其他服务,比如zipkin黄色方框/白色方框: 一个微服务。 运行资源消耗 为什么我们要用go来写微服务?除啦有意思和有效率,另一个主要原因是go在运行时消耗的内存非常小。下面这张图对比了Spring boot,Spring ...阅读全文

2018-05-05 14:34:36 瘦瘦鸭
阅读:2922 评论:2

基于go搭建微服务实践教程 (概览)

原文:Go Microservices blog翻译:秦伟格转载请注明原文及翻译。 译者按:公司转向重新做一套支付系统,并打算用golang的微服务来实现。于是上网上找一找教程,发现中文教程都不是很系统,于是找到了这一篇,自己实践下来,感觉深浅适中,讲解清晰,一步一步可以跟着做下来,之后能明白微服务大概的意思。所以用业余时间翻译了一下,献给大家。(笔者居住在国外,但第一次翻译技术文章,希望大家能指正不足) 这一系列博客会用go语言搭建一个为服务系统,这个过程中,我们会逐步加入新的东西,并且最后让...阅读全文

2018-05-05 14:34:36 瘦瘦鸭
阅读:4060 评论:0

Go/Revel教程:在浏览器(使用 PaizaCloud IDE)上,构建 Go web 框架 Revel 的应用程序

![gopher](https://raw.githubusercontent.com/studygolang/gctt-images/master/go-revel/20180323134353.png) Go 语言(golang)的特性有: - 标准库有很多功能,如网络。 - 易于编写并发程序。 - 易于管理可执行文件(因为只有一个文件) 由于这些特点,Go 语言在 web 开发中也越发受到欢迎。 如下图所示,我们可以在 Google Trends 看到 Go 受...阅读全文

2018-05-05 17:52:45 heyulong
阅读:2181 评论:0

不要对 I/O 上锁

锁可用于同步操作。但如果使用不当的话,也会引发显著的性能问题。一个比较常见出问题的地方是 HTTP handlers 处。尤其很容易在不经意间就会锁住网络 I/O。要理解这种问题,我们最好还是来看一个例子。这篇文章中,我会使用 Go。 为此,我们需要编写一个简单的 HTTP 服务器用以报告它接收到的请求数量。所有的代码可以从 [这里](https://github.com/gobuildit/gobuildit/tree/master/lock) 获得。 报告请求数量的服务看起来是这...阅读全文

2018-05-05 17:57:33 snowInPluto
阅读:2608 评论:1

周五有感:失败,快速且猛烈

**摘要**:*在实现一个服务或 API 时,如果你收到一个你不太理解的请求,最友好的方式就是返回一个错误信息。* 让我们来考虑这样一个 API: `GET /mySum?num=3&num=42` 非常简单,是不是?我可能会这样来实现它: ```go func mySum(args url.Arguments, w http.ResponseWriter) { w.Write(int(args["num"][0]) + int(args["num"][1])) ...阅读全文

2018-05-05 18:01:43 krystollia
阅读:1316 评论:0

创建和使用 HTTP 中间层(Making and Using HTTP Middleware)

在构建 Web 应用时,可能需要为许多(甚至全部)HTTP 请求运行一些公共的函数。你可能需要对每个请求进行记录,对每个响应进行压缩,或者在执行一些重要的处理之前检查一下缓存。 组织这种公共函数的一种方法是将其设置为中间层 - 自包含代码,它们在正常应用处理程序之前或之后,独立地处理请求。在 Go 中,使用中间层的常见位置在 ServeMux 和应用程序处理之间,因此通常对 HTTP 请求的控制流程如下所示: `ServeMux => Middleware Handler => Ap...阅读全文

2018-05-05 18:07:35 gogeof
阅读:1358 评论:0

基于gokit的微服务项目骨架ko

前段时间发布了一个小小的web开发项目骨架morningo,性能与效率齐飞,开发速度在短暂时间熟悉go语言后应该是匹配php,ruby等这些脚本语言,而后期项目并发性能,基本并发到上千乃至上万tcp连接没问题。但从业务架构层面看,项目再发展,数据库存在瓶颈,单体项目耦合度高,可维护性差,可延展性差,存在很多问题。因而项目早期可以采用单体架构,但后期仍然推荐的是面向服务的分布式架构。分布式的架构模式虽然带来了增加的代码量,服务间沟通的成本,但整体项目更具有弹性,延展性更好。 项目地址:https:...阅读全文

阅读:9814 评论:4

用golang创建区块链,仅需200行代码。

本文你将用Go(golang)语言创建自己的区块链、理解哈希函数是如何保持区块链的完整性、掌握如何创造并添加新的块、实现多个节点通过竞争生成块、通过浏览器来查看整个链、了解所有其他关于区块链的基础知识。 但是,文章中将不会涉及工作量证明算法(PoW)以及权益证明算法(PoS)这类的共识算法,同时为了让你更清楚得查看区块链以及块的添加,我们将网络交互的过程简化了,关于 P2P 网络比如“全网广播”这个过程等内容将在后续文章中补上。 开发环境 我们假设你已经具备一点 Go 语言的开发经验。在安装和配...阅读全文

2018-05-06 11:33:04 以太坊智能合约开发
阅读:5995 评论:1

使用 Go 读取文件 - 概览

2017 年 12 月 30 日 2018 年 1 月 1 日:[更新](http://kgrz.io/reading-files-in-go-an-overview.html#update)(译注:在文章末尾) --- 当我开始学习 Go 的时候,我很难熟练得运用各种操作文件的 API。在我尝试写一个多核心的计数器([kgrz/kwc](https://github.com/kgrz/kwc))时让我感到了困惑 - 操作同一个文件的不同方法。 在今年的 [Adven...阅读全文

2018-05-06 21:49:13 killernova
阅读:3903 评论:0

Go 中的标签

`Label` 在 `break` 和 `continue` 语句中是可选参数,而在 `goto` 语句中是必传的参数。`Label` 只在声明它的函数中有效。只要函数中声明了 `Label` ,那它在该函数的整个作用域都有效。 ```go func main() { fmt.Println(1) goto End fmt.Println(2) End: fmt.Println(3) } ``` (注意!我们是在 goto 语句之后定义的 `Label`) ...阅读全文

2018-05-06 22:11:44 saberuster
阅读:6781 评论:0

Go 语言的优点,缺点和令人厌恶的设计

这是关于 「[Go是一门设计糟糕的编程语言 (Go is not good)](https://github.com/ksimka/go-is-not-good)」 系列的另一篇文章。Go 确实有一些很棒的特性,所以我在这篇文章中展示了它的优点。但是总体而言,当超过 API 或者网络服务器(这也是它的设计所在)的范畴,用 Go 处理商业领域的逻辑时,我感觉它用起来麻烦而且痛苦。就算在网络编程方面,Go 的设计和实现也存在诸多问题,这使它看上去简单实际则暗藏危险。 写这篇文章的动机是因为我最...阅读全文

2018-05-06 22:44:53 Donng
阅读:52766 评论:16

Go语言入门——从一个简单例子入门

查看文档 首先先分享一个可以在本地就能查看文档的骚操作(linux系统) 1.打开命令行终端,输入godoc -http=:8000,如果想后台运行在后面加个& 2.然后打开浏览器,输入网址:localhost:8000 就可以愉快地看文档了 go语言是个什么东西我想不用我介绍了~~~大家百度吧 接下来我会一步一步地敲一个hello who?代码 下载 如果你使用的是linux系统: sudo apt-get install golang 如果没成功: sudo add-apt-reposito...阅读全文

2017年09月26日 22:18:14 qq_36474134
阅读:6556 评论:0

Golang Module学习使用

本文为转载,原文:Golang Module学习使用 Golang 介绍 美国当地时间2018年8月24日,Go 开发团队宣布推出 Go 1.11 正式版。 此版本增加了对被称作“模块(Go Modules)”的初步支持,这是 GOPATH 的替代方案,集成了对版本控制和软件包分发的支持。 自从Go 1.11 推出之后,一直也没有时间去学习新版本的特性,这次就来研究一下Go Modules的使用吧 1. go mod 命令 安装go 1.11版本后,可以通过以下命令大致看下go mod有哪些命令...阅读全文

2019.01.09 17:57 ChainZhang
阅读:1461 评论:1

go语言最主要的特性

go语言最主要的特性 go语言最主要特性主要是: 自动垃圾回收 更丰富的内置类型 函数多返回值 错误处理 匿名函数和闭包 类型和接口 并发编程 反射 语言交互性 1、自动垃圾回收 能够像java、C#等语言自带GC,不用再为内存管理苦恼 2、更丰富的内置类型 关键在于内置,像map、slice这些常用的数据类型,内置于builtin,默认包含,无需自己添加。 3、函数返回多值 多值返回仅动态语言Python有此特性 func getName()(firstName, middleName, la...阅读全文

2019.01.09 14:35 Golang语言社区
阅读:1332 评论:0

Golang 测试教程

GoCommunity.png How to write test with golang 代码示例 TDD(Test-Driven development) 测试驱动开发 内置的 testing 库 、 表格驱动、样本测试、TestMain 第三方:goconvey Monkey 猴子补丁 数据库 mock travisCI 代码覆盖率 TDD 快速实现功能 再设计和重构 软件测试 在指定的条件下,操作程序,发现程序错误 单元测试 对软件的组成单元进行测试,最小单位:函数 包含三个步骤: 指定...阅读全文

2019.02.28 23:26 谢小路
阅读:1871 评论:0

Golang封装RabbitMQ

程序封装 package rabbitmq import ( "fmt" "github.com/streadway/amqp" "time" ) // 定义全局变量,指针类型 var mqConn *amqp.Connection var mqChan *amqp.Channel // 定义生产者接口 type Producer interface { MsgContent() string } // 定义接收者接口 type Receiver interface { Consumer([]b...阅读全文

阅读:2423 评论:3

golang的学习

版权声明: https://blog.csdn.net/liwan2018/article/details/79359676 人生的第一篇CSDN博客文章 浅谈一下golang学习的入门方法,给有兴趣的童鞋们指个路: 认识golang 理解golang 深邃golang 简单go 什么是golang 就是一种编程语言呗,近几年飙升很迅速,从50多名上升到前几名,马上要取代C语言,超越Java了。所以,你值得拥有! 别墨迹了,开go吧。 golang的由来 编程语言的演化就像生物物种的演化类似,一...阅读全文

2018年02月24日 10:59:24 liwan2018
阅读:2275 评论:0