穷则独善其身,达则兼济天下

工匠之路

标签 GoLang 下的文章

开源: IO读取缓冲器-BufReader

一. IO问题思考IO读取缓冲器,顾名思义就是针对系统的IO读取操作添加一层缓冲层,有这层缓冲层到底有啥好处呢?针对这个问题,我先问大家以下几个问题.对于IO读取操作,无论针对的是对象,还是针对网络,每次IO操作均需要陷入内核调用,频繁内核调用会严重影响性能,请问有没有什么办法优化这部分?针对网络IO读取过程,网络时好时坏,如何让网络IO能够发挥最大的性能潜力,在网络好的时候抓紧多读,在网络...

开源: 高性能网络监听库-NetHandle

NetHandle这是一个库,方便构建高性能TCP服务端应用程序,站在Go语言的巨人肩膀上项目地址: https://github.com/gitsrc/NetHandle一. 特点高性能,低资源消耗非常简单易用的开发接口支持众多协议,TCP,UDP,UNIX二. 安装go get -u github.com/gitsrc/NetHandle三. 性能测试:3.1 50*10000 (50...

开源项目:manEcho(一个Linux内核函数查询工具)

背景描述由于工作原因,经常需要查询linux内核函数,对于不同版本的linux版本,部分函数还有一些差异,对于这种需求,我就动手实现了一个小工具,可以帮助我快速查询linux内核函数。工具原理工具分为两部分,客户端和服务端,客户端用于发送搜索请求,服务端用来接受用户的请求并把用户的请求转换成linux的man命令在指定版本的内核文档目录中执行,执行完毕后,把标准输出中的结果数据通过socke...

网络编程:读取完整数据包的细节处理(适用于Unix domain socket)

对于TCP网络编程,读取对方数据是一个最普遍的操作,但是如何把对方的数据包完整读取到,这个看似简单的问题,需要小心处理,下面发一份公众代码,无论是书籍还是网上问答基本给出的都是这个答案。var dataBytes bytes.Buffer buf := make([]byte, 10); for { n, err := conn.Read(buf) if err != nil...
June 8, 2018

解析 Go 中的函数调用

让我们来看一些简单的 Go 的函数,然后看看我们能否明白函数调用是怎么回事。我们将通过分析 Go 编译器根据函数生成的汇编来完成这件事。对于一个小小的博客来讲,这样的目标可能有点不切实际,但是别担心,汇编语言很简单。哪怕是 CPU 都能读懂。这是我们的第一个函数。对,我们只是让两个数相加。func add(a, b int) int { return a + b }我们编译的时候需要...
June 8, 2018

GoLang 汇编

引言在某些场景下,我们需要进行一些特殊优化,因此我们可能需要用到golang汇编,golang汇编源于plan9,此方面的介绍很多,就不进行展开了。我们WHY和HOW开始讲起。golang汇编相关的内容还是很少的,而且多数都语焉不详,而且缺乏细节。对于之前没有汇编经验的人来说,是很难理解的。而且很多资料都过时了,包括官方文档的一些细节也未及时更新。因此需要掌握该知识的人需要仔细揣摩,反复实验...
June 6, 2018

源码阅读:Golang HTML To MarkDown

背景介绍这是一个Golang源码,主要任务在于把HTML代码转换为MarkDown文本,先把两个源码文件发布出来,供大家研读。1.Core源码package html2md import "regexp" const ( Foreign = iota Void ) type ReplaceFunc func(string, []string) str...