![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Golang
夕阳醉了半边天
一个肥肥的程序员
展开
-
Golang bufio.Reader ReadLine学习
之前学习go的时候被这个ReadLine坑了一段时间,以为加个for循环就会一行一行的读下去。当时好像调试了半天之类的,总之今天来带你们看看他怎么实现的吧。首先我们构造一个Reader方便我们调试与分析:sr := strings.NewReader("123\n456");reader := bufio.NewReader(sr);line, _, err := reader...原创 2018-08-11 01:51:23 · 16211 阅读 · 0 评论 -
golang http clietn 上传文件
今天使用网上无意间看到了搜狗图片上传,使用浏览器的方式实现的。于是就用go尝试了下//上传文件的apiuploadUrl := "http://"file, err := os.OpenFile("QQ20180817-202205.png", os.O_RDONLY, os.ModePerm)if err != nil { panic(err)}定义上传地址跟打开...原创 2018-08-17 23:33:52 · 1844 阅读 · 0 评论 -
Golang 使用http Client下载文件
之前使用beego的http库的时候,有的情况需要下载文件。beego是能实现,但就是有点问题:不支持回调,没法显示下载速度,这在日常开发中是不可忍受的。 看了下beego的实现主要是使用了io.copy函数,于是就深入的看了下实现原理,发现挺简单的,于是就根据io.copy原理实现的一个简单的下载器//定义要下载的文件var durl = "https://dl.google.c...原创 2018-08-17 01:07:33 · 17251 阅读 · 8 评论 -
golang 学习笔记 runtime.Caller
runtime.Caller 学习笔记今天阅读log的源码的时候发现他会去调用runtime.Caller 获取文件名称跟行数好奇心就来了,java或者其他语言的开发中log打印文件名称跟行数是一种很正常的事,具体怎么实现的一直没有研究过。今天就研究下golang中是怎么实现的func Caller(skip int) (pc uintptr, file string, line in...原创 2018-09-05 11:08:50 · 9842 阅读 · 2 评论 -
Golang GBK To Utf-8
gbk to utf-8最近在写一个爬取小说网站的小爬虫工具,爬取的过程中发现爬取的网站编码并不是utf-8编而是gbk编码,上网差了点资料,发现网上一些推荐的库,我个人感觉设置的不是很符合Go的设计模式或者说功能太多了,于是上网查了点资料。首先不了解gbk跟utf-8 是什么东西的请百度首先go识别的编码就是utf-8,所以我只需要把gbk转换到utf-8编码即可。func main(...原创 2018-10-22 15:01:51 · 5318 阅读 · 0 评论 -
kmutex源码分析
昨天偶然阅读pouch项目的源码发现有个kmutex库看了下代码发现挺有意思的。根据chan的特性,进行上锁、解锁,某些场景下很是方便!源码详情地址:github首先是结构体有两个type KMutex struct { sync.Mutex keys map[string]*value}type value struct { c chan struct{} wait...原创 2019-01-18 11:53:10 · 259 阅读 · 0 评论 -
webSocket server 跟http包一起使用方法
webSocket server 跟http包一起使用方法最近在捣鼓一个小工具需要用到http+websocket,就去百度了下发现网上大部分教程都是用的github.com/gorilla/websocket这个包作为实例。之前记得x/net下面是有一个websocket包的.想着官方的东西解耦可能更好点,就再网上搜了下但是关于这个包的实例很少。既然这样那就看下这个包下有没有example(...原创 2019-04-13 18:46:06 · 2929 阅读 · 0 评论 -
GO实现ssh客户端的基本功能
最近有个功能要求实现ssh 客户端的基本功能,想起来Go有自己实现的一套的SSH协议,就从网上找了份源码看了下,发现不支持tab、↑、↓等按键。没办法只能硬啃文档,下面是修改后的源码。package mainimport ( "fmt" "golang.org/x/crypto/ssh" "golang.org/x/crypto/ssh/terminal" "log" "os")...原创 2019-09-30 17:52:20 · 5380 阅读 · 3 评论