自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (5)
  • 收藏
  • 关注

原创 inde节点和file结构的区别

inode 或i节点是指对文件的索引。如一个系统,所有文件是放在磁盘或flash上,就要编个目录来说明每个文件在什么地方,有什么属性,及大小等。就像书本的目录一样,便于查找和管理。这目录是操作系统需要的,用来找文件或叫管理文件。许多操作系统都用到这个概念,如linux, 某些嵌入

2011-08-07 21:39:58 818

原创 选择排序,堆排序,归并排序

选择排序堆排序:#includeusing namespace std;void print(int*,int);/* *堆排序*/void sift(int* s,int len,int i){ int j,temp; if((2*i+1) len)//只有左节点 { if(s[i] > s[2*i+1]) //父节点和左子节点互换 { temp = s[2*i+1]; s[2*i+1] = s[i]; s[

2010-09-01 20:47:00 775

原创 二分查找,分块查找,哈希查找

二分查找法:如下例程序:#includeusing namespace std;//快速排序进行排序void quickSort(int* qs,int low,int high){ int flag = 0; //比较标志位 int i=low,j=high; //游标 flag = qs[low]; if(high > low) { while(j>i) { while((j>i)&&(flagi)&&(fla

2010-08-26 20:33:00 2477

原创 树的基本定义,二叉树,二叉排序树,森林,最优二叉树(哈夫曼树,哈夫曼编码)

遍历二叉树的三种方式:先序遍历,中序遍历,后序遍历线索二叉树二叉树的深度计算排序二叉树:树和森林:在这里,保存树和森林的办法是用二叉树作为保存方式,还是通过链式结构进行保存,每个节点的左边保存的为该节点的第一个孩子节点,而后节点则为该节点所在深度的下一个兄弟节点。如下图:最优二叉树(哈夫曼树)哈夫曼编码:它是根据每一个源字符出现的估算概率而建立起来的(出现概率高的字符使用较短的编码,反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低,从而达到无损压缩数据的目的)。如下例:

2010-08-24 20:41:00 3044

原创 快速排序

<br />快速排序是一种划分交换排序,它采用的是分治法的策略。<br /> <br />分治法的基本思想:将原问题分解为若干个规模更小但结构与原问题相似的子问题,递归的解这些子问题,然后将这些子问题的解组合为原问题的解。<br /> <br />下面是一个快速排序法的程序,在这个代码中,首先将代排序数组的第一个单元作为flag(比较标志位)。随后从数组的末尾进行比较,如果发现有数据单元a的值小于flag,那么就将他存入第一个数组单元。此时j指向a。随后开始从数组前进行搜寻比较,直到发现有一个值比flag要

2010-08-22 14:40:00 1037 1

原创 直接插入排序,希尔排序

      每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。   第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。 直接插入排序属于稳定的排序,时间复杂性为o(n^2),空间复杂度为O(1)。  直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一

2010-08-21 20:05:00 2275

原创 冒泡排序

冒泡排序属于交换排序的一种,交换排序的基本思想是:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。它的时间复杂度为O(n^2),虽然不及堆排序、快速排序的O(nlogn,底数为2),但是有两个优点:1.“编程复杂度”很低,很容易写出代码;2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。由于冒泡排序记录移动次数较多,故平均时间性能比直接插入排序要差得多。实现代码:#includeusing name

2010-08-21 19:01:00 980

原创 Linux内核网络系统结构图(TCP/IP)和源代码的布局

file: init.h #define __init_call __attribute__ ((unused,__section__ (".initcall.init"))) #define __exit_call  __attribute__ ((unused,__section__ (".exitcall.exit"))) extern initcall_t __initcall_start, __initcall_end; #define __initcall(fn)            /  

2010-08-07 11:54:00 2248

原创 C++学习笔记(二)

<br />友元<br /> <br />友元包括友元函数和友元类。<br />友元可以访问其有好友关系的类中的私有成员。<br /> <br />将一个普通函数在类体中通过friend关键字经行声明,就是将该函数声明为该类的友元函数。<br /> <br />在通过友元函数访问私有数据成员时,必须加上对象名。所以,友元函数一般都会有一个该类的引用变量,这个变量用于接收传来的对象。<br /> <br />友元函数不仅可以是一般函数(非成员函数),而且可以是另一个类中的成员函数。在这里,就用到了提前引用声明

2010-08-06 14:42:00 849

