06 2016 档案

Linux硬链接和软链接
摘要:1.硬链接:文件别名通过前面讲的Linux ext2文件系统,我们知道在目录文件的block中,存放着目录下文件的文件名和对应的inode。可以将多个文件名对应到同一个inode,新建一条文件名链接到某inode号,这就是硬链接。 可以看出,硬链接只是新建了一个文件名,关联到一个已存在的文件。此时, 阅读全文

posted @ 2016-06-30 21:18 迪米特 阅读(201) 评论(0) 推荐(0) 编辑

Linux ext2文件系统
摘要:Linux最传统的磁盘文件系统(filesystem)使用的是ext2 1.ext2文件系统结构ext2文件系统划分为多个块组,每个块组拥有独立的inode/block,一个文件系统只有一个Superblock。如下图所示: 1)Boot Sector:启动扇区。启动扇区可以安装引导装载程序,这样可 阅读全文

posted @ 2016-06-30 17:42 迪米特 阅读(2746) 评论(1) 推荐(0) 编辑

Linux文件特殊权限
摘要:除了我们前面介绍的rwx权限外,Linux中还有另外三种特殊权限:SUID,SGID,SBIT一、SUID,SGID,SBIT介绍1.SUID:s出现在文件所有者的x权限上。1)SUID只能用于二进制可执行文件,对目录无效2)执行者若具有该文件的x权限,则将具有文件所有者的权限3)权限只在文件执行时 阅读全文

posted @ 2016-06-30 10:08 迪米特 阅读(8030) 评论(0) 推荐(0) 编辑

Linux文件普通权限
摘要:1.文件所有者,所属用户组,其他用户1)文件所有者:创建文件的用户2)所属用户组:文件属于哪个用户组3)其他用户:不是文件所有者,不属于文件所属用户组的用户,称为其他用户 2.Linux文件权限我们切换到root用户,新建一个myfile的文件夹,然后使用ls -al|grep myfile命令查看 阅读全文

posted @ 2016-06-29 18:04 迪米特 阅读(1319) 评论(0) 推荐(0) 编辑

Linux Shell编程
摘要:一、什么是Shell在Linux中,系统会为每个用户运行一个shell(外壳)程序。shell程序是一个命令行解释器,交互式地解释和执行用户输入的命令。shell还是一种解释性的程序设计语言,定义了变量和函数,数组,程序控制结构等很多高级语言支持的特性。 二、shell编程用在什么地方shell一般 阅读全文

posted @ 2016-06-29 15:33 迪米特 阅读(445) 评论(0) 推荐(0) 编辑

Linux进程间通信-命名管道
摘要:前面我们讲了进程间通信的一种方式,匿名管道。我们知道,匿名管道只能用于父子关系的进程之间。那么没有这种关系的进程之间该如何进行数据传递呢? 1.什么是命名管道 匿名管道是在缓存中开辟的输出和输入文件流的空间,只能用于父子关系的进程之间。因为父子进程的输入和输出文件描述符是一致的。命名管道是一种实际存 阅读全文

posted @ 2016-06-27 18:56 迪米特 阅读(6967) 评论(0) 推荐(1) 编辑

Linux进程间通信-匿名管道
摘要:前面我们讲了进程间通信的一种方式,共享内存。下面看一看另一种机制,匿名管道。1.什么是管道管道是一个进程的数据流到另一个进程的通道,即一个进程的数据输出作为另一个进程的数据输入,管道起到了桥梁的作用。比如,在shell中输入命令:ls -l|grep string,ls和grep是两个进程,"|"符 阅读全文

posted @ 2016-06-27 16:44 迪米特 阅读(4122) 评论(0) 推荐(0) 编辑

Linux共享内存
摘要:1.什么是共享内存在前面讲虚拟内存机制时,有讲到Linux的内存映射机制:初始化虚拟内存区域时,会把虚拟内存和磁盘文件对象对应起来。由于内存映射机制,一个磁盘文件对象可被多个进程共享访问,也可被多个进程私有访问。当共享访问时,一个进程的对该对象的修改会显示到其他进程。当私有访问时,修改时会产生保护故 阅读全文

posted @ 2016-06-27 09:57 迪米特 阅读(2449) 评论(0) 推荐(2) 编辑

Linux信号量详解
摘要:1.什么是信号量信号量是一种特殊的变量,访问具有原子性。只允许对它进行两个操作:1)等待信号量当信号量值为0时,程序等待;当信号量值大于0时,信号量减1,程序继续运行。2)发送信号量将信号量值加1。 我们使用信号量,来解决进程或线程间共享资源引发的同步问题。 2.Linux中信号量的使用Linux提 阅读全文

