10 2012 档案

摘要:最长公共子序列LCS采用动态规划的方法:问题描述:字符序列的子序列是指从给定字符序列中随意地(不一定连续)去掉若干个字符(可能一个也不去掉)后所形成的字符序列。令给定的字符序列X=“x0,x1,…,xm-1”,序列Y=“y0,y1,…,yk-1”是X的子序列,存在X的一个严格递增下标序列,使得对所有... 阅读全文
posted @ 2012-10-17 23:45 Mr.Rico 阅读 (2068) | 评论 (0) 编辑
摘要:在Linux中关于IP和无符号整数之间的转换有两个比较好的函数: int inet_aton(const char *cp, struct in_addr *inp); char *inet_ntoa(struct in_addr in); 通过函数名就可以知道函数作用了.这里需要注... 阅读全文
posted @ 2012-10-17 23:31 Mr.Rico 阅读 (207) | 评论 (0) 编辑
摘要:现代C++程序设计比较推崇使用模板STL。STL是C++中一个非常重要的改革。在C++03之后,STL表现非常不错,STL中提供了一些常见的算法。这些算法可以直接使用,而不需要自己再去写,效率。 简单总结一下STL一些比较好的算法。 一. 非变易算法 1. for_each:遍历容器元素进行操作 该... 阅读全文
posted @ 2012-10-11 23:13 Mr.Rico 阅读 (572) | 评论 (0) 编辑
摘要:1. strspn与strcspn 2. strtok与strpbrk 3. strstr, strchr与strrchr 4. 字符串与数值之间的转换:atoi,atol,atof,strtod,strtol,strtoul 5. frexp和ldexp 1. strspn与strcspn (1)... 阅读全文
posted @ 2012-10-11 23:05 Mr.Rico 阅读 (922) | 评论 (1) 编辑
摘要:C语言中的时间相关的函数 是C标准函数库中获取时间与日期、对时间与日期数据操作及格式化的头文件。宏: NULL null是一个null指针常量的值 CLOCKS_PER_SEC 每秒的时钟数变量:typedefsize_t类型定义typedefclock_t类型定义structtm结构体struct... 阅读全文
posted @ 2012-10-11 23:03 Mr.Rico 阅读 (117) | 评论 (0) 编辑
摘要:C语言在 头文件定义了一些宏,当函数参数未知时去获取函数的参数。包括一个va_list类型和三个函数(宏)va_start, va_arg和va_end .变量和定义va_list类型通过stdarg宏定义来访问一个函数的参数表,参数列表的末尾会用省略号省略声明:void va_start(va_l... 阅读全文
posted @ 2012-10-11 23:01 Mr.Rico 阅读 (114) | 评论 (0) 编辑
摘要:第4章 程序活动记录 在内存资源分配的具体实现上,堆和栈的具体区别: 申请后系统的响应 栈:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。 堆:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时, 会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样,代码中的delete语句才能正确的释放本内存空间。另外,由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中。 2.3 阅读全文
posted @ 2012-10-11 22:55 Mr.Rico 阅读 (146) | 评论 (0) 编辑
摘要:第3章 数据结构与算法 1. memmove边界问题 voidmemmove_(char*pDst,constchar*pSrc,size_tsize){assert(pSrc!=NULL&&pDst!=NULL);constchar*p;char*q;if(pSrcpDst){p=pSrc+size-1;q=pDst+size-1;while(size--)*q--=*p--;}else{p=pSrc;q=pDst;while(size--)*q++=*p++;}}2. 出错处理方式3. 字符串算法的实现(1) strstr函数: 进行了比较好的判断, 主要是便于比较快的结束 阅读全文
posted @ 2012-10-11 22:46 Mr.Rico 阅读 (150) | 评论 (0) 编辑
摘要:1. 删除C/C++代码中的注释#include#include#includeusingnamespacestd;voidremove_comment(char*buf,intn){char*p=buf,*end=buf+n;char*sq_start,*dq_start,*lc_start,*bc_start;sq_start=0;//字符:单引号开始dq_start=0;//字符串:双引号开始lc_start=0;//C++注释//bc_start=0;//C语言注释/**/while(pnext->nex, q每次移动一个位置, 即q=q->next, 当p到达最后一个节点 阅读全文
posted @ 2012-10-11 21:06 Mr.Rico 阅读 (876) | 评论 (0) 编辑
摘要:首先说明一下快速排序是对冒泡排序的改进。为什么这么说呢?想一下冒泡排序,它把序列分成了两部分,前半部分无序,后半部分升序排列,并且后半部分的数都大于前半部的数。由此可得到快速排序和冒泡排序的一些共同点: 都要经历n趟排序 每趟排序要经历O(n)次比较 都是后半部分元素比前半部大而不同之处就在于冒泡排序的交换操作发生相邻的元素之间,即一趟排序可以要经过多次交换操作;快速排序的交换操作发生在间隔比较远的两个元素之间,一趟排序要经过交换操作次数会少一些。一般的快速排序采用的是递归的方式进行实现的,而且一般只要是递归的问题,都可以转化为非递归的实现,而实现的时候一般采用的是堆栈数据结构。快排的主要思想 阅读全文
posted @ 2012-10-11 14:45 Mr.Rico 阅读 (366) | 评论 (0) 编辑
摘要:9. 关系数据库的范式 10. 数据库操作中的事务 事务的4个特性: 11. 数字矩阵的生成: 对应的代码如下: #include#include#include#defineprint_arr2d(arr,N){for(inti=0;i=0;j--)arr[i][j]=m++;}else{for(intj=0;j=0;j--)arr[j][i]=m++;}}print_arr2d(arr,N);}/*12671535814164913172210121821231119202425*/voidmat_2(){constintN=5;inta[N][N];intm=1;intK=0;for(i 阅读全文
posted @ 2012-10-11 12:46 Mr.Rico 阅读 (198) | 评论 (0) 编辑
摘要:在STL中,迭代器主要分为5大类:Input Iterator, Output Iterator, Forward Iterator, Bidirectional Iterator和RandomAccess Iterator。关系如下:其中每一个左边的迭代器都实现了右边迭代器的方法。左边迭代器是对右边迭代器的进一步强化。In this graph, each iterator category implements the functionalities of all categories to its right:(1) Input and output iterators are the 阅读全文
posted @ 2012-10-10 22:13 Mr.Rico 阅读 (401) | 评论 (0) 编辑
摘要:下面是网上看到的一些关于内存和CPU方面的一些很不错的文章. 整理如下: 转: CPU的等待有多久? 原文标题:What Your Computer Does While You Wait 原文地址:http://duartes.org/gustavo/blog/ [注:本人水平有限,只好挑一些国外高手的精彩文章翻译一下。一来自己复习,二来与大家分享。] 本文以一个现代的、实际的个人电脑为对象,分析其中CPU(Intel Core 2 Duo 3.0GHz)以及各类子系统的运行速度——延迟和数据吞吐量。通过粗略的估算PC各个组件的相对运行速度,希望能给大家留下一... 阅读全文
posted @ 2012-10-08 13:57 Mr.Rico 阅读 (35503) | 评论 (4) 编辑
摘要:第3部分 装载与链接 第6章 可执行文件的装载与进程 第1节 进程的虚拟地址空间 linux下虚拟地址空间的分配 第2节. 程序装载方式 1. 覆盖装入 2. 页映射 第3节 从操作系统角度看可执行文件的装载 1. 进程的建立过程 2. 页错误 第4节 进程虚存空间分布 1. ELF文件链接视图和执行视图 下面通过一个小例子查看实际的内存分配 2. 堆和栈 3. 堆的最大申请数量 5. 进程栈初始化 第5节 Linux 内核装载ELF过程简介 第6节 Windows PE的装载 第7章 动态链接 第8章 共享库的组织 第9章 Windows下的动态链接 第10章 内存 第1节 程序的内存布局 阅读全文
posted @ 2012-10-06 14:45 Mr.Rico 阅读 (527) | 评论 (0) 编辑
摘要:第1部分 简介 第1部分 简介 第1章 温故而知新 1. 早期计算机的硬件结构 北桥芯片:主要处理高速芯片 南桥芯片:主要处理低速设备 2. 内存的分配 在早期的计算机中, 操作系统对内存的管理存在很大的问题. (1) 地址空间的不隔离 (2) 内存使用率低 (3) 程序运行的地址不确定 解决方法就是增加一个中间层, 将程序给出的地址作为虚拟的地址, 然后通过某种映射方法将虚拟地址映射到实际的物理地址. 3. 虚拟内存到物理内存的映射: 分段 分段的方法解决了地址空间不隔离和程序运行的地址不确定这两个问题, 但是没有解决内存使用率低的问题. 4. 分页机制 现代操作系统是将分段和分页机制联合起 阅读全文
posted @ 2012-10-06 14:36 Mr.Rico 阅读 (551) | 评论 (0) 编辑
摘要:第1篇 基础篇第1章 绪论1. DBMS的地位2. DBMS必须提供的数据控制功能3. E-R图3. 关系数据库第2章 关系数据库1. 关系操作第3章 结构化查询语言SQL1. SQL对数据库的支持 阅读全文
posted @ 2012-10-05 16:18 Mr.Rico 阅读 (99) | 评论 (0) 编辑
摘要:第五部分 分布式系统 第十五章 分布式系统结构 第十六章 分布式文件系统 第十七章 分布式协调 第六部分 保护与安全 第十八章 保护 第十九章 安全 第15章 分布式系统 第16章 分布式文件系统 第17章 分布式协调 第6部分 保护与安全 第18章 保护 第19章 安全 阅读全文
posted @ 2012-10-05 15:47 Mr.Rico 阅读 (70) | 评论 (0) 编辑
摘要:第13章 I/O系统 第2节 I/O硬件 1. 典型的PCI总线结构 2. 中断 3. 直接内存访问DMA 第3节 I/O应用接口 内核I/O结构 第4节 I/O内核子系统 1. I/O调度 2. 缓冲 3. 高速缓存 4. 假脱机与设备预留 5. 内核数据结构 第6节 流 本章小结 第14章 大容量存储结构 第1节 磁盘结构 第2节 磁盘调度 1. FCTS调度 2. SSTF 3. SCAN调度 4. C-SCAN调度 5. LOOK调度 6. 磁盘调度算法的选择 第3节 磁盘管理 1. 磁盘格式化 2. 引导块 第4节 交换空间管理 1. 交换空间的使用 2. 交换空间的位置 3. 交换 阅读全文
posted @ 2012-10-05 15:40 Mr.Rico 阅读 (109) | 评论 (0) 编辑
摘要:第三部分 存储管理 目录: 第九章 内存管理 第十章 虚拟内存 第十一章 文件系统接口 第十二章 文件系统实现 第11章 文件系统接口 第1节 文件概念 第2节 访问方法 第3节 目录结构 典型文件系统 1. 单层目录 2. 双层目录 3. 树形目录 4. 无环图目录 5. 通用图目录 第4节 文件系统的安装 第5节 文件共享 第6节 保护 本章小结 第12章 文件系统实现 第1节 文件系统结构 第2节 文件系统实现 1. 概述 2. 分区与安装 第3节 目录的实现 1. 线性列表 2. 哈希表 第4节 分配方法 常用的磁盘分配方法: 连续, 链接, 索引 1. 连续... 阅读全文
posted @ 2012-10-05 15:31 Mr.Rico 阅读 (94) | 评论 (0) 编辑
摘要:第三部分 存储管理 目录: 第九章 内存管理 第十章 虚拟内存 第十一章 文件系统接口 第十二章 文件系统实现 第9章 内存管理 第1节 背景 1. 地址捆绑 多次地址捆绑, 每一次的地址捆绑都是一个地址空间到另一个地址空间的映射. 2. 逻辑地址空间与物理地址空间 内存管理单元MMU完成从逻辑地址到物理地址的映射. 3. 动态加载 4. 动态链接与共享库 第2节 交换 第3节 连续内存分配 1. 内存保护 2. 内存分配 外部碎片问题 3. 碎片 内部碎片和外部碎片, 内部碎片无法使用, 外部碎片可以使用紧缩来解决. 第4节 分页 1. 基本方法 分页不会产生外部碎片, 但是产生了内... 阅读全文
posted @ 2012-10-05 15:24 Mr.Rico 阅读 (208) | 评论 (0) 编辑
摘要:第二部分 进程管理 目录: 第四章 进程 第五章 线程 第六章 CPU调度 第七章 进程同步 第八章 死锁 第4章 进程 第1节 进程的概念 1. 进程状态 2. 进程控制块PCB 进程间切换 第2节 进程调度 1. 调度队列 作业队列, 就绪队列, 设备队列 2. 调度图 3. 调度程序 长期调度程序/作业调度, 短期调度程序/CPU调度 4. 上下文切换 第3节 进程操作 1. 进程的创建 进程树 进程需要资源及初始化 Unix下的fork来生成子进程2. 进程的终止第4节 进程协作生产者-消费者问题第5节 进程间通信1. 消息传递系统直接通信间接通信2. 同步缓冲: 零容量... 阅读全文
posted @ 2012-10-05 14:53 Mr.Rico 阅读 (271) | 评论 (0) 编辑
摘要:第一部分 概述 第一章 导论 第二章 计算机系统结构 第三章 操作系统结构 第一部分 概述 第1章 导论 1. 大型机系统 大型机系统主要用于处理商业和科学问题。 (1)批处理系统。总是驻留在内存中。不过,容易造成CPU的空闲。主要是机械I/O速度比较慢。 (2)多道程序系统。通过组织作业使得CPU总有一个作业在执行,这样提高效率。做法:将多个作业放在内存中,组成作业池。CPU从作业池中获得作业,如果作业需要I/O的话,就切换到另一个作业。 CPU调度,作业调度,内存管理 (3)分时系统/多任务系统。分时系统允许多个用户共享计算机。并且在多个用户之间来回切换。分时系统采用CPU调度和多道... 阅读全文
posted @ 2012-10-05 14:37 Mr.Rico 阅读 (199) | 评论 (0) 编辑
摘要:第7章 应用层 第1节 DNS域名系统 1. DNS 2. DNS名字空间 3. 名字服务器 第2节 电子邮件 1. 消息传输协议 SMTP简单邮件传输协议 3. POP3协议 邮局协议第3版 4. IMAP消息访问协议 5. WebMail 第3节 万维网 1. web工作原理 2. 浏览器的工作过程 3. 浏览器扩展 4. web服务器工作 5. Cookie 6. HTTP超文本传输协议 7. 性能增强 CDN 内容分发网络 8. 无线WEB WAP无线应用协议 本章小结 第8章 网络安全 1. DES数据加密标准 2. 高级加密标准AES 3. RSA 本章小结 阅读全文
posted @ 2012-10-01 16:31 Mr.Rico 阅读 (66) | 评论 (0) 编辑
摘要:第6章 传输层 第1节 传输服务 1.传输层向上层提供服务 2. 传输服务原语 3. 传输协议数据单元TPDU 4. 伯克利套接字Socket 客户端 第2节 传输协议要素 1. 传输层与数据链路层的区别 2. 传输层的编址 3. 初始连接协议 4. 三次握手协议 5. 释放连接 6. 流控制和缓冲 缓冲区大小的设置 动态缓冲区分配过程 7. 多路复用 8. 崩溃服务 第3节 一个简单的传输协议 第4节 Internet传输协议UDP 1. UDP介绍 DNS使用UDP协议 2. 远过程调用RPC 3. 实时传输协议RTP 第5节 Internet传输协议TCP 1. 介绍TCP 2. TCP 阅读全文
posted @ 2012-10-01 16:25 Mr.Rico 阅读 (82) | 评论 (0) 编辑
摘要:第5章 网络层 数据链路层处理的是线到线的数据的传送, 网络层是处理的端到端数据传输的最底层. 第1 节 网络层设计要点 1. 网络层协议的运行环境 存储转发机制(分组交换) 2. 网络层向传输层所提供的服务 网络层向传输层提供面向连接的服务还是无连接的服务? 3. 无连接服务的实现(数据包子网) 4. 面向连接的服务: 虚电路的建立 5. 数据报子网与虚电路子网的比较 子网内部,虚电路和数据报之间的折衷:一个是路由器的内存空间和带宽之间的平衡,另一个平衡是建立虚电路所需要的时间和地址解析的时间。 路由器内存中表空间的数量 服务质量方面, 虚电路子网占绝对优势. 虚电路比较脆弱, 一台路由器崩 阅读全文
posted @ 2012-10-01 16:14 Mr.Rico 阅读 (154) | 评论 (0) 编辑
摘要:第4章 介质访问控制子层 网络分为两类:使用点到点连接的网络和使用广播信道的网络. 广播信道又称多路访问信道或随机访问信道 介质访问子层:MAC子层 第1节 信道分配问题 1. LAN和MAN中的静态信道分配方案 2. LAN和MAN中的动态信道分配方案 第2节 多路访问协议 1. ALOHA协议 纯ALOHA 2. 载波检测多路访问协议(CSMA) 各种协议的关系 3. 带冲突检测的CSMA: CSMA/CD 4. 无冲突协议 位图协议 二进制倒计数协议 5. 有限竞争协议 6. 无线LAN协议 隐藏站问题和暴露站问题 MACA 第3节 以太网 1. 802.3 与 802.11 以太网与无 阅读全文
posted @ 2012-10-01 16:03 Mr.Rico 阅读 (185) | 评论 (0) 编辑
摘要:第3 章 数据链路层 1. 数据链路层的设计 2. 数据链路层所提供的服务 (1)无确认的无连接服务 (2)有确认的无连接服务 (3)有确认的面向链接服务 3. 数据链路层协议 4. 数据链路层 成帧的方法 字符计数法: 字节填充 位填充 5. 错误控制 6. 流控制 7. 循环冗余编码CRC 第3节 基本数据链路层协议 1. 协议头文件 2. 无限制的单工协议 3. 一个单工的等停协议 4. 有噪声信道的单工协议 PAR支持重传的肯定确认协议 ARQ 自动重复请求协议 第4节 滑动窗口协议 1. 捎带确认 2. 滑动窗口协议 3. 1位滑动窗口协议 4. 使用回退n帧技术的协议 管道化技术 阅读全文
posted @ 2012-10-01 15:51 Mr.Rico 阅读 (130) | 评论 (0) 编辑
摘要:第1章 计算机网概述1. 最经典的模型: 客户机-服务器模型(client-server)该模型就是客户机上的一个进程通过网络将信息发送给服务器进程. 然后服务器进程对接收到的信息作出相应, 将应答信息通过网络发送给客户进程.2. 网络硬件3. 广播网络:广播(broadcasting),多播(multicasting)4. 局域网局域网是专有网络.两种主要的广播式网络:总线型和环型以太网(IEEE 802.3)IBM令牌环 (IEEE802.5)5. 广域网广域网中的主机(host)通过通信子网(subnet)进行连接.在大多数的广域网中, 子网主要由两部分组成: 传输线和交换单元(路由器) 阅读全文
posted @ 2012-10-01 15:44 Mr.Rico 阅读 (129) | 评论 (0) 编辑