Golang
文章平均质量分 87
普通Gopher
大数据非入门者,云计算菜鸡
网络安全混子,机器学习渣渣
开发不会,运维太累
展开
-
Golang语言学习从入门到实战----go URL参数编码,解码与HMACSHA1加密算法
go URL参数编解码1. urlencodegolang下可以使用net/url模块实现urlencode和urldecode操作,类似java URLEncoder和URLDecoder的函数,它们是QueryEscape:类似URLEncoderQueryUnescape:类似URLDecoder代码如下:package mainimport( "fmt" "net/url")func main() { var urlStr string = "原创 2020-12-31 17:25:49 · 2930 阅读 · 0 评论 -
Golang语言学习从入门到实战----协程详解
一、Golang 线程和协程的区别备注:需要区分进程、线程(内核级线程)、协程(用户级线程)三个概念。1.1 进程、线程 和 协程 之间概念的区别对于 进程、线程,都是有内核进行调度,有 CPU 时间片的概念,进行 抢占式调度(有多种调度算法)对于 协程(用户级线程),这是对内核透明的,也就是系统并不知道有协程的存在,是完全由用户自己的程序进行调度的,因为是由用户程序自己控制,那么就很难像抢占式调度那样做到强制的 CPU 控制权切换到其他进程/线程,通常只能进行 协作式调度,需要协程自己主动把控原创 2020-12-11 18:29:03 · 447 阅读 · 0 评论 -
解决使用go-chart库制作图标时横纵坐标不正常显示的问题
现象本人之前在使用go-chart库制作图标时,使用go mod下载了最新的包,通过跑通实例代码,发现横纵坐标不正常显示!详情见:Golang语言学习从入门到实战----使用go-chart实现折线图通过翻阅资料,最终在Github issues里找到答案解决链接:https://github.com/wcharczuk/go-chart/issues/132这是因为Go Modules使用最新的发行标签。尝试在使用时指定提交go get更换版本,例如:go get github.com/w原创 2020-12-07 11:00:05 · 877 阅读 · 1 评论 -
Golang语言学习从入门到实战----使用go-chart实现折线图
Why this最近在实现一个某某模块功能,邮件中实现统计信息的发送,其中涉及到需要在邮件正文中嵌入图表(折线图,饼图等等)由于邮件中无法支持js解析,不能按照寻常方式制作图标。通过翻阅大量资料,发现go-chart可以生成PNG图片形式的图表,因此尝试使用https://github.com/wcharczuk/go-chart库实现操作。How togo-chart是个强大的go生成图片的库,但是采用默认配置生成线条较多或者文本过长的图片时,无法完美适应。默认不支持中文。但是里面的属性大多可自己原创 2020-12-04 19:05:28 · 3725 阅读 · 0 评论 -
Golang语言学习从入门到实战----使用gomail库发送邮件(图片+正文)到qq邮箱实现
文档地址:https://godoc.org/gopkg.in/gomail.v2#Message.EmbedHow to startgomail包:执行 go get gopkg.in/gomail.v2 下载库假设你开启了GO111MODULEmkdir mailDemogo mod init ... 代码操作go mod tidygo run mailDemo.go代码实现新建mailDemo.go文件package mainimport ( "gopkg.in/g.原创 2020-12-04 12:20:42 · 2248 阅读 · 0 评论 -
基于GO实现千万级WebSocket消息推送服务
实现HTTP服务端server.gopackage mainimport "net/http"func wsHandler(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte("hello"))}func main() { http.HandleFunc("/ws", wsHandler) _ = http.ListenAndServe(":7777", nil)}完成Websocket握手ser原创 2020-07-19 17:51:07 · 1624 阅读 · 0 评论 -
Golang1.14 go modules 怎么导入本地其它项目的包? 看完这篇文章, 终于搞懂了
相信大家在本地使用go mod开发项目时, 肯定会遇到很多依赖包的问题。因为go mod在最近的1.13中使用了Go GO111MODULE·模块进行包管理。设置Go GO111MODULE有的小伙伴使用过程中肯定非常痛苦,因为不是很熟练, 而且里面还有很多不人性化的设置,网上的资料甚少,都是一篇文章你抄我,我抄你, 查阅大量文章只后无果,一怒之下我决定好好研究一下go mod。遇到的问题...原创 2020-03-31 10:45:14 · 8835 阅读 · 5 评论 -
Windows10配置Elasticsearch7与 Kibana7
下载Elasticsearch下载: https://www.elastic.co/cn/downloads/elasticsearchKibana下载地址: https://www.elastic.co/cn/downloads/kibana配置与启动启动Elasticsearch注意: 启动Elasticsearch需要配置Java环境解压文件, 打开cmd, 在安装目录下输入...原创 2020-03-27 16:39:11 · 1623 阅读 · 0 评论 -
Golang实战之海量日志收集系统(九)beegoWeb入门
Beego web开发beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。安装beegogo get github.com/...原创 2020-03-30 18:20:18 · 481 阅读 · 0 评论 -
Golang语言学习从入门到实战----Go操作Mysql实现增删改查
建库建表新建person表create table person(user_id int primary key auto_increment,username varchar(260),sex varchar(260),email varchar(260));Golang操作Mysql数据库安装sqlxgo get github.com/jmoiron/sqlx,sqlx...原创 2020-03-29 22:16:45 · 609 阅读 · 0 评论 -
Golang实战之海量日志收集系统(八)logTransfer之将日志入库到Elasticsearch并通过Kibana进行展示
前面我们将logTransfor的配置初始化成功了, 下面将从Kafka中消费数据, 并将日志入库到Elasticsearch并通过Kibana进行展示将日志保存到ES中初始化Es在main函数中添加初始化InitEs函数// 初始化Es err = es.InitEs(logConfig.EsAddr) if err != nil { logs.Error("初始化Elastic...原创 2020-03-28 20:38:58 · 2010 阅读 · 0 评论 -
Golang实战之海量日志收集系统(七)logTransfer之从kafka中获取日志信息
在前六章中已经完成了日志收集的logAgent端, 接下来需要将日志数据写入到Kafka中, 然后将数据落地到Elastciseartch中Elastciseartch与Kinaba下载与安装Elastciseartch与Kinaba下载与安装, 参考我这篇博客使用Golang控制Elasticsearch环境版本:go 1.14elasticsearch-7.6.1kibana-7...原创 2020-03-28 17:54:19 · 1881 阅读 · 0 评论 -
Golang实战之海量日志收集系统(六)监视etcd配置项的变更
在上一篇中我们已经实现了从etcd中获取配置信息并创建tailTask任务现在我们来通过etcd的watch实现新配置的变更监视etcd配置项的变更实现watch各个不同ip在真实生产环境中时会常常添加新的服务器, 这时我们需要借助之前的ip.go获取所有ip节点, 并且实时监控修改EtcdClient结构体增加keystype EtcdClient struct { client ...原创 2020-03-25 11:52:59 · 1165 阅读 · 0 评论 -
Golang实战之海量日志收集系统(五)根据etcd配置项创建多个tailTask
通过上一篇从etcd中获取配置信息, 现在要拿着这些配置项进行日志收集根据etcd的配置项创建多个tailtask项目结构:.│ go.mod│ go.sum││├─conf│ logagent.conf│├─kafka│ kafka.go│├─logs│ my.log│├─main│ config.go│ ...原创 2020-03-23 18:58:23 · 665 阅读 · 0 评论 -
Golang实战之海量日志收集系统(四)etcd介绍与使用etcd获取配置信息
etcd介绍高可用的分布式key-value存储,可以用于配置共享和服务发现类似的项目:Zookeeper和consul开发语言:go接口:提供Restful的接口,使用简单实现算法:基于raft算法的强一致性,高可用的服务存储目录etcd的应用场景:服务发现和服务注册配置中心(我们实现的日志收集客户端需要用到)分布式锁master选举etcd的命令验证PS E:\...原创 2020-03-23 16:36:56 · 1651 阅读 · 0 评论 -
Golang实战之海量日志收集系统(三)简单版本logAgent的实现
简单版本LogAgent的实现这里主要是先实现核心的功能,后续再做优化和改进,主要实现能够根据配置文件中配置的日志路径去读取日志并将读取的实时推送到kafka消息队列中关于logagent的主要结构如下: . ├─conf │ logagent.conf │ ├─kafka │ kafka.go │ ├─logs │ my.log │ ├─...原创 2020-03-22 17:38:51 · 2491 阅读 · 0 评论 -
Golang实战之海量日志收集系统(二)收集应用程序日志到Kafka中
kafka库的基本操作我们需要先把两者启动,先启动Zookeeper,再启动Kafka启动ZooKeeper:./bin/zkServer.sh start启动kafka:./bin/kafka-server-start.sh ./config/server.properties我这里使用的是Golang1.14最新版本,并且开启了Go Module, 所以下载的包都会整合在go.mod下...原创 2020-03-22 12:07:48 · 1761 阅读 · 0 评论 -
Golang实战之海量日志收集系统(一)项目背景介绍
项目背景每个系统都有日志,当系统出现问题时,需要通过日志解决问题当系统机器比较少时,登陆到服务器上查看即可满足当系统机器规模巨大,登陆到机器上查看几乎不现实每个业务系统都有自己的⽇志,当业务系统出现问题时,需要通过查找⽇志信息来定位和解决问题。 当业务系统服务器⽐较少时,登陆到服务器上查看即可满⾜。但当系统机器规模巨⼤,登陆到服务器上查看⼏乎不现实(分布式的系统,⼀个系统部署在⼗⼏甚至...原创 2020-03-22 11:21:25 · 3057 阅读 · 0 评论 -
解决Golang1.14 etcd/clientv3报错:etcd undefined: resolver.BuildOption
Golang etcd/clientv3报错: etcd undefined: resolver.BuildOption故障描述golang版本go versiongo version go1.14 windows/amd64包管理器go.modmodule goAgentgo 1.14require ( github.com/Shopify/sarama v1.26...原创 2020-03-20 20:09:13 · 10617 阅读 · 0 评论 -
Windows10安装运行Kafka2.1.0与Zookeeper3.4.14
近日在做一个Golang的日志收集系统需要用到Kafka, 因苦于笔记本电脑虚拟机出了点问题, 所以在本文记录Windows10安装Kafka的过程搭建过程1.1 安装JDK此处不多介绍1.2 安装Zookeeper下载地址:http://zookeeper.apache.org/releases.html#download下载后解压到一个目录:1.进入Zookeeper设置目录,...原创 2020-03-16 14:37:59 · 890 阅读 · 3 评论 -
关于go get 以后下载的包不在src下而在pkg的源头并且不可以import(Goland Modules模块的使用)
采坑记万恶之源:go get 以后我发现下载的包不在src目录下生成,而全部到了$GOPATH$/pkg目录下而且下载完了, import也不成功在不懈的努力下最后终于找到原因:解决Golang使用过程中go get 下载github项目慢或无法下载我写的这篇文章中,go env -w GO111MODULE=on选择了打开官方在 v1.11 中加入了 Go Module 作为官方...原创 2020-03-16 20:07:07 · 26081 阅读 · 20 评论 -
解决Golang使用过程中go get 下载github项目慢或无法下载
https://goproxy.io/zh/一个为Go模块而生的全球代理在cmd中设置如果您使用的 Go 版本是 1.13 及以上 (推荐) go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.io,direct速度非常快:...原创 2020-03-16 15:25:14 · 23089 阅读 · 6 评论 -
Golang语言学习从入门到实战----HTTP web开发编程
1. HTTP编程package mainimport ( "fmt" "net/http")func main() { http.HandleFunc("/", Hello) http.HandleFunc("/usr/login", login) http.HandleFunc("/usr/history", history) err := http.ListenAnd...原创 2020-03-15 16:53:28 · 277 阅读 · 0 评论 -
Golang语言学习从入门到实战----编写简单的TCP/IP聊天室
效果展示首先启动server端:启动client端,输入文本Server端接收:目录结构├─client│ client.go│└─server server.go代码详细client.gopackage mainimport ( "bufio" "fmt" "net" "os" "strings")func main()...原创 2020-03-13 17:38:00 · 276 阅读 · 0 评论 -
Golang语言学习从入门到实战----基于Golang的客户关系管理系统
客户关系管理系统GitHub地址:https://github.com/PlutoaCharon/Golang_customerManager运行:go run $GOPATH/customerManager(存放该项目的文件夹)/view/customerView.go项目展示----------------------客户信息管理软件---------------------- ...原创 2020-03-13 17:30:15 · 1744 阅读 · 0 评论 -
Golang语言学习从入门到实战----基于Golang实现简单家庭收支项目
基于Golang实现简单家庭收支项目GitHub地址:https://github.com/PlutoaCharon/Golang_FamilyAccount.git该项目可以简单的进行,明细,登记收入和支出操作实现界面:-----------------家庭收支记账软件----------------- 1 收支明细 ...原创 2020-03-13 17:16:08 · 391 阅读 · 0 评论 -
Golang语言学习从入门到实战----接口
接口概念说明interface类型可以定义一组方法,但是这些不需要实现。并且interface不能包含任何变量。当某个自定义类型要使用的时候,在根据具体情况把这些方法写出来。基本语法接口里的所有方法都没有方法体,即接口的方法都是没有实现的方法。接口体现了程序设计的多态和高内聚低偶合的思想。Golang中的接口,不需要显式的实现。只要一个变量,含有接口类型中的所有方法,那么这个变量就实...原创 2020-03-12 15:40:38 · 238 阅读 · 0 评论 -
Golang语言学习从入门到实战----链表定义
链表1. 链表定义// 每个节点包含下一个节点的地址, 这样把所有的节点都串起来了, 通常把链表中的第一个节点叫做链表头type Student struct { Name string Next* Student}定义一个简单的链表package mainimport "fmt"// 定义一个链表结构type Student struct { Name string...原创 2020-03-11 22:27:22 · 400 阅读 · 0 评论 -
Golang语言学习从入门到实战----结构体以及内存分布
1.Golang语言面向对象编程说明Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言。所以我们说Golang支持面向对象编程特性是比较准确的。Golang没有类(class),Go语言的结构体(struct)和其它编程语言的类(class)有同等的地位,你可以理解Golang是基于struct来实现OOP特性的。Golang面向对象编程非常...原创 2020-03-11 21:41:48 · 1015 阅读 · 0 评论 -
Golang语言学习从入门到实战----defer
defer在函数中,程序员经常需要创建资源(比如:数据库连接、文件句柄、锁等),为了在函数执行完毕后,及时的释放资源,Go的设计者提供defer(延时机制)简单的demopackage mainimport "fmt"func main() { res := sum(10, 20) fmt.Println("number4 res=", res)}func sum(n1 i...原创 2020-03-06 15:21:59 · 293 阅读 · 0 评论 -
Golang语言学习从入门到实战----闭包
Golang闭包基本介绍:闭包就是一个函数和与其相关的引用环境组合的一个整体(实体)package mainimport "fmt"func AddUpper() func(int) int { var n int = 0 return func(x int) int { n += x return n }}func main() { f := AddUppe...原创 2020-03-06 11:59:27 · 239 阅读 · 0 评论 -
Golang语言学习从入门到实战----指针和内存布局
关于Golang语言的指针与内存讲解基本数据类型,变量存的就是值,也叫值类型获取变量的地址,用&,比如:var num int,获取num的地址:&numpackage mainimport "fmt"func main() { // 基本数据类型在内存布局 var num int = 1 // num 的地址是什么, &num fmt.Print...原创 2020-03-02 20:16:10 · 282 阅读 · 0 评论