摘要:
当你在互联网的世界中遨游是,忽然看到这样一则消息,说中兴成为世界第五大手机厂商,你会做何感想。可能大部分人会对这条消息的真实性表示怀疑吧,觉得中兴的手机业务发展不可能这么快吧,但同时也会想,消息都出来了,肯定也不会太假,于是下次买手机的时候你除了关注诺基亚、三星、多普达等,你也许会多看一眼带有ZTE标签的手机。作为一个普通的网民,你可以选择相信或者不相信这条消息,但有一件事,你肯定不会去做,那就... 阅读全文
摘要:
问题:给定一个有序序列1~n,要你将其完全打乱,要求每个元素在任何一个位置出现的概率均为1/n。
解决方案:依次遍历数组,对第n个元素,以1/n的概率与前n个元素中的某个元素互换位置,最后生成的序列即满足要求,1/n的概率可通过rand() % n实现。见如下程序:
void swap(int* p, int* q)
{ int tmp = *p; *p = *q; *q = tmp;
}
... 阅读全文
摘要:
4月1号在火车上收到快递公司的电话,cublog的礼物送到了,开始以为只是很普通的衬衣,然后印上CU的标志,昨天看到礼物发现居然是cerruti,质量很不错,小雅姐果然很给力。 这次参加“蓦然回首,博客五年”的博客征文活动,其实给CU写的意见博文是在征文活动之前,因为我很早就在关注CU博客系统升级的消息,所以在第一时间就体验了一下新的博客系统,并提了几点意见,所以说这次能拿到奖品也完全是小雅姐的... 阅读全文
摘要:
在google搜索框中输入“开放平台”,搜索结果中包括百度开放平台、淘宝开放平台、腾讯开放平台、人人开放平台、新浪微博开放平台等,都是国内数一数二的大公司,那么到底什么是开放平台呢,这些IT大佬们为什么都要做开放平台呢。 开放平台在百度百科中的定义是:开放平台是指软件系统通过公开其应用程序编程接口(API)或函数(function)来使外部的程序可以增加该软件系统的功能或使用该软件系统的资源,... 阅读全文
摘要:
昨天参加阿里巴巴的笔试,有一道题目要求从N个面试的人中挑选出M个成绩最好的人(M<=N, 并假定M个人的成绩都不一样),求挑选程序的最优时间复杂度()。
选项包括:O(NlogN), O(N*min(M, logN)), O(N*logM), O(N)。 O(NlogN)的算法是完全有可能的,使用堆排序,快速排序等将N个元素排序,选取前M个元素即可。 O(N*logM)的算法也是有可能的,将前... 阅读全文
摘要:
fuse内核模块被加载时,以下初始化例程会被调用,见fuse_init函数<inode.c>。
1. fuse_fs_init(); 注册fuse文件系统,创建fuse_inode高速缓存。
2. fuse_dev_init(); 创建fuse_req高速缓存,加载fuse设备驱动,用于用户空间与内核空间交换信息。
3. fuse_sysfs_init(); 在/sys/fs目录下增加fuse节点... 阅读全文
摘要:
1. 打印错误信息
如果程序的执行必须要求某个宏被定义,在检查到宏没有被定义是可以使用#error,#warning打印错误(警告)信息,如:
#ifndef __unix__#error "This section will only work on UNIX systems"#endif
只有__unix__宏被定义,程序才能被正常编译。 2. 方便调试
__FILE, __LINE, __... 阅读全文
摘要:
xinetd是inetd超级服务器的升级版,相当于inetd + tcp wrapper,将服务管理与访问控制结合在一起。在介绍inetd之前,先看一个xinetd的实例(我的机器上只有xinetd,关于inetd的配置参考UNP 325页)。 xinet配置实例 为xinetd添加myecho服务(将客户端发来的请求消息回送给客户端)。 1. 在/etc/services中添加myec... 阅读全文
摘要:
getaddrinfo是在gethostbyname系列函数不支持Ipv6的情况下逐渐催生的,其能够处理名字到地址以及服务到端口这两种转换,返回一个sockaddr结构的链表,这些sockaddr地址结构随后可有套接口函数(socket、bind、connect、listen等)直接调用,将协议相关性隐藏在该函数内部。应该尽量选择使用getaddrinfo函数代替之前的getxx函数族,就像应该使... 阅读全文
摘要:
1. 重用已使用的地址 问题描述:在刚刚关闭了测试程序后,再启动服务器时提示bind失败,返回错误EADDRINUSE。 原因分析:套接字(主动关闭一端)在关闭套接字后会停留在TIME_WAIT状态一端时间,由于我在同一机器上同时运行客户端与服务器,故服务器在重新启动执行bind时,可能上次关闭连接还没有完成,连接依然存在,故bind失败。通过设置套接口的SO_REUSEADDR可重用已绑定的... 阅读全文