golang语言并发与并行——goroutine和channel的详细理解(一)

如果不是我对真正并行的线程的追求,就不会认识到Go有多么的迷人。 Go语言从语言层面上就支持了并发,这与其他语言大不一样,不像以前我们要用Thread库 来新建线程,还要用线程安全的队列库来共享数据。 以下是我入门的学习笔记。 Go语言的goroutines、信道和死锁 goroutine Go语言中有个概念叫做goroutine, 这类似我们熟知的线程,但是更轻。 以下的程序,我们串行地去执行两次loop函数: func loop() { for i := 0; i < 10; i++ { f...阅读全文

2017-03-04 16:24 skh2015java
阅读:35396 评论:12

GoMock框架使用指南

序言 要写出好的测试代码,必须精通相关的测试框架。对于Golang的程序员来说,至少需要掌握下面三个测试框架: GoConvey GoStub GoMock 读者通过前面三篇文章的学习可以对框架GoConvey和GoStub优雅的组合使用了,本文将接着介绍第三个框架GoMock的使用方法,目的是使得读者掌握框架GoConvey + GoStub + GoMock组合使用的正确姿势,从而提高测试代码的质量。 GoMock是由Golang官方开发维护的测试框架,实现了较为完整的基于interface...阅读全文

2017.06.24 23:40 _张晓龙_
阅读:17870 评论:2

服务器开发利器golang context用法详解

本文主要基于官方文档Go Concurrency Patterns: Context以及视频Advanced Go Concurrency Patterns的学习而得。 背景 在go服务器中,对于每个请求的request都是在单独的goroutine中进行的,处理一个request也可能设计多个goroutine之间的交互, 使用context可以使开发者方便的在这些goroutine里传递request相关的数据、取消goroutine的signal或截止日期。 Context结构 // A ...阅读全文

2017.06.29 16:09* kingeasternsun
阅读:40145 评论:0

golang日志框架logrus

golang自带日志框架功能比较简单,仅提供print、panic、fatal三个方法,对于常规的日志切割等功能并未提供支持。 这里推荐使用sirupsen/logrus日志库。 logrus feature 结构化、可插拔的日志模块 完全兼容官方log库接口 Field机制 可扩展的HOOK机制 TEXT与JSON两种可选格式 简单使用示例 std Logger 与官方log类似,logrus也提供了一个名为std的标准logger,对外导出的各类方法直接使用std记录日志,一般可按如下方式使...阅读全文

2017.07.31 19:59 yiduyangyi
阅读:21292 评论:4

Golang 任务队列策略 -- 读《JOB QUEUES IN GO》

Golang 在异步处理上有着上佳的表现。因为 goroutines 和 channels 是非常容易使用且有效的异步处理手段。下面我们一起来看一看 Golang 的简易任务队列 一种"非任务队列"的任务队列 有些时候,我们需要做异步处理但是并不需要一个任务对列,这类问题我们使用 Golang 可以非常简单的实现。如下: go process(job) 这的确是很多场景下的绝佳选择,比如操作一个HTTP请求等待结果。然而,在一些相对复杂高并发的场景下,你就不能简单的使用该方法来实现异步处理。这时...阅读全文

2017-11-23 09:58 artong0416
阅读:3871 评论:3

Go — 搭建GraphQL 服务端

Github提供的GraphQL接口非常全面,那么我们该如何搭建出自己的接口呢?好在GraphQL提供了很多语言的解决方案。本文主要阐述如何用go搭建自己的GraphQL服务器。如果了解GraphQL建议先阅读GraphQL — API查询语言 或相关资料。 graphql-go An implementation of GraphQL in Go. Follows the official reference implementation graphql-js. 一套比较完善的框架,众所周知g...阅读全文

2018-03-21 17:34:41 myWsq
阅读:4622 评论:0

go-admin: 基于golang搭建后台管理中心

go-admin 是基于golang的后台管理中心搭建框架,利用 go-admin 可以利用极少的代码搭建起一个具有rbac认证,数据增删改查等功能的后台管理中心。 go-admin 中文介绍文档:https://github.com/chenhg5/go-admin/blob/master/README_CN.md安装使用文档:https://github.com/chenhg5/go-admin/wiki有问题与建议,欢迎加入qq群:756664859阅读全文

2018.08.11 20:38* 嘎嘎嘎8333
阅读:16665 评论:0

RPC / JSON-RPC in Golang

RPC(Remote Procedure Call)—— 远程过程调用。通过它可以使函数调用模式网络化。客户端就像调用本地函数一样,客户端把这些参数打包之后通过网络传递到服务端,服务端解包到处理过程中执行,然后将执行的结果反馈给客户端。在 OSI 网络通信模型中,RPC 跨越了传输层和应用层。RPC 使得开发分布式应用程序更加容易。 HTTP RPC server using golang net/rpc package Go 标准包中已经提供了对 RPC 的支持,而且支持三个级别的 RPC:T...阅读全文

2018.10.19 12:02* 与蟒唯舞
阅读:803 评论:0

Go GraphQL 入门指南

欢迎各位 Gophers !在本教程中,我们将探索如何使用 Go 和 GraphQL 服务进行交互。在本教程完结之时,我们希望你可以了解到以下内容: - GraphQL 的基础知识 - 使用 Go 构建一个简易的 GraphQL 服务 - 基于 GraphQL 执行一些基本的查询 在本篇教程中,我们会专注于 GraphQL 在数据检索方面的内容,我们将会使用内存数据源来存储其数据。同时,本篇教程的内容将会为我们之后的教程提供一个良好的基础。 ## GraphQL 的基础知识...阅读全文

2019-03-10 19:52:52 barryz
阅读:2827 评论:0

graphql 介绍

Graphql 介绍 graphql 是一种用于 API 的查询语言,对你的 API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,减少数据的冗余。 example 声明类型 type Project { name: String tagline: String contributors: [User] } 查询语句 { project(name: "GraphQL") { tagline } } 获取结果 { "project": { "tagline": "A ...阅读全文

阅读:2577 评论:0