关闭

动态口令

动态口令的核心是口令生成算法和时间同步问题   一、口令生成算法 口令生成算法是基于时间的一种秘密算法,它是根据用户密钥数据和当前的时间产生一固定长度的字符串。以下是一种产生16位动态口令的示范算法: 1)程序提取当前时间和用户密钥数据。 2)利用时间对用户密钥数据进行加密。 3)利用SHA-1算法提取加密结果的消息摘要。 4)将所产生的消息摘要作为动态口令使用。当然如果在需要用户输...
阅读(3018) 评论(0)

vim真是个好东东

vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。 ——————————正文开始—————————— 你想以最快的速度学习人类...
阅读(1370) 评论(0)

linux 生产者 消费者 问题

生产者-消费者问题是一个经典的进程同步问题,该问题最早由Dijkstra提出,用以演示他提出的信号量机制。在同一个进程地址空间内执行的两个线程。生产者线程生产物品,然后将物品放置在一个空缓冲区中供消费者线程消费。消费者线程从缓冲区中获得物品,然后释放缓冲区。当生产者线程生产物品时,如果没有空缓冲区可用,那么生产者线程必须等待消费者线程释放出一个空缓冲区。当消费者线程消费物品时,如果没有满的缓冲区,...
阅读(2135) 评论(0)

linux 多线程编程 互斥锁与条件变量

条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待 “ 条件变量的条件成立” 而挂起,另一个线程使 “条件成立 ”(给出条件成立信号),为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 下面这个例子展示的是互斥锁和条件变量的结合使用,以及取消对于条件等待动作的影响,例子中有两个线程被启动,并等待同一个条件变量。 #include #include...
阅读(1586) 评论(0)

linux 多线程编程 Thread Specific Data (TSD)

在单线程程序中,我们经常使用 “全局变量” 以实现多个函数间共享数据,在多线程环境下,由于数据空间是共享的,因此全局变量也为所有线程所共享。但有时应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效,但却可以跨多个函数访问,比如程序可能需要每个线程维护一个链表,而使用相同的函数操作,最简单的方法就是使用同名而不同变量地址的线程相关数据结构。这样的数据结构可以由POSIX线程库维护,称为线...
阅读(2731) 评论(0)

tcp/ip中的 ip字符串转整数函数 inet_aton 源代码

// ip地址结构体 struct in_addr { unsigned int s_addr; // network byte order( big-endian) }; // inet_aton将 点分十进制串cp 转换为一个网络字节顺序的32位整数 IP地址 // 例如将串cp "192.168.33.123 " // 转为 1100 0000 1010 1000 0010 0...
阅读(3482) 评论(2)

linux 文件描述符表 打开文件表 inode vnode

在Linux中,进程是通过文件描述符(file descriptors,简称fd)而不是文件名来访问文件的,文件描述符实际上是一个整数。Linux中规定每个进程能最多能同时使用NR_OPEN个文件描述符,这个值在fs.h中定义,为1024*1024(2.0版中仅定义为256)。 每个文件都有一个32位的数字来表示下一个读写的字节位置,这个数字叫做文件位置。每次打开一个文件,除非明确要求,否则文件...
阅读(10207) 评论(0)

C语言 控制转移 异常处理机制 setjmp & longjmp

C语言中有一个goto语句,其可以结合标号实现函数内部的任意跳转(通常情况下,很多人都建议不要使用goto语句,因为采用goto语句后,代码维护工作量加大)。另外,C语言标准中还提供一种非局部跳转“no-local goto",其通过标准库中的两个标准函数setjmp和longjmp来实现。 C标准库 下面是K&R的《C程序设计语言(第2版 . 新版)》第232页给出的关于标准库的说明...
阅读(980) 评论(0)

intel汇编 和 AT&T汇编 的区别

AT&T与Intel汇编语言的比较 我们知道,Linux是Unix家族的一员,尽管Linux的历史不长,但与其相关的很多事情都发源于Unix。就Linux所使用的386汇编语言而言,它也是起源于Unix。Unix最初是为PDP-11开发的,曾先后被移植到VAX及68000系列的处理器上,这些处理器上的汇编语言都采用的是AT&T的指令格式。当Unix被移植到i386时,自然也就采用了AT&T的汇编...
阅读(1091) 评论(0)

百度笔试题:负数在前 正数在后(奇数在前,偶数在后)

百度面试题(一):假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数和正数间元素相对位置不变。时空复杂度要求分别为:o(n)和o(1)。 百度面试题(二),给定一个存放正数的数组,重新排列数组使得数组左边为奇数,右边为偶数,且保证奇数和偶数之间元素相对位置不变。时空复杂度要求分别为:o(n)和o(1)。 分析:以上两个面试题本质是...
阅读(4247) 评论(8)

关于构造函数 和 析构函数 能否抛出异常的讨论

构造函数和析构函数分别管理对象的建立和释放,负责对象的诞生和死亡的过程。当一个对象诞生时,构造函数负责创建并初始化对象的内部环境,包括分配内存、创建内部对象和打开相关的外部资源,等等。而当对象死亡时,析构函数负责关闭资源、释放内部的对象和已分配的内存。 在对象生死攸关的地方,如果程序代码出现问题,常常会发生内存泄漏,从而产生可能危害系统运行的孤魂野鬼。大量的事实表明,业务逻辑代码写得非常严谨...
阅读(1842) 评论(0)

C语言 实现 面向对象编程 OOC

最近百度面试过程中有同学被问到这样一个问题:如何用C语言实现面向对象?我们都知道面向对象的三大基本特征:封装、继承和多态,C++语言和编译器都对这些特征有着强有力的支持,但是对于C这样的函数式语言,如何实现面向对象?引用一句话:面向对象从来都是思想,而不是语言! 理解面向对象的编程思想,我们使用C语言这样的较低级的语言也同样可以实现OOP,里面具体用到的有C语言中的宏,结构体,函数指针, 聚合...
阅读(9382) 评论(1)

CPU 实模式 保护模式 和虚拟8086模式

从80386开始,CPU有三种工作方式:实模式,保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到操作系统运行起来以后就切换到protected-mode。实模式只能访问地址在1M以下的内存称为常规内存,我们把地址在1M 以上的内存称为扩展内存。在保护模式下,全部32条地址线有效,可寻址高达4G字节的物理地址空间; 扩充的存储器分段管理机制和可选的存储器分页管理机制,不...
阅读(5207) 评论(3)

UDP实现可靠数据传输

UDP没有Delievery   Garuantee,也没有顺序保证,所以如果你要求你的数据发送与接受既要高效,又要保证有序,收包确认等,你就需要在UDP协议上构建自己的协议。比如RTCP,RTP协议就是在UPD协议之上专门为H.323协议簇上的IP电话设计的一种介于传输层和应用层之间的协议。 下面分别介绍三种使用UDP进行可靠数据传输的协议 RUDP RTP UDT R...
阅读(28886) 评论(3)

服务器 负载均衡 load balance

负载均衡概念 负载均衡( Load Balance LB )建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。 负载均衡有两方面的含义:首先,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高,这就是我们常说的集群(cl...
阅读(2928) 评论(0)
71条 共5页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:451670次
    • 积分:3245
    • 等级:
    • 排名:第11179名
    • 原创:51篇
    • 转载:20篇
    • 译文:0篇
    • 评论:56条
    最新评论