runtime

Posted by 夏泽民

http://www.cs.columbia.edu/~aho/cs6998/reports/12-12-11_DeshpandeSponslerWeiss_GO.pdf Runtime管理任务调度,垃圾收集及运行环境。大家知道Go语言程序是编译为机器代码来执行的。同时,Go提供了一些高级的功能,如goroutine, channel, 以及Garbage collection。这些高级功能需要一个runtime的支持。1.4之前,runtime还是由C语言所编写的,(按照Go dev team的规划,1.5版本将去除C的代码,runtime将完全由Go语言来完成。)不论何种方式,runtime和用户编译后的代码被linker静态链接起来,形成一个可执行文件。这个文件从操作系统角度来说是一个user space的独立的可执行文件。 从运行的角度来说,这个文件由2部分组成,一部分是用户的代码,另一部分就是runtime。runtime通过接口函数调用来管理goroutine, channel及其他一些高级的功能。从用户代码发起的调用操作系统API的调用都会被runtime拦截并处理。



rpc

Posted by 夏泽民

https://www.openapis.org/ https://github.com/OAI/OpenAPI-Specification/issues https://www.jsonrpc.org/specification https://www.grpc.io/docs/guides/concepts/



HTTP路由

Posted by 夏泽民

https://github.com/gin-gonic/gin https://github.com/julienschmidt/httprouter https://github.com/julienschmidt/go-http-routing-benchmark



radix tire

Posted by 夏泽民

对于长整型数据的映射。怎样解决Hash冲突和Hash表大小的设计是一个非常头疼的问题。 radix树就是针对这样的稀疏的长整型数据查找,能高速且节省空间地完毕映射。借助于Radix树,我们能够实现对于长整型数据类型的路由。 利用radix树能够依据一个长整型(比方一个长ID)高速查找到其相应的对象指针。这比用hash映射来的简单,也更节省空间,使用hash映射hash函数难以设计,不恰当的hash函数可能增大冲突,或浪费空间。



radix tree router

Posted by 夏泽民

golang的web框架echo和gin都使用了radix tree作为路由查找的算法 https://github.com/labstack/echo https://github.com/gin-gonic/gin 在gin的路由中,每一个Http Method(GET, PUT, POST…)都对应了一棵 radix tree



Search

Popular posts

Anything in here will be replaced on browsers that support the canvas element

Recent posts

This blog is maintained by 夏泽民

Get in touch with me at 465474307@qq.com

Subscribe to our mailing list

* indicates required