go 开源项目汇总

监控系统 序号 名称 项目地址 简介 1 OpenFalcon http://github.com/open-falcon/of-release OpenFalcon是一款小米监控系统。功能:*数据采集免配置:agent自发现、支持Plugin、主动推送模式; *容量水平扩展:生产环境每秒50万次数据收集、告警、存储、绘图,可持续水平扩展。*告警策略自发现:Web界面、支持策略模板、模板继承和覆盖 […]

Continue reading..go 开源项目汇总

go 框架使用问题

框架限定参数为结构体时,扩展出的方法传参数都要设置参数为该结构体,无法重命名。导致自己写的扩展方法无法利用与其他的地方。 框架限定函数类型时,扩展出的方法无法重命名 方法类型。导致自己实现的package都是这个框架的方法类型,导致自己的package不具有移植性。 go编程多态性实现,利用接口定义,传接口类型 golang方法重用,类似继承的实现, 多用组合,少实现继承

Continue reading..go 框架使用问题

golang html/template 简明教程

【模板标签】 模板标签用”{{“和”}}”括起来 【注释】 {{/* a comment */}} 使用“{{/*”和“*/}}”来包含注释内容 【变量】 {{.}} 此标签输出当前对象的值 {{.Admpub}} 表示输出Struct对象中字段或方法名称为“Admpub”的值。 当“Admpub”是匿名字段时,可以访问其内部字段或方法,比如“Com […]

Continue reading..golang html/template 简明教程

Golang开发支持平滑升级(优雅重启)的HTTP服务

使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑升级,需要以下几个步骤: 用新的可执行文件替换老的可执行文件(如只需优雅重启,可以跳过这一步) 通过pid给正在运行的老进程发送 特定的信号(kill -SIGUSR2 $pid) 正在运行的老进程,接收到指定的信号后,以子进程的方式启动 […]

Continue reading..Golang开发支持平滑升级(优雅重启)的HTTP服务

godoc 用法

godoc工具(第 3.6 节)在显示自定义包中的注释也有很好的效果:注释必须以 // 开始并无空行放在声明(包,类型,函数)前。godoc 会为每个文件生成一系列的网页。 例如: 在 doc_examples 目录下我们有第 11.7 节中的用来排序的 go 文件,文件中有一些注释(文件需要未编译) 命令行下进入目录下并输入命令: godoc -http=:6060 -goroot=&#8221 […]

Continue reading..godoc 用法

golang中的并发 sync.WaitGroup 和channel

并发的启动 这篇文章关于并发的启动我就一概而过了,如果要让一个函数并发运行,只需一个关键字”go“: func Afuntion(para1, para2, para3, …) { // Do some process // … } func main() { go Afuntion(para1, para2, para3, …) //只需加一个go前缀,Afu […]

Continue reading..golang中的并发 sync.WaitGroup 和channel

golang 反射调用函数

反射中调用函数 众所周知,golang中的函数是可以像普通的int、float等类型变量那样作为值的,例如: package main import “fmt” func hello() { fmt.Println(“Hello world!”) } func main() { hl := hello hl() } prints: hello world! 既然函数可以像普通的类型变量一样可以的话 […]

Continue reading..golang 反射调用函数

golang fmt 包学习

// Print 将参数列表 a 中的各个参数转换为字符串并写入到标准输出中。 // 非字符串参数之间会添加空格,返回写入的字节数。 func Print(a …interface{}) (n int, err error) // Println 功能类似 Print,只不过最后会添加一个换行符。 // 所有参数之间会添加空格,返回写入的字节数。 func Println(a …inter […]

Continue reading..golang fmt 包学习

GDB调试 快速简单教程

作者:liigo.com GDB是一个由GNU开源组织发布的、UNIX/Linux操作系统下的、基于命令行的、功能强大的程序调试工具。 GDB中的命令固然很多,但我们只需掌握其中十个左右的命令,就大致可以完成日常的基本的程序调试工作。  命令  解释  示例 file <文件名> 加载被调试的可执行程序文件。 因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。 (gd […]

Continue reading..GDB调试 快速简单教程

go regexp 正则实例解释

文章来源于golang中国社区 英文进阶参考资料https://shapeshed.com/golang-regexp/ // 判断在 b 中能否找到正则表达式 pattern 所匹配的子串 // pattern:要查找的正则表达式 // b:要在其中进行查找的 []byte // matched:返回是否找到匹配项 // err:返回查找过程中遇到的任何错误 // 此函数通过调用 Regexp […]

Continue reading..go regexp 正则实例解释

go并发模式 锁 与通道共享内存

概述 我一直在找一种好的方法来解释 go 语言的并发模型: 不要通过共享内存来通信,相反,应该通过通信来共享内存 但是没有发现一个好的解释来满足我下面的需求: 通过一个例子来说明最初的问题 提供一个共享内存的解决方案 提供一个通过通信的解决方案 这篇文章我就从这三个方面来做出解释。 读过这篇文章后你应该会了解通过通信来共享内存的模型,以及它和通过共享内存来通信的区别,你还将看到如何分别通过这两种模 […]

Continue reading..go并发模式 锁 与通道共享内存

linux 编译运行go

go  [run build install ] 使用以及区别: 本文主要介绍 下这几个编译命令的使用区别; 让人清楚的认识到什么时候用什么方式的命令   $go run  file.go [可选参数…] 编译并运行 编译生成可执行文件 到当前目录下 运行出结果 如果有参数需要加参数 作用:适合快速测试 试验等直接看效果   $go build 编译 自身和依赖包 […]

Continue reading..linux 编译运行go

go-gorountine node实例写法

Go 语言是 Google 于 2009 年 11 月公布的一个新语言项目,其目标是创造一门既简单又有效率的开源编程语言。由于有 C 语言创始人 Ken Thompson 的参与,Go 一面世,就被看成是 C 语言的继任者,受到很大关注。Go 一方面吸收了 C 简单清晰、执行效率高的优点,另一方面融合了动态语言的闭包、动态绑定等特性,更加适应目前多核与多机高并发的开发环境和快速敏捷的开发效率。此外 […]

Continue reading..go-gorountine node实例写法