Mickey 小站

尘世迷途小码农

Jike Algo

极客时间-算法

上学期知识付费买的极客时间算法系列一直没来得及看,最近准备快速过一遍,在这里记录一下有用的知识点 为什么大多数编程语言中,数组要从 0 开始编号,而不是从 1 开始呢? 从数组存储的内存模型上来看,“下标”最确切的定义应该是“偏移(offset)”。前面也讲到,如果用 a 来表示数组的首地址,a[0] 就是偏移为 0 的位置,也就是首地址,a[k]就表示偏移 k ...

2018-summary

2018年终总结

今天是大年初三,本该在年前完成的年终总结拖到了现在(拖延症真的恐怖),今年过年县里彻底贯彻了杜绝烟花爆竹的方针,显的有些冷清,好了,言归正传 再见,2018 过去的一年,变化非常大 2018年3月 在家安逸的度过元宵之后,踏上了回北京的火车,看着父母逐渐老去,心里还是很难受的。返回学校之后,老师依旧没有喊我回实验室,于是继续在头条实习,期间,业务进行了一次重组,我,涛神,鹏队和 de...

golang-file-lock

golang 文件锁操作

golang 的文件锁操作 这篇文章给大家介绍一下 golang 的文件锁。我们在使用 golang 开发程序的时候,经常会出现多个 goroutine 操作同一个文件(或目录)的时候,如果不加锁,很容易导致文件中的数据混乱,于是,Flock 应运而生。 Flock 是对于整个文件的建议性锁(不强求 goroutine 遵守),如果一个 goroutine 在文件上获取了锁,那么其他 ...

sync-waitgroup-source-code-analysis

golang waitgroup rwmutex 源码分析

sync.WaitGroup源码分析 针对Golang 1.9的sync.WaitGroup进行分析,与Golang 1.10基本一样除了将panic改为了throw之外其他的都一样。 源代码位置:sync\waitgroup.go。 结构体 type WaitGroup struct { noCopy noCopy // noCopy可以嵌入到结构中,在第一次使用后不可复制,使用g...

sync-once-source-code-analysis

golang once rwmutex 源码分析

sync.Once源码分析 sync.Once可以实现单例模式,确保sync.Once.Do(f func())只会被执行一次,可以初始化某个实例单例。 针对Golang 1.9的sync.Once,与Golang 1.10一样。 源代码位置:sync\once.go。 结构体 Once结构体定义如下: type Once struct { m Mutex done uin...

sync-rwmutex-source-code-analysis

golang sync rwmutex 源码分析

sync.RWMutex源码分析 针对 Golang 1.9 的 sync.RWMutex 进行分析,与 Golang 1.10 基本一样除了将panic改为了throw之外其他的都一样 RWMutex 是读写互斥锁,锁可以由任意数量的读取器或单个写入器来保持 RWMutex 的零值是一个解锁的互斥锁 RWMutex 是抢占式的读写锁,写锁之后来的读锁是加不上的 以下代码均去除ra...

sync-mutex-source-code-analysis

golang sync mutex 源码分析

sync.Mutex 源码分析 针对 Golang 1.10.3 的 sync.Mutex 进行分析,代码位置:sync/mutex.go 结构体 type Mutex struct { state int32 // 指代mutex锁当前的状态 sema uint32 // 信号量,用于唤醒goroutine } Mutex 中的 state 用于指代锁当前的状态,如下所示...

sync-cond-source-code-analysis

golang sync cond 源码分析

sync.Cond源码分析 Cond的主要作用就是获取锁之后,wait()方法会等待一个通知,来进行下一步锁释放等操作,以此控制锁合适释放,释放频率,适用于在并发环境下goroutine的等待和通知。 针对Golang 1.9的sync.Cond,与Golang 1.10一样。 源代码位置:sync\cond.go。 结构体 type Cond struct { noCopy no...

build-web-application-with-golang

通过golang构建web应用

最近逛github的时候,看到一个golang的学习资料,star 2w+,粗略翻了一下,感觉写的不错,在此做下笔记,用以温故知新,博客地址 chapter one gopath, goroot, gobin的区别 在终端输入 go env 命令,可以看到go的一些环境变量,goroot指代go安装的路径,gopa...

vue-source-code-analysic(9)

阅读Vue源码有感(9)

在上篇博客中,我们介绍了Vue中相当重要的两个文件–create-element.js以及create-component.js,这篇博客我们来介绍一下patch.js文件,也就是Vue中最核心的AST更新的知识点 首先需要明确的是,Vue使用的diff算法来自于snabbdom,算法复杂度为O(n) 什么是virtual dom 如果不了解virtual dom,要理解Vue...