-
Golang开发新手常犯的50个错误
所属栏目:[大数据] 日期:2020-12-16 热度:101
《50 Shades of Go: Traps,Gotchas,and Common Mistakes for New Golang Devs》 原文地址:http://devs.cloudimmunity.com/gotchas-and-common-mistakes-in-go-golang/index.html 一、初级 1、不允许左大括号单独一行 2、不允许出现未使用的变量 3、不允许出[详细]
-
【Go】为什么 Go 语言把类型声明放在后面?
所属栏目:[大数据] 日期:2020-12-16 热度:192
关于类型,官网上有一段仔细地介绍了一下函数指针的部分,现在的设计比起 C 的语法,清晰很多。 也就是说,类型放在后面是为了更加清晰易懂。Rob Pike 曾经在 Go 官方博客解释过这个问题(查看原文: Go’s Declaration Syntax ),简略翻译如下(水平有限翻[详细]
-
golang context.WithTimeout 超时处理
所属栏目:[大数据] 日期:2020-12-16 热度:96
span style="font-size:18px;color:#3333ff;"package mainimport ( "golang.org/x/net/context" "log" "math/rand" "time")func test(is_first *bool,prev_map *map[string]string) { rand.Seed(int64(time.Now().Nanosecond())) ch := make(chan bool) ctx,[详细]
-
关于golang的协程并行的控制与示例程序
所属栏目:[大数据] 日期:2020-12-16 热度:137
首先明确一个观点并行 并发区别: 并行是指程序的运行状态,要有两个线程正在执行才能算是Parallelism;并发指程序的逻辑结构,Concurrency则只要有两个以上线程还在执行过程中即可。简单地说,Parallelism要在多核或者多处理器情况下才能做到,而Concurrenc[详细]
-
Golang实现通过微信接收告警消息
所属栏目:[大数据] 日期:2020-12-16 热度:76
首先需要注册微信企业公众号,选团队的可以不使用认证 如图进入公众平台 选择设置.里面有CorpID 和 SecretID 这个发送的时候需要用到. 下面就是使用提供的API 开始发送信息了.具体自己可以看开发者中心里面的文档. package main import ( "bufio" "bytes"[详细]
-
Go语言并发模型:以并行处理MD5为例
所属栏目:[大数据] 日期:2020-12-16 热度:116
简介 Go语言的并发原语允许开发者以类似于 Unix Pipe 的方式构建数据流水线 (data pipelines),数据流水线能够高效地利用 I/O和多核 CPU 的优势。 本文要讲的就是一些使用流水线的一些例子,流水线的错误处理也是本文的重点。 阅读建议 本文是"Go语言并发模[详细]
-
golang的反射机制
所属栏目:[大数据] 日期:2020-12-16 热度:170
go反射 什么是反射?使用反射可以实现什么功能? 反射提供了一种可以操作任意类型数据结构的能力。通过反射你可以实现对任意类型的深度复制,可以对任意类型执行自定义的操作。另外由于golang可以给结构体定义tag熟悉,结合反射,于是就可以实现结构体与数据[详细]
-
03.1跟雨痕看go源码- go routine(未完待续)
所属栏目:[大数据] 日期:2020-12-16 热度:139
1.概述 golang本质就是 GPM 三个实体实现的调度。 G对应每个任务,P对应每个processor概念(就是会包含一堆的G,比如先执行G1,在执行G2)M对应系统线程,M(还包含系统栈之类的概念)绑定一个P之后就开始逐个运行P里面的G。 最基本的流程图就是雨痕给的 后[详细]
-
golang cookie与session
所属栏目:[大数据] 日期:2020-12-16 热度:164
main // main project main.gopackage mainimport ("fmt""html/template""log""net/http""strings""session"_"memory""time")func sayHelloName(w http.ResponseWriter,r *http.Request) {r.ParseForm()fmt.Println(r.Form)fmt.Println(r.URL.Path)fmt.Print[详细]
-
golang 中的字符类型
所属栏目:[大数据] 日期:2020-12-16 热度:185
golang 把字符类型单独分离出来,并且使用了不同的语法: var char = '这' 而用 fmt.Printf("%T",char) 查看其类型,竟然是 int32 这让人奇怪,通常字符组成了字符串,字符串如果只有一个字符长度的话,应当就是字符. 但 golang 的做法改变了这种通常的观点: 字符[详细]
-
在golang中如何快速找到一个interface被使用的地方?
所属栏目:[大数据] 日期:2020-12-16 热度:85
golang中存在以下两个特性: * 可以在初始化变量时不显示的指定其具体类型 * 某个结构只要实现了某个interface规定的所有接口,那么这个结构就可以被转换为这个interface。interface的定义与结构的定义可以在不同的包中 这样就造成了对于大型工程来说,想要[详细]
-
golang微信公众平台支付错误 chooseWxPay:fail
所属栏目:[大数据] 日期:2020-12-16 热度:199
上次的的血泪教训是4个小时,这次是2天,当时的情况是这样的: config ok,各提起支付的参数获取正常,在微信支付接口签名校验工具的 校对结果完全一致 ,但就是报chooseWxPay:fail,同事的ios手机上报参数错误,但是校验工具告诉我没错。 翻遍了google前6页的[详细]
-
Golang MongoDB 驱动 mgo 的若干问题
所属栏目:[大数据] 日期:2020-12-16 热度:62
mgo是MongoDB的 Golang 驱动。 连接池 我们通过Dial函数创建一个新的 session: session,err := mgo.Dial(url) 创建的 session 能够和 MongoDB 集群中的所有服务器通讯。需要注意的是,对于一个集群只需要调用一次 Dial,通过此 Dial 返回的 session 的New和[详细]
-
Golang 之 工程结构
所属栏目:[大数据] 日期:2020-12-16 热度:85
综述 典型地,Go 将所有 Go 代码都存放到单一的 workspace 中(存放在单一的一个目录中). 一个 workspace 包含多个版本控制仓库(version control repositories,例如 Git),即一个 workspace 包含多个 go 工程. 每个版本控制仓库(工程) 包含一个或多个包 一个包[详细]
-
Golang1.7闲来无事写了一个基于Gob的tcp通讯用的包
所属栏目:[大数据] 日期:2020-12-16 热度:185
package gobconn import ( "encoding/gob" "errors" "net" "reflect" "sync" "unsafe" ) type message struct { Type string value reflect.Value} func (self *message) Recovery() { putPointer(self.value) putMsg(self)} func (self *message) Interface[详细]
-
Go语言的接口
所属栏目:[大数据] 日期:2020-12-16 热度:161
Golang的接口定义十分灵活,使用也很方便,可以很轻松的编码而不必考虑各种兼容性和外部藕合,因为只要我们实现了某个接口中定义的那个方法,也就是说方法签名一致,那么就可以认为实现了这个接口的方法,这个时候只要我们对方法的Receiver做一致性处理就好[详细]
-
Go语言并发模型:使用 context
所属栏目:[大数据] 日期:2020-12-16 热度:175
简介 在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信[详细]
-
golang http server探究(上)
所属栏目:[大数据] 日期:2020-12-16 热度:178
在golang当中启动一个http服务非常简单,比如: http.HandFunc("/",func(w http.RequestWriter,r *http.Request){ io.WriteString(w,"hello world!")})http.ListenAndServer(":9090") //outprint hello world! 为什么 访问 localhost:9090 就能打印出 Hello[详细]
-
golang中DES/ECB/PKCS5Padding的实现
所属栏目:[大数据] 日期:2020-12-16 热度:87
场景:google认为DES/ECB/PKCS5Padding ECB加密安全性低,故没有对方开放.但是我们以前的工程使用的DES/ECB/PKCS5Padding算法,并且已经入库了,所以只能自己实现该算法 import ( "encoding/base64" "bytes" "encoding/binary" "crypto/des" "errors" "log" )[详细]
-
golang和java的byte数组相互转换
所属栏目:[大数据] 日期:2020-12-16 热度:70
golang和java中byte取值范围不一样 o(╯□╰)o,这里是个坑 golang定义如下 // byte is an alias for uint8 and is equivalent to uint8 in all ways. It is // used,by convention,to distinguish byte values from 8-bit unsigned // integer values. type[详细]
-
golang 工程引入包。
所属栏目:[大数据] 日期:2020-12-16 热度:190
场景描述,博主golang新手一枚,有java编程背景,以前都是一个go文件写完全部的代码,这次用package分下包,用idea 新建了工程,import的时候按java的方式试了试,总是报错。。。 解决方案:把工程的路径添加到gopath。[详细]
-
golang-goroutine与channel:高效的channel
所属栏目:[大数据] 日期:2020-12-16 热度:103
golang有两个非常大的特性,那就是goruntime与channel,这两个特性直接将开发人员从并发和线程同步中解放了出来,使高并发和线程同步之间代码的编写变得异常简单,并且占用资源少,同步传输效率高。 资源占用方面,goroutine 会从4096字节的初始栈内存占用开[详细]
-
golang http server 探究(下)
所属栏目:[大数据] 日期:2020-12-16 热度:184
在上一篇里面我们通过: func main() { http.HandleFunc("/hello",func(w http.ResponseWriter,r *http.Request) { io.WriteString(w,"hello") }) http.ListenAndServe(":9010",nil)} 分析了 http.handleFunc 的路由调用之间的关系。这次。我们分析一下 http[详细]
-
golang: 把sql结果集以json格式输出
所属栏目:[大数据] 日期:2020-12-16 热度:133
代码出处:http://stackoverflow.com/questions/19991541/dumping-mysql-tables-to-json-with-golang func getJSON(sqlString string) (string,error) {stmt,err := db.Prepare(sqlString)if err != nil {return nil,err}defer stmt.Close()rows,err := stmt[详细]
-
golang包引入
所属栏目:[大数据] 日期:2020-12-16 热度:111
昨天一个bug调了n久,通过err == base.ErrNotFound 判断mongodb是否拿到数据,结果调试发现类型啥的都对但就是条件判断不正确 最后发现是因为引到另外一个base.ErrNotFound类型了,而且还是同名的,定义也一样。。。 是通过vscode的自动引包的,所以就忽略了[详细]
