golang
Myriad_Dreamin
这个作者很懒,什么都没留下…
展开
-
[golang] 如何在没有泛型的强类型语言中写一个通用的map-reduce函数
map篇 在C语言时代,一个map函数可能长成下面这个样子 func mapF(f IntMapFunc, i ...int) []int { y := make([]int, len(i), cap(i)) for j := range i { y[j] = f(i[j]) } return y } func mapFInplace(f IntMapFunc, i ...int) ...原创 2019-11-04 15:31:48 · 524 阅读 · 0 评论 -
golang降低多线程争用对象池带来的损耗
使用chan resource或者sync.Pool做对象池在多线程的情况下有可能不够用。 通过预分配可以减少这种损耗,这是以时间换空间: package bytespool import "sync" const ( maxCacheP = 100 maxCacheP2 = 1000 ) // MultiThreadBytesPool provides the source of b...原创 2019-07-29 01:37:41 · 234 阅读 · 0 评论 -
golang可以放心大胆使用接口
有学弟纠结于接口无法像实例化的结构体那样做到某些事情,我经过几分钟思考联想到了之前的适配器方法。这种方法虽然不错,却不知会不会对性能造成影响。下面做一些测试。 package adaptor import "testing" type adaptee struct { hh []byte } func (e *adaptee) GetA() []byte { return e.hh } ...原创 2019-07-25 18:49:29 · 254 阅读 · 0 评论 -
用gin+xorm+docker编写Online Judge后端
项目链接: https://github.com/Myriad-Dreamin/core-oj/tree/develop 思路: 将worker分为两种, compiler & judger compiler负责隔离编译环境,设置编译资源限制,权限限制 judger负责隔离运行环境,sandboxize 设计结构体管理compilers/judgers gin-server只是作为cor...原创 2019-09-02 13:02:49 · 669 阅读 · 0 评论