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

android初学者必知会的14个实战项目

在android学习中,很多android初学者都苦于不知道怎么找适合自己的开源项目练手,有时候就算找到一些小项目,但也不清楚具体如何下手,这对于迫切需要学习android的童鞋而言确实比较苦恼。今天小编就和大家扒一扒14个非常适合初学者学习、开发的小项目。 1、Openfire+Smack Android 即时通讯应用开发 2、android项目实战-汽车门户APP 3、android项目实战二:android类似大众点评网项目 4、Android蓝牙开发 5、android项目制作-简易版QQ 6、Android Launcher & Widget 7、Android 电话与短信应用 8、Android 定位技术...阅读全文

golang实现改进版的快速排序

初学golang,写个快速排序练练手,无需额外编写partition函数,直接使用一个函数递归实现快排。 gopackage main import "fmt" func quickSort(arr []int, start, end int) { if start < end { i, j := start, end key := arr[(start+end)/2] for i <= j { for arr[i] < key { i++ } for arr[j] > key { j-- } if i <= j { arr[i], arr[j] = arr[j], arr[i] i++ j-- } } if start < j { quickSort(arr, start, j) } if...阅读全文

博文 2015-06-17 20:03:56 lilei_scut

高性能 golang 网络库 xingo

## xingo 高性能 golang 网络库,游戏开发脚手架。 默认通信协议如下(支持自定义协议处理部分代码,支持灵活的重载协议部分代码): * Len uint32 数据 Data 部分长度 * MsgId uint32 消息号 * Data []byte 数据 * 消息默认通过 google 的 protobuf 进行序列化 服务器全局配置对象为 GlobalObject,支持的配置选项及默认值如下: * TcpPort: 8109,//服务器监听端口 * MaxConn: 12000,//支持最大链接数 * LogPath: "./log",//日志文件路径 * LogName: "server.log",//日志文件名 * M...阅读全文

周末在家练手用go写的一个笑话爬虫,发出来大家笑笑,不知道算不算广告,如果算的话麻烦站长删除

忙活了2天,不知道算不算广告,如果算的话麻烦站长删除。[点我访问][1] 周末在家练手用go写的一个笑话爬虫,主要是为孩子妈在家带孩子解闷,所以手机上看也的话,界面也还凑合。 主要使用了技术: golang mongodb mgo bootstrap beego 自己实现了一套简单的spider,包含调度器,蜘蛛,过滤器,存储器,使用了开源的goquery,以及mgo(用于连接mongodb),WEB展现为beego。 [1]: http://meijia0.co...阅读全文

使用 Iris 框架写的一个后台 API 练手项目

最近一个月在从 Laravel 转到 Go ,练手写了一个项目,还没有写完,还在持续更新中。对比了多个框架 gin , echo , beego , iris 多个框架 (如果想了解几个框架的详细对比可以看下这个链接 Awesome Web Frameworks for Gophers ,并且都尝试的写了一些小项目,这一次用 宇宙最快框架 iris 写了这个后台接口项目。 项目介绍 使用了 iris 框架 数据库使用 gorm 数据库 也是使用了几个 orm 作对比 xorm , beego orm , gorm这个几 orm 都不错,可以都了解一下,想用哪一个看个人喜好。 使用了 jwt 做单点认证,上面介绍的几个框架都是支持 jwt 认证的。iris 框架的 jwt 文档写的相对比较简单...阅读全文

博文 2018-11-29 16:34:44 Dream

GoLang实现 weixin 接入的验证接口

微信很棒,Golang也很棒,我有一个小打算,用微信来控制我司的智能家居面板开关等等东东。刚好也在学习Golang,就拿它来练练手。 微信规定了接入的接口必须是80端口的Http服务,每个发往公共账号的消息,微信平台都会通过Post方式丢到约定好的接口上,URL如下 http://www.wadahana.com/weixin.goapp?signature=41a1e2aec5e0bb6b8686ee361e5b305cf5c04f13&echostr=1000737891698810841×tamp=1407852505&nonce=1183067877 我们所需要做的signature check就是简单的把timestamp,nonce 和在weixin平台上提交的toke...阅读全文

博文 2016-01-29 16:00:02 wadahana

写了一个抓取网页数据,存入csv文件的小例子,拿来share一下[搬运]

本人小白,刚学了一个月的Golang,以前用python写过抓取网页的脚本.现在用Go实现一下. 注意:有一些package需要自己下载. https://github.com/zykzhang/grapData 加一句:我用来练手的网址也挺不错的,也是介绍抓数据的.其实我基本就是在这个网站上学的:http://1.guotie.sinaapp.com/?p=50...阅读全文

A*(A星)算法Go lang实现

之前发表一个A*的python实现,连接:点击打开链接 最近正在学习Go语言,基本的语法等东西已经掌握了。但是纸上得来终觉浅,绝知此事要躬行嘛。必要的练手是一定要做的。正好离写python版的A*不那么久远。这个例子复杂度中等。还可以把之前用python实现是没有考虑的部分整理一下。 这一版的GO实现更加模块化了,同时用二叉堆来保证了openlist的查找性能。可以说离应用到实现工程中的要求差距不太远了。 package mainimport ( "container/heap" "fmt" "math" "strings")import "strconv"type _Point struct { x int y int view string}//=====================...阅读全文

博文 2015-05-14 03:00:01 nobugtodebug

教你写一个color日志库,不止有代码还有原理。

https://www.zybuluo.com/aliasliyu4/note/612147 还是老规矩为了良好的阅读体验,但是还是移步到markwon文档 项目地址在: https://github.com/liyu4/chill/tree/master/util 当然chill项目也是完全可以用来练手用的,简约但是不简单。 另外如果有任何的问题和好的建议都可以联系我的微信 wechat: convertxy ...阅读全文

Go GC: Prioritizing low latency and simplicity

https://blog.golang.org/go15gc 在开始之前,先来看一个关于Go的垃圾回收在知乎的讨论 http://www.zhihu.com/question/21615032 The Setup Go 正在构建一个面向未来的现代垃圾收集器(garbage collector, GC):一个不仅能够适应当下软件开发规模,还能支持下个十年的软件和硬件能力的长久GC。目前的全停式(stop-the-world)GC已经阻碍了go等安全性语言更加广泛的运用,在将来,或许已经没有全停式GC的立足之地。 Go 1.5作为对未来的惊鸿一瞥,达成了我们一年前设置的10毫秒GC延迟的目标。我们在a talk at Gophercon展示了一些令人振奋的数据。其中的延迟改进尤其收到了广泛关注;...阅读全文

博文 2015-10-13 18:00:00 xiaohu50

Go 语言开发的爬虫框架Grabant

Grabant是一个用go语言开发,用javascript语法书写规则的爬虫框架 规则开发和神箭手的爬虫规则类似,开发的目的是兼容大部分神箭手已有的规则 一些相关解释及说明如下: **扫描页**是直接配置的一级页面,这个页面扫描的结果是抓取列表页; **列表页**是扫描后的二级页面,这个页面是为了抓取内容页; **内容页**才是真正匹配我们需要内容的规则的页面,内容页会匹配我们需要的内容并输出; 每次扫描页面,会抽取页面的链接放入队列进行规则匹配,列表页规则如果为空则列表页抽取链接全放入列表队列,同理内容页,从内容页中抽取的数据是以xpath或者正则匹配的规则 举个栗子: 如下是一个简易的爬豆瓣电影评分的规则 configs是一个json配置对应的字段意义如下: domain...阅读全文

开源项目 2017-10-13 11:00:03 网友

游戏服务器和应用服务器开发脚手架einx

einx 是一个由 golang 编写的用于游戏服务器或者应用服务器的开源手脚架。 采用较为传统的以业务划分并发模块的方式降低逻辑开发难度,在逻辑开发与执行效率间取得平衡。 模块与组件的组合机制,模块是逻辑核心。 引入lua脚本 按业务分离逻辑 einx/db 组件化数据库相关操作 einx/network 组件化网络IO,目前只支持TCP einx/log 异步日志库 einx/timer 时间轮定时器 einx/module 模块 einx/component 组件 einx/lua 脚本相关操作 每个模块有且仅有一个goroutine用于处理被投递到本模块中的消息,在模块中的逻辑不需要考虑同步问题,简化了逻辑开发难度,模块与模块之间可以通过RPC交互...阅读全文

开源项目 2018-03-30 11:30:03 网友

A*(A星)算法Go lang实现

之前发表一个A*的python实现,连接:点击打开链接 最近正在学习Go语言,基本的语法等东西已经掌握了。但是纸上得来终觉浅,绝知此事要躬行嘛。必要的练手是一定要做的。正好离写python版的A*不那么久远。这个例子复杂度中等。还可以把之前用python实现是没有考虑的部分整理一下。 这一版的GO实现更加模块化了,同时用二叉堆来保证了openlist的查找性能。可以说离应用到实现工程中的要求差距不太远了。 如果有谁觉得代码有用的话可以拿去用,但是必须通知我一下。这个要求不高吧。 package main import ( "container/heap" "fmt" "math" "strings" ) import "strconv" type OpenList []*_AstarPoin...阅读全文

博文 2015-12-28 13:00:00 nobugtodebug

revel 项目脚手架scaffold

scaffold === scaffold, generate revel project by database schema 脚手架工具, 通过定义数据表,一键生成Revel管理平台项目。 ### 特点 **通过数据表定义, 一键生成管理平台** [索引页] ![index](http://7xjh31.com1.z0.glb.clouddn.com/scaffold_index.png) [列表页] ![list](http://7xjh31.com1.z0.glb.clouddn.com/user_account_index.png) [新增页] ![add](http://7xjh31.com1.z0.glb.clou...阅读全文

开源项目 2016-01-08 08:07:53

Go实践-文件系统操作

由于自己的PC笔记本,用的是可怜的120G SSD硬盘,相对于现在浩瀚无比的WIN7,VS ,硬盘空间少的可怜,经常导致硬盘空间不足。没办法,每次都人肉清除临时文件比如 VS编译时,生成的.obj文件 连接时生成的.pdb文件还有就是,VS2010引入的为了提高智能提示而生成的.sdf文件。 所以想到用程序自动实现这个功能,刚好正在学习go语言,全当练手了。 程序很简单,就是从某个目录递归开始,删除某些类型的文件 //My first go little program that clean dirty files for vs package main import ( "fmt" "os" "path" "strings" ) var FileTypes2Clean = []string...阅读全文

博文 2015-06-18 09:09:15 simonzhao0536

Toruk:Go Web 开发脚手架

Toruk go web 开发脚手架 主要由下面几个第三方库集成,简单、灵活,可以快速开发web项目 路由:github.com/gorilla/mux渲染模板:github.com/unrolled/renderCookie封装:github.com/gorilla/securecookie中间件:github.com/codegangsta/negroni上下文传输:github.com/gorilla/context 文件结构 使用方法 通过修改http/ruote.go 将数据传到对应的handler中,然后在通过render将数据返回回去。 ruote.go func configConfRoutes(r *mux.Router) { r.HandleFunc("/home", h...阅读全文

博文 2016-11-20 19:00:03 kelvinsdu

一个适合初级 Gopher 练手的项目

本项目见GITHUB:market_monitor 这是一个初级 Gopher 练手的小项目;该项目功能简单,主要实现监测币市行情变化、达到预警效果的功能,大致的使用场景如下: 用户登录服务; 用户设置关注的币种及预警的走势价格; 当行情变化触发到用户的预警设置时,服务将自动发送提醒邮件通知用户; 整体功能简明,通过这个项目你可以了解到: 基于 Go Mod 的项目包管理 Gin 框架的基本开发 Gin 服务跨域问题的处理 基于 JWT 注册、登录等验证流程 数据库 MySQL ORM 的基本使用 缓存数据库 Redis 的基本使用 为项目工程添加配置文件 在项目中添加日志 基于 Cron 的 Scheduler 定时任务 如何为编写的 API 添加 Swagger 接口文档 如何使应用服务...阅读全文

博文 2019-01-12 17:34:38 erik

go语言版的猜数字游戏

猜数字(Bulls and Cows)是一个经典的小游戏. 程序先产生4位各不相同的随机数,然后用户输入0-9四位各不相同的数字,程序将输入的数字与随机数进行对比,位置和数字对应相同者提示为xA,数字相同而位置不同者提示为xB,共15次机会.如随机数为1543,输入5134将提示0A4B,输入1534将提示2A2B,输入1543将提示4A0B(此时用户获胜). 这个游戏逻辑简单但代码实现富有挑战性,非常适合编程练手使用.最近学习go语言中,下面是go语言版的Bulls and Cows: package main import ( "fmt" "time" "math/rand" "os" ) func gen_num(length int)[]int32{ a:=[]int32{1,2,3...阅读全文

博文 2016-06-02 21:00:01 liutgnukernel

Golang练手小项目系列

本系列整理了10个工作量和难度适中的Golang小项目,适合已经掌握Go语法的工程师进一步熟练语法和常用库的用法。golang练手小项目系列(1)-位向量golang练手小项目系列(2)-并发爬虫golang练手小项目系列(3)-并发读取文件夹信息golang练手小项目系列(4)-网络聊天室golang练手小项目系列(5)-并发无阻塞缓...阅读全文

博文 2019-06-29 01:32:41 李说的对

Go web 开发脚手架Toruk

主要由下面几个第三方库集成,简单、灵活,可以快速开发 web 项目 路由:github.com/gorilla/mux 渲染模板:github.com/unrolled/render Cookie封装:github.com/gorilla/securecookie 中间件:github.com/codegangsta/negroni 上下文传输:github.com/gorilla/context ![image](https://static.oschina.net/uploads/space/2017/0217/141112_G0dH_2903254.png...阅读全文

开源项目 2017-02-17 07:00:08 710leo

go语言猜数字小游戏

已经快12点了,先写了发出来,要不就算明天的了今天写的有点晚,现在代码正在调试中,一会发出来 最近看了好多基础的go语言教程,然后教程里都有的也不好意思再在这写一遍了,写一个猜数字小游戏练手,也算用到了很多基础知识了 代码如下: package main import ( "bufio" "fmt" "math/rand" "os" ) func main() { fmt.Println("欢迎来到猜数字小游戏") targetArr := randNum(4) var srcArr [4]int crectNum := 0 reader := bufio.NewReader(os.Stdin) fmt.Println("请输入四个数字连续输入不加空格") for { input, _ :=...阅读全文

博文 2015-06-17 23:00:48 threeyax

【互联网早报】2017.11.20

## 国内新闻 1. 线上线下一哥终牵手,阿里巴巴224亿港元入股高鑫零售 http://www.iyiou.com/p/60281 2. 小米新总部正式落户武汉 总投资230亿 http://tech.sina.com.cn/mobile/n/n/2017-11-20/doc-ifynwnty5533829.shtml 3. 人脸识别公司云从科技完成B轮融资,总计获25亿元资金支持 http://www.iheima.com/zixun/2017/1120/166068.shtml 4. 捌捌玖玖智能获100万融资,资金用于产品升级 http://www.ebrun.com/20171117/255591.shtml 5. 四...阅读全文

收集的前端面试题

收集的一些前端面试题 从面试题发现不足,进而查漏补缺,比通过面试更难得 1 BAT及各大互联网公司2014前端笔试面试题--Html,Css篇 2 BAT及各大互联网公司2014前端笔试面试题--JavaScript篇 3 javascript面试题 4 javascript puzzlers 5 9个JQuery和5个JavaScript经典面试题 6 前端开发面试题 7 如何面试前端工程师:GitHub 很重要 8 44 个 JavaScript 变态题解析 9 如何通过饿了么 Node.js 面试 10 Front-end-Developer-Interview-Questions 11 轻课堂JavaScript面试题 12 前端开发面试题 13 2016腾讯前端JavaScript...阅读全文

博文 2017-09-06 09:34:53 三井寿

Scaffold: revel 项目脚手架, 根据数据表,一键生成管理平台 (https://github.com/liujianping/scaffold)

scaffold === scaffold, generate revel project by database schema 脚手架工具, 通过定义数据表,一键生成Revel管理平台项目。 ### 特点 **通过数据表定义, 一键生成管理平台** [索引页] ![index](http://7xjh31.com1.z0.glb.clouddn.com/scaffold_index.png) [列表页] ![list](http://7xjh31.com1.z0.glb.clouddn.com/user_account_index.png) [新增页] ![add](http://7xjh31.com1.z0.glb.clou...阅读全文

go gin框架脚手架(gapp)

go gin框架脚手架(gapp) go gin框架应用脚手架, 帮助你快速搭建golang项目, 采用流行的go gin框架、gorm操作数据库、godotenv加载.env配置文件 名称 是否支持 数据库 支持 日志分割 支持 .env配置 支持 多主题(themes)模板 支持 多版本api 支持 多版本app 支持 gapp使用说明 gapp使用了那些golang第三方库 gapp目录结构 安装gapp gapp配置 运行gapp 示例文件 1. gapp使用了那些第三方库 框架: gin -> 文档 数据库: gorm -> 文档 .env配置: godotenv -> 文档 2. gapp目录结构 ├─gapp 应用根目录 │ ├─langs 核心语言包目录 │ ├─models...阅读全文

博文 2019-03-27 02:34:38 呵呵wei

仿照laravel-artisan实现简易go开发脚手架

# 像Laravel-Artisan一样执行go命令 ## 前言 作为一个`laravel`重度患者,`artisan`是一个不可或缺的功能,可以说这是`laravel`的开发脚手架 可以快速创建需要的文件,加快开发速度 而我目前正在开发的`bingo`框架正是受到`laravel`启发,希望可以快速构建web应用 而一个脚手架是必不可少的东西,所以我实现了一个`bingo sword` 工具 ### laravel-artisan实现思路 我曾经写过artisan的解析,链接在这里[laravel artisan 原理解析](https://silsuer.github.io/2018/08/06/laravel-commands/) 简而言之,就是将 `kernel.php` 中注册的所...阅读全文

博文 2018-08-12 20:28:34 silsuer

Kratos--安装及配置

安装GO环境 安装protoc以及相关的包和插件 https://www.jianshu.com/p/6942a361e455 安装Kratos Go version>=1.12 and GO111MODULE=on go get -u github.com/bilibili/kratos/tool/kratos 提示:安装过程中可能会出现部分包下载失败,可以手动下载包然后拷贝至相应文件目录。 快速开始 cd $GOPATH/src kratos new kratos-demo cd kratos-demo/cmd go build ./cmd -conf ../configs 打开浏览器访问:http://localhost:8000/kratos-demo/start,你会看到输出了Go...阅读全文

博文 2019-06-26 17:32:44 凉初透的风

北京Python培训机构哪家好?老男孩教育

想要追赶 Python 的热潮,应该如何学习呢?现在许多人在自学之外,都会选择去培训机构学习。选择培训机构的的标准是什么呢?什么样的python培训机构靠谱? **是否有循序渐进的练手项目** 如果课程里面只是对着屏幕把项目代码敲一遍,那其实看了也不能自己真正掌握,重要的是自己在课程作业里动手实践,所以课程中有没有循序渐进的练手项目帮你提升能力,这是很重要的。 **是否涵盖 python web 所需的重点职业技能** 虽然短时间精通多门技能不现实,但至少应该先入门,再在实践中加深印象。如果一点概念都没有,碰到问题也不知道从何下手了。 **是否针对零基础的同学讲解的生动易懂** 不少课程会标注课程所需的知识储备,需要先掌握哪些知识才能看懂这门课,只有少数课...阅读全文

手摸手教你用go写爬虫之一(准备知识:网页抓取)

> 本文介绍网页抓取相关的知识 ### 1. 获取网页内容 > 我们使用 `http.Get()` 方法来获取网页的内容,它相当于`PHP`中的`file_get_contents` ```go url := "https://hz.zu.anjuke.com/" response,err := http.Get(url) ``` >可以看到,该方法返回了一个`response`相应信息的指针以及错误信息 该响应信息中我们要获取的是请求体的内容,可以使用: ```go bytes, err := ioutil.ReadAll(response.Body) defer response.Body.Close() ``` > 注意:`response.Body` 必须手动调用 `Close`方法...阅读全文

博文 2019-02-18 23:23:28 wujiangwei

golang99道练习题之22

**1.题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。** **2.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。** **3.程序源代码: ** ```go package main import "fmt" func main() { for i := 'x'; i <= 'z'; i++ { for j := 'x'; j <= 'z'; j++ { if i != j { for k := 'x'; k <= 'z'; k++ { if i != 'x' && k != 'x...阅读全文

博文 2018-12-11 20:24:11 hdking

SQL+RESTful开源GO脚手架工具ginbro(gin and gorm's brother)

[![](https://upload-images.jianshu.io/upload_images/1643360-77560dbc8747c18a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)](https://github.com/dejavuzhou/felix) ## 安装felix ```bash git clone https://github.com/dejavuzhou/felix cd felix go mod download go install echo "添加 GOBIN 到 PATH环境变量" echo "或者" go get github.com/dejavuzhou/felix echo "...阅读全文

博文 2019-05-22 18:01:19 JJJJJJJerk

手摸手教你用beego实现留言本之四(实现留言本)

> 留言本实现流程: 1. 用户登录,填写留言 2. 展示留言列表 (分页查询和搜索) 3. 实现留言增删改查 ### 1. 增加留言表 ``` CREATE TABLE `leave_message` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `uid` int(11) NOT NULL DEFAULT '0' COMMENT '来自用户表user的id', `content` text NOT NULL COMMENT '留言内容', `status` tinyint(2) NOT NULL DEFAULT '1' COMMENT '是否展示 0 否 1是', `create_at` datetime NOT NULL COMMEN...阅读全文

博文 2019-01-16 15:02:48 wujiangwei

手摸手教你用beego实现留言本之三(实现登录和退出)

> 登录和退出的流程: 1. 输入用户名、密码传到后台 2. 数据库查询结果是否匹配 3. 匹配成功保存 session 跳转首页 4. 退出登录 删除session 这里用到了beego的三个知识点:session | 数据库查询 | 跳转 ### 1. 设置session >首先,我们需要开启 session,在文件 app.conf 中加入 ``` sessionon = true ``` 如果未开启直接访问session可能会报如下错误: ``` goblog:runtime error: invalid memory address or nil pointer dereference ``` #### 1.1 设置session 这里提到的变量 `c` 即是控制器中传入的指针对象...阅读全文

博文 2019-01-15 11:16:01 wujiangwei

go 练手 os文件操作+os包相关

如果文件不存在就创建文件,如果存在就续写文件 package wrigeFile import ( "fmt" "github.com/golang/glog" "os" ) //注意OpenFile这个方法的第二个参数,一定要加上RDWR,可读可写的权限 func writeFile(s string) { file1, err := os.OpenFile("test.txt", os.O_CREATE|os.O_APPEND|os.O_RDWR, 0660) if err != nil { panic(err) } defer file1.Close() if err != nil { fmt.Println(file1, err) return } glog.Infoln(s) fi...阅读全文

博文 2017-03-05 19:48:42 暗黑破坏球嘿哈

手摸手教你用beego实现留言本之一(环境搭建)

> 本人使用的系统是windows,其他环境自行百度 ### 1. 安装git > 如果已经安装,直接忽略 >下载地址:https://git-scm.com/downloads 安装点击下一步,过程忽略 ### 2. 安装go > go下载地址:https://studygolang.com/dl 安装点击下一步,过程忽略 ### 3. 配置GOPATH创建工作区 1. 我创建了一个目录 `E:/go-work/src` 2. 将环境变量`GOPATH` 设置成 `E:/go-work` 3. 设置教程 参考 :https://studygolang.com/articles/17598 ### 4. 下载beego并初始化工程 1. `cd E:/go-work/src` 这个命令不好使...阅读全文

博文 2019-01-14 17:20:29 wujiangwei

golang练手小项目系列(2)-并发爬虫

本系列整理了10个工作量和难度适中的Golang小项目,适合已经掌握Go语法的工程师进一步熟练语法和常用库的用法。问题描述:实现一个网络爬虫,以输入的URL为起点,使用广度优先顺序访问页面。要点:实现对多个页面的并发访问,同时访问的页面数由参数 -concurrency 指定,默认为 20。使用 -depth 指定访问的页面深度,默认为 3。注意已经访问过的页面不要重复访问。扩展:将访问到的页面写入到本地以创建目标网站的本地镜像,注意,只有指定域名下的页面需要采集,写入本地的页面里的元素的href的值需要被修改为指向镜像页面,而不是原始页面。实现import ( "bytes" "flag" "fmt" "golang.org/x/net/html" "io" "log" "net/h...阅读全文

博文 2019-06-29 01:32:42 李说的对

手摸手教你用go写爬虫之三(单任务版爬虫1.0)

> 本文介绍爬虫相关流程和搭建 ### 1. 项目需求 > 我们的需求分三步: 1. 从租房网站上获取到杭州市的所有区的链接和名称 2. 根据每个区的链接抓取第一页列表内容,找到房屋的链接和名称 3. 根据第2步中获取的链接,抓取对应的房屋的具体信息 ### 2. 项目流程 > step 1 从项目需求中可以分解出俩个信息 三步中均需要抓取 那么就要提供 url 三步中均需要解析 那么需要提供解析函数 func > 每一步解析到的结果我们需要暂存下来,如果含有链接需要继续抓取 这里我们抽象出两个结构体 ```go //请求结构体 type Request struct { Url string ParserFunc func(string) RequestResult } //结果解析结构体...阅读全文

博文 2019-02-20 20:13:19 wujiangwei

golang练手小项目系列(3)-并发读取文件夹信息

问题描述:实现一个程序计算并打印输入的目录下所有文件的总数和总大小(以GB计算)。完成之后你将熟悉select、WaitGroup、ioutil的用法。要点:并发读取文件(夹)信息。限制开启的goroutines的最大数量。运行时每隔500ms打印当前已经统计的文件数和总大小(使用命令行参数指定此功能是否启用)。拓展:在执行中在有外部输入时退出程序。实现:import ( "flag" "fmt" "io/ioutil" "os" "path/filepath" "sync" "time")var verbose = flag.Bool("v", false, "show verbose progress messages")var sema = make(chan struct{}, 50...阅读全文

博文 2019-06-29 01:32:42 李说的对

golang练手小项目系列(1)-位向量

本系列整理了10个工作量和难度适中的Golang小项目,适合已经掌握Go语法的工程师进一步熟练语法和常用库的用法。 问题描述: 有一组非负整数,实现一个位向量类型,能在O(1)时间内完成插入、删除和查找等操作。 要点: 实现Has(uint)、Add(uint)、Remove(uint)、Clear()、Copy()、String()、AddAll(…uint)、UnionWith()、IntersectWith()、DifferenceWith()、SymmetricDifference()方法。 拓展: 使用uint存储而不是uint32或uint64这样限定字长的类型。 代码实现: import ( "bytes" "fmt" ) func (s *IntSet)countBit(n ...阅读全文

博文 2019-06-29 14:32:37 李说的对

golang练手小项目系列(4)-网络聊天室

问题描述:实现一个网络聊天室服务端。完成之后你将熟悉select、net库、time定时器的用法。要点:用户发来的消息广播给所有接入聊天室的用户。新用户进入的时候能收到聊天室所有其他用户的名字列表。使用netcat工具作为客户端。拓展:当用户不活跃的时间超过指定时间后,断开用户的连接。代码:import ( "bufio" "fmt" "log" "net" "time")type client struct { Out chan<- string Name string}var ( entering = make(chan client) leaving = make(chan client) messages = make(chan string))var timeout = 10 * ...阅读全文

博文 2019-06-29 01:32:42 李说的对

周年回馈——劲爆折扣疯狂价(手慢无)

2018 年是 51Reboot 步入正轨以来走过的第 3 个年头,在这 3 年里 51Reboot 帮助数以千计的程序员提升技能从而获得更好的职位和薪资。当然了这 3 年里也有许多的坎坷和困难,从第一期课程开始我们每期课程实时跟进采纳学员意见进一步改进和完善课程质量和服务。一直到现在我们依旧在继续根据技术职场的发展而实时的完善课程。目的就是为了让大家学到真知可以立马就应用到自己的工作中。 在这个周年庆+双十二的时间里,我们深思熟虑后为大家推出了周年庆回馈活动,不是全年最大折扣而是 51Reboot 成立以来的最大折扣。 本次活动最大优惠力度 6 折 Python 零基础入门课程 此课程为网络直播课程,15+个课时,每周上一个全天,历时4个月。 附加:录播视频+笔记+除课堂外的答疑时间(10...阅读全文

博文 2018-12-05 12:34:41 51reboot

golang练手小项目系列(5)-并发无阻塞缓存

问题描述:如下的函数被并发调用时,如果有重复的URL(在一个routine中被多次访问或多个routine访问同一个url),会产生冗余的网络请求。请实现一个并发安全的缓存,以提高网络的利用效率和降低函数的执行时间。完成后你将熟悉互斥锁的使用。func httpGetBody(url string)(interface{},error){ resp,err:=http.Get(url) if err!=nil{ return nil,err } defer resp.Body.Close() return ioutil.ReadAll(resp.Body)}要点:注意多个routine同时访问同一个URL时只需要发出一个网络请求。拓展:代码实现1:import ( "sync")type r...阅读全文

博文 2019-06-29 01:32:41 李说的对