关于Go语言

声明: 本文不是来吸引口水战的。仅仅是记录水平有限的本人的一些个人观点。Go死忠粉或者口水战爱好者勿入。 Go 是一个年轻,但是迅速蹿红的语言。我在Go刚出来的时候,出于对其创造者的崇拜,就开始关注了。然而真正使用却是这两年的事。Docker, kubernetes的出现大大加速了Go流行的速度。因为很多人是因为Go可以用来编写这样复杂度的程序开始关注它的。我相反,13年我是因为有人无意中用Go写了docker才开始关注并最终进入容器这个坑的。 先谈优点吧 简单(非常)的语法。 比Go语法还简单...阅读全文

Segmentfault 2017-09-23 17:34:48 西北那个峰

[译]使用 bcc/BPF 分析 go 程序

BCC 是基于 BPF 的 Linux IO 分析、监控、网络工具集合。BPF Compiler Collection (BCC) 是创建高效内核追踪和处理程序的工具包,包含几个有用的工具和用例。BCC 扩展了 BPF (Berkeley Packet Filters) 的用途,BPF 之前被称为 eBPF,是 Linux 3.15 新增的一个新特性。BCC 大部分的功能都要求 Linux 4.1+。 本文翻译自性能分析大牛Brendan Gregg的 2017年中旬的一篇文章: Golang ...阅读全文

鸟窝 2017年09月22日 smallnest

常用配置文件格式

配置文件是工程中常用的初始化参数的配置方式,而配置文件的格式有很多种,不同的操作系统、编程语言都会有不同的配置文件的格式,本文罗列了一些常见的配置文件的格式。 不同的配置文件格式有不同的用户友好性, 对于功能的支持也有简单和复杂之分,很难简单说那种配置文件是最好的,有时候需要从多个方面去考虑, 比如Windows较早的开发喜欢使用int、java喜欢使用properties、通用的编程喜欢yaml、json等格式,本文也不会对这些格式进行排名,而是简单介绍一下这些格式,用户可以根据自己的实际情况...阅读全文

鸟窝 2017年08月31日 smallnest

Go编译器的小修改

解决golang有未使用的变量和包时编译报错的问题 Go语言将variable declared but not used和package imported but not used设计成错误,正常使用无可厚非,但调试代码时会非常恼人。下面,就通过修改go源码将这两类错误改为警告。利益于golang的神奇编译速度,几分钟就可以轻松搞定。 首先看看效果吧: // 测试代码 package main import ( "time" "fmt" ) func main() { var i int fm...阅读全文

简书 2017.09.23 12:45* NeverLea

Kotlin极简教程:第9章 轻量级线程:协程

原文链接:https://github.com/EasyKotlin 在常用的并发模型中,多进程、多线程、分布式是最普遍的,不过近些年来逐渐有一些语言以first-class或者library的形式提供对基于协程的并发模型的支持。其中比较典型的有Scheme、Lua、Python、Perl、Go等以first-class的方式提供对协程的支持。 同样地,Kotlin也支持协程。 本章我们主要介绍: 什么是协程 协程的用法实例 挂起函数 通道与管道 协程的实现原理 coroutine库等 9.1 ...阅读全文

简书 2017.09.23 12:07 JackChan1999

GoLang中flag标签使用

