golang探索

收录了 7 篇文章 · 1 人关注

  • golang并发三板斧系列之三:context用于退出

    这是本系列文章的第三篇,第一篇在此[golang并发三板斧系列之一:channel用于通信和同步](http://baixiaoustc.com/2019/02/17/2019-02-17-golang-concurency-1-channel/),第二篇在此[golang并发三板斧系列之二:goroutine池用于并发](http://baixiaoustc.com/2019/02/20/2019-02-20-golang-concurency-2-goroutine-pool/)。 前...

  • golang并发三板斧系列之二:goroutine池用于并发

    这是本系列文章的第二篇,第一篇在此[golang并发三板斧系列之一:channel用于通信和同步](http://baixiaoustc.com/2019/02/17/2019-02-17-golang-concurency-1-channel/)。 前文描述了手工作坊的时代,即老师傅带着小学徒并发地做一项工作,现在我们准备进入工业时代。 # Pipeline模型 Pipeline即流水线模型,这在现代工业是很常见的。模型分为数个阶段,每个阶段干不同的事情,但可以并行地去做。以...

  • golang并发三板斧系列之一:channel用于通信和同步

    某不知名程序员曾说过: > 我们爱golang,很大程度是因为爱它的并发。 我们来总结下golang的并发三板斧,channel、pool、context。一路看下来,套路也就那么几个。 # Concurrency is not parallelism 首先必须牢记一个重要的概念:**并发不是并行**。 并发是描述代码架构,是指在模型上可以同时处理多件事务。并行是描述执行状态,除了代码限制外,如果没有多CPU多核心,谈何并行呢?对于单CPU单核心的硬件(当然现在基本上很...

  • golang深入源代码系列之三:自动生成代码

    这是系列博文的第三篇,第一篇在此:[golang深入源代码之一:AST的遍历](http://baixiaoustc.com/2019/01/14/2019-01-14-golang-code-inspector-1-all-case),第二篇在此:[golang深入源代码系列之二:反向调用关系的生成](http://baixiaoustc.com/2019/01/17/2019-01-17-golang-code-inspector-2-reverse-call-graph/)。 ...

  • golang深入源代码系列之二:反向调用关系的生成

    这是系列博文的第二篇,第一篇在此:[golang深入源代码之一:AST的遍历](http://baixiaoustc.com/2019/01/14/2019-01-14-golang-code-inspector-1-all-case)。 # 怎么形成一个项目内部的函数调用关系 在一些场景下,需要对一个项目内部的函数调用关系做分析,IDE当然是可以做到一部分。但是对于一个完整调用链,IDE就爱莫能助了。上面列举的第一篇文章讲到的golang AST遍历可以解决这个问题。分析每一个...

  • golang深入源代码系列之一:AST的遍历

    # 怎么分析golang源代码 我们拿到一个golang的工程后(通常是个微服务),怎么从词法、语法的角度来分析源代码呢?golang提供了一系列的工具供我们使用: * go/scanner包提供词法分析功能,将源代码转换为一系列的token,以供go/parser使用 * go/parser包提供语法分析功能,将这些token转换为AST(Abstract Syntax Tree, 抽象语法树) ## Scanner * 任何编译器所做的第一步都是将源代码转换成tok...

  • 用golang小试tensorflow

    google的tensorflow提供golang接口了,总算是拉了自家的语言一把。周末抽空试了试,总体思想还是用python训练并Save好model(更友好),然后用golang Load该model,再进行运算。详情见:http://baixiaoustc.com/2017/07/24/2016-07-24-try-tensorflow-with-golang/