代码改变世界

散列冲突与作为特征值的散列

2011-06-09 09:26 by zhenjing, 2700 阅读, 2 推荐, 收藏, 编辑
摘要:散列函数是一种从任何一种数据中创建小的数字“指纹”的方法。密码学上的 Hash 又被称为"消息摘要(message digest)"。简言之,“指纹”、“信息摘要”本质就是数据的特征值,即散列函数可用于提取数据的特征值。作为特征值,哈希可用于判断原始数据是否不同,但无法判断原始数据是否相同。这决定了哈希值无法唯一表征原始数据。常见的哈希表均需要通过判断原始数据来判断是否冲突,并引入相应的解决办法。哈希表最好的应用场合是有限输入的预构造集,如字典;哈希函数则适用于判断数据是否不同的场合,如分类、加密、校验等。 阅读全文

Gdb调试多进程程序

2011-06-01 13:45 by zhenjing, 25673 阅读, 6 推荐, 收藏, 编辑
摘要:介绍使用gdb调试多进程程序的几种常见办法:方法1:调式多进程最土的办法:attach pid; 方法2: set follow-fork-mode child + main断点; 方法3: set follow-fork-mode child + catch exec; 方法4:info inferiors/inferior inferiors 阅读全文

NFS4.1规范研究:session

2011-05-29 23:12 by zhenjing, 4896 阅读, 1 推荐, 收藏, 编辑
摘要:NFS4.1中session机制的概述。session核心是管理连接(connection)。NFS4中客户端和服务器只有一个连接,限制了并发访问。NFS4.1允许多服务器同时提供服务,故客户端和服务器的连接数可大于1。除了支持并发访问外,session也更好地支持回调和EOS。 阅读全文

诡异的bug: tcsh陷入死循环

2011-05-26 12:05 by zhenjing, 3152 阅读, 3 推荐, 收藏, 编辑
摘要:问题:项目开发中,碰到一个很奇怪的问题:当tcsh启动的子程序退出之后,tcsh本身无法退出,并占用大量CPU资源。 给出对这个问题的分析和重现程序。 阅读全文

NFS4文件锁机制探秘

2011-05-15 11:21 by zhenjing, 7175 阅读, 1 推荐, 收藏, 编辑
摘要:NFS3之前的NFS系统均为无状态的。无状态的server/client大大简化NFS的设计,尤其是故障恢复基本无需考虑。但也因此,NFS3本身无法支持文件锁,Network Lock Manager (NLM)作为NFS3的辅助协议用于管理NFS的文件锁。 NFS4在自身的协议中引入文件锁,这使NFS具有状态。本文对NFS4如何实现文件锁做一些基本的探讨,主要是想通过研究NFS4的锁机制,学习如何设计有状态的可靠的server/client系统。 阅读全文

Usage of pmake

2011-04-20 09:31 by zhenjing, 970 阅读, 0 推荐, 收藏, 编辑
摘要:IntroductionPmake is a program designed to simplify themaintenance of other programs. Its input is a list of specifications as to thefiles upon which programs and other files depend. mkdep, a program to constructMakefile dependency lists, is also included.This doc is not to introduce how to usepmake 阅读全文

TCP状态图和常见问题

2011-04-20 09:30 by zhenjing, 17711 阅读, 0 推荐, 收藏, 编辑
摘要:TCP共有9个网路状态,其中涉及到关闭的状态有5个。 在我们编写网络相关程序的时候,这5个状态经常出现。因为这5个状态相互关联,相互纠缠,而且状态变化触发都是由应用触发,但是又涉及操作系统和网络,所以正确的理解TCP 在关闭时网络状态变化情况,为我们诊断网络中各种问题,快速定位故障有着非常重要的作用和意义。 为此,我根据W.Richard Stevens的《TCP/IP详解》一书,将这5个状态制成一个时序图(其实原书也有这个图,但不是很好理解),其中黑色字体来表示应用程序行为,红色字体是操作系统行为。=============================================== 阅读全文

3个学习Socket编程的简单例子:TCP Server/Client, Select

2011-04-20 09:29 by zhenjing, 4470 阅读, 0 推荐, 收藏, 编辑
摘要:以前都是采用ACE的编写网络应用,最近由于工作需要,需要直接只用socket接口编写CS的代码,重新学习这方面的知识,给出自己所用到的3个简单例子,都是拷贝别人的程序。如果你能完全理解这3个例子,估计socket编程就已经基本入门了。 建议:1) 多多查查所用到的网络接口; 2) 最好有一本书,如UNIX环境高级编程,UNIX网络编程,可查询;3) 可以直接使用书上的例子更好。 TCP Client代码:#include <sys/stat.h> #include <sys/types.h> #include <sys/socket.h> #include 阅读全文

socket基础知识

2011-04-20 09:28 by zhenjing, 2578 阅读, 0 推荐, 收藏, 编辑
摘要:socket基础知识 概述 socket 是TCP/IP协议的最流行的一种网络编程接口。它与TCP/IP一起最早实现于4.1BSD UNIX 系统中,主要用于传送级(TCP,UDP)编程。 socket往往称为套接口,套接口用于网络中两个通信实体间的通信,两个实体可以存在于同一机器的不同进程中或不同机器的进程中。 套接口就好像UNIX中pipe (管道),通信双方进程通过它来与对方发送或接受数据。如同pipe 用文件描述字表示一样,socket 也用文件描述字表示,也称为套接口描述字,或简称套接字。在网络编程时要用套接字表示通信的对方。但两者不同的是,pipe的通信双方在一台机器上,共用一个p 阅读全文

使用Select的3个注意事项

2011-04-20 09:26 by zhenjing, 556 阅读, 0 推荐, 收藏, 编辑
摘要:#include <sys/select.h> int select(int n, fd_set *readfds, fd_set*writefds, fd_set *exceptfds, struct timeval *timeout);int pselect(int n, fd_set *readfds, fd_set*writefds, fd_set *exceptfds, const struct timespec *timeout, const sigset_t*sigmask);FD_CLR(int fd, fd_set *set);FD_ISSET(int fd, f 阅读全文
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 15 下一页