原创 C++学习笔记(一)

用const声明的变量被称为常变量,常变量在程序运行期间是不能改变的const int a = 3; //其指定值始终为3在定义常变量时必须同事对它初始化(既指定其值)。此后它的值不能再改变string在C++中也有定义。在使用方法上和其他int,char类型一样。可用来定义变量,字符串常量以“/0”作为结束符。但将字符串常量存放到字符串变量中时,只存放字符串本身而不存放“/0”。并且在字符串中:1。字符串赋值用赋值号2。字符串连接用加号3。字符串比较直接用关系运算符为动态的分配和撤销内存,C++中使用了n

2010-08-05 16:21:00 1005

原创 多态和虚表

<br />多态<br />多态的这个概念稍微有点模糊,如果想在一开始就想用清晰用语言描述它,让读者能够明白,似乎不太现实,所以我们先看如下代码: <br />//例程1 <br />#include <iostream>      <br />usingnamespace std;    <br />    <br />class Vehicle <br />{    <br />public:    <br />     Vehicle(float speed,int total) <br />    

2010-07-17 13:22:00 10614 1

原创 C/C++内存对齐

<br />一、什么是字节对齐,为什么要对齐?<br />    现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。<br />    对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问一个没有进行对齐的变量的时候会

2010-07-16 18:02:00 784

原创 C语言总结

<br />用static声明局部变量:有时希望函数中的局部变量的值在函数调用结束后不消失而表留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。这时就应该指定该局部变量为“静态局部变量”,用关键字static进行声明。<br /> <br />用static声明外部变量:有时在程序设计中希望某些外部变量只限于被本文件引用,而不能被其他文件引用。这时可以在定义外部变量时加一个static声明。这种加上static声明、只能用于本文件的外部变量称为静态外部变量。

2010-06-26 15:01:00 847 1

原创 TCP学习总结(二)

<br />TCP的计时器:<br /><br /><br /><br />重传时间的计算:重传时间 = 2 X(往返时间)。<br />往返时间的计算:两种方法,第一种方法是TCP使用时间戳选项,第二种方法是由TCP发送一个报文段,启动计时器,然后等待其确认。<br /> <br /> <br />连接的建立:<br />TCP连接的建立为3次握手。<br /><br />其中,第二和第三可作为一个动作。这样就是连接建立的三次握手。 <br /> <br /> <br />连接的终止:<br />参加交换

2010-06-26 11:49:00 859

原创 TCP学习总结(一)

<br />传输层的基本概念:<br />传输层协议具有几种责任。一种责任就是创建进程到进程(程序到程序)的通信,TCP使用端口号来完成这种通信。另一种责任就是在运输层提供流控制和差错控制机制,TCP使用滑动窗口协议完成流控制,它使用确认分组、超时、和重传来完成差错控制。<br />运输层还应负责为应用程序提供连接机制,这些应用程序应当能够向运输层发送数据流。在发送器运输层的责任应当是和接收器之间建立连接,将数据流分割成为可运输的单元,将他们编号,然后逐个发送给它们。运输层在接收端的责任应当是等待属于同一个

2010-06-24 21:44:00 1538

转载 堆和栈的区别

<br />首先,放一篇我自己比较熟悉的在JAVA中堆和栈的区别<br /> <br />栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 <br />Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分

2010-06-09 07:31:00 791

原创 sizeof的使用方法!!!

sizeof(int)等的大小依赖于操作系统的位数,如果是在16位DOS环境下,用TC编译,则为2,如果在windows环境下,用VC编译,则为4。第一个例子:char* ss = "0123456789"; sizeof(ss) 结果 4 ===》因为SS为指针,它反映了操作系统的位数,windows是32位的。但是如果在16位DOS环境下,用TC编译,结果是2。sizeof(*ss) 结果 1 ===》*ss是第一个字符char ss[] = "0123456789"; sizeof(ss) 结果 11

2010-06-08 07:18:00 1184

原创 strcmp和strlen实现的源代码

