博客园 - 梁天
uuid:6cbd1ba2-f883-4c34-aed1-30dde64a3a3e;id=709909
2022-03-23T15:43:10Z
梁天
https://www.cnblogs.com/gwyy/
feed.cnblogs.com
https://www.cnblogs.com/gwyy/p/15528124.html
golang基础 - 自定义类型和类型别名(type) - 梁天
自定义类型 Go语言通过type关键字定义自定义类型。自定义类型是全新的类型。示例: // 将newInt定义为int类型 type newInt int func main() { var a newInt a = 100 fmt.Println(a) // 100 fmt.Printf("%T\
2021-11-09T03:48:00Z
2021-11-09T03:48:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】自定义类型 Go语言通过type关键字定义自定义类型。自定义类型是全新的类型。示例: // 将newInt定义为int类型 type newInt int func main() { var a newInt a = 100 fmt.Println(a) // 100 fmt.Printf("%T\ <a href="https://www.cnblogs.com/gwyy/p/15528124.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/15460406.html
nsq - 一条消息的生命周期(一) - 梁天
经过前面几篇的学习,相信大家对nsq已经有了一个大概的了解,我在写这篇文章的时候也看了很多其他人写的教程,发现大家对于分析系统每个点写的很不错,但是都很少有整体串起来一起走一遍,所以,我打算分成2-3章来带着大家从nsq启动到创建一个topic,然后发一条消息,最后再开个消费者接收消息,中间的所有流
2021-10-25T12:27:00Z
2021-10-25T12:27:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】经过前面几篇的学习,相信大家对nsq已经有了一个大概的了解,我在写这篇文章的时候也看了很多其他人写的教程,发现大家对于分析系统每个点写的很不错,但是都很少有整体串起来一起走一遍,所以,我打算分成2-3章来带着大家从nsq启动到创建一个topic,然后发一条消息,最后再开个消费者接收消息,中间的所有流 <a href="https://www.cnblogs.com/gwyy/p/15460406.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/15398155.html
nsq 源码 diskQueue 讲解 - 梁天
diskQueue是backendQueue接口的一个实现。backendQueue的作用是在实现在内存go channel缓冲区满的情况下对消息的处理的对象。 除了diskQueue外还有dummyBackendQueue实现了backendQueue接口。 对于临时(#ephemeral结尾)T
2021-10-12T07:37:00Z
2021-10-12T07:37:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】diskQueue是backendQueue接口的一个实现。backendQueue的作用是在实现在内存go channel缓冲区满的情况下对消息的处理的对象。 除了diskQueue外还有dummyBackendQueue实现了backendQueue接口。 对于临时(#ephemeral结尾)T <a href="https://www.cnblogs.com/gwyy/p/15398155.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/15382876.html
nsq topic - 梁天
与Topic相关的代码主要位于nsqd/topic.go中。 上一篇文字我们讲解了下nsq的启动流程。对nsq的整体框架有了一个大概的了解。本篇文章就是由大到小。对于topic这一部分进行详尽的讲解。 topic 管理着多个 channel 通过从 client 中获取消息,然后将消息发送到 cha
2021-10-08T13:02:00Z
2021-10-08T13:02:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】与Topic相关的代码主要位于nsqd/topic.go中。 上一篇文字我们讲解了下nsq的启动流程。对nsq的整体框架有了一个大概的了解。本篇文章就是由大到小。对于topic这一部分进行详尽的讲解。 topic 管理着多个 channel 通过从 client 中获取消息,然后将消息发送到 cha <a href="https://www.cnblogs.com/gwyy/p/15382876.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/15357284.html
nsq 启动流程讲解 - 梁天
这篇文章我们就正式的开始分析nsq的代码了,上一篇给大家介绍了下nsq的特性和功能。再分析代码的同时,大家可以比对着我写的nsq精注版代码一遍看一遍调试。这样的效果更佳。 nsq精注版地址:https://github.com/gwyy/nsq-learn 下面进入正题,nsqd的主函数位于apps
2021-09-30T08:16:00Z
2021-09-30T08:16:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】这篇文章我们就正式的开始分析nsq的代码了,上一篇给大家介绍了下nsq的特性和功能。再分析代码的同时,大家可以比对着我写的nsq精注版代码一遍看一遍调试。这样的效果更佳。 nsq精注版地址:https://github.com/gwyy/nsq-learn 下面进入正题,nsqd的主函数位于apps <a href="https://www.cnblogs.com/gwyy/p/15357284.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/14109153.html
nsq 初识 - 梁天
简介 NSQ 最初是由 bitly 公司开源出来的一款简单易用的分布式消息中间件,它可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息。 特性 分布式: 它提供了分布式的、去中心化且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和高可用特性。 易于扩展: 它支持水平扩展
2020-12-09T07:59:00Z
2020-12-09T07:59:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】简介 NSQ 最初是由 bitly 公司开源出来的一款简单易用的分布式消息中间件,它可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息。 特性 分布式: 它提供了分布式的、去中心化且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和高可用特性。 易于扩展: 它支持水平扩展 <a href="https://www.cnblogs.com/gwyy/p/14109153.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/14103678.html
【资料】http包接口和结构体 - 梁天
Handler //86 type Handler interface { ServeHTTP(ResponseWriter, *Request) } Handler 是个接口,只要结构体有了 ServeHTTP 这个方法,都可以实现这个接口。 ServeMux & DefaultServerMux
2020-12-08T09:12:00Z
2020-12-08T09:12:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】Handler //86 type Handler interface { ServeHTTP(ResponseWriter, *Request) } Handler 是个接口,只要结构体有了 ServeHTTP 这个方法,都可以实现这个接口。 ServeMux & DefaultServerMux <a href="https://www.cnblogs.com/gwyy/p/14103678.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/14100208.html
http包详解 2 - http源码分析 - 梁天
我们继续看,直接进入ListenAndServe函数 func ListenAndServe(addr string, handler Handler) error { server := &Server{Addr: addr, Handler: handler} return server.Lis
2020-12-07T14:44:00Z
2020-12-07T14:44:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】我们继续看,直接进入ListenAndServe函数 func ListenAndServe(addr string, handler Handler) error { server := &Server{Addr: addr, Handler: handler} return server.Lis <a href="https://www.cnblogs.com/gwyy/p/14100208.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/14100157.html
http包详解 1 - http包初识 - 梁天
首先,熟悉http协议的都知道,http协议是基于TCP实现的。 http服务器的工作方式大概就是监听socket端口,接受连接,获取到请求,处理请求,返回响应。 所以,对应的会有几个部分 Request:用户请求的信息。post、get、url等这些信息 Response: 返回给客户端的信息 C
2020-12-07T14:36:00Z
2020-12-07T14:36:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】首先,熟悉http协议的都知道,http协议是基于TCP实现的。 http服务器的工作方式大概就是监听socket端口,接受连接,获取到请求,处理请求,返回响应。 所以,对应的会有几个部分 Request:用户请求的信息。post、get、url等这些信息 Response: 返回给客户端的信息 C <a href="https://www.cnblogs.com/gwyy/p/14100157.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/13960017.html
iterm2 Mac 常用快捷键 - 梁天
标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:command + f 分屏 垂直分屏:command + d 水平分屏:command + shift +
2020-11-11T10:10:00Z
2020-11-11T10:10:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:command + f 分屏 垂直分屏:command + d 水平分屏:command + shift + <a href="https://www.cnblogs.com/gwyy/p/13960017.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/13807374.html
go 程序性能调优 pprof 的使用 (二) - 梁天
上一篇说了以命令行方式执行了pprof,这次我们学习以web方式运行pprof. 下面看个例子: var datas []string func main() { go func() { for { log.Printf("len:%d",Add("gwyy")) time.Sleep(time.S
2020-10-13T02:44:00Z
2020-10-13T02:44:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】上一篇说了以命令行方式执行了pprof,这次我们学习以web方式运行pprof. 下面看个例子: var datas []string func main() { go func() { for { log.Printf("len:%d",Add("gwyy")) time.Sleep(time.S <a href="https://www.cnblogs.com/gwyy/p/13807374.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/13807267.html
go 程序性能调优 pprof 的使用 (一) - 梁天
pprof是go语言内置 的分析性能,分析数据的工具,pprof开启后,每隔一段时间(10ms)就会收集下当前的堆栈信息,获取格格函数占用的CPU以及内存资源;最后通过对这些采样数据进行分析,形成一个性能分析报告。pprof用 profile.proto 读取分析样本的集合,并声称可视化报告,以帮助
2020-10-13T02:28:00Z
2020-10-13T02:28:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】pprof是go语言内置 的分析性能,分析数据的工具,pprof开启后,每隔一段时间(10ms)就会收集下当前的堆栈信息,获取格格函数占用的CPU以及内存资源;最后通过对这些采样数据进行分析,形成一个性能分析报告。pprof用 profile.proto 读取分析样本的集合,并声称可视化报告,以帮助 <a href="https://www.cnblogs.com/gwyy/p/13807267.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/13801795.html
性能压测工具 wrk 使用 - 梁天
名词解释: QPS(Query per second 每秒处理完的请求数) 什么是wrk 看下他GitHub上的介绍:https://github.com/wg/wrk wrk is a modern HTTP benchmarking tool capable of generating sign
2020-10-12T03:40:00Z
2020-10-12T03:40:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】名词解释: QPS(Query per second 每秒处理完的请求数) 什么是wrk 看下他GitHub上的介绍:https://github.com/wg/wrk wrk is a modern HTTP benchmarking tool capable of generating sign <a href="https://www.cnblogs.com/gwyy/p/13801795.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/13693988.html
阿里云 ECS 安装 minikube - 梁天
最近一直在看k8s, 买了个ecs打算安装个k8s玩玩。众所周知,k8s分为 master 节点和node节点。如果完整安装需要好几台服务器,但是k8s官方有提供个人学习,使用的minikube安装,今天我们也是用此工具来快速搭建我们的k8s环境。 点击可跳转官服文档查看 minikube 安装: 
2020-09-18T15:22:00Z
2020-09-18T15:22:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】最近一直在看k8s, 买了个ecs打算安装个k8s玩玩。众所周知,k8s分为 master 节点和node节点。如果完整安装需要好几台服务器,但是k8s官方有提供个人学习,使用的minikube安装,今天我们也是用此工具来快速搭建我们的k8s环境。 点击可跳转官服文档查看 minikube 安装:  <a href="https://www.cnblogs.com/gwyy/p/13693988.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/13670090.html
go switch的用法 - 梁天
最近一直在写go, switch说实话用的不算多。但是今天用了下发现go的switch可真不太一样啊。 无需break func main() { i := 0 switch i { case 0: fmt.Println("0000000000") fmt.Println("0") case 1:
2020-09-14T15:13:00Z
2020-09-14T15:13:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】最近一直在写go, switch说实话用的不算多。但是今天用了下发现go的switch可真不太一样啊。 无需break func main() { i := 0 switch i { case 0: fmt.Println("0000000000") fmt.Println("0") case 1: <a href="https://www.cnblogs.com/gwyy/p/13670090.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/13629999.html
go select的用法 - 梁天
golang中的select语句格式如下 select { case <-ch1: // 如果从 ch1 信道成功接收数据,则执行该分支代码 case ch2 <- 1: // 如果成功向 ch2 信道成功发送数据,则执行该分支代码 default: // 如果上面都没有成功,则进入 default
2020-09-07T15:49:00Z
2020-09-07T15:49:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】golang中的select语句格式如下 select { case <-ch1: // 如果从 ch1 信道成功接收数据,则执行该分支代码 case ch2 <- 1: // 如果成功向 ch2 信道成功发送数据,则执行该分支代码 default: // 如果上面都没有成功,则进入 default <a href="https://www.cnblogs.com/gwyy/p/13629999.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/13551593.html
将Go的main包拆分为多个文件 - 梁天
将Go的main包拆分为多个文件的写法和普通包是完全一致的,其使用规则也相同。如编写main包结构如下: main | main.go | show.go 在main.go中编写了main函数,main函数调用了在show中定义的函数或变量。到此和一般的go包都一致。但是当运行go run mian
2020-08-23T16:35:00Z
2020-08-23T16:35:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】将Go的main包拆分为多个文件的写法和普通包是完全一致的,其使用规则也相同。如编写main包结构如下: main | main.go | show.go 在main.go中编写了main函数,main函数调用了在show中定义的函数或变量。到此和一般的go包都一致。但是当运行go run mian <a href="https://www.cnblogs.com/gwyy/p/13551593.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/13551571.html
go语言 go-svc包 - 梁天
阅读 NSQ 源码时,看到NSQ使用了 go-svc 来启动nsq的相关程序,使得在程序退出的时候可以做一些释放资源等收尾工作。 使用起来非常简单,定义一个Service,实现其 svc.Service中的接口即可。 简单使用: func main() { prg := &program{} //运
2020-08-23T16:25:00Z
2020-08-23T16:25:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】阅读 NSQ 源码时,看到NSQ使用了 go-svc 来启动nsq的相关程序,使得在程序退出的时候可以做一些释放资源等收尾工作。 使用起来非常简单,定义一个Service,实现其 svc.Service中的接口即可。 简单使用: func main() { prg := &program{} //运 <a href="https://www.cnblogs.com/gwyy/p/13551571.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/13469431.html
go语言的init函数 - 梁天
go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性, 有下面的特征: 1 init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等 2 每个包可以拥有多个init函数 3 包的每个源文件也可以拥有多个init函数 4 同一个包中多个init函数的执行
2020-08-10T06:06:00Z
2020-08-10T06:06:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】go语言中init函数用于包(package)的初始化,该函数是go语言的一个重要特性, 有下面的特征: 1 init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等 2 每个包可以拥有多个init函数 3 包的每个源文件也可以拥有多个init函数 4 同一个包中多个init函数的执行 <a href="https://www.cnblogs.com/gwyy/p/13469431.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/gwyy/p/13356345.html
go操作elasticsearch - 梁天
简介: es包地址:https://github.com/olivere/elastic/ 这个版本被广泛使用,我们也用这个。 注意:es版本不同,要导入不同的包。6.0版本导入“github.com/olivere/elastic” 连接es: var host = "http://xxx.com
2020-07-21T09:32:00Z
2020-07-21T09:32:00Z
梁天
https://www.cnblogs.com/gwyy/
【摘要】简介: es包地址:https://github.com/olivere/elastic/ 这个版本被广泛使用,我们也用这个。 注意:es版本不同,要导入不同的包。6.0版本导入“github.com/olivere/elastic” 连接es: var host = "http://xxx.com <a href="https://www.cnblogs.com/gwyy/p/13356345.html" target="_blank">阅读全文</a>