正如其他语言一样,在 linux 系统上通过传入不同的参数来使得代码执行不同逻辑实现不同功能,这样的优点就是执行想要的既定逻辑而不需要修改代码重新编译与打包。在 Golang 语言中也为我们提供了相应的功能,直接上代码,在代码中会做详细的解释,当前运行环境为:Go-1.8.1 package main import ( "flag" "log" "os" ) func usage() { log.Fatalf("Usage: myProgram [-s server] [-t isShowTim...阅读全文

Golang 中三种读取文件发放性能对比

Golang 中读取文件大概有三种方法,分别为: 1. 通过原生态 io 包中的 read 方法进行读取 2. 通过 io/ioutil 包提供的 read 方法进行读取 3. 通过 bufio 包提供的 read 方法进行读取 下面通过代码来验证这三种方式的读取性能,并总结出我们平时应该使用的方案,以便我们可以写出最优代码: package main import ( "os" "io" "bufio" "io/ioutil" "time" "log" ) func readCommon(pa...阅读全文

在 Golang 中开发中使用 Makefile

使用 Golang 已经有一阵了,在 Golang 的开发过程中,我已经习惯于不断重复地手动执行 go build 和 go test 这两个命令. 不过,现在我已经摆脱了这个习惯。如果只用到了不带参数的简单命令,直接这么操作可能并不可怕。但是在一些复杂的任务中,如果依旧是手动执行 go build 和 go test ,就可能会成为一个让人头疼的事情。 我们可以通过其他方式解决这个问题。比如,可以用一个 bash 脚本来完成这些工作,或者一个更好的选择(至少对于我来说)是,写一个 makefi...阅读全文

简书 2017.09.23 10:42* simple_the_best

golang interface 接口介绍

[TOC] golang interface 接口介绍 interface 介绍 如果说goroutine和channel是Go并发的两大基石,那么接口是Go语言编程中数据类型的关键。在Go语言的实际编程中,几乎所有的数据结构都围绕接口展开,接口是Go语言中所有数据结构的核心。 Go不是一种典型的OO语言,它在语法上不支持类和继承的概念。 没有继承是否就无法拥有多态行为了呢?答案是否定的,Go语言引入了一种新类型—Interface,它在效果上实现了类似于C++的“多态”概念,虽然与C++的多态...阅读全文

简书 2017.09.23 01:04* 吴德宝

Golang Context分析

[TOC] Golang Context分析 Context背景 和 适用场景 golang在1.6.2的时候还没有自己的context,在1.7的版本中就把golang.org/x/net/context包被加入到了官方的库中。golang 的 Context包,是专门用来简化对于处理单个请求的多个goroutine之间与请求域的数据、取消信号、截止时间等相关操作,这些操作可能涉及多个 API 调用。 比如有一个网络请求Request,每个Request都需要开启一个goroutine做一些事...阅读全文

简书 2017.09.23 01:07 吴德宝

golang如何执行脚本并获取返回值

golang中如何执行脚本并获取返回值 调用脚本 在golang标准库中提供了两种方式可以用来启动进程调用脚本 第一种是在os库中的Process类型,Process类型包含一系列方法用来启动进程并对进程进行操作(参考: https://golang.org/pkg/os/#Process) 第二种是在os/exec库种通过Cmd类型的各个函数实现对脚本的调用,实际上Cmd是对Process中各种方法的高层次封装(参考: https://golang.org/pkg/os/exec/) 示例 使...阅读全文

开源中国博客 2017-09-22 22:03:22 RichardFan

golang Hook

简介 这篇文章主要是通过官方提供的 HTTP 追踪来学习使用 Hook 的编程思想。 在了解使用 Go 语言编写 Hook 之前,最好先掌握 Context 的用法, go 1.7 中 context 已经进入标准库 context,直接 import "context" 就可以使用。 在标准库 context.go 中, Context 定义为一个 interface{} 接口类型。 // A Context carries a deadline, a cancelation signal, ...阅读全文

window10安装mongodb

# window10安装mongodb ## 下载mongodb [mongoDB官网](http://www.mongodb.org/) [直接下载zip包](http://dl.mongodb.org/dl/win32/x86_64) ## 安装mongodb 1. 创建文件路径:D:\mongodb 2. 将刚刚下载的zip解压在mongodb,修改文件夹名为bin 3. 然后在D:\mongodb下新建文件夹data 4. 在data下建立文件夹db,log 5. ...阅读全文

Go语言中文网 2017-09-22 17:47:35 sheshue

Golang

golang 安装: http://studygolang.com/articles/1605 http://www.cnblogs.com/linuxprobe/p/5654380.html 参考:go语言编程 变量 声明 var v1 int var v2 string var v3 [10]int // 数组 var v4 []int // 数组切片 var v5 struct { f int } var v6 *int // 指针 var v7 map[string]int // map...阅读全文

博客园 2017-09-21 17:49 gaojy

Golang 中使用多维 map

http://tnt.wicast.tk/2015/11/02/golang-multiple-dimension-map/ Golang 的 XML/JSON 解析库乍看使用起来很方便,只要构造一样结构的 Struct 就可以一下子导入到变量中去了.其实手工构造 Struct 非常容易出现结构偏差,而且最要命的是 Unmarshal() 执行的时候不是严格导入所以没有任何报错. 于是这两天写了一个给 Golang 用的 XML to Struct 生成器,希望能一劳永逸. 不过在制作过程中有遇...阅读全文

博客园 2017-09-21 11:46 grimm

【Golang】如何统一处理HTTP请求中的异常捕获

最近写GOLANG项目,不使用框架,路由选择httprouter 现在想实现一个需求:在不修改httprouter源码的前提下,对所有注册的路由handle进行异常捕获。 大家都知道golang使用panic()产生异常,然后可以recover()来捕获到异常,否则主程序直接宕掉,这是我们不希望看到的。 或者全程检查error,不主动抛出异常。即便这样,可能异常依然不能避免。 既然要recover(),但又不想在每个handle里面都去recover()一遍,如果你也有这样的需求,下面讲到的可能...阅读全文

高性能NoSql数据库 SSDB

今天在看一个开源项目的时候,发现作者使用一个ssdb的数据库,第一反应是ssd硬盘,当时很诧异。后面了解后才知道,原来是 nosql数据库。 ssdb介绍 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis. SSDB 是一个 C/C++ 语言开发的高性能 NoSQL 数据库, 支持 KV, list, map(hash), zset(sorted set) 等数据结构, 用来替代或者与 Redis 配合存储十亿级别列表的数据.SSDB 具有和 Redis 相似的 API...阅读全文

简书 2017.09.22 00:25 若与

Go环境的搭建

前言: Go语言是一种比较新的语言,上网了解了一下,感觉未来趋势还是很不错的,所以准备开始自学go,顺便记录一下,不喜勿喷,有什么说的不正确的,欢迎指正!1:环境搭建我个人觉得 jetbrains公司出的ide是挺好用的,不管是intellij,还是clion,都有在用,觉得还是挺不错的,即时是Android Studio,也是基于intellij ide的,所以个人还是喜欢这公司出的IDE先下载Golang的 IDE,地址:https://www.jetbrains.com/go/downlo...阅读全文

简书 2017.09.21 23:12* Link_Biao

Go语言fmt包Printf方法详解

Go语言的标准输出流在打印到屏幕时有些参数跟别的语言(比如C#和Java)不同,下面是我整理的一些常用的格式化输入操作。 General %v 以默认的方式打印变量的值 %T 打印变量的类型 Integer %+d 带符号的整型,fmt.Printf("%+d", 255)输出+255 %q 打印单引号 %o 不带零的八进制 %#o 带零的八进制 %x 小写的十六进制 %X 大写的十六进制 %#x 带0x的十六进制 %U 打印Unicode字符 %#U 打印带字符的Unicode %b 打印整型...阅读全文