![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
爱思考的实践者
我的到来,让世界变得更好。My coming makes this world a better place to live in.
展开
-
mac下本地搭建nsq经验分享
mac os版本为10.13.3 。go 语言版本为go1.10.2。对于什么是nsq,请参考https://blog.csdn.net/chinawangfei/article/details/80341688。在本地搭建时,请先到nsq官网熟悉搭建流程,具体网址为:https://nsq.io/overview/quick_start.html。搭建NSQ实时分布式消息平台,主要启...原创 2018-05-18 14:47:14 · 2541 阅读 · 0 评论 -
golang日志库logrus的安装和使用
一、安装logrus执行如下命令,即可按照logrusgo get github.com/sirupsen/logrus如果无法访问 golang ,那么可以先 clone github.com/golang的源码,然后生成cd $GOPATH/src/golang.org/xgit clone https://github.com/golang/crypto.gitgo ...转载 2018-12-16 19:10:38 · 2669 阅读 · 0 评论 -
理解Go的Context机制
1. 什么是Context最近在分析gRPC源码,proto文件生成部分的代码,接口函数的第一个参数统一是ctx context.Context,对这种设计甚是迷惑,于是找些资料,对其背后的原理一探究竟。Context通常被译作上下文,它是一个比较抽象的概念,一般理解为“程序单元的一个运行状态、现场、快照”。将content翻译为“上下文”,很好地诠释了其本质,说明了数据流的方向,上游会把...原创 2019-01-21 15:21:25 · 6700 阅读 · 0 评论 -
golang map中结构体元素是无法取地址的
map中的结构体元素是无法取地址的,即:map[string]struct类型,取&map["tmp"]是错误的。会提示报错:cannot assign to struct field elem["count"].count in map。原因为:map中的元素并不是一个变量,而是一个值。因此,我们不能对map的元素进行取址操作。1.使用示例一:map对应的值为结构体类...原创 2019-01-16 14:51:36 · 6343 阅读 · 1 评论 -
golang使用sort包排序
1. sort包简介sort包实现了四种基本排序算法:插入排序、归并排序、堆排序和快速排序。 但是,这四种排序方法不是公开的,它们只在sort包内部被使用。所以,在对数据集合排序时,不必考虑应当选择哪一种排序方法,只要实现了sort.Interface定义的三个方法,就可以顺利对数据集合进行排序。sort.Interface接口定义的三个方法为:获取数据集合长度的Len()方法、比较两个元素大...原创 2019-03-22 16:10:22 · 3253 阅读 · 0 评论 -
mac下安装grpc protobuf
一、前言这两天想研究一下grpc的Protobuf,于是在自己的mac电脑上进行尝试。把过程记录下来,给有需要的同学参考下,大家共同进步。参考grpc官网:https://grpc.io二、下载grpc代码包使用dep包管理工具直接下载grpc代码包,命令为:dep ensure -add google.golang.org/grpc下载完成后,在Gopkg.toml文件...原创 2019-04-22 18:01:29 · 4038 阅读 · 1 评论 -
Go实战--获取公网ip、查看内网ip、检测ip类型、校验ip区间、ip地址string和int转换、根据ip判断地区国家运营商
一、简要介绍net包1. func ParseIPfunc ParseIP(s string) IPParseIP parses s as an IP address, returning the result. The string s can be in dotted decimal (“192.0.2.1”) or IPv6 (“2001:db8::68”) form. If ...原创 2019-05-10 14:32:42 · 3148 阅读 · 0 评论 -
golang实战------翻转字符串和整数
最近研究了下golang翻转字符串和整数的实现,感觉还挺有意思的。代码如下所示:package mainimport ( "fmt")func main() { var str1 = "hello" str2 := "world" //str3 := str1 + " " + str2 str3 := fmt.Sprintf("%s %s", str1, str2)...原创 2019-05-17 18:13:33 · 848 阅读 · 0 评论 -
实现两个大数相加(php和golang版本)
两个大数相加是常见的面试题,无论是PHP开发,还是golang开发,都是如此。下面分别给出两个大数相加PHP版本和golang版本的实现方案,给有需要的同学提供借鉴,希望对大家有所帮助。一、PHP语言版本/** * add * a,b should be numeric * @param $a string * @param $b string ...原创 2018-03-06 11:53:06 · 1542 阅读 · 0 评论 -
golang redis客户端
前言:golang操作redis主要有两个库,go-redis和redigo。两者操作都比较简单,区别是:redigo更像一个client,执行各种操作都是通过Do函数去做的;redis-go对函数的封装更好。golang官方推荐使用redigo,所以项目中我使用了redigo。 1. 安装redigo代码包go get github.com/gomodule/redigo/red...原创 2018-12-06 20:57:36 · 627 阅读 · 0 评论 -
golang之logrus日志框架
一、golang日志库 1.1 golang日志库简介 golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数。对于更精细的日志级别、日志文件分割,以及日志分发等方面,并没有提供支持。所以,催生了很多第三方的日志库。但是,在golang的世界里,没有一个日志库像slf4j那样在Java中具有绝对统治地位。在golang的世界,...转载 2018-12-13 16:28:40 · 8936 阅读 · 0 评论 -
github.com/spf13/viper go viper包介绍
什么是Viper?Viper是一个Go应用程序完整的配置文件解决方案,包括12-Factor应用程序。它被设计为:在应用程序中工作,可以处理所有类型的配置需求和格式。它支持:设置默认值 从JSON,TOML,YAML,HCL和Java属性配置文件中读取 实时观看和重新读取配置文件(可选) 从环境变量中读取 从远程配置系统(etcd或Consul)读取,并观察变化 从命令行标志读取...转载 2018-12-08 11:40:14 · 2179 阅读 · 0 评论 -
nsq多播分发和负载均衡实验
什么是nsq?请参考实时分布式消息平台nsq。本地如何搭建nsq?请参考本地搭建nsq经验分享。从NSQ的设计文档中得知,单个nsqd被设计为一次能够处理多个流数据,NSQ中的数据流模型是由stream和consumer组成。Topic是一种独特的stream,Channel是一个订阅了给定Topic的consumer逻辑分组。NSQ的数据流模型结构如下图所示:从上图可以看出,单个...原创 2018-05-19 16:48:37 · 2205 阅读 · 0 评论 -
NSQ 安装指南
NSQ 安装指南假设我们的服务器按照下面要求编排。nsqlookup 集群列表192.168.234.77192.168.234.36192.168.234.39nsq 节点192.168.234.117192.168.234.118nsqadmin 节点192.168.234.119安装前准备下载最新的二进制包,命令行操作如下:tar -xv...转载 2018-05-20 12:13:38 · 442 阅读 · 0 评论 -
mac下go开发环境的搭建
mac版本为10.13.3。在mac在进行go开发环境的搭建,主要有如下几步:第一步:安装go工具包。第二步:设置GOROOT环境变量。第三步:设置GOPATH和GOBIN环境变量。第四步:重新加载环境变量配置。下面进行详细介绍:第一步:安装go工具包在mac下执行如下命令$ brew install go就会在/usr/local/Cellar目录下生成go工具包,如下所示:/usr/local...原创 2018-05-08 10:48:09 · 7006 阅读 · 0 评论 -
mac安装nsq随手记
mac version是10.13.3。在mac中安装nsq,直接使用brew install即可。在命令行中,执行如下命令即可:$ brew install nsqUpdating Homebrew...==> Auto-updated Homebrew!Updated 3 taps (homebrew/core, homebrew/services, caskroom/cask)....原创 2018-05-16 19:08:37 · 1344 阅读 · 0 评论 -
分布式的实时消息平台NSQ
nsq是一个基于Go语言的分布式实时消息平台,它基于MIT开源协议发布,代码托管在GitHub,其当前最新版本是0.3.1版。NSQ可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。NSQ具有分布式、去中心化的拓扑结构,该结构具有无单点故障、故障容错、高可用性以及能够保证消息的可靠传递的特征。NSQ非常容易配置和...转载 2018-05-16 19:30:14 · 1858 阅读 · 0 评论 -
Go解析命令行参数(flag包)
在写命令行程序(工具、server)时,对命令行参数进行解析,是一种常见的需求。各种语言一般都会提供相应的方法或库,以方便开发者使用。在go标准库中提供了一个包:flag,方便进行命令行解析。也就是说,Go的flag包用来解析命令行参数。 一、命令行flag语法形式命令行flag的语法有如下三种形式:-flag // 只支持bool类型-flag=x-flag x // 只支持非...原创 2018-08-23 16:12:23 · 2685 阅读 · 0 评论 -
Go工具集
go工具集一、go build-gcflags: 传递给编译器的参数-ldflags: 传递给链接器的参数-work: 查看编译临时目录-race: 允许数据竞争检测(仅支持amd64)-n: 查看但不执行编译指令-x: 查看并执行编译命令-a: 强制重新编译所有依赖包-v: 查看被编译的包名,包括依赖包-p n:并行编译所使用的CPU数,默认为全部-o:...原创 2018-10-25 11:06:29 · 688 阅读 · 0 评论 -
IDE Goland DEBUG报错(could not launch process: decoding dwarf section info at offset 0x0: too short)
背景:在升级GO版本到1.11后发现Goland的Debug报错,如下:could not launch process: decoding dwarf section info at offset 0x0: too short。原因:Goland的dlv不是新版本,导致不能debug调试。解决:1、更新dlv,执行如下命令:go get -u github.com/de...转载 2018-11-22 14:41:38 · 5197 阅读 · 4 评论 -
kafka的go版本api介绍及使用示例
一、概述go语言版本的kafaka API,使用sarama和sarama-cluster包,支持offset追踪。生产和消费的过程,都是通过设置一个配置结构体开始的。并发量小时,可以用同步生产者,但是并发量大时,必须使用异步生产者。1.1 安装依赖库saramago get github.com/Shopify/sarama该库要求kafka版本在0.8及以上,支持kafka定义...原创 2019-06-20 20:37:41 · 5538 阅读 · 0 评论