Kafka的安装与启动 kafka中涉及的名词 消息记录:由一个key,一个value和一个时间戳构成,消息最终存储在主题下的分区中,记录在生产中称为生产者记录,在消费者中称为消费记录。Kafka集群保持了所有发布的消息,直到它们过期,无论消息是否被消费了,在一个可配置的时间段内,Kafka集群保留了所有发布的消息。比如消息的保存策略被设置为2天,那么在一个消息被发布的两天时间内,它都是可以被消费的。Kafka的性能是和数据量无关的常量级的,所以保留太多数据并不是问题 生成者:生产者用于发布消息...
-
Golang,kafka实现消息推拉
-
一个有趣的求解质数的golang代码
看到一个golang写的求质数的程序,第一眼看上去很难理解,理解了之后又觉得很有趣,特此分析一下。 代码 package main import "fmt" // Send the sequence 2, 3, 4, ... to channel 'ch'. func generate(ch chan int) { for i := 2; ; i++ { ch <- i // Send 'i' to channel 'ch'. } } // Copy the values from channe...
-
golang select
golang的select与channel配合使用。它用于等待一个或者多个channel的输出。 应用场景:主goroutine等待子goroutine完成,但是子goroutine无限运行,导致主goroutine会一直等待下去。而主线程想假如超过了一定的时没有返回的话,进行超时判断然后继续运行下去。 package main import ( "time" "fmt" ) var chs chan int = make(chan int,1) func write(){ time.Sleep...
-
Windows下搭建go语言开发环境 以及 开发IDE (附下载链接)
1.下载 并且 安装 Go安装包 =========================================================== 在CSDN上传了我的版本,供大家下载: =========================================================== go1.2.windows-386.msi : http://download.csdn.net/detail/shuideyidi/7718563 go1.2.1...
-
Golang 微服务教程(一)
译文链接:wuYin/blog原文链接:ewanvalentine.io,翻译已获作者授权。 本节对 gRPC 的使用浅尝辄止,更多可参考:gRPC 中 Client 与 Server 数据交互的 4 种模式 前言 系列概览 《Golang 微服务教程》分为 10 篇,总结微服务开发、测试到部署的完整过程。 本节先介绍微服务的基础概念、术语,再创建我们的第一个微服务 consignment-service 的简洁版。在接下来的第 2~10 节文章中,我们会陆续创建以下微服务: consignme...
-
01-C语言和Go语言对比
源文件对比 C语言源文件 文件扩展名 源类型 .h 头文件,存放代码声明 .c C语言源文件,存放代码实现 Go语言源文件 文件扩展名 源类型 .go Go语言源文件,存放代码实现 代码管理对比 C语言中通过文件来管理代码 想使用某一个函数时,只需要include导入对应的.h文件即可 Go语言中通过包来管理代码 Go语言没有.h文件的概念, 在Go中想使用某一个函数时, 只需要import导入对应的包即可 C语言中函数、变量公私有管理 通过是否在.h文件中声明实现是否公开函数 通过extern...
-
Golang 数据结构:栈与队列
Golang 中栈、队列的实现及常用操作,数据结构系列原文:flaviocopes.com,翻译已获作者授权。 栈概述栈是数据按照后进先出 LIFO(Last-In-First-Out) 原则组成的集合。添加和移除元素都是在栈顶进行,类比书堆,不能在栈底增删元素。 栈的应用很广泛,比如网页跳转后一层层返回,ctrl+z 撤销操作等。 使用 slice 动态类型来实现栈,栈元素的类型是使用 genny 创建的通用类型 ItemStack,实现以下常用操作: 123New() // 生成栈的构造器P...
-
Go 反射:根据类型创建对象-第二部分(复合类型)
> 这是关于 Golang 中根据类型创建对象系列博客的第二篇,讨论的是创建复合对象。第一篇在[这里](https://studygolang.com/articles/12434) ![](https://raw.githubusercontent.com/studygolang/gctt-images/master/go-reflect/cover1.png) 在前一篇博客中,我解释了 go reflect 包 `type` 和 `kind` 的概念。这篇博客,我将深入探讨这些术...
-
[go语言] golang的goroutine机制和runtime.GOMAXPROCS
之前对golang的goroutine机制和runtime.GOMAXPROCS不是很理解,今天抽空研究了一下,学习了其他大牛的文章。把自己的理解写下来。如有错误,请指正 golang的goroutine机制有点像线程池: 一、go 内部有三个对象: P对象(processor) 代表上下文(或者可以认为是cpu),M(work thread)代表工作线程,G对象(goroutine). 二、正常情况下一个cpu对象启一个工作线程对象,线程去检查并执行goroutine对象。碰到goroutin...
-
Go 爬虫软件 Pholcus
Pholcus Pholcus(幽灵蛛)是一款纯Go语言编写的支持分布式的高并发、重量级爬虫软件,定位于互联网数据采集,为具备一定Go或JS编程基础的人提供一个只需关注规则定制的功能强大的爬虫工具。 它支持单机、服务端、客户端三种运行模式,拥有Web、GUI、命令行三种操作界面;规则简单灵活、批量任务并发、输出方式丰富(mysql/mongodb/csv/excel等)、有大量Demo共享;另外它还支持横纵向两种抓取模式,支持模拟登录和任务暂停、取消等一系列高级功能。 官方QQ群:Go大数据...
-
go import用法
import "fmt"最常用的一种形式 import "./test"导入同一目录下test包中的内容 import f "fmt"导入fmt,并给他启别名f import . "fmt",将fmt启用别名".",这样就可以直接使用其内容,而不用再添加fmt,如fmt.Println可以直接写成Println import _ "fmt" 表示不使用该包,而是只是使用该包的init函数,并不显示的使用该包的其他内容。注意:这种形式的import,当import时就执行了fmt包中的init函数...
-
golang追加写入文件
所有语言你想调试都可以下断言调试,当然也可以输出到日志文件中,此函数方便集成到你的项目中。//打印内容到文件中 //tracefile(fmt.Sprintf("receive:%s",v)) func tracefile(str_content string) { fd,_:=os.OpenFile("a.txt",os.O_RDWR|os.O_CREATE|os.O_APPEND,0644) fd_time:=time.Now().Format("2006-01-02 15:04:05");...
-
golang 读写文件
1.读文件 package main import ( "bufio" "fmt" "io" "io/ioutil" "os" ) //读取文件需要经常进行错误检查,这个帮助方法可以精简下面的错误检查过程。 func check(e error) { if e != nil { panic(e) } } func main() { //也许大部分基本的文件读取任务是将文件内容读取到内存中。 dat, err := ioutil.ReadFile("/tmp/dat") check(err) fm...
-
golang fmt格式“占位符”
golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式。 Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段名 Printf("%+v", people) {Name:zhangsan} ...