golang语言机制之栈与指针
学习和使用 golang,就不得不了解 golang 的指针。如果不能很好的理解指针,很难写出简单、整洁并高效的代码。
Read more…理解Golang channel
channel 是 golang 的核心特性之一,提供了 goroutine 通信的机制,简化了并发模式。
Read more…golang中的defer, panic和recover
Go提供了 defer, panic 和 recover 三个内置方法。其中 panic 会让程序崩溃,defer 可以在函数 return 之前执行操作, defer 和 recover 配合可以捕获 panic。
Read more…理解 golang 运行时调度
操作系统线程(OS thread)对于 golang 来说太重了。而且最重要的是操作系统(OS)无法基于 golang 模型做出正确的调度。比如,GC的时候要暂停所有的线程(go中对应的是 groutine), 而且内存要处于一致的状态,这需要等待运行中的线程执行到内存一致状态的点(安全点)。当有许多线程时, 为了达到一致状态, 就需要等待这些可能处于任意状态的线程达到一致状态。Golang 的调度器可以做到仅在已知的内存一致状态的点上进行调度。
Read more…golang 项目结构
常见的golang代码布局方式通常有扁平化布局和模块化布局。
Read more…死锁条件
死锁(deadlock)是指两个进程被相互阻塞,并且一直处于这样的状态。
Read more…数据结构--队列
和栈相似,队列(queue)也是表,所不同的是队列的插入在表的一端进行而删除则在另一端进行。与栈的后进先出(LIFO)不同,队列中的元素特性是先进先出(FIFO)。
Read more…数据结构--栈
栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置叫表的末端,或者叫栈顶(top)。由于对栈中所有元素的操作都是在栈顶,所以栈有后进先出(LIFO)的特性。
Read more…数据结构--列表
形如 A1, A2, A3, … AN这样的表,表大小是 N,大小为 0 的表叫空表。对于空表之外的表 Ai+1 是 Ai 的后继,Ai-1 (i>=1) 是 Ai 的前驱。A1 是表的第一个元素,AN 是表的最后一个元素,A1 没有前驱元素,AN 也没有后继元素。
Read more…使用 Jekyll 和 Git Page 搭建个人博客
jekyll 是一个简单的静态网站生成器,可以将 markdown 文档或 html 文档转换成一个完整的可发布的静态网站。并且内置 GitHub Pages 支持。
Read more…