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

Go 系列教程 —— 30. 错误处理

欢迎来到 [Golang 系列教程](https://studygolang.com/subject/2)的第 30 篇。 ## 什么是错误? 错误表示程序中出现了异常情况。比如当我们试图打开一个文件时,文件系统里却并没有这个文件。这就是异常情况,它用一个错误来表示。 在 Go 中,错误一直是很常见的。错误用内建的 `error` 类型来表示。 就像其他的内建类型(如 `int`、`float64` 等),错误值可以存储在变量里、作为函数的返回值等等。 ## 示例 现在我们开始编写一个示例,该程序试图打开一个并不存在的文件。 ```go package main import ( "fmt" "os" ) func main() { f, err := os.Open("/test.txt"...阅读全文

博文 2018-03-31 22:49:56 heyulong

golang操作mysql使用总结

sql.DB 通过数据库驱动为我们提供管理底层数据库连接的打开和关闭操作. sql.DB 为我们管理数据库连接池 需要注意的是,sql.DB表示操作数据库的抽象访问接口,而非一个数据库连接对象;它可以根据driver打开关闭数据库连接,管理连接池。正在使用的连接被标记为繁忙,用完后回到连接池等待下次使用。所以,如果你没有把连接释放回连接池,会导致过多连接使系统资源耗尽。 操作mysql 1.导入mysql数据库驱动 1 2 3 4 import ( "database/sql" _ "github.com/go-sql-driver/mysql" ) 通常来说, 不应该直接使用驱动所提供的方法, 而是应该使用 sql.DB, 因此在导入 mysql 驱动时, 这里使用了匿名导入的方式(在包路...阅读全文

博文 2018-03-06 20:33:09 coder_kev

报错:exec:"gcc" executable file not found in %PATH%

安装问题在import sqlite的时候,golang build 出现以下错误,exec: "gcc": executable file not found in %PATH%原因是sqlitle3是个cgo库,需要gcd编译c代码Windows下解决方法1. 下载mingw64,并安装下载地址:https://sourceforge.net/projects/mingw-w64/2. 设置环境变量将安装目录下的bin文件夹添加到Path环境变量中:C:\ProgramFiles(x86)\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\bin3. 测试是否安装成功打开cmd命令行,输入:gcc-v如果出现版本信息,则表示安装成功。...阅读全文

博文 2019-08-28 15:33:01 灰侠_bf44

诸神之战 | 赛事升级,4.1亿元奖金纳入浙江赛区奖项权益

浙江的创业者们看过来:总计4.1亿元政策及现金奖励;知名媒体360°专访报道;数千万元融资对接,构成了2017诸神之战(浙江赛区)3D立体化奖项设置,你不容错过! 奖项及奖励 一、浙江赛区奖项及奖励设置 1、浙江赛区决赛冠军 1)工商注册在中国(杭州)人工智能小镇且入驻办公的,可享受以下奖励政策: 50万元杭州未来科技城专项资金奖励; 三年最高600方免租金办公场地; 三年最高600万元研发补助; 领军型人才最高300万元安家费补助; 三年最高45万元云服务补助; 三年最高6万元创新券补助; 硕士、博士一次性生活补贴及人才竞购车牌补助; 金融支持:最高500万元创业贷风险池;最高150万元天使梦想基金;最高2000万元让利性股权投资引导基金。 2)3...阅读全文

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

golang 反射

自:http://golanghome.com/post/546 自己在用Go写Web框架时,遇到要从接口中返回对象信息的技术问题。网上关于Go中接口反射的资料较少,所以自己学习了一段时间,特将结果与大家分享。 代码约定 import ( "fmt" "reflect" ) type boy struct { Name string age int } type human interface { SayName() SayAge() } func (this *boy) SayName() { fmt.Println(this.Name) } func (this *boy) SayAge() { fmt.Println(this.age) } func main() { // 定义接口变...阅读全文

博文 2015-04-04 03:00:00 rojas

<10> go test单元测试

之前看了go官方的github上关于golang的单元测试,现在总结一下关键的地方。 单个测试 文件名必须是_test.go结尾的,这样在执行go test的时候才会执行到相应的代码 你必须import testing这个包 所有的测试用例函数必须是Test开头 测试用例会按照源代码中写的顺序依次执行 测试格式:func TestXxx(t *testing.T),Xxx部分可以为任意的字母数字的组合,但是首字母不能是小写字母[a-z],例如Testintdiv是错误的函数名。 函数中通过调用testing.T的Error, Errorf, FailNow, Fatal,FatalIf方法,说明测试不通过,调用Log方法用来记录测试的信息。 举个例子 package gotest impor...阅读全文

