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

golang判断slice中是否存在某个item

之前在项目中需要判断某个slice中是否包含某个元素,当时自己的做法是遍历slice中的每个元素,直到找到了该元素,否则返回false。 simple.pic 这种做法是最容易想到,也是最简单的。但是存在一个问题:就是只能对一种数据类型判断,比如上面代码中的int、[]int,如果需要判断其它类型,需要写一个同样的函数,只是参数类型不一样,这样的代码很明显,可用性太低。后来发现可以用反射规避这个问题,利用reflect包中的TypeOf()、ValueOf()和DeepEqual()接口,接口说明请参考文档。代码如下: reflect.pic 瞬间不用再为不同数据类型需要写不同函数而心烦了!注:参考blog,https://wxnacy.com/2018/11/20/go-in-array/...阅读全文

博文 2019-03-06 11:34:45 心中的日月Go

Golang数据库操作

Golang支持DB操作位于database包下,支持基本CRUD操作、事务和Prepared Statement,本文以MySQL为例。 MySQL驱动安装 使用数据库之前,必须安装相关MySQL数据驱动[1],如果未安装驱动或者没有引入驱动库会报以下错误: failed to open database: sql: unknown driver "mysql" (forgotten import?) 安装golang mysql driver go get github.com/go-sql-driver/mysql 代码中还需注册数据库驱动,通过引入空白倒入[2]mysql包来完成 import("database/sql"// 引入数据库驱动注册及初始化_ "github.com/g...阅读全文

博文 2015-06-17 20:01:42 CoProphet

HTTP API 网关 API-Gateway

Gateway是一个使用go实现的基于HTTP的API 网关。 **特性:** * API 聚合 * 流控 * 熔断 * 负载均衡 * 健康检查 * 监控 * 消息路由 * 后端管理WebUI **能做什么:** * 规划更友好的URL给调用者。 * 聚合多个API的结果返回给API调用者,利于移动端,后端可以实现原子接口。 * 保护后端API服务不会被突发异常流量压垮。 * 提供熔断机制,使得后端API Server具备自我恢复能力。 * 借助消息路由能力,实现灰度发布,AB测试...阅读全文

Go学习笔记之基础数据类型

1 整数 在 Go 语言中,如果不加特殊前缀,都是10进制表示,例如:“100” 整数可以直接用指数形式,例如:“1E9”,意思是 1 * (10^9),1 乘以 10 的 9 次方 整数的加减法用 + 和 - 号,乘法用 * 号,除法用 / 号, 得到的商是整数,例如 5 / 2 = 2,而 % 号是求余(取模), 例如 5 % 2 = 1 在 Go语言中,整数类型分为带符号整型和不带符号整型,接着又分别按照长度各自划分为4个类型。 带符号整型 int8 int16 int32 int64 不带符号整型 uint8 uint16 uint32 uint 64 除此之外还有默认类型 int 和 uint,目前都是32位,未来可能会变成64位 还有2个特殊的整型别名 ,和字符串很相关,分别是:...阅读全文

博文 2014-10-12 21:00:11 hnxxwyq

Go语言中怎样判断数据类型_不懂的木匠_新浪博客

要判断数据类型,可以用Go的空接口: 建一个函数t 设置参数i 的类型为空接口,空接口可以接受任何数据类型 func t(i interface{}) { //函数t有一个参数i switch i.(type) { //多选语句switch case string: //是字符时做的事情 case int: //是整数时做的事情 } return } i.(type)只能在switch中使用 这函数没有返回值,你可以自己加入 ---------------------------------------------------------------------------- 还可以用反射: package main import ( "fmt" "reflect" ) func main(...阅读全文

博文 2015-09-22 03:00:01 ftm-datablogs

使用Go 语言开发必备的5大开源工具

开源最前线(ID:OpenSourceTop)编译链接:https://jaxenter.com/golang-open-source-tools-154472.html前不久,jaxenter发布了2018年最热门的十大技能技术其中,Go语言跻身前十,成2018年最受欢迎的技能之一。近日,jaxenter又从GitHub上精选了一些最好Golang工具,希望可以为喜欢用Go编程的开发者提供帮助,一起来看一下都有哪些工具上榜吧1、Go Reviverevive 是一个 Go 语言的代码质量检测工具(Linter for Go),具有快速、可配置、可扩展、灵活和美观等特性,可作为 golint 的替代方案。虽然 golint 很受欢迎,但是 revive 提供了更多新功能,值得你去花时间研究,...阅读全文

博文 2019-04-25 19:26:02 开源最前线

golang对象序列化和反序列化

模拟测试1,000, 000条数据 每条10个字节 也就是10M不到的 数据(高度结构化的数据) 过程 1.对象序列化为 byte 2.byte反序为对象 3.gzip压缩byte 测试语言go测试方案: raw byte,json ,bson, msgpack (protostuff需要先做对象配置文件,比较麻烦,通常认为和msgpack性能相当 )结果:msgpack 胜出 大小 gzip压缩后大小 对象到byte耗时 byte到对象耗时 raw 10000000 6573252(65%) 未测试 未测试 json 47515988 7919511 (17%) 3248ms 5280ms bson 49888910 9506965 (19%) 3863ms 6235ms msgpack ...阅读全文

博文 2014-10-04 19:27:16 咖啡伴侣

如何基于Go搭建一个大数据平台

大家下午好!我是来自七牛云大数据团队的党合萱。今天向大家介绍一下我们是如何基于Go搭建大数据平台的。七牛的大数据的产品——Pandora首先介绍一下七牛的大数据的产品——Pandora,我们的目的是提供简单、高效和开放的大数据平台。图 1 是我们的工作流,提供实时计算和离线计算。我们的数据流实时进来之后可以到下游的实时数据服务,最常见的场景是提供日志搜索和机器性能监控,就是看到的仪表盘(图2),还有就是基于 spark 做一些实时数据分析。 图1图 2图 3图 4 是整个Pandora业务上的架构图。数据打进系统之后先落地到消息队列,落地之后有一个计算任务,数据经过计算之后还可以再次落地到消息队列。这个过程很灵活,比如可以选择最左边的一条线把数据直接倒出到下游的系统,图1上的示例是一个HTT...阅读全文

博文 2017-10-18 01:15:33 党合萱

区块链数字货币承兑商支付系统开发

区块链数字货币承兑商支付系统开发 数字货币承兑系统怎样的? 入金简述:加密支付系统运用了类似于支付宝的担保交易机制,结合独有的点对点传输技术、实时清算引擎、智能数字钱包、极高的网络平安体系,跨交易所最优价格兑换引擎等区块链技术。终端客户只需在入金界面设置好充值金额,向USDT承兑商支付人民**//币,即可自动完成数字货币的购买、充值、交割、双向承兑等所有操作,五分钟之内把数字货币胜利支付和清算至平台商户后台,完成客户入金操作。 同样的原理,终端客户出金,提交出金申请确认后,系统将自动把相应数量的数字货币折算成人民币,由USDT承兑商结算至客户绑定银行卡。客户入金与出金均通过数字货币承兑商进行结算,与平台没有直接的资金往来。整个支付交易过程简化为:基于区块链技术+预先冻结锁定+人工审核(也可以...阅读全文

博文 2019-08-22 17:55:55 d13826553501

golang ioutil.WriteFile函数perm参数的用法

golang ioutil.WriteFile函数perm参数的用法 ioutil.WriteFile(..., perm os.FileMode) 刚开始接触golang的文件API的时候,总是纳闷为什么在创建文件的时候需要显示的指定文件的perm属性,难道不能从系统的umask里面获取吗? 实际上ioutil.WriteFile在创建新文件时,并不是直接使用参数perm的值,而是要和umask的值做合并的。把函数参数的值合并到当前umask的值,才是最终创建出来文件的perm属性。 umask的含义 某位是1时,则把这位的perm属性关闭(disable) 某位是0时,则把这位的perm属性打开(enable) owner group other 0 - rwx - rwx - rwx ...阅读全文

博文 2019-04-02 12:34:39 CodingCode

golang开发目录结构

在实际的项目中发现大家的目录结构都比较凌乱,基本每个人都有每个人的风格,一个项目在不断地变大,一些新的文件或目录又不断地被添加进来,从这里面去找到自己需要的信息的成本越来越高,一个统一的通用的目录结构非常有必要。 以下内容来自于github上的这个项目(https://github.com/golang-sta...) /cmd main函数文件(比如 /cmd/myapp.go)目录,这个目录下面,每个文件在编译之后都会生成一个可执行的文件。 不要把很多的代码放到这个目录下面,这里面的代码尽可能简单。 /internal 应用程序的封装的代码,某个应用私有的代码放到 /internal/myapp/ 目录下,多个应用通用的公共的代码,放到 /internal/common 之类的目录。 /...阅读全文

博文 2018-01-22 00:34:36 hatlonely

如何用Go打造亿级实时分布式出行平台|文末福利

前言Grab是东南亚最大的出行平台,业务覆盖东南亚7个国家39个城市,APP下载量高达3600000次。随着业务量的持续增长,为了解决系统性能瓶颈,打造一套高可用的系统架构,Grab 从最开始的 rails、nodejs 到完全转向 Go。除了全部的后台服务,每天支撑亿万级数据处理的流式数据系统也是基于 Go 打造的。本文来自 Grab 高级工程师高超在 Gopher China 2017大会上的精彩分享,以下是对他演讲内容的整理。Grab是一家东南亚出行平台,致力于解决东南亚人民的出行问题。Grab 的主要市场是东南亚,我们也没有进军中国市场的打算,我们和滴滴是战略合作伙伴的关系。Grab 成立于2011年,目前在东南亚7个国家都有运营,覆盖了39 个城市。目前有710000位司机,360...阅读全文

博文 2017-08-17 15:27:01 高超

Go test 少为人知的特性

大多数的 Go 程序员都知道和喜欢用 `go test`,这个测试工具来自于 Go 官方的 `gc` 工具链。(想要执行测试代码)这个命令可能是最简单的了,而且还能做得很漂亮。 大家都知道,运行 `go test` 命令将执行当前目录下的包的测试代码,它会寻找 `*_test.go` 文件,并在这些文件中,寻找符合 `TestXxx(*testing.T){}` 命名的函数和参数(即,接收 `*testing.T` 参数的函数,命名为 `TestXxx`,`Xxx` 可以是任何不以小写字符开头的名字)。这个测试代码不会影响正常的编译过程,只在执行 `go test` 时被使用。 但这里还有很多隐藏的东西。 ## 黑盒测试包(The black box test package) 通常情况下,...阅读全文

博文 2018-03-14 17:31:50 gogeof

一人千面:谈谈Go语言中的type

世界是复杂的。一个人、一个事物可以有多样的特性,而多个人多个事物又可以表现出一致的特性;从微观角度说,即具体到个体时,要求这个个体是多功能的多样性的,能够完成越多的功能具有越多的特性越好。比如一个人可以同时具有贤妻、慈母、严师和路人甲的身份,比如一个数字可以表示年龄、高度、分数等。从宏观角度说,从管理复杂性的角度出发,又要求许多的个体具有一致性以便进行统一处理以降低管理成本,比如各种机动车都可以“驾驶”,各种食物都可以“食用”,各种书写工具都可以“写”。换而言之:微观上一人千面;宏观上千人一面。 编程本质上是为了解决人类的问题满足人类的需要,所以需要把现实世界映射到编程语言里,即在编程语言中建立对应的模型。在Go语言里,提供了很好的机制来建立这种模型,也就是type和interface。ty...阅读全文

源中瑞区块链C2C承兑支付系统搭建

源中瑞区块链C2C承兑支付系统搭建 区块链支付系统有用户和商户两种版本。 用户:是对为数币资产有一定了解的普通消费者使用,除了管理数字资产外,通过对接合作的线上或者线下商户,直接可以用钱包进行支付。 商户:商家版主要是为加盟运营平台的商户提供结算管理,商户可以是线上商城或者线下实体店。 源中瑞科技拥有区块链技术核心研发工程师团队,区块链项目技术顾问微ruiec1688,区块链技术领域技术专家以及参与多年金融交易系统的研发工程师。在保障区块链系统的安全和稳定技术方面有大量经验。 区块链承兑支付如何解决行业痛点? 1.“币走通道,钱走线下”新模式,平台、商户不直接接触法币 2.以承兑商来做收款方,可实现资金分流处理解决入金问题? 3.承兑商采用账户轮询,可实现即时到账,T+0结算 4.数字资产作...阅读全文

golang中timer定时器实现原理

一般我们导入import ("time")包,然后调用time.NewTicker(1 * time.Second) 实现一个定时器: func timer1() { timer1 := time.NewTicker(1 * time.Second) for { select { case <-timer1.C: xxx() //执行我们想要的操作 } } } 再看看timer包中NewTicker的具体实现: func NewTicker(d Duration) *Ticker { if d <= 0 { panic(errors.New("non-positive interval for NewTicker")) } // Give the channel a 1-element ti...阅读全文

博文 2015-07-28 15:00:01 webyh

野子科技 当AI数据服务走进中场战事

野子电竞数据官网改版https://www.xxe.io/ 全新登场毫无疑问,数据量的飙升是AI产业爆发的原因之一。很快我们可以发现,将数据采集、整理、清洗、标注再输送给AI企业用作模型训练,已经成为了一条运行流畅的产业链。 很长一段时间以来,数据服务都处于一种粗放原始的状态之中,甚至出现了一种“数据农场”的说法:数据服务从业者们从各种公开数据集或移动互联网产品中获取数据,以几乎零门槛的形式聘请大量廉价劳动力进行简单的清洗标注工作,例如勾选出一张照片中哪里是天空哪里是大地。最后再将这些粗糙处理过的数据一股脑地投入神经网络的黑箱之中。 但现如今,我们已经看到这一现状正在发生变化,AI企业对于数据的应用需求逐渐开始分化,以往一味粗放的处理模式已经不能满足他们的需求,也因此搅动了AI数据服务市场,...阅读全文

博文 2019-09-12 16:32:51 待你幼稚完

beego关于session的问题

我在自己的网站中使用的是简单的:登陆时setsession,使用时getsession,在退出登陆时deletesession。在电脑上使用没有问题,但我同时在手机上测试的,手机上set,get都没问题,但delete就不行了,怎么都退不出登陆状态,重启手机浏览器都不行,删除cookie后才可以退出登陆,这是什么原因,deletesession操作时应该是有删除cookie处理的,是不是手机浏览器不支持外部的删除cookie操作?再问一句,好像手机浏览器不支持301跳转!这是什么原因。电脑用的是firefox浏览器,手机用的是安卓uc浏览器...阅读全文

golang调用dll

//调用方式 func WindowVersion1() { h, err := syscall.LoadLibrary("kernel32.dll") if err != nil { fmt.Printf("Error: %s\n", err) return } defer syscall.FreeLibrary(h) proc, err := syscall.GetProcAddress(h, "GetVersion") if err != nil { fmt.Printf("Error: %s\n", err) return } r, _, _ := syscall.Syscall(uintptr(proc), 0, 0, 0, 0) major := byte(r) minor :=...阅读全文

博文 2014-10-04 19:27:11 陈好

golang 实现tcp转发代理

package main import ( "flag" "fmt" "io" "net" "os" "strings" "sync" ) var lock sync.Mutex var trueList []string var ip string var list string func main() { flag.StringVar(&ip, "l", ":9897", "-l=0.0.0.0:9897 指定服务监听的端口") flag.StringVar(&list, "d", "127.0.0.1:1789,127.0.0.1:1788", "-d=127.0.0.1:1789,127.0.0.1:1788 指定后端的IP和端口,多个用','隔开") flag.Parse() tr...阅读全文

博文 2016-06-08 20:00:00 fyxichen

golang实践-如何实现高性能的定时任务管理器

前段时间,因为业务需要,实现了单协程、单timer的多定时任务管理器,其特点在于: 1、能够添加一次性、重复性任务,并能在其执行前撤销或频繁更改。 2、支持同一时间点,多个任务提醒。 3、适用于中等密度,大跨度的单次、多次定时任务。 4、支持10万次/秒的定时任务执行、提醒、撤销或添加操作,平均延迟10微秒内 5、支持注册任务的函数调用,及事件通知。 代码比较简单,也分享到github,有兴趣的可以看看:定时器源代码。目前版本还处于维护阶段,接口可能会有点变化,或许还会根据我们的业务调整增加第三方数据的支持,还请理解。 问题背景 在业务中,我们经常需要基于定时任务来触发来实现各种功能。比如TTL会话管理、锁、定时任务(闹钟)或更复杂的状态切换等等。 由于go语言协程非常轻,很容易开启多个并发...阅读全文

博文 2017-03-03 06:00:20 qq_26981997

Golang之单链表实现

一.单链表基本概念单链表是一种顺序存储的结构。 有一个头结点,没有值域,只有连域,专门存放第一个结点的地址。 有一个尾结点,有值域,也有链域,链域值始终为NULL。 所以,在单链表中为找第i个结点或数据元素,必须先找到第i - 1 结点或数据元素,而且必须知道头结点,否者整个链表无法访问。关于链表的概念,此处不细讲了,具体的内容,大家可以自行查找相关数据结构资料.本文主要通过Golang实现链表的几种常见操作:判断是否为空的单链表单链表的长度从头部添加元素从尾部添加元素在指定位置添加元素删除指定元素删除指定位置的元素查看是否包含某个元素遍历所有元素二.实现代码以及代码注释1. 定义结构体package linkedList import "fmt" type Object interface...阅读全文

博文 2018-07-25 13:35:54 暗黑魔君

分布式缓存version_cache

# version_cache version_cache是一个分布式一致性缓存解决方案。 原理:job 将数据打包成版本到redis,实例将存在redis的版本load到本地内存并计算最新版本的生效时间,使所有实例的缓存在同一时间生效来达到所有实例数据的一致。 实用场景:数据量少、非及时生效数据、高并发强一致的场景。如:配置服务,门店服务等 优点: 1. 轻松实现水平扩展,实现千万并发的服务不是梦 2. 数据强一至性,不论启动多少实例,同一时间的数据绝对是一致的(服务器时间一致情况下) 3. 使用简单,实现数据生成接口后就可以像使用缓存一样方便,轻松实现高性能服务 缺点: 1. 数据按版本生效,变更的数据会延迟生效(原则上数据量越小处理越快) 2. 不适...阅读全文

开源项目 2020-06-30 09:15:02

golang 开发gui,还真有gui的框架,就是做个简单的行

1,关于gui golang 还真的有gui的开发框架。在mac上面好像比较简单。直接用就好。 不知道在其他平台上面咋样。 github项目地址: https://github.com/andlabs/ui/wiki/Getting-Started 起重核心还是使用了:https://github.com/andlabs/libui 在github上面加星的还是挺多的。非常的活跃的项目。 doc文档: https://godoc.org/github.com/andlabs/ui 其他的想好想也没有啥了。感觉上wxWidgets应该也是跨平台的。 https://github.com/dontpanic92/wxGo 也有一个哥们做的封装。 但是看了下加星的比较少呢。还是用andlabs/u...阅读全文

博文 2017-07-12 10:27:36 freewebsys

gorm关联查询的坑

背景:最近在学习 golang,尝试将之前的PHP项目用 go改写一下。涉及的表模型如下三个: // 文章 type Topics struct { Id int `gorm:"primary_key"` Title string `gorm:"not null"` Body string `gorm:"not null"` UserId int `gorm:"not null"` CategoryId int `gorm:"not null"` ReplyCount int ViewCount int LastReplyUserId int Order int Excerpt string Slug string Status int `gorm:"default:1"` CreatedA...阅读全文

博文 2018-09-13 17:34:47 AuroraLZDF

golang使用priority queue实现优先级队列

我们知道类似优先级队列是使用heap堆栈来实现的。 优先级队列的用途我就不多说了,一般是用来做任务权重分配的。 下面priority_queue优先级库是在github.com找到的。 看了下他的源代码实现,得知他不是线程安全的。 如果要实现数据的线程安全,需要用sync lock实现全局锁,保证数据的原子性。 该文章写的有些乱,欢迎来喷 ! 另外文章后续不断更新中,请到原文地址查看更新。 http://xiaorui.cc/?p=2929 Python #xiaorui.cc package main import ( "fmt" "github.com/gansidui/priority_queue" ) type Node struct { priority int value str...阅读全文

博文 2017-04-04 19:27:17 rfyiamcool

基于golang gin框架的单元测试

在用Gin框架编写了一个web server之后,我们如果需要测试handlers接口函数的话,主要可以采用两种方式来进行。 第一种是部署web server,然后通过浏览器或其他http请求模拟工具来手动模拟真实的http请求,发送http请求之后,解析返回的响应,查看响应是否符合预期;这种做法比较麻烦,而且测试结果不太可靠。 第二种是使用httptest结合testing来实现针对handlers接口函数的单元测试。 下面以对四个接口做相应的单元测试为例,分享基于Gin的单元测试的一些方法: 接口名称 请求地址 请求类型 响应数据类型 响应数据 OnGetStringRequest /getString get string success OnPracticeRequest /prac...阅读全文

博文 2017-12-05 08:03:06 Valiben

时序数据库InfluxDB使用详解

InfluxDB是一个开源的时序数据库,使用GO语言开发,特别适合用于处理和分析资源监控数据这种时序相关数据。而InfluxDB自带的各种特殊函数如求标准差,随机取样数据,统计数据变化比等,使数据统计和实时分析变得十分方便。在我们的容器资源监控系统中,就采用了InfluxDB存储cadvisor的监控数据。本文对InfluxDB的基本概念和一些特色功能做一个详细介绍,内容主要是翻译整理自官网文档,如有错漏,请指正。 1 安装配置 这里说一下使用docker容器运行influxdb的步骤,物理机安装请参照官方文档。拉取镜像文件后运行即可,当前最新版本是1.3.5。启动容器时设置挂载的数据目录和开放端口。InfluxDB的操作语法InfluxQL与SQL基本一致,也提供了一个类似mysql-cl...阅读全文

博文 2017-09-10 07:30:59 __七把刀__

golang socket编程

osi参考模型将计算机网络结构分为7个层次,但是在实际的开发应用中,我们更加认可TCP/IP族协议的五层结构,即应用层(http、ftp、dns),传输层(udp、tcp),网络层(ip),链路层(以太网),物理层。 socket编程作为一种基于网络层和传输层的数据io模式主要分为两种,TCP Socket和UDP Socket,也即面向连接的流式Socket和面向无连接的数据报式Socket。 今天主要和大家讲讲golang的TCP Socket编程。先来看个简单的例子吧 server.go //模拟server端 func main() { tcpServer, _ := net.ResolveTCPAddr("tcp4", ":8080") listener, _ := net.Lis...阅读全文

博文 2017-11-30 15:03:06 ssdut_buster

goland ide 对于 go 1.11的配置

jetbrains 家的开发工具我一直很喜欢用,goland也没让我失望, go1.11 发布没多久,我试用过后感觉很方便,和goland也很契合,下面来说说对于新版本的go语言,在goland里面需要怎么配置

##### 需求: - 1.goland(我用的2018.2版本) - 2.go 1.11版本 #### 步骤 ##### 1.安装go 1.11,安装完不需要任何配置,(不需要你去配置什么GOPATH的环境变量,新版本的go实际上是不需要GOPATH) ##### 2.安装goland, 新建项目的时候按照下图选好go的路径(其实可以选择vgo去新建,vgo实际上在项目初始化的时候自动执行了 go mod init 项目名 命令 ) ![微信图片_2018100318...阅读全文

博文 2018-10-03 18:53:07 18657127505

Go 解决"no buildable Go source file in"问题

【问题】 我有一个文件夹,文件夹名字叫 12 ,并且我创建了一个Go源文件 12_test.go,代码如下: package main import "fmt" func main() { fmt.Println("Hello world") } 运行下面命令时出了错: go build 12_test.go "go build command-line-arguments: no buildable Go source files in D:\12" 【解决】 _test后缀在Go语言中有着特殊含义,是用来给Go程序做测试的,build工具会忽略它们,它们会运行 go test。从文件名中删除_test,或者重命名就可以解决这个问题...阅读全文

博文 2016-12-15 13:00:02 吃一堑消化不良

人工智能大数据平台中Golang的应用实践

目前人工智能非常火,大家所熟知的人脸识别、智能安防、自动驾驶等领域都在应用人工智能技术。但在自动驾驶这个行业中我们能用Go语言做什么事情?今天分享的主要是人工智能数据流的流转方式,也是Golang在Momenta大数据平台当中的应用。Momenta大数据平台Momenta的目标是打造自动驾驶大脑,基于深度学习和海量数据,Momenta已经形成服务多个场景的自动驾驶解决方案,解决了逆光、桥、隧道、雨天、夜间、匝道等复杂道路场景。在实现自动驾驶的过程中,深度学习的算法在训练模型时得有基础数据作支撑,需要大量的图像数据。借助团队极强的研究能力与工程能力,Momenta已经建立起大数据平台、大计算平台、大测试平台三大基础平台,从而实现大数据与AI算法的反馈闭环——以强大的计算资源处理丰富的海量数据,...阅读全文

golang初始化结构体数组

最近组里新项目要求用go来写,没办法只能边看文档边写代码,今天遇到郁闷的问题,查了好久最终发现居然是一个标点符号的导致的,遂纪录之 刚刚给一个接口写单元测试时想初始化一个结构体数组,然后遍历该数组并建立http.Request进行测试,结果一直报错,最后。。。才发现golang结构体初始化的正确姿势T_T 1 requests := []AuthRequest{ 2 AuthRequest{ 3 "plain", 4 "xl_test@xunlei.net", 5 "123456", 6 "smtp", 7 3, 8 "192.168.34.104", 9 "client.example.com", 10 }, 11 AuthRequest{ 12 "plain", 13 "xl_test@...阅读全文

博文 2017-12-28 19:00:08 lit10050528

golang生成随机字符串

写了一个简单golang生成随机字符串的方法,分享出来,生成的都是大写的字母 func init() { r = rand.New(rand.NewSource(time.Now().Unix())) } func RandString(len int) string { bytes := make([]byte, len) for i := 0; i < len; i++ { b := r.Intn(26) + 65 bytes[i] = byte(b) } return string(bytes) } func TestRand(t *testing.T) { for i := 0; i < 10; i++ { fmt.Println(RandString(10)) } } 测试结果: ...阅读全文

博文 2018-08-11 19:34:57 AlberLiu

golang使用Nsq

为什么要使用Nsq 最近一直在寻找一个高性能,高可用的消息队列做内部服务之间的通讯。一开始想到用zeromq,但在查找资料的过程中,意外的发现了Nsq这个由golang开发的消息队列,毕竟是golang原汁原味的东西,功能齐全,关键是性能还不错。其中支持动态拓展,消除单点故障等特性, 都可以很好的满足我的需求 下面上一张Nsq与其他mq的对比图,看上去的确强大。下面简单记录一下Nsq的使用方法 golang2017开发者大会 Nsq服务端 Nsq服务端简介 在使用Nsq服务之前,还是有必要了解一下Nsq的几个核心组件整个Nsq服务包含三个主要部分 nsqlookupd 先看看官方的原话是怎么说:nsqlookupd是守护进程负责管理拓扑信息。客户端通过查询 nsqlookupd 来发现指定话...阅读全文

博文 2017-04-24 12:56:37 喵喵小魔王

golang 单元测试框架(testing)

golang单元测试 要开始一个单元测试,需要准备一个 go 源码文件,在命名文件时需要让文件必须以_test结尾 单元测试源码文件可以由多个测试用例组成,每个测试用例函数需要以Test为前缀,例如: func TestXXX( t *testing.T ) 测试用例文件不会参与正常源码编译,不会被包含到可执行文件中。 测试用例文件使用 go test 指令来执行,没有也不需要 main() 作为函数入口。所有在以_test结尾的源码内以Test开头的函数会自动被执行。 单元测试文件 (*_test.go) 里的测试入口必须以 Test 开始,参数为 *testing.T 的函数。一个单元测试文件可以有多个测试入口。 使用 testing 包的 T 结构提供的 Log() 方法打印字符串。 ...阅读全文

博文 2018-12-16 01:34:54 memory_89a7

Go中map的创建和初始化

// code_014_map_usage project main.go package main import ( "fmt" ) func main() { /*Go语言中的map(映射,字典)是一种内置的数据结构,它是一个无序的key-value对的集合。 1)键的约束: 在一个map里所有的键都是唯一的,而且必须是支持==和!=操作符的类型 2)切片、函数以及包含切片的结构类型这些类型由于具有引用语义,不能作为映射的键 err, invalid map key type []string 3)map值: 可以是任意类型,没有限制。 4)键值的数据类型: map里所有键的数据类型必须是相同的,值也必须如何,但键和值的数据类型可以不相同。 5)注意:map是无序的,我们无法决定它的返回...阅读全文

博文 2018-10-05 01:35:15 ck_god

【互联网早报】2017.10.19

## ??国内新闻?? 1. 首家共享充电宝宣布停后,创始人说原因:使用频率低; http://dwz.cn/6Gd76q 2. 百度国际事业部将独立分拆,或于两周后正式宣布; http://dwz.cn/6Gd4g6 3. ofo发布首份移动物联网测评报告,物联网智能锁优势全揭秘; http://dwz.cn/6Gd5a3 4. 创蓝253获数千万A轮融资,未来将继续深扎短信平台。 http://dwz.cn/6GcPTW ## ? 国际新闻? 1. 安卓版Chrome浏览器测试新功能:“突发新闻”推送; http://dwz.cn/6GcW4t 2. 升级Win10秋季创意更新后:开始菜单废了; http://dwz.cn...阅读全文

Go 语言使用 TCP keepalive

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

博文 2015-01-29 17:00:01 leonzhouwei

解读 2018 之 Go 语言篇(上):为什么 Go 语言越来越热?

![img](https://static001.infoq.cn/resource/image/ae/4c/aec0fa0f2988ad82173fffcfd30e864c.jpg) > 2018 年接近尾声,InfoQ 策划了“解读 2018”年终技术盘点系列文章,希望能够给读者清晰地梳理出重要技术领域在这一年来的发展和变化。本篇文章是 Go 语言 2018 年终盘点,分为上下两篇。客观、深入分析 2018 年 Go 语言的技术发展现状,同时对明年可能的发展情况进行[预测和展望](https://www.infoq.cn/article/X-Qy0Mfprf6xObsZjlVU)。 今年真可谓是不平静的一年,前有人工智能国家级战略的发布,行业已经在大跨步的挺进,但人才缺...阅读全文

Go-Testing

要点 Go的自动化测试框架比JUnit、PyUnit等更加轻量级。要点如下: - 测试代码以xxx_test.go方式命名 - 测试代码中import “testing” - 测试函数形如 func Testxyz(t *Testing.T) {…} - 执行测试:go test 示例 比较要创建一个mymath package。 mymath.go package mymath func Add(x, y int) int { return x + y } func Minus(x, y int) int { return x - y } mymath_test.go package mymath_test import "mymath" import "testing" func Tes...阅读全文

博文 2016-09-05 08:00:03 u013344915

golang 入门之struct继承,嵌套

package main import "fmt" type Jocongmin struct{ Name string Home string Want string } func (j *Jocongmin) SayName() string{ //这里定义的方法是拓展方法,是对Jocongmin这个struct的继承,也就是struct多了一个Say..方法,可以通过Jocongmin这个struct实例来调用 return "我的名字是"+j.Name } func (j *Jocongmin) SayHome() string{ return "我的家在"+j.Home } func (j *Jocongmin) SayWant() string{ return "我的喜爱是"+j...阅读全文

博文 2017-09-30 09:30:01 jocongmin

golang test 单元测试

golang自家的单元测试做的很好了,自需要"文件名_test.go" 就可以在里面写单元测试,而且go test命令也很强大,可以只运行单个测试函数,在goland 可以点击单元测试函数前面的图标,但是切换到vscode就需要自己动手了。go test 主要参考https://godoc.org/testing单元测试写起来也比较容易,设定号 输入 判断 输出 与预想是否一致,一致则ok,否则 则报错。单元测试是一门学问,考虑的问题也很多,比如很多边界问题、如何自动化、测试样本等等很多东西 go test -run '' # Run all tests. go test -run Foo # Run top-level tests matching "Foo", such as "Test...阅读全文

博文 2017-12-11 21:00:01 zhishuai

golang项目test的写法

业务代码 package main import "fmt" func sum(a int,b int) int { return a+b } func main() { fmt.Println("hello test") } test测试用例 package main import ( "fmt" "testing" ) func TestSum(t *testing.T) { var a = 3 var b =4 res :=sum(a,b) fmt.Printf("%d 与%d之和:为%d",a,b,res) if res != 7{ t.Error("error") } } 每一个test文件必须import一个testing. test文件下每一个test case均必须以Test...阅读全文

博文 2019-08-05 21:32:38 厚朴酚XZ9lr

Go 语言编写单元测试

吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。登高而招,臂非加长也,而见者远;顺风而呼,声非加疾也,而闻者彰。假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。 -- 荀况 《劝学》 Go 语言对于单元测试是很重视的,且不说其他的作者的背景啊,开源库啊,第三方的支持之类的,有两点让我对 Go 语言关于单元测试的重视程度的有信心的点在于: Go 语言源代码和内置库自身的单元测试完备性 Go 语言自带单元测试命令 从这两点,我认为测试在 Go 语言中具有非常重要的地位,所以在这篇文章中,我也尝试讲一些关于 Go 语言单元测试的东西。 编写 Go 单元测试代码 Go 的测试方法看上去相对比较低级,它依赖于命令 go test 和一些能用 go...阅读全文

博文 2018-01-14 00:30:00 makor

数据宝参展2017中国国际软件博览会

6月29日,第十二届中国国际软件博览会(以下简称:2017软博会)在北京展览馆开幕,本届软博会由工业和信息化部与北京市人民政府主办,国务院副总理马凯莅临软博会现场,工业和信息化部部长苗圩、北京市代市长陈吉宁、北京市经济和信息化委员会主任张伯旭等领导随行。 ![1.jpg](http://studygolang.qiniudn.com/170710/fa38bd5deaf78ea0c0e68dd52f16ba8a.jpg) 中共中央政治局委员、国务院副总理马凯出席并讲话 马凯指出,软件是信息网络的核心和灵魂。全球软件业正在步入加速创新、快速迭代、群体突破的爆发期,在促进世界经济发展和人类文明进步中将发挥越来越重要的作用。中国政府高度重视发展软件产业,制定了鼓励软件产业发展的重大政策,...阅读全文

默默前行的livego--基于go语言的rtmp直播服务器

为什么go语言,原因太多了! 轻量级协程,随时goroutine方便的channel方便的interface强大的服务器性能 简单点GO语言---为服务器而生! 我们来看看: livego--基于go语言的rtmp直播服务器 github地址: https://github.com/runner365/livego 什么是livego livego是基于golang开发的rtmp服务器 为什么基于golang golang在语言基本支持多核CPU均衡使用,支持海量轻量级线程,提高其并发量 当前开源的缺陷: srs只能运行在一个单核下,如果需要多核运行,只能启动多个srs监听不同的端口来提高并发量; ngx-rtmp启动多进程后,报文在多个进程内转发,需要二次开发,否则静态推送到多个子进程,效...阅读全文

博文 2017-08-25 01:32:12 sweibd

golang的跨域

在使用golang做web的应用程序的时候,最容易碰到跨域问题了,跨域就是www.a.com访问www.b.com的文件。但是在浏览器里,为了安全起见,这样做是不允许的,这就是js的同源策略了。不懂的话google一下。1.golang做web的应用程序,不用使用像apache的web服务器,因为它自己可以构造一个web服务器。这样问题就来了,因为你使用js做前台,golang做后台,这样js传值的时候,是可以传到服务器的,并且是可以进行跨域访问的,因为golang构造的服务器与你前台就造成了跨域问题了。而ajax传值是传到服务器端的,并且可以进行跨域访问,所以我在开发的时候果断使用了它。 2而在golang接受传值之后,要返回信息给前台,这是golang里面就要设置可以进行跨域访了。设置就...阅读全文

博文 2015-10-22 19:00:02 helloworld20102010

专访iDST华先胜:城市大脑,对城市的全量、实时认知和搜索

摘要: 对外界而言,城市大脑是一个熟悉而又神秘的项目,如果用一个通俗而又古老的词来描述,它就是智慧城市,但事实上城市大脑已经远远超越了大家通常谈论的智慧城市... 编者按:10月11-14日,为期四天的2017杭州云栖大会(门票火热抢购中!)将再度在杭州云栖小镇起航,作为全球最具影响力的科技展会之一,本届大会将有不少阿里集团专家以及各企业行业领袖的精彩演讲。从今天开始,云栖社区将会对大会嘉宾做一系列专访,想了解嘉宾以及最新议题信息请关注“云栖大会”公众号。第一位嘉宾我们采访的是IEEE Fellow,国家千人,阿里巴巴 iDST副院长华先胜,他将在10月的云栖大会上分享关于计算机视觉领域的前沿趋势以及城市大脑最新的进展。 在7月底结束的全球计算机视觉顶级会议——CVPR 2017...阅读全文