Golang 实现常用排序算法

今天整理几个常用的排序算法。查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和二分法查找等基本…

- 阅读全文 -

Golang 的 goroutine 是如何实现的?

Go runtime的调度器:在了解Go的运行时的scheduler之前,需要先了解为什么需要它,因为我们可能会想,OS内核不是已经有一个线程scheduler了嘛?熟悉POSIX API的人都知道,POSIX的方案在很大程度上是对Unix process进场模型的一个…

- 阅读全文 -

Golang WaitGroup 实现源码剖析

Golang中WaitGroup的用途是它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。下面这篇文章就从WaitGroup源码来分析一下处理逻辑及其使用方法,部分无关代码直接略去,比如 race detect,…

- 阅读全文 -

Golang map 实现源码剖析

在Golang开发过程中,map是必不可少的数据结构,使用map或多或少会遇到与其他语言不一样的体验,比如访问不存在的元素会返回其类型的空值,map的大小究竟是多少,为什么会报"cannot take the address of"错误,遍历map的随机性等等。本文希望…

- 阅读全文 -

Golang slice 实现源码剖析

Golang 数组的长度不可改变,在特定场景中这样的集合就不太适用,Golang中提供了一种灵活,功能强悍的内置类型slice,与数组相比slice的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。这篇文章介绍一下 Golang slice 的内部实现原理,…

- 阅读全文 -

Golang channel 实现源码剖析

channel是golang的一种重要特性,正是因为channel的存在才使得golang不同于其它语言。channel使得并发编程变得简单容易有趣。这篇文章介绍一下 Golang channel 的内部实现原理,包括 channel 的数据结构以及相关操作的代码实现。…

- 阅读全文 -

重新开始写博客啦

买了台阿里云服务器,花了点时间,搭建好了typecho博客平台,仔细想想,我已经一年多没有写博客了,之前用wordpress写过博客,写着写着就断了,数据也没有备份,结果服务器到期GG了,不管怎么说,既然迈出了第一步,还是要坚持下去的。现在要好好总结和积累,慢慢的静下心…

- 阅读全文 -