异想天开

What's the true meaning of light, Could you tell me why

技术点滴思考

日期:2014-08-29 14:11:46
  
最后更新日期:2014-08-29 14:11:46
今天浏览关于redis一本电子书时,想到了几点技术的缘由以及一些其他的思考。大概是之前见过,但不明白为什么作者要这样设计。
1.0字节数组
这个应该是gnu的c扩展。对于一块动态数组,之前不知道0字节数组时,可以用这样的结构体:
[code lang="cpp"]
struct foo{
int len;
void *data;
};
[/code]
然后每次new一次即可。使用0字节数组则可以连续申请一块内存,则是这样:
[code lang="cpp"]
struct foo{
int len;
char data[0];
};
foo *p= malloc(sizeof(int)+datasize);
[/code]

2.nginx的str设计成这样的结构的好处
[code lang="cpp"]
struct {
int len;
char *data;
};
[/code]
当时看上去,也没觉得有啥好或不好的地方。很多时候,人就是这么糊涂。这样,有个好处,那就是对strlen(str)的操作变为o(1)的操作。redis的str也是这种方式。

3.什么是技术
技术不是单纯拿来秀的,为解决问题而生。不是一个东西越复杂就显得越nb,因为大家都没用过,大家都不知道。也不是因为目前的方式,可以应付目前的需求,那么就技术点得过且过,不关注和演练前沿技术,总有一天“最后一根稻草”会到来。放弃为技术的无意义的争论。