Go 语言发展史及史上最全 Go 语言知识图谱! 我要晨读
前面docker的基本概念和一些核心原理都看的差不多了,那么现在该关注一下具体的生产环境的使用方法了。 我要晨读
Go 中的并发性是以 goroutine(独立活动)和 channel(用于通信)的形式实现的。处理 goroutine 时,程序员需要小心翼翼地避免泄露。如果最终永远堵塞在 I/O 上(例如 channel 通信),或者陷入死循环,那么 goroutine 会发生泄露。即使是阻塞的 goroutine,也会消耗资源,因此,程序可能会使用比实际需要更多的内存,或者最终耗尽内存,从而导致崩溃。 我要晨读
Go 的标准实现里 goroutine 是无主的。concurrent.UnboundedExecutor 的目标就是把 ownership 的概念加到 goroutine 上。通过把启动的goroutine都挂在一个executor上,从而可以跟踪这一组goroutine的存活状况。当需要退出的时候,可以把这些个goroutine通过context cancel的方式退出。 我要晨读
golang语言中最有特色之一的东东就是这个goroutine了,很多时候问起别人为什么golang的好用,golang的网络性能可以那么好,一般都会多多少少想到goroutine,提起goroutine。在linux中内核的调度最小单位是就是thread,同一个进程中的多个thread线程就对应内核中的多个thread实体。所以thread是内核级的,而gorountine是一个不同于thread的概念,gorountine是一个用户态,另外一种说法也就携程,是用户态的一种调度粒度,每个gorounti 我要晨读
gf框架之grpool – 高性能的goroutine池 我要晨读
是BUG?golang os.Process 在不同环境下的诡异Panic 我要晨读
Bolt 最初的目标是提供一个简单的纯 Go key/value 存储,并且不会使代码具有多余的特性。为此,该项目取得了成功。但是,这个范围有限也意味着该项目已经完成。 我要晨读
大家好!我的名字叫Sergey Kamardin。我是来自Mail.Ru的一名工程师。这篇文章将讲述我们是如何用Go语言开发一个高负荷的WebSocket服务。即使你对WebSockets熟悉但对Go语言知之甚少,我还是希望这篇文章里讲到的性能优化的思路和技术对你有所启发。 我要晨读
gf框架之并发安全容器 - gmap,以及与sync.Map的性能比较 我要晨读
百万请求一分钟,Golang 轻松来搞定 我要晨读
如何优雅的关闭Go Channel 我要晨读
Golang 变量在内存的形式 我要晨读
在 Cloudflare 的人们都非常喜欢 Go 语言。我们在许多内部软件项目以及更大的管道系统中使用它。但是,我们能否进入下一个层次并将其用作我们最喜欢的操作系统 Linux 的脚本语言呢? 我要晨读
“用不到200行 Go 代码就能实现一个自己的区块链!” 听起来有意思吗?有什么能比开发一个自己的区块链更好的学习实践方法呢?那我们就一起来实践下! 我要晨读
逃逸分析是编译器用来决定你的程序中值的位置的过程。特别地,编译器执行静态代码分析,以确定一个构造体的实例化值是否会逃逸到堆。在 Go 语言中,你没有可用的关键字或者函数,能够直接让编译器做这个决定。只能够通过你写代码的方式来作出这个决定。 我要晨读
我不打算说指针的好话,它确实很难理解。如果应用不当,会产生恼人的 bug,甚至会导致性能问题。当写并发和多线程程序时更是如此。所以许多语言试着用其它方法让编程人员避免指针的使用。但如果你是在用 Go 语言的话,你就不得不使用它们。如果不能很好的理解指针,是很难写出干净、简单并且高效的代码的。 我要晨读
Go 语言中一些语法结构和其背后的设计原则,包括指针、栈、堆、逃逸分析和值/指针传递。这是第三篇,主要介绍堆和逃逸分析。( 我要晨读
Go 中的 reflect 包提供了根据执行过程中对象的类型来改变程序控制流的 API。 reflect 包提供了两个重要的结构 - Type 和 Value。 我要晨读
问题场景:高频系统中,agent 会向ATS 服务器发出刷新和预缓存的请求,这里的请求head 里面有GET ,PURGE等,因为一般的预缓存都是小文件,但是某天,突然服务器oom。。。罪魁祸首发现是并发GET 大文件将服务器打死了。第一个版本是python 的,第二个版本是golang 实现的, 这里记录下两种语言的 下载大文件的实现方式。 我要晨读