<br />int strlen(const char* str) <br />{ <br />int i=0; <br />while(*str++) i++; <br />return i; <br />} <br /><br /><br /> <br /> <br /><br />int strcmp( const char *string1, const char *string2 ) <br />{ <br />int i; <br />do{ <br />i = (int)*string1 -(

2010-06-07 17:16:00 736

原创 Linux中报文是如何从网卡传递到相应协议的

<br />报文是如何从网卡传递到相应协议的<br />------------------------------------<br /><br />先来看一看网络部分是如何被初始化的. 下面是函数被调用的过程:<br /><br />start_kernel -> init -> do_basic_setup -> sock_init -> proto-init<br />           inet_proto_init  -> ip_init -> dev_add_pack<br /><br />

2010-06-07 09:33:00 1120

原创 UDP学习总结

<br />运输层的责任:运输层协议具有几种责任。一种责任就是创建进程到进程的通信(进程就是正在运行的应用程序),UDP使用端口号来完成这种通信。另一种责任就是在运输层提供流控制机制。运输层应当负责为进城提供链接机制,这些进程应当能够向运输层发送数据流,发送器运输层的责任应是和接收器运输层之间建立连接,将数据分割成为可运输的单元,将他们编号,然后逐个发送他们。运输层在接收端的责任应该是等待所有不同单元的到达,检查并传递那些没有差错的单元,并将他们作为一个流交付给接收进程。当整个流发送完毕后,运输层应该关闭这

2010-06-06 11:21:00 2419

原创 ICMP学习总结

ICMP本身是一个网络层协议,但是,它的报文不是如设想的那样直接传送给数据链路层。实际上,ICMP首先要封装成IP报文,然后再传输给下一层。ICMP报文可分为两类:差错报告报文和查询报文。差错报告报文用于报告路由器或主机(目的站)在处理一个IP数据报时可能遇到的一些问题。查询报文是成对出现的,它帮助主机或网络管理员从一个路由器或另一个主机得到特定的信息。下图列出了每一类的ICMP报

2010-05-24 15:33:00 3014

原创 ARP学习总结

ARP为地址解析协议,它将逻辑地址(例如IP地址)映射为物理地址。原有的一种映射方式是通过静态映射,静态映射是创建一个表,它将物理地址和逻辑地址关联起来,但是当网络上的主机发生变化时,该表中的项并不能动态更新,这给管理和维护造成了很多的影响。所以,ARP采用动态映射机制,能找到目标IP地址的物理网卡地址。在任何时候,发送端必须有接收站的逻辑IP地址,但是IP数据包必须封装成帧才能通过物理网络。

2010-05-23 00:06:00 4822 2

原创 网际协议(IP) 总结

在IP层的分组叫做数据报。下图是一个数据报的格式,最底下的黑色部分为“选项”。 版本:这里讨论的是IPV4版本。首部长度:首部长度是可变的,在20到60个字节之间。当没有选项时,首部长度是20个字节,而这个字段的值是5(5 * 4 = 20)。当选项字段为最大值时,这个字段为15。服务类型:这个8比特字段中包括3比特的“优先”和4比特的“服务类型”。“优先”顺序是指当路由拥挤时需要

2010-05-19 18:43:00 1476

转载 Linux内核同步介绍和方法

Linux设备驱动中必须解决的一个问题是多个进程对共享资源的并发访问,并发访问会导致竞态,linux提供了多种解决竞态问题的方式,这些方式适合不同的应用场景。  Linux内核是多进程、多线程的操作系统,它提供了相当完整的内核同步方法。内核同步方法列表如下:中断屏蔽原子操作自旋锁读写自旋锁顺序锁信号量读写信号量BKL(大内核锁)Seq锁一、并发与竞态

2010-05-07 23:14:00 875

转载 中断服务下半部之tasklet详解

【摘要】本文详解了中断服务下半部之tasklet实现机制。介绍了tasklet链表的组织形式tasklet_vec,在此基础之上分析了tasklet执行流程。最后介绍了tasklet相关的API,如何编写自己的tasklet处理程序及定义一个tasklet对象并向内核提交等待调度运行。 【关键字】中断下半部,tasklet,tasklet_vec,tasklet_schedule,TASKLET_

2010-05-07 21:15:00 795

转载 事业是男人的姿色

男人自然也是有姿色之说的,美男子与丑八怪就是两个极端,多数人则姿色平平。男人的姿色,半是父母所赐,半是自己挣来的。放眼看去,那些事业成功的男人,无不神采飞扬,气宇轩昂,脸上充满自信,嘴角带着微笑,因为那姿色是来自内心的。从外观看,他也可能会其貌不扬,可能会五官不整,但是成功的事业会让他变得满面春风,笑意盎然。  而没有事业、无所作为的男人,即使长得貌似潘安,那姿色也是惨淡的,眼睛大却无神,皮肤白却

2010-05-05 16:31:00 500

转载 职场10类最失败的新人

1:极不合群  王先生物流公司职员  虽然我们公司新进的职员上班时基本都是坐在办公桌前处理单据等,并不需要性格过分热情开朗或者为人八面玲珑,但是公司当然也不希望找一个类似于患自闭症的职员每天像空气一样地存在。新来的一批职员中有一个女孩子就内向得让人受不了。  她刚来上班的时候,没有人知道她是几点来的,往往是办公室中我偶尔头一抬,猛地看见刚才还空着的位子上已经有一个身影端坐在那里。下班时候也是这样,

2010-05-05 16:16:00 608

原创 LINUX0.11内核KERNEL包(内核代码)中的几个重要的文件分析

在KERNEL包中有几个重要的文件夹和文件,他们各司其职,处理着有关内核的一些功能操作。其中文件夹有三个:blk_drv(块设备驱动),chr_drv(字符设备驱动),math(数学协处理器)  文件中asm.s  fork.c   mktime.c   panic.c printk.c  sched.c  signal.c  exit.c   sys.c   traps.c  system_ca

2010-04-05 16:07:00 1005

转载 Linux下Socket编程

主机字节序   Bind()函数在成功被调用时返回0;出现错误时返回"-1"并将errno置为相应的错误号。需要注意的是,在调用bind函数时一般不要将端口号置为小于1024的值,因为1到1024是保留端口号,你可以选择大于1024中的任何一个没有被占用的端口号。连接建立  面向连接的客户程序使用Connect函数来配置socket并与远端服务器建立一个TCP连接,其函数原型为:   int

2010-04-01 14:57:00 583

原创 中断处理的tasklet

今天在研究CAN_MODULE和CAN_DRIVE整合的问题时,为了防止CAN_DRIVE在发生硬中断后执行的时间太长,我想把CAN_RX声明成一个tasklet,其也是在linux2.4内核下比较好的一种注册方式。还有一种就是传统的上半区和下半区,不过貌似已经不是很常用了。 下面是从网上弄来的一些总结: 从某种程度上讲,tasklet机制是Linux内核对BH机制的一种扩展。在2

2010-03-25 22:55:00 654

转载 spin_lock的定义

spin lock只有在多cpu下才有意义。 当一个资源被cpu1占用的时候,如果cpu2也要使用这个资源, cpu2就需要原地等待cpu1释放这个资源之后才能使用资源。

2010-03-23 16:40:00 602

转载 实模式、保护模式和虚拟8086模式的意义

  一直以来,都搞不清楚这几个概念。在网上搜了一下,把它晒上,不会再忘记! 有其它的内容,请看到的朋友请补充。      从80386开始,cpu有三种工作方式:实模式,保护模式和虚拟8086模式。只有在刚刚启动的时候是real-mode,等到linux操作系统运行起来以后就运行在保护模式。实模式只能访问地址在1M以下的内存称为常规内存,我们把地址在1M 以上的内存称为扩展内存。在保护模式下,全部

2010-03-22 13:39:00 825

原创 南岭实验室的项目总体结构图及其总结与思考

南岭实验室的项目总体结构图,这是我问曲师兄后自己总结的结构,在这里面,client是每一个操作自己车辆的用户,通过个人电脑向自己的车辆发送信息,先通过server判断请求是否正确,是否可靠,然后通过CDMA发送给车载网关,车载网关有CDMA的接收端,接收到消息后将其交给CDMA的驱动,驱动扔给linux网络协议堆栈,然后packet截包程序从总截获数据包,然后根据IPV6地址判断是扔给ca

2010-03-18 21:28:00 1146

转载 各大IT公司笔试真题总汇

巨人网络java笔试基础题分享http://www.coderarea.net/bbs/read.php?tid=834百度笔试题http://www.coderarea.net/bbs/read.php?tid=811百度2010校招运维部门笔试http://www.coderarea.net/bbs/read.php?tid=779百度2010年校园招聘软件测试笔试题http://www.co

2010-03-18 19:45:00 952

原创 linux的进程管理1

主要看了Linux完全注释那本书,终于准备攻读Linux内核源码了,先看了第二张的总体概念,感觉操作系统有很多东西还真是大同小异,记得ucos就是有一个叫做快表的东西,里面最多可以表示64个进程,而早版的Linux(0.11)也有这个一说的东西。 在Linux中也有一个PCB来表示每个进程,在这个结构体中,有指向任务代码的指针,有指向任务数据的指针,还有指向堆栈段地址(这个栈空间用来保存该

2010-03-16 21:52:00 817

原创 2010-3-9感想

从今天起我也是有实验室的人了,实验室分在了南岭,每天来回估计还要两个钟头,长春最近的天气还是挺冷的,早起出去还是一件挺痛苦的事情,机器拿到了高师哥的机子,一切都很好,也很顺利。该有的东西也都有了,下来就是我的努力了。今天也和师哥聊了聊,他给了一些不错的建议,建议还是很中肯的。 1 学好shell编程,在面试的时候可能会问到。2 具体的方向不要变,还是走linux网络层次中的虚设备。

2010-03-09 22:04:00 659

转载 printk函数的使用

printk()函数的总结我们在使用printk()函数中使用日志级别为的是使编程人员在编程过程中自定义地进行信息的输出,更加容易地掌握系统当前的状况。对程序的调试起到了很重要的作用。(下文中的日志级别和控制台日志控制级别是一个意思)printk(日志级别 "消息文本");这里的日志级别通俗的说指的是对文本信息的一种输出范围上的指定。日志级别一共有8个级别,printk的日志级别定义如下(在lin

2010-01-13 13:51:00 814

转载 【转】嵌入式Linux网络驱动程序的开发及实现原理

 随着人们对开放源代码软件热情的日益增高,Linux作为一个功能强大而稳定的开源操作系统,越来越受到成千上万的计算机专家和爱好者的青睐。在嵌入式领域,通过对Linux进行小型化裁剪后,使其能够固化在容量只有几十兆字节的存储器芯片或单片机中,成为应用于特定场合的嵌入式Linux系统。Linux强大的网络支持功能实现了对包括TCP/IP在内的多种协议的支持,满足了面向21世纪的嵌入式系统应用联网的需求

2010-01-11 21:17:00 1602 1

转载 深入Linux网络核心堆栈(对于netfilter的用法和讲解)

目录1 - 简介  1.1 - 本文涉及的内容  1.2 - 本文不涉及的内容2 - 各种Netfilter hook及其用法  2.1 - Linux内核对数据包的处理  2.2 - Netfilter对IPv4的hook3 - 注册和注销Netfilter hook4 - Netfilter 基本的数据报过滤技术[1]  4.1 - 深入hook函数  4.2 - 基于接口进行过滤  4.3

2009-12-31 22:26:00 12168 2

原创 对于数据包的截取,使用linux中的netfilter钩子函数

在师哥的代码(packet.c)中使用的是Linux2.4内核中的一个子系统:netfilter,该子系统的使用可以过滤数据包,也就对数据包经行了截获,它通过调用内核网络代码中的一些hook函数完成所需要的工作。而当一个当数据包游历Linux内核的网络堆栈时,它穿过了几个hook点,在这里,数据包可以被分析并且选择是保留还是丢弃,这些hook点就是Netfilter hook。 而钩子

2009-12-31 22:03:00 8961

JSP实现网上购物网站

JSP实现网上购物网站JSP实现网上购物网站JSP实现网上购物网站JSP实现网上购物网站JSP实现网上购物网站JSP实现网上购物网站

2010-05-23

linux早期内核版本注释

linux早期内核版本注释linux早期内核版本注释linux早期内核版本注释linux早期内核版本注释linux早期内核版本注释

2010-05-23

FCKeditor 成功实例

FCKeditor 成功实例FCKeditor 成功实例FCKeditor 成功实例FCKeditor 成功实例FCKeditor 成功实例FCKeditor 成功实例FCKeditor 成功实例FCKeditor 成功实例

2009-03-13

PetShop4.0 ASP.NET三层电子商务安装源代码(VS2005)和数据库

PetShop4.0 ASP.NET三层电子商务安装源代码(VS2005)和数据库

2009-01-08

c实例解析精粹(代码)

c实例解析精粹(代码) 出版社 : 人民邮电出版社 作者: 曹衍龙/ 林瑞仲/ 徐慧/ 本书主要讲解C语言编程涉及的各类常见实例,共分8篇,以“基础篇→数据结构篇→数值计算与趣味数学篇→图形篇→系统篇

2008-11-13

空空如也

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

TA关注的人

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