上一页 1 2 3 4 5 6 7 8 9 ··· 26 下一页
摘要: fuse-based文件系统一个请求(以getattr为例)经历的路径,附件为visio版原图:fuse流程图.rar 管理员在2009年8月13日编辑了该文章文章。 --> --> 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(276) 评论(0) 推荐(0) 编辑
摘要: K维检索树类似于二叉检索树,不同的是,它能同时提供多维度属性的检索。K维(从0开始计维数)检索树的定义: K维检索树是一个n层的二叉树(根节点为第0层,依次往下为第1,2..n-1层),对于树中第n层的每个节点,其左子树所有节点的第n%k维属性小于或等于该节点的第n%k维属性;其右子树所有节点的第n%k维属性都大于或等于该节点的第n%k维属性。通俗的讲,就是将整个树的层数循环标记为0到k-1,在第... 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(672) 评论(0) 推荐(0) 编辑
摘要: 从去年年底开始感觉在实验室的进步越来越缓慢,没有刚实验室那股劲,后来的项目因为没有迫切的需求,进展比较缓慢,把大部分的时间花在课外学习上了,研究主题主要在搜索引擎、key/value存储上,C++&设计模式上,虽然这样接触了很多新的东西,但理解还是比较肤浅,故一直希望暑假找个地方实习,看看在公司大家是怎么做事的。于是从5月开始投了百度、腾讯、阿里、淘宝、支付宝等公司系统研发的职位(之前的博客中写了... 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(397) 评论(0) 推荐(0) 编辑
摘要: http协议 网络通信领域,协议是指通信双方约定的规则,彼此按照规则交互,才能理解对方。http是超文本传输协议,之所以需要这样一个规则,是因为现实世界中,C/S请求应答模式的应用占据绝大部分,如果每一种服务都定义自己的格式,世界就会开始变的混乱了,每个人在开发服务器的时候都需要开发对应的客户端,而这个工作显然是不必要的。而为什么选择http而不是其他的规则呢,因为其简单、无状态,能满足应用需求... 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 线程池服务模型是single thread 与 request per thread两种模型的折中方案,其在实现时通常需要借助任务队列,主线程往任务队列尾添加任务,线程池中的服务线程不断从任务队列头取任务并服务,如下图所示: 对于主线程和服务线程来说,任务队列是临界资源,需要加锁进行保护。主线程往任务队列添加任务时需要加锁,服务线程从任务队列取任务也许加锁,当服务线程发现任... 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 网络服务器的实现不外乎两种情况,一是为某个业务单端开发服务器,二是实现通用网络服务器框架,前者的设计可能很大程度的受业务需求的影响,而后者则要保证简单易用,稳定服务,最好还有不错的性能。 服务器框架的优势在于让使用者快速的进行开发,只需要做很少的事情即可完成服务器的开发。在整个服务模型中,只有对请求任务的处理是预先不可知的,其他的逻辑基本上是固定的,故在实现框架时,将实际的处理部分以回调的形... 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 多线程在网络编程中作用重大,由于创建/销毁线程、线程间通信的开销小,目前很多网络服务器都是用多线程(线程池)的模式对外提供服务。linux上开发多线程程序多使用pthread库,本文主要讨论使用C++封装pthread库时可能出现的问题。 封装pthread库主要有两种思路,第一种是简单的封装接口,如下所示: class simple_thread_t { public: int star... 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 循环read(write) 在网络应用程序中,通常需要重复的调用read/write来读取到指定数量的数据,如下例: int wrapper_read(int fd, char *buf, int size) { int ridx = 0; int rlen = 0; while(ridx < size) { rlen = read(fd, buf + ridx, size – ri... 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 关于listen的backup参数 listen的第二个参数,在网上有各种版本的解释,有人说是三次握手成功等待被accept的请求队列长度,有人说是尚未成功建立连接的队列长度,有人说是二者队列长度之和。 #man listen # man tcp 从man手册可以发现:从linux 2.2开始,backlog是指已经建立连接等待被accept的队列长度,而未成功建立连接的队列长度由tc... 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 关于hash函数 hash函数主要用于将“大范围”映射到“小范围”,如MD5将任意长度的数据计算出128bit的签名值,RSHash等函数将任意长度的数据转换成32bit的无符号整型,好的hash函数拥有高性能以及低hash冲突。 hash函数主要通过加减乘除及移位等操作来计算最终结果,hash函数的分类参考: http://nicoleamanda.blog.163.com/blog/... 阅读全文
posted @ 2013-04-19 14:12 ydzhang 阅读(260) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 26 下一页