Go语言中文网 为您找到相关结果 1385

使用go语言和webview编写桌面应用

https://github.com/tenny1225/go-web-app 具体思路是使用http实现页面跳转,使用jsonrpc实现ui和go之间的数据通讯。 golang版本的webview使用的是github.com/zserge/webview这个库,自己封装了一套Page,实现页面之间的跳转。具体使用 package main import "time" func main() { StartWindow("golang html", 400, 400, true, func() { pager := NewPager(&MyPage{},&MyPageAction{}) pager.StartPage(0) }) } type MyPage struct { PageImpl...阅读全文

博文 2018-11-29 18:34:41 tenny1109

go-goroutine中的共享变量

自 : http://www.cnblogs.com/sevenyuan/archive/2013/04/18/3029388.html Happens Before 对于一个goroutine来说,虽然指令会被编译器乱序重排,但它其中变量的读, 写操作执行表现必须和从所写的代码得出的预期是一致的。但是在两个不同的goroutine对相同变量操作时, 可能因为指令重排导致不同的goroutine对变量的操作顺序的认识变得不一致。为了解决这种二义性问题,Go语言中引进一个happens before的概念,它用于描述对内存操作的先后顺序问题。如果事件e1 happens before 事件 e2,事件e2 happens after e1。如果,事件e1 does not happen bef...阅读全文

博文 2015-09-15 18:00:00 lmxmimihuhu

GoLang基础数据类型--->字典(map)详解

GoLang基础数据类型--->字典(map)详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 可能大家刚刚接触Golang的小伙伴都会跟我一样,这个map是干嘛的,是函数吗?学过python的小伙伴可能会想到map这个函数。其实它就是Golang中的字典。下面跟我一起看看它的特性吧。map 也就是 Python 中字典的概念,它的格式为“map[keyType]valueType”。 map 的读取和设置也类似 slice 一样,通过 key 来操作,只是 slice 的index 只能是`int`类型,而 map 多了很多类型,可以是 int ,可以是 string及所有完全定义了 == 与 != 操作的类型。 一.map的赋值方式 1.先的声明再初始化最后赋值 1...阅读全文

博文 2017-10-19 16:00:01 yinzhengjie

golang防缓存击穿利器--singleflight

缓存击穿     给缓存加一个过期时间,下次未命中缓存时再去从数据源获取结果写入新的缓存,这个是后端开发人员再熟悉不过的基操。本人之前在做直播平台活动业务的时候,当时带着这份再熟练不过的自信,把复杂的数据库链表语句写好,各种微服务之间调用捞数据最后算好的结果,丢进了缓存然后设了一个过期时间,当时噼里啪啦两下写完代码觉得稳如铁蛋,结果在活动快结束之前,数据库很友好的挂掉了。当时回去查看监控后发现,是在活动快结束前,大量用户都在疯狂的刷活动页,导致缓存过期的瞬间有大量未命中缓存的请求直接打到数据库上所导致的,所以这个经典的问题稍不注意还是害死人     防缓存击穿的方式有很多种,比如通过计划任务来跟新缓存使得从前端过来的所有请求都是从缓存读取等等。之前读过 groupCache的源码,发现里面有...阅读全文

博文 2019-03-11 19:34:45 薛薛薛

h5聊天室模板|仿微信聊天室html5

文链接:https://www.cnblogs.com/xiaoyan2017/p/9266179.html运用html5开发的仿微信聊天室实战项目weChatRoom,基于h5+css3+zepto+weui+wcPop+swiper等技术混合开发,整体采用flex布局模式,兼容适配各种手机屏幕,实现了消息、表情发送,动图gif,图片、视频预览,红包/打赏等功能。​// ...滚动聊天区底部 function wchat_ToBottom(){ //$(".wc__chatMsg-panel").animate({scrollTop: $("#J__chatMsgList").height()}, 0); $(".wc__slimscroll2").slimscroll({ scrollB...阅读全文

博文 2019-02-24 11:22:01 xiaoyan2015

golang channal中buf和for range一些用法

