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

重量级爬虫软件Pholcus

# pholcus [![GoDoc](https://godoc.org/github.com/tsuna/gohbase?status.png)](https://godoc.org/github.com/henrylee2cn/pholcus) [![GitHub release](https://img.shields.io/github/release/henrylee2cn/pholcus.svg)](https://github.com/henrylee2cn/pholcus/releases) Pholcus(幽灵蛛)是一款纯Go语言编写的高并发、分布式、重量级爬虫软件,支持单机、服务端、客户端三种运行模式,拥有Web、GUI、命令行三种操作界面;规则简单灵活、批...阅读全文

使用consul实现分布式服务注册和发现

使用consul实现分布式服务注册和发现 七 06 bigwhite技术志 Airbnb, cluster, consul, docker, etcd, Go, Golang, haproxy, hashicorp, json, raft, SmartStack, ZooKeeper, 分布式系统, 强一致性, 服务发现, 服务注册, 选主 No Comments Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,比如 Airbnb的SmartStack等相比,Consul的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如Zoo...阅读全文

Intellj IDEA 15 搭建golang开发环境(超简单,可Debug,附下载链接)

直奔主题,首先安装Intellj IDEA 15(其它版本也行),可以装免费的社区版,也可以装付费的旗舰版,如果你有钱可以买正版,鉴于还有许多像我一样的穷书生,这里给个旗舰版破解的下载链接:http://pan.baidu.com/s/1o76epDo 密码: 7vjk 博主写这篇文章的时候最新版是15.0.3,但是那个版本暂时无法破解,但是15.0.2可以,下载地址里有破解工具和傻瓜式使用说明,只需三步。 然后开始装golang的插件,插件官网地址是:https://github.com/go-lang-plugin-org/go-lang-idea-plugin 提示:Idea的插件仓库里面本身也有Go,但是版本相对更新很慢,博主写文章的时候Go的版本已更新到1.6,而Idea本身插件仓...阅读全文

博文 2016-02-19 15:07 QQ245671051

Scala和Go的区别

Keith Morrow作为Scala的支持者,发表了这篇倾向于Scala的文章,主要也是为了反驳一年前 Paul Dix 的文章:why he prefers Go over Node and Scala,Paul Dix认为Go好于Scala的原因在于下面几个方面:并发性, 易理解性, 代码分享和学习难度。之所以时隔一年才有人反驳,一则因为双方不了解,二则可能是随着Go编写的Docker流行,拳头产品的出现让大家对Go刮目相看。 Keith Morrow则认为Go比Scala易于学习是因为Go是一种命令式语言。这相对不习惯函数语言的人来说易于掌握一些。 因为大多数人对于命令式语言比较熟悉,因此毫无疑问在代码共享方面Go要易于Scala。那么,在学校曲线上,命令式语言的人学习函数编程要难一...阅读全文

博文 2014-12-18 15:16 working_brain

扯淡 erlang 的“适合”和“不适合”

