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

GO语言的开源库

Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.org gowalker gosearch Sourcegraph Contributing To edit this page you must be a contributor to the go-wiki project. To get contributor access, send mail to adg@golang.org from your Google Account. Dead projects If you find a project in this list that is ...阅读全文

博文 2015-02-17 03:00:01 chu888chu888

Go语言(golang)开源项目大全

内容目录 Astronomy 构建工具 缓存 云计算 命令行选项解析器 命令行工具 压缩 配置文件解析器 控制台用户界面 加密 数据处理 数据结构 数据库和存储 开发工具 分布式/网格计算 文档 编辑器 Encodings and Character Sets Games GIS Go Implementations Graphics and Audio GUIs and Widget Toolkits Hardware Language and Linguistics 日志 机器学习 Mathematics Misc Music 网络 Operating System Interfaces Other Random Toys, Experiments and Example Code P2...阅读全文

博文 2015-07-11 03:00:01 davygeek

纯golang开发的强大灵活的爬虫系统digger

[Digger](https://github/hetianyi/digger)是用纯[Golang](https://golang.org)开发的配置式分布式跨平台爬虫系统,支持使用Javascript编写插件来实现各种你想要达到的目标。Digger及相关组件能够以极低的资源开销运行在各种廉价服务器和开发板上,如树莓派。 Digger没有复杂的依赖,部署十分简单,支持Linux和Windows平台,目前支持的CPU架构有:```amd64```, ```arm```, ```arm64``` 您可以在 [Demo演示环境](https://demo.diggerit.me/) https://demo.diggerit.me 快速体验功能。 > 由于资源有限,请合理使用演示环境,...阅读全文

开源项目 2020-09-09 13:41:04

A list of Go projects

Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.orggo-searchgowalkerSourcegraph Contributing To edit this page you must be a contributor to the go-wiki project. To get contributor access, send mail to adg@golang.org from your Google Account. Dead projects If you find a project in this list that is de...阅读全文

博文 2014-10-13 13:00:06 julong2011

图片爬虫/下载器laosj

基于goquery的轻量级爬虫, 图片下载器支持分布式, 可以自定义下载并发量。' Releases mzitu 爬取mzitu.com/taiwan (图片下载依赖redis作为url队列) mzituzp 爬取mzitu.com/share (图片下载依赖redis作为url队列) aiss-darwin 根据接口下载爱丝图片(依赖redis作为url队列) jav 获取番号列表及根据番号获取种子文件 (无依赖) douban-group 抓取并下载豆瓣小组图片(依赖redis作为url队列...阅读全文

开源项目 2017-04-16 11:08:03 songtianyi

爬虫框架go_spider

##简介## 本项目基于golang开发,是一个开放的垂直领域的爬虫引擎,主要希望能将各个功能模块区分开,方便使用者重新实现子模块,进而构建自己垂直方方向的爬虫。 本项目将爬虫的各个功能流程区分成Spider模块(主控),Downloader模块(下载器),PageProcesser模块(页面分析),Scheduler模块(任务队列),Pipeline模块(结果输出); ##执行过程简述:## 1. Spider从Scheduler中获取包含待抓取url的Request对象,启动一个协程,一个协程执行一次爬取过程,此处我们把协程也看成Spider,Spider把Request对象传入Downloader,Downloader下载该Request对象中url所对应的页面...阅读全文

Go 语言项目

出处:https://code.google.com/p/go-wiki/wiki/Projects Indexes and search engines These sites provide indexes and search engines for Go packages: godoc.orggowalkergosearchSourcegraph Contributing To edit this page you must be a contributor to the go-wiki project. To get contributor access, send mail to adg@golang.org from your Google Account. Dead proj...阅读全文

博文 2014-10-10 16:00:01 leonzhouwei

了解一下Golang的市场行情

了解一下Golang的市场行情 项目地址:https://github.com/go-crawler/lagou_jobs 如果对你有所帮助,欢迎 Star :) 目标 在工作中 Golang 已是一份子,想让大家了解一下 Golang 的市场行情,也想让更多的人熟悉它。因此主要是展示数据分析的结果 目标站点是 某招聘网站 的职位数据抓取和分析,爬取城市分别为 北京、上海、广州、深圳、杭州、成都,再得出一个结论 分析 首先需要进行页面分析,找到我们的抓取方向 搜索 golang 关键字,打开页面 F12 就能看到它发送了四个请求,留意 positionAjax.json 这个请求 我们仔细研判这个接口的入参和出参 入参 1、Query String Param city:请求的城市 need...阅读全文

博文 2018-04-28 09:44:10 go-crawler

用Golang写爬虫(一)

之前一直都是再用Python写爬虫,最近想体验下Golang写爬虫的感觉,所以就有了这个系列。我想要抓取的页面是豆瓣Top250页面,选择它的理由有3个: 豆瓣页面代码相对规范 豆瓣对爬虫爱好者相对更宽容 Top250页面简洁,很适合拿来练手 我们先看第一版的代码。 按逻辑我把抓取代码分成2个部分: HTTP请求 解析页面中的内容 我们先看HTTP请求,Golang语言的HTTP请求库不需要使用第三方的库,标准库就内置了足够好的支持: import ( "fmt" "net/http" "io/ioutil" ) func fetch (url string) string { fmt.Println("Fetch Url", url) client := &http.Client{} re...阅读全文

博文 2019-07-10 11:34:21 Golang编程

学习一下golang 练习70 web crawler (网络爬虫)

之前找了有下web crawler的练习答案. 貌似中文的不多。另外golang.org自从在外面之后,帐前卒每次上都需要到那里都要花些功夫。国内的也有一个移植的(猛击这里)。最近支付宝的页面也被爬虫爆出来了。不过这应该很久之前的事情了。因为看到了google的搜索,还有2012年8月份的。估计上支付宝那个shenghuo.alipay.com这个domain自从上线就没有加robots.txt. 有兴趣的可以在google上使用 site:shenghuo.alipay.com or 查看 shenghuo.alipay.com/robots.txt.言归正传, golang的问题是这样的:package main import ( "fmt" ) type Fetcher interfa...阅读全文

博文 2014-10-04 19:26:05 cctt_1

go-tour练习解答

go-tour对于想学习golang的人来说是一个很好的教程。 首先go-tour是有web版本,但是需要FQ。如果不能FQ的,也可以在google code上自己下载go-tour源码,go build,run一下,在自己的机器上就可以跑这个教程了。 提醒下,如果是后者,这篇文章中的程序对应的import包就需要进行相应修改了。 下面给出我的go-tour中的Exercise的解答(在web上已经测试通过) Exercise: Loops and Functions 第一个循环10次: package main import ( "fmt" ) func Sqrt(x float64) float64 { z := float64(1) for i := 0; i <= 10; i++ {...阅读全文

博文 2014-10-04 19:26:16 yjf512

使用golang开发websocket的记录

使用beego框架进行整个社区的restful api的开发,查找资料后决定使用github.com/gorilla/websocket 作为websocket的包, 定义websocket的属性 var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } 都是按照官方的例子来,期间也参考了beego的一个聊天室的实例。 ws, err := upgrader.Upgrade(this.Ctx.ResponseWriter, this.Ctx.Request, nil) defer ws.Close() 因为是使用beego框架,所以实例化websocket的时候,传输的参数是使用beeg...阅读全文

博文 2016-01-06 03:00:00 bingciwei

A tour of Go

A Tour of Go(GO之旅) Posted on Thursday, June 21, 2012.(投递于2012年6月21号星期四) Last week, I gave a talk about Go at the Boston Google Developers Group meeting. There were some problems with the recording, so I have rerecorded the talk as a screencast and posted it on YouTube.(上星期我在波士顿谷歌开发者组织会议作了一次演讲,下面是提问记录,我把它放在了YouTube上) Here are the answers to question...阅读全文

博文 2017-01-18 10:00:07 四明狂客

优秀开源项目、博客、书籍汇总

文:https://blog.fengjx.com 博客、教程 并发编程网 让天下没有难学的技术 grokonez 各种软件开发教程网站,包括前端后端 meituan 美团技术博客 How-To-Ask-Questions-The-Smart-Way 提问的智慧 free-programming-books-zh_CN 免费的计算机编程类中文书籍 awesome-programming-books 经典编程书籍大全 CodingInterviews 剑指offer,计算机经典算法题 CS-Notes 计算机学习笔记 architect-awesome 后端架构师技术图谱 awesome-architecture 头条整理的架构师技术图谱 Interview-Notebook 计算机学习笔记 ...阅读全文

博文 2019-10-24 09:32:43 HelloDeveloper

爬虫带你了解一下Golang的市场行情

了解一下Golang的市场行情 项目地址:https://github.com/go-crawler... 如果对你有所帮助,欢迎 Star,给文章来波赞 :) 目标 在工作中 Golang 已是一份子,想让大家了解一下 Golang 的市场行情,也想让更多的人熟悉它。因此主要是展示数据分析的结果 目标站点是 某招聘网站 的职位数据抓取和分析,爬取城市分别为 北京、上海、广州、深圳、杭州、成都,再得出一个结论 分析 首先需要进行页面分析,找到我们的抓取方向 搜索 golang 关键字,打开页面 F12 就能看到它发送了四个请求,留意 positionAjax.json 这个请求 我们仔细研判这个接口的入参和出参 入参 1、Query String Param city:请求的城市 needA...阅读全文

gocrawl 分析

1. gocrawl 类结构 1 // The crawler itself, the master of the whole process 2 type Crawler struct { 3 Options *Options 4 5 // Internal fields 6 logFunc func(LogFlags, string, ...interface{}) 7 push chan *workerResponse 8 enqueue chan interface{} 9 stop chan struct{} 10 wg *sync.WaitGroup 11 pushPopRefCount int 12 visits int 13 14 // keep lookups in map...阅读全文

博文 2014-10-04 19:26:25 harrysun

Golang网页下载示例

package main /* * 中文编码问题 */ import ( "errors" "flag" "fmt" query "github.com/PuerkitoBio/goquery" "golang.org/x/text/encoding/simplifiedchinese" "io/ioutil" "net/http" "os" "path/filepath" "runtime" "strings" "sync" ) var ( np = runtime.NumCPU() _ = runtime.GOMAXPROCS(np) ) var wg sync.WaitGroup type Folder struct { Url string Dir string } type Fil...阅读全文

博文 2015-07-28 10:00:02 dexterman

Go!漂亮的语言!

这一周,利用每天晚上下班回来后的一小时,学习了Google开发的Go语言,算是对其有了个基本的了解。确实是门漂亮的语言。 首先,从它的设计目标是设计一种高效的、静态编译的、易于编写的语言。它涉足的是系统级的编程,试图与C/C++抗衡。 详细来说,它的设计目标有如下几点(来自wikipedia和golang FAQ): 安全:类型安全与内存安全。没有继承,无需处理类型的依赖关系,弱化类型的使用;变量默认初始化,简化设计负担。并发和通信的支持。内建的并发机制使得多线程编程变得非常简单;内建的chan(channel)类型简化了线程间通讯。完全的内存垃圾回收机制。 高速编译。没有头文件、Makefile等复杂的工程依赖关系,使得编译速度更快,工程更容易组织。 而在我看来,通过一周的学习,给我留下最...阅读全文

博文 2014-10-21 12:00:00 tankery

gdb调试golang中的内部运行时信息(如:goroutine)

最近使用Go写crawler,使用gdb后发现不能显示gorountine的信息。 查看了下golang的文档 https://golang.org/doc/gdb >A recent extension mechanism to GDB allows it to load extension scripts for a given binary. The tool chain uses this to extend GDB with a handful of commands to inspect internals of the runtime code (such as goroutines) and to pretty print the built-in map, sl...阅读全文

Golang爬虫 爬取汽车之家 二手车产品库

爬取汽车之家 二手车产品库 项目地址:https://github.com/go-crawler... 目标 最近经常有人在耳边提起汽车之家,也好奇二手车在国内的价格是怎么样的,因此本次的目标站点是 汽车之家 的二手车产品库 分析目标源: 一页共24条 含分页,但这个老产品库,在100页后会存在问题,因此我们爬取99页 可以获取全部城市 共可爬取 19w+ 数据 开始 爬取步骤 获取全部的城市 拼装全部城市URL入队列 解析二手车页面结构 下一页URL入队列 循环拉取所有分页的二手车数据 循环拉取队列中城市的二手车数据 等待,确定队列中无新的 URL 爬取的二手车数据入库 获取城市 通过页面查看,可发现在城市筛选区可得到全部的二手车城市列表,但是你仔细查阅代码。会发现它是JS加载进来的,城市...阅读全文

网络爬虫框架Antch

Antch, 是快速的,强大的,可扩展的爬虫框架,类似于[Scrapy](https://github.com/scrapy/scrapy)。 * 支持robots.txt * 支持自定义模块 * 支持Item管道处理 * 支持多种代理协议(socks5,http,https) * 支持XPath查询HTML/XML数据 * 做为框架,易于上手 阅读全文

开源项目 2017-12-13 03:39:37

昨天写了个下载指定 tumblr 博客中的图片和视频的项目,老司机还等什么 ?

# go-tumblr-crawler Easily download all the photos/videos from tumblr blogs. 下载指定的 Tumblr 博客中的图片,视频。golang版本。 ## 配置和运行 配置需要爬取的站点: `sites.json` ps: 站点不需要 `.tumblr.com` 后缀 ``` [ { "site": "truenorthshow", "video": true, "photo": true }, { "site": "photosbygerardo", "video": true, "photo": true } ] `...阅读全文

Golang爬虫 爬取豆瓣电影 Top250

爬取豆瓣电影 Top250 爬虫是标配了,看数据那一刻很有趣。第一个就从最最最简单最基础的爬虫开始写起吧! 项目地址:https://github.com/go-crawler... 目标 我们的目标站点是 豆瓣电影 Top250,估计大家都很眼熟了 本次爬取8个字段,用于简单的概括分析。具体的字段如下: 简单的分析一下目标源 一页共25条 含分页(共10页)且分页规则是正常的 每一项的数据字段排序都是规则且不变 开始 由于量不大,我们的爬取步骤如下 分析页面,获取所有的分页 分析页面,循环爬取所有页面的电影信息 爬取的电影信息入库 安装 $ go get -u github.com/PuerkitoBio/goquery 运行 $ go run main.go 代码片段 1、获取所有分页 ...阅读全文

博文 2018-03-22 00:34:37 煎鱼

2019 年浅谈编程语言(更新中)

coding.jpeg 学来学去决定有三门语言还是需要学一下,他们就是 javascript、java 和 c++,虽然他们存在许多诟病,很多情况这些诟病会被 developer 拿来嘲讽。而且有许多更好选择在他们擅长的领域可以代替这些语言。但是从招聘信息,他们还占据大部分市场,尤其在国内会 java 工作应该不愁。 american-caption.jpeg java 是一门上手快,严谨不易出错的语言。不过多少也和加班有点联系,只要你够努力基础稍微差点也可以出活的一门语言。有点像美国队长,虽然是凡人,一大堆策略,通过一大推策略来弥补凡人能力不足。还有强有力的盾牌防止一切错误。 java 是让我欢喜让我愁,一份工作就是写 java 差点干到放弃编程,断送我们 coding 之路。退下来之后修...阅读全文

博文 2019-04-10 01:34:41 zidea

Go实现的新一代爬虫框架Creeper

[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat)](https://opensource.org/licenses/Apache-2.0) [![PyPI](https://img.shields.io/pypi/status/Django.svg?style=flat)]() ![Creeper](https://raw.githubusercontent.com/wspl/creeper/master/art/Creeper.png) ## About Creeper is a *next-generation* crawler which fetches we...阅读全文

开源项目 2017-02-17 08:30:58 Plutonist

使用golang开发websocket的记录

一直以来是使用beego框架进行整个社区的restful api的开发,查找资料后决定使用github.com/gorilla/websocket 作为websocket的包 定义websocket的属性 var upgrader = websocket.Upgrader{ ReadBufferSize: 1024, WriteBufferSize: 1024, } 都是按照官方的例子来,期间也参考了beego的一个聊天室的实例。 ws, err := upgrader.Upgrade(this.Ctx.ResponseWriter, this.Ctx.Request, nil)defer ws.Close() 因为是使用beego框架,所以实例化websocket的时候,传输的参数是使用b...阅读全文

博文 2016-02-11 01:00:08 ciwei_ice

Golang网页下载示例

开发十年,就只剩下这套Java开发体系了 >>> package main /* * 中文编码问题 */ import ( "errors" "flag" "fmt" query "github.com/PuerkitoBio/goquery" "golang.org/x/text/encoding/simplifiedchinese" "io/ioutil" "net/http" "os" "path/filepath" "runtime" "strings" "sync" ) var ( np = runtime.NumCPU() _ = runtime.GOMAXPROCS(np) ) var wg sync.WaitGroup type Folder struct { Url str...阅读全文

博文 2018-09-23 00:33:08 dexterman

Questions in golang

I list some questions in Go in my daily life and the corresponding answer. QA 1. the reader <-channel will be blocked until the writer write the channel? in gocrawl, the worker reads the channel as follows 1 select { 2 case <-this.stop: 3 this.logFunc(LogInfo, "stop signal received.") 4 return 5 default: 6 // Nothing, just continue... 7 } However, ...阅读全文

博文 2014-10-04 19:26:04 harrysun

用Golang写爬虫(二) - 并发

文链接: strconv.com/posts/web-c… 在上篇文章里面我用Go写了一个爬虫,但是它的执行是串行的,效率很低,这篇文章把它改成并发的。由于这个程序只抓取10个页面,大概1s多就完成了,为了对比我们先给之前的doubanCrawler1.go加一点Sleep的代码,让它跑的「慢」些: func parseUrls(url string) { ... time.Sleep(2 * time.Second) } ```go 这样运行起来大体可以计算出来程序跑完约需要21s+,我们运行一下试试: ```bash ❯ go run doubanCrawler2.go ... Took 21.315744555s 复制代码已经很慢了。接着我们开始让它变得更快~ goroutine的错误...阅读全文

博文 2019-07-11 09:34:23 Golang编程

go语言之正则表达式

go语言之正则表达式 //regexp package main import ( "fmt" "regexp" ) func main() { //需要匹配的模式 //reg := regexp.MustCompile("\\w+") 正则表达式中的\需要转义 reg := regexp.MustCompile(`^z.*1$`) //返回匹配到的结果 result := reg.FindAllString("zhangsan1", -1) fmt.Printf("%v\n", result) //演示一个匹配不到的例子 reg1 := regexp.MustCompile(`^z(.*)1$`) result1 := reg1.FindAllString("zhangsand", -1)...阅读全文

博文 2018-11-14 23:35:09 PowerMichael

Error handling and Go go 优雅的错误处理

Introduction If you have written any Go code you have probably encountered the built-in error type. Go code uses error values to indicate an abnormal state. For example, the os.Openfunction returns a non-nil error value when it fails to open a file. func Open(name string) (file *File, err error) The following code uses os.Open to open a file. If an...阅读全文

博文 2015-06-17 20:05:18 hittata

Golang搭建并行版爬虫信息采集框架

1.简介 Go语言在分布式系统领域有着更高的开发效率,提供了海量并行的支持。本博文介绍的是采用Go语言搭建一个并行版爬虫信息采集框架,博文中使用58同城中租房网页做案例。相比较其他爬虫程序它的优点是: 1.抓取信息速度非常快,因为是并行处理的,通过配置协程数量,可以比普通的爬虫信息采集程序快上上百倍。 2.功能模块化,每个功能模块各司其职,配置简单。通过修改信息抓取规则,就可以采集不同网站中的数据。 程序源代码放到github上,链接地址是: https://github.com/GuoZhaoran/crawler 2.项目架构 下面是项目整体架构的示意图: 2.1 Request(请求) 该爬虫架构中Request请求可以理解为:抓取请求url的内容,例如抓取58同城北京市的租房信息时,...阅读全文

博文 2018-10-05 22:34:38 郭兆冉

3行写爬虫 - 使用 Goribot 快速构建 Golang 爬虫

zhshch2002/goribot: [Crawler/Scraper for Golang]Make a Golang spider in 3 lines是我的一个业余项目,目的是能尽可能简洁的使用Golang开发爬虫应用。 注意:这个项目正处于beta版本,不建议直接使用在重要项目上。Goribot的功能都经过测试,如果有问题欢迎来提issues。 安装 go get -u github.com/zhshch2002/goribot 复制代码访问网络 不需要冗长的初始化和配置过程,使用goribot的基本功能只需要三步。 package main import ( "fmt" "github.com/zhshch2002/goribot" ) func main() { s := go...阅读全文

博文 2019-10-13 23:04:27 zhshch2002

3行写爬虫 - 使用 Goribot 快速构建 Golang 爬虫

[zhshch2002/goribot: [Crawler/Scraper for Golang]Make a Golang spider in 3 lines](https://github.com/zhshch2002/goribot)是我的一个业余项目,目的是能尽可能简洁的使用Golang开发爬虫应用。 **注意:这个项目正处于beta版本,不建议直接使用在重要项目上。Goribot的功能都经过测试,如果有问题欢迎来提issues。** # 安装 ```shell go get -u github.com/zhshch2002/goribot ``` # 访问网络 不需要冗长的初始化和配置过程,使用`goribot`的基本功能只需要三步。 ```Go package main impo...阅读全文

博文 2019-10-13 18:00:37 zhshch

A Tour of Go - Exercise: Web Crawler

A Tour of Go Exercise: Web Crawler In this exercise you'll use Go's concurrency features to parallelize a web crawler. Modify the Crawl function to fetch URLs in parallel without fetching the same URL twice. package main import ( "fmt" ) type Fetcher interface { // Fetch returns the body of URL and // a slice of URLs found on that page. Fetch(url s...阅读全文

博文 2015-06-17 20:05:16 sqlxx

golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍

golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍 go语言爬虫框架:gocolly/colly,goquery,colly,chromedp,webloop,go_spider,Pholcus https://github.com/hu17889/go_spiderPholcus 幽灵蛛重量级爬虫软件(含3种操作界面) - Golang中国https://www.golangtc.com/p/557473c9b09ecc2aa700000bhenrylee2cn/pholcus_lib: 公共维护的Pholcus爬虫规则库https://github.com/henrylee2cn/pholcus_lib python,封装好...阅读全文

博文 2018-08-10 10:30:02 zdz8207

爬虫遇到了点问题

golang爬珍爱网代码优化后,运行报了如下的错,找了半小时才找到原因,在此记录一下。 image 代码是这样的: 有一个interface类型的Parser: type Parser interface { Parser(contents []byte, url string) ParserResult Serialize() (funcName string, args interface{}) } 有一个struct类型的FuncParser: type FuncParser struct { parser ParserFunc funcName string } FuncParser 实现了Parser 接口: func (f *FuncParser) Parser(contents...阅读全文

博文 2018-09-01 23:34:45 我的小碗汤

爬取珍爱网跟个人数据展示

golang爬取珍爱网,爬到了3万多用户信息,并存到了elasticsearch中,如下图,查询到了3万多用户信息。 image.png 先来看看最终效果: 42.gif 利用到了go语言的html模板库: 执行模板渲染: func (s SearchResultView) Render (w io.Writer, data model.SearchResult) error { return s.template.Execute(w, data) } model.SearchResult数据结构如下: type SearchResult struct { Hits int64 Start int Query string PrevFrom int NextFrom int CurrentP...阅读全文

博文 2018-08-31 13:36:23 我的小碗汤

golang-nuts

* http://benjamincongdon.me/blog/2018/03/01/Scraping-the-Web-in-Golang-with-Colly-and-Goquery/If told to write a web crawler, the tools at the top of my mind would be Python based: BeautifulSoup or Scrapy. However, the ecosystem forwriting web scrapers and crawlers in Go is quite robust. In particular, Colly and Goquery are extremely powerful tools...阅读全文

博文 2018-07-05 20:34:47 wys35

Golang实现简单爬虫框架(5)——项目重构与数据存储

前言 在上一篇文章《Golang实现简单爬虫框架(4)——队列实现并发任务调度》中,我们使用用队列实现了任务调度,接下来首先对两种并发方式做一个同构,使代码统一。然后添加数据存储模块。 注意:本次并发是在上一篇文章简单并发实现的基础上修改,所以没有贴出全部代码,只是贴出部分修改部分,要查看完整项目代码,可以查看上篇文章,或者从github下载项目源代码查看 1、项目重构 (1)并发引擎 通过分析我们发现,两种不同调度的区别是每个worker一个channel还是 所有worker共用一个channel,所以我们在接口中定义一个函数WorkerChan(),用来决定这件事,即worker一个channel还是 所有worker共用一个channel。此时ConfigMasterWorkerCh...阅读全文

博文 2019-06-03 23:34:21 盐的甜

go-tour (2)

继go-tour (1)之后,整理go-tour教程中,有关go语言的方法、接口和并行。 3 方法和接口 3.1 方法 Go没有类。不过你可以为结构体类型定义方法。 方法就是一类带特殊的 接收者 参数的函数。 方法接收者在它自己的参数列表内,位于 func 关键字和方法名之间。 在此例中, Abs 方法拥有一个名为 v ,类型为 Vertex 的接收者。 methods.go package main import ( "fmt" "math" ) type Vertex struct { X, Y float64 } func (v Vertex) Abs() float64 { return math.Sqrt(v.X*v.X + v.Y*v.Y) } func main() { v :...阅读全文

博文 2016-11-06 10:00:03 tianzhaixing

Golang实现简单爬虫框架(5)——项目重构与数据存储

前言 在上一篇文章《Golang实现简单爬虫框架(4)——队列实现并发任务调度》中,我们使用用队列实现了任务调度,接下来首先对两种并发方式做一个同构,使代码统一。然后添加数据存储模块。 注意:本次并发是在上一篇文章简单并发实现的基础上修改,所以没有贴出全部代码,只是贴出部分修改部分,要查看完整项目代码,可以查看上篇文章,或者从github下载项目源代码查看 1、项目重构 (1)并发引擎 通过分析我们发现,两种不同调度的区别是每个worker一个channel还是 所有worker共用一个channel,所以我们在接口中定义一个函数WorkerChan(),用来决定这件事,即worker一个channel还是 所有worker共用一个channel。此时ConfigMasterWorkerCh...阅读全文

博文 2019-05-30 15:34:40 jsfantasy

Golang实现简单爬虫框架(5)——项目重构与数据存储

前言 在上一篇文章《Golang实现简单爬虫框架(4)——队列实现并发任务调度》中,我们使用用队列实现了任务调度,接下来首先对两种并发方式做一个同构,使代码统一。然后添加数据存储模块。 注意:本次并发是在上一篇文章简单并发实现的基础上修改,所以没有贴出全部代码,只是贴出部分修改部分,要查看完整项目代码,可以查看上篇文章,或者从github下载项目源代码查看 1、项目重构 (1)并发引擎 通过分析我们发现,两种不同调度的区别是每个worker一个channel还是 所有worker共用一个channel,所以我们在接口中定义一个函数WorkerChan(),用来决定这件事,即worker一个channel还是 所有worker共用一个channel。此时ConfigMasterWorkerCh...阅读全文

博文 2019-05-30 21:34:51 盐的甜

Golang实现简单爬虫框架(4)——队列实现并发任务调度

前言 在上一篇文章《Golang实现简单爬虫框架(3)——简单并发版》中我们实现了一个最简单并发爬虫,调度器为每一个Request创建一个goroutine,每个goroutine往Worker队列中分发任务,发完就结束。所有的Worker都在抢一个channel中的任务。但是这样做还是有些许不足之处,比如控制力弱:所有的Worker在抢同一个channel中的任务,我们没有办法控制给哪一个worker任务。 其实我们可以自己做一个任务分发的机制,我们来决定分发给哪一个Worker 注意:本次并发是在上一篇文章简单并发实现的基础上修改,所以没有贴出全部代码,只是贴出部分修改部分,要查看完整项目代码,可以查看上篇文章,或者从github下载项目源代码查看 1、项目架构 在上一篇文章实现简单并发...阅读全文

博文 2019-05-27 12:34:37 jsfantasy

Golang实现简单爬虫框架(4)——队列实现并发任务调度

前言 在上一篇文章《Golang实现简单爬虫框架(3)——简单并发版》中我们实现了一个最简单并发爬虫,调度器为每一个Request创建一个goroutine,每个goroutine往Worker队列中分发任务,发完就结束。所有的Worker都在抢一个channel中的任务。但是这样做还是有些许不足之处,比如控制力弱:所有的Worker在抢同一个channel中的任务,我们没有办法控制给哪一个worker任务。 其实我们可以自己做一个任务分发的机制,我们来决定分发给哪一个Worker 注意:本次并发是在上一篇文章简单并发实现的基础上修改,所以没有贴出全部代码,只是贴出部分修改部分,要查看完整项目代码,可以查看上篇文章,或者从github下载项目源代码查看 1、项目架构 在上一篇文章实现简单并发...阅读全文

博文 2019-05-27 21:34:41 盐的甜