自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (7)
  • 收藏
  • 关注

原创 C++

C++多态性1:用virtual关键字声明的函数叫做虚函数,存在虚函数的类都有一个虚函数表叫做虚表,类的对象有一个指向虚表开始的虚指针,类与虚表对应,对象与虚指针对应。2:多态性是一个接口多种实现,父类型的指针指向其子类的实例,然后通过父类的指针调用子类的成员函数,父类的指针有多种形态。3:多态用虚函数实现,结合动态绑定,纯虚函数是虚函数再加上=0,抽象类指至少含一个纯虚函数的类。

2014-07-14 21:45:05 671

原创 Linux内核中的红黑树

红黑树是一种在插入或删除结点时都需要维持平衡的二叉查找树,并且每个结点都具有颜色属性:    (1)、一个结点要么是红色的,要么是黑色的。    (2)、根结点是黑色的。    (3)、如果一个结点是红色的,那么它的子结点必须是黑色的,也就是说在沿着从根结点出发的任何路径上都不会出现两个连续的红色结点。    (4)、从一个结点到一个NULL指针的每条路径上必须包含相同数目的黑色结

2014-07-12 12:44:12 1139

原创 B树

在降低磁盘I/O方面起到很好的作用。多路查找树:每个节点的孩子可以多于两个,且每个节点可以存储多个元素,所有元素之间存在某种特定的排序关系。多路查找树中每个节点具有两个孩子或三个孩子,我们称之为2-3树;一个节点拥有两个孩子和一个元素我们称之为2节点,跟二叉排序树相似,左子树包含的元素小于节点的元素,右子树包含的元素大于节点元素,与二叉排序树不同的是,这个2节点要么有两个孩子,要么没有

2014-07-11 22:11:56 1146

原创 平衡二叉排序树

平衡二叉排序树(AVL树):左右子树高度相差不超过1。相对二叉排序树查找效率更高。

2014-06-25 21:43:33 734

原创 二叉排序树

二叉排序树(Binary Sort Tree)又称为二叉查找树,中序二叉排序树得到有序列表,它或者是一棵空树,或者是具有下列性质的二叉树:若它的左子树不为空,则左子树所有节点的值均小于它的根结构的值。若它的右子树不为空,则右子树所有节点的值均大于它的根结构的值。它的左右子树也分别为二叉排序树(递归)。二叉排序树的查找操作:

2014-06-23 21:59:25 619

原创 约瑟夫环

//n个人围圈报数,报m出列,最后剩下的是几号?#include #include typedef struct node{int data;struct node *next;}node;node *create(int n){node *p = NULL, *head;head = (node*)malloc(sizeof (node

2014-06-21 21:32:37 628

原创 守护进程

守护进程(daemon)是生存期较长的一种进程,在系统开启时启动,关闭时才终止,没有控制终端在后台运行。守护进程结构:依赖操作系统实现,以超级用户特权运行,无控制终端,无命令行,大多数守护进程的父进程是init进程。常见的守护进程:init:负责启动各运行层次特定的系统任务。kswapd:页面调出守护进程,通过脏页面以低速写到磁盘上从而使这些页面在需要时可回收使用。bdfl

2014-06-21 21:30:20 979

原创 线程池学习

线程池的基本原理:在传统服务器中,常有一个总监听进程监听有无新的用户连接服务器,每当有一个新的用户接入,服务器就开启一个新的线程用户处理这个用户的数据包,这个线程只服务于这个用户,当用户与服务器端关闭连接以后,服务器端销毁这个线程。然而,频繁的开启与关闭服务进程极大的占用系统资源,而且在大量用户情况下,系统为了开辟和销毁线程浪费大量时间和资源,线程池提供一个解决外部大量用户与服务器有限资源矛盾

2014-06-19 22:22:50 660

原创 线程学习2

条件变量:前面讲述了如何使用互斥锁实现线程间数据的共享和通信,互斥锁有个明显的缺点就是只有非锁定和锁定两种状态。而条件变量通过允许线程阻塞和另一线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开互斥锁并等待条件的变化。一旦其它的某个线程改变了条件变量,它将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的线程,这些线程将重

2014-06-17 21:45:53 618

原创 线程学习1

一:进程是系统资源分配的基本单位,线程是程序独立运行的基本单位,多线程之间可以共享资源,多线程之间线程的切换花费的代价较低。在Linux系统下启动一个新的进程必须分配给他独立的地址空间,建立众多的数据表维护它的代码段、堆栈段和数据段,这是一个“昂贵”的多任务工作方式。而运行于一个进程中的多线程,它们彼此之间使用相同的地址空间,共享大部分数据段,启动一个进程花费的空间远远大于一个线程,据统计,总

2014-06-17 21:44:09 660

原创 epoll学习(二)

