面向未来的API —— GitHub GraphQL API 使用介绍

> > 本文根据GitHub开发者文档,整理翻译了GitHub GraphQL API的使用方法,你可以了解到GraphQL的基本概念、GitHub > GraphQL API的使用,两个实际的使用案例,以及使用Explorer查询GitHub GraphQL API 今年5月22日,GitHub 发文 ( http://link.zhihu.com/?target=https%3A//github.com/blog/2359-introducing-github-marketplace-a...阅读全文

知乎专栏 2017-07-24 17:06:39 Entronad

Dropbox公司的Go语言探索之路

Tammy援引Rob Pike于2012年撰写的《谷歌Go语言:专为软件工程服务设计的编程语言》中的说法,解释了Go语言为何能够在Dropbox公司当中发挥重要作用: “Go语言高效、可扩展且极具生产能力。一部分程序员乐于加以运用,但也有一些人认为其难以理解甚至非常无聊。在这篇文章中,我们将解释为什么这些立场本身并不矛盾。Go语言旨在帮助谷歌公司解决其在软件开发方面面临的各类问题,这意味着其尽管不能算是一种突破性的研究型语言,但仍然成为大型软件工程项目当中的出色工具。” — Rob Pike,...阅读全文

InfoQ 2017-07-25 10:27:32 Quinn Slack 运和凭 等

徒手写一个JSON解析器(Golang)

前一阵子看到了一个Golang的JSON库go-simplejson,用来封装与解析匿名的JSON,说白了就是用map或者slice等来解析JSON,觉得挺好玩,后来有个项目恰好要解析JSON,于是就试了试,不小心看了一眼源代码,发现竟然是用的Golang自带的encoding/json库去做的解析,而其本身只是把这个库封装了一层,看起来更好看罢了。于是心想能不能徒手写一个解析器,毕竟写了这么多年代码了,也JSON.parse,JSON.stringify了无数次。捣腾了两天,终于成了,测试了一...阅读全文

简书 2017.07.25 01:44 一路行歌

ubuntu下go语言使用protobuf

1. 编译安装protobuf(protobuf 没有关于go的release) 为了从源码安装protobuf,先要安装一些工具:包括autoconf、automake、libtool、curl(用于下载gmock)、make、 g++、 unzip。 在ubuntu可以使用如下命令安装这些依赖: sudo apt-get install autoconf automake libtool curl make g++ unzip 然后使用 git clone https://github.co...阅读全文

有限状态机FSM的原理与GO的实现

有限状态机(Finite-state machine, 简写FSM)又可以称作有限状态自动机。它必须是可以附着在某种事物上的,且该事物的状态是有限的,通过某些触发事件,会让其状态发生转换。为此,有限状态机就是描述这些有限的状态和触发事件及转换行为的数学模型。 有限状态机组成 有限状态机有两个必要的特点,一是离散的,二是有限的。基于这两点,现实世界上绝大多数事物因为复杂的状态而无法用有限状态机表示。 而描述事物的有限状态机模型的元素由以下组成: 状态(State):事物的状态,包括初始状态和所有事...阅读全文

golang为执行的脚本设置超时时间(Terminating a process started with os/exec in golang)

背景 最近在开发一个监控数据的采集模块,其中需要用golang的os/exec包来执行脚本,考虑到用户编写的脚本可能会导致程序会阻塞住,所以需要为执行程序设置一个超时时间,本来以为这是非常简单的程序,可是没想到执行的效果远远不是我想要的(也有可能是知识储备不够……^ _ ^),所以这里想要把问题抛出来和大家一起探讨。 方案 简单解释下: 如果cmd.wait()函数放在了主程序中,一旦程序执行到这里,就会导致程序阻塞在这里,一直要等待cmd.wait()函数返回。所以将cmd.wiat()函数放...阅读全文

简书 2017.07.23 11:30 darren_gong

TCP协议特点和三次握手/四次挥手

一.TCP的特性 TCP提供一种面向连接的、可靠的字节流服务 在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP TCP使用校验和,确认和重传机制来保证可靠传输 TCP给数据分节进行排序,并使用累积确认保证数据的顺序不变和非重复 TCP使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制 注意:TCP 并不能保证数据一定会被对方接收到,因为这是不可能的。TCP 能够做到的是,如果有可能,就把数据递送到接收方,否则就(通过放弃重传并且中断连接这一手段)通知用户。因此准...阅读全文

2017 年你应该学习的编程语言、框架和工具

在过去的一年里,软件开发行业继续大踏步地向前迈进。回顾 2016 年,我们看到了更多新兴的流行语言、框架和工具,它们改变着我们的工作方式,让我们看到更多的可能。但在这个行业,紧随潮流是很难的。所以在每年年底,我们都会给你提供一些建议,它涉及什么是最重要的,以及你在未来一年中应该学习什么。 大趋势 渐进式 Web Apps 在 2016 年里,我们见证了 Progressive Web App 概念的蓬勃兴起。它意味着 Web 应用程序可以离线工作,并能提供原生移动应用的体验。它们可以添加到你的智...阅读全文

慕课网 2016-12-19 10:53:03 IT程序狮

log4go的精确定时程序(带自动延迟补偿)

程序设计目标是在程序启动10秒后执行某个任务,例如日志转储(rotate),以后每隔15秒执行一次。 初次的设计 package main import ( "time" "fmt" ) func main() { timer := time.NewTimer(10 * time.Second) fmt.Println(time.Now()) for { select { case <-timer.C: fmt.Println(time.Now()) time.Sleep(1 * time.Se...阅读全文

博客园 2017-07-19 11:12 ccpaging

Golang指针与nil浅析

曾经听说过一句话,编程的本质就是指针和递归。那会刚开始编码,只是这两个的概念有个感性粗浅的认识。最早接触指针,莫过于C语言了,能否理解用好指针也成为一个合格C语言的基本标志。 Golang也提供了指针,但是go不能进行指针运算,因此相对于C也少了很多复杂度。私以为,go之所以提供指针,并不是为了让你更多和内存打交道,而是提供操作数据的基本桥梁。因为go很多调用,往往复制一份对象,例如函数的参数,如果没有指针,有些情况不得不存在很多副本。 内存和变量 编程语言中一般都会有变量。变量存储一些值。通常...阅读全文

简书 2017.07.22 17:56 人世间

golang 二维slice初始化

二维slice有多个一维slice元素组成,显然,每个元素的长度不必一致。 a := [][]float64{ {1, 2, 3, 4}, {12, 21, 3, 14}, {1, 1, 2, 3}, {2, 3, 1, 6}, {2, 2, 3, 3}, {1, 1, 1, 1}} 1、应有二维的类型, 2、大花括号下的每个小花括号后均有逗号,最后一个除外 3、最后的大花括号应与最后一个元素在一行,挨着最后的小花括号 a := [][4]float64{//限定4列 {1, 2, 3, 4},...阅读全文

开源中国博客 2017-07-22 18:03:28 小白雕

golang 基础语法

1.当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )。 注意要分清是否跨包 2. package main var x, y int var ( // 这种因式分解关键字的写法一般用于声明全...阅读全文

简书 2017.07.22 14:58 球球之家