go的gocontinue用法实现了轻量级的线程,可以被大量创建。线程之间用channal通信,以下说说基本用法。 channal的buf c:=make(chan int ,3) 3就是设定的chanal的缓存量,缓存只意味着这个创建的channal可以同时存入3个数据,并不意味读channal时可以同时读出。 x:=<-c 读channal时仍然是以阻塞的方式一次一个地将数据读出。 当channal缓存中存在有效数据时,即使close掉channal,仍然可以读出buf里的数据。需要注意的是,从close掉的channal读数据时,channal是不阻塞的,当channal中的buf数据被读完时,仍然会以不阻塞的方式读出0值。 channal的for range c:=make(chan...阅读全文

博文 2015-12-21 16:00:01 iwbno1

Golang-btree包的主要方法和总结

B-tree(多路搜索树,并不是二叉的)是一种常见的数据结构。使用B-tree结构可以显著减少定位记录时所经历的中间过程,从而加快存取速度。按照翻译,B 通常认为是Balance的简称 本篇介绍google的btree使用, 地址:http://github.com/google/btree 树的结构必须实现排序的规则 import ( "github.com/google/btree" ) type MyTree struct { Age int Name string } func (m *MyTree) Less(item btree.Item) bool { return m.Age < (item.(*MyTree)).Age } 创建树 btree.New(degree int)...阅读全文

博文 2020-03-03 15:33:21 八叉树

江西信息化中心主任金俊平一行莅临数据宝参观考察

2017年7月20日,江西信息化中心主任金俊平一行莅临chinadatapay.com中国数据宝上海分公司参观考察。来访领导对公司发展历程、平台模式以及产品应用场景进行详细地咨询了解,金主任称赞数据宝产品具备高效性、全面性和创新性,并希望与数据宝携手合作,共同发展大数据产业。 ![1.jpg](http://studygolang.qiniudn.com/170731/0f11f58859d208d130418859448f74eb.jpg) 江西省信息中心成立于1987年,是由省发改委管理的副厅级全额拨款的事业单位,也是全省政务系统信息专家最集中、技术力量最强、信息装备最先进的信息中心。经省编办批复,先后于2011、2015年分别加挂“江西省电子政务网络管理中心”、“江西省信用...阅读全文

Golang之bytes.buffer

bytes.buffer是一个缓冲byte类型的缓冲器存放着都是byte Buffer 是 bytes 包中的一个 type Buffer struct{…} A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty buffer ready to use. (是一个变长的 buffer,具有 Read 和Write 方法。 Buffer 的 零值 是一个 空的 buffer,但是可以使用) Buffer 就像一个集装箱容器,可以存东西,取东西(存取数据) 创建 一个 Buffer (其实底层就是一个 []byte, 字节切片)...阅读全文

博文 2016-01-29 00:00:01 grassroots2011

Golang实现简单tcp服务器04 -- 服务器的粘包处理

服务器的粘包处理 什么是粘包 一个完成的消息可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和封包问题 TCP粘包和拆包产生的原因 应用程序写入数据的字节大小大于套接字发送缓冲区的大小 进行MSS大小的TCP分段。MSS是最大报文段长度的缩写。MSS是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。所以MSS并不是TCP报文段的最大长度,而是:MSS=TCP报文段长度-TCP首部长度 以太网的payload大于MTU进行IP分片。MTU指:一种通信协议的某一层上面所能通过的最大数据包大小。如果IP层有一个数据包要传,而且数据的长度比链路层的MTU大,那么IP层就会进行分片,把数据包分成托干片,让每一片都...阅读全文

博文 2015-06-02 23:00:16 victoriest

华为云 路由器的天坑

问题在华为云服务器上使用Golang直接监听UDP端口,外部将无法访问这些端口,因为华为云服务器的路由不会允许外部与这些UDP端口直接通信。即便在配置了安全组以后亦是如此。解决方案Golang 建立连接后,使用 conn.Write() 写入部分数据即可(无需指定目的地)。如此一来,华为云的路由器便能放行此 UDP 端口。问题猜测华为云路由器的 NAT 算法应该是华为自己魔改的。尽管外网 IP 对 服务器内网IP是 1对1 的,但路由器对外部的访问存在限制。需要像 IP限制锥形 NAT 一样向往外发送数据后才能正常使用...阅读全文

博文 2020-05-05 05:32:43 鹿沐浔

数据宝与天翼征信签署战略合作协议

2016年12月5日,数据宝ChinaDataPay.com与天翼征信有限公司签署《战略合作协议》。根据协议,双方秉承“致力于为广大客户提供更好的大数据信用评估和反欺诈服务”的宗旨,共同携手推进大数据征信领域的深度合作。数据宝公司将发挥其在“大数据淘宝”平台资源和创新优势,积极促进运营商征信产品在数据宝平台上的业务开展,共同为诚信社会的建设贡献一份力量。此次与天翼征信的战略合作,也是数据宝业务战略的进一步实施和践行。签约仪式上,数据宝董事长汤寒林与中国电信天翼征信总经理陈建立就双方未来合作业务进行了深入交流。 跨行业合作助力破除大数据征信壁垒 当前,依托于互联网、大数据、云计算技术的金融科技正盛行一时。大数据技术的突飞猛进,使得海量数据的采集与挖掘成为可能,促使国内开...阅读全文

Go channel

// xuhh_go_channel project main.go /* channel 1. channel 在读取数据的时候,如果此时通道内没有数据,则会阻塞。 在取数据的时候,如果此时通道内没有数据,则也会阻塞。 2. channel 在创建的时候会存在一个数据缓冲,如果通道内存入的数据超过缓冲,则就会崩溃。 range 在遍历 channel 的时候需要注意的问题: 1. range在遍历channel的时候,一直在运行,直到close(channel)的时候才会结束调用。 2. range会一直读取数据,如果没有数据,就会阻塞在那里。 len(channel):channel内未被读取的len cal(channel):channel的容量 select机制 : 1. 检查每个c...阅读全文

golang 支付宝SHA1withRSA加密

SHA1大家用的挺多,RSA不多但用的也有,但像支付宝这样要求 SHA1 + RSA的恐怕就没几个了,写起来实在痛苦。而且一搜一片,却没几个能跑起来的。 刚才有个人在QQ上加我,问之前在支付宝集成的帖子里的SHA1withRSA是咋解决的。说实话,不是专门研究加密的,鬼知道报的错是什么玩意,比如这个: signature, err := rsa.SignPKCS1v15(rand.Reader, this.privateKey, crypto.SHA1, hashed) //ParsePKCS8PrivateKey err asn1: structure error: tags don't match (16 vs {class:0 tag:2 length:129 isCompound:f...阅读全文

博文 2016-11-29 01:00:02 u012210379

go 实现session

文章转自https://blog.csdn.net/lzy_zhi_yuan/article/details/73127601go里没有官方的的session,所以才去封装了session管理器,具体步骤见代码注释,将在后面的文章进行讲解具体实战。//Session操作接口,不同存储方式的Sesion操作不同,实现也不同 type Session interface { Set(key, value interface{}) Get(key interface{}) interface{} Remove(key interface{}) error GetId() string } //session实现 type SessionFromMemory struct { sid string ...阅读全文

博文 2018-04-23 19:18:19 misasky

基于Golang的IP地址信息查询服务

工作中经常会有通过IP匹配用户信息的需求,如确定用户所在的地区(国家/省份/城市)、运营商、时区、经纬度等等。前一阵有个Golang开发的项目也有这样的需求,于是简单实现了一个包,最近忙里偷闲又包了一个支持HTTP和GRPC方式调用的服务,并开源在GitHub上了。本文主要介绍IP地址信息查询的实现细节和使用方式。 首先交代一下GitHub地址: IpQuery Golang Package:https://github.com/tabalt/ipquery IP地址信息查询服务:https://github.com/tabalt/ipqueryd 欢迎大家在项目中使用(已通过N亿日PV服务的考验),有任何问题或建议,请提交Issue反馈或Fork到自己名下修改后提交Pull Request...阅读全文

博文 2017-11-22 09:03:26 mickelfeng

求解Beego关联查询(一对多关系)实现

安照beego orm文档定义模型与设计数据库都未成功,求解…… 运行结果: ![QQ图片20171111090854.png](https://static.studygolang.com/171111/95a47e52efd44bf0c9b9b810f6fa6d51.png) User struct: ![QQ图片20171111091215.png](https://static.studygolang.com/171111/1c50ec404576914627f7391c187908ff.png) Role struct: ![QQ图片20171111091230.png](https://static.studygolang.com/171111/41bed...阅读全文

golang标准库中的encoding/hex包

1、golang中hex包是什么? 2、hex包给开发者提供了什么内容?以及怎么使用? 3、相关链接 一、golang中hex包是什么? hex包实现了16进制字符表示的编解码。 二、hex包给开发者提供了什么内容?以及怎么使用? 变量 var ErrLength = errors.new("encoding/hex: odd length hex string") 解码一个长度为奇数的切片时,将返回此错误 type InvalidByteError byte 描述一个hex编码字符串中的非法字符。 func (e InvalidByteError) Error() string 函数 1)func DecodeLen(x int) int 长度x的编码数据解码后的明文数据的长度 2)fun...阅读全文

go post json数据

go post json数据 代码 package main import ( "bytes" "encoding/json" "fmt" "io/ioutil" "net/http" ) const url = "http://xxxxxxxxxxxxxxxxxx" func postData() bool { data := make(map[string]string) data["username"] = "hequan" data["password"] = "password" b, _ := json.Marshal(data) resp, err := http.Post(url, "application/json", bytes.NewBuffer(b)) if err ...阅读全文

博文 2019-04-04 23:35:10 295631788

分布式游戏服务器引擎GoWorld

**GoWorld是一个使用Golang实现的可扩展的分布式游戏服务器引擎,并支持游戏逻辑的热更新。** ![image](http://goworldgs.com/static/goworld_arch.png) GoWorld架构图 一个GoWorld系统包括一个dispatcher进程、一个或者多个game进程以及一个或者多个gate进程。dispatcher负责game之间以及gate和game之间的消息转发,并对一些基础功能提供支持。Game进程负责Entity对象的管理和所有游戏逻辑的运行,Gate进程负责管理客户端连接,并将客户端请求通过dispatcher转发到game进程。Gate还需要负责对客户端数据进行压缩和加解密(尚未实现)。GoWorld可以通过增加更多的...阅读全文

开源项目 2017-07-29 01:00:04 网友

golang interface用法

接口是一个或多个方法签名的集合,任何类型的方法集中只要拥有与之对应的全部方法,就表示它"实现"了该接口无须在该类型上显式添加接口声明。 所谓对应方法,是指有相同名称、参数列表 (不包括参数名) 以及返回值。当然,该类型还可以有其他方法。(1)接口命名习惯以er结尾结构体。(2)接口只有方法签名,没有实现。(3)接口没有数据字段。(4)可在接口中嵌入其他接口。(5)类型可实现多个接口。 下面举个栗子:用例:一个人,他的有两种角色,在公司是程序猿,在家里是孩他爸。在公司当程序猿时就写bug,在家当爹时就洗尿布。则其接口和结构体的映射关系为: package main import "fmt" type CodeMonkey interface { codingEveryday() string ...阅读全文

博文 2014-10-04 19:27:27 Estone

golang笔记:unsupported driver -> Scan pair: -> *string

golang里,操作mysql数据库,使用查询语句的时候,一般的写法 rows, err := db.Query("SELECT name from table) if err != nil { return } for rows.Next() { var name string err = rows.Scan(&name) if err != nil { return } } 当查出来的字段有NULL的时候,就会报这样的错误unsupported driver -> Scan pair: -> *string 这又是由于Go语言对数据类型的严格限制。name的类型是string,所以只能接受string类型的值,而此处nil是为空的指针类型。最佳解决办法是——插入记录的时候不要...阅读全文

开源分布式监控系统 OWL-Go

OWL 是 TalkingData 公司推出的一款开源分布式监控系统 * Go 语言开发,部署维护简单 * 分布式,支持多机房 * 多维的数据模型,类 opentsdb * 支持多种报警算法,报警支持多条件组合、克隆 * 灵活的插件机制,支持任意语言编写,支持传参 * 丰富的报警渠道,邮件、微信、短信 * 原始数据永久存储 * 自带 Web 管理界面以及强大的自定义图表功能 **系统架构** ![image](https://static.oschina.net/uploads/space/2016/1219/125459_fwZh_2720166.png) **Demo** [http://54.223.127.87/](http://54.223.127.87/)...阅读全文

基于Go语言构建的万亿级流量大数据平台架构

党合萱 硕士毕业于西安电子科技大学,曾就职于阿里云存储部门,主要从事存储服务相关功能的设计与开发工作。于2016年加入七牛云,主要负责流式计算与离线计算服务pipeline的架构和开发工作。目前pipeline承载公司每天超过千亿、超过百TB的数据处理。 今天的分享主要围绕七牛在最近一年时间里面开发的大数据平台进行展开,目前我们的平台已经承载了公司核心业务的运营;关于我们的产品,主要会从一个场景展开进行介绍,当中包含了我们在设计过程中遇到的挑战以及解决方案。也欢迎大家基于这些问题和我们展开交流与讨论。 场景.产品 对于运维人员来说,在进行每日常规的线上运维时,日志当中的一天内访问量的波动、线上错误分布、其他业务指标这些数据对于运维人员来说并非是一个透明的过程,那么如何将这些东西做到可视化,或...阅读全文

博文 2017-09-21 09:35:12 NewTech观察圈

Go语言的文件操作:文件的读写,文件的新建打开和删除

# 建立与打开文件 // 新建文件可以通过如下两个方法: func Create(name string) (file *File, err Error) 根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0666的文件,返回的文件对象是可读写的。 func NewFile(fd uintptr, name string) *File 根据文件描述符创建相应的文件,返回一个文件对象 // 通过如下两个方法来打开文件: func Open(name string) (file *File, err Error) 该方法打开一个名称为name的文件,但是是只读方式,内部实现其实调用了OpenFile。 func OpenFile(name string, flag int, perm u...阅读全文

博文 2018-10-07 02:35:15 ck_god

Prometheus 系统监控方案 一

最近一直在折腾时序类型的数据库,经过一段时间项目应用,觉得十分不错。而Prometheus又是刚刚推出不久的开源方案,中文资料较少,所以打算写一系列应用的实践过程分享一下。 Prometheus 是什么? Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用Prometheus,社会也十分活跃,他们便将它独立成开源项目,并且有公司来运作。google SRE的书内也曾提到跟他们BorgMon监控系统相似的实现是Prometheus。现在最常见的Kubernetes容器管理系统中,通常会搭配Prometheus进行监控。 Prometheus 的优点 非常少的外部依赖,安装使用超简单 已经有非常多的系统集...阅读全文

Golang与Python的性能对比

Golang和Python的性能孰优孰劣,在开发者和最终用户中间总有着一些起争议的话题。一个互联网企业要提供好的服务,并且它能够迅速而高效地完成工作,这就是Golang与Python的问题出现的原因。每个IT企业的每一个方面都依赖于其技术备份、数据安全、入侵检测、VPN和存储等技术,这只是企业开发人员需要处理的几个问题中的一部分。鉴于这种情况,大多数企业更倾向于外包自己的IT服务,以便专注于自己最擅长的事情。更多go语言内容请关注:http://www.fastgolang.co...阅读全文

博文 2019-07-11 19:32:40 CC_ab48

golang解析json数据

golang官方包encoding/json包解析json数据太复杂,这里使用简单的json解析包simplejson。 包的获取:go get github.com/bitly/go-simplejson就可以了 package main import ( "fmt" "github.com/bitly/go-simplejson" "bytes" ) func main() { str := `{"name":"archmage","position":"beijing","data":[{"ip":1,"num":11},{"ip":2,"num":22}]}` buf :=bytes.NewBuffer([]byte(str)) js,_:=simplejson.NewFromRea...阅读全文

博文 2018-10-30 05:34:42 Nuko

go 关闭channel分析

背景 最近使用go开发后端服务,服务关闭需要保证channel中的数据都被读取完,理由很简单,在收到系统的中断信号后,系统需要做收尾工作,保证channel的数据都要被处理掉,然后才可以关闭系统。 后面我会给出方案,见示例代码,但在解决这个问题之前我们先了解下close channel的一些特性。 channel 关闭channel ch := make(chan bool) close(ch) close(ch) // 这样会panic的,channel不能close两次 向已经关闭的channel写数据 ch := make(chan string) close(ch) ch <- "good" // 会panic的 从已经关闭的channel读取数据 需要分两种情况: 无缓冲chann...阅读全文

博文 2017-03-02 13:00:08 tenfer_fan

Go:保留关键字及基本数据类型

1 命名规范 在Go中几乎所有的东西都是有名字或标识符的(类似于C家族语言),且它们是对大小写敏感的。相应的规则如下: 必须以字符开头(所有Unicode UTF-8中的字符 或 下划线“_”)后面可以跟0或多个字符或数字,如:x56, _x32等。不能以数字开头或系统保留关键字和操作符。如:1ab, case, a+b。下划线"_"本身在Go中是一个特殊的标识符,称为空标识符。可以代表任何其它的标识符,但是它对应的值会被忽略。所以仅能被作为占位符使用。 同时,在Go中也支持匿名,如匿名变量、自定类型和函数。 2 系统关键字或保留字 在Go中,为了简化代码编译过程中对代码的解析,其定义的保留关键字只有25个。详见如下: break default func interface select ...阅读全文

博文 2014-10-10 20:00:01 aaron_ye

MySQL Go驱动

MySQL基础见菜鸟教程; 本文参考了astaxie/build-web-application-with-golang. 创建数据库 编写test.sql source test.sql 文件 编写Go文件 test.go 内容如下: package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { db, err := sql.Open("mysql", "root:root@/test") //打开数据库test checkErr(err) stm, err := db.Prepare("DROP TABLE IF EXISTS userinfo;") //准备SQ...阅读全文

博文 2018-12-31 16:34:47 早安我的猫咪

靠谱聚合支付系统提供商,专业线上搭建系统

佩奇免签支付系统,目前采用收款模式,有代理系统,自己搭建一套系统来运营的话,可放给身边朋友,可以给别人开商户,增加盈利点;也可组建团队开发支付代理,增加盈利点。并且,我们都是统一更新,统一升级,都是免费给你升级,不收取任何费用。 免签支付优点:无论你是企业、个人,无论你有没有企业资质、网站有没有ICP备案,只需提供能正常使用的支付宝或微信账号即可接入支持各种支付场景,灵活易用满足丰富交易场景需求,为用户提供完美支付体验;移动支付将终端设备、互联网、应用提供商以及金融机构相融合;资金不中转,直接转入你自己的账号,资金及时到账,安全可靠,等等。 第四方支付是相对第三方而言的,作为对第三方支付平台服务的拓展。第三方支付介于银行和商户之间,而第四方支付是介于第三方支付和商户之间,没有支付许可牌照的限...阅读全文

博文 2019-03-22 18:34:42 qq3201809208

快速掌握阿里云 E-MapReduce

课程介绍 E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。 学习入口:[点击这里](http://click.aliyun.com/m/27900/) 课程目标 掌握E-MapReduce的用法 适合人群 大数据工程师 阿里云大学官网(阿里云大学 - 官方网站,云生态下的创新人才工场...阅读全文

数据保护伞—为MaxCompute平台数据安全保驾护航

摘要: 数据安全是大数据发展道路上的重要挑战之一,数据,作为企业的核心资产,80%以上的核心信息是以结构化数据存储,包含个人身份证号、银行账号、电话、客户数据、医疗、交易、薪资等极其重要又敏感的信息。一旦发生数据篡改、盗取、滥用等安全事件,将给企业带来经济和声誉上的双重打击,造成的后果将不堪设想。 近几年随着DT概念在国内持续普及,2016年中国大数据市场规模为168.0亿元,增速达到45%;预计2017-2020增速将保持在30%以上,中国信通院发布大数据发展调查报告(《中国大数据发展调查报告(2017年)》)中指出大部分企业均已意识到数据分析对企业发展的重要性。 59.2%的受访企业已经成立了数据分析相关部门。 35.1% 的受访企业已经应用了大数据,同时, 22.9%的企业计划将...阅读全文

go-sql-driver包 实现mysql不定字段查询

go-sql-driver包是一个第三方包 下载地址http://github.com/go-sql-driver/mysql 下面直接上代码 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func main() { //连接数据库 db, err := sql.Open("mysql", "root:@tcp(localhost:3306)/go?charset=utf8") if err != nil { fmt.Println("连接数据库失败", err.Error()) return } defer db.Close() //查询数据库 query, err := db...阅读全文

博文 2014-10-17 08:00:01 别人说我名字很长

golang bytes buffer代码剖析

//上数据结构,bytes Buffer type Buffer struct { buf []byte // byte切片 off int // 从&buf[off]地址读数据, 从&buf[len(buf)]地址写数据 runeBytes [utf8.UTFMax]byte // avoid allocation of slice on each WriteByte or Rune bootstrap [64]byte // memory to hold first slice; helps small buffers (Printf) avoid allocation. lastRead readOp // last read operation, so that Unread* ca...阅读全文

博文 2015-10-25 17:00:02 webyh

深入Go UDP编程

目录 [−] 一个简单的例子更复杂的例子等价的客户端和服务器Read和Write方法集的比较通用多播编程标准库多播编程广播任播参考文档 用户数据报协议(User Datagram Protocol,缩写为UDP),又称用户数据报文协议,是一个简单的面向数据报(package-oriented)的传输层协议,正式规范为RFC 768。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。UDP在IP数据报的头部仅仅加入了复用和数据校验。 由于缺乏可靠性且属于非连接导向协议,UDP应用一般必须允许一定量的丢包、出错和复制粘贴。但有些应用,比如TFTP,如果需要则必须在应用层增加根本的可靠机制。但是绝大多数UDP应...阅读全文

博文 2017-02-08 12:53:43 smallnest

golang 网络通信

title: golang 网络编程 golang 网络编程 go-shadowsocks是一个非常好的学习golang网络编程的例子。在本篇博文中重点阐述golang网络通信几个各种不同协议下服务端和客户端的实现。网络通信协议主要有以下两种外加一种增加的协议 golang tcp golang upd golang kcp:在upd上进行增强的协议,KCP 是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。 golang的一大优势就是多核、并行、网络编程。通过goroutine与channel可以很方便地协程,协程比线程更轻量级,占用资源更小,可以更好地适用与并行计算。 下面对这三种分别进行说明。 golang...阅读全文

博文 2017-07-15 04:06:26 bradyjoestar

Go 语言 bufio 包介绍

[原文链接](https://medium.com/golangspec/introduction-to-bufio-package-in-golang-ad7d1877f762) [bufio](https://golang.org/pkg/bufio/) 用来帮助处理 [I/O 缓存](https://www.quora.com/In-C-what-does-buffering-I-O-or-buffered-I-O-mean/answer/Robert-Love-1)。 我们将通过一些示例来熟悉其为我们提供的:Reader, Writer and Scanner 等一系列功能 ## bufio.Writer 多次进行小量的写操作会影响程序性能。每一次写操作最终都会体现为系统层调用,频繁...阅读全文

博文 2017-12-04 08:18:54 jliu666

GO语言学习:使用io.copyN实现网络文件传输

一. 首先先看一下io.copy的定义: func CopyN func CopyN(dst Writer, src Reader, n int64) (written int64, err error) CopyN copies n bytes (or until an error) from src to dst. It returns the number of bytes copied and the earliest error encountered while copying. On return, written == n if and only if err == nil. If dst implements the ReaderFrom interface, the co...阅读全文

博文 2015-10-08 18:00:00 phlong999

golang web程序开机自动启动,并隐藏cmd窗口

注意:本文中设计的方法,虽然能够隐藏控制台窗口,但并不是真正意义的"后台运行",此时,如果注销服务器,那么所有运行的golang网站服务程序都会终止,解决办法: 点击使用.net完美解决服务器注销后go的web服务停止的问题 如果一个服务器有10个golang的web,每一个都显示一个cmd窗口的话,会很难看,解决如下: 1)go build 你的web 生成一个exe文件 例如 我的项目叫 "myweb",那么我需要在我的项目根目录上面打开cmd,执行一条命令就可以了: go build myweb .就会生成一个myweb.exe文件 2)制作bat文件 通过bat文件启动该exe文件: 新建一个空bat文件,把上一步生成的myweb.exe的绝对路径添加到bat文件中,这样双击bat文...阅读全文

博文 2015-06-17 20:02:34 zhifeiya

p12转PEM供golang APNS使用

package main import ( "crypto/tls" "fmt" ) func main() { //LoadX509KeyPair读取并分析一个公用/私有密钥对从一对文件。该文件必须包含PEM编码数据。 _, err := tls.LoadX509KeyPair("./cert_dist.pem", "./key_dist2.pem") fmt.Println(err) //X509KeyPair解析一个公共/私有密钥对从一对PEM编码数据。 // _, err = tls.X509KeyPair(privateKey, publicKey) // fmt.Println(err) } //一、通过P12生成临时文件cert.pem // openssl pkcs12 -c...阅读全文

博文 2015-03-19 11:00:01 liaojie

Go 语言使用 TCP keepalive

如果你写过某些 TCP socket 代码,你可能会疑问:如果网线被拨掉或者远程主机崩溃了我的TCP连接会怎样? 简短的答案是:一点影响都没有。这种情况下连接的结束远程主机是不会发送FIN数据包的,并且本地系统不能检测连接是否已中断。所以需要作为程序员的你来解决这种情况。 --zxp翻译于 1 个月 前 0人顶 顶 翻译的不错哦! GO语言为你提供了解决这个问题的几种方法。首选的方法可能是 net.Conn 接口中的SetReadDeadline方法。假设你的连接在以一种特定的间隔来接收数据,你可以简单地把读取超时当作一个io.EOF错误并Close这个连接。很多现有的TCP协议都支持处理错误的这种方法,它们通过定义某种心跳机制或 service health 1,在端点间以特定间隔发送PI...阅读全文

博文 2014-10-09 16:00:00 --zxp, 0x0bject

Golang用body来get或post数据

用body来处理参数,能处理多层结构化参数,url不能传送多层结构数据 // 基础方法,这里多用于访问webapi,配合上json转换。此方法可以运行但是不算完善。 func httpDo(method string, url string, msg string) { fmt.Println("----", url, "----") client := &http.Client{} body := bytes.NewBuffer([]byte(msg)) req, err := http.NewRequest(method, url, body) if err != nil { // handle error } req.Header.Set("Content-Type", "applic...阅读全文

博文 2018-05-22 11:33:08 捍卫机密

在go中使用linked channels进行数据广播

在go中使用linked channels进行数据广播 原文在这里(需翻墙),为啥想要翻译这篇文章是因为在实际中也碰到过如此的问题,而该文章的解决方式很巧妙,希望对大家有用。 在go中channels是一个很强大的东西,但是在处理某些事情上面还是有局限的。其中之一就是一对多的通信。channels在多个writer,一个reader的模型下面工作的很好,但是却不能很容易的处理多个reader等待获取一个writer发送的数据的情况。 处理这样的情况,可能的一个go api原型如下: type Broadcaster … func NewBroadcaster() Broadcaster func (b Broadcaster) Write(v interface{}) func (b Bro...阅读全文

博文 2014-10-15 13:52:44 siddontang