-
Go实战--实现一个单向链表(The way to go)
所属栏目:[大数据] 日期:2020-12-16 热度:135
生命不止,继续 go go go !!! 今天跟大家分享一下数据介绍相关的实现吧,那就已链表为例吧。 golang中为我们提供了一个list,我们先了解一下container/list。 container/list 功能: Package list implements a doubly linked list. 看清楚了吧,是双向链表[详细]
-
golang实现自定义驱动的Cache
所属栏目:[大数据] 日期:2020-12-16 热度:111
近期在写 ActivedRouter项目的时候需求一个缓存模型,要求缓存模型支持不同驱动,例如:memory、file、redis、mysql,实现思路代码如下: cache.go文件,定义缓存对外接口 //ActivedRouter//Author:usher.yue//Amail:usher.yue@gmail.com//TencentQQ:4223665//缓[详细]
-
GOLANG简单类型定义,在协议解析的妙用
所属栏目:[大数据] 日期:2020-12-16 热度:61
原文:https://gocn.io/article/322 在协议解析中,经常需要用到转换不同的含义,比如声音的采样率,在FLV中定义和AAC中定义是不同的。在FLV中只有4中采样率 5512,11025,22050,44100 。而在AAC中有16种采样率 96000,88200,64000,48000,44100,32000,24000,160[详细]
-
golang 令牌桶限速器实现(ratelimit)
所属栏目:[大数据] 日期:2020-12-16 热度:180
首先科普一下常用时间换算: 1000 毫秒(ms) = 1秒 1,000,000 微秒(μs) = 1秒 1,000 纳秒(ns) = 1秒 这个应该不需要解释。 首先看一下定义数据结构: type Bucket struct { startTime time . Time capacity int64 quantum int64 fillInterval time . D[详细]
-
Golang 各种类型的默认值
所属栏目:[大数据] 日期:2020-12-16 热度:126
Go的基本类型 bool //默认值为falsestring //默认值为空字符串int int8 int16 int32 int64 //默认值为0uint uint8 uint16 uint32 uint64 uintptr //默认值为0byte // uint8 的别名rune // int32 的别名float32 float64 //默认值为0complex64 complex128 //默[详细]
-
golang1.8使用cgo获取进程是否假死
所属栏目:[大数据] 日期:2020-12-16 热度:70
package main import ( "flag" )/* #include stdio.h #include windows.h #include Winuser.h typedef struct EnumFunArg{ HWND hWND; DWORD dwProcessId;}EnumFunArg,*LPEnumFunArg;BOOL CALLBACK lpEnumFunc(HWND hwnd,LPARAM lParam){ EnumFunArg *pArg =[详细]
-
golang常见问题整理
所属栏目:[大数据] 日期:2020-12-16 热度:146
golang常见问题整理 golang map 判断key是否存在 http://xhrwang.me/2014/12/25/golang-fundamentals-4-map-range.html golang errors.new http://www.jianshu.com/p/f30da01eea97 golang 错误处理机制 http://xhrwang.me/2014/12/30/golang-fundamentals-9-[详细]
-
详细贯穿Golang和Python的第一个程序,以及对应的二进制文件编译
所属栏目:[大数据] 日期:2020-12-16 热度:94
Python和Golang都是相当不错的编程语言,都值得一窥,所以此处使用两者的第一个程序,将两者的特点进行代码注解详细介绍做记录,当然目前我们的项目上是全栈python,GoLang出于个人喜好自学而已,日后将会在项目中进行GoLang实践。 Windows 系统下, 我的Gol[详细]
-
golang代码案例
所属栏目:[大数据] 日期:2020-12-16 热度:117
1.网络 mgo nsq etcd consul[详细]
-
使用Golang实现简单版的tail -f
所属栏目:[大数据] 日期:2020-12-16 热度:182
思路就是读取文件,采用定时轮询的方式 package mainimport ("bufio""fmt""io""log""os""time")func main() {file,err := os.Open("test.log") //针对test.log文件if err != nil {log.Fatalf("Open file fail:%v",err)}defer file.Close()reader := bufio.Ne[详细]
-
golang动态规划求解最大连续子数组和
所属栏目:[大数据] 日期:2020-12-16 热度:93
// 求最大连续子数组和 func MaxSubArray(arr [] int ) int { currSum := 0 maxSum := arr [0 ] for _,v := range arr { if currSum 0 { currSum += v } else { currSum = v } if maxSum currSum { maxSum = currSum } } return maxSum}[详细]
-
golang日記 -Java的ArrayList和Golang的slice
所属栏目:[大数据] 日期:2020-12-16 热度:94
slice,翻译成中文: 切片,可能原意就是切下来的这个片段是可以被命名的,但对切片操作肯定会影响本体. 参考: http://blog.wuxu92.com/array-and-slice-in-golang/ 底层实现也挺相同,都是数据量超了后,就开辟新的数组,复制过去. Java : ArrayList真正储存的是数[详细]
-
golang日記 - Go-new,make和Java-new
所属栏目:[大数据] 日期:2020-12-16 热度:100
首先,为什么要弄new和make,我觉得可能是历史原因 stackoverflow上也有相关提问 The introduction documents dedicate many paragraphs to explaining the difference between new() and make(),but in practice,you can create objects within local scope a[详细]
-
GOLANG接口适配,组合方式的灵活接口演化
所属栏目:[大数据] 日期:2020-12-16 热度:143
原文:https://gocn.io/article/326 在OO(Object Oriented)原则中,有一条叫做:优先使用组合,而不是继承。虽然GOLANG并不是OO的语言(没有继承和多态),但是不妨碍GOLANG使用这条原则,而GOLANG的作者就强调过这一点,在GOLANG中是使用组合而非继承来扩展[详细]
-
使用gdb调试go项目
所属栏目:[大数据] 日期:2020-12-16 热度:192
原始文档:https://golang.org/doc/gdb,本文以docker的libnetwork库为例,说明如何用gdb调试。 首先安装golang和gdb(版本7.0以上),在FreeBSD上,请用gdb7121。设置GOPATH=$HOME/go。 下载libnetwork:go get github.com/docker/libnetwork 在$GOPATH/githu[详细]
-
golang使用vet进行语法检查
所属栏目:[大数据] 日期:2020-12-16 热度:102
golang vet工具的使用 一般来说每一门语言都有一些用来进行语法检查的工具,vet就是golang中提供的语法检查工具,可以让我检查出package或者源码文件中一些隐含的错误,规范我们的项目代码,下面我简单讲解下该工具的使用. golang vet工具的使用 vet工具的路径[详细]
-
GOLANG项目:基于命令行的计算器
所属栏目:[大数据] 日期:2020-12-16 热度:66
go version: E:projectgocalcprojbingo version go version go1.7.5 windows/amd64 开发环境:LiteIDE 项目需求: a、可以进行求和运算 b、可以进行平方根运算 c、软件基于命令行实现 1.项目目录结构 E:projectgocalcproj ├─bin ├─pkg └─src ├[详细]
-
GOLANG实现超时对象检测的最好理解的方式
所属栏目:[大数据] 日期:2020-12-16 热度:177
原文:https://gocn.io/article/328 依赖于心跳的系统,都需要超时检测。比如P2P系统中客户端每隔120秒向数据服务器发送一次数据汇总,服务器就需要维护一个超时时间。比如一个UDP服务器,在和客户端之间创建Session之后,如果没有数据包,一般会有Ping包,[详细]
-
Golang:格式化字符串不打印?
所属栏目:[大数据] 日期:2020-12-16 热度:78
有没有一种简单的方法来格式化一个字符串在Go而不打印字符串? 我可以: bar := "bar"fmt.Printf("foo: %s",bar) 但我想要的格式化的字符串返回而不是打印,所以我可以进一步操作。 我也可以做类似: s := "foo: " + bar 但是当格式字符串很复杂时,这变得很[详细]
-
golang中的数组与C中数组的区别
所属栏目:[大数据] 日期:2020-12-16 热度:131
golang中的数组是这样说的: Arrays are values,not implicit pointers as in C. 1、数组做参数时,需要被检查长度. 2、变量名不等于数组开始指针! 3、不支持C中的*(ar + sizeof(int))方式的指针移动. 需要使用到unsafe包 4、如果p2array为指向数组的指针, *p[详细]
-
golang中解决tcp传输中的粘包问题
所属栏目:[大数据] 日期:2020-12-16 热度:142
golang中解决tcp传输中的粘包问题 Author: 岳东卫 Email: usher.yue@gmail.com 什么是粘包? 最近在写https://github.com/UsherYue/ActivedRouter (一个http/https反向代理服务) 的时候遇到了粘包问题, 如果有做过网络编程的小伙伴应该都知道粘包问题,举个例[详细]
-
golang中的数组与切片
所属栏目:[大数据] 日期:2020-12-16 热度:153
golang中,当用数组去初始化一个切片时,数组的地址即为slice[0],例子如下: package mainimport ("fmt""math/rand""net""os""time""unsafe")func main() {for {pcRecvMag()time.Sleep(time.Second)}}func pcRecvMag() {var buf [20]bytereadFromUDP(buf[0:[详细]
-
GOLANG使用嵌入结构实现接口
所属栏目:[大数据] 日期:2020-12-16 热度:183
原文:https://gocn.io/article/332 考虑一个Packet接口,一般会返回一个Header,例如: type PacketHeader struct { ID uint32 Timestamp uint64 } type Packet interface { encoding . BinaryMarshaler encoding . BinaryUnmarshaler Header () * PacketHe[详细]
-
GOLANG使用Context管理关联goroutine
所属栏目:[大数据] 日期:2020-12-16 热度:84
原文:https://gocn.io/article/333 一般一个业务很少不用到goroutine的,因为很多方法是需要等待的,例如 http.Server.ListenAndServe 这个就是等待的,除非关闭了Server或Listener,否则是不会返回的。除非是一个API服务器,否则肯定需要另外起goroutine发[详细]
-
golang websocket 模拟pc扫码登录
所属栏目:[大数据] 日期:2020-12-16 热度:187
之前写了一篇 微信第三方扫码登录抓包小记 ,正好最近看golang,于是面向google编程写了个服务端的程序。 github 地址 go-qrcode-login-mock 第一次写golang程序,用来学习的。 模拟PC浏览器二维码扫描登录的过程,手机APP端用 微信 模拟,简单起见,APP端只[详细]
