- 博客(32)
- 收藏
- 关注
原创 Linux多线程(一)
1.Linux线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制 序列” 一切进程至少都有一个执行线程 线程在进程内部运行,本质是在进程地址空间内运行 在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化 透过进程虚拟地址空间,可以看到进程的大部分资源,将进程资源合理分配给每个执行流,就形成了线 程执行流 ...
2019-07-08 19:53:54
347
原创 僵尸进程和孤儿进程
一、 僵尸进程 什么是僵尸进程 僵尸状态是一个比较特殊的状态,当进程退出并且父进程没有读取到子进程退出的返回码时就会产生僵尸进程。僵尸进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出码状态。所有,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入僵尸状态。 代码实现一下: #include <stdio.h> #include <st...
2019-05-15 12:05:03
367
原创 彩色进度条
1.创建Makefile文件:vim Makefile 文件内容: test:test.c gcc -o test test.c ...
2019-05-02 11:57:56
253
原创 Vim常用的一些操作命令
1. 关于Vim 1.1 Vim(神之编辑器)史上最强大的文本编辑器之一。还有一个叫Emces(编辑器之神),背后依赖于一个编程语言(Lisp:函数式编程语言) 1.2 Vim强大的两个原因 1.支持非常丰富的快捷键(操作效率高,但学习成本高),快捷键风格已经演化成了一种思想 2.支持非常强大的扩展能力(插件机制)背后依赖着一个编程语言(VimL) 1.3 Vim的对手们 Emaces ...
2019-04-27 21:27:06
282
原创 Linux下基本指令及权限理解
1. ls指令 语法:ls【选项】【目录文件】 功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。 常用选项: -a 列出目录下的所有文件,包括以.开头的隐含文件 -d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录 -s 在l文件名后输出该文件的大小。(大小排序,如何找到目录下最大的文件) -R 列出所有子目录下的文件。(递归)...
2019-04-25 13:46:17
234
原创 c++中的多态
多态的定义及实现 抽象类 c++11中的override和final 多态的原理 单继承和多继承关系中的虚函数表 1. 多态的定义及实现 1.1 多态的概念 通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生不同的状态 1.2 多态定义的构成条件 0.前提是继承 调用函数的对象必须是指针或者引用。 被调用的函数必须是虚函数,且完成了虚函数的重写。 1.3 ...
2019-04-24 17:30:12
258
原创 c++中的继承
继承的概念及定义 基类和派生类对象赋值转换 继承中的作用域 派生类的默认成员函数 继承与友元及静态成员 复杂的菱形继承及菱形虚拟继承 继承与组合 1. 继承的概念及定义 1.1 概念 继承机制是面向对象程序设计使代码复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认识过程。继承是类...
2019-04-24 16:24:58
354
原创 c++ 的IO流
文件流对象 C++根据文件内容的数据格式分为二进制文件和文本文件 文件的操作步骤: 定义一个文件流对象 ifstream ifile(只输入用) ofstream ofile(只输出用) fstream iofile(既输入又输出用) 使用文件流对象的成员函数打开一个磁盘文件,使得文件流对象和磁盘文件之间建立联系 使用提取和插入运算符对文件进行读写操作,或使用成员函数进行读写 关闭文件 ...
2019-04-24 11:25:30
412
原创 模板进阶
非类型模板参数 模板的特化 类模板特化应用之类型萃取 模板分离编译 模板总结、 1. 非类型模板参数 类型形参即:出现在模板参数列表中,跟在class或者typename之后的参数类型名称。 非类型形参:是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。 ...
2019-04-24 11:12:05
257
原创 模板初阶
函数模板 类模板 1. 函数模板 1.1 函数模板的概念 函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。 1.2 函数模板格式 template<typename T1, typename T2,…,typename Tn> 返回值类型 函数名(参数列表){} template<typename T> void ...
2019-04-23 21:16:00
237
原创 string
标准库中的string类 string类的模拟实现 1.标准库中的string类 1.1 string类的介绍 string是表示字符串的字符串类 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。 string在底层实际是:basic_string模板类的别名,typedef basic_string<char, char_traits, alloc...
2019-04-23 20:40:24
287
原创 deque
deque的介绍 deque的使用 deque的应用 1. deque的介绍 deque,是双端队列不规则字母的首字母缩写。双端队列是动态大小的序列式容器,其可以向两端伸缩。 特定的库可以以不同的方式实现duque,但通常是一种动态数组,不论在任何情况下,它都允许通过随机访问迭代器直接访问单个元素,可以根据需要动态的伸缩。 因此,deque提供了一些与vector相似的功能,但deque在头...
2019-04-22 11:54:12
231
原创 list
list的介绍及使用 list的深度剖析及模拟实现 vector和list的对比 1.list的介绍及使用 1.1 list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。 list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。 list与forward_list非常相似:...
2019-04-18 13:28:27
321
原创 vector
vector的介绍及使用 vector的深度剖析及模拟实现 1.vector的介绍及使用 1.1 vector的介绍 vector是表示可变大小数组的序列容器。 就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。 本质讲,vector使用动态分...
2019-04-10 13:53:32
1413
原创 stack和queue
stack的介绍和使用 queue的介绍和使用 priority_queue的介绍和使用、 容器适配器 1.stack的介绍和使用 1.1 stack的介绍 stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。 stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,...
2019-04-09 21:31:12
607
原创 C/C++内存管理
C/C++内存分布 C语言中动态内存管理方式 C++中动态内存管理 operator new与operator delete函数 new与delete的实现原理 定位new表达式(placement-new) malloc/free和new/delete的区别 单例模式(饿汉模式和懒汉模式) 内存泄露 1.C/C++内存分布 说明: 栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是...
2019-04-01 21:36:46
186
原创 二叉树总结
1.树概念及结构 2.二叉树概念及结构 3.二叉树顺序结构及实现 4.二叉树链式结构及实现 1、树的概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:每个结点有零个或多 个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点...
2019-03-18 15:38:16
1163
原创 c++入门
1.c++关键字 2. 命名空间 3. c++输入&输出 4. 缺省函数 5. 函数重载 6. 引用 7. 内联函数 8. auto关键字(c++11) 9. 基于范围的for循环(c++11) 10.指针空值–nullptr(c++11) 1. c++关键字 2. 命名空间 使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这...
2019-03-12 17:33:15
364
原创 c++类和对象(上)
类的定义 类的访问限定符及封装 类的作用域 类的实例化 类对象模型 this指针 1.类的定义 class为定义类的关键字,className为类的名字,{}中为类的主体,注意类定义结束时后面的分号。 类的元素称为类的成员:类中的数据称为类的属性或者成员变量,类中的函数称为类的方法或者成员函数 类的两种定义方式: 1.声明和定义全部放在类体中,需要注意:成员函数如果在类中定义,编译器可能会将其...
2019-03-11 21:07:15
221
原创 C++类和对象(下)
1.再谈构造函数 2.c++的成员初始化 3.友元 4.static成员 5.内部类 6.再次理解封装 1.再谈构造函数 1.1构造函数赋值 类对象成初始化只能初始化一次,而构造函数体内可以多次赋值 1.2初始化列表 初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个成员变量后面跟一个放在括号中的初始值或表达式,例如: class Date { public ...
2019-03-11 20:03:27
194
原创 c++类和对象(中)
类的6个默认成员函数 构造函数 析构函数 拷贝构构造函数 赋值操作符重载 默认拷贝构造与赋值运算重载的问题 const成员函数 取地址及const取地址操作符重载 1.类的6个默认成员函数 2.构造函数 2.1概念 构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员 都有 一个合适的初始值,并且在对象的生命周期内只调用一次 2.2特性 函...
2019-03-09 17:01:58
463
原创 结构体类型创建 结构体初始化 结构体内存对齐 位段,位段计算机大小 枚举+联合
结构体类型创建 结构体是一些(具有相同或者不同元素类型)值的集合,这些值成为成员变量。 结构体的每个成员可以是不同类型的变量。 结构体的声明: 例如描述一个学生: struct Stu { char name[20];//名字 int age;//年龄 char sx[5];//性别 char id[20];//学号 };//分号不能丢 结构体的成员可以是标量、数组、指针、甚至可以是其...
2018-11-27 16:12:38
223
原创 数组总结
数组的定义 数组:在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组。 首先声明数组的类型,然后声明数组元素的个数 格式: 元素类型 数组名[元素个数]; 比如: int a[3]; 数组元素有顺序之分,每个元素都有一个唯一的下标(索引),而且都是从0开始 数组元素的访问: a[i] 数组可以在定义数组的同时赋值: i...
2018-11-23 19:36:16
1515
原创 指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针、回调函数
指针数组与数组指针 指针数组:指针数组就是存放指针的数组,其本质为数组。 数组指针:数组指针是指向数组的指针,其本质为指针指向的对象是数组。 由于“[ ]”的优先级高于“ * ”的优先级,指针数组与数组指针的表达可做如下表示: int * p1 [10]; // 指针数组 p1先与“[ ]”结合构成一个包含10个元素的数组,int表示的则是数组的内容。 int ( p2)[10]; // ...
2018-11-22 18:07:00
245
原创 c语言小游戏--贪吃蛇
贪吃蛇设计流程: (1)数据设计 辅助宏定义 游戏地图的宽和高,以及蛇的最大长度 食物结构体 食物在地图上x和y上的显示 蛇结构体 蛇的长度,蛇得每一节的坐标存储,蛇的移动速度 辅助全局变量 蛇是否变化,蛇的初始移动方向 (2)模块化设计 地图设计 void drawMap();//绘制游戏地图 按键处理 void keyDown();//按键处理 ...
2018-10-31 13:15:48
548
原创 经典面试题(1)
将一个字符数组的内容为:“student a am i”改为“i am a student” 要求: 1. 不能使用库函数; 2.只能开辟有限个空间(空间个数和字符串的长度无关)。 算法思路:先将字符数组"student a am i"逆置变为"i ma a tneduts",然后在将字符数组"i ma a tneduts"里边的每一个单词逆置变为"i am a student". 代码如下:...
2018-10-28 17:35:03
214
原创 c语言操作符总结
C语言运算符是说明特定操作的符号 ,它是构造C语言表达式的工具 。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都为运算符处理。除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符,比如位运算符。 操作符分类 算术运算符 移位运算符 位操作符 赋值操作符 单目操作符 关系操作符 逻辑操作符 条件操作符 逗号表达式 操作符详解 算数...
2018-10-25 21:11:35
211
原创 扫雷小游戏
要求: 1.第一步不炸死 2.坐标周围没有雷,可以实现展开 test.c #define _CRT_SECURE_NO_WARNINGS 1 #include “game.h” #include “game.h” void game() { int x = 0, y = 0, i = 0; char board[ROWS][COLS] = { ‘0’ }; char show[ROWS][COLS...
2018-10-25 17:23:24
196
原创 三字棋小游戏
整个游戏可以分为以下几个环节 1.打印一个游戏菜单 2.玩游戏 (1)玩家走一步 (2)电脑走一步 每走一步对结果进行显示,其中游戏的结果为玩家赢,电脑赢,以及平局 代码显示如下: test.c #define _CRT_SECURE_NO_WARNINGS 1 #include"game.h" void menu() { printf("*****************************...
2018-10-24 21:35:20
201
原创 c语言经典例题及解析
输出100到200之间的素数 素数,就是除了1和他本身,不能被其他数整除的数字。 今天我们将用三种不同的方法来实现“输出100到200之间的素数”,请往下看: 1、第一种方法就是用100到200之间的每个数字,除以2到其本身前面的那一个数字,如果此过程中出现整除的现象,则该数不是素数。如果没有整除的现象,则该数为素数输出。 #include&lt;stdio.h&gt; int main() { ...
2018-09-20 13:17:54
7761
1
原创 向程序猿迈进的第一天
自我介绍 我是郝晓旗,来自延安,一个典型的陕北糙汉子。现就读于西安科技大学电子信息工程专业,是一个大三的老学长。 从零开始 最早开始接触编程是大一第一学期学习的c语言,刚开始接触的时候,这种全新的语言让我感到很惊讶,通过一些深入的了解才知道我们所用到的很多软件都是由它编写而成。但这种惊奇并没有持续太久,很快便被舒适的大学生活所淹没。直到现在,自己感受到了就业的压力,才决定从零开始认认真真的去...
2018-09-16 19:53:36
355
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