posted @ 2016-06-24 18:20 迪米特 阅读(11911) 评论(0) 推荐(0) 编辑

虚拟内存机制
摘要:1.为什么要有虚拟内存在早期的计算机中,是没有虚拟内存的概念的。我们要运行一个程序,会把程序全部装入内存,然后运行。当运行多个程序时,经常会出现以下问题:1)进程地址空间不隔离,没有权限保护。由于程序都是直接访问物理内存,所以一个进程可以修改其他进程的内存数据,甚至修改内核地址空间中的数据。2)内存 阅读全文

posted @ 2016-06-23 17:31 迪米特 阅读(21202) 评论(2) 推荐(5) 编辑

Linux静态库和共享库
摘要:1.什么是静态库静态库类似windows中的静态lib 关于windows中的静态lib,可参考 Windows动态链接库DLL 特点:包含函数代码声明和实现,链接后所有代码都嵌入到宿主程序中。 只在编译时使用,执行时不再需要该静态库。 2.静态库编写示例如下:addvec.c multvec.c 阅读全文

posted @ 2016-06-22 18:07 迪米特 阅读(347) 评论(0) 推荐(0) 编辑

Windows动态链接库DLL
摘要:1.什么是DLLDLL,即动态链接库,是包含若干个函数的库文件,可供其他程序运行时调用。 2.DLL的优缺点优点:代码重用,可供多个程序同时调用 缺点:易发生版本冲突当新版本的动态链接库不兼容旧版本时,其他使用该DLL的程序可能无法正常工作。针对这一问题,我们需要在程序中加上一个manifest文件 阅读全文

posted @ 2016-06-22 14:08 迪米特 阅读(3660) 评论(0) 推荐(0) 编辑

linux grep命令
摘要:1.作用 Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。 2.格式grep [options] 3.主要参数[op 阅读全文

posted @ 2016-06-17 17:49 迪米特 阅读(287) 评论(0) 推荐(0) 编辑

C++泛型编程原理
摘要:1.什么是泛型编程前面我们介绍的vector,list,map都是一种数据结构容器,容器本身的存储结构不同,各容器中存在的数据类型也可以不同。但我们在访问这些容器中数据时,拥有相同的方式。这种方式就叫做“泛型编程”,顾名思义,不同的类型采用相同的方式来操作。 2.泛型编程的原理。我们先看下面的两个分 阅读全文

posted @ 2016-06-17 11:09 迪米特 阅读(6056) 评论(0) 推荐(0) 编辑

C++ typedef详解
摘要:1.typedef的用途1)定义一种类型的别名注意typedef并不是简单的宏替换,如下例所示: 再看以下示例: 可以看出,typedef char* PCHAR;之后,PCHAR是char*类型的别名,PCHAR pa,pb;将pa,pb都定义成char*类型。 2)定义struct结构体别名我们 阅读全文

posted @ 2016-06-16 18:30 迪米特 阅读(6907) 评论(0) 推荐(0) 编辑

C++ map详解
摘要:1.什么是mapmap是一个键值对容器。在处理一对一数据是,很有用。 2.map数据结构的特点map内部自建一颗红黑树,这棵树具有对数据自动排序的功能,因此,map内的数据都是按key的值排好序的。 3.map数据插入数据的插入有三种方法:第一种,调用insert函数,插入pair类型数据示例如下所 阅读全文

posted @ 2016-06-15 18:41 迪米特 阅读(9626) 评论(0) 推荐(0) 编辑

C++ vector和list的区别
摘要:1.vector数据结构vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。另外,当数组中内存空间不够时,会重新申请一块内存空间并进行内存拷贝。 阅读全文

posted @ 2016-06-15 15:39 迪米特 阅读(76936) 评论(0) 推荐(8) 编辑

C++静态存储,动态存储
摘要:什么是静态存储,动态存储静态存储变量通常是在变量定义时就分定存储单元并一直保持不变, 直至整个程序结束。 动态存储变量是在程序执行过程中,使用它时才分配存储单元, 使用完毕立即释放。典型的例子是函数的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配,调用函数完毕立即释放。 阅读全文

posted @ 2016-06-15 11:10 迪米特 阅读(1909) 评论(0) 推荐(0) 编辑

