- 博客(30)
- 资源 (24)
- 收藏
- 关注
原创 KMP算法详解
字符串查找子串是计算机程序设计经常会遇到的难题。举个例子来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 完成这个任务有很多算法,KMP是最常用的算法之一,下面通过一个例子来详细描述一下这个算法:1. 首先将子串与搜索串的第一个字符进行比较,因为不匹配,所以将子串向后移动直到2.
2015-08-07 21:35:36 734 1
转载 CRC循环冗余校验码
环冗余校验码 在串行传送(磁盘、通讯)中,广泛采用循环冗余校验码(CRC)。CRC也是给信息码加上几位校验码,以增加整个编码系统的码距和查错纠错能力。CRC的理论很复杂,一般书上只介绍已有生成多项式后计算校验码的方法。检错能力与生成多项式有关,只能根据书上的结论死记。 循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码
2015-07-30 21:14:31 4188
原创 检错码之海明码
海明码(Hamming Code)是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以它也仅用于信道特性比较好的环境中,如以太局域网中,因为如果信道特性不好的情况下,出现的错误通常不是一位。 海明码的检错、纠错基本思想是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶性测试,然后产生多位检测信息,并从中得出具体的出错位置,最后通过对错误位取反(也是原来是1就变成0,原来是0就
2015-07-30 20:05:45 2294
原创 C与C++的区别与相互调用
一:两者的区别从语言本身的角度:全面兼容C语言;支持面向对象编程;C++的可重用性、可扩充性以及可维护性较好。是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过
2015-07-30 09:18:07 981
原创 Linux内存管理
X86下,Linux虚拟地址空间分为0-3G的用户空间和3G-4G的内核空间,其中用户空间的地址映射采用多级页表机制,而内核态空间采用线性偏移量(0Xc0000000)。内核空间分为三部分,其中,ZONE_DMA为开始的16M,ZONE_NORMAL为16-896M,ZONE_HIGH_MEM为896M-1G。
2015-07-14 20:44:21 371
原创 每天一个linux命令4-tar
tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。首先要弄清两个概念:打包和压缩。打包是指将
2015-01-13 15:22:18 485
原创 每天一个linux命令3-more
more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。1.命令格式:more [-dlfpcsu ] [-num ] [+/ p
2015-01-12 15:26:03 467
原创 每天一个Linux命令2-sort
linux sort 命令详解sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始!1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。[rocrocket@rocrocket programming]$ cat seq.txtbanan
2015-01-12 15:19:34 497
原创 每天一个Linux命令1-wc
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。1.命令格式:wc [选项]文件...2.命令功能:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。3.命令参数:
2015-01-12 11:22:35 512
原创 DRAM内存原理(五)内存管理单元MMU
0、前言 CPU和内存之间有三根总线,地址,数据,和控制总线。这是在说地址之间的问题。cpu和内存之间用地址来查找数据,但是两者的地址并不总是一样的,cpu产生的是逻辑地址,而内存的就是物理地址。通常都是不一样的,所以需要地址映射。正好是从编程人员的角度看,(不考虑解释执行)程序总是经过源程序编译,连接,运行三个阶段。在这个过程中,指令和数据就要调到内存。地址捆绑的三种形式:编译时:
2014-12-12 22:57:19 2469
原创 DRAM内存原理(四)同步内存和异步内存技术
现在你已经掌握了内存的基本知识,所以你应该能理解下面讲述的为什么BX芯片组的主板超频到133 MHz性能会比别的比如VIA Apollo 133等芯片组好;为什么133外频的KX133并不比100外频的AMD750芯片组有明显的性能提高。因为BX/AMD750芯片组运行在同系统FSB同样的时钟频率下,而VIA芯片组是异步的,因为它可以支持PC66、PC100、PC133 SDRAM。我们来
2014-12-08 09:41:13 5411
原创 DRAM内存原理(三)带宽问题
要理解延迟时间和带宽之间的联系,我们以PC100 SDRAM-222为例来说明。第一个2代表CAS延迟时间是2个时钟周期,第二个2表示RAS到CAS延迟时间,第三个2代表预转换时间。我们假设不同类型的延迟。在这个例子中我们假设发生了缓存页面失效,CPU等待调入新的需要的数据。也就是,我们要研究从读取内存到填充缓存的这一个过程。回写内存的过程很简单。写入的数据可以首先调入缓存待用。举例来说,KX-1
2014-12-08 09:31:03 5700
原创 DRAM内存原理(二)结构和功能
内存最基本的单位是内存“细胞”——也就是我们前面展示给大家DRAM基本单元示意图所示的部分,下面我们对这个部分通称为DRAM基本单元。每个DRAM基本单元代表一个“位”——Bit(也就是一个比特),并且有一个由列地址和行地址定义的唯一地址。8个比特组成一个字节,它可代表256种组合(即2的八次幂),字节是内存中最小的可寻址单元。DRAM基本单元不能被单独寻址——否则现在的内存将会更加复杂,而且也没
2014-12-08 09:03:22 14339
原创 DRAM内存原理(一)内存基础
DRAM 即动态内存,其基本单位是由一个晶体管和一个电容器组成。请看下图: 图只是DRAM一个基本单位的结构示意图:电容器的状态决定了这个DRAM单位的逻辑状态是1还是0,但是电容的被利用的这个特性也是它的缺点。一个电容器可以存储一定量的电子或者是电荷。一个充电的电容器在数字电子中被认为是逻辑上的1,而“空”的电容器则是0。电容器不能持久的保持储存的电荷,所以内存需要不断定时刷新,才能
2014-12-08 08:38:49 13393 1
原创 Linux学习之socket编程
int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout); /*参数列表int maxfdp是一个整数值,是指集合中所有文件描述符的范围,即所有文件描述符的最大值加1,不能错!在Windows中这个参数的值无所谓,可以设置不正确。 fd_s
2014-04-13 20:05:56 399
原创 GoAhead学习之GoForms
GoAhead WebServer 提供一个标准的普通网管接口作为内存表格处理,我们称之为GoForms.。老版本的CGI处理会导致在对于每一个CGIURL的请求产生一个新的进程。因为CGI通常作为执行用户输入的首要方式,同时它也是缓慢和额繁琐的。嵌入式系统需要一个结构紧凑高性能的的解决方案,而GoForms 就是一个最佳选择。
2014-04-12 21:48:08 1933
原创 Linux学习之Makefile和Configure文件说明
一、概述和基础知识 在Linux下得到一个以源代码形式发布的包(一般为.tar.gz或.tar.bz2格式),我们可以用 ./confiugure、make、make install来编译安装,其中在运行./configure的时候还可以根据自己的需要加入不同的参数(可用./configure --help来查看参数表)。 先说说执行./configure后会生成什么东西?运行
2014-04-11 21:58:57 983
原创 C语言学习之main函数解析
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[]) { int i; for (i = 0; i i++) cout
2014-04-11 09:56:48 714
原创 C语言学习之extern "C"
extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 这个功能十分有
2014-04-11 09:29:08 536
原创 嵌入式Web服务器学习之HTTP协议
1 HTTP协议HTTP协议是一种让Web服务器与浏览器(客户端)通过Internet发送与接收数据的协议。它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。它是一个请求、响应协议。当客户端发送出一个请求,服务器响应这个请求。HTTP运用可靠的TCP连接,通常用的80端口。1.1 HTTP协议特点(1) HTTP协议是无状态的,同一个客户端的这次请求和上次请
2014-04-10 22:42:25 3619
原创 嵌入式Web服务器学习之非阻塞I/O实现
IO模式设置网络编程常见问题总结—IO模式设置,阻塞与非阻塞的比较,recv参数对性能的影响—O_NONBLOCK(open使用)、IPC_NOWAIT(msgrcv)、MSG_DONTWAIT(recv使用)非阻塞IO 和阻塞IO: 在网络编程中对于一个网络句柄会遇到阻塞IO 和非阻塞IO 的概念, 这里对于这两种socket 先做一下说明: 基本概念
2014-04-09 10:45:10 665
原创 网络存储学习之关键技术(网络存储系统管理)
虚拟化存储是提高网络存储系统可管理性的核心技术之一,也是目前研究的热点。虚拟化存储技术包括三种具体的技术:基于主机的虚拟化技术,基于存储设备的虚拟化技术和基于网络的虚拟化技术。
2014-04-08 22:54:45 615
原创 网络存储学习之关键技术(网络存储系统的I/O性能)
1 概述关于网络存储系统I/O性能的研究I/O性能是衡量存储系统的传统指标。关于提升存储系统性能的研究是国内外的研究热点。就研究方向可以分为对存储系统体系结构的研究以及对网络存储设备I/O优化的研究。
2014-04-08 22:42:47 984
原创 网络存储学习之SAN
SAN是一种类似于LAN的高速网络,用来在存储单元与客户端之间建立直接的高速数据连接。与LAN不同的是SAN针对存储进行了优化,通常使用专用的存储协议,比如SCSI,而不是LAN使用的各种通信协议。这个网络可以把各种不同平台的服务器、工作站、客户机以及各种存储设备连接在一起,改变了传统的附属于特定服务器的存储中存储设备为某一个服务器专用的模式(见图3)。这使存储设备从特定的服务器解脱出来成为自由的
2014-04-08 19:22:34 726
原创 网络存储学习之NAS
基于传统的附属于服务器存储(DAS)的缺点,网络存储应向直接与网络相连、单一功能服务器的方向发展。存储设备与网络设备直接相连,有利于客户机与存储器之间直接传送数据,这里把所有单
2014-04-08 19:05:22 1206
原创 RS232串口和RS485串口的区别
RS232和RS485都定义了电压,阻抗等.但不对软件协议给予定义。1、RS-485的电气特性:逻辑“1”以两线间的电压差为+(2—6) V表示;逻辑“0”以两线间的电压差为-(2—6)V表示。接口信号电平比RS -232-C降低了,就不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便与TTL 电路连接。2、RS-485的数据最高传输速率:10Mbps3、RS-485接口是采用平
2014-02-17 16:12:27 4365
一个带异步清零端的同步可逆模10计数器
2014-07-01
Hadoop:分布式大数据处理架构
2014-07-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人