自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (15)
  • 收藏
  • 关注

转载 IGMP、MLD原理

1 IGMP 协议       IGMP用来动态的将各个主机注册到特定局域网中的一个组播组中。主机向本地的组播路由器发送IGMP消息来表明自己所属的组播组。在IGMP协议中,路由器侦听IGMP消息并周期的发出查询,以发现某个子网上哪些组是活动的,哪些是不活动的。       IGMP消息在IP数据报内发送,用IP协议号2来标识。同时,将IP存活时间(TTL)字段值设定为1,

2014-04-28 09:47:28 15577

转载 select,poll,epoll区别

select的本质是采用32个整数的32位,即32*32= 1024来标识,fd值为1-1024。当fd的值超过1024限制时,就必须修改FD_SETSIZE的大小。这个时候就可以标识32*max值范围的fd。对于单进程多线程,每个线程处理多个fd的情况,select是不适合的。1.所有的线程均是从1-32*max进行扫描,每个线程处理的均是一段fd值,这样做有点浪费2.1

2014-04-28 09:39:36 623

转载 深入浅出TCP协议的2MSL TIME_WAIT状态

2MSL TIME_WAIT状态存在的理由:TIME_WAIT状态的存在有两个理由:(1)让4次握手关闭流程更加可靠;4次握手的最后一个ACK是是由主动关闭方发送出去的,若这个ACK丢失,被动关闭方会再次发一个FIN过来。若主动关闭方能够保持一个2MSL的TIME_WAIT状态,则有更大的机会让丢失的ACK被再次发送出去。(2)防止lost duplicate对后续新建正常链接的传输造成破

2014-04-28 09:37:58 3814

转载 原 几种TCP连接中出现RST的情况

目录[-]1 端口未打开2 请求超时3 提前关闭4 在一个已关闭的socket上收到数据总结参考文献:应该没有人会质疑,现在是一个网络时代了。应该不少程序员在编程中需要考虑多机、局域网、广域网的各种问题。所以网络知识也是避免不了学习的。而且笔者一直觉得TCP/IP网络知识在一个程序员知识体系中必需占有一席之地的。在TCP协议中RST表示复位,

2014-04-28 09:36:33 1511

转载 第三层交换机和路由器的区别

近年来随着Internet/Intranet的迅猛发展和B/S计算模式的广泛应用,跨地域、跨网络的业务急剧增长,业界和用户深感传统的路由器在网络中的瓶颈效应。    而三层交换机既可操作在网络协议的第三层,起到路由决定的作用,又具有几乎达到第二层交换的速度,且价格相对较低。    一时间,三层交换机将取代路由器成为网络界最流行的话题。但事实果真如此吗?    传统的路由器在

2014-04-28 09:34:07 632

转载 判断两个链表是否相交

给出两个单向链表的头指针,判断这两个链表是否相交,如果相交给出相交的第一个结点一、两个链表均不含有环链表相交如下图  方法一:直接法   直接判断第一个链表的每个结点是否在第二个链表中,时间复杂度为O(len1*len2),耗时很大方法二:利用计数如 果 两个链表相交,则两个链表就会有共同的结点;而结点地址又是结点唯一标识。因而判断两

2014-04-24 11:32:30 630

转载 白话经典算法系列之七 堆与堆排序

堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总

2014-04-21 13:08:26 505

转载 Linux伙伴系统(一)--伙伴系统的概述

伙伴系统的概述        Linux内核内存管理的一项重要工作就是如何在频繁申请释放内存的情况下,避免碎片的产生。Linux采用伙伴系统解决外部碎片的问题,采用slab解决内部碎片的问题,在这里我们先讨论外部碎片问题。避免外部碎片的方法有两种:一种是之前介绍过的利用非连续内存的分配;另外一种则是用一种有效的方法来监视内存,保证在内核只要申请一小块内存的情况下,不会从大块的连续空闲内存中

2014-04-16 14:11:58 569

转载 希尔排序算法实现(C++)

