自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

转载 【编程之美】数组分割问题

原文网址:http://blog.csdn.net/tianshuai11/article/details/7828907一,问题:      1. 有一个无序、元素个数为2n的正整数数组,要求:如何能把这个数组分割为两个子数组,子数组的元素个数不限,并使两个子数组之和最接近。      2. 有一个无序、元素个数为2n的正整数数组,要求:如何能把这个数组分割为元素个数为n的两个数

2012-10-06 14:57:29 510

原创 深入理解Linux内核个人小结12---虚拟文件系统

一.  综述:      虚拟文件系统(VFS):是一个内核软件层,用来处理与Unix文件系统相关的所有系统调用;可看作是一个通用的文件系统,必要时可以依赖某种具体的文件系统调用其底层函数。     高速缓存的种类:      1.  硬件高速缓存: 一个快速的静态RAM,其加快了直接对慢速RAM的请求。      2. 内存高速缓存:一种软件机制,引入它是为了绕过内核内存分配器(

2012-10-03 11:01:16 687

原创 深入理解Linux内核个人小结10---系统调用

一.  综述: 系统调用为用户态的进程提供了一组与硬件设备进行交互的接口。                   POSIX API不同于系统调用,其间不存在一一对应的关系,后者属于内核而前者属于库函数的范畴。二. 系统调用:     1.系统调用的一般过程:                    为了把系统调用号(位于寄存器eax中)与相应的服务例程联系起来,内核提供了

2012-10-02 11:28:20 544

原创 深入理解Linux内核个人小结9---进程地址空间

主要包括两部分: 进程地址空间的结构,进程动态内存的推迟分配(通过请求调页与缺页中断来实现的)。         推迟分配:用户态进程请求动态内存时,并未立即获得请求的页框,而是仅仅获得对一个线性区的访问权,仅当要用此区域时才真正通过缺页中断分配页框;通过这增加了系统中空闲页框的平均数,从而能够更好的利用空闲内存。一.  进程的地址空间:       每个用户态进程都拥有自

2012-10-02 11:05:54 592

原创 深入理解Linux内核个人小结8---内存区管理

一. 综述:      静态内存:用来存放内核代码级静态内核数据结构的物理内存部分。如0-1MB部分用来存储BIOS相关东西及保留页框部分(页框0用于存放BIOS加电自检例程)。1-3MB存放Linux内核代码及相应的数据结构。    动态内存:除去静态内存即为动态内存。    动态内存管理主要包括三部分: 页框管理,内存区管理, 非连续内存区管理。二. 页框管

2012-10-01 16:33:07 1201

原创 深入理解Linux内核个人小结5---内核同步

非抢占式内核:早期的Linux内核是不可抢占的。它的调度方法是:一个进程可以通过schedule()函数自愿地启动一次调度。非自愿的强制性调度只能发生在每次从系统调用返回的前夕以及每次从中断或异常处理返回到用户空间的前夕抢占式内核:当前的Linux内核加入了内核抢占(preempt)机制。内核抢占指用户程序在执行系统调用期间可以被抢占,该进程暂时挂起,使新唤醒的高优先级进程能够运行。这种抢

2012-10-01 10:19:19 648

原创 深入理解Linux内核个人小结4---中断和异常

一.  中断和异常综述        中断分为两种:               同步中断:又称之为异常,是不可屏蔽中断。              异步中断: 即通常的中断,部分可屏蔽。且异常有对应的出错码。       内核控制路径: 中断发生时正在运行的程序在内核态的执行。       中断向量:8位无符号整数,用来标识中断和异常。其中非屏蔽的中断和异常对应的中断向量

2012-10-01 10:00:48 630

原创 数据库

数据库系统:数据库,数据库管理系统,数据库用户三部分组成。数据模型:--用来描述数据的一组抽象概念的集合       包含:数据结构,数据操作及完整性约束三个部分。      常分为三层:概念数据模型--面向用户,面向现实世界的数据模型  如E-R图。                  逻辑数据模型--与DBMS相关,目前主要有层次,网状,关系数据模型等

2012-09-24 17:03:54 440

转载 一个整数数组,长度为n,将其分为m份,使各份的和相等,求m的最大值

转载网址:  http://blog.csdn.net/peng_weida/article/details/7741888本文代码参考网址:http://blog.csdn.net/v_july_v/article/details/6870251 问题描述:一个整数数组,长度为n,将其分为m 份,使各份的和相等,求m 的最大值比如{3,2,4,3,6} 可以分成{3,

2012-09-06 10:07:09 1660

原创 深入理解Linux内核个人小结3--进程

进程---程序执行的一个实例一.  进程的静态特性   1.进程与线程:      Linux2.6内核版本支持多线程,现在大部分多线程应用程序都是使用pthread库编写的。  Linux2.6内核加入了对内核线程组的概念,每个进程描述符多加了一个tgid字段。      Linux通过轻量级进程来实现对多线程的支持,线程之间可以共享一些资源(地址空间、打开的文件等)。线

2012-08-31 17:11:57 615

原创 深入理解Linux内核个人小结2---内存寻址

一. 内存地址---80X86微处理器中使用的三种不同的地址:      物理地址:用于内存芯片级内存单元寻址。它们与从微处理器的地址引脚发送到内存总线上的电信号相对应。      线性地址:也称虚拟地址,充当物理地址与逻辑地址的转换中介      逻辑地址: 由段和偏移量构成。包含在机器指令中用来指定一个操作数或者一条指令的地址      逻辑地址------(分段单元)----

2012-08-31 11:31:47 576

原创 深入理解Linux内核个人小结1---绪论

常见到的概念:  GNU--GNU is not Unix, GPL: Generic Public License   Linux=Unix内核+Linux自己的系统程序。通用的标准如POSIX都指定了编程接口的规范,而对其内核内部的结构无要求。一. Linux内核的基本结构1.  Linux内核是单块结构并支持编译及静态链接的内核:         单块内核:指其是

2012-08-31 10:37:57 608

原创 STL源代码剖析个人总结6--STL配接器

配接器在STL组件的灵活应用组合中扮演着转换器的角色,《设计模式》一书中将其定义为了一种设计模式。适配器按照其使用的场合分为三种类型:        容器适配器: 改变容器的接口        迭代器适配器 : 改变迭代器的接口        仿函数适配器 : 能对仿函数进行组合或改变其接口一. 容器适配器            如前面容器一节讲述过的stack,q

2012-08-31 08:39:14 761

原创 STL源代码剖析个人总结5--STL仿函数

仿函数即函数对象---一种具有函数特质的对象。STL内建的仿函数位于头文件functional.h中将函数作为参数的三种方式及其优缺点:(待续)         函数指针:         模板函数:             仿函数:在STL的六大组件(空间管理器,迭代器,容器,算法,仿函数,配接器)中仿函数体积最小、观念最简单、也最容易实现。但是其扮演这一种策

2012-08-30 20:53:57 2876 1

原创 STL源代码剖析个人小结4--STL算法

一. 综述     再好的编程技巧,也无法让一个笨拙的算法起死回生。选择了错误的算法,便注定了失败的命运。    STL的算法主要集中在两个头文件中          数值计算---numeric          算法计算---algorithm    将无效的迭代器传递给某个算法,虽然是一种错误但是不能够保证在编译期就能够被捕获,因为所谓“迭代器” 类型并非其真实值类型

2012-08-30 20:22:21 548

原创 STL源代码剖析个人小结3--STL容器

STL中的容器有两类: 序列式容器和关联式容器一.  序列式容器: 指其中的元素可以有序也可以无序。常用的标准序列式容器如下:      1. vector          相比与C++内置的静态数组array,vector则代表着动态空间,随着元素的加入其内部机制回自行扩充空间以容纳新元素。担当元素删除时岂不会自动释放空间。          当容器已满在进行插入操作时,vec

2012-08-30 17:22:04 701

原创 STL源代码剖析个人总结2--STL的迭代器

一.  STL的中心思想: 先将数据容器与算法分割,彼此独立设计,然后再通过一种工具将两者结合起来。容器和算法的泛化可通过class templates和function templates分别完成,而将其粘合起来的工具即为迭代器。从中可以看看出迭代器在泛化的过程中起着举足轻重的作用。        迭代器是一种行为类似指针的对象,其本质是一种智能指针。二.  迭代器编

2012-08-30 16:31:14 497

原创 STL源代码剖析个人总结1--STL的内存管理

一. 首先介绍一下C++中内存配置的方法:         1.C++ 中,内存的分配与构造紧密相连,就像对象和内存的回收一样。使用new表达式分配内存实际上包含了以下三个步骤:         申请内存空间: operator new                operator new:C++的标准的库函数。有两个重载的版本分别如下所示:  (注意其返回值类型都是void*指针

2012-08-30 16:10:24 468

空空如也

空空如也

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

TA关注的人

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