- 博客(12)
- 收藏
- 关注
原创 线程
线程是进程内一个相对独立的、可调度的执行分支,有时被称为轻量级进程,是程序执行流的最小单元。也是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。每一个程序都至少有一个线程,若程序只有一个线程,那就是程序本身。在单个程序中同时运行多个线程完成不同的工作,称为多线程。下图即为多线程。 PCB1,PCB2,PCB3.PCB4是同一个进程内的线程,在同一地址空间内运行,但线程没有专门的线程
2017-06-10 02:13:16
321
原创 C++智能指针
为什么要用智能指针? C++中的动态内存需要用户自己来维护,动态开辟的空间,在出函数作用域或者程序正常退出前必须释放掉,否则会造成内存泄露,但如果在程序运行中开辟空间后出现异常导致程序跳转没有执行delete语句会导致内存泄漏,这时就需要利用智能指针来解决这个问题。 我们先来认识一下RAII这个概念。 RAII(资源分配即初始化):定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初
2017-05-17 18:12:05
340
原创 C++异常
异常,当一个函数发现自己无法处理的错误时抛出异常,让函数的调用者直接或间接的处理这个问题。异常的抛出和捕获 1. 异常是通过抛出对象而引发的,该对象的类型决定了应该激活哪个处理代码。 2. 被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那一个。 3. 抛出异常后会释放局部存储对象,所以被抛出的对象也就还给系统了,throw表达式会初始化一个抛出特殊的异常对象副本(匿名对象),
2017-05-06 20:35:07
373
原创 C++模板解析
要使参数类型不同的函数实现相同的功能,我们可以选择函数重载的方式,但函数重载大部分代码是相同的,每多一个类型就得多实现一次函数重载,也就造成了编程效率的损失,我们可以通过泛型编程来解决这个问题。 泛型编程:编写与类型无关的逻辑代码,是代码复用的一种手段。模板是泛型编程的基础。 模板分为函数模板和模板类。 函数模板:代表了一个函数家族,该函数与类型无关,在使用时被参数化,根据实参类型产生函数
2017-05-05 17:57:17
342
原创 进程与task_struct结构体
什么是进程? 进程是加载到内存中的可执行程序,但进程比程序多了一些结构,其中最主要的是PCB。广义上,所有的进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合。什么是PCB? 操作系统要对进程进行管理有两个步骤:描述进程和组织进程。而PCB就是描述进程的数据结构,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_st
2017-04-16 15:32:25
706
原创 vim的简单配置
vim是从 vi 发展出来的一个文本编辑器。功能丰富,在程序员中被广泛使用,而且可以根据自己需要对其进行配置,下面我们来介绍一些vim的基本配置。 首先将你的Linux切换到超级用户,输入命令 su,输入密码再回车切换到root用户,cd进入当前用户主工作目录,输入vim .vimrc进行vim配置. 以下是我的配置文件,值得说明的一点是最后一个设置set filetype=c是设置默认语言
2017-04-08 15:03:17
47682
1
原创 C++特性继承
C++特性继承继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。 继承关系如图所示,Class后面紧跟着的为派生类(亦称子类),是类的继承者,冒号后为继承关系,有公有(public)继承,保护(protected)继承,私有(private)继承三种继承关系,最后的为基类(亦称父类),
2017-04-05 18:07:35
446
原创 粘滞位权限与文件保护
通常情况下用户只要对某个目录具备w写入权限,便可以删除该目录中的任何文件,不论这个文件的权限是什么。例如我们进行以下的操作:以root用户的身份创建目录file,并赋予file目录777权限。在file目录中创建文件file1,并查看其默认权限。以普通用户的身份登录系统,测试是否可以删除文件file/file1。通过上面的操作可以发现,虽然普通用户对文件file1只具备
2017-04-01 16:15:12
693
原创 Linux系统find指令用法
Linux下find命令在目录结构中搜索文件,并执行指定的操作。 Linux下find命令提供了相当多的查找条件,功能强大。由于 find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。不过在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台 执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指 30G字节以上的文件系统)。 1.
2017-04-01 14:43:36
299
原创 Linux下ACM时间含义及权限修改
stat命令主要用于显示文件或文件系统的详细信息,例如我们创建一个文件file,用stat指令查看注意到stat file后出现的三个时间Access Modify Change了吗?这三个时间的含义为:Access: 最后一次访问该文件的时间。 Modify:最后一次修改该文件内容的时间。 Change:最后一次改变该文件属性或状态的时间。 当使用cat查看文件时
2017-03-25 19:16:08
566
原创 类的大小与this指针
类是用户自定义的类型,类可包含成员变量和成员函数,它们统称为类的成员,class是 C++ 中的关键字,专门用来定义类。下面我们看下代码这个代码定义了一个叫Student的类,类中包含了学生姓名,性别,年龄和赋值函数,输出函数,在主函数中还用sizeof输出这个类的大小,下面我们来看看结果可以看到类的大小其实只包含了类中成员变量的大小(20+4+4=28),那么成员函数的大小为
2017-03-12 17:06:00
465
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