希尔排序是一种按照增量排序的方法。其中增量值是小于n的正整数。  shell排序的基本思想[1]是:    先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2可以根据百度百科中提供的图来直观的看一下:(1)初始增量为3,该数组分为三组分别进行排序。(初始增量值原则

2014-04-15 17:10:24 1967

转载 七大经典排序(中)

首先感谢朋友们对第一篇文章的鼎力支持,感动中.......  今天说的是选择排序,包括“直接选择排序”和“堆排序”。 话说上次“冒泡排序”被快排虐了,而且“快排”赢得了内库的重用,众兄弟自然眼红,非要找快排一比高下。这不今天就来了两兄弟找快排算账。 1.直接选择排序: 先上图: 说实话,直接选择排序最类似于人的

2014-04-15 16:45:47 556

转载 七大经典排序(上)

今天是开篇,得要吹一下算法,算法就好比程序开发中的利剑,所到之处,刀起头落。 针对现实中的排序问题,算法有七把利剑可以助你马道成功。 首先排序分为四种:       交换排序: 包括冒泡排序,快速排序。      选择排序: 包括直接选择排序,堆排序。      插入排序: 包括直接插入排序,希尔排序。      合并排序: 合并排序

2014-04-15 16:37:41 504

转载 七大经典排序(下)

今天跟大家聊聊最后三种排序: 直接插入排序,希尔排序和归并排序。 直接插入排序:       这种排序其实蛮好理解的,很现实的例子就是俺们斗地主,当我们抓到一手乱牌时,我们就要按照大小梳理扑克,30秒后,   扑克梳理完毕,4条3,5条s,哇塞......  回忆一下,俺们当时是怎么梳理的。       最左一张牌是3,第二张牌是5,第三张牌又是3,赶紧插到

2014-04-15 16:35:39 494

转载 希尔排序

一、算法思想希尔排序是插入排序的一种,又称“缩小增量排序”。在直接插入排序中,如果待排序的对象较少,且初始数据基本有序时效率会大大提高。希尔排序正是依据这个思路对直接插入排序进行了改进。其基本思路是设置增量d,把数据分成d组,第i组存放与ai距离为d的倍数的所有点。然后对每一组进行直接插入排序。依次缩小增量d,直到d等于1为止。增量的数值初始时为d=(n+1) div 2,然后每次

2014-04-15 15:57:39 736

转载 二路归并排序

一、算法思想二路归并是指把两个有序序列合并成一个新的有序序列的过程。方法:新建一个序列,其长度等于要合并的两个序列的长度之和。我们称要合并的序列为A和B,新建的为C。然后设置3个指针:t1、t2、t3,分别指向A、B、C的第一个元素。比较t1,t2指向元素的大小,将较小的存储在C中t3所指的位置,并将指向较小元素的指针和t3都向后移一位。重复上述操作,直到A或B序列已经全部存入C中。最后把

2014-04-15 15:56:37 1335

转载 操作系统常见问题解答

(一)进程与线程的区别,线程安全”怎么理解?进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应得并发性。进程和线程的区别在于:一个程序至少有一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高,另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与

2014-04-15 15:07:17 3135

转载 哈夫曼树

哈夫曼树的基本概念哈夫曼树(Huffman Tree),又叫最优二叉树,指的是对于一组具有确定权值的叶子结点的具有最小带权路径长度的二叉树。(1)路劲(Path):从树中的一个结点到另一个结点之间的分支构成两个结点间的路径。(2)路径长度(Path Length):路径上的分支树。(3)树的路径长度(Path Length of Tree):从树的根结点到每个结点的

2014-04-15 12:22:36 617

转载 哈夫曼编码

前面一节我们知道了,怎样去创建一个哈夫曼树,这一节我们来看看哈夫曼编码。思想:得到哈夫曼树后,自顶向下按路径编号,指向左节点的边编号0,指向右节点的边编号1,从根到叶节点的所有边上的0和1连接起来,就是叶子节点中字符的哈夫曼编码。下图体现了哈夫曼编码的过程: #include stdio.h>#include stdlib.h>

2014-04-15 12:19:10 585

转载 排序算法之堆排序

堆排序算法是选择排序的一种,该算法只是通过堆,最大堆、或者最小堆选择出一个待排序序列中的最大值,或者最小值。要想实现堆排序算法,就需要构建什么堆,这里也最小堆为例。说明什么是堆,怎么构建一个堆。假设待排序序列为A[n] 为一个数组。数组的长度为n 数组下标为 0,1,2,…i,….2i,2i+1….n-1;堆是一个有序的二叉树。一个二叉树满足如下条件就是一个堆。下面以最小堆为例:

2014-04-15 11:15:13 559

转载 堆排序算法 总结

最近面试,老是被问到堆排序算法。回答时老是感觉思路不清楚,现在总结一下,把思路弄清楚的。1.堆排序是利用堆的特性对记录序列进行排序的一种排序方法。好的那么堆得特性是什么呢?堆得定义:堆是满足下列性质的数列{r1, r2, …,rn}: 如下图最开始是一个小顶堆。当把97和13 交换后不是堆了,所以我们要调整根节点使之成为堆即筛选。(注意:是自堆顶到叶子的

2014-04-15 11:11:36 588

转载 排序算法——堆排序

前一阵子一直在写排序的系列文章,最近因为一些事情耽搁了几天,也穿插了几篇其他类别的随笔。今天还是回到排序上面来,善始善终,呵呵。今天要介绍的也是一种效率很高的排序——堆排序思想堆排序,顾名思义,就是基于堆。因此先来介绍一下堆的概念。堆分为最大堆和最小堆,其实就是完全二叉树。最大堆要求节点的元素都要大于其孩子,最小堆要求节点元素都小于其左右孩子,两者对左右孩子的大小关系不做任何要求,其实很好理解。有

2014-04-15 10:55:48 440

转载 数据结构时间复杂度

for(i=1;i   for(j=1;j     for(k=1;k       x++;它的时间复杂度是多少?自己计算了一下,数学公式忘得差不多了,郁闷;(1)时间复杂性是什么?时间复杂性就是原子操作数,最里面的循环每次执行j次,中间循环每次执行a[i]=1+2+3+...+i=i*(i+1)/2次   ,所以总的时间复杂

2014-04-15 10:11:13 1058

转载 常见数据结构查找、插入、删除、遍历性能比较 常见排序算法的比较(图)

排序法 平均时间最差情形稳定度额外空间备注冒泡 O(n2)  O(n2) 稳定O(1)n小时较好交换  O(n2)  O(n2)不稳定O(1)n小时较好选择

2014-04-15 09:46:26 4060

转载 二叉树遍历 推导总结

第一次总结,个人浅见,望大牛们轻削,怕疼,呵呵~~~ 1.已知前序遍历和中序遍历序列,可以唯一确定一棵二叉树。2.已知后序遍历和中序遍历序列,可以唯一确定一棵二叉树。3.已知后续遍历和前序遍历序列,不能唯一确定一棵二叉树。综上:要想唯一确定一个二叉树,必须要有中序遍历序列。 遍历规则:1、先序或者前序遍历规则:根左右2、中序遍历规

2014-04-15 09:30:21 1177

转载 二层交换机、三层交换机和路由器的原理及区别

二层交换机:         二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。具体如下:(1)当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上;(2)再去读取包头中的目的MAC地址

2014-04-14 11:48:34 1161

转载 二层、三层、四层交换机的区别

二层交换技术是发展比较成熟,二层交换机属数据链路层设备,可以识别数据包中的MAC地址信息,根据MAC地址进行转发,并将这些MAC地址与对应的端口记录在自己内部的一个地址表中。具体的工作流程如下:  (1) 当交换机从某个端口收到一个数据包,它先读取包头中的源MAC地址,这样它就知道源MAC地址的机器是连在哪个端口上的;  (2) 再去读 取包头中的目的MAC地址,并在地址表中查找相应的端口

2014-04-14 11:47:48 786

转载 深入思考SDN的核心本质:从SDN=OpenFlow回到软件定义网络

摘要:盛科网络总监张卫峰对SDN的认识经历了四个阶段:从SDN=OpenFlow到SDN的三个本质属性,再到狭义SDN、广义SDN、超广义SDN,最后又回到了软件定义网络,相信每个阶段作者的新观点,也会给我们带来一些启发。编者按:SDN到底是什么?虽然这个概念已经被炒了很多年,但还没有人对其给出一个明确的概念。盛科网络总监张卫峰撰写了自己关注SDN以来,对其认识的四个阶段,最后一个阶段

2014-04-14 11:36:04 803

转载 深入浅出解析OpenFlow

摘要:SDN是当前的热点技术,但是由于SDN技术相对还比较新,而且本身内涵并不清晰,所以极容易产生误解,SDN将引起一场网络革命,作者张卫峰告诉您SDN浪潮之巅那些事儿,本文重点介绍OpenFlow。OpenFlow所面临的挑战OpenFlow标准的不成熟,在控制层面也有不少体现,尽管体现的不如转发层面那么明显。根据对OpenFlow标准的分析以及一些实际部署案例的反馈

2014-04-14 11:33:05 2364

转载 二三层交换机与路由器的比较

为了适应网络应用深化带来的挑战,网络在规模和速度方向都在急剧发展,局域网的速度已从最初的10Mbit/s 提高到100Mbit/s,目前千兆以太网技术已得到普遍应用。在网络结构方面也从早期的共享介质的局域网发展到目前的交换式局域网。交换式局域网技术使专用的带宽为用户所独享,极大的提高了局域网传输的效率。可以说,在网络系统集成的技术中,直接面向用户的第一层接口和第二层交换技术方面已得到令人满意的答案

2014-04-14 11:31:24 719

转载 深入剖析三层交换机的工作过程

路由器的三层转发主要依靠CPU进行,而三层交换机的三层转发依靠ASIC芯片完成,这就决定了两者在转发性能上的巨大差别。当然,三层交换机并不能完全替代路由器,路由器所具备的丰富的接口类型、良好的流量服务等级控制、强大的路有能力等仍然是三层交换机的薄弱环节。目前的三层交换机一般是通过VLAN来划分二层网络并实现二层交换的,同时能够实现不同VLAN间的三层IP互访。在讨论三层交换机的转发原理之前有必要交

2014-04-14 11:29:57 1088

转载 socket阻塞与非阻塞,同步与异步、I/O模型

socket阻塞与非阻塞,同步与异步作者:huangguisu1. 概念理解     在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:同步:      所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。也就是必须一件一件事做,等前一件做

2014-04-14 09:10:59 484

转载 linux RCU锁机制

众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效的同步 机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速度在成倍地增加,原因很简 单,CPU的速度与访问内存的速度差距越来越大,而这种锁使用了原子操作指令,它需要原子地访问内存,也就说获得锁的

2014-04-14 00:13:48 603

转载 linux 自旋锁和信号量

自旋锁最多只能被一个可执行线程持有(读写自旋锁除外)。自旋锁不会引起调用者睡眠,如果一个执行线程试图获得一个已经被持有的自旋锁,那么线程就会一直进行忙循环,一直等待下去(一直占用 CPU ),在那里看是否该自旋锁的保持者已经释放了锁, " 自旋 " 一词就是因此而得名。由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。信号量和读写信号量适合

2014-04-14 00:12:45 633

转载 Linux 自旋锁

1.什么是自旋锁自旋锁顾名思义首先是一把锁,另外使用这把锁的线程需要反复自我循环(loop)检测这把锁是否可用。注意与信号量区别,信号量也是一把锁,但是使用这把锁的线程检测锁不可用时,选择去睡眠,而不是自我循环。自旋锁与信号量相同点是两者都是锁,都具备锁定特性,实现临界区代码块的同步与互斥访问。2.自旋锁实现(摘自http://en.wikipedia.org/wiki/Spi

2014-04-14 00:01:04 3114

转载 进程调度

进程调度策略就是调度系统种哪一个进程来CPU运行。这种调度分2层考虑。 第一层,进程状态这个是最优先考虑的,也就是说优先级最高的。在linux中只有就绪态的进程才有可能会被调度选中然后占有CPU,其它状态的进程不可能占有的到CPU。下面是linux中进程的状态TASK_RUNNING:就绪状态,得到CPU就可以运行。TASK_INTERRUPTIBLE:浅度睡眠,资源到位或者受到信号就会变成就绪

2014-04-13 22:26:53 581

编译原理第6章-语义分析

编译原理第6章-语义分析

2016-11-22

poll和epoll内核源码剖析

poll和epoll内核源码剖析

2016-11-21

c语言开发实例详解

用大量经典有趣的问题来讲解C的开发,强烈推荐

2015-03-28

深入编程内幕.pdf

Visual C++作为一个功能非常强大的可视化应用程序开发工具 是计算机界公认的最 优秀的应用开发工具之一 Microsoft 的基本类库MFC 使得开发Windows应用程序比以 往任何时候都要容易 本光盘教学软件的目的就是为了让你学会在Visual C++环境下 利 用微软的基本类库MFC 开发出功能强大的Windows应用程序 在本章节的内容当中 我们 将向您介绍使用VC 开发软件需要用到的一些基本概念 使用MFC 进行编程的基本特点 以 及VISUAL C++集成开发环境提供的一系列编程辅助工具 WIZARD的使用方法 ">Visual C++作为一个功能非常强大的可视化应用程序开发工具 是计算机界公认的最 优秀的应用开发工具之一 Microsoft 的基本类库MFC 使得开发Windows应用程序比以 往任何时候都要容易 本光盘教学软件的目的就是为了让你学会在Vis [更多]

2015-03-28

C++编程指南.pdf

软件质量是被大多数程序员挂在嘴上而不是放在心上的东西! 除了完全外行和真正的编程高手外,初读本书,你最先的感受将是惊慌:“哇!我 以前捏造的C++/C 程序怎么会有那么多的毛病?” 别难过,作者只不过比你早几年、多几次惊慌而已。 请花一两个小时认真阅读这本百页经书,你将会获益匪浅,这是前面N-1 个读者的 建议。

2015-03-28

TCP-IP详解卷2

TCP-IP详解卷2是TCP/IP技术详解卷2

2011-09-25

TCP-IP详解卷1

TCP-IP详解卷1是TCP/IP协议详解卷1.

2011-09-25

计算机网络与因特网

计算机网络与因特网一书是计算机网络技术里的圣经

2011-09-25

Berkeley DB 资料

Berkeley DB 批量插入更新与删除用法示例 Berkeley 函数接口 Berkeley DB 由浅入深 SQL 开发人员 Oracle Berkeley DB 指南 Berkeley DB参考手册

2010-09-21

c 函数速查手册 c的标准库函数

本帮助文件由本人整理制作,内容全摘自网络,版权归实际作者所有.

2009-10-13

linux c函数速查手册

linux编程的标您可以免费的使用、分发本手册。但未经Linhan的授权许可不得擅自进行篡改、反编译,及将其全部或部分用于商业用途。 本手册受著作权法和国际公约的保护,作者保留对本手册及本声明的最终修改权。 准库函数 都可以搜到

2009-10-13

lcd ampire128x64 的使用 proteus

本资源为lcd ampire128x64 的使用,包括它的仿真,软件为proteus6 所用程序是用 keil编写,也有源码。

2009-05-17

自动控制 -20-sim

自动控制 荷兰软件20-sim的使用及课题设计,该课题设计是利用了仿真软件的控制应用试验箱

2009-04-28

autocad做的小户型平面图

小户型平面图即是平面图的设计,本作品是用AutoCAD的平面设计模块制作的平面图图1是整个小户型平面图制作的成品图,人们可以看到这个作品的整个平面设计和室内部的布局。

2009-03-14

用matlab做的小波信号变换系统

用matlab作的小波信号变换系统,利用二维小波变换实现图像压缩、图像融合和图像增强等功能。

2009-03-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除