-
Go热门开源项目大全
所属栏目:[大数据] 日期:2020-12-16 热度:103
监控系统 项目 简介 Star数 grafana/grafana Grafana 是一个用于监控指标分析和图表展示的工具, 后端支持 Graphite,InfluxDB Prometheus Open-falcon等, 它是一个流行的监控组件, 目前在各大中小型公司中广泛应用 34113 prometheus/prometheus Prometheus[详细]
-
02 . Go框架之Gin框架从入门到熟悉(数据解析和绑定,渲染,重定向,
所属栏目:[大数据] 日期:2020-12-16 热度:119
数据解析和绑定 json数据解析和绑定 package mainimport ("github.com/gin-gonic/gin""net/http")// 定义接受数据的结构体type Login struct {// binding:"required"修饰的字段,若接收为空值,则报错,是必须字段User string `form:"username" json:"user"[详细]
-
03 . Go框架之Gin框架从入门到熟悉(Cookie和Session,数据库操作)
所属栏目:[大数据] 日期:2020-12-16 热度:91
Cookie Cookie是什么 HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由同一个客户端发出 Cookie就是解决HTTP协议无状态的方案之一,中文是小甜饼的意思 Cookie实际上就是服务器保存在浏览器上的一段信息。浏览器有[详细]
-
03 . Go开发一个日志平台之Elasticsearch使用及kafka消费消息发
所属栏目:[大数据] 日期:2020-12-16 热度:191
Elasticsearch使用 详细使用请看我写的Go操作Elasticsearch专篇 https://www.cnblogs.com/you-men/p/13391265.html example1 package mainimport ("context""fmt""github.com/olivere/elastic/v7")var eshost = "http://192.168.43.176:9200"var client *ela[详细]
-
18 . Go之操作Mysql和sqlx使用
所属栏目:[大数据] 日期:2020-12-16 热度:175
安装mysql wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpmyum -y localinstall mysql57-community-release-el7-8.noarch.rpmyum install mysql-community-server -ysystemctl start mysqldgrep 'temporary password' /var/log/m[详细]
-
04 . Gin+Vue开发一个线上外卖应用(用户名密码和图形验证码)
所属栏目:[大数据] 日期:2020-12-16 热度:56
图形化验证码生成和验证 功能介绍 在使用用户名和密码登录功能时,需要填写验证码,验证码是以图形化的方式进行获取和展示的。 验证码使用原理 验证码的使用流程和原理为:在服务器端负责生成图形化验证码,并以数据流的形式供前端访问获取,同时将生成的验[详细]
-
Go编程(二) 多线程简单斗地主
所属栏目:[大数据] 日期:2020-12-16 热度:154
多线程,通道,读写锁(单写多读),随机(洗牌),是本文涉及的主要知识点。 先看一下做出来的效果,因为是实验程序,跟真实的斗地主还是有差距,理解万岁! [发牌员]:洗牌咯。刷刷刷...[发牌员]:牌洗好了。[发牌员]:开始发牌。[发牌员]:每个人17张牌。[详细]
-
Go编程(一) 怎么写Go代码
所属栏目:[大数据] 日期:2020-12-16 热度:98
Go编程(一) 怎么写Go代码 Go编程(二) 多线程简单斗地主 持续更新中... 安装过程略过,网上搜一大把。 介绍 本文会在一个module中开发一个简单的Go package。 同时介绍go tool(也就是go命令行)。 以及如何fetch,build和install Go的modules,packages,com[详细]
-
go语言defer panic recover用法总结
所属栏目:[大数据] 日期:2020-12-16 热度:185
defer defer是go提供的一种资源处理的方式。defer的用法遵循3个原则 在defer表达式被运算的同时,defer函数的参数也会被运算。如下defer的表达式println运算的同时,其入参i也会被运算,结果为初始化值0,故defer调用中会打[详细]
-
go语言接受者的选取
所属栏目:[大数据] 日期:2020-12-16 热度:114
何时使用值类型 1.如果接受者是一个 map,func 或者 chan,使用值类型(因为它们本身就是引用类型)。 2.如果接受者是一个 slice,并且方法不执行 reslice 操作,也不重新分配内存,使用值类型。 3.如果接受者是一个小的数组或者原生的值类型结构体类型(比如 t[详细]
-
详解golang net之netpoll
所属栏目:[大数据] 日期:2020-12-16 热度:174
golang版本1.12.9;操作系统:readhat 7.4 golang的底层使用epoll来实现IO复用。netPoll通过pollDesc结构体将文件描述符与底层进行了绑定。netpoll实现了用户层面的与底层网络IO相关的goroutine的阻塞/非阻塞管理。 对netpoll的介绍按照这篇文章的思路按照tc[详细]
-
go语言的unsafe包(转)
所属栏目:[大数据] 日期:2020-12-16 热度:68
The unsafe Package in Golang Golang的unsafe包是一个很特殊的包。 为什么这样说呢? 本文将详细解释。 来自go语言官方文档的警告 unsafe包的文档是这么说的: 导入 unsafe的软件包可能不可移植,并且不受Go 1兼容性指南的保护。 Go 1 兼容性指南这么说:[详细]
-
go语言的数组和切片区别
所属栏目:[大数据] 日期:2020-12-16 热度:55
这里不介绍数组和切片的使用技巧,主要看下2者的区别。 首先看下它们的定义: 数组:类型? [n]T ?表示拥有? n ?个? T ?类型的值的数组。 切片:类型? []T ?表示一个元素类型为? T ?的切片。 看一个 数组 的例子: var x[3]int = [3]int{1,2,3}var y[3]int = x[详细]
-
详解golang net之transport
所属栏目:[大数据] 日期:2020-12-16 热度:188
关于golang http transport的讲解,网上有很多文章进行了解读,但都比较粗,很多代码实现并没有讲清楚。故给出更加详细的实现说明。整体看下来细节实现层面还是比较难懂的。 本次使用golang版本1.12.9 transport实现了RoundTripper接口,该接口只有一个方法R[详细]
-
client-go和golang源码中的技巧
所属栏目:[大数据] 日期:2020-12-16 热度:180
client-go中有很多比较有意思的实现,如定时器,同步机制等,可以作为移植使用。下面就遇到的一些技术讲解,首先看第一个: sets.String (k8s.io/apimachinery/pkg/util/sets/string.go) 实现了对golang map的key的处理,如计算交集,并集等。实际中可能会遇[详细]
-
go 语言的一个赋值操作
所属栏目:[大数据] 日期:2020-12-16 热度:98
?最近在看client-go源码,在源码的toolscachesstore.go文件中有一行代码不得其解(如下标黄内容),它将一个struct赋值给了一个interface type Store interface { Add(obj {}) error Update(obj {}) error Delete(obj {}) error List() [] {} ListKeys() [][详细]
-
golang net之http server
所属栏目:[大数据] 日期:2020-12-16 热度:180
golang 版本:1.12.9 简单的HTTP服务器代码: package mainimport ( " net/http " )type TestHandler struct { str string }func (th *TestHandler)ServeHTTP(w http.ResponseWriter,r * http.Request){ w.Write([] byte ( string (th.str+ ,welcome )))}fun[详细]
-
golang:exported function Script should have comment or be u
所属栏目:[大数据] 日期:2020-12-16 热度:145
当自己定义的包被外部使用时,如果不遵循一定的规范,那么会出现讨厌的绿色纹条,还会警告: 虽然不会影响运行,但是也令人讨厌,那么如何解决这个问题呢? 为结构体或者变量或者方法添加注释,并且开头必须是结构体或变量或方法的名字,加上空格,加上描述[详细]
-
golang数据结构之环形队列
所属栏目:[大数据] 日期:2020-12-16 热度:126
目录结构: circlequeue.go package queueimport ( " errors " fmt " ) // CircleQueue 环型队列 type CircleQueue struct { MaxSize int Array [ 5 ] Front Rear } Push 向队列中添加一个值 func (q *CircleQueue) Push(val ) (err error) { 先判断队列是否[详细]
-
golang--redis连接池
所属栏目:[大数据] 日期:2020-12-16 热度:188
通过golang对redis操作,还可以通过redis连接池,流程如下: (1)事先初始化一定数量的连接,投入到连接池; (2)当go需要操作redis时,直接从连接池取出连接即可; (3)这样可以节省临时获取redis的时间,从而提高效率; package mainimport ( " fmt " g[详细]
-
golang数据结构之冒泡排序
所属栏目:[大数据] 日期:2020-12-16 热度:63
// BubbleSort 冒泡排序 func BubbleSort(arr *[ 7 ] int ) { for i := len(arr) - 1 ; i = 0 ; i-- { for j := i; j = 0 ; j-- { if (*arr)[j] (* arr)[i] { ( *arr)[j],(*arr)[i] = (*arr)[i],(* arr)[j] } } fmt.Printf( " 第%d趟的结果为:%vn " ,len(a[详细]
-
golang数据结构之用循环链表解决约瑟夫环问题
所属栏目:[大数据] 日期:2020-12-16 热度:103
josephu.go package linkimport ( " fmt " )type Kid struct { ID int next * Kid}func AddKid(num int ) * Kid { first : = Kid{} cur : = Kid{} if num 1 { fmt.Println( 不合法 ) return first } for i := 1 ; i = num; i++ { kid : = Kid{ ID: ,} if i =[详细]
-
golang数据结构之选择排序
所属栏目:[大数据] 日期:2020-12-16 热度:190
// SelectSort 选择排序 func SelectSort(arr *[ 7 ] int ) { for i := 0 ; i len(arr); i++ { tmp : = arr[i] index : = i for j := i + 1 ; j len(arr); j++ { if (*arr)[j] tmp { tmp = (* arr)[j] index = j } } if index != i { ( *arr)[index],(*arr)[[详细]
-
golang数据结构之树的三种遍历方式
所属栏目:[大数据] 日期:2020-12-16 热度:68
tree.go package treeimport ( " fmt " )type TreeNode struct { ID int Val Left * TreeNode Right * TreeNode}func PreOrder(root * TreeNode) { if root != nil { fmt.Printf( %d ,root.Val) PreOrder(root.Left) PreOrder(root.Right) }}func InOrder(ro[详细]
-
golang数据结构之散哈希表(Hash)
所属栏目:[大数据] 日期:2020-12-16 热度:80
hash.go package hashimport ( " fmt " )type Emp struct { ID int Name string Next * Emp} // 第一个节点就存放员工 type EmpLink { Head * 定义HashTable type HashTable { LinkArr [ 7 ]EmpLink} 添加员工的方法 func (empl *EmpLink) InsertEmp(emp * E[详细]