当一个进程调用epoll_create时,内核会创建一个struct eventpoll。这个结构体有两个成员与epoll的使用方式密切相关。  struct eventpoll {   ........   /* List of ready file descriptors */  //双向链表rdllist保存着通过epoll_wait返回给用户的、满足条件的事件   struct

2014-06-13 22:08:34 739

原创 epoll学习(一)

Epoll是当前Linux下开发大规模并发程序设计的热门选择,Epoll在Linux2.6内核引入,和select相似,其实都是I/O多路复用技术。select , poll 模型:1:最大并发数限制,因为一个进程打开文件描述符是有限制的,由FD_SETSIZE限制。2:效率问题,select每次调用都会线性扫描全部的文件描述符集合,这样效率就会线性下降。3:内核/用户空间内存拷贝

2014-06-13 22:02:36 971

原创 进程间通信----共享内存

共享内存允许两个或更多进程共享一块给定的存储区,因为数据不需要在不同进程之间访问,这是最快的一种IPC,传输信息量很大,通过内存空间映射进程空间实现,若服务器进程正在将数据放入共享存储区,则在它做完这一操作之前,客户进程不应取这些数据,通常信号量用来实现对共享存储访问的同步。内核为每个共享存储段设置了一个shmid_ds结构。struct shmid_ds {struct ipc_pe

2014-06-11 21:47:39 911

原创 进程间通信--信号量

消息队列就是一个消息链表。每个消息队列头用struct mag_queue描述,包含消息队列key,用户ID,组ID,消息队列中的消息数目等等。struct msqid_ds { //消息队列描述符struct ipc_perm msg_perm;。。。。。。unsigned long  msg_lcbytes; /* Reuse junk fields for 32 bit */

2014-06-11 21:44:24 748

原创 进程间通信-消息队列

消息队列就是一个消息链表。每个消息队列头用struct mag_queue描述,包含消息队列key,用户ID,组ID,消息队列中的消息数目等等。struct msqid_ds { //消息队列描述符struct ipc_perm msg_perm;。。。。。。unsigned long  msg_lcbytes; /* Reuse junk fields for 32 bit */

2014-06-10 21:41:46 851

原创 ICMP协议,ping和traceroute

ICMP:       IP协议并不是一个可靠的协议,不能保证数据到达,保证数据送达的任务有其他模块完成,其中一个重要的模块就是ICMP(网络控制报文协议)。通常传输差错报文及其他注意的信息,报错告诉应用程序网络上有什么错。

2014-06-09 22:12:30 2316

原创 网络协议结构

Linux内核中一切皆为文件,网络协议栈在内核中以文件系统sockfs存在,该文件系统中的文件就是套接字,Linux抽象所有文件系统,通过VFS虚拟文件系统统一管理,网络系统也是这样,当中也存在超级块、索引节点、目录项。在proc文件系统通过如下方式得到当前内核所有文件系统总称:

2014-06-09 22:05:26 829

原创 IP协议,ARP协议

IP协议,ARP协议       这两个协议处于同一层,ARP协议用来找到目的主机以太网卡的mac地址,IP承载发送的信息。链路层从IP得到要传输的数据,从ARP得到要传输的数据的信息。       IP协议是TCP/IP协议中最为核心的协议。所有的TCP,UDP,ICMP,IGMP都以IP数据报传输,提供不可靠、无连接的数据传输服务。不可靠:不能保证IP数据报成功到达目的地,IP仅提供最

2014-05-28 22:03:55 2910

原创 基础知识:

TCP/IP分层:

2014-05-28 21:59:20 809

原创 TCP3

拥塞举例:       图21-7每个包都发256字节,TCP MSS=256,第45包丢失,之后连续发送8个包,ACK回应只要6657,这8个包都不承认,没有选择确认和否认的功能,发送方收到连续3个ACK后63仅仅重传丢失的包,包来了后把以前所有的缓存加上这个包一起提交给进程,一个ACK全部确认。当发送速度逐渐上涨到一定界限,就会出现丢失分组,有两种处理方法:拥塞避免,慢启动。丢失分

2014-05-27 22:10:08 706

原创 TCP2

平静时间       客户端发送数据时,服务器突然断电,很快服务器重启新建连接,新包与以前的数据报混合,所以重启后等待MSL时间主机不要发起新的连接。FIN_WAIT_2       结束时服务器不发FIN,客户一直处于FIN_WAIT_2状态不能发送只能接受数据。复位报文段       无论何时一个报文段发往的连接出现错误,TCP都会发出一个复位报文段RST异常终止TCP连接

2014-05-26 21:31:32 948

原创 TCP1

TCP提供了一种面向连接的(建立终止的过程),可靠的(每个字节要确认)字节流服务,类似需要经历一个“打电话”的过程,等到通信准备好后才发送数据,最后结束通话。UDP是把数据直接发出去,不管对方有没有收到,就算UDP数据报没有到达,也不会产生ICMP差错报文。TCP通过以下方式提供可靠性:       应用数据被分割成TCP认为最适合发送的数据块,不会超过1500字节,握手时协商最大传输单元

2014-05-24 22:13:32 919

原创 多播 广播 DNS TFTP

广播和多播仅用于UDP,应用于多个接受者的情况,TCP源目一定是单播,某两个主机之间建立连接,不支持广播和多播。

2014-05-23 22:14:41 2850

原创 UDP

UDP是一个面向数据报的运输层协议,进程每个输出操作都直接产生一个UDP数据报,并封装成一份待发送的IP数据报,UDP传给IP的数据和应用程序递交的是一样的,因此一旦大于MTU就会产生分片。       这与面向字节流的协议TCP,应用程序产生的全体数据真正发送的IP数据报没联系,不同应用程序像流一样把数据交到TCP,TCP自己把流弄成一个一个包传走。应用程序必须关心IP数据报的长度。如果

2014-05-23 22:06:35 1026

原创 编程

给定一个数组input[] ,如果数组长度n为奇数,则将数组中最大的元素放到 output[]数组最中间的位置,如果数组长度n为偶数,则将数组中最大的元素放到 output[]数组中间两个位置偏右的那个位置上,然后再按从大到小的顺序,依次在第一个位置的两边,按照一左一右的顺序,依次存放剩下的数。void sort (int input[], int output[], int n)

2014-05-21 22:05:25 680

原创 大数相加

#include #include #define N 200void main(){ char s1[N],s2[N]; int a[N]={0},b[N]={0},l1,l2,c,k,i; puts("请输入两个较大的数字(Note:输完一个按一次回车):"); gets(s1); gets(s2); l1=strlen(s1);

2014-05-21 21:59:50 668

原创 嵌入式CGI开发

CGI开发:CGI处理步骤1、通过Internet把用户的请求送往服务器;2、服务器接受请求并交由CGI处理;3、CGI把处理结果送回服务器;4、服务器将结构传回给用户。从浏览器发给服务器有两种方法(Method属性):get和post。get方法是把数据打包放在环境变量QUERY_STRING中作为url整体的一部分传递给服务器。post做很多类型get的事情,但它分离传递数据给脚本,程序通

2014-05-21 21:57:06 1122

原创 Ubuntu boa环境搭建

Ubuntu boa环境搭建1:到http://www.boa.org/下载源码,boa的版本是0.94.133: tar –jxvf boa-0.94.13.tar.gz  cdbia-0.94.13/src  把compat.h 120行和126行的foo##->tm_gmto改为foo->tm_gmtoff./configureMakecp boa /bin/

2014-05-21 21:40:35 797

原创 Uboot 内存初始化(2440)

Uboot 内存初始化(2440)内存分类,DRAM:需要定期充电(刷新),否则数据会丢失,存取速度慢。SRAM:具有静止存储功能的内存,不需要定期刷新操作就能保存它内部存储的数据,存取速度快,CPU内部的steppingstone部分使用,但是成本高,开发板很少使用。板载内存一般使用DRAM,DRAM又分为SDRAM,DDR,DDR2。SDRAM(Synchronous Dynamic

2014-03-13 21:49:46 2852

原创 Uboot编写(一)

初始化异常向量表:异常:因为外部或内部一些事件,导致处理器停下正在处理的工作,转而处理这些发生的事件。共七种异常:reset,undefined instructions, Software Interruption(SWI),Prefetch Abort,Data Absort,IRQ,FIQ。当一种异常发生,ARM处理器会跳转到对应该异常的固定地址去执行异常程序,而这个固定地址就是异常向量

2014-03-11 21:38:08 1673

原创 UBoot流程分析

UBoot程序分析:程序入口分析--->第一阶段BL1程序分析---->第二阶段BL2程序分析解压Uboot源码,打开顶层Makefile,每个Uboot所支持的开发板在Makefile中都会有一个配置选项, 在E:uboot\board\samsung\smdk2440,有一个uboot.lds链接器脚本文件,Uboot整个链接就由它控制,打开链接器脚本看到:.text     : 

2014-03-08 21:49:31 818

原创 ARM处理器启动流程

ARM处理器启动流程s3c2440支持启动方式:1:norflash启动,一般2MB,2:nandflash启动,通常256MB,内核重要的文件系统都放入nandflash中,开发板从nandflash开始启动, nandflash地址布局左边为当选择norflash启动时地址的布局,右边为当选择nandflash启动时地址的布局,当处理器上电时会从0地址处取第一条指令

2014-03-08 21:48:38 2145

原创 ARM ADC程序设计

ARM ADC程序设计模拟信号:时间上连续,数值上也连续,数字信号:时间和数值上是离散的,而离散信号只有0或1。S3c2440内部有8路A/D转换通道AIN0~AIN7,但是转换器只有一个,从8路中选出一路进行转换,转换精度10位(0~1024-1),转换频率500kSPS(每秒采样500次),在mini2440,AIN4,5,6,7,用作了触摸屏通道YM,YP,XM,XP,AIN0连接可

2014-03-05 22:00:44 2361

原创 ARM裸机串口UART

串口UART原理异步通信:传输单位是一个字符,两个字符之间时间间隔不固定,时间固定为同步。通信协议:通信双方共同制定的规则,有数据格式:奇偶校验位、停止位.....,通信流程上的规格.UART(universal asynchronous receivertransmitter):通用异步收发器,用来串行传输数据,发送时,CPU将数据并行写入UART,UART按照一定格式在一位的数据线

2014-03-05 21:55:30 1942

原创 ARM中断机制

ARM中断机制当事件发生时,通过一种机制告诉CPU现在发生什么事件,CPU停下现在所做的工作进行处理。中断处理流程:中断控制器汇集各类外设发出的中断信号,经过一段处理,选出一个信号,然后通知CPU;CPU保存当前运行环境,然后调用中断服务程序(ISR)处理中断;在ISR中通过读取相关寄存器的外设判断中断类型,并进行相应的处理。清除中断:通过读写相关中断寄存器和外设相关寄存器实现;恢复被中断程序

2014-03-04 21:53:07 3485 2

原创 ARM时钟

时钟作用:系统中的设备需要时间进行同步。时钟的产生:PLL(锁相环),利用外部晶体加上一些电路,对晶体产生的特定频率进行分频或加倍。晶振相对来说结构简单,但是受频率受到晶体制约,得到很高的频率的晶振价格高,用锁相环难度价格低些。外部晶振作为时钟源,S3c2440有两个锁相环:MPLL和UPLL,UPLL用于USB设备。MPLL用于CPU及其 外围器件,通过MPLL会产生三个时钟频率:F

2014-03-04 21:47:34 1695

原创 块设备(二)

块设备驱动(二)块设备数据访问流程:generic_make_request () ------> __genenric_make_request() -----> q->make_request_fn(q, bio)当有用户需求来的时候,在通用块层使用generic_make_request () 形成一个请求,然后调用__genenric_make_request(bio)形成

2014-03-04 21:37:15 942

原创 块设备(一)

块设备驱动(一)以数据块为访问单位的设备,数据块的大小不固定一般为512的倍数,块设备和字符设备的区别读写数据的基本单元不同,块设备读写数据的基本单元为块,字符设备基本单元为字节,块设备可以随机访问,字符设备只能顺序访问。块设备在Linux结构中体系Disk Caches(缓存):当用户发起文件访问请求时,首先回到Disk Caches中寻找文件是否被缓存了,如果在Disk

2014-03-04 21:34:31 1073

原创 串口驱动程序设计

终端控制台体系串口之前要知道终端控制台,在Linux中,tty(终端)是一类字符设备的统称,包括3种类型: 控制台、串口和伪终端。控制台:内核信息打印到的地方,printk打印的地方,控制台可以指定,通过console=ttys0指定串口0终端为控制台,是虚拟的要绑定真实的设备,比如串口、显示器。伪终端:成对出现的,通常用来做远程通信,类似管道。终端体系:包含:tty 

2014-03-02 21:48:30 2648

原创 PCI总线(二)

PCI网卡驱动程序分析 针对GNIC- II的千兆以太网卡,源程序文件/drivers/net/hamachi.c1:初始化static int  __init hamachi_init (void) {if(pci_register_driver (&hamachi_driver)  >  0)return 0;pci_unregister_driver (&hamachi_

2014-02-27 22:05:33 1188

奔跑吧Ansible 高清完整.pdf版

奔跑吧 ansible [加] Lorin Hochstein(洛林. 霍克斯坦) 著;陈尔冬 译;电子工业出版社;Ansible是近来用户量急速蹿升的开源配置管理工具。

2017-08-14

mycat权威指南---完整版

mycat权威指南---完整版 mycat权威指南---完整版 mycat权威指南---完整版

2017-02-04

SecureCRT_7.0 32位及64位(带注册机,可破解)

SecureCRT_7.0 32位及64位(带注册机,可破解)

2015-08-14

TCP/IP详解 卷2:实现--详细书签版

TCP/IP详解 卷2:实现--详细书签版

2014-12-16

魔乐科技_Android开发实战经典-程序代码 李兴华

魔乐科技_Android开发实战经典-程序代码 李兴华魔乐科技_Android开发实战经典-程

2014-09-15

高性能mysql

高性能mysql 第三版 高清 目录

2014-08-25

matlab数学建模算法及实例分析

matlab数学建模算法及实例分析

2013-09-05

空空如也

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

TA关注的人

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