
Golang
「已注销」
本博客现只用于学习用,可能会转载他人的知识,若有涉及到您的版权问题,请与我联系。
展开
-
伪共享(false sharing),并发编程无声的性能杀手
什么是共享下图是计算的基本结构。L1、L2、L3分别表示一级缓存、二级缓存、三级缓存,越靠近CPU的缓存,速度越快,容量也越小。所以L1缓存很小但很快,并且紧靠着在使用它的CPU内核;L2大一些,也慢一些,并且仍然只能被一个单独的CPU核使用;L3更大、更慢,并且被单个插槽上的所有CPU核共享;最后是主存,由全部插槽上的所有CPU核共享。当CPU执行运算的时候,它先去L1查找所需的数据、再去...原创 2020-04-02 11:35:08 · 647 阅读 · 0 评论 -
【Golang】如何得知变量是分配在栈(stack)上还是堆(heap)上?
How do I know whether a variable is allocated on the heap or the stack?From a correctness standpoint, you don’t need to know. Each variable in Go exists as long as there are references to it. The sto...原创 2020-04-02 11:03:37 · 3275 阅读 · 0 评论 -
【Golang】内存池
Go的内存分配器采用了跟tcmalloc库相同的实现,是一个带内存池的分配器,底层直接调用操作系统的mmap等函数。作为一个内存池,回忆一下跟它相关的基本部分。首先,它会向操作系统申请大块内存,自己管理这部分内存。然后,它是一个池子,当上层释放内存时它不实际归还给操作系统,而是放回池子重复利用。接着,内存管理中必然会考虑的就是内存碎片问题,如果尽量避免内存碎片,提高内存利用率,像操作系统中的首次...原创 2020-04-02 10:49:19 · 878 阅读 · 0 评论 -
【Golang】Go调度器(scheduler)与channel
go程序的运行,以goroutine为单位,而goroutine实际运行在某个系统线程内。goroutine(可以非常多)和系统线程(相对比较少)并非一一对应。调度时,既有os调度线程,也有go调度器本身调度goroutine。简言之,go原生支持并发,go调度器负责将各个goroutine调度到不同的操作系统线程中取执行。通过go关键字启动一个协程来运行函数:go func()三个定义:...原创 2020-04-02 02:21:25 · 680 阅读 · 0 评论 -
【Golang】反射机制
反射在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用对象的方法和属...原创 2020-04-01 20:33:26 · 624 阅读 · 0 评论 -
【Golang】IrIs框架 Hosts
监听服务您可以启动服务器监听任何类型的net.Listener甚至http.Server实例。 服务器的初始化方法应该在最后通过Run函数传递。Go开发人员用于服务其服务器的最常用方法是传递“hostname:ip”形式的网络地址。 有了Iris,我们使用的iris.Addr是一种iris.Runner类型。 //用网络地址监听tcp 0.0.0.0:8080 app.Run(iris....原创 2020-03-31 16:27:23 · 733 阅读 · 0 评论 -
【Golang】 网站的根目录如何映射到文件系统?
不到十行代码:package mainimport ( "log" "net/http")func main() { http.Handle("/", http.FileServer(http.Dir("youpath"))) log.Fatal(http.ListenAndServe(":8080", nil))}需要注意是否可以回溯。如果可以访问...原创 2020-03-31 02:20:04 · 967 阅读 · 0 评论 -
【Golang】go mod 使用
go modules 是 golang 1.11 新加的特性。现在1.12 已经发布了,是时候用起来了。Modules官方定义为:模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。如何使用 Modules ?把 golang...原创 2020-03-30 23:47:38 · 1184 阅读 · 0 评论 -
:go get github.com/kataras/iris/v12@latest go: cannot use path@version syntax in GOPATH mode
安装iris的时候记得打开GO111MODULE和使用中国代理,在项目路径下设置环境变量:export GO111MODULE=ongo env -w GOPROXY=https://goproxy.cn,direct然后执行如下命令则是安装iris:go get github.com/kataras/iris/v12@latest...原创 2020-03-30 22:57:05 · 4564 阅读 · 0 评论 -
【Golang】Iris介绍
背景介绍Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。谷歌资深软件工程师罗布·派克(Rob Pike)表示,“Go让我体验到了从未有过的开发效率。”派克表示,和今天的C++或C一样,Go是一种系统语言。他解释道,“使用它可以进行快速开发,...原创 2020-03-30 21:33:17 · 1427 阅读 · 0 评论 -
Golang 语言使用的注意事项
左大括号 { 一般不能单独放一行Golang的分号注入规则(automatic semicolon injection):编译器会在每行代码尾部特定分隔符后加 ; 来分隔多条语句未使用的变量无法通过编译如果在函数体代码中有未使用的变量,则无法通过编译,不过全局变量声明但不使用是可以的。即使变量声明后为变量赋值,依旧无法通过编译,需在某处使用它。未使用的import无法通过编译...原创 2020-03-24 19:03:40 · 738 阅读 · 0 评论 -
Golang 爬虫框架 Goquery的使用
介绍goquery brings a syntax and a set of features similar to jQuery to the Go language. It is based on Go’s net/html package and the CSS Selector library cascadia. Since the net/html parser returns nod...原创 2020-03-24 17:06:26 · 2140 阅读 · 0 评论 -
Golang 使用net/http下载文件
简单例子package mainimport ( "io" "net/http" "os")var ( url = "https://blog.csdn.net/LU_ZHAO/article/details/104935957")func main() { res, err := http.Get(url) if err != n...原创 2020-03-24 05:37:42 · 1777 阅读 · 0 评论 -
Go学习参考
https://go-zh.org/doc/https://tour.go-zh.org/concurrency/1https://blog.go-zh.org/c-go-cgohttps://github.com/golang原创 2020-03-21 17:49:46 · 395 阅读 · 0 评论