- 博客(44)
- 收藏
- 关注
原创 Linux进程间通信
进程间通信介绍目的数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变分类1.管道匿名管道pipe命名管道2.System V IPCSystem V 消息队列System V 共享内存Syste
2020-05-17 15:24:19
235
原创 C++STL简介
什么是STLSTL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。STL的版本原始版本Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本–所有STL实现版本的始祖。P. J. 版本由P. J. Plau.
2020-05-15 00:00:53
254
原创 linux接口2:理解文件系统
书接上篇博客:上篇博客篇幅太长,所以分了一下:我们使用ls -l的时候看到的除了看到文件名,还看到了文件元数据[root@localhost linux]# ls -l总用量 12-rwxr-xr-x. 1 root root 7438 “9月 13 14:56” a.out-rw-r–r--. 1 root root 654 “9月 13 14:56” test.c每行包含7列:模式硬链接数文件所有者组大小最后修改时间文件名stat命令能够看到更多信息[root@localh
2020-05-14 23:52:30
207
原创 linux基础接口
接口介绍open man open#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode);pathname: 要打开或创建的目标文件flags: 打开文件时,可以传入多个参数选项,用下面的一个或者多个
2020-05-14 23:41:55
698
原创 C++模板初始
进入正题:如何实现一个通用的交换函数呢?void Swap(int& left, int& right) { int temp = left; left = right; right = temp; }void Swap(double& left, double& right) { double temp = left; left = right; right = temp; }void Swap(char& left, char& rig
2020-05-13 22:45:23
217
原创 关于C++语言的内存管理的一些小知识
在这篇博客中,来简单介绍一下在C++语言的一点内存管理的小知识,在这之前我还写了一篇关于C语言的内存管理的小知识,如果感兴趣的同学可以翻到前面看一下那篇博客,给小弟增加点浏览量。话不多说,进入正题:C++内存管理方式:C语言内存管理方式在C++中可以继续使用,但有些地方就无能为力而且使用起来比较麻烦,因此C++又提出了自己的内存管理方式:通过new和delete操作符来进行动态内存管理。new/delete操作内置类型void Test(){ // 动态申请一个int类型的空间 int* p
2020-05-12 23:26:09
150
原创 超级超级简单的vim配置
电脑重置之后好多环境都没了,在Lunix环境下的vim方法找到了好多,都没配置好,这次在网上找到一个超级简单的给大家分享一下。话不多说,进入正题:vimplus简介vimplus是国内的又一个大佬打造的一个vim开发工具包. 为 cpp 开发者量身定做. 界面漂亮.官网参见githubhttps://github.com/chxuan/vimplus安装过程可以参考github上的文档git clone https://github.com/chxuan/vimplus.git ~/.vim
2020-05-12 23:03:51
152
原创 Lunix下一个简易的shell实现
通过前面所学的知识,水一篇博客,hhhh#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <fcntl.h>#define MAX_CMD 1024char command[MAX_CMD];int do_...
2020-04-18 22:20:20
167
原创 Linux进程控制
进程创建进程是如何创建的,通过前面的学习我们可以知道是有一个叫fork函数。这个函数就是fork函数,在linux中fork函数时非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。#include <unistd.h>pid_t fork(void);返回值:自进程中返回0,父进程返回子进程id,出错返回-1进程调用fork,当控制转移到内核中的...
2020-04-18 22:14:53
174
原创 日期类的简单实现
这篇博客简单实现一个日期类,直接发代码class Date{public: int GetMonthDay(int year, int month) { int monthDays[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; if (month == 2 && ((year % ...
2020-04-05 23:05:16
169
原创 c++类和对象3
在这篇博客来简单介绍一下类的其余的默认成员函数。话不多说,进入正题。拷贝构造函数概念这是函数一看名称就是特殊的构造函数,在创建对象时,创建一个一模一样的对象。同类型的对象来参数来初始化的构造函数。特征拷贝构造函数也是特殊的成员函数,其特征如下:拷贝构造函数是构造函数的一个重载形式。拷贝构造函数的参数只有一个且必须使用引用传参,使用传值方式会引发无穷递归调用。这个函数如何初始化呢?...
2020-04-03 21:40:57
130
原创 分页式 分段式 段页式实现原理
在这篇博客中,来详细介绍一下程序地址空间的概念,一开始叫做进程地址空间。在内核当中创建一个进程,会有这个PCB(进程控制块),在这个PCB中,有一个内存指针struct mm_struct mm指向程序地址空间,或者叫做进程地址空间。那么内核空间在哪里呢?是在用户空间中,在这里讨论的都是以32位系统为参照的。这样自说很枯燥,上个图.在父进程PCB中,内存指针指向虚拟地址空间,但是在系统调用...
2020-04-02 22:53:36
2153
1
原创 C++类和对象2
这篇博客来介绍一下类的默认成员函数,在类中有6个默认成员函数,就算一个类什么都没有,也会自动生成这6个默认成员函数。那么这6个默认成员函数是什么呢?完成初始化和清理的两个函数构造函数和析构函数完成拷贝复制的两个函数拷贝构造函数和赋值重载函数取地址重载的两个函数普通对象和const对象取地址函数,这两个函数一般不需要自己实现。话不多说,进入正题。构造函数构造函数是特殊的成员函数,需...
2020-04-02 17:38:18
119
原创 linux进程概念2
书接上文,在这篇博客中介绍一下进程状态。进程状态:一个进程可以有几个状态:R运行状态(running): 并不意味着进程一定在运行中,它表明进程要么是在运行中要么在运行队列里。S睡眠状态(sleeping): 意味着进程在等待事件完成(这里的睡眠有时候也叫做可中断睡眠(interruptible sleep))。D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状(uninte...
2020-03-20 21:17:15
150
原创 C++类和对象1
进入了C++类和对象的学习,这篇博客会简单介绍一下。面向过程和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。类的引入C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数struct Student{ void Se...
2020-03-19 16:44:05
156
原创 Linux进程概念1
这篇博客来简单介绍一下进程概念。在提到进程这个东西的时候,我们首先的先了解两个概念:什么是冯诺依曼体系结构?什么是操作系统?我们常见的计算机大部分都遵循冯诺依曼体系结构,这个体系结构主要是大部分计算机都是由输入设备、存储器、运算器、控制器、输出设备组成。其中运算器和控制器加起来就是中央处理器。在存储器和中央处理器之间会以数据信号来交流。其他之间通过控制信号来交流。关于冯诺依曼,必须强调几点:...
2020-03-19 11:20:36
167
原创 C++小语法2
这几天身体出了一点问题,学习情况很不良好。也让我意识到了身体是革命的本钱。也希望各位大佬同行也能照顾自己的身体。在这方面我吃了太多亏了。不说了,往事如烟。咋们还得向前看。书接上文,这篇博客的东西可能有点少,各位谅解。内联函数概念:以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。在正常情况下调用函数是要消耗的...
2020-03-18 21:09:57
119
原创 初入门的C++小语法
这篇博客在写的时候,也是本人接触C++语言的时候,为了打好自己的基础,想在以后找一个差不多的工作,所以会交流分享一下自己在初学C++的一点小心得,希望有初学的老哥多多指教。话不多说,进入正题。1.命名空间为什么会有命名空间这个关键字呢,这是因为在C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的...
2020-03-06 18:34:55
193
原创 排序系列—————交换排序
在这篇博客中,简单介绍一下交换排序。什么是交换排序呢?所谓交换排序就是根据序列中两个记录键值的比较结果来交换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。在这篇博客中介绍的主要是冒泡排序和快速排序,冒泡排序是很简单的,在这篇博客中会主要介绍一下快速排序,前面学习过的排序都是根据自己的特点命名的,但是只有快速排序是以快速命名的,这就说...
2020-02-28 21:07:51
454
原创 Linux指令简单介绍
初入Linux的世界,在这篇博客中给大家介绍一下Linux的一些简单的指令介绍。话不多少,我们直接进入正题:ls指令作用:罗列出当前文件夹下的内容ls -l:查看详细的文件或者文件夹属性ls -a:查看隐藏文件ls -lrt:按照修改时间进行排序pwd指令作用:显示当前目录的路径cd指令:作用:切换目录cd [path] cd[相对路径]/[绝对路径]cd / 切换到根目录...
2020-02-26 21:36:13
187
原创 排序系列—————选择排序
上篇博客中主要介绍了插入排序:正常插入排序和希尔排序。在这篇博客中主要介绍一下选择排序。选择排序的基本思想:每一次从待排序的数据元素中选出最小或最大的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。直接选择排序的排序规则:在元素集合array[i]–array[n-1]中选择关键码最大(小)的数据元素若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一...
2020-02-26 20:09:50
165
原创 排序系列—————插入排序
排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排序算法是稳定的;否则称为不稳定的。内部排序:数据元素全部放在内存中的排序。外部...
2020-02-24 21:26:33
171
原创 二叉树和堆的一点基本小知识(1)
在数据结构中,二叉树这一块是十分重要的,在实际应用中也得到很多的应用,其中堆就很重要。这篇博客首先讲一下二叉树的一点小知识:首先说一下树的概念:树在自然界中很常见,在计算机的数据结构中,树也是一块很重要的知识/树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。有一个特殊的结点,...
2020-02-09 20:10:20
477
原创 栈和队列的基本实现
这篇博客主要说一下栈和队列的主要实现,是以C语言完成的,虽然可能用到的机会很少,但是还是了解一下比较好。话不多说,进入正题:栈的实现:#define DEFSTACKSIZE 100void CheckCapacity(Stack* ps){if (ps->size >= ps->capacity){ps->capacity *= 2;ps->arr...
2020-02-09 19:42:07
194
原创 用c语言实现一个简单的宿舍管理系统
今天才打开电脑对自己上个学期的东西进行了回顾,才发现上学期期末课程设计是用C语言写了一个简单的宿舍管理系统,那时候学校的要求是必须要有图形化界面的要求,所以我们小组没有选择用c语言进行这次课程设计的设计。用了别的语言。所以最后汇报提交的也不是我这个,功能十分简单,主要就是结构体一些方面的知识要求,献丑了。废话少说,进入正题。#define _CRT_SECURE_NO_WARNINGS 1#i...
2020-02-08 15:47:33
5868
1
原创 双链表接口的简单实现
双向链表相当于单链表来说,实现的几个接口无疑是比较简单的,在这一篇博客中,我将会整理一下关于双向链表的几个接口实现的过程,希望各位大佬多多指正。1.首先创建一个带有双向链表的节点代码如下typedef int LTDataType;typedef struct ListNode{ LTDataType _data; struct ListNode* _next; struct Li...
2020-02-08 15:30:24
237
原创 链表的几个接口实现
在这篇博客介绍一下数据结构线性表链表的几个接口实现,话不多说,进入正题。头插法头插法是链表的几大接口之一,在进入头插时也得考虑有没有节点让你头插,如果没有就创造一个节点。所以先给出一个创造节点的函数:SListNode* BuySListNode(SLDataType x)//创造一个新的节点{ SListNode *Node = (SListNode*)melloc(sizeof(SL...
2019-11-21 19:11:07
389
原创 动态内存存储的几个函数简单介绍
在实际应用中,动态存储是很普遍的,我们不可能申请一块固定的空间,所以需要动态的开辟空间,在存储的空间满了之后动态的增加空间。话不多少,进入正题:1.melloc和freemalloc和freeC语言提供了一个动态内存开辟的函数:void malloc (size_t size);*这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。如果开辟成功,则返回一个指向开辟好空间的指...
2019-11-18 15:29:18
488
原创 动态顺序表的几大接口功能实现
在数据结构中,顺序表无疑是十分重要的,作为线性表的一员,在生活中也有很多的应用。这篇博客介绍一下关于顺序表的小知识。首先介绍一下顺序表的概念:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。顺序表一般可以分为:静态顺序表:使用定长数组存储。动态顺序表:使用动态开辟的数组存储。下面给出动态顺序表几大接口的实现:`#...
2019-11-18 15:07:01
146
原创 数据结构中的时间复杂度和空间复杂度的简单分析
前面的博客,大篇幅的介绍了C语言的知识,从这篇博客开始,将会开始介绍给大家一些数据结构的小知识,C语言的博客也会接着写,但应该篇幅不会太多。话不多说,进入正题:这两个复杂度是什么呢?大家都知道,任何一件事情完成它,都会有效率的概念,可以说,现在的生活中,效率也是一个进场被人们提起的词语。在算法中,也有算法的效率。算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,...
2019-11-15 19:41:33
973
原创 翻过指针这座山(3)!
接着介绍指针,在这篇博客中我将介绍这几个东西的内容:函数指针和定义函数指针数组和定义,转移表指向函数指针数组的指针和定义话不多说,我们来一步步的走:函数指针,顾名思义,函数指针就是函数的指针。它是一个指针保存函数的地址,指向一个函数。举几个例子:char * (*fun1)(char * p1,char * p2);//fun1 不是什么函数名,而是一个指针变量,它指向一个函数。这个函...
2019-11-14 21:44:12
114
原创 一些小的程序趣味算法题
找了一些程序题,分享给大家1. 5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二; D选手说:C最后,我第三; E选手说:我第四,A第一; 比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。 #include<stdio.h>void BiSai(int A, int B...
2019-11-01 23:27:51
348
原创 翻过指针这座山(2)!
在上一篇博客中主要初级的介绍了一点指针的内容,这次我们接着来看两个概念:指针数组与数组指针指针数组是什么呢?而数组指针又是什么呢?在这里我们进行一个简单的区分:指针数组是一个数组,这里数组里面存放着指针,可以指向不同的地址进行访问。数组指针是一个指针,这个指针能够指向数组,指针指向数组的地址,在一维数组中其实指向的就是数组首元素的地址,而在二维数组中就是指向的是二维数组第一行的地址,二维数...
2019-11-01 21:24:28
154
原创 结构体中的内存对齐问题
结构体在C语言中也是很常见并且也是运用非常广泛的,这篇博客主要给大家介绍一下在结构体中的内存对齐问题,这个内存对齐问题,是现在很常见的以"以空间换时间"的案例,这个主要因为,现在硬盘空间越来越大,现在空间很大并且已经变得廉价,所以会有以“以空间换取时间”,这样会使得时间效率更大化。下面进入正题。什么是内存对齐呢?说起来可能比较抽象,老样子,给代码以运行结构了解一下。...
2019-10-31 21:23:46
943
原创 翻过指针这座山!(1)
在C语言中,指针无疑是什么重要的。学完指针之后感觉收获很多,再加上之前的数组这一块可以很好的与指针联动,所以我想给大家分享我的一点小知识。什么是指针?在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(pointsto)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过...
2019-10-29 20:40:05
127
原创 数据的存储之整形提升
在上篇博客中,我介绍了整形和浮点型的存储方式,在这一篇博客中,将会介绍“整形提升”,什么是“整形提升”呢?这是由于数据在存储中因为数据类型的变化可能导致在内存中开辟的空间位数会发生变化。具体说可能比较抽象,下面我会用两个例子,来比较生动形象的介绍这个整形截断与提升。#include <stdio.h> int main() { char a = -128; printf(...
2019-10-28 20:46:54
173
原创 关于整形和浮点数在内存中的存储方式
在这篇博客中,我将会写一些整形和浮点数在内存中的存储方式的一点小知识。下面进入正题:首先进行简单的数据类型介绍:char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点在上面的这几...
2019-09-28 21:29:02
1016
原创 C语言实现扫雷游戏
C语言实现扫雷游戏首先引入各种头文件,在整个函数实现中会起到很关键的作用。代码如下:#include<stdio.h>#include<stdlib.h>#include<time.h>#include<string.h>#include<Windows.h>然后进行基本游戏数据的设置,设置扫雷的界面 ,雷的个数,初始化扫...
2019-09-22 21:10:39
474
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人