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

Godep的基本使用

关于Godep 发现好多golang项目都使用到godep作为包管理的工具,像比较大型的项目,比如kubernetes这种,都是使用的是godep来进行依赖管理操作的了,看了一下有点像maven的感觉,这里记录一下基本的操作。 首先是安装 由于网络的问题,goget的时候有一个包会找不到,网上有好多替代的解决方案,比如说这个 基本的使用 go save 比如说建立了一个基本的项目,就拿beego的示例项目来说。这里又一点要注意,没有使用版本控制的时候,go save是不成功的,会报类似如下的错误: godep: error while inspecting "/Users/Hessen/goworkspace/src/testBee/bapi": directory "/Users/Hess...阅读全文

学习go语言碰到的问题:main redeclared in this block

E:\goapp 是我的GOPATH目录 分别建立了2个文件: hello.go // hello package main import "fmt" func main() { fmt.Println("Hello World! 你好,世界!") } sandbox.go // sandbox package main import ( "fmt" "time" ) func main() { fmt.Println("Welcome to the playground!") fmt.Println("The time is ", time.Now()) } 在liteide运行BR的时候报错了:main redeclared in this block previous declarat...阅读全文

博文 2015-06-17 23:02:23 lz0426001

GO同包内不同文件方法引用问题

问题:GO语言同包内不同文件方法引用在本地LiteIDE中可运行,但在linux环境下报错: 在main.go中引用c2c_admin_base_info.go中GetcsChatCntTrend方法: 本地运行正常,但部署至linux服务器时,报错: 解决方案:将c2c_admin_base_info.go放到包data下 main.go c2c_admin_base_info.go 层级关系: 注:包和package有关系:main包和main函数比较特殊,是程序的入口,其他的包就要和文件夹名字一样(感谢扫盲的GO大牛...阅读全文

博文 2014-10-16 17:00:00 sea_198821

理解Go 1.5 vendor

理解Go 1.5 vendor 七 31 bigwhite技术志 gb, Go, go1.4, Go1.5, GO15VENDOREXPERIMENT, godep, Golang, golang-dev, Google, GOPATH, GOROOT, internal, Package, RussCox, vendor No Comments Go 1.5中(目前最新版本go1.5beta3)加入了一个experimental feature: vendor/。这个feature不是Go 1.5的正式功能,但却是Go Authors们在解决Go被外界诟病的包依赖管理的道路上的一次重要尝试。目前关于Go vendor机制的资料有限,主要的包括如下几个: 1、Russ Cox在Golang-...阅读全文

博文 2015-08-07 09:14:13 bigwhite

go语言exec包调用shell命令

工程中需要用到ffmpeg,想直接用exec包调用shell命令。本来以为很简单,结果折腾了一下午,最后查到了解决方案。 假如之前执行报错的语句为: cmd := exec.Command("echo", "'helloworld!'") out, err := cmd.Output() 那么改为: c := "echo hello world" cmd := exec.Command("sh", "-c", c) out, err := cmd.Output() 即可! 感谢万能的stack overflow reference: https://stackoverflow.com/questions/20437336/how-to-execute-system-command-in-go...阅读全文

博文 2016-08-18 17:00:03 yypnathan

go里面select-case和time.Ticker的使用注意事项

上周末参加Go技术聚会,京东的美女工程师讲到一个select-case和time.Ticker的使用注意事项(真实的应用场景是:在测试收包的顺序的时候,加了个tick就发现丢包了),觉得很有意思,记录一下。 package main import ( "fmt" "runtime" "time" ) func init() { runtime.GOMAXPROCS(runtime.NumCPU()) } func main() { ch := make(chan int, 1024) go func(ch chan int) { for { val := <-ch fmt.Printf("val:%d\n", val) } }(ch) tick := time.NewTicker(1 * t...阅读全文

Go 1.9 sync.Map揭秘

本文为转载,原文链接 在Go 1.6之前, 内置的map类型是部分goroutine安全的,并发的读没有问题,并发的写可能有问题。自go 1.6之后, 并发地读写map会报错,这在一些知名的开源库中都存在这个问题,所以go 1.9之前的解决方案是额外绑定一个锁,封装成一个新的struct或者单独使用锁都可以。 本文带你深入到sync.Map的具体实现中,看看为了增加一个功能,代码是如何变的复杂的,以及作者在实现sync.Map的一些思想。 有并发问题的map 官方的faq已经提到内建的map不是线程(goroutine)安全的。 首先,让我们看一段并发读写的代码,下列程序中一个goroutine一直读,一个goroutine一只写同一个键值,即即使读写的键不相同,而且map也没有"扩容"等操...阅读全文

博文 2017-07-29 17:05:12 Kotexy

go语言为什么没有min/max(int, int)函数

golang为什么没有min/max(int, int)函数 我们知道go语言math包里面定义了min/max函数,但是是float64类型的,而并没有整数类型的min/max。 go语言的math包里面定义的min/max函数如下: math.Min(float64, float64) float64 math.Max(float64, float64) float64 事实上我们更经常要比较的是两个整数的场景: math.Min/Max(int, int), or math.Min/Max(int64, int64) 那么,为什么go语言不提供整数类型的min/max这两个函数呢? 下面的这篇文章给了一个解释: https://mrekucci.blogspot.jp/2015/07/...阅读全文

博文 2017-10-31 09:04:44 CodeGeek

Go 中 defer 的 5 个坑 - 第一部分

> 通过本节的学习以避免掉入基础的 defer 陷阱中 本文只适合想要进阶学习 Golang 的新手阅读,大牛请绕道。 ## #1 -- defer nil 函数 如果一个延迟函数被赋值为 `nil` , 运行时的 [`panic`](https://golang.org/ref/spec#Handling_panics) 异常会发生在外围函数执行结束后而不是 `defer` 的函数被调用的时候。 例子 ```go func() { var run func() = nil defer run() fmt.Println("runs") } ``` 输出结果 ``` runs ❗️ panic: runtime error: invalid memory address or nil poi...阅读全文

博文 2017-12-26 15:11:12 polaris

golang使用vendor目录来管理依赖包

Vendor目录介绍 随着Go 1.5 release版本的发布,vendor目录被添加到除了GOPATH和GOROOT之外的依赖目录查找的解决方案。在Go 1.6之前,你需要手动的设置环境变量GO15VENDOREXPERIMENT=1才可以使Go找到Vendor目录,然而在Go 1.6之后,这个功能已经不需要配置环境变量就可以实现了。 Note,即使使用vendor,也必须在GOPATH中,在go的工具链中,你逃不掉GOPATH的 那么查找依赖包路径的解决方案如下: 当前包下的vendor目录。 向上级目录查找,直到找到src下的vendor目录。 在GOPATH下面查找依赖包。 在GOROOT目录下查找 一些建议 在使用vendor中,给出如下建议: 一个库工程(不包含main的pac...阅读全文

博文 2017-07-10 14:07:20 tcgx

等待5年,Go 2.0终于要来了!

蛰伏5年,Go Language 2.0 终于要来了!早在今年8月份,Go团队便提出了2.0版本的设计草案,包括两大主题:错误处理和泛型。而今天,团队开发人员发话了:“是时候采取行动了!”Go 1和Go 2主要的区别在于决策的制定——Go 1的诞生是一个小团队的努力,而Go 2将更受其社区的影响。目前在Go 2的提案中,大约有120个未解决的问题被标记为Go 2的提案,每一个问题都与重要的库或语言更改相关,而这些问题通常不能满足当前Go 1的兼容性。开发人员将这些提案分类为Go2Cleanup、NeedsDecision等,以便后续的执行操作。在Go语言的生态中,拥有数以万计的程序员和代码,因此,所有的决策和改变必须谨慎,以免对稳定的生态造成破裂。因此,Go团队认为,需要实施新的提案评估流程...阅读全文

还在为go get github.com/...卡死而烦恼么

> 作为国内开发者,经常遇到一个问题,就是一片热血撞死在伟大的\*\*墙上,只能干着急,下面我们得想办法翻过这个\*\*墙,毕竟我们出去后只是为了干好事儿。 ## go get是怎么运行的 通常会使用http的方式去访问目的地址,然后下载下来。但是内部可能用使用git clone的方式去克隆,既然这样,我们解决办法就是让http和git clone都能同时走上代理,这样就能解决卡死的烦恼 ## 有一个http代理 > 假如已有 http代理是: http://localhost:8118/,后续我们就用这个地址去代理 如果没有http代理,只有socket5代理,需要看下面步骤进行转换 如果连socket5代理也没有,就需要先花钱买或者找一些免...阅读全文

诸神之战创客大赛 致精英创业者的一封信

各位精英创业者: 你是否还在为满腹才华无人交流而苦闷?你是否还在为创业好项目无人知晓而忧虑?金秋九月,阿里云创客+诸神之战创客大赛盛大开启,只为精英的你而来! 阿里云创客+诸神之战创客大赛是由阿里云创客+主办,联合国内知名媒体、知名创投机构、数十家国家级园区共同打造的基于“互联网”的精英团队创业大赛。大赛历时4个月(7-10),将于京津、上海、深圳、哈尔滨、长沙、福州、杭州全国7个分赛区同时比拼,同时各分赛区精英更有机会在10.15杭州云栖大会现场路演,与投资人面对面沟通,一展创业者的风采! 1.直击大赛亮点:  精英竞技:精英打造的项目以及团队同台竞技,碰撞出以往创业大赛中不一样的火花。  风投直达:全球知名创投机构齐聚一堂,只为寻找精英中的精英  区域覆盖:...阅读全文

go-sql-driver发生invalid connection(bad connection)解决方法讨论

在使用go-sql-driver过程中,有时候我发现会报invalid connection的错误,这个错误产生的原因设置了空闲连接不为0时,客户端拿到连接有可能是已经被服务端关闭了,此时就会发生invalid connection,网上有些解决方案是把空闲连接数设置0,不知道设置为0跟设置为50之类的性能有什么大的区别吗?跪求大神解答...阅读全文

golang多核设置

单核执行如果for前面或者中间不延迟,主线程不会让出CPU,导致异步的线程无法执行, 从而无法设置flag的值,从而出现死循环 实例代码: package main import ( "fmt" "runtime" _ "time" ) var ( flag = false str string ) func foo() { flag = true str = "setup complete!" } func main() { runtime.GOMAXPROCS(1) go foo() //time.Sleep(1 * time.Second) for { if flag { break } } fmt.Println(str) } 解决办法:1、for中间或者前面加延迟 2、runtim...阅读全文

博文 2015-10-18 21:00:03 webyh

谈谈并发编程中的协程

高并发编程里多线程(进程)的弊端 其实从著名的 C10K 问题的时候, 就谈到了高并发编程时, 采用多线程(或进程)是一种不可取的解决方案, 核心原因是因为线程(或进程)本质上都是操作系统的资源, 每个线程需要额外占用1M或者2M的内存空间, 所以2G内存,能承受的线程数差不多只能到1k这个量级。 而且线程的调度由操作系统调度, 当线程或者进程数到达一定量级的时候, 据有人试验的结果是并发的线程数到达1k以上后, 操作系统基本上就已经不堪重负,调度不过来了。 事件驱动 已知多线程已经无法解决高并发问题, 所以才有了异步IO,事件驱动等概念来解决高并发编程。 很典型的就是 Node.js ,传说中的事件驱动, 其实就是在底层使用了 libuv 然后通过各种回调函数来注册事件, 当事件触发的时候...阅读全文

博文 2015-02-15 18:28:17 YanyiWu

go语言html/template解析问题

最近使用go语言html/template包进行一些静态化工作,发现template对于小于号(左尖括号<)不能正确处理,反复研究,没有弄清楚怎么回事,后来变通了一下,先对模板进行EscapeString编码,格式化以后,再进行UnescapeString编码,问题得到解决;但还是没弄清楚template为什么对单独的小于号(左尖括号<)无法正确格式化,但发现如果左尖括号的右边有一个或多个右尖括号(>),则能正确解析格式化,而template源码包读起来很费解,最终没有弄明白,希望知道的同学能告知原因;贴上我的解决方案,以供参考 package mytemplate import ( "bytes" "html" "html/template" "os" "strconv" "time" )...阅读全文

Intellij IDEA ,按Ctrl+左键,不能进入类或方法的【解决办法】,提示Cannot find declaration to go to

Intellij IDEA ,按Ctrl+左键,不能进入类或方法的【解决办法】,提示Cannot find declaration to go to 2017年8月4日 朱宏亮%1 $ S Intellij IDEA ,按Ctrl+左键,不能进入类或方法的【解决办法】,提示Cannot find declaration to go to 如图,,按住Ctrl+鼠标单击的时候,系统提示Cannot find declaration to go to。 原因:导入项目的时候使用的是Open而不是Import Project。 解决方法:关闭当前项目,如图点击Import PrOject,导入项目即可 标签:Cannot find declaration to go to、Intelli...阅读全文

博文 2017-12-04 06:01:01 zy_zhengyang

阿里财报:云计算年度营收133亿,季度营收连续12个季度翻番

摘要: 北京时间5月4日晚间,阿里巴巴集团公布2018财年第四季度和全年财报,该季度内(2018年1月至3月底)阿里云营收43.85亿元,同比增长103%;2018财年(2017年4月至2018年3月底)营收133.9亿元,同比增长101%。 北京时间5月4日晚间,阿里巴巴集团公布2018财年第四季度和全年财报,该季度内(2018年1月至3月底)阿里云营收43.85亿元,同比增长103%;2018财年(2017年4月至2018年3月底)营收133.9亿元,同比增长101%。 过去三年,阿里云每个季度以三位数左右的增速在不断扩大自己的市场领先优势。截止2017年上半年,研究机构IDC通过销售、市场等渠道得到的调研数据显示,阿里云在中国云计算IaaS市场份额为47.6%,几乎为市场所...阅读全文

Go 1.13 中值得期待的特性

Go 1.13 的开发周期在五月初就要结束了,为了准备好未来 Go 2 的新特性,[新的进程](https://blog.golang.org/go2-here-we-come) 已经正式启动,这个进程主要由社区来负责驱动。 只要不会带来向后不兼容的问题,每个 Go 2 的提议都有可能会在更早的版本发布出来。总体而言,每个提议都应该: 1. 解决的是对大多数人来说很重要的问题。 2. 对所有其它的用户产生的影响最小。 3. 提供一个清晰并易于理解的解决方案。 至于 Go 1.13,它计划将于 8 月份发布。 ## 已经被接受且合并的提议 - [数字字面量语法(Number literals syntax)](https://go.googlesource.com/proposal/+/mas...阅读全文

博文 2019-05-19 14:00:36 Alex-liutao

Go 语言泛型的讨论

是否加入泛型,Go团队一直在犹豫,他们希望找到一种好的解决方案。 最近关于泛型的讨论比较激烈,总结了文档,对比了各种语言的泛型,[点击查看文档](https://docs.google.com/document/d/1vrAy9gMpMoS3uaVphB32uVXX4pi-HnNjkMEgyAHX4N4/edit?pli=1#) 如果被墙,可以[下载pdf格式](https://github.com/polaris1119/resources/raw/master/SummaryofGoGenericsDiscussions.pdf...阅读全文

golang 长短连接处理

前言 关于time_wait网上的介绍有很多,咱不啰嗦了,之前公司环境有台机器里有大量的time_wait,研究了下golang和http的基础,小结下。 http协议1.1后默认是长连接,如果一个client使用http1.1协议,但又不希望使用长链接,则需要在header中指明connection的值为close;如果server方也不想支持长链接,则在response中也需要明确说明connection的值为close。 Get / HTTP/1.1 Host: example.com User-Agent: Go 1.1 package http **Connection: close** Accept-Encoding: gzip HTTP/1.1 501 Not Implemen...阅读全文

博文 2016-03-07 22:00:04 chenwenhao0304

Golang号称高并发,但高并发时性能不高

1.管道chan吞吐极限10,000,000,单次Put,Get耗时大约100ns/op,无论是采用单Go程,还是多Go程并发(并发数:100, 10000, 100000),耗时均没有变化,Go内核这对chan进行优化。 解决之道:在系统设计时,避免使用管道chan传递主业务数据,避免将业务流程处理流程分割到对个Go程中执行,这样做减少chan传输耗时,和Go程调度耗时,性能会有很大的提升。 案例分析:nsq和nats都是实时消息队列,nsq在客户端端和服务端大量使用chan转发消息,导致性能不佳,只有100,000/s;而nats服务端在分发消息流程中,没有使用chan,只在客户端接收时使用chan,性能可达到1,000,000/s。 2.互斥锁Mutex在单Go程时Lock,Unloc...阅读全文

Go 中如何有效的比较字符串

当优化软件时字符串比较可能和你想的有些不同。特别是包括拆分跨 goroutines 的循环, 找到一个更快的哈希算法,或者一些听起来更科学的方式。当我们做出这样的修改时,会有一种成就感。然而, 字符串比较通常是信息传递中(in a pipeline)的最大瓶颈。下面的代码段经常被使用,但它是最糟糕的解决方案 (参见下面的 benchmarks),并导致了实际问题。 ```go strings.ToLower(name) == strings.ToLower(othername) ``` 这是一种很直接的写法。把字符串转换成小写,然后在比较。要理解为什么这是一个差的解决方案,你需要知道字符串是如何表示的,以及 `ToLower` 是如何工作的。但是首先,让我们讨论一下字符串比较中主要的使用场景...阅读全文

Go依赖管理机制

无论何种语言,依赖管理都是一个比较复杂的问题。而Go语言中的依赖管理机制目前还是让人比较失望的。在1.6版本之前,官方只有把依赖放在GOPATH中,并没有多版本管理机制;1.6版本(1.5版本是experimental feature)引入vendor机制,是包依赖管理对一次重要尝试。他在Go生态系统中依然是一个热门的争论话题,还没有想到完美的解决方案。 看其它 我们先来看看其它语言怎么解决,例举两种典型的管理方式: Java 开发态,可以通过maven和gradle工具编辑依赖清单列表/脚本,指定依赖库的位置/版本等信息,这些可以帮助你在合适的时间将项目固化到一个可随时随地重复编译发布的状态。这些工具对我来说已经足够优雅有效。但maven中也有不同依赖库的内部依赖版本冲突等令人心烦的问题。...阅读全文

博文 2016-11-20 17:00:00 jinpengxx8

比原链CEO朗豫:重金启动MOV生态建设,这会是第一个分布式区块链商业生态

11月8日,由巴比特主办的2019世界区块链大会·乌镇在乌镇互联网国际会展中心正式开幕。在比原链“Keep MOVing”专场活动上,比原链CEO朗豫做了主题分享。 以下内容来自朗豫分享,经巴比特整理。 朗豫 稳定运行2年,主、侧、跨发展方向破解不可能三角难题 2018年底、2019年初时,我们讲稳定、安全和繁荣。 我们都实现了。目前,比原链已无故障运行近2年,侧链也已平稳运行3个半月。没有稳定的系统就不可能有稳定的应用。去年,我们的算力摆脱了GPU的影响进入平稳发展阶段,钱包客户端也没有出现资损情况。我们的开发者社区诞生了一本已出版的技术解读类图书。我们也加入了golang这个大技术社区。在政务和商务应用方面,我们也进入了比较好的状态。 在技术上,我们实现了侧链Vapor,完善了基于比原链...阅读全文

博文 2019-11-11 09:33:37 更多精彩内容POW的比原链为何要做Staking?长铗或解锁你认知“资产”新姿势 | Bystack火石计划巴比特资讯Bystack开启共识节点全球招募,长铗首次详细描述Bystack的世界观、现状和未来巴比特资讯拼流量、拼资源、拼技术—— BaaS已沦

golang解决cannot convert a (type interface {}) to type *: need type assertion

cannot convert a (type interface {}) to type string: need type assertion cannot convert a (type interface {}) to type *: need type assertion 解决方案: var a interface{} = int(10) var b MyInt = a.(MyInt) 参考: http://stackoverflow.com/questions/19577423/how-to-cast-to-a-type-alias-in-go/1957905...阅读全文

博文 2015-06-17 20:17:43 u010499721

golang笔记——IDE

可选方案有 Lite IDE\GoSublime\Visual Studio Code\Goclipse\Vim 1、Lite IDE 这是国人开发的开源且跨平台的 golang 专属IDE,也算是目前 golang 唯一的IDE了吧,是使用 qt 开发的,界面比较简陋。 下载地址:https://sourceforge.net/projects/liteide/ 功能上还算是比较完善,自动格式化代码、编译、调试都不错。 2、GoSublime 基于 Sublime 的 Go 语言插件,界面美观,但要手动配置很多东西。 首先在 Sublime 中搜索并安装 gosublime 插件和 go build 插件,(请先安装好 Package Control),然后再通过 go get -u gi...阅读全文

博文 2016-02-22 19:00:01 tianyajuanke

Golang 中 defer 的五个坑 - 第三部分

> 译注:全文总共有四篇,本文为同系列文章的第三篇 - [第一部分](https://studygolang.com/articles/12061) - [第二部分](https://studygolang.com/articles/12136) 本文将侧重于讲解使用 defer 的一些技巧 如果你对 defer 的基本操作还没有清晰的认识,请先阅读这篇 [文章](https://blog.learngoprogramming.com/golang-defer-simplified-77d3b2b817ff) (GCTT 出品的译文 https://studygolang.com/articles/11907)。 ## #1 —— 在延迟调用函数的外部使用 recover 你总是应该在被延迟...阅读全文

博文 2018-02-01 10:05:25 yujiahaol68

乐死我了,怎么样成为一个全栈程序员(Full Stack Developer) good

受苏格拉底大神的启迪,我也来谈谈全栈。禅师:成为全栈工程师,这个问题等于如何成为全才,有可能吗码农:有可能,不过可能性比较低,因为达芬奇这类人毕竟是百年一遇的奇才。不过,因为我热爱这个行业,也有一定天赋,所以只做好软件全栈的话我想还是可能的禅师:你玩过三国志这个游戏吗码农:我还开发过禅师:你喜欢什么样的武将,诸葛亮怎么样?码农:不错,虽然他武力只有20,不过智力有100,不过游戏出战不是单打独斗,我可以给他搭配武力100,智力20的吕布,在战场上所向披靡禅师:对于一个武力65,智力65的武将,你怎么处理码农:砍头或让他下野,浪费军粮和黄金禅师:但是他很全面啊,两项能力综合130分,比诸葛亮和吕布的综合分还要高码农:话虽如此但他还是太平庸,无法独挡一面禅师:赵云怎么样码农:这是我最喜欢的武将之...阅读全文

博文 2015-05-27 03:00:00 findumars

分布式系统的架构思路

一、前言在计算机领域,当单机性能达到瓶颈时,有两种方式可以解决性能问题,一是堆硬件,进一步提升配置,二是分布式,水平扩展。当然,两者都是一样的烧钱。今天聊聊我所理解的分布式系统的架构思路。 二、分布式系统的两种方式平时接触到的分布式系统有很多种,比如分布式文件系统,分布式数据库,分布式WebService,分布式计算等等,面向的情景不同,但分布式的思路是否是一样的呢? 1.简单的例子假设我们有一台服务器,它可以承担1百万/秒的请求,这个请求可以的是通过http访问网页,通过tcp下载文件,jdbc执行sql,RPC调用接口…,现在我们有一条数据的请求是2百万/秒,很显然服务器hold不住了,会各种拒绝访问,甚至崩溃,宕机,怎么办呢。一台机器解决不了的问题,那就两台。所以我们加一台机器,每台承...阅读全文

博文 2018-04-13 16:09:36 chulung

墨链所填写的《SmartICO V1.1 待评估ICO项目问卷调查》

该问卷调查由墨链团队于2017年8月7日填写,墨链团队对所填内容真实性负责。免责声明:如无明显问题,我们将默认对贵方所填内容保持完全信任,任何由于所填内容的虚假、夸大等不诚信因素所造成的责任或影响,需要贵方自行承担。 问卷调查 说明:对问题作出回答时无需长篇累述,如无要求,通常每个问题的回答不建议超过200个字。1、请简述贵方的项目,包括但不限于应用场景、战略目标、核心技术创新、核心特点等(请用不多于200字尽可能让我们理解该项目)。墨链(InkChain),可概括为三个关键词:独创公有链、文化资产交易平台、分布式经济生态,是以“纸贵版权”团队为核心打造的,面向大文化产业的自主区块链底层和文化资产交易平台,以及由此构建的分布式经济生态。 墨链,在早期包含了墨链区块链底层框架,及构建于其上以I...阅读全文

博文 2017-08-09 04:05:17 币圈王大炮

golang select 选择器的两种方案

golang select 选择器 常规模式: package main import ( "fmt" "strconv" ) func main() { var chs1 = make(chan int) var chs2 = make(chan float64) var chs3 = make(chan string) var ch4close = make(chan int) defer close(ch4close) go func(c chan int, ch4close chan int) { for i := 0; i < 5; i++ { c <- i } close(c) ch4close <- 1 }(chs1, ch4close) go func(c chan floa...阅读全文

博文 2014-10-04 19:26:08 eclipser1987

win8.1下golang+sdl2.0环境搭建

sdl2.0的golang绑定我是使用的这个,但是它的官方介绍里面只有linux以及OSX系统的说明,没有windows的,在我的mbp上弄好以后就考虑在win下也搭建一个开发环境,这样就能比较方便的跨平台了。 具体步骤如下: 配置go环境,可以参考官方文档或者这里。 go get上面提到的库,但是反复提示如下错误: cc1.exe: sorry, unimplemented: 64-bit mode not compiled in 后来发现只要用到了cgo就会报这个错误,因为我下载的是go 1.3.2 64位版本,但是本地的gcc是32位的。折腾了好久没解决,一直没能下载到64位的mingw,官方下载器每次都是下载一半的时候报错,即使挂上代理也一样,后来在sf.net上找到一位好心人做的离...阅读全文

博文 2014-10-23 03:00:01 drakefang

Go 语言的下一个大版本:Go 2.0 被安排上了!

今年 8 月 Go 开发团队公布了 Go 2.0 的设计草案,包括错误处理和泛型这两大主题。现在备受瞩目的 Go 2.0 又有了新动向 —— 昨日 Go 开发团队在其官方博客表示,Go 2 已经被安排上了!目前 Go 2 已进入确定变更提案的阶段,并公布了提案评估流程。废话不多说,先来看看 Go 2.0 有哪些值得关注的内容:1.最大程度保持对 1.x 的兼容,以避免分裂 Go 语言生态系统2.采用增量升级的方式,而非单独发布重大更新版本3.实施新的提案评估流程,以评估尚未解决且被标记为提案的 issue4.将会在 Go 1.13 版本中选择 Go 2 部分的提案背景早在2017年的 GopherCon 大会上,Russ Cox(Go 核心开发团队的技术 leader)就已经正式开始思考 G...阅读全文

博文 2019-06-27 20:40:13 开源中国

Golang中的CPU占满100%及解决方案

有一个流媒体适配服务,出现了`CPU`开销很大的问题,一个服务把`CPU`资源占满了,导致其他服务无法正常工作。 下面来详细记录发现`bug`和解决的流程。 # 发现CPU开销很大 扫描发现,是垃圾回收导致 `CPU` 使用上升 : ``` Time: Mar 22, 2019 at 5:52pm (CST) Duration: 1mins, Total samples = 1.43mins (142.57%) Entering interactive mode (type "help" for commands, "o" for options) (pprof) tree Showing nodes accounting for 83.13s, 97.11% of 85.60s total...阅读全文

博文 2019-05-27 00:10:24 OctopusLian

Golang官网被墙解决办法

由于GFW的原因,golang.org被墙,初学者发现官网被墙,可能就直接放弃了,下面提供几个解决办法。 ###1.修改hosts文件 找到hosts文件,Mac OS X/*nix在/etc/hosts,Windows在C:\WINDOWS\system32\drivers\etc\hosts 增加一行 ``` 173.194.75.141 golang.org ``` ###2.翻墙 这边可以使用奇云SS服务,用ShadowSocks出墙,简单方便。 地址 [奇云SS](https://www.yuntivip.com/?qiyunss) [https://www.yuntivip.com](https://www.yuntivip.com/?qiyunss...阅读全文

Go语言之父谈Go:大道至简

自:http://www.csdn.net/article/2012-07-05/2807113-less-is-exponentially-more 导读:这篇文章是Google首席工程师、Go语言之父Rob Pike自己整理的6月21日在旧金山给Go SF的演讲稿。Rob提到:Go语言本是以C为原型,以C++为目标设计,但最终却大相径庭。值得一提的是,这3门语言都曾当选TIOBE年度语言。 几个礼拜之前我被问到:“对于Go语言,最令你惊讶的是什么?”当时我就明确地给出了答案:“虽然我希望C++程序员能够使用Go作为替代拼,但实际上大部分Go程序员都是从Python和Ruby转过来的,其中却少有C++程序员。” 我、Ken以及Robert都曾是C++程序员,在我们编写软件时觉得应该设计一门...阅读全文

博文 2015-06-17 23:01:51 gaopeiliang

vim中go的语法高亮设置

测试环境:ubuntu 14.04 之kylin 版 vim本身不带golang的语法高亮 解决方案: 在 /usr/share/vim/vim74/ 中 有这么几个文件夹:syntax, ftplugin, indent, compiler等, 我们查看syntax可以看到有gcc.vim等其他语法文件,但是没有go.vim, 好在我们可以从源码下载 http://www.golangtc.com/download 下载 go1.3.3.src.tar.gzgo1.3.3 (source only),解压缩, 将下载目录的 go/misc/vim/中有对应的 syntax, ftplugin, indent, compiler 中的go.vim文件复制到/usr/share/vim/vim...阅读全文

Go 在 Windows 上用户图形界面 GUI 解决方案Go-WinGUI

Go 在服务端的优势不容置疑,但是在桌面应用上却没有好的 GUI 支持,本项目是 Go 语言在 Windows 上的用户图形界面 GUI 解决方案。 本项目可以不用对你的 Go 写的网站程序做任何修改,就可以实现本地化,使用 go+html+css+js 写 Windows 本地应用。 **原理介绍** 本项目原理是写了一个本地应用,使用 cef 谷歌浏览器内核框架嵌入到应用里面实现了一个“浏览器”,然后“浏览器”里面打开 go 网站,这样就实现了一个不依赖系统浏览器的独立 gui 本地应用程序。我们可以使用方便强大的 html+css+js 完成优美的应用界面,功能可以通过 RPC,ajax 调用后端 Go Web 服务实现...阅读全文

golang 中 cannot use ** (type interface {}) as type **解决方案

在beego中从session中取值的时候,取出来的是intergace{},但是我先返回的值是int型,或者是string,这个时候会出现一个错误:cannot use ** (变量)(type interface {}) as type **(类型) 错误代码: func CurrentId(ctx *context.Context) int { userStr := ctx.Input.CruSession.Get("user_id") return userStr } 从session中取出来的是一个interface类型,无法直接转换,我在给user_id赋值的时候是给的int类型。因此直接对userStr进行转换即可。 正确代码如下: func CurrentId(ctx *co...阅读全文

博文 2017-02-09 08:10:08 姜家志

golang 通过exec Command启动的进程如何关闭的解决办法

在用exec包调用的其他进程后如何关闭结束,可以使用context包的机制进行管理,context包的使用详见:https://godoc.org/context exec.CommandContext方发实现了context,通过context可以对exec启动的进程结束。 隐藏程序自身黑窗口的方法:go build -ldflags="-H windows" 隐藏子进程黑窗口的方法: cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true} package main import ( "context" "fmt" "os" "os/exec" "syscall" "time" ) func main() { ctx, cancel...阅读全文

博文 2016-10-30 05:00:01 CodyGuo

分布式缓存version_cache

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

猝不及防!还没入职就被“裁员”,大批应届生遭强制解约,网易游戏也动手了!

这个冬天有点冷有点残酷。 还没有来得及一丝丝的防备,不少还在“象牙塔”的应届生就感受到了社会的残酷,还没有入职就被“裁员”了。 在 2018 年的最后两天,医疗器械行业一哥迈瑞医疗与 2018 年秋招的 200多名应届毕业生闪电解约,并承诺支付 5000 元赔偿金。在这辞旧迎新的日子里,应届毕业生们找好的工作,很不幸突然泡汤了。 迈瑞医疗解约应届生 在 12 月 29 日,一篇题为“迈瑞医疗强制解约应届生”的网络帖子不胫而走,并在短短两天传遍互联网,并登上微博热搜。有小伙伴因为想进迈瑞医疗,拒了其他公司的 offer,结果被解约,而如今秋季招聘已经结束,2019 年春招已经没有太多公司与好机会。这些毕业生面临着重新找工作的境地。 还有上海交大的学生也被“裁”了 有个小伙伴前段时间在微博发文庆...阅读全文

博文 2019-01-03 19:34:46 51reboot

golang的json的时间格式化解决方案

golang的json的时间格式化解决方案 1.通过数据查询的时候指定号格式,这样就不要再转格式了 2.通过time.Time类型穿件别名,然后为这个别名类实现MarshalJSON方法。 以下来自golang的原来注释 If an encountered value implements the Marshaler interface // and is not a nil pointer, Marshal calls its MarshalJSON method // to produce JSON. If no MarshalJSON method is present but the // value implements encoding.TextMarshaler instead...阅读全文

博文 2016-11-08 06:00:05 u013163178

漫谈单点登录(SSO)

1. 摘要 ( 注意:请仔细看下摘要,留心此文是否是您的菜,若浪费宝贵时间,深感歉意!!!) SSO这一概念由来已久,网络上对应不同场景的成熟SSO解决方案比比皆是,从简单到复杂,各式各样应有尽有!开源的有OpenSSO、CAS ,微软的AD SSO,及基于kerberos 的SSO等等……这些优秀的解决方案尽显开发及使用者的逼格,当然需求所致无谓好坏高低,满足实际之需才是王道! 本文并不讨论上述提到的方案的整合使用、或者复杂场景如:安全、防火墙、N 多个系统层叠调用这种"巨型项目"里SSO的实现与使用,也并不涉及 C/S 、C/S+B/S 的SSO解决方案,仅关注B/S 上的SSO实现。虽是如此,然而万变不离其宗,这里我们将从一个简而小的登录场景去接触SSO的本质,描述如何原生态地自实现一...阅读全文

博文 2017-11-30 12:03:09 EzrealLiu

Go语言使用Beego的ORM插入Mysql后,时区不一致的解决方案

一、解决方案: 方案一: orm.Debug = false orm.DefaultTimeLoc = time.UTC orm.RegisterDriver("mysql", orm.DRMySQL) orm.RegisterDataBase("default", "mysql", "root:LPET6Plus@tcp(127.0.0.1:18283)/lpet6plusdb?charset=utf8&loc=Local") orm.RegisterModel(new(Versions)) orm.RegisterModel(new(Regversions)) orm.RegisterModel(new(Osversions)) 方案二: func init() { var dataso...阅读全文

博文 2016-04-10 09:05:09 songxingzhu

如何在 Go 语言中使用 Redis 连接池-Radix.v2

一、关于连接池 一个数据库服务器只拥有有限的资源,并且如果你没有充分使用这些资源,你可以通过使用更多的连接来提高吞吐量。一旦所有的资源都在使用,那么你就不能通过增加更多的连接来提高吞吐量。事实上,吞吐量在连接负载较大时就开始下降了。通常可以通过限制与可用的资源相匹配的数据库连接的数量来提高延迟和吞吐量。 如果不使用连接池,那么,每次传输数据,我们都需要进行创建连接,收发数据,关闭连接。在并发量不高的场景,基本上不会有什么问题,一旦并发量上去了,那么,一般就会遇到下面几个常见问题: 性能普遍上不去CPU 大量资源被系统消耗网络一旦抖动,会有大量 TIME_WAIT 产生,不得不定期重启服务或定期重启机器服务器工作不稳定,QPS 忽高忽低 要想解决这些问题,我们就要用到连接池了。连接池的思路很简...阅读全文

博文 2016-02-20 15:00:01 scut1135