go语言学习
文章平均质量分 64
柏拉图的梦
k8s
展开
-
echarts柱状图值为0时不显示以及柱状图百分比展示
echats柱状图数值为0时的占位问题原创 2023-01-16 16:01:33 · 4965 阅读 · 0 评论 -
golang使用gomail包发送邮件
【代码】golang使用gomail包发送邮件。原创 2023-01-16 15:12:07 · 1032 阅读 · 0 评论 -
go基于docker SDK,前端页面动态显示容器日志
go基于docker SDK,前端页面动态显示容器日志需要用到的包github.com/gin-gonic/ginnhooyr.io/websocketgithub.com/docker/docker/client文件目录├── docker│ ├── conn.go│ └── conn_test.go├── go.mod├── go.sum├── html│ └── index.html└── main.go静态页面代码展示<!DOCTYPE html原创 2021-12-17 15:39:12 · 3277 阅读 · 4 评论 -
go websocker 初体验
下载包go get nhooyr.io/websocketserver端package mainimport ( "context" "fmt" "log" "net/http" "nhooyr.io/websocket" "nhooyr.io/websocket/wsjson" "time")func main() { http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) { fmt.F原创 2021-12-10 10:17:53 · 451 阅读 · 0 评论 -
Go语言使用gorm操作数据库
Go语言使用gorm操作数据库介绍在用 Go 开发项目时,我们免不了要和数据库打交道。目前,GitHub 上 star 数最多的是 GORM,它也是当前 Go 项目中使用最多的 ORM。GORM 是 Go 语言的 ORM 包,功能强大,调用方便。像腾讯、华为、阿里这样的大厂,都在使用 GORM 来构建企业级的应用。GORM 有很多特性,开发中常用的核心特性如下:功能全。使用 ORM 操作数据库的接口,GORM 都有,可以满足我们开发中对数据库调用的各类需求。支持钩子方法。这些钩子方法可以应用在 Cre原创 2021-11-24 15:39:50 · 4291 阅读 · 0 评论 -
Golang 在 Mac、Linux、Windows 下如何交叉编译
Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下。Mac 下编译 Linux 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.goCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.goLinux 下编译 Mac 和 Windows 64位可执行程序CGO_ENABLED=0 GOOS=dar转载 2020-08-31 16:47:22 · 203 阅读 · 0 评论 -
go语言收集nginx容器日志(七、优化方案及总结)
基于go语言编写的日志收集已经完成了,但是他现在只能收集30s而且扩展性不是很好。现在将部分代码进行修改,首先在全局变量中新增统计变量var ( con client.Client err error sum int)在处理模块中新增变量自增func (l *LogProcess) Process() { /* 需要匹配的正则规则,每个人跟每个人写的正则都不一样,只要能提取到自己需要的数据即可,其中(...)中包含的是我们需要提取的数据, */ str := `([\d\.]+原创 2020-07-21 14:46:50 · 241 阅读 · 0 评论 -
go语言收集nginx容器日志(六、数据展示)
前面我们也提到过使用granfana提供数据的展示,安装方式自行百度,很简单,安装完成后进入登陆界面添加数据库信息添加展示板选择数据源在这里选择自己想要展示的数据就可以看到展示图了...原创 2020-07-21 14:22:16 · 181 阅读 · 0 评论 -
go语言收集nginx容器日志(五、写入模块实现)
写入模块需要将数据写入时序性数据库influxdb,首先我们部署influxdb,本次采用docker部署,这是influxdb的官方地址:https://hub.docker.com/_/influxdb使用docker拉取镜像然后启动,进入容器执行可连接数据库(influxdb的语句类似sql语句)基本概念database 数据库,measurement 类似mysql的数据表,tag 类似mysql的索引,field 值,$ influx -precision rfc3339Conn原创 2020-07-21 14:13:17 · 207 阅读 · 0 评论 -
go语言收集nginx容器日志(四、数据处理模块实现)
现在我们已经实现了文件读取模块,下面我们将处理模块实现,因为要从字符串中提取数据,需要用到go的正则表达式,我总结了go的正则表达是的常用方法。下面为处理模块的代码func (l *LogProcess) Process() { /* 需要匹配的正则规则,每个人跟每个人写的正则都不一样,只要能提取到自己需要的数据即可,其中(...)中包含的是我们需要提取的数据, */ str := `([\d\.]+)\s+([^\[]+)\s+\[([\d\s\S]+?)\]\s+\"([A-Z]+)\s原创 2020-07-21 11:04:03 · 268 阅读 · 0 评论 -
go语言收集nginx容器日志(三、读取模块实现+完善)
上一个读取模块距离我们的日志读取还有点距离,我们先来看下nginx容器日志的格式。{ "log":"192.168.1.142 - - [23/Jun/2020:16:16:42 +0800] "GET /basicParam/Interrogation HTTP/1.1" 200 639 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4原创 2020-07-21 09:44:41 · 456 阅读 · 0 评论 -
go语言收集nginx容器日志(二、读取模块实现)
昨天大致流程已经实现,今天我们按照模块化实现功能首先是读取模块的实现package mainimport ( "bufio" "fmt" "io" "log" "os" "strings" "time")type LogProcess struct { //定义了两个管道,一个读取,一个写入 rc chan string wc chan string //文件路径 path string}func (l *LogProcess) ReadFromFile() {原创 2020-07-21 09:04:46 · 431 阅读 · 0 评论 -
go语言收集nginx容器日志(一)
go语言练手小项目,基于go语言实现日志收集,需要用到docker+influxdb+grafana,代码负责收集日志并处理数据然后写入inflxdb,granfana负责展示。第一天实现文件的读,处理及写入,由浅到深。一下为main文件代码main.gopackage mainimport "time"type LogProcess struct { }func (l *LogProcess)ReadFromFile() { }func (l *LogProcess)Pr原创 2020-07-20 17:13:22 · 278 阅读 · 0 评论 -
自己写go web框架第二天(Content)
今天实现效果:将 路由(Route) 独立出来方便后期增强设计上下文(Content) 封装Request 和 Response ,提供JSON、HTML等返回类型的支持。先看效果main.gopackage mainimport ( "go-user/red" "net/http")func main() { r := red.New() r.GET("/red", func(c *red.Content) { user := make(map[int]string)原创 2020-07-13 09:56:34 · 471 阅读 · 0 评论 -
自己写go web框架第一天(基础知识)
Go语言内置net/http库,封装HTTP编程的基础接口,启动HTTP特别简单标准库启动web创建一个main文件package mainimport ( "net/http")func main(){ http.HandleFunc("/",indexHandler) http.ListenAndServe("",nil) }func indexHandler(w http.ResponseWriter, r *http.Request){ w.Write([]byte原创 2020-07-10 14:50:01 · 384 阅读 · 0 评论 -
go的jwt生成
在GOPATH目录下执行 go get -u github.com/dgrijalva/jwt-go下载工具包package mainimport ( "encoding/json" "errors" "fmt" "github.com/dgrijalva/jwt-go" "time")//定义结构体(继承jwt.StandardClaims 结构体)type MyClaims struct { Username string `json:"username"` Role str原创 2020-07-03 15:41:17 · 470 阅读 · 0 评论