如果让我推荐编程语言系列之 Go
题图:ByInstagram早期经常有人问我学习编程语言应该从哪一门入手,我一般会推荐Java和Python,这两门分属静态语言和动态语言,应用广泛,上手方便,上能九天揽月,下可五洋捉鳖,能写出小工具小网站,也构建出世界级的大型互联网帝国,比如淘宝,比如豆瓣。我一般很少推荐C或者C++这种前进的路途
《快学 Go 语言》第 15 课 —— 反射
反射是Go语言学习的一个难点,但也是非常重要的一个知识点。反射是洞悉Go语言类型系统设计的法宝,Go语言的ORM库离不开它,Go语言的json序列化库离不开它,Go语言的运行时更是离不开它。笔者在学习反射功能的时候也是费了好大一番功夫才敢说自己确实搞懂了。下面请读者跟着我的步伐来一步一步深入理解反射
图解Go语言内存分配
Go语言内置运行时(就是runtime),抛弃了传统的内存分配方式,改为自主管理。这样可以自主地实现更好的内存使用模式,比如内存池、预分配等等。这样,不会每次内存分配都需要进行系统调用。Golang运行时的内存分配算法主要源自Google为C语言开发的TCMalloc算法,全称Thread-Cach
深入Go的底层,带你走近一群有追求的人
上周六晚上,我参加了“Go夜读”活动,这期主要讲Go汇编语言,由滴滴大佬曹春晖大神主讲。活动结束后,我感觉打通了任督二脉。活动从晚上9点到深夜11点多,全程深度参与,大呼过瘾,以至于活动结束之后,久久不能平静。可以说理解了Go汇编语言,就可以让我们对Go的理解上一个台阶,很多以前模棱的东西,在汇编语
深度解密Go语言之Slice
Go语言的slice很好用,不过也有一些坑。slice是Go语言一个很重要的数据结构。网上已经有很多文章写过了,似乎没必要再写。但是每个人看问题的视角不同,写出来的东西自然也不一样。我这篇会从更底层的汇编语言去解读它。而且在我写这篇文章的过程中,发现绝大部分文章都存在一些问题,文章里会讲到,这里先不
深度解密Go语言之关于 interface 的10个问题
这次文章依然很长,基本上涵盖了interface的方方面面,有例子,有源码分析,有汇编分析,前前后后写了20多天。洋洋洒洒,长篇大论,依然有些东西没有涉及到,比如文章里没有写到反射,当然,后面会单独写一篇关于反射的文章,这是后话。还是希望看你在看完文章后能有所收获,有任何问题或意见建议,欢迎在文章后
深度解密Go语言之关于 interface 的10个问题
这次文章依然很长,基本上涵盖了interface的方方面面,有例子,有源码分析,有汇编分析,前前后后写了20多天。洋洋洒洒,长篇大论,依然有些东西没有涉及到,比如文章里没有写到反射,当然,后面会单独写一篇关于反射的文章,这是后话。还是希望看你在看完文章后能有所收获,有任何问题或意见建议,欢迎在文章后
深度解密Go语言之反射
更好的阅读效果:https://www.cnblogs.com/qcrao-2018/p/10822655.html反射和Interface息息相关,而Interface是我们上一篇文章的内容。在开始正文前,和大家说点题外话。上一篇关于Interface的文章发出后,获得了很多的关注和阅读。比如,登
深度解密Go语言之 map
更好的阅读体验:https://www.cnblogs.com/qcrao-2018/p/10903807.html这篇文章主要讲map的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白map底层原理。我要说明的是,这里对map的基本用法涉及比较少,我相
深度解密Go语言之unsafe
更好的阅读效果:https://www.cnblogs.com/qcrao-2018/p/10964692.html上一篇文章我们详细分析了map的底层实现,如果你也跟着阅读了源码,那一定对unsafe.Pointer不陌生,map对key进行定位的时候,大量使用。unsafe.Pointer位于u
深度解密Go语言之context
Go语言的context包短小精悍,非常适合新手学习。不论是它的源码还是实际使用,都值得投入时间去学习。这篇文章依然想尝试全面、深入地去研究。文章相比往期而言,整体不长,希望你看完可以有所收获!什么是contextGo1.7标准库引入context,中文译作“上下文”,准确说它是goroutine的
深度解密Go语言之channel
大家好!“深度解密Go语言”系列好久未见,我们今天讲channel,预祝阅读愉快!在开始正文之前,我们先说些题外话。上一篇关于Go语言的文章讲Go程序的整个编码、编译、运行、退出的全过程。文章发出后,反响强烈,在各大平台的阅读量都不错。例如博客园登上了48小时阅读排行榜,并且受到了编辑推荐,占据首页
深度解密Go语言之 scheduler
好久不见,你还好吗?距离上一篇文章已经过去了一个多月了,迟迟未更新文章,我也很着急啊。跟大家汇报一下,这段时间我在看proc.go的源码,其实就是调度器的源码。代码有几千行之多,不像以往的map,channel等等。想把这些代码都看明白,是一个庞大的工程。到今天为止,我也不敢说我都看明白了。要深挖下
关于Go语言、Docker,我们聊聊新技术
出处:https://coolshell.cn/articles/18190.html上个月,作为Go语言的三位创始人之一,Unix老牌黑客罗勃·派克(RobPike)在新文章“Go:Tenyearsandclimbing”中,回顾了一下Go语言的发展过程。其中提到,Go语言这十年的迅猛发展大到连他
Go语言之实现一个简单的单链表
1.指针我大学里第一门接触的编程课程是C语言,用了谭浩强的《C程序设计》第三版,其实用什么书都无所谓,反正我也没有学会C。没有学会C,主要原因是C语言有一种叫做指针的东西,这种东西及其强大,可以直接操作内存。在学习Java之后,深入一点就需要了解到堆内存和栈内存的关系,其实也无非就是Java把指针帮
Go语言之初识切片和数组
Go语言之初识切片和数组1.数组学Go语言之前我已经多年没有看过数组了,唯一和数组打交道也是用Java的ArrayList,虽然底层是用数组实现的,但是全部的接口都是List的。数组一度被我认为是一种落后的数据结构了,在我用Python写数据库小工具的时候也是喜欢用list的,我甚至不知道Pytho
Go语言之初识Goroutine
1.Go的并发机制面对前来面试Java程序员的求职者的时候我一般都会问问并发编程,毕竟并发编程总是属于Java编程的高级部分。其实Java的并发编程已经被设计的很简单了,不过要想掌握并发编程也并不是一件很轻松的事情。作为一个DBA,面对高并发的场景算是司空见惯的了,没有并发能力的数据库(对,我说的就
Go语言学习之初识
1.第一个程序作为一个DBA,我平时用的比较多的语言是Java和Python,Java用来写后端存储层代码,Python用来写一些小工具辅助工作。我是首先学会了Java,因此Python对我来说有几点难以忍受的问题:弱类型语言,很多时候我不知道一个函数到底返回了什么,不看源码不知道;依赖不像Java
如何学习GO语言
1.需要把其基础知识看一两遍,包括语法,要素做工程师都至少了掌握了一门编程语言的,有几年经验的怎么也会掌握2门以上的开发语言,并且是至少有一门语言是自己比较熟悉的。这是因为对编程语言的模式套路都有比较深入的了结,所以在学习一门新的语言的时候肯定会比较轻松。但是还是需要把一门语言的基本要素掌握的。可以
Go 语言汇编快速入门
在Go的源码中包含大量汇编语句,最优秀的示例代码位于math/big,runtime和crypto这些库中,但是从这里入门的话实在太过于痛苦,这些示例都是着力于系统操作和性能的运行代码。对于没有经验的Go语言爱好者来说,这样会使通过库代码的学习过程遇到很大困难。这也是撰写本文的原因所在。GoASM(