hello world

stay foolish, stay hungry

  • 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…