一个小问题: Golang可执行程序的退出码
本周因为工作上的遍历需要, 用Go语言写了一个用于批量文本解析的命令行工具。由于这个工具是要嵌入shell脚本中运行的,所以在写该工具的异常处理时突然意识到一个问题: Go语言可执行程序的异常退出码该怎么设置?
于是带着这个非常细节的问题,稍稍调查了一下,结果发现还是有不少东西可说道说道的…
本周因为工作上的遍历需要, 用Go语言写了一个用于批量文本解析的命令行工具。由于这个工具是要嵌入shell脚本中运行的,所以在写该工具的异常处理时突然意识到一个问题: Go语言可执行程序的异常退出码该怎么设置?
于是带着这个非常细节的问题,稍稍调查了一下,结果发现还是有不少东西可说道说道的…
由于对Golang以及PostgreSQL(下文简称PG)的FDW(Foreign Data Wrapper)两个技术的双重喜爱,因此我利用假期用Golang实现了一个访问douban API的FDW. 同时也借此机会总结了一下 PG的FDW技术并分享一下使用Golang实现FDW的一些经验。
全文索引如下:
第三部分: 如何用Go来实现一个FDW
由于对Golang以及PostgreSQL(下文简称PG)的FDW(Foreign Data Wrapper)两个技术的双重喜爱,因此我利用假期用Golang实现了一个访问douban API的FDW. 同时也借此机会总结了一下 PG的FDW技术并分享一下使用Golang实现FDW的一些经验。
全文索引如下:
第二部分: 揭秘FDW
由于对Golang以及PostgreSQL(下文简称PG)的FDW(Foreign Data Wrapper)两个技术的双重喜爱, 因此我利用假期用Golang实现了一个访问douban API的FDW. 同时也借此机会总结了一下 PG的FDW技术并分享一下使用Golang实现FDW的一些经验。
全文索引如下:
第一部分: FDW的前世今生
这两天在虚拟机上新装了一个 Ubuntu Server 16.04LTS,于是很自然地想安装一个Go语言环境。以往无论在Windows上还是在Linux上都是用的现成的二进制distribute包来安装Go, 但是这次打算尝试用源码来直接编译安装。于是把本次编译安装的一些手顺和注意事项分享在本文中:
周一在微信上收到了Go中国公众号推送的一篇文章 Is GO object oriented ,读完以后感觉观点还是很有意思的,与我的所见有很多相似之处,所以就饶有兴趣地把它翻译成中文,也算是作为”友军”的一点贡献吧……
在涉及到并发编程的情况下,经常性地会碰到一种场景:
由一个线程开启了多个线程并发执行多个任务,之后由该线程(so called “主线程”)等待多个线程都结束后汇总结果.
这种场景下,主线程在其创建的子线程执行期间内需要阻塞,直到其他子线程都执行完毕。由于这类场景已经在不同语言的开发中遇到多次,所以汇总一下这些语言的常用实现方法,以后查起来也方便~
在github上关于cgo的wiki中,有一章节专门介绍了如何利用cgo技术通过函数指针调用Golang的函数实现. 不过,仔细观察这个章节的代码示例可以发现,它所要解决的其实是以下的场景:
在Golang中想要调用一个已有的C语言函数,但是该C语言函数要求一个函数指针作为参数时应该怎么办?
如果将这个场景稍微改变一下,改成以下场景,对应的解法又该是什么?
在一个C语言实现的已有系统中,对于一个要求函数指针的函数,如何传入一个Golang实现的回调函数以实现“用Golang扩展C语言系统”的目的。
我基于wiki中已有的代码简单探索了一下方法,结果分享如下:
从去年接触Go语言(以后简称”Golang”)到现在,已经有1年的时间了。感觉随着使用经验的积累,越发地喜爱这么编程语言。作为一个以C, C#语言出道,并自学了Java, Python, Golang的无证程序员,使用 了一段时间Go语言后,最明显的感觉就是:“这正式我所期盼的语言”。特别是写多了C语言代码,虽然感叹于C语言在语言上的简洁与性能上的高效,但是对于现实中C语言在开发方面的低效也总是吐槽不断。遭遇了Go语言之后,认为这门语言是C语言的最好传人(不要提C++)。
以下分享一些我认为Golang做的比较值得推崇的地方: