
go
文章平均质量分 70
hongmingover
。。。。。。。
展开
-
channel 的底层原理
channel 的底层原理转载 2022-08-25 14:59:28 · 6151 阅读 · 0 评论 -
gin框架timeout超时
package timeoutimport ( "net/http" "net/http/httptest" "testing" "time" "github.com/gin-gonic/gin" "github.com/stretchr/testify/assert")func emptySuccessResponse(c *gin.Context) { time.Sleep(200 * time.Microsecond) c.String(http.StatusOK, "".原创 2021-06-01 14:23:21 · 4754 阅读 · 2 评论 -
Golang是怎么利用epoll的
Golang是怎么利用epoll的飞雪无情1月21日LinuGo名不见经传的Gopher,公众号主要分享一些关于Golang,Linux,Kubernetes的经验与学习踩坑总结。使用Golang可以轻松地为每一个TCP连接创建一个协程去服务而不用担心性能问题,这是因为Go内部使用goroutine结合IO多路复用实现了一个“异步”的IO模型,这使得开发者不用过多的关注底层,而只需要按照需求编写上层业务逻辑。这种异步的IO是如何实现的呢?下面我会针对Linux系统进行分析。...原创 2021-04-20 11:52:28 · 3195 阅读 · 0 评论 -
1.8 万字详解 Go 是如何设计 Map 的
1.8 万字详解 Go 是如何设计 Map 的Go语言精选|1342020-10-19 02:15000 由于本文篇幅较长,故将目录整理如下什么是Map 维基百科的定义 In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a collection of (key, value) pairs,...转载 2021-04-16 15:01:17 · 319 阅读 · 0 评论 -
golang 结构体作为map的元素时,不能够直接赋值给结构体的某个字段
golang 结构体作为map的元素时,不能够直接赋值给结构体的某个字段引入: 错误 Reports assignments directly to a struct field of a map1. 问题的产生这个问题在github上可以追溯到2012年提交的一个issue,链接为https://github.com/golang/go/issues/3117;如上图,结构体作为map的元素时,不能够直接赋值给结构体的某个字段,也就是map中的struct中的字段不能够直接寻址..转载 2020-11-11 13:27:22 · 1059 阅读 · 0 评论 -
golang按key值进行升序排序(ksort),对字符串进行sha1哈希
golang按key值进行升序排序(ksort),对字符串进行sha1哈希在对接PHP语言实现的签名的时候,看见对方用了ksort,由于golang里面对map的遍历是无序的,所以用golang实现了对map按key值进行升序排序:package mainimport ( "crypto/sha1" "encoding/hex" "fmt" "sort" "strconv" "time")func main() { ti..转载 2020-08-11 13:05:46 · 3892 阅读 · 0 评论 -
golang | Go语言入门教程——结构体初始化与继承
golang | Go语言入门教程——结构体初始化与继承今天是golang专题第10篇文章,我们继续来看golang当中的面向对象部分。在上一篇文章当中我们一起学习了怎么创建一个结构体,以及怎么给结构体定义函数,还有函数接收者的使用。今天我们来学习一下结构体本身的一些使用方法。初始化在golang当中结构体初始化的方法有四种。new关键字我们可以通过new关键字来创建一个结构体的实例,这种方法和其他语言比较类似,这样会得到一个空结构体指针,当中所有的字段全部填充它类型对应..转载 2020-07-14 11:11:41 · 570 阅读 · 0 评论 -
HTTP包默认路由匹配规则
HTTP包默认路由匹配规则内容简介:最近看到 http 包的相关内容,写了几个路由发现规则好像不是正则匹配,下面从源码触发分析下路由匹配和执行的过程上面的代码的执行情况如下,对于一般中间件的结构如下最近看到 http 包的相关内容,写了几个路由发现规则好像不是正则匹配,下面从源码触发分析下路由匹配和执行的过程问题引入//路由1http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt...转载 2020-05-22 11:00:54 · 570 阅读 · 0 评论 -
Go并发之Context篇
Go并发之Context篇前言介绍:在学习Go并发的时候,我们总是能够看到context,而这个context却只在go语言中存在。笔者在看到context的时候,便问了自己几个问题。context是什么?是用来干什么的?我们为什么需要context? context是如何使用的?它为什么被设计成这个样子?基于上面的这些问题,笔者做了整理,笔者觉得在知道了这些问题的答案之后,...原创 2019-11-29 13:34:03 · 180 阅读 · 0 评论 -
图解Go语言内存分配
图解Go语言内存分配码农桃花源原文作者:Stefno 基础概念 内存管理单元 内存管理组件 mcache mcentral mheap 内存分配流程 总结 参考资料 Go语言内置运行时(就是runtime),抛弃了传统的内存分配方式,改为自主管理。这样可以...转载 2019-11-29 10:45:13 · 178 阅读 · 0 评论 -
Golang中的CPU占满100%及解决方案
Golang中的CPU占满100%及解决方案有一个流媒体适配服务,出现了CPU开销很大的问题,一个服务把CPU资源占满了,导致其他服务无法正常工作。下面来详细记录发现bug和解决的流程。发现CPU开销很大扫描发现,是垃圾回收导致CPU使用上升 :Time: Mar 22, 2019 at 5:52pm (CST)Duration: 1mins, Total samp...转载 2019-11-26 21:21:14 · 5148 阅读 · 0 评论 -
Golang Context使用小结
Golang Context使用小结1 场景我们知道,在Go服务端,每个进入的请求会被其所属goroutine处理。例如,如下代码,每次请求,Handler会创建一个goroutine来为其提供服务,而且连续请求3次,r的地址也是不同的。package mainimport ( "fmt" "log" "net/http")func main() {...原创 2019-11-20 13:13:56 · 142 阅读 · 0 评论 -
Golang Gin 框架 Route备注
Golang Gin 框架 Route备注路由package mainimport ( "github.com/gin-gonic/gin" "time" "log")func main() { // 初始化 router := gin.New(); // 常规操作 router.POST("/", fun...原创 2019-11-20 11:04:29 · 658 阅读 · 0 评论 -
浅谈Go语言中的结构体struct & 接口Interface & 反射
浅谈Go语言中的结构体struct & 接口Interface & 反射结构体structstruct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套;go中的struct类型理解为类,可以定义方法,和函数定义有些许区别;struct类型是值类型。struct定义? 1 2 3 4 5 ...原创 2019-11-20 10:42:58 · 507 阅读 · 0 评论 -
beego框架的环境搭建
beego框架的环境搭建搭建此环境,必须有Go语言环境。若没有,请先搭建go语言环境。go语言的环境搭建1.下载beego包并安装若你已经安装了Git的,直接执行下面命令。打开cmd,输入下面命令。[plain] view plain copygo get github.com/astaxie/beego转载 2017-08-07 20:11:52 · 381 阅读 · 0 评论 -
go在windows上环境搭建
go在windows上环境搭建1、首先下载对应系统位数版本http://www.golangtc.com/download我的电脑是64位windows系统,所以下载go1.6rc2.windows-amd64.zip2、解压到D:\Go3、设置环境变量新建GOARCH=amd64 新建GOBIN=D:\go\bin (你Go安装目录) 新建转载 2017-08-07 20:17:37 · 230 阅读 · 0 评论 -
学习go语言碰到的问题:main redeclared in this block
学习go语言碰到的问题:main redeclared in this blockE:\goapp是我的GOPATH目录分别建立了2个文件:hello.go// hellopackage mainimport "fmt"func main() { fmt.Println("Hello World! 你好,世界!")}sandbox.原创 2017-08-10 11:04:15 · 11566 阅读 · 2 评论 -
《Go语言入门》第一个Go语言程序——HelloWorld 标签: go语言helloworld 2015-11-29 18:46 4066人阅读 评论(4) 收藏 举报 分类: go语言入门(3)
《Go语言入门》第一个Go语言程序——HelloWorld上一篇讲了 如何在Windows下安装Go语言编程环境,接下来讲一下入门必修课:第一个Go语言程序——HelloWorld。其实go语言入门是很简单的,上一篇已经成功在Notepad++中运行HelloWorld,只是在命令行中编译运行了出现了一点小曲折,这里记录说明一下。编写HelloWorld你可以使转载 2017-08-10 11:42:42 · 268 阅读 · 0 评论 -
go语言的模板,text/template包
go语言的模板,text/template包定义模板就是将一组文本嵌入另一组文本里传入string–最简单的替换package mainimport ( "os" "text/template")func main() { name := "waynehu" tmpl, err := template.New("te转载 2017-08-11 11:00:09 · 353 阅读 · 0 评论 -
Go-MySQL-Driver:一个Go语言的轻量级极速的mysql驱动 Go
Go-MySQL-Driver:一个Go语言的轻量级极速的mysql驱动Go , 数据库本资源由 伯乐在线 - sunbiaobiao 整理Go语言的 database/sql 包的一个 MySQL驱动。特性轻量级与快速原生Go语言,没有C绑定,只有纯Go没有不安全的操作(类型转换等)动态处理崩溃的连接动态连接池支持大于16MB的查询完全 sql.RawByte转载 2017-08-20 12:55:26 · 993 阅读 · 0 评论 -
syntax error: non-declaration statement outside function body
刚学go,为什么这么写会报错?golang Naist 5月3日提问关注 6 关注收藏 0 收藏,458 浏览问题对人有帮助,内容完整,我也想知道答案1问题没有实际价值,缺少关键内容,没有改进余地package mainimport( "fmt")type转载 2017-08-20 14:13:28 · 9994 阅读 · 0 评论 -
个人对于golang的goroutine并发处理任务时的理解
个人对于golang的goroutine并发处理任务时的理解原文:http://rfyiamcool.blog.51cto.com/1030776/1381686以前用golang做并发处理的时候,很是粗暴,就是利用golang的高级性能,直接fork一个任务,来处理请求,最典型的就是直接 go func,当时是因为用http和socket没觉得什么,今天再次看golang的gor转载 2017-08-31 15:46:03 · 1034 阅读 · 0 评论 -
golang 理解goroutine
进程、线程和协程要理解什么是goroutine,我们先来看看进程、线程以及协程它们之间的区别,这能帮助我们更好的理解goroutine。进程:分配完整独立的地址空间,拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程的切换只发生在内核态,由操作系统调度。 线程:和其它本进程的线程共享地址空间,拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程的切换一般也由操作系统调度(标准转载 2018-01-21 22:35:31 · 280 阅读 · 0 评论 -
Go语言中普通函数与方法的区别
Go语言中普通函数与方法的区别1.对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然。2.对于方法(如struct的方法),接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样也可以。以下为简单示例:[plain] view plain copypackage structTest转载 2018-01-22 11:15:53 · 631 阅读 · 0 评论 -
Go 学习笔记:延迟执行函数 defer
Go 学习笔记:延迟执行函数 deferGo语言中有种不错的设计,即延迟(defer)语句,你可以在函数中添加多个defer语句。当函数执行到最后时,这些defer语句会按照逆序执行,最后该函数返回。特别是当你在进行一些打开资源的操作时,遇到错误需要提前返回,在返回前你需要关闭相应的资源,不然很容易造成资源泄露等问题。如下代码所示,我们一般写打开一个资源是这样操作的:func转载 2018-02-01 09:56:45 · 162 阅读 · 0 评论 -
Go匿名函数
Go匿名函数1、GO语言的匿名函数就是闭包基本概念 闭包是可以包含自由(未绑定到特定对象)变量的代码块,这些变量不在这个代码块内或者任何全局上下文中定义,而是在定义代码块的环境中定义。要执行的代码块(由于自由变量包含在代码块中,所以这些自由变量以及它们引用的对象没有被释放)为自由变量提供绑定的计算环境(作用域)。闭包的价值 闭包的价值在于可以作为函数对象或者匿名转载 2018-02-02 22:51:04 · 259 阅读 · 0 评论 -
golang -- 时间日期总结
golang -- 时间日期总结flyking · 2014-10-04 19:26:54 · 4955 次点击 · 预计阅读时间 1 分钟 · 5分钟之前 开始浏览 这是一个创建于 2014-10-04 19:26:54 的文章,其中的信息可能已经有所发展或是发生改变。golang时间处理相关包 "time"时间戳 当前时间戳fmt.Pr转载 2018-01-28 18:03:48 · 454 阅读 · 0 评论 -
go语言计算两个时间的时间差
go语言计算两个时间的时间差,代码很简单,返回1天前、1周前还是1月前的时间?1234567891011121314151617package mainimport( "fmt"转载 2018-01-28 20:35:57 · 4655 阅读 · 0 评论 -
time.Add为什么会编译不通过
time.Add为什么会编译不通过问题对人有帮助,内容完整,我也想知道答案0问题没有实际价值,缺少关键内容,没有改进余地先上代码 想打印一个小时以后的时间 ,但是编译报错了package mainimport ( "fmt" "time")func main() { fmt.Pri转载 2018-01-28 20:58:58 · 377 阅读 · 0 评论 -
go语言string、int、int64互相转换以及时间转换
go语言string、int、int64互相转换以及时间转换原创 2017年04月08日 09:06:04标签:golang2450[html] view plain copy#string到int int,err:=strconv.Atoi(string) #string到in转载 2018-01-28 22:25:11 · 22939 阅读 · 1 评论 -
GoLang 字符串处理大全
GoLang 字符串处理大全 这是一个创建于 2015-06-17 20:04:07 的文章,其中的信息可能已经有所发展或是发生改变。package main import ( "fmt" "strings" //"unicode/utf8" ) func main() { fmt.Println("查找子串是否在指定的字转载 2018-01-29 13:49:01 · 226 阅读 · 0 评论 -
golang解析网页的第三方包——goquery(爬虫必备) 标签: goquerygo页面解析爬虫
golang解析网页的第三方包——goquery(爬虫必备)标签: goquerygo页面解析爬虫goquery是一个使用go语言写成的HTML解析库,可以让你像jQuery那样的方式来操作DOM文档,使用起来非常的简便。 一、官网下载地址 https://github.com/PuerkitoBio/goquery二、goquery提供的主要结构体和方法 2.1. Document 代...转载 2018-02-26 11:00:52 · 2233 阅读 · 0 评论 -
Golang 微框架 Gin 简介
Golang 微框架 Gin 简介所谓框架框架一直是敏捷开发中的利器,能让开发者很快的上手并做出应用,甚至有的时候,脱离了框架,一些开发者都不会写程序了。成长总不会一蹴而就,从写出程序获取成就感,再到精通框架,快速构造应用,当这些方面都得心应手的时候,可以尝试改造一些框架,或是自己创造一个。曾经我以为Python世界里的框架已经够多了,后来发现相比golang简直小巫见大巫。golang提供的ne...转载 2018-03-07 19:27:48 · 693 阅读 · 0 评论 -
golang 并发设计模式(一)--资源生成器模式
golang 并发设计模式(一)--资源生成器模式在应用系统中,常见的的应用场景就是调用一个生成器:生成订单号,序列号,随机数等。golang goroutine为这种需求提供了强大的武器。1.简单的生成器[cpp] view plain copypackage main import ( "fmt" "math/rand" ) func Gen...转载 2018-03-14 19:56:45 · 492 阅读 · 0 评论 -
golang 线程与通道
golang 线程与通道首先我们来看线程,在golang里面也叫goroutine在读这篇文章之前,我们需要了解一下并发与并行。golang的线程是一种并发机制,而不是并行。它们之间的区别大家可以上网搜一下,网上有很多的介绍。下面我们先来看一个例子吧import( "fmt")funcmain(){ go fmt.Println("1") fmt.Println("2"...转载 2018-03-14 21:18:11 · 239 阅读 · 0 评论 -
深入讲解Go语言中函数new与make的使用和区别
深入讲解Go语言中函数new与make的使用和区别大家都知道Go语言中的函数new与函数make一直是新手比较容易混淆的东西,看着相似,但其实不同,不过解释两者之间的不同也非常容易,下面这篇文章主要给大家介绍了关于Go语言中函数new与make区别的相关资料,需要的朋友可以参考下。前言本文主要给大家介绍了Go语言中函数new与make的使用和区别,关于Go语言中new和make是内建的两个函数,主...转载 2018-03-15 09:59:00 · 921 阅读 · 0 评论 -
go 编译问题
go 编译问题 这是一个创建于 2015-04-03 11:00:00 的文章,其中的信息可能已经有所发展或是发生改变。golang的编译使用命令 go build , go install;除非仅写一个main函数,否则还是准备好目录结构;GOPATH=工程根目录;其下应创建src,pkg,bin目录,bin目录中用于生成可执行文件,pkg目录中用于生成.a文件;golang中的import...转载 2018-03-01 10:21:24 · 2157 阅读 · 0 评论 -
Go导入的包,函数名必须大写
4、输出名称 Exported names本章概述导入一个包后,你可以根据包名输出。在Go语言中,一个可以输出的名称开头字母是大写的。Foo是一个输出名字,因为F是大写的,而foo是不可以输出的。运行下面的代码,把math.pi的p改成P试一下。项目函数说明Constantsconst ( E = 2.718281828459045235360287471352662497757247...转载 2018-03-01 10:49:11 · 1996 阅读 · 0 评论 -
go语言中同一个package下的文件相互引用怎么做?
go语言中同一个package下的文件相互引用怎么做?go 里面一个目录为一个package, 一个package级别的func, type, 变量, 常量, 这个package下的所有文件里的代码都可以随意访问, 也不需要首字母大写.问题对人有帮助,内容完整,我也想知道答案0问题没有实际价值,缺少关键内容,没有改进余地如题在lesson目录下有package lessontype Recta...转载 2018-03-01 12:43:00 · 11677 阅读 · 2 评论 -
go 字符串的拼接
go 字符串的拼接对于string:直接+=进行拼接var s string str := "123"str += "123123"str += "qwerqwe"1234利用Sprintfvar s string = "12312sf"s = fmt.Sprintf("%s %s",s,"123123")12对于[]string利用strings.转载 2018-02-23 11:19:35 · 248 阅读 · 0 评论