自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 Linux系统编程:(5)进程凭证

一、进程凭证 每个进程都有一套用数字表示的用户ID(UID) 和组ID(GID),有时将这些ID称之为进程凭证,具体如下图所示: 1. 实际用户ID和组ID 实际用户ID和组ID确定了进程所属的组,标识我是谁。 2.有效用户ID和有效组ID 当进程尝试执行各种系统调用的时候,将结合有效用户ID、...

2020-01-04 17:36:42

阅读数 18

评论数 0

原创 Linux系统编程:(4)用户与组、密码加密与认证

一、用户与组 在讨论进程凭证之前,我们先来搞清楚用户与组的概念。每个用户都拥有一个唯一的用户名和一个与之相关的数值型用户标识符(UID),一个用户可以隶属于一个或者多个组。每个组也都有唯一的名称和一个组标识符(GID)。用户与组的主要用途包括以下两个方面:确定各种系统资源的所有权 和 对赋予进程访...

2020-01-03 11:36:38

阅读数 20

评论数 0

原创 Linux系统编程:(3)进程内存分配

一、堆内存分配 进程在运行期间可以通过增加堆(heap)的大小来为进程分配内存,在进程的内存布局中,堆是一段大小可变的连续虚拟内存,始于BSS段的末尾,随着内存的分配和释放而增减。和栈有自己的指针指向栈顶一样,堆也有指向堆边界的“program break”。 1.List item调整prog...

2019-12-31 12:37:39

阅读数 33

评论数 0

原创 Linux系统编程:(2)进程与进程内存布局

一、进程定义 进程是一个可执行程序的实例;从内核角度看,进程由用户内存空间和一系列内核数据结构组成,其中用户内存空间包含了程序代码及代码所使用的变量,而内核数据结构则用于维护进程状态信息,记录在内核数据结构中的信息包括如下: 与进程相关的标志号(IDs) 虚拟内存表 打开文件的描述符表 信号传递...

2019-12-30 21:01:35

阅读数 19

评论数 0

原创 Linux系统编程:(1)文件I/O

一、文件操作I/O 1 fd = open(pathname,flags,mode) 打开文件返回文件描述符 flag指定打开方式及一些限制,mode指定文件访问权限 2 numread = read(fd,buffer,maxszie) 读文件 自动更新文件偏移量 ...

2019-12-27 12:59:31

阅读数 21

评论数 0

转载 python:xlrd、xlwt和xlutils操纵excel表格

【转自】:https://blog.csdn.net/u013250071/article/details/81911434 一、需要用到的库 1.操作xls格式的表格文件: 读取:xlrd 写入:xlwt 修改(追加写入):xlutils 2.操作xlsx格式的表格文件: 读取/写入:openp...

2019-12-25 10:16:17

阅读数 13

评论数 0

原创 算法:深度优先搜索(DFS)与栈

深度优先遍历(DFS) 与 BFS 类似,深度优先搜索(DFS)也可用于查找从根结点到目标结点的路径,下面看看利用栈(stack)是怎么帮助实现DFS的。 1. 结点的处理顺序是什么? 在上面的例子中,我们从根结点 A 开始。 首先,我们选择结点 B 的路径,并进行回溯,直到我们到达结点 E,...

2019-12-23 21:06:12

阅读数 35

评论数 0

原创 C++设计模式(17):组合模式

一、背景

2019-12-23 21:04:22

阅读数 11

评论数 0

原创 C++设计模式(16):建造者模式

一、背景

2019-12-20 12:00:22

阅读数 7

评论数 0

原创 C++设计模式(15):原型模式

一、背景

2019-12-19 21:39:51

阅读数 13

评论数 0

原创 算法:广度优先搜索(BFS)与队列

广度优先搜索-BFS的一个常见应用是找出从根结点到目标结点的最短路径,通常这发生在树或图中。我们提供了一个示例来解释在 BFS 算法中是如何逐步应用队列的。 示例:这里我们提供一个示例来说明如何使用 BFS 来找出根结点 A 和目标结点 G 之间的最短路径。 1. 结点的处理顺序是 什么 ? 在...

2019-12-14 14:58:20

阅读数 18

评论数 0

原创 C++设计模式(14):享元模式

一、背景

2019-12-07 15:11:17

阅读数 12

评论数 0

原创 C++设计模式(13):备忘录模式

一、背景

2019-12-07 10:26:30

阅读数 8

评论数 0

原创 C++设计模式(12):中介者模式

一、背景

2019-12-05 16:42:10

阅读数 8

评论数 0