博文 2015-11-27 16:00:01 a11101171

go使用token实现简单的权限管理

这里采用的是在header里设置token进行鉴权,cookie也类似:基本思路为前端在header里设置token,后端采用redis等进行存储,使用中间件进行鉴权,登录时设置token。以下是登录生成token:设置if err:=tools.NewAccountSsdbCache(info.Id,token);err!=nil { c.JSON(403,gin.H{ "status":403, "msg":to.String(err), }) return }方法func NewAccountSsdbCache(userid int64,val string)(err error){ ssdb,err:=common.NewSsdbClient() if err!=nil { retu...阅读全文

博文 2018-04-17 19:40:42 misasky

Go 语言运行时环境变量快速导览

文: http://dave.cheney.net/2015/11/29/a-whirlwind-tour-of-gos-runtime-environment-variables Go 语言运行时环境变量快速导览 介绍: Go Runtime除了提供:GC, goroutine调度, 定时器,network polling等服务外, 还提供其它一些工具设施,用于开启额外的调试输出, 或是改变Go Runtime自身的一些行为。这些工具设施由传给Go program的一些环境变量控制, 本文主要讲述它们。 GOGC GOGC 是Go Runtime最早支持的环境变量,甚至比GOROOT还早,几乎无人不知。GOGC 用于控制GC的处发频率, 其值默认为100, 意为直到自上次垃圾回收后heap...阅读全文

博文 2016-03-11 17:00:02 htyu_0203_39

golang在编译时用ldflags设置变量的值

我们经常会在一些程序的输出中看到程序版本、编译时间、Git的commit id等信息,比如docker ming@vultr:~$ docker version Client: Version: 1.12.5 API version: 1.24 Go version: go1.6.4 Git commit: 7392c3b Built: Fri Dec 16 02:42:17 2016 OS/Arch: linux/amd64 ... 我们可以提供一个配置文件version.conf,程序运行时从version.conf取得这些信息进行显示。但是在部署程序时,除了二进制文件还需要额外的配置文件,不是很方便。 或者将这些信息写入代码中,这样不需要额外的version.conf,但要在每次编译时...阅读全文

博文 2017-02-11 17:00:28 冥灭

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

诸神之战|福建赛区圆满收官,IP“论剑”引爆现场

8月18日,阿里巴巴诸神之战全球创客大赛(福建赛区)暨全球版权投资与交易论坛在厦门圆满收关。来自阿里巴巴创新中心、阿里系合作伙伴、IP合作领域名企、投资机构及福建的创业精英们齐聚一堂,共同探讨产业合作、投资趋势、明晰IP的发展前景。厦门市集美区人大副主任陈来福、集美区科技局局长张长明出席活动。 福建赛区冠军强势出炉 2017阿里巴巴诸神之战福建赛区于7月正式启动,经过了BP报名、线上评分、大赛路演等多个环节,最终,8月18日迎来赛区决赛。决赛分为文创组与商业组,厦门市创投、集美产投参与,由奥飞贝肯投资、铂欣资本、达晨创投、信息资本、九鼎创投、九贤资本等投资机构担任评委,进行严格比赛。最终,泊喜、游仁科技分别拿下了福建赛区文创组及商业组两个冠军席位,也同时获得了诸神之战...阅读全文

2018开门红!数据宝获中科院中科创星投资!

2018年2月9号,数据宝获中科院中科创星投资入股,这也是继工业和信息化部电子科学技术情报研究所(全资子公司)、贵州省贵安新区(产业基金)后,又一家国有资本入股数据宝(备:中科院中科创星本次入股主体为陕西大数据基金)。 ![1.jpg](https://static.studygolang.com/180302/2a6d78ed9cd588774d1a58cb4a085b6d.jpg) 数据宝的新任国资股东是谁? 中科创星是由中国科学院国有资产经营有限责任公司、中科院西安光机所发起创办的国内第一个集“研究机构+孵化器+基金+培训”的硬科技企业孵化器。 中科创星被科技部评定为: “国家级A类(优秀)科技企业孵化器”; 中科创星是首批国家专业化众创空间、第二批国家双创示范基地、创新人才培养示范基...阅读全文

博文 2018-03-02 14:00:33 yxlk888

go调用exe

//调用exe func callEXE1() { arg := []string{} cmd := exec.Command("test", arg...) //会向 cmd.Stdout和cmd.Stderr写入信息,其实cmd.Stdout==cmd.Stderr,具体可见源码 output, err := cmd.CombinedOutput() if err != nil { fmt.Println("Error:", err) return } fmt.Printf("callEXE2结果:\n%v\n\n%v\n\n%v", string(output), cmd.Stdout, cmd.Stderr) } func callEXE2() { arg := []string{}...阅读全文

博文 2014-10-04 19:26:36 陈好

go的反射reflect访问struct结构注意问题

通过反射查看struct里面结构信息: type Point struct { X int Y string } func main() { po := Point{3, "ddd"} s := reflect.ValueOf(&po).Elem() for i := 0; i < s.NumField(); i++ { f := s.Field(i) fmt.Printf(" %s %v \n", f.Type(), f.Interface()) } } 输出: int 3 string ddd 但是把Point里面X和Y改成小写的x,y;再执行程序的时候f.Interface会报错: panic: reflect.Value.Interface: cannot return value ...阅读全文

博文 2015-07-23 17:00:01 webyh

如何用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 高超

Mac下Go语言环境的搭建

go语言运行包安装 下载地址: https://code.google.com/p/go/downloads/list 我下载的是:go1.0.3 Mac OS X (x86 64-bit) Signed PKG installer go1.0.3.darwin-amd64-signed.pkg 下载完成后直接安装。运行包自动安装在 /usr/local/go 中,这样在命令终端就可以运行go命令了。 这时候在命令行输入 go,会看到下面信息: cybercarematoMacBook-Pro:iOS cybercare$ goGo is a tool for managing Go source code. Usage: go command [arguments] The command...阅读全文

博文 2014-10-26 16:53:18 ghj1976

使用Golang开发微信公众平台-接收文本消息

使用Golang开发微信公众平台-接收文本消息 十二 20 bigwhite技术志 Amazon, CDATA, Debug, EC2, Go, Golang, http, ngrok, Opensource, Tcpdump, Wechat, wireshark, XML, 公众平台, 开放平台, 开源, 微信, 服务号, 订阅号, 调试 2 Comments 一旦接入验证成功,成为正式开发者,你可能会迫不及待地想通过手机微信发送一条"Hello, Wechat”到你的公众号服务器。不过上一篇的那个程序还无法处理手机提交的文本消息,本篇将介绍如何用Golang编写公众号程序来接收手机端发送的 文本消息以及回复响应消息。 根据微信公众平台开发文档中描述:“当普通微信用户向公众账号发消息时,微...阅读全文

博文 2015-01-20 09:24:44 bigwhite

Golang的Tag语法

我们可以通过Tag来增强结构体的定义,Tag会带上一些meta信息,在本文中我们将通过几个例子来深入了解Tag的用法。 结构 Struct是由一组field组成,每个field包括了名字(可选)和字段类型 package main import "fmt" type T1 struct { f1 string } type T2 struct { T1 f2 int64 f3, f4 float64 } func main() { t := T2{T1{"foo"}, 1, 2, 3} fmt.Println(t.f1) // foo fmt.Println(t.T1.f1) // foo fmt.Println(t.f2) // 1 } field T1是一个嵌入型field, 它并没有字...阅读全文

博文 2018-08-27 15:35:22 OhBonsai

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 package学习——os/exec

package exec用于运行外部命令,它封装了os.StartProcess,从而使操作更容易。 Index Variables func LookPath(file string) (string, error) type Cmd func Command(name string, arg ...string) *Cmd func (c *Cmd) CombinedOutput() ([]byte, error) func (c *Cmd) Output() ([]byte, error) func (c *Cmd) Run() error func (c *Cmd) Start() error func (c *Cmd) StderrPipe() (io.ReadCloser, er...阅读全文

博文 2014-10-04 19:26:13 壬癸甲乙

用Google看世界,妙用引擎“Index of”

网上有许多令人心动的共享软件,可惜的是它们或多或少都存在各种限制,对于我等贫苦一族来说,面对昂贵的注册费用只能望而却步,而且支付起来也不太方便(特别是国外的共享软件)。现在,只要利用Google强大的搜索功能,再配合一定的搜索技巧就会让你有意外的发现。 打开Google的搜索页面后,在搜索栏内填上你要搜索的软件名称、空格,并在后面加上“94fbr”的搜索代码(例如:WinZIP 94fbr),单击“搜索”按钮后你会看到所要的东西了。但该方法也并不是万能的,当没有找到合适的结果,则不妨再试试输入“软件名称 crack or sn or 破解”,一般都能找到了。 首先打开Google,在关键词输入框中输入index of lib,选择“搜索简体中文网页”选项,回车搜索,得到了一些网页,不要以为这...阅读全文

博文 2015-01-28 11:00:02 郑光宗

[golang]GO语言编写的基于UDP协议的简易聊天软件

初学GO不到两周,本着熟悉语言的目标写了这个小程序,漏洞很多,实现上写的也有些渣渣,欢迎大家阅读指点。 下载地址:https://github.com/yinxin630/gochat 简单思路描述: 0、服务端监听客户端请求,完成会话转发的任务 1、服务端采用心跳包维护用户在线状态 2、客户端通知服务端自己的监听地址,创建服务端-客户端信息通道 服务端: package main import ( "fmt" "net" "os" "strconv" "time" ) //用户信息 type User struct { userName string userAddr *net.UDPAddr userListenConn *net.UDPConn chatToConn *net.UDPC...阅读全文

博文 2014-11-11 06:00:06 u011229962

更优雅的 Golang 错误处理

Golang 中的错误处理是一个被大家经常拿出来讨论的话题(另外一个是泛型)。其中泛型这个问题,rsc 在最近的计划中也提出了纳入他今年的考虑计划中,同时,泛型的提案在2016年也进行了一些更新,相信未来会有一些更好的方案提出。这个文章我们讨论一下如何在现行的 Golang 框架下提供更友好和优雅的错误处理。 从现状谈起 Golang 中的错误处理原则,开发者曾经之前专门发布了几篇文章( Error handling and Go 和 Defer, Panic, and Recover、Errors are values )介绍。分别介绍了 Golang 中处理一般预知到的错误与遇到崩溃时的错误处理机制。 一般情况下,我们还是以官方博客中的错误处理例子为例: func main() { f,...阅读全文

博文 2017-02-10 07:42:04 kevin

用Go语言写一个Windows的外挂 (上)

本人在一家互联网金融公司上班,对于一家互联网金融公司,最基本的功能就是客户入金和出金,而出金的稳定性是很重要的,出金不畅容易导致投资人恐慌,本文讲的是出金,出金接口我们对接的是招商银行的银企直联系统,那么银企直连系统是一个什么样的程序呢? 没错,这个程序是运行在Windows上的,并且需要插入USBKey才能正常工作,这就意味着,不能简单的使用命令行进行运维管理。 看到这里,做运维的同学的内心应该和我一样是崩溃的。。 跟大家解释一下,这个服务是做什么的,大家可以把这个程序当成是我们的业务系统和招商银行沟通的信使,所有出金操作、查询操作都是通过这个信使来完成。 由于各种未知的原因,比如网络不稳定,或者USBKey插入时间过长产生了一些莫名其妙的错误,那么就需要人工去重启一下服务或重新登录一下账...阅读全文

博文 2017-05-22 03:00:36 ZhengXujin

Golang hashmap 的使用及实现

基本语法 定义hashmap变量 由于go语言是一个强类型的语言,因此hashmap也是有类型的,具体体现在key和value都必须指定类型,比如声明一个key为string,value也是string的map, 需要这样做 var m map[string]string // 声明一个hashmap,还不能直接使用,必须使用make来初始化 m = make(map[string]string) // 初始化一个map m = make(map[string]string, 3) // 初始化一个map并附带一个可选的初始bucket(非准确值,只是有提示意义) m := map[string]string{} // 声明并初始化 m := make(map[string]string) ...阅读全文

博文 2017-08-22 10:05:03 51reboot

url解析

Golang URL解析今天利用课余时间看了一下Go语言的URL解析,于是就实践了一下,为了大家一起学习交流,故贴出来和大家一起分享,如有什么错误,请各位大神批评指出,共同进步。本人邮箱:1975210542@qq.compackage main import ( "fmt" "net/url" "strings" ) func main() { Url := "https://root:123456@www.baidu.com:0000/login?name=xiaoming&name=xiaoqing&age=24&age1=23#fffffff" //Parse函数解析Url为一个URL结构体,Url可以是绝对地址,也可以是相对地址 // type URL struct { // Sc...阅读全文

博文 2017-06-16 09:55:43 131360144

在golang中使用mgo多条件查询

今天被mgo凶残的语法折腾跪了 磨了1个多小时才搞出来 特此纪念: 一般做简单查询,是这样写的:

collection := mgodbcontroller.GetMdb().C(mgodbcontroller.USER_WALLET_GS_LOG)//获取操作对象 //根据用户手机号 倒序查询前100个 存入slice中 if err := collection.Find(&bson.M{"uphone": phonenum}).Sort("-initimesamp").Limit(100).All(&historys); err == nil { for i, _ := range historys { fmt.Println...阅读全文

博文 2016-01-26 21:00:02 u012210379

微服务实战(四):服务发现的可行方案以及实践案例

这是关于使用微服务架构创建应用系列的第四篇文章。第一篇介绍了微服务架构的模式,讨论了使用微服务架构的优缺点。第二和第三篇描述了微服务架构内部的通讯机制。这篇文章中,我们将会探讨服务发现相关问题。 为什么要使用服务发现?设想一下,我们正在写代码使用了提供REST API或者Thrift API的服务,为了完成一次服务请求,代码需要知道服务实例的网络位置(IP地址和端口)。传统应用都运行在物理硬件上,服务实例的网络位置都是相对固定的。例如,代码可以从一个经常变更的配置文件中读取网络位置。 而对于一个现代的,基于云微服务的应用来说,这却是一个很麻烦的问题。其架构如图所示: 服务实例的网络位置都是动态分配的,而且因为扩展、失效和升级等需求,服务实例会经常动态改变,因此,客户端代码需要使用一种更加复杂...阅读全文

博文 2016-03-04 10:25:26 hokingyang

HTTP状态码302、303和307的故事

今日读书,无法理解HTTP302、303、307状态码的来龙去脉,决定对其做深究并总结于本文。 《HTTP权威指南》第3章在讲解30X状态码时,完全没有讲清楚为什么要有302、303、307,以及他们的关系,一句“问题出在HTTP/1/1”让我一头雾水,莫名其妙;而第五章在讲重定向响应时,没有说到现在很常见的302,反而是说我从没遇到过的303和307。很是迷惑,对于这3个状态码,WiKi和RFC文档都有详解,下面我以我的思维添油加醋的描述一遍。 一、状态码——302 RFC1945(http://tools.ietf.org/html/rfc1945#page-34),也就是HTTP1.0在介绍302时说,如果客户端发出POST请求后,收到服务端的302状态码,那么不能自动的向新的URI发...阅读全文

博文 2017-09-21 04:16:14 cswuyg

golang mgo的mongo连接池设置:必须手动加上maxPoolSize

熊猫TV的礼物系统使用了golang的 mongo库 mgo,中间踩了一些坑,总结下避免大家再踩坑 golang的mgo库说明里是说明了开启连接复用的,但观察实验发现,这并没有根本实现连接的控制,连接复用其实仅在当前操作 (session.Close 之前 )生效,最终还是需要程序员自行去限制连接才行。 废话不多说,开始上代码 GlobalMgoSession, err := mgo.Dial(host) func (m *MongoBaseDao) Get(tablename string, id string, result interface{}) interface{} { session := GlobalMgoSession.Clone() defer session.Close...阅读全文

博文 2016-03-26 22:00:00 shenguanpu

Golang中log与fmt区别

关于使用log与使用fmt的区别 最初的就是直接打印出来,之后一点点升级,比如加上输出的时间,加上goroutine之间的并发操作(打印信息并不能一定按照你规定好的顺序输出来 每次输出的顺序可能会不同),按照不同的日志级别进行打印 。。。加上打印以及转存,因此就需要专门的log包来记录程序的信息。 想象一下,一个很大的项目有很多的输出信息,要是输出信息前面没有加上日期的话,debug起来几乎是难以想象的,因为不可能一直盯着屏幕来对信息进行监控。 因此采用log来代替fmt的原因主要有一下几个方面: 添加了输出时间 线程安全 方便对日志信息进行转存,形成日志文件 关于logger的基本结构,可以参考这个博客:http://gotaly.blog.51cto.com/8861157/140690...阅读全文

博文 2015-07-05 03:00:00 Goden

1.Go环境配置

1.Go环境配置 1.1 Go 安装 1111 Go的三种安装方式 Go有多种安装方式,你可以选择自己喜欢的。这里我们介绍三种最常见的安装方式: Go源码安装:这是一种标准的软件安装方式。对于经常使用Unix类系统的用户,尤其对于开发者来说,从源码安装是最方便而熟悉的。Go标准包安装:Go提供了方便的安装包,支持Windows、Linux、Mac等系统。这种方式适合初学者,可根据自己的系统位数下载好相应的安装包,一路next就可以轻松安装了。第三方工具安装:目前有很多方便的第三方软件包工具,例如Ubuntu的apt-get、Mac的homebrew等。这种安装方式适合那些熟悉相应系统的用户。 最后,如果你想在同一个系统中安装多个版本的Go,你可以参考第三方工具GVM,这是目前在这方面做得最好...阅读全文

博文 2014-10-10 04:00:02 longxiu628forever

RUOK 科技公司招 Go、PHP、前端、运维和产品等多种职位优秀人才

岗位信息:前端开发 招聘人数:10 学历条件:计算机以及相关专业,本科以上学历 薪水范围:28W - 50W(年薪) 工作地点:柬埔寨 岗位职责: 1. 负责产品前端架构与开发工作; 2. 负责系统架构、开发框架和工具的建设与优化; 3. 负责体验优化,包括但不限于:系统稳定性、业务流程、用户交互、性能、安全等。 岗位要求: 1. 2年以上研发类工作经验; 2. 熟练运用React,Vue,ReactNative,Webpack等前端开发技术; 3. 熟悉Unix/Linux操作系统、熟悉LAMP与LNMP; 4. 掌握至少一门服务器端编程语言(PHP/NodeJS/Python/golang等); 5. 有足够的移动端 Web 开...阅读全文

go filepath Abs

func Abs(path string) (string, error) 检测地址是否是绝对地址,是绝对地址直接返回,不是绝对地址,会添加当前工作路径到参数path前,然后返回 一下是测试代码 func TestAbs() { fpt, err := filepath.Abs("/hello") if err != nil { panic(err) } fmt.Println(fpt) fpt, err = filepath.Abs("helleeo") if err != nil { panic(err) } fmt.Println(fpt) } 打印信息: /hello /home/xxx/workspace/gotestworkspace/golangtest/helleeo “/”...阅读全文

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

OQR 1.0正式发布了!一个适用于电商网站和CMS开发的开源SDK

QOR是[我们](http://theplant.jp/zh "我们")花了六年时间开发并用Go重写的一个适用于电商网站和CMS开发的SDK,而且是开源的。 2016年4月21日,我们正式发布QOR 1.0版本至此,标志着QOR已经完全由Go重写了。 QOR是一个通用的SDK,它可以让开发者快速地,自由灵活地开发各种前沿的平台和Web应用。对于第一次公开发布的版本,我们侧重于重写并为开发者提供了创建CMS 所需要用到的库和插件。下一版本,我们将会为核心库添加更多用于电子商务系统开发的具体插件和模块。 最初版本的QOR诞生于2010年,是一个以Ruby on Rails为基础开发的专用框架。 QOR专注于电商网站的开发,成功案例有Lacoste的日本在线购物商店及其配套后台系...阅读全文

golang+数据库定时任务

golang+数据库定时任务 项目背景大致如下,楼主在用nodejs写项目时遇到一些需要定时去处理的事情,例如僵尸用户定时清除,一些产品定时下架,邮件定时发送等等! 期初使用nodejs setTimeOut递归嵌套实现,后来发现内存不断飙升,故而放弃,最终改用了性能不错的golang实现 数据库设计 字段名称 含义 id 编号 name 任务名称 create_at 创建时间 type 1. 执行一次 2.循环执行 separate_time 执行间隔 status 执行状态 0.未开始 1. 执行中 -1.执行失败 -2.手动暂停 remark 备注信息 fn 要执行的数据库存储过程或函数 start_time 开始执行时间 next_exec_time 下次执行时间 last_exec...阅读全文

博文 2015-05-26 19:00:10 深山猎人

rabbitmq 客户端golang实战

rabbitmq消息模式 rabbitmq中进行消息控制的组建可以分为以下几部分: exchange:rabbitmq中的路由部件,控制消息的转发路径; queue:rabbitmq的消息队列,可以有多个消费者从队列中读取消息; consumer:消息的消费者; rabbitmq在使用过程中可以单独使用queue进行消息传递(例如celery就可以使用单个queue进行多对多的消息传递),也利用exchange与queue构建多种消息模式,主要包括fanout、direct和topic方式,模式的使用方式在此放一张图,不再此做详细解释。 我在使用的rabbitmq的过程中,主要是进行消息的广播及主题订阅: [producer] -> [exchange] ->fanout-> [queue ...阅读全文

博文 2018-04-26 23:33:05 hiker_urey

Go语言内幕(1):主要概念与项目结构

本文由 伯乐在线 - yhx 翻译,唐尤华 校稿。未经许可,禁止转载!英文出处:Sergey Matyukevich。欢迎加入翻译组。这个系列博客主要为那些对 Go 基本知识已经有一定了解,又希望对其内部细节进行更深一步地探索的人准备的。今天这一篇主要分析 Go 源代码的基本结构以及 Go 编译器的某些内部细节。读完这篇博客后,你会得到下面三个问题的答案: 1. Go 源代码结构是什么样子的? 2. Go 编译器是如何工作的? 3. Go 语言中的结点树的基本结构是什么样的? 让我们开始吧 每当开始学习一门新编程语言的时候,你总是可以找到大量的 “hello world” 教程、新手指南或者关于语言的主要概念、语法甚至标准库的文档。然而,当你想找一些介绍得更加深入的资料,比如语言运行时分配的...阅读全文

博文 2016-05-31 19:49:01 伯乐在线

从设计到实战:Go 如何扛住100亿次请求

前几天,偶然看到了 《扛住100亿次请求——如何做一个“有把握”的春晚红包系统”》(url)一文,看完以后,感慨良多,收益很多。正所谓他山之石,可以攻玉,虽然此文发表于2015年,我看到时已经是2016年末,但是其中的思想仍然是可以为很多后端设计借鉴,。同时作为一个工程师,看完以后又会思考,学习了这样的文章以后,是否能给自己的工作带来一些实际的经验呢?所谓纸上得来终觉浅,绝知此事要躬行,能否自己实践一下100亿次红包请求呢?否则读完以后脑子里能剩下的东西 不过就是100亿 1400万QPS整流 这样的字眼,剩下的文章将展示作者是如何以此过程为目标,在本地环境的模拟了此过程。   实现的目标: 单机支持100万连接,模拟了摇红包和发红包过程,单机峰值QPS 6万,平稳支持了业务。   注:本文...阅读全文

博文 0001-01-01 00:00:00 XiaoJIaQI

[Go]Log记录

后端系统中的Log是相当重要的,做过高并发服务的同学都会认同这一点。相对而言,调试已经用处不大了,对于这样的项目,我现在也习惯了这种开发方式,有两个原因:1.debug只能在开发环境,到产线环境就不灵了。2.在并行计算下,debug可能无法发现潜在的问题。 有了以前做node.js的经验,放弃debug没有想象中那么可怕,只要我们程序设计合理,结构清晰,日志完整,看到异常信息后基本都可以快速定位问题所在。 做Java的时候有log4j,做.NET程序的时候有log4net, 做Node.js的时候有log4js....上述几个模块用了都不错,因此做Go项目自然选择了Log4go。 话说这个log4go并不完善,而且两年没维护了,白瞎了这么好的名字。比较严重的是程序退出可能有日志没有flush...阅读全文

博文 2014-11-11 17:00:01 abv123456789

猎链网:火币网区块链招聘信息汇总

招聘主体:火币网招聘人员:区块链工程师工作地址:北京学历要求:本科及以上工作年限:经验不限薪资待遇:25k-35k岗位职责:1.调研并关注区块链技术、主流数字货币钱包支付相关产品;2.负责数字货币钱包产品或业务运营后台产品设计;3.独立完成需求分析、产品原型的设计,输出高质量的PRD文档,协同团队高效进行产品迭代的PCDA循环,提升用户体验及业务目标。岗位要求:1.独立主导或负责过成功上线的APP、H5、业务后台项目;2.具备较强的学习、分析,执行能力,严谨的工作态度、强烈的责任心和团队精神;3.具备较强的规划和前瞻能力,抗压能力和跨部门沟通能力,能够站在不同角度思考问题,有效推进核心业务;4.S16、985 计算机、金融相关专业,一线互联网公司区块链、互联网金融、支付行业经验;5.了解区块...阅读全文

博文 2018-08-05 01:34:55 社群邦

【5782】LION 01days作业 #黑科技增长训练营#

一、课程脑图 二、拆解练习 活动拆解:海报:信任背书:大班长已免费领取稀缺:嘉宾演讲合集,原创内容价值,回报:可获取策略,心得资料,可与大咖交流的机会不足:没有时间紧迫性活动流程: 活动应该是已过期,没看到具体裂变引导信息。 流程(推测)为: 关注公号 -》公号欢迎词中, 提示分享“海报”方可获取资料 -》用户转发分享海报 -》 当代言海报有人扫码,公号推送 资料下载链接 活动亮点: 使用内容作为福利,精准导粉。 可复用部分: 使用专业内容导粉,兑付路径短易操作, 并且导粉精准公司拆解:百度可获取如下信息:阿拉丁公司专注于为微信小程序提供专业的第三方统计平台,以安全、独立、公正的态度作为原则和公司最高信条,服务于微信小程序的开发、运营、市场、创始人等生态从业者。主营业务除了基础统计工具,还覆...阅读全文

博文 2019-01-09 01:34:47 LION_WX

一个轻量级的分布式定时任务调度平台-Cloudtask

什么是Cloudtask? Cloudtask 是一个轻量级的分布式定时任务管理平台,它非常轻量小巧,使用简单,我们可以上传、暂停/启动任务,克隆一个任务,修改任务的执行命令,或者查看任务的调度状态、执行日志,开发人员可以采用自己最熟悉的编程语言来编写任务程序,可以是一个控制台程序,也可以是一段 shell 脚本,上传至平台后设置定时执行规则即可。 设计方案 Cloudtask 后端为无状态服务,通过 Zookeeper 实现集群各节点间的发现与协调,节点以心跳方式注册到注册中心,中心服务器统一管理着所有集群,任务调度以集群方式进行分配,具有良好的可扩展性,任务分配信息按集群划分并将分配数据存储到 Zookeeper 节点,保持分配数据的一致性。 更多文档 https://cloudtask...阅读全文

Go实战--golang中使用HTTPS以及TSL(.crt、.key、.pem区别以及crypto/tls包介绍)

生命不止,继续go go go!!! HTTP与HTTPS 在WWDC 2016上,苹果在发布iOS 9的同时也向开发者传递了一个消息,那就是到2017年1月1日时App Store中所有应用都必须启用 App Transport Security应用程序安全传输协议,从而提升应用和系统安全性。 HTTPS是Hyper Text Transfer Protocol Secure的缩写,相比http,多了一个secure,这一个secure是怎么来的呢?这是由TLS(SSL)提供的。 https和http都属于应用层,基于TCP(以及UDP)协议。但是不同的是: HTTP 缺省工作在TCP协议80端口 HTTPS缺省工作在TCP协议443端口 通俗一句话:相比http,https对于大部分人来...阅读全文

博文 2017-08-26 10:31:34 wangshubo1989

Golang 获取用户 home 目录路径

os/user改进参考 os/user 一般情况下我们可以使用 os/user 包提供的 Current() 函数来获取用户信息: user, err := user.Current() if nil == err { return user.HomeDir, nil } 但这个方式交叉编译后不能完全跨平台,在 darwin 下需要 cgo 才能正常工作。 改进 为了解决这个问题,我们需要进行一点增强,在通过 os/user 获取失败时再通过环境变量、命令来获取: // Home returns the home directory for the executing user. // // This uses an OS-specific method for discovering th...阅读全文

博文 2015-04-05 11:21:30 88250

Go语言panic和recover使用

package main import ( "fmt" ) func main() { f() fmt.Println("Returned normally from f.") } func f() { defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) fmt.Println("Recovered in f", r) } }() fmt.Println("Calling g.") g() fmt.Println("Returned normally from g.") } func g() { panic("ERROR") } panic 意思是抛出一个异常, 和python的raise...阅读全文

博文 2015-06-18 18:04:37 fyxichen

golang interface赋值

说说我对golang的interface赋值的理解。 先说golang中类型方法定义。 如 type bird struct { id int } func (b bird) fly() { fmt.Println("fly") } func (b *bird) eat() { b.id++ } 中bird类型有两个方法,fly和eat。 两个方法是有区别的,fly由(b bird)绑定,eat由(b *bird)绑定。 在应用中,(b *bird)绑定方式可以修改对象中的参数,而(b bird)方式则不可以。 再来说接口的赋值。接口赋值可以分为对象对接口的赋值和接口对接口的赋值。 对象对接口的赋值需要对象完全实现接口定义的所有方法。 如定义如下接口 type animal interfac...阅读全文

博文 2015-06-17 20:02:23 iwbno1

Golang在视频直播平台的高性能实践

http://toutiao.com/i6256894054273909249/ 熊猫 TV 是一家视频直播平台,先介绍下我们系统运行的环境,下面这 6 大服务只是我们几十个服务中的一部分,由于并发量与重要性比较高,所以成为 golang 小试牛刀的首批高性能高并发服务。Golang在视频直播平台的高性能实践(含PPT下载)把大服务拆细, 然后服务化独立部署,更容易简化部署,也容易单点细节优化与升级。多数服务的能力是通用的,如平滑重启、多机房部署等。Golang在视频直播平台的高性能实践(含PPT下载)关于在线服务,如果 1000 万用户在线,即使每 30 秒一次在线 http 发送打点,那么也有每秒 30 万+的接口 qps。Golang 提供的 http server 性能非常好,一个普...阅读全文

博文 2016-03-03 03:00:00 jukan

Go 语言版本的 psutil

psutil没事逛 github ,发现 python 上收集系统信息的著名模块 psutil 已经有 go 的版本,迫不及待下载下来把玩一下。github 上的地址是 https://github.com/shirou/gopsutil显示本机的一些基本信息package main import ( "fmt" "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/disk" "github.com/shirou/gopsutil/host" "github.com/shirou/gopsutil/mem" ) func main() { v, _ := mem.VirtualMemory() c, _ := cpu.CP...阅读全文

博文 2015-06-17 23:02:21 qcpm1983