Tag: Go
All the articles with the tag "Go".
golang与qpid broker通信
Published: at 01:33 AM这里我用的是github.com/Azure/go-amqp这个库,它支持AMQP 1.0协议,是纯go语言实现的。qpid用的是1.39.0版本直接启动的话它是不支持AMQP 1.0协议的,需要加载amqp.so库(加载方法(https//www.ningto.com/post/5ea109bb707b535469eb754c))。 下面演示使用sender和rece...
用脚本启停我的go程序
Published: at 12:01 PM用一个脚本来方便编译、启停我的blog程序(go语言编写的),我在程序中使用了github.com/sevlyar/go-daemon这个库来让博客进程在后台运行。具体用法可以看github上的README,它会生成一个文件存放当前运行进程的pid,我这里取名叫:ningtogo.pid。下面就是服务端脚本的编写了。 ...
go channel缓冲的作用
Published: at 06:17 AMgolang中make chan第二个参数设置缓冲区的大小,如果不设置是无缓冲区的。 下面通过一个例子来说明缓冲的作用。 代码如下: package main import ( "fmt" "time" ) var ch = make(chan int) func main() { go sender() time.Sleep(1 time.Second) ...
go拓扑排序
Published: at 01:15 AM拓扑排序常用来确定一个依赖关系集中,事物发生的顺序。例如,在日常工作中,可能会将项目拆分成A、B、C、D四个子部分来完成,但A依赖于B和D,C依赖于D。为了计算这个项目进行的顺序,可对这个关系集进行拓扑排序,得出一个线性的序列,则排在前面的任务就是需要先完成的任务。 注意...
go反射
Published: at 03:54 PM简单结构 package main import ( "fmt" "reflect" ) type User struct { Id int Name string Age int } func (u User) Say() { fmt.Println("hello, world") } func PrintInfo(o interface{}) { t = reflect.TypeOf(o) fmt.Pri...
go模拟命令行文件拷贝命令
Published: at 01:42 AM通过这个小程序可以熟悉下面这些包和函数: 1. 命令行参数解析(flag); 2. 从命令行读取输入数据(bufio, reader); 3. 文件操作,判断文件是否存在,创建拷贝文件(io, defer); 4. 基本操作(fmt, string) 代码: package main import ( "bufio" "errors" "...
go mod graph 图表
Published: at 11:43 AM我们知道通过go mod graph命令可以输出当前工程的模块依赖图,但是这个输出是纯文本的并且只是简单的一对一的关系。 很难看出所有模块之间的依赖关系,如果能用图的形式来显示就清晰多了。 Graphviz(https//www.ibm.com/developerworks/cn/aix/library/au-aix-graphv...
go 获取bing壁纸地址
Published: at 02:56 AM必应首页背景图片每天一更新,如果想把它作为桌面壁纸好像没那么简单,它没有提供直接下载的地方也不能右键保存,但是通过分析网页源代码可以拿到我们要的信息。 地址:https//ningto.com/bing(https//ningto.com/bing) 历史图片: https//ningto.com/bingimages...
golang Options可变参数接口设计
Published: at 05:23 AMgolang中发现不少第三方库使用...Options作为接口参数,说不上这种方式有多好但是了解下也是不错的。 如下代码新建一个exchange,一个必填参数其他的是可选参数。 cassandraql package main import "fmt" type Options struct { Name string Kind string D...
go 分批读取http应答数据
Published: at 09:38 AM我们读取http应答通常用: ioutil.ReadAll(resp.Body) 很好用也很方便,但是如果应答的包很大时(下载文件),不仅会分配很大的内存而且慢。 所以我们需要分批读取,每次读取一块直到所有应答读取完成。 代码如下: func ReadChunk(r io.Reader, maxChunkSize int, ...