原创 C++设计模式(11):责任链模式

一、背景

2019-12-03 21:18:39

阅读数 11

评论数 0

原创 C++设计模式(10):装饰模式

一、背景 在面向对象的开发中,如果想给一个类或者对象增加一个行为,首先想到的是类之间的继承,通过继承一个现有类,可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机,如果能够用组合的做法扩展对象的行为,就可以在运行时动态的进行扩展。 二、模式定义...

2019-12-02 20:36:49

阅读数 17

评论数 0

原创 C++设计模式(9):外观模式

一、背景 二、模式定义 提供一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更加容易使用。引入外观角色之后,用户只需要直接与外观角色交互,用户与子系统之间的复杂关系由外观角色来实现,从而降低了系统的耦合度。 三、模式角色和UML类图 四、模式总结 使用场景 优点 缺...

2019-11-22 11:52:49

阅读数 13

评论数 0

原创 C++设计模式(8):适配器模式

一、背景 在开发中,我们通常可以通过目标类提供的接口访问这个类提供的服务。有时候现有的类可以满足客户类的功能需求,但是他所提供的接口不一定是客户类所期望的,这可能是因为现有类中方法名与目标类中定义的方法名不一致等原因所导致的。在这种情况下,现有的接口需要转化为客户类期望的接口,这样保证了对现有类的...

2019-11-20 17:11:25

阅读数 11

评论数 0

原创 C++设计模式(7):观察者模式

一、背景 二、模式定义 三、模式角色和UML类图 代码示例 四、模式总结

2019-11-12 21:01:29

阅读数 14

评论数 0

原创 C++设计模式(6):单例模式

一、背景 单例模式主要是为了避免因为创建了多个实例造成资源的浪费,且多个实例由于多次调用容易导致结果出现错误,而使用单例模式能够保证整个应用中有且只有一个实例。从其名字中我们就可以看出所谓单例,就是单个实例也就是说它可以解决的问题是:可以保证一个类在内存中的对象的唯一性,在一些常用的工具类、线程池...

2019-11-09 11:57:41

阅读数 23

评论数 0

原创 C++设计模式(5):策略模式

一、背景 在软件开发过程中,我们经常遇到实现一个功能可能需要多种不同的算法或者策略的情形,我们会根据上下文决定使用哪一种算法或者策略完成该功能。一般的做法是实现一个功能函数,通过入参结合if - else if - else来判断使用哪一种算法来完成该功能。试想,如果我们现在增加了一种实现该功能的...

2019-11-09 11:09:32

阅读数 20

评论数 0

原创 C++设计模式(4):模板方法模式

一、背景 二、模板方法模式定义 定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。 模板方法模式是用来创建一个算法模板,什么是模板?其实就是一个方法。更...

2019-10-30 17:31:00

阅读数 25

评论数 0

原创 C++设计模式(3):迭代器模式

一、背景 有多种方法可以将对象堆起来成为一个集合,我们可以将它们放进数组、堆栈或者散列表中,每种方式都有各自的使用时机。但是当客户需要遍历访问这些对象的时候,最好不要让客户知道数据集合的内部实现。那么如何能让客户遍历你的对象而无又无法窥视的存储对象的方式,最常用的方式就是将对这些集合遍历的方式封装...

2019-10-25 10:32:09

阅读数 22

评论数 0

原创 C++设计模式(2):状态模式(代码)

class GumballMachine; /* 抽象接口,在此接口内,糖果机的每个动作都有一个对应的方法 */ class State{ public: virtual void insertQuarter() = 0; /* 投入25分钱 */ virtual void ejectQuar...

2019-10-19 12:00:02

阅读数 17

评论数 0

原创 C++设计模式(2):状态模式

一、状态和有状态的对象 一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的对象;这样的对象状态是从事先定义好的一系列值中取出来的,当一个这样的对象与外部事件产生互动,其内部状态就会改变,从而使得系统的行为与随之发生变化。 二、状态模式 状态模式:又称状态对象模...

2019-10-19 11:53:52

阅读数 29

评论数 0

原创 C++设计模式(1):代理模式

一、模式定义 代理模式使用代理对象完成用户请求,屏蔽用户对真实对象的访问。通过代理对象访问目标对象,这样做的好处就是可以在目标对象实现的基础上,扩展目标对象的功能。代理模式分为静态代理和动态代理。 二、模式作用 控制和管理对目标对象的访问 三、模式的角色和UML图 抽象角色:声明真实对象和代理对象...

2019-10-16 13:50:58

阅读数 21

评论数 0

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