- 博客(4)
- 资源 (6)
- 收藏
- 关注
原创 Golang黑科技之——string与[]byte转换
我们知道,相对于C语言,golang是类型安全的语言。但是安全的代价就是性能的妥协。 下面我们通过Golang中的“黑科技”来一窥Golang不想让我们看到的“秘密”——string的底层数据。 通过reflect包,我们可以知道,在Golang底层,string和slice其实都是struct:type SliceHeader struct { Data uintptr Len
2016-10-27 00:09:19 38252
原创 Golang仿函数实现方法及效率测试
在C++ STL中,仿函数(functors)被大量用作改变算法的内在行为。 由于Golang不支持泛型,所以没法像C++那样灵活的使用仿函数。但是Golang有interface,函数是”一等公民”(可赋值给指定类型变量),因此,在Golang中实际上也可以像仿函数那样,通过具有相同参数和返回值的方法声明的不同对象,实现行为的差异化。 下面,详细讲述,Golang中的实现方法: 以下通过不同
2016-10-30 22:35:38 1434
原创 基于环形缓冲区的deque实现方法
众所周知,C++ STL中有一个叫做deque的容器,实现的是双端队列数据结构,这种队列允许同时从队列的首部和尾部插入和删除数据。 然而在STL中这种数据结构是用”分段连续”的物理结构实现的(可以参考侯捷老师的《STL源码剖析》)。网上分析STL中这种容器的文章很多,如: http://blog.csdn.net/baidu_28312631/article/details/48000123
2016-10-20 00:50:50 1864
原创 不要让递归函数fuck大家的cpu
递归算法是大学计算机课程里面经常会讲到的编程方法,因为采用这种方法写出来 的代码清晰易懂。但是,在大多数编程规范里面,会严令禁止使用递归函数,原因下面来详细说明。首先,由于逻辑错误,由直接或间接递归,造成递归调用无法结束(死递归),最后肯定会收到一个"stack overflow"的宕机信息。就暂且不论了。下面要详细讨论的是,简单的递归代码是如何fuck计算机运行时系统的。这里用计算Fibonacc
2016-10-13 22:50:30 2262
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人