现在在体系内大力推广erlang了。不过挺遗憾的是,推行 erlang 前并没有对这个语言自身进行深入的论证和研究,只是由核心人员写了一个简单得不能再简单的 demo,在项目里用了一个开源的 erlang 项目。从工程的角度来说,这是不靠谱的,为了让 erlang 的使用更加靠谱,所以在这里扯淡一下。资料来源于erlang官方和我的猜测,对不对由我,信不信由你。 先看来自 erlang FAQ的内容(自己随手翻译的,不一定准确,可看原文:http://www.erlang.org/faq/introduction.html#1.3): —————————————————— 1.3 Erlang 特别适合使用的项目是什么? 分布式的,可靠的,软实时并发系统。 * 电信系统,例如控制交换或者协议...阅读全文

分布式 SQL 数据库 TiDB

TiDB 是国内 PingCAP 团队开发的一个分布式 SQL 数据库。其灵感来自于 Google 的 [F1](http://research.google.com/pubs/pub41344.html), TiDB 支持包括传统 RDBMS 和 NoSQL 的特性。 **TiDB 的源码已经托管在 Git@OSC 上,详情请查看:** [http://git.oschina.net/pingcap/tidb](http://git.oschina.net/pingcap/tidb) 架构: ![architecture](http://static.oschina.net/uploads/img/201509/06141432_Fsmo.png) 特性: [](http...阅读全文

开源项目 2015-09-06 00:00:00 pingcap

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...阅读全文

开源分布式监控系统 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/)...阅读全文

分布式文件系统 SeaweedFS

SeaweedFS 是简单,高伸缩性的分布式文件系统,包含两部分:存储数十亿的文件;快速为文件服务。SeaweedFS 作为支持全 POSIX 文件系统语义替代,Seaweed-FS 选择仅实现 key-file 的映射,类似 "NoSQL",也可以说是 "NoFS"。 SeaweedFS 仅花费 40 字节的硬盘来存储每个文件的元数据。 基准测试基于 Mac Book,固态硬盘,CPU:1 Intel Core i7 2.6GHz。 编写 1 百万的 1KB 文件:

Concurrency Level:      16
Time taken for tests:   88.796 seconds
Complete requests:  ...阅读全文

使用Go语言(golang)写个简单的爬虫

上次用Scala写了个爬虫。最近在闲工夫之时,学习Go语言,便用Go移植了那个用Scala写的爬虫,代码如下: package main import ( "fmt" "io/ioutil" "net/http" "regexp" ) var ( ptnIndexItem = regexp.MustCompile(`(.+)`) ptnContentRough = regexp.MustCompile(`(?s).*

(.*)
.*`) ptnBrTag = regexp.MustCompile(`
`...阅读全文

分布式计算系统 Go Glow

Glow 是使用 Go 编写的易用分布式计算系统,是 [Hadoop Map Reduce](http://www.oschina.net/p/hadoop),[Spark](http://www.oschina.net/p/spark-project),Flint,[Samza](http://www.oschina.net/p/samza) 等等的替代品。 Glow 的目标是提供一个库,可以在并行线程或者分布式集群机器中进行更简单计算。 安装:

go get github.com/chrislusf/glow
go get github.com/chrislusf/...阅读全文

分布式文件系统 IPFS

IPFS 是分布式文件系统,寻求连接所有计算机设备的相同文件系统。在某些方面,这很类似于原始的 Web 目标,但是 IPFS 最终会更像单个比特流群交换的 git 对象。 IPFS = InterPlanetary File System IPFS 云成为一个新的,重要的网络子系统,如果构建得当,那么可以完善或者替换 HTTP,或者说可以完善或者替代更多,听起来很疯狂,但是确实很疯狂! IPFS 结合了 Git,BitTorrent,Kademlia,SFS 和 Web 的优势,提供跟 HTTP web 一样简单的接口。 IPFS 分为 3 个代码库: * [github.com/ipfs/ipfs](https://github.com/ipfs/ipfs) - IPFS 规范 ...阅读全文

开源项目 2015-01-28 00:00:00 ipfs

用go+zookeeper实现一个简单的分布式队列

学习go+分布式中,打算写一个分布式爬虫练练,其实自我感觉分布式爬虫主要就是分布式队列的设计。于是学了学zookeeper,完成了一个分布式队列。爬虫还在编写中,先把分布式队列代码贴出来。附带了简单的生产者、消费者模型的测试代码 项目地址:https://github.com/nladuo/go-zk-fif...阅读全文

Go语言的抢占式调度

2013-10-27 Go语言的抢占式调度 Go语言的抢占式调度 为什么抢占式调度很重要 随着Go的一步步发展,它的调度器部分的实现也越来越好了。goroutine以前是严格意义上的coroutine,也就是协程。用户负责让各个goroutine交互合作完成任务。一个goroutine只有在涉及到加锁,读写通道等操作才会触发gorouine的yield。 Go语言的垃圾回收器是stoptheworld的。如果垃圾回收器想要运行了,那么它必须先通知其它的goroutine合作停下来。这会造成较长时间的垃圾回收等待时间。我们考虑一种很极端的情况,其它的goroutine都停下来了,除了有一个没有停,那么垃圾回收就会一直等待。 抢占式调度可以解决这种问题,在抢占式情况下,不停goroutine是否...阅读全文

Go test 测试单个用例

通过 go help testflag 可以看出,可以使用 test.run 加正在表达式来指定要测试的用例。 如有以下用例在包 foo/test 中: func TestFoo(t *testing.T){} func TestFoo1(t *testing.T){} func TestAbc(t *testing.T){} go test -v foo/test 将测试所有的用例 (-v 表示输出详细信息,无论成功失败) go test -v -run TestFoo foo/test 将测试 TestFoo 和 TestFoo1 go test -v -run ^TestFoo$ foo/test 将只测试 TestFo...阅读全文

负载均衡系统 Seesaw

Seesaw 是 Google 开源的一个基于 Linux 的负载均衡系统。Seesaw 包含基本的负载均衡特性,同时支持一些高级的功能,诸如:anycast, Direct Server Return (DSR), 支持多个 VLANs 和集中式配置。同时其设计的宗旨是易于维护。 需要注意的是,尽管该项目挂靠在 Google 名下,但并非 Google 官方产品...阅读全文

开源项目 2016-01-30 00:00:00 google

Go 机器学习库 Gorgonia

Gorgonia 是 Go 机器学习库。撰写和评估多维数组的数学公式。与  [Theano](http://deeplearning.net/software/theano/) 和 [TensorFlow](https://www.tensorflow.org/) 理念相似。具体来说, #### Gorgonia 性能: * 执行自动分化 * 执行符号微分 * 优化 梯度下降 * 进行稳定的数值计算 * 提供便捷功能来帮助创建神经网络 * 操作快(与Theano和Tensorflow速度相当) * 支持GPU / CUDA * 支持分布式计...阅读全文

goLang的前景

今天听了csdn的go语言培训,虽然进入会场的时间比较晚了,听了半个小时吧, 讲师讲的很好,先谢谢讲师 总之听起来go的前景一片大好呀,现在go的关注度也越来越高 从分布式计算,网站后台,gui程序,等等等等,很多地方go都可以胜任,并且性能也比较好,值得学习 不过就最近来讲,go的招聘信息的确不是很多,依然是java,c++,ios的天下,虽然现在已经有很多公司再用go完成一些项目了, 我自已现在也从事的是java开发的工作,提升java技能的同时,继续保持关注和学习go吧 最近大家关注go的程度真是越来越高了,随然我没有什么朋友在从事go的工作, 听讲师说go1.4以后也支持android开发了,非常期待。。 http://wenku.baidu.com/view/9321fb22316...阅读全文

博文 2014-07-30 22:25 threeyax

高薪诚聘go语言工程师

具备强大的自主研发能力,团队气氛融洽,公司环境良好,待遇丰厚! 福利待遇:五险+项目分红+各种国家法定假日 +组织外出旅游聚餐+双休+不加班 地址:北京市 朝阳区管庄 招聘职位:手游服务器程序(Go语言/Golang) 要求: 1.精通Java/Erlang/Golang/C++/Python/Lua/Go其中一种,有函数式编程经验加分 2.熟悉Redis等Nosql设计理念 3.计算机基础和算法基本功扎实 4.亲自设计过服务器架构者加分 5.熟悉TCP协议 以上需有3年以上或完整项目工作经验。勤劳勇敢善良,朴实刚健,有责任心,思维活跃。 薪水15K+上不封顶 欢迎大家奔走相告,踊跃小窗,狠投简历 请将简历发至 mlyuhx@sina.com,st...阅读全文

栈_逆波兰表达式_计算器实现_Golang版本

借助栈与逆波兰表达式 实现一个计算器,编程语言用的是Golang。 逆波兰表达式可以讲复杂的计算过程转化为简单的操作过程,进而得出答案。 比如 (a+b)*(b-c) 按照逆波兰表达式的规则得到 :ab+bc-* 然后将该表达式的字符以及符号,按照从左到右的顺序,依次入栈,一碰到符号则将栈顶前两个元素取出,做运算然后放入栈内,重复该操作,直到表达式结束。 下面将结合栈与逆波兰表达式写一个简易计算器。 运行命令如下 go run counter.go --expression=\(3-5\)*4-\(5*8\)/3+78*9 代码示例: package main import ( "fmt" "strconv" "flag" ) type StackNode struct { Data int...阅读全文

博文 2015-02-01 09:25 u012807459

Lambda在Android studio中的相关使用

在Android studio中如何使用lambda? Android studio中怎么操作lambda? Lambda在Android studio中的相关使用 Android Studio使用lambda的相关方法详解 随着Android Studio开发工具的广泛使用,Android studio相关知识的掌握必不可少,比如:lambda。本文小编将和大家分享的就是在一个Android培训网站上看到的有关Android studio中lambda的使用,有兴趣的童鞋可以一起来looklook~~ 熟悉Android的童鞋应该都清楚,在Java8发布以前,Android中是没法用lambda的,但Java8 发布以后,就可以用了。lambda提供了强大的函数式编程...阅读全文

golang 使用 iota

iota是golang语言的常量计数器,只能在常量的表达式中使用。 iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。 使用iota能简化定义,在定义枚举时很有用。 举例如下: 1、iota只能在常量的表达式中使用。 fmt.Println(iota) 编译错误: undefined: iota 2、每次 const 出现时,都会让 iota 初始化为0.【自增长】 const a = iota // a=0const ( b = iota //b=0 c //c=1) 3、自定义类型 自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。 type St...阅读全文

Golang分布式并发---群体性热点淘汰算法

Golang分布式并发---群体性热点淘汰算法 在传统的算法中,要计算热点的时候,常规采用,收集所有的任务列表,然后进行排序,得出前n的热点数据。此种算法的不好地方有: 1、 需要收集所有的任务列表。任务数过多时,收集是个问题 2、 将任务列表进行排序。在此过程中,如果列表过多,则会排序时间过长。 另外如果需要进行同步的话,则在此算法中,会有个停顿。 那么我们构建一个场景,一个网吧有n个位置,每个人都可以去网吧,但规定,每次只能预约1小时,如果时间到了,则可以续费继续一个小时,如果不需要则放弃位置。 现在有m个人来网吧上网。 1、m < n时,则m个人都可以获取到上网位置 2、当m>n时,则有n个人可以获取到上网位置,剩余的人,则在等待 有两种调度算法 1、 每个人,都会定期检查自己的时间,...阅读全文

Go语言正则表达式

package main import ( "fmt" "regexp" ) func main() { // regular expression pattern regE := regexp.MustCompile("/oid/([\\d]+)/") // simulate a search // first convert string to byte for Find() function searchByte := []byte("/oid/1/") matchSlice := regE.Find(searchByte) fmt.Printf("%s \n", matchSlice) // if found, return leftmost match, without 'abc'...阅读全文

博文 2015-07-13 10:52 冷絮

Go Flow Control

【Go Flow Control】 1、for没有(),必须有{}。 2、for的前后表达式可以为空。 3、没有while,for即是while。 4、无穷循环。 5、if没有(),必须有{}。 6、if临时变量。 Like for, the if statement can start with a short statement to execute before the condition. Variables declared by the statement are only in scope until the end of the if. 7、if临时变量可以在else中使用。 8、switch会自动break。 9、case中表达式可被计算。 10、Switch withou...阅读全文

博文 2015-02-05 21:34 tekkaman

go语言示例:if/else语句

if else分支在go语言里是简单明了的。 这里有个简单的例子。 if语句可以没有else。 可以在条件语句前添加别的语句。这个语句中声明的变量的作用域在所有的分支中。 注意:在go语言中条件语句没必要带圆括号。但是分支中必须有大括号。 在go语言里面没有三元条件语句,所以即使是简单的条件语句你也必须使用全机构的if语句(就是说go里没有个?:表达式 )。 Plain Text code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 package main import "fmt" func main() { if 7%2 == 0 { fmt.Println("7 is even") } else { fmt.Print...阅读全文

博文 2013-11-27 10:25 xming4321

<6> go select 和 switch

select和switch语法都能相近,但是有重要不同的一点,switch可以做表达式的比较判断,而select只能是io操作的判断。相同点:都能用return跳出来。 // switch i := 1 switch{ case i==1: //doing case i==2: //doing default: // doing } //select ch := make(chan ,bool) select { case <- ch: // doing 当ch有值的时候,会触发这个case default: // doing } $(function () { $('pre.prettyprint code').each(function () { var lines = $(this)....阅读全文

博文 2015-11-20 12:06 a11101171

Go 实现lamda、匿名函数和内联函数

Go 实现lamda、匿名函数和内联函数 在Go语言中,lamda、匿名函数和内联函数的实现称作字面函数(function literals)。当一个函数足够小时,你可以创建一个字面函数。下文将创建一个简单的实例来展示这个函数的实现。 package main import("fmt") func main(){ substract := func(a, b int) int { return a - b } fmt.Print("--substraction function literals: ", substract(10, 2), "\n") } 输出结果 --substraction function literals: 8 one-line函数有它具体的应用场合,特别是对于简单的...阅读全文

博文 2016-03-19 19:38 GreatElite

高性能跨语言 RPC Hprose

_Hprose_ 是高性能远程对象服务引擎(High Performance Remote Object Service Engine)的缩写 —— 微服务首选引擎。 它是一个先进的轻量级的跨语言跨平台面向对象的高性能远程动态通讯中间件。它不仅简单易用,而且功能强大。你只需要稍许的时间去学习,就能用它轻松构建跨语言跨平台的分布式应用系统了。 它提供了高效的序列化和反序列化库,并在此基础上提供了方便灵活的 RPC 引擎。 _Hprose_ 支持众多编程语言,例如: * AAuto Quicker * ActionScript * ASP * C++ * Dart * Delphi/Free Pascal * dotNE...阅读全文

开源项目 2012-12-27 00:00:00 andot

go学习资料及优秀博文

相关书籍: Go Web编程 http://blog.csdn.net/broadview2006/article/details/8875097 优秀博文: 系统编程语言明日之星—Go(http://blog.yufeng.info/Go.pdf http://www.cnblogs.com/sevenyuan/archive/2013/02/27/2935876.html余锋,就职于淘宝核心系统研发部。多年C和网络开发经验,专注于高性能、容错、分布式服务器的研究和实现。http://blog.yufeng.info/让我们一起Go(一)卧雪Sirkhttp://www.cnblogs.com/vimsk/archive/2012/11/07/2759375.htmlhttp://go-l...阅读全文

博文 2014-07-16 09:14 jingzhishen

go是函数式编程语言吗?

[2012-05-19 翻译自这里, 对原文有所扩展, 也有所删减. 版权属于原作者, 转载必须保留此声明.] go是函数式编程语言吗? 不是, 当然不是. 那么, go提供函数吗? 是的, 当然, 大多数编程语言都提供函数, go也不例外. func SayHello() { fmt.Println("Hello") } go使用关键字func定义函数, 并在函数体中编写函数逻辑. go函数可以接受参数吗? 额, 这个问题... 哦, 我懂了, 也许是我的SayHello函数给大家造成了错觉, 我会改造我的代码: func SayHelloToSomeone(name string) { fmt.Println("Hello " + name + ".") } 函数SayHelloToSo...阅读全文

Go语言:正则表达式的使用

Go语言的正则表达式使用很简单,示例代码: package test import ( "fmt" "regexp" ) func RegixBase() { //findTest() //findIndexTest() //findStringTest() //findChinesString() //findNumOrLowerLetter() findAndReplace() } //传入[]byte,返回[]byte func findTest() { str := "ab001234hah120210a880218end" reg := regexp.MustCompile("\\d{6}") //六位连续的数字 fmt.Println("------Find------") //...阅读全文

博文 2015-03-20 17:17 books1958

go-if、for、switch、goto、break、continue

if语句: package main import "fmt" func main() { //if后面没有括号 if 1 < 2 { fmt.Println("1<2") } var a = 10 //初始化表达式-a的作用范围只在if语句块 if a := 1; a > 1 { fmt.Println("a > 1") fmt.Println(a) } else { fmt.Println("! a > 1") fmt.Println(a) } fmt.Println(a) } 输出如下: 1<2 ! a > 1 1 10 for语句: package main import "fmt" func main() { //第1种形式无限循环 a := 1 for { a++ if a > ...阅读全文

博文 2016-08-13 16:18 u013210620

游戏服务器框架mqant

mqant是一个基于Golang语言的游戏框架,它具有高性能、高可伸缩、分布式多进程等特点,并且使用很简单。与以往多进程的游戏框架不同,mqant也支持单进程部署,并且也具备很高的性能。mqant在底层对分布式进行了抽象,在开发的时候无须考虑分布式,让开发者可以更多地去关注游戏的具体逻辑,大大提高开发效率。mqant的灵活性使得mqant也可以作为通用的分布式实时应用开发框架,用于一些高实时应用的开发。 mqant与客户端通信选择了mqtt协议,这使得mqant支持所有主流平台的客户端,使得客户端的开发变得很友好...阅读全文

开源项目 2017-02-28 11:04:10