C++文件输入和输出
摘要:1.引入头文件fstreamfstream头文件定义了用于文件输入的类ifstream和文件输出的类ofstream 2.写文件1)创建一个ofstream对象来管理输出流2)将该对象与文件关联起来3)使用cout方式使用该对象,唯一区别是输出将进入文件,而不是屏幕。4)关闭到文件的连接示例如下: 阅读全文

posted @ 2016-06-13 13:55 迪米特 阅读(29921) 评论(1) 推荐(1) 编辑

C/C++数组名与指针的区别详解
摘要:1.数组名不是指针我们看下面的示例: 输出结果:104由输出结果可知,数组名并不是指针。 2.数组名神似指针上例我们证明了数组名不是指针,但第5行,char *pStr = str; 程序将数组名直接赋给指针,这显得数组名又的确是个指针!我们还可以发现数组名显得像指针的例子: 标准C库函数strcp 阅读全文

posted @ 2016-06-12 15:25 迪米特 阅读(490) 评论(0) 推荐(1) 编辑

C++运算符重载详解
摘要:1.什么是运算符重载 运算符重载是一种函数重载。 运算符函数的格式:operatorop(argument-list)例如,operator+()重载+运算符。其中的op,必须是有效的C++运算符,如operator@()会报错,因为C++中没有@运算符。 2.重载运算符的使用 如下例所示: 调用运 阅读全文

posted @ 2016-06-12 11:12 迪米特 阅读(528) 评论(0) 推荐(0) 编辑

图解正向代理、反向代理、透明代理
摘要:一、正向代理(Forward Proxy) 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下:正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向 阅读全文

posted @ 2016-06-08 17:41 迪米特 阅读(272) 评论(0) 推荐(0) 编辑

C++ const使用详解
摘要:1.const常量和宏常量const int max=100;#define max 100;const常量相对宏常量有两个有点:1)有类型安全检查2)占用内存空间少 2.const变量在内存中的位置我们在C程序的内存布局中,已经通过示例进行了说明 3.const常成员变量的初始化在某个对象生存期内 阅读全文

posted @ 2016-06-08 14:28 迪米特 阅读(1261) 评论(1) 推荐(0) 编辑

C++多继承
摘要:1.继承的三种方式: 公有继承(public),私有继承(private),保护继承(protected)三种继承方式的说明,如下表所示: 2.什么是多继承 一个类有多个基类,那么这种继承关系就叫做多继承。比如有两个类,服务员类Waiter,歌手类Singer,我们有一个类既是服务员,又是歌手,那么 阅读全文

posted @ 2016-06-06 18:56 迪米特 阅读(4783) 评论(0) 推荐(0) 编辑

C++抽象类
摘要:1.为什么要有抽象类 我们举一个例子,程序有两个类,椭圆Ellipse类,圆Circle类。我们知道椭圆是包括圆的,那么我们可以使用继承: 然而,我们在定义各自的成员变量和成员函数时,发现两个类的成员有很大的不同,比如Ellipse类需要长短轴半径,中心坐标,方向角才能确定位置,另外还包括移动椭圆, 阅读全文

posted @ 2016-06-05 23:52 迪米特 阅读(2206) 评论(0) 推荐(0) 编辑

C++重载,重写,重定义
摘要:1.重载:重载是在一个类中,函数名一样,参数类型或参数个数不同的一系列函数需要注意的是,与返回类型无关。 2.重写我们比较熟悉的另一个词是“覆盖”用在继承中,子类若没有重新定义父类的虚方法,则子类对象调用该方法时,使用的仍是父类的方法;否则,子类覆盖了父类的虚方法,调用时使用的是重新定义的方法。 输 阅读全文

posted @ 2016-06-05 03:59 迪米特 阅读(386) 评论(0) 推荐(0) 编辑

C++虚函数表与虚析构函数
摘要:1.静态联编和动态联编联编:将源代码中的函数调用解释为要执行函数代码。静态联编:编译时能确定唯一函数。在C中,每个函数名都能确定唯一的函数代码。在C++中,因为有函数重载,编译器须根据函数名,参数才能确定唯一的函数代码。动态联编:编译时不能确定调用的函数代码,运行时才能。C++中因为多态的存在,有时 阅读全文

posted @ 2016-06-05 01:23 迪米特 阅读(5828) 评论(0) 推荐(0) 编辑

C++ 初始化列表
摘要:1.初始化列表的写法 初始化列表,写在类的构造函数后面,以冒号开头,后跟一系列用逗号分隔的初始化字段。如下列所示: class Person { public: Person(std::string s, int i):name(s), age(i) { std::cout<<"Person(std 阅读全文

posted @ 2016-06-01 18:11 迪米特 阅读(355) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示