- 博客(17)
- 资源 (10)
- 收藏
- 关注
原创 大教堂和市集(转)
大教堂和市集 Eric Raymond HansB翻译 一. 大教堂和市集 Linux的影响是非常巨大的。甚至在5年以前,有谁能够想象一个世界级的操作系统能够仅仅用细细的Internet连接起来的散布在全球的几千个开发人员有以业余时间来创造呢? 我当然不会这么想。在1993年早期我开始注意Linux时,我已经参与Unix和自由软件开发达十年之久了。我是八十年代中期GNU最早的几个参与者之一。我已经在网上发布了大量的自由软件,开发和协助开发了几个至今仍在广泛使用的程序(Nethack
2011-02-28 15:13:00 910
原创 (转)程序员的自我修养
什么是好的程序员?是不是懂得很多技术结节?还是懂底层编程?还是编程速度比较快? 我觉得都不是。 对于一些技术结节来说和底层的技术,只要看帮助,查资料就能找到,对于速度快,只要编得多也就熟能生巧了。 我认为好的程序员应该有以下几个方面的素质: 1、有钻研精神,勤学善问,举一反三。 2、积极向上的态度,有创造性思维。 3、与人积极交流沟通的能力,有团队精神。 4、谦虚谨慎,戒骄戒燥。 5、与出的代码质量高,包括:代码的稳定、易读、规范、易维护、专业。
2011-02-28 14:33:00 421
原创 内容过滤中关键字的匹配函数
/* Add a search pattern to a search object, and associate pattern data to it */ int qsearch_add_pattern(qsearch_obj_t * self, unsigned char *pattern, int len, void *ptrn_data, int type) { if ((1 statics->suppo
2011-02-14 17:45:00 2240
原创 (转)问题:假设一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(既不是第一个,也不是最后一个节点),请将该节点从单链表中删除。
问题:假设一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(既不是第一个,也不是最后一个节点),请将该节点从单链表中删除。链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; }; 解答:假设给定的指针为pCurrent,ListNode* pNext = pCurrent->m_pNext; 由题意知,pCurrent指向链表的某一个中间节点,因此pCurr
2011-02-14 15:35:00 6502 2
原创 已知某二叉树的某两种遍历序列,求另一种遍历序列面试题解法总结(转)
某二叉树的后序遍历序列为dabec,中序遍历序列为debac,则前序遍历序列为 。 A、acbed B、 decab C、 deabc D、 cedba 解法如下: 先在两种遍历序列中找临近的两个或三个字符(内容相同,但顺序可能相同或者不同),如上例,从右向左找,先找出的是ab,根据后序和中序,可还原一棵子树是b是左孩子,a是根结点,然后把还原的这棵子树作为一个新的整体,再按照刚才同样的规则与其他字符结合,进一步还原成一个更大的子树,最终还原成一棵完整的树。就
2011-02-14 14:47:00 3185 1
原创 TCP三次握手 四次挥手全过程
TCP握手协议 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),
2011-02-12 14:21:00 560
原创 递归实现合并两个有序链表成一个链表依然有序
Node * MergeRecursive(Node *head1 , Node *head2) { if ( head1 == NULL ) return head2 ; if ( head2 == NULL) return head1 ; Node *head = NULL ; if ( head1->data data ) {
2011-02-12 10:22:00 598
原创 一个单向链表,只知道某个节点的指针p,但是p不是尾节点,请编程删除节点p.
既然p不是尾结点那么就另p指向结点的内容等于 它后面结点的内容p->data = p->next->data;然后p->next = p->next->next;free(p->next);
2011-02-12 00:43:00 1314
转载 逆转单链表
<br />//逆转单链表 <br />struct node *reverse_LList(node *head) <br />{ <br />//以p作为当前结点处理,头结点为逆转前的头结点 <br /> struct node *p,*q,*temp; <br /> if(head == NULL) cout << "空表" << endl;//头结点为0,空表 <br /> q = head; //q指向头结点 <br /> p
2011-02-12 00:38:00 818
转载 查找整数数组中第二大的数
<br />题目:写一个函数找出一个整数数组中,第二大的数。【Mirosoft】<br />PS:1、” 66,66,66,66,66 ”,则没有第二大数。<br />2、” 99,99,88,86,68,66 ”,则最大数是88。<br />下面我先给出查找最大数字的程序:<br />int GetFirstMaxNumber(int buffer[])<br />{<br /> int i,max;<br /> <br /> max = buffer[0];<br /> for(i=1
2011-02-12 00:36:00 6198 1
原创 linux系统的进程间通信有哪几种方式,及优劣?
<br /># 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。<br /># 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。<br /># 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步
2011-02-12 00:29:00 854
原创 现在最常用的进程间通信的方式有:管道,信号,信号量,消息队列,共享内存。
<br />所谓进程通信,就是不同进程之间进行一些"接触",这种接触有简单,也有复杂。机制不同,复杂度也不一样。通信是一个广义上的意义,不仅仅指传递一些massege。<br /> <br /> 他们的使用方法是基本相同的,所以只要掌握了一种的使用方法,然后记住其他的使用方法就可以了。<br /> <br /> 1. 信号<br /> 在我学习的内容中,主要接触了信号来实现同步的机制,据说信号也可以用来做其它的事情,但是我还不知道做什么。<br /> <br /> 信号和信号量是不同的,他们虽
2011-02-12 00:28:00 1655
原创 关于sizeof和strlen !!!
<br />已知 char *str1="absde";<br /> char str2[]="absde";<br /> char str3[8]={'a',};<br /> char ss[] = "0123456789";<br /><br />为什莫 sizeof(str1)=4<br /> sizeof(str2)=6;<br /> sizeof(str3)=8;<br /> sizeof(ss)=11<br /> <br />首先说明一点
2011-02-12 00:25:00 442
转载 一个由c/C++编译的程序占用的内存分几个部分
一、预备知识—程序的内存分配<br /> 堆(heap)和栈(stack)是C/C++编程不可避免会碰到的两个基本概念。首先,这两个概念都可以在讲数据结构的书中找到,他们都是基本的数据结构,虽然栈更为简单一些。 在具体的C/C++编程框架中,这两个概念并不是并行的。对底层机器代码的研究可以揭示,栈是机器系统提供的数据结构,而堆则是C/C++函数库提供的。 具体地说,现代计算机(串行执行机制),都直接在代码底层支持栈的数据结构。这体现在,有专门的寄存器指向栈所在的地址,有专门
2011-02-12 00:22:00 2451
原创 在windows 用ssh访问linux 提示用户名密码不对,是因为/root/.ssh/目录下少authorized_keys2和id_dsa这两个文件
<br />在windows 用ssh访问linux 提示用户名密码不对,是因为/root/.ssh/目录下少authorized_keys2和id_dsa这两个文件
2011-02-12 00:21:00 2611
原创 linux平台安全开发工程师要求
linux平台安全开发工程师 岗位职责: 1. 负责新产品内核部分研发,主要是网络、安全框架、和虚拟文件系统部分。 2. 根据需求对现有产品进行修改,优化和新功能开发。 岗位要求: 1. 本科以上学历,计算机相关专业毕业; 2. 熟练掌握linux下c/c++语言编程 3. 一年以上linux内核开发经验,有lsm和防火墙开发经验者优先 4. 对Linux内核研究、优化、开发 及计算机网络有浓厚兴趣,具备内核某一领域研究经验 5. 熟练掌握tcp/ip网络协议栈,熟悉网络编程,网络安全
2011-02-11 18:08:00 977
Java编程思想第四版完整中文高清版
2012-01-11
C语言实现Vigenere加解密
2012-01-06
北航李老师密码学与网络安全精讲
2012-01-06
linux 与windows转输工具
2010-03-11
socket编程中select的使用
2009-03-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人