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

Go Runtime hashmap实现

前两天有小伙伴问道是否看过 Go 语言 map 的实现,当时还真没看过,于是就花了一点时间看了一遍 runtime 源码中的 hashmap 实现。map 的底层实现就是一个 hash 表,大体结构上和平时在脑海里的 hash 表差不多,但确实有很多细节(“Devils in the details”)。 hashmap 通过一个 bucket 数组实现,所有元素将被 hash 到数组中的 bucket 中,bucket 填满后,将通过一个 overflow 指针来扩展一个 bucket 出来形成链表,也就是解决冲突问题。这也就是一个基本的 hash 表结构,没什么新奇的东西,下面总结一些细节吧。 注意一个 bucket 并不是只能存储一个 key/value 对,而是可以存储8个 key/...阅读全文

golang使用walk编写的博客搜索查看的windows下的GUI软件

为了学习golang,我使用了golang walk这个windows下的GUI包实现了一款博客搜索查看的小软件。 **先上个展示图** ![输入图片说明](https://static.oschina.net/uploads/img/201708/25121015_VrPe.png "在这里输入图片标题") ![输入图片说明](https://static.oschina.net/uploads/img/201708/25121037_6gZp.png "在这里输入图片标题") **实现了几个功能** 1. 可以查询五个博客网站 2.可以翻页 3.有收藏功能 ``` // Copyright 2012 The Walk Authors. All rights reserved. // Us...阅读全文

博文 2017-08-25 06:06:14 timzzx

欢迎来到AI的世界:从树莓派,Arduino 到 HEXA | 了解机器人开发必看

嗨,大家好!我是Neo。最近几年人工智能(AI)可以说是个如火如荼的新锐概念。但不同于大疆的无人机或者各种VR设备,AI设备本身由于兼具了软硬件的要求,门槛其实还是挺高的。 比如对于之前刷屏的波士顿动力的后空翻机器人Atlas,无论是机械结构,还是运动平衡算法,都是普通玩家没法企及的。别的不说,数百甚至数千万美元的研发投入,就让大家只能看看而已了。 ![输入图片说明](https://static.oschina.net/uploads/img/201801/10122645_plM7.gif "在这里输入图片标题") 同时对于极客和硬件玩家来说,面对茫茫多的新概念,比如Raspberry Pi啦,Arduino啦,似乎都是非常火的产品二次开发社区。那么到底该如何选择呢,...阅读全文

golang实现图片缩放服务器

测试地址 http://127.0.0.1:6789/1000/789.png http://127.0.0.1:6789/400/789.png 中间数字是图片尺寸 package main import ( "fmt" "graphics" "image" "image/png" "log" "net/http" "os" "strconv" "strings" ) func main() { http.HandleFunc("/", doImageHandler) http.ListenAndServe("127.0.0.1:6789", nil) } func doImageHandler(w http.ResponseWriter, r *http.Request) { fmt.P...阅读全文

博文 2015-10-21 04:00:02 zb_liang

Golang 中 print 与 fmt.print的区别

结论: print 在golang中 是属于输出到标准错误流中并打印,官方不建议写程序时候用它。可以再debug时候用 image.png fmt.print 在golang中 是属于标准输出流,一般使用它来进行屏幕输出. image.png By the way : fmt.Printf是格式化输出 fmt.Println是输出后换行 fmt.Sprint 是返回一个格式化的字符串 image.png One more word: 上图中所示的第10行输出结果为"宋佳",但打印区却优先显示了第12行的打印结果,我猜想可能是go语言这个内置函数print是用一个协程去跑,所以每次打印出现位置都不一样。但是fmt是一直在main协程里面调用,所以在控制台的输入是固定的.所以把第12行替换成fm...阅读全文

博文 2019-04-15 04:34:39 右哼哼丨左哼哼

如何判断图片空白的(纯白色)

想在项目中比较连个pdf的内容是否一致,反复选择后决定使用imagemagick的compare命令获得一个差异图片。根据compare原理空白时两个pdf的内容是一样的,否则反之。问题是如何判断获得的差异图片是纯白的(diff.jpg) 多谢启发! -quote- compare TEST1.pdf TEST2.pdf -compose src diff.jp...阅读全文

单用标准库没法无损地保存一个带色板的PNG了么?

一时兴起尝试go编写一个图形转换的软件,然后发现了这么一个问题,就是Decode一个带RGBA色板的PNG,然后直接Encode,最后是得不到原来一样的图片的。 拼凑了个很简单的测试代码。 func main(){ f,_ := os.Open("sample.png") defer f.Close() img,_ := png.Decode(f) out,_ := os.Create("result.png") defer out.Close() png.Encode(out,img) } 图片就随便用游戏开发中常见的带透明通道的logo或人物头像。 转换的图片用普通图片浏览器看是没有问题的,但是需要对这张图片进行alpha渲染的话...阅读全文

Go Hashmap内存布局和实现

想了解Go内置类型的内存布局的契机,是一次在调试“不同类型的小对象频繁创建对gc性能的影响”时发现map的gc性能不佳,而作为对比的包含slice的struct却很好。这里总结Go runtime里map的实现,可以解释这个问题。 hash table内部结构Go的map就是hashmap,源码在src/runtime/hashmap.go。对比C++用红黑树实现的map,Go的map是unordered map,即无法对key值排序遍历。跟传统的hashmap的实现方法一样,它通过一个buckets数组实现,所有元素被hash到数组的bucket中,buckets就是指向了这个内存连续分配的数组。B字段说明hash表大小是2的指数,即2^B。每次扩容会增加到上次大小的两倍,即2^(B+1)...阅读全文

博文 2017-12-18 13:58:29 nino's blog

Go 安装

如何判断机器是32还是64位系统 我们接下来的Go安装需要判断操作系统的位数,所以这小节我们先确定我们自己的系统类型。 针对window系统,右击我的电脑,点击属性,显示的信息里面我们可以判断出来,XP系统如果是64位的,那么会显示X64,如果没有X64,那么默认都是32位。window7系统也是查看我的电脑的属性,在系统类型里面会显示使用的系统类型,64位操作系统或者32位操作系统。 Mac系统的用户建议直接使用64位的,因为Go支持的Mac OS X已经不支持在纯32位处理器上跑了。 Linux系统通过命令uname -a可以查看系统的信息: 64位机器显示 前面有一段描述 x86_64 x86_64 x86_64 GNU/Linux 32位机器显示 前面有一段描述 i686 i686 ...阅读全文

限量赠票丨本周六来品玩HAY!17,用HEXA挑战全地形!

在枝丫萧瑟的北京深冬,周末去哪儿浪? 不如来品玩HAY!17现场! 12月16日(本周六),由PingWest品玩举办的「HAY!17」将拉开帷幕。 HAY!17是一场融合科技娱乐和消费文化的年度数字嘉年华 现场分为“不止降噪”、“无穷造物”以及“无限游园”三大板块 分别承载跨界重磅嘉宾的年度演讲、工匠手作和艺术装置的趣味互动、大牌厂商和潮流品牌的展示 ![输入图片说明](https://static.oschina.net/uploads/img/201712/13112022_CcLQ.png "在这里输入图片标题") 在本届活动中,Vincross将携首款全地形可编程机器人HEXA入驻“无限游园”板块 现场挑战楼梯、窄洞、崎岖...阅读全文

Go手动内存分配

2013-10-27 Go手动内存分配 Go手动内存分配 用Go的时候,有时候又想自己管理内存。所以决定写个手动内存管理的包吧。就当无聊练练手... 总体设计 两级分配。较大内存以页为单位分配,每页4k。分配出去的大块内存只能是1页,2页,3页...较小内存使用buddy算法结合分配池的方式进行分配。buddy算法主要是方便回收,对于各种不规则大小则分别维护一个free的链表。 整体上基本类似于Go本身使用的内存管理算法,除了没有引入垃圾回收标记信息,以及对小对象使用buddy分配算法。 buddy算法 管理结点使用的内存跟最小最大结点相关。如果最小单元太小,则浪费过多的管理结点。管理结点数目=最小单元数目*2 如果最大单元过大,则需要用更长的整型来记录大小,单个管理结点的大小增加。 bud...阅读全文

博文 2015-03-17 10:25:55 zenlife

关于go中map的内存释放

示例代码: go version: 1.12.9 package main import ( "log" "runtime" ) var intMap map[int]int var cnt = 8192 func main() { printMemStats() initMap() runtime.GC() printMemStats() log.Println(len(intMap)) for i := 0; i < cnt; i++ { delete(intMap, i) } log.Println(len(intMap)) runtime.GC() printMemStats() intMap = nil runtime.GC() printMemStats() } func ini...阅读全文

我开发了一个机器人应用,让 HEXA 机器人可以追逐光——HEXA The Light Chaser

_可编程全地形机器人HEXA在正式面向用户时,曾发起“HEXA人类导师计划”,收到了来自全球各个国家机器人爱好者的购买和申请。经过一段时间的探索,有不少用户利用HEXA开发出了许多有趣的应用,我们将陆续把用户们开发的技能分享给大家,并分享出具体实现的代码,感兴趣的伙伴们可以尝试体验。_ _这次我们分享的是来自澳大利亚堪培拉的一名科学老师,他利用HEXA开发了一个可以追寻光的Skill(机器人应用),以下是他实现的经过:_ 我是一个科学老师,几个月前参与了HEXA人类导师计划。这几个月我都在各种倒腾HEXA,熟悉它的SDK,希望能给我的学生们开发一些新的好玩的skill。上个周末我在看小黄人电影得到了一个灵感,我想让HEXA变成一个小黄人一样的机器人,能追着舞台灯光跑,古怪又逗趣。...阅读全文

gomoblie flappy 源码分析:图片素材和大小的处理

flappy的源码可以在 https://github.com/golang/mobile 看到。具体在 https://github.com/golang/mobile/tree/master/example/flappy 图片素材的处理 flappy 的图片素材使用的是 1408*128 像素的 png 图, 如下图: 这实际是 11个并排的 128*128像素的素材合并的一个图片。 这些纹理的素材通过依次加载到对应的SubTex中,如下图代码所示: 这里为例避免黑条, 两边各少取1个像素。 http://stackoverflow.com/questions/19611745/opengl-black-lines-in-between-tiles 精灵图片的切换 具体到每个精灵,何时该...阅读全文

博文 2016-02-29 16:00:00 ghj1976

elk基于jolokia监控springboot应用jvm方案

目前大部分应用都采用springboot 的方式部署,springboot 采用jar包发布,而jvm的运行状态又比较关键,因此用elk对jvm监控进行了集成,步骤如下: 一 springboot 项目配置 对于springboot项目,需要的配置是在pom文件里面增加对jolokia的支持: org.springframework.boot spring-boot-starter-actuator org.jo...阅读全文

博文 2018-06-28 18:34:38 冬天里的懒喵

Go 语言数据类型

Go 语言数据类型在 Go 编程语言中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。Go 语言按类别有以下几种数据类型:序号类型和描述1布尔型布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。2数字类型整型 int 和浮点型 float,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。3字符串类型:字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。Go语言的字符串的字节使用UTF-8编码标识Unicode文本。4派生类型:包括:(a) 指针类型(Pointer)(b) 数组类型(...阅读全文

博文 2016-02-12 14:00:00 u011225629

移动H5前端性能优化指南

脚本执行优化预加载首屏加载 2015 /11/12 15:15 1条评论 移动H5前端性能优化指南 概述 1. PC优化手段在Mobile侧同样适用 2. 在Mobile侧我们提出三秒种渲染完成首屏指标 3. 基于第二点,首屏加载3秒完成或使用Loading 4. 基于联通3G网络平均338KB/s(2.71Mb/s),所以首屏资源不应超过1014KB 5. Mobile侧因手机配置原因,除加载外渲染速度也是优化重点 6. 基于第五点,要合理处理代码减少渲染损耗 7. 基于第二、第五点,所有影响首屏加载和渲染的代码应在处理逻辑中后置 8. 加载完成后用户交互使用时也需注意性能 优化指南 [...阅读全文

opencv ubuntu golang

21天精品区块链课程免费学习,深入实战行家带路,助力开发者轻松玩转区块链! >>> 安装 #3.4.2 sudo apt-get install opencv sudo apt-get install golang-1.9 vi ~/.profile export GOPATH=$HOME/Desktop/GoPath export PATH=$PATH:$GOPATH/bin :wq! #https://github.com/hybridgroup/gocv #version 0.14.0 go get gocv.io/x/gocv gocv //灰度图 gocv.CvtColor(img,&grayMat, gocv.ColorRGBAToGray) //均值滤波 gocv.Blur(g...阅读全文

博文 2018-09-01 14:33:13 zzdglf

golang test说明解读

go test是go语言自带的测试工具,其中包含的是两类,单元测试和性能测试 通过go help test可以看到go test的使用说明: 格式形如: go test [-c] [-i] [build flags] [packages] [flags for test binary] 参数解读: -c : 编译go test成为可执行的二进制文件,但是不运行测试。 -i : 安装测试包依赖的package,但是不运行测试。 关于build flags,调用go help build,这些是编译运行过程中需要使用到的参数,一般设置为空 关于packages,调用go help packages,这些是关于包的管理,一般设置为空 关于flags for test binary,调用go hel...阅读全文

博文 2014-10-04 19:27:29 chunhei2008

golang调用c++dll 获取mac地址,用户名,内存大小

### 功能: c++实现获取主机的的内存大小,系统用户名,mac地址和硬盘序列号,然后封装成dll给go调用,并提供go调用的接口。[github传送门](https://github.com/easyAation/go-mac) ***GIT 地址 https://github.com/easyAation/go-mac*** ### 运行截图: ![这里写图片描述](http://img.blog.csdn.net/20171110150953144?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveW91cl9leWVzX3NlZV9zZWE=/font/5a6L5L2T/fontsize/400/fill/I0JBQk...阅读全文

Go语言暴力入门1

Go语言暴力入门1 程序开发人员,不拘泥于语言与技术,合适和够用是最完美的追求,2017.05.04开始学习Go语言。 个人网站:http://www.linganmin.cn Go语言简介 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 安装Go语言环境 请自行Google/Baidu,或者参考官网: 第一个Go程序 package main // 给包命名 ...阅读全文

博文 2017-05-04 10:00:54 安小下

自适应网站制作教程

想必很多人都跟小编一样,第一次听到自适应网站这个词的时候,都感觉很陌生,不了解是什么,是一个什么类型的网站。那什么是自适应网站呢?前几年Ethan Marcotte提出了“自适应网页设计”这个名词,指的是可以自动识别屏幕宽度,做出相应调整的网页设计。其实简单来讲,自适应网站就是能够适应不同分辨率屏幕的网站,一站通行,不需要再为每一个不同屏幕大小的设备重新制作一个网站版本。那自适应网站该如何制作呢?自适应网站与响应式网站区别是什么? 一、允许网页宽度自动调整 首先,在网页代码的头部,加入一行viewport元标签。 ...阅读全文

机器人应用(Skill)精选丨让HEXA机器人成为直播网红,还可以接收红外信号

![输入图片说明](https://static.oschina.net/uploads/img/201712/20175950_VTsn.jpg "在这里输入图片标题") 上次我们为大家精选的两个机器人应用(Skill),可以说是补充了HEXA机器人的“基础建设”。无论是可以校正舵机的Servo inching,还是引导用户使用3D模拟器的Simulator Kit,都让HEXA机器人的操作可以更加自主和便捷。 这期的机器人应用(Skill)精选,我们选择的两个Skill则进一步拓展了HEXA的使用场景:让HEXA机器人化身直播网红,也为HEXA机器人实现家庭智能管家的梦想提供了可能。 想知道新的机器人应用(Skill)如何玩?下面正式进入本期的Skill推荐: *...阅读全文

golang test说明解读

go test是go语言自带的测试工具,其中包含的是两类,单元测试和性能测试 通过go help test可以看到go test的使用说明: 格式形如: go test [-c] [-i] [build flags] [packages] [flags for test binary] 参数解读: -c : 编译go test成为可执行的二进制文件,但是不运行测试。 -i : 安装测试包依赖的package,但是不运行测试。 关于build flags,调用go help build,这些是编译运行过程中需要使用到的参数,一般设置为空 关于packages,调用go help packages,这些是关于包的管理,一般设置为空 关于flags for test binary,调用go hel...阅读全文

通过拆分多帧的方式WebSocket发送图片

package main import ( "fmt" "golang.org/x/net/websocket" "log" "net/http" "os" "time" ) var ( dirPath string test byte lenFile int ) func check(e error) { if e != nil { panic(e) } } func ChatServer(ws *websocket.Conn) { defer ws.Close() var test []byte var payload []byte for { err := websocket.Message.Receive(ws, &payload) if err != nil { log.Print...阅读全文

博文 2017-02-09 08:26:50 载昊君

自助建站系统有什么优势

“自助”这个词可能很多人会第一时间想到的是衣食住行方面的,对于互联网来说,“自助”可能更多被运用在网站功能、软件方面。如果做网站也变得“自助”起来了,会变成怎么样呢?今天我给大家说说网站建设怎么自助化,自助建站系统有什么优势。 自助建站系统的出现时是为了方便帮助中小型企业、个人自助快速的建设网站。便捷、快速、简单的建站方式让你在建设网站过程中,节约大量的人力、物力、资金。现在越来越多企业想要通过网络为自己带来效益,从而搭建网络营销渠道,网络营销渠道的核心就是建设企业网站,通过网站来开拓自己的渠道。 为什么要选择自助建站系统呢? 1.自助建站就是通过一套完善、智能的系统,让不会建设网站的人通过一些非常非常简单的操作就能轻松建立自己的网站。自助建站一般是将已经做好的网站...阅读全文

Golang 图片处理(旋转/居中)

简单旋转分为顺时针旋转90度,顺时针旋转180度,顺时针旋转270度。说到底其实就是矩阵旋转,将各个像素点的色值重新赋值 // 旋转90度 func rotate90(m image.Image) image.Image { rotate90 := image.NewRGBA(image.Rect(0, 0, m.Bounds().Dy(), m.Bounds().Dx())) // 矩阵旋转 for x := m.Bounds().Min.Y; x < m.Bounds().Max.Y; x++ { for y := m.Bounds().Max.X - 1; y >= m.Bounds().Min.X; y-- { // 设置像素点 rotate90.Set(m.Bounds().Max...阅读全文

博文 2019-12-28 21:32:42 韬大帅

golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好

golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好 jetbrain家的全套ide都很好用,一定要dark背景风格才装B 从File-->setting 里面进去也可以设置风格和字体大小 注册的可以找个代理的 license 服务器 或者自己搭建一个 https://www.jetbrains.com/go/download window下也可以选择Visual Studio Code: Visual Studio Code - Code Editing. Redefinedhttps://code.visualstudio.com...阅读全文

博文 2018-06-07 15:30:01 zdz8207

ChainDesk:配置Fabric-SDK

点击此处添加图片说明文字 ​作者:ChainDesk韩小东ChainDesk官网:http://www.chaindesk.cn/?20190117jinritoutiaomeiti目标明确SDK-GO的相关配置使用SDK提供的相关API创建通道并通过测试任务实现Hyperledger Fabric 提供了许多 SDK 来支持各种不同的编程语言,但是因为 Hyperledger Fabric 是使用 Golang 构建的,所以我们将使用 Go 语言来设计应用程序,包括链码(智能合约)。如果您想使用其它 SDK,如 Fabric-SDK-Java,Fabric-SDK-Node等等,这些都可以通过在线文档进行学习,我们不在这里讨论。11.1.1 配置Fabric-SDK确认 Hyperledg...阅读全文

linux

Buffer和Cache ![image.png](https://static.studygolang.com/190509/5b13b37e091a74234aacb4c1eacbb120.png) Cache(缓存),为了调高CPU和内存之间数据交换而设计,Buffer(缓冲)为了提高内存和硬盘(或其他I/O设备的数据交换而设计)。 free命令看Linux内存 ![image.png](https://static.studygolang.com/190509/68bc4aac05edf8a6fba61fd4e97a1c0d.png) total:总内存大小。 used:已经使用的内存大小(这里面包含cached和buffers和shared部分)。 free:空闲的内存大小。 sh...阅读全文

这个机器人应用,可以让机器人变成火警情报员

_可编程全地形机器人HEXA在正式面向用户时,曾发起“HEXA人类导师计划”,得到不少用户的购买申请,随着体验的深入,不少用户开发出了许多有趣实用的机器人应用,我们将陆续把这些应用的代码分享出来,感兴趣的伙伴们可以尝试体验。今天分享的是用户RiverLLZ开发的火情警报的机器人应用(Skill)——Fire Marshall Rob_ ![输入图片说明](https://static.oschina.net/uploads/img/201711/10142843_0MWN.png "在这里输入图片标题") 我在入手HEXA之前,曾玩过Arduino套件。所以在拿到HEXA之后很自然就想把两样”混搭”一下。在Arduino套件里我有一个火焰传感器,是之前在网上买的,非常便宜。要是能把它装在HE...阅读全文

HEXA 机器人怎么玩?本次推荐的 Skill(机器人应用)给了大家一些小思路

这次的Skill精选,没有像上次推荐的Light Chaser和Fire Marshall Rob一样,具备类似追寻光线、预警火情这样实际应用的功能。但从可玩性来说,今天我们推荐的两款工具类Skill却不输前两者,经过今天的介绍,你或许会对HEXA的玩法又多一些想象。 下面正式进入今天的Skill精选: ![输入图片说明](https://static.oschina.net/uploads/img/201712/13111218_JGB6.png "在这里输入图片标题") **Simulator Kit** 熟悉HEXA的朋友应该知道,HEXA在开发方面的友好程度,除了在系统方面降低了机器人爱好者和开发者学习和探索机器人开发的门槛外,对于小白用户,我们还提供了3D...阅读全文

关于go中的unsafe包

Unsafe code Unsafe code是一种绕过go类型安全和内存安全检查的Go代码。大多数情况,unsafe code是和指针相关的。但是要记住使用unsafe code有可能会损害你的程序,所以,如果你不完全确定是否需要用到unsafe code就不要使用它。 以下面的unsafe.go为例,看一下unsafe code的使用 package main import ( "fmt" "unsafe" ) func main() { var value int64 = 5 var p1 = &value var p2 = (*int32)(unsafe.Pointer(p1)) 复制代码这里使用了unsafe.Pointer()方法,这个方法能让你创造一个int32的p2指针去指向...阅读全文

博文 2019-07-28 23:34:14 lucifer_L

决定以太坊未来的3个重要项目

在过去的几年里,以太坊已经成为加密货币领域最重要的项目。 作为市场中大多数代币的 底层基础设施,以太坊网络的健康对于加密数字币生态系统中的其他环节至关重要,以太坊 也一直在努力跟上增长。 交易容量一直困扰着以太坊网络,以至于许多专家推出了辅助项目 来创建替代性区块链,以便从头解决一些限制。 然而,以太坊团队并没有闲着,目前已经 有几个项目作为以太坊基金会的一部分进行孵化,重点就是解决当前版本的以太坊中的一些 基本限制。 以太坊的第二层扩容解决方案改进了以太坊网络的一些基本方面,如共识协议或其安全模型。 考虑到以太坊公共区块链的规模和活跃度,你可以想象在不中断网络的情况下实施这些增强 措施是一项巨大的挑战。 虽然以太坊网络有好几个第二层扩容项目,但有三个以及接近全面...阅读全文

golang使用nfnt缩放图片

nfnt地址 https://github.com/nfnt/resize package main import ( "fmt" "github.com/nfnt/resize" "image/jpeg" "log" "os" ) func main() { // open "test.jpg" file, err := os.Open("C:\\Users\\cixu\\Desktop\\1\\5.jpg") if err != nil { log.Fatal(err) } // decode jpeg into image.Image img, err := jpeg.Decode(file) if err != nil { log.Fatal(err) } file.Close() ...阅读全文

博文 2019-01-27 20:34:43 次序

轻松搞定Golang(百度、豆瓣)爬虫实战

image 〖课程介绍〗 明确目标 Url 发送请求,获取应答数据包。 http.Get(url) 过滤 数据。提取有用信息。 使用、分析得到数据信息。 〖课程目录〗 Day1 01爬虫简介.mp4 02-贴吧分页分析.avi 03-百度贴吧爬虫实现.avi 04-百度贴吧爬虫实现流程总结.avi 05-正则简介.avi 05-百度贴吧并发版爬虫.avi 06-正则-字符类.avi 07-午后回顾.avi 08-正则-数量限定符-单元.avi 09-go语言使用正则-测试字符.avi 10-go语言使用正则-测试小数.avi 11-go语言使用正则-测试网页标签数据.avi 12-go语言使用正则-提取数据函数返回值说明.avi 13-豆瓣电影横、纵向爬取.avi 14-豆瓣电影-爬取电影名...阅读全文

Golang gif 图像验证码:gifCaptcha

gifCaptcha gif 图形验证码 https://github.com/zxbit2011/gifCaptcha 丰富自定义设置 图片大小 多颜色 文字模式 文字数量 干扰强度 快速使用 > go get github.com/zxbit2011/gifCaptcha 示例代码 package main import ( "github.com/zxbit2011/gifCaptcha" "image/color" "image/gif" "net/http" ) var captcha = gifCaptcha.New() func main() { //设置颜色 captcha.SetFrontColor(color.Black, color.RGBA{255, 0, 0, 25...阅读全文

博文 2019-09-29 14:33:08 aside section ._1OhGeD

golang 生成二维码海报

生成带头像的二维码 import ( "errors" "fmt" "github.com/nfnt/resize" "github.com/skip2/go-qrcode" "image" "image/draw" "image/png" "os" ) var err error func createAvatar() (image.Image, error) { var ( bgImg image.Image offset image.Point avatarFile *os.File avatarImg image.Image ) bgImg, err = createQrCode("http://www.baidu.com") if err != nil { fmt.Println(...阅读全文

方法,接口学习笔记

之前在开发中编得过就行,没有好好地去思考一些细节问题,比如interface到底有什么用,现在好好总结下1.方法 package main import "fmt" import "reflect" type S struct { a int } func (s S) Set1(v int) { s.a = v } func (s *S) Set2(v int) { s.a = v } func (s *S) Get() int { return s.a } func main() { var s1 S var s2 *S s1.Set1(100)//receiver类型为T的实例,Set1修改的只是s1的副本 fmt.Println(s1.Get()) s1.Set2(100)//rece...阅读全文

Tinify API client for Golang——tinify-go

前言 Tinify是一个提供图片compress、resize 服务的网站,在肉眼看不失真的基础上能够极大的压缩图片文件大小,具体介绍可以看他们的官网 https://tinify.com。 Tinify官方提供了很多语言的SDK,但是并没有Golang的。前几天写了一篇文章 Golang + Tinypng实现图片压缩,里面谈到了Golang使用Tinify官方提供的 HTTP API client 实现compress的一些想法,但是毕竟简单,所以工作之余在官方 HTTP API client的基础上模仿官方其他语言的实现,使用Golang实现了一个Golang版本的 Tinify API client——tinify-go。 Github https://github.com/gwpp...阅读全文

博文 2017-06-13 06:07:01 gwpp

【Go语言】【12】GO语言的结构体

当我第一次接触到C语言时,就对结构体投入了极大的兴趣,认为这个东西以后大有作为,后来接触Java、C++,面向对象编程中的对象进入我的视线,经过了这么多年的磨练,回过头来再看结构体依旧是那么亲切;同时从另一个角度上看结构体与面向对象中的成员对象是多么的相像 :)一、结构体元素结构体由关键字、结构体类型名称和具体成员构成,如下:二、结构体初步认识下面通过对比数组(复合类型)来了解一下结构体:1、从存储类型来看数组只能存储相同的类型:s := []string{"a", "b", "c", "d", "e"}结构体可以存储不同的类型// 声明结构体type employee struct { name,address string // 姓名、住址 age int // 年龄 height,we...阅读全文

博文 2017-02-09 15:59:40 qingkechina

Golang内存对齐

如何得到一个对象所占内存大小? fmt.Println(unsafe.Sizeof(int64(0))) // "8" type SizeOfA struct { A int } unsafe.Sizeof(SizeOfA{0}) // 8 type SizeOfC struct { A byte // 1字节 C int32 // 4字节 } unsafe.Sizeof(SizeOfC{0, 0}) // 8 unsafe.Alignof(SizeOfC{0, 0}) // 4 结构体中A byte占1字节,C int32占4字节. SizeOfC占8字节 内存对齐: 为何会有内存对齐?1.并不是所有硬件平台都能访问任意地址上的任意数据。2.性能原因 访问未对齐的内存,处理器需要做两次内存...阅读全文