自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

转载 centos无法启动系统 进入单用户模式

单用户模式进入方法:https://blog.51cto.com/asd9577/1931442

2020-04-09 19:02:54 1439

原创 很久没跟新博客了。。。我胡三汉回来了!

最近找工作有一个项目被面试官嘲讽,这几天抓紧重新做一个大一点的系统项目。云盘。

2019-11-05 23:13:16 377

原创 C++重载原理分析

函数重载:在相同作用域中的多个函数,具有相同的名字而形参类型或者形参个数不同。(返回值并不会影响函数重载)C++函数重载底层实现原理是C++利用那么name mangling(倾轧)技术,来该函数名,区分参数表不同的函数名。编译器通过函数名和参数类型识别重载函数,为了保证类型的安全连接,编译器用参数个数和参数类型对每一个函数标识符进行专门编码,这个过程被称为 “名字改编” 或“名字修饰”,类型...

2019-08-02 11:01:16 230

原创 C++ 数据类型转换

1.static_cast用于非多态类型之间的转换,不提供运行时的检查来确保转换的安全性。主要有如下:基本数据类型转换int转换成enum基类和子类之间指针和引用的转换int转换成charint n = 97;cout << n << '\t' << (char)n << '\t' << static_cast...

2019-08-02 10:12:36 284

原创 Linux系统编程之线程

线程介绍  轻量级的进程,一个进程可以拥有多个线程,默认情况下一个进程有一个线程。从内核里看进程和线程是一样的,都有各自不同的PCB,在Linux:线程是最小的执行单位,进程是最小分配资源的单位。线程之间私有和共享的资源私有:线程栈,寄存器,程序寄存器共享:堆,地址空间,全局变量,静态变量线程优缺点优点:  1. 提高程序并发性  2. 开销小  3. 数据通信,共享数据...

2019-05-27 20:48:36 278

原创 IPC之mmap共享映射区

mmap共享内存(Shared Memory):映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问优点:  •无须复制,快捷,信息量大缺点:  •通信是通过将共享空间缓冲区直接附加到进程的虚拟地址空间中来实现的,因此进程间的读写操作的同步问题  •利用内存缓冲区直接交换信息,内存的实体存在于计算机中,只能同一个计算机系统中的诸多进程共享,不方便网络通信...

2019-05-24 11:25:27 305

原创 IPC之管道(fifo)

fifo也叫有名管道:一种半双工的通信方式,它允许无亲缘关系进程间的通信优点:  •可以实现任意关系的进程间的通信缺点:  •长期存于系统中,使用不当容易出错  •缓冲区有限相关函数创建一个管道的伪文件  • 可以mkfifo xxx 也可以用函数 int mkfifo(const char *pathname, mode_t mode);  • 内核会针对fifo文件开辟...

2019-05-24 11:15:06 189

原创 IPC之管道(pipe)

IPC介绍IPC:inter-process-communicationlinux通过内核提供的缓冲区通进行数据交换的机制,用户去区无法完成IPC通信的方式:  • pipe 管道 (有血缘关系通信)半双工通信  • fifo  • mmap 文件映射(共享)IO --速度最快(在内存上开辟一块缓冲区,把文件映射到内存上,直接操作内存)  • 本地socket 最稳定  • 信...

2019-05-24 11:01:36 221

原创 linux系统编程之进程信号的使用

前提介绍信号捕捉特性:   1. 进程正常运行时,默认pcb中有一个信号屏蔽字,假定为*,它决定了进程自动屏蔽哪些信号,当注册了某个信号捕捉函数,捕捉到该信号以后,要调用该函数,而该函数有可能执行很长时间,在这期间所屏蔽的信号不由来指定,而是用sa_mask来指定,调完信号处理函数,再次恢复   2. xxx信号捕捉函数执行期间,xxx信号自动被屏蔽   3. 阻塞的常规信号不支持排队,产...

2019-05-19 22:40:57 190

原创 linux系统编程之信号的介绍

信号的介绍信号介绍:内核产生,软件产生的中断,可能有延迟,信号的特点:简单,不能带大量信息,满足特定条件发生信号的机制:进程B发送给进程A,内核产生信号,内核处理信号的产生(内核产生):• 按键产生 ctrl+c ctrl+z ctrl+\• 调用函数 kill raise abort• 定时器alarm , setitimer• 命令产生 kill• 硬件异常 段错误,浮点错...

2019-05-19 20:26:45 147

原创 linux系统编程----------进程

关于进程的一些命令ps可以查看哪些进程正在执行ps -C 命令行 //通过命名来产看该命令执行后的进程信息toptop命令实时显示系统的进程状态,包括显示CPU利用率,进程状态,内存利用率等许多系统信息,top命令一旦运行就会持续不断地更新内容。按P键,根据CPU使用时间的多少排序。按M键,根据内存的使用情况排序。按T键,根据进程的执行时间的多少排序。free显示系统内...

2019-05-14 21:28:34 165

原创 map / multimap容器

介绍○ . 所有元素都会根据元素的键值自动排序,map所有的元素都是pair<键值,实值>,map不允许两个元素有相同的键值。○ . 不能通过map的迭代器改变map的键值,可以改变元素的实值。○ . map和list有相同的性质,插入和删除操作都不会造成原有list迭代器的失效,只有被删除的元素的迭代器失效,其他迭代器不会受到影响。○ . map和multimap的操作类...

2019-05-08 21:09:23 121

原创 set / multiset容器

介绍○ . 所有元素都会根据元素的键值自动被排序,set元素的键值又是实值,set不允许两个元素有相同的键值;○ . set的迭代器不允许改变set元素的值(会破坏set元素的排序规则);○ . set和list有相同的性质,插入和删除操作都不会造成原有list迭代器的失效,只有被删除的元素的迭代器失效,其他迭代器不会受到影响。(除非删的是头结点);○ . mutltiset 和set 唯...

2019-05-08 21:02:14 162

原创 list 容器

介绍链表是物理存储单元上非连续,非顺序的,数据结构元素的逻辑顺序是通过链表中的指针链接次序实现的。 对于任何位置上元素插入或元素的移除,list永远是常数时间(固定步骤),list容器是一个双向链表。○ . 采用动态内存分配,不会造成内存浪费和溢出○ . 链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素○ . 链表灵活,但是空间和时间额外消耗较大list容器的迭代器○ ...

2019-05-08 20:53:34 110

原创 stack容器 和 queue容器

stack容器介绍stack容器先进后出,只有一个出口,不允许遍历,也不提供迭代器。操作头文件 stackstack构造函数○ . stack stkT;//stack采用模板类实现, stack对象的默认构造形式:○ . stack(const stack &stk);//拷贝构造函数stack赋值操作○ . stack& operator=(const st...

2019-05-08 20:44:24 173

原创 deque 容器

介绍deque 是一种双向开口的连续线性空间(即允许头尾两端分别做元素的插入和删除操作,vector也允许,但效率低)deque没有容量的概念,是动态拼接。deque是分段连续内存空间,那么就必须有中央控制(中控器),维持整体连续。注意:const deque 应该对应const迭代器,逆序访问需要逆序迭代器。操作一些基本的操作和前面介绍vector容器基本类似。头文件 deque...

2019-05-08 20:38:18 206

原创 string 容器

介绍C++标准库定义了一种string类,String是一个类,封装了很多实用的成员方法(eg:查找find,拷贝copy,删除delete 替换replace,插入insert),string管理char*所分配的内存。每一次string的复制,取值都由string类负责维护,不用担心复制越界和取值越界等。操作头文件 string赋值操作○ =○ assign(const ...

2019-05-08 20:27:54 98

原创 vector容器(C++ )

介绍动态分配空间,单向开口的线性连续空间,一个vector的容量永远大于或者等于其大小。支持随机访问,单端数组,动态数组。动态增加大小,并不是在原空间之后续接新空间(因为无法保证原空间之后有可配置的空间,而是需要一块更大的内存空间,然后将原数据拷贝新空间,并释放原空间,因此对vector的任何操作,一旦引起空间的重新配置,指向原vector的所有迭代器都失效了。)操作一些常用的操作,需...

2019-05-08 20:17:46 104

原创 STL简述

介绍  为了建立数据结构和算法的一套标准且降低他们之间的耦合关系,以提高各自的独立性,弹性,交互性(相互合作性),提出STL(Standard Template Library)由亚历山大.斯特潘诺夫(Alexander Stepanov)创建。分类容器(container): 各种数据结构。○ 序列式容器:容器中的每个元素都有固定的顺序○ 关联式容器(会自动排好序):非线性的树结构,...

2019-05-08 19:59:56 145

原创 红黑树

介绍   红黑树是一种自平衡二叉查找树,是一种扩充的BST,它可以在O(log⁡2n\log_2{n}log2​n)时间进行查找,插入,和删除等操作。主要是对内存中,比较小规模的数据进行索引。性质颜色特征: 结点是红色或者黑色的;根特征: 根结点永远是黑色的;外部特征: 扩充外部的叶子结点是空的,颜色为黑;内部特征: 红色结点的两个子结点都是黑色的,不允许两个连续的红色结点;深...

2019-04-23 19:38:49 154

原创 交换类排序 -----------冒泡排序 / 选择排序 / 快速排序

文章目录冒泡排序简单选择排序快速排序冒泡排序思想:两两交换比较相邻的关键字,如果反序则交换,直到没有反序的记录为止。//顺序表为Lvoid BubbleSort(sqlist *L){ int flag = TRUE; for(int i=1; i<l->length && flag; ++i){ flag = FALSE: for(int j= ...

2019-04-18 21:57:48 108

原创 C语言 ---------回调函数

回调函数定义:回调函数就是一个通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。int add(int a,int b){ return a+b;}int array_opt(int *arr...

2019-04-13 20:48:42 112

原创 C++ ----------- 多态性与虚函数

多态在C++中,多态表现形式之一是:具有不同功能的函数可以用同一个函数名,这样就可以实现用一个函数名调用不同内容的函数。从系统实现的角度来看,多态性分为两类:静态多态性和动态多态性。静态多态性静态多态性是通过函数重载实现的。由函数重载和运算符重载(运算符重载的实质上也就是函数重载)形成的多态性属于静态多态性,在程序编译时就能决定要调用的是哪个函数,静态函数又称为编译时的多态性,特点:速度...

2019-03-27 20:12:59 304 3

原创 C++ ----------- 内置函数 && 友元 && 常成员函数

内置函数在函数调用之前,要记下当时执行的指令地址,还要“保护现场”,以便在函数调用之后继续执行。在函数调用之后,流程返回到先前记下的地址处,并且根据记下的信息“恢复现场”,然后继续执行。这些都需要花费时间,如果有的函数频繁使用,用时间会很长,从而降低程序的执行效率。C++提供一种高效率的方法,即在编译时将所调用函数的代码直接嵌入到主调函数中,从而不是讲流程转出去。这种嵌入到主函数中的函数称为内...

2019-03-25 14:18:19 189

原创 C语言的一些骚操作 ----------- (一)

1.逗号表达式逗号用来连接两个表达式,并以右边的表达式的值为结果,逗号在所有运算符中先级最低。 int n = (1+2, 2*3,4-5); // n = -1 取右边最后一个结果 int n = 1+2,2*3,4-5; // n = 1+2 即 n = 32. && 和 ||短路与&&:左边表达式是false,右边就不执行,逻辑表达式值为fals...

2019-03-23 22:07:54 2472

原创 C++ ---------- const 指针 / void 指针 / 引用

. 各类指针对比变量定义类型表示含义int *p ;int *定义p为指向整型数据的指针变量int *p[4];int * [4]定义指针数组,是由4个指向整形数据的指针元素组成int (*p) [4];int (*) [4]p为指向包含4个元素的一维数组的指针变量int *p();int * ()p为返回一个指针的函数,该指针指向整型数...

2019-03-22 17:55:10 235

原创 C++ ---------- 构造函数

C++ 构造函数C++程序中,对象的初始化是一个不可缺少而十分重要的问题,不应该让程序员在这个问题上花费过多的精力,C++提供了构造函数(constructor)来处理对象的初始化。构造函数是一种特殊的成员函数,与其他函数不同,不需要用户来调用它,而是在建立对象时自动执行。注意:在类中定义构造函数,它和所在的类同名。可以在类内定义构造函数,也可以只在类内声明,在类外定义。构造函数没有返...

2019-03-21 21:19:22 189

原创 Linux基础 ---------- lvm 和 ftp

目录一. lvm:logical volume manager 动态管理卷1. lvm的建立2. lvs的热拉伸2. lvs缩减,适合ext*(xfs文件系统,不支持缩减)3. 缩减vg4. 数据迁移(移除含有数据的设备)5. lvm快照6. 删除二. ftp补充一. lvm:logical volume manager 动态管理卷        L...

2019-01-30 16:58:18 260

原创 Linux基础 ---------- yum简单命令 / 源码安装软件 / kickstart安装虚拟机系统

目录一. yum简单命令二. rpm命令三. 源码安装软件四. kickstart安装虚拟机系统一. yum简单命令yum  clean  all                    //清除原有yum缓存yum  repolist                       //列出yum仓库信息yum  install  software          //安...

2019-01-29 20:13:10 167

原创 Linux基础 ---------- 磁盘管理

目录一. 文件系统二. swap分区管理三. 硬盘配额四. NFS五. 磁盘加密六. 磁盘阵列一. 文件系统       文件系统是操作系统用于明确存储设备(常见的是磁盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,分区被创建后,设置相应的管理系统后才能被挂载--&gt; fdisk ...

2019-01-23 00:35:11 553

原创 Linux基础 ---------- dhcp服务和yum源

目录一. dhcp服务-----客户端动态ip设置二. yum的简单使用1. 配置yum源2. 共享yum源配置一.dhcp服务-----客户端动态ip设置--&gt; vim  /etc/hosts     172.25.254.250 content.example.com--&gt; yum  install dhcp -y    //安装dhcp服务     ...

2019-01-18 22:06:59 548

原创 Linux基础 ---------- 网络配置

目录1.  介绍2. 网络临时设定3. 网络永久设定4. 虚拟机通过真机上网 5. 补充1.  介绍 --&gt; ip地址:      是指互联网协议地址(Internet Protocol Address),是IP Address的缩写;      计算机要实现网络通信,就必须有一个快速定位的网络地址;      ip地址就是计算机在网络中的唯一身份ID,地址...

2019-01-16 20:48:39 163 1

原创 Linux基础 ---------- 虚拟机管理和简单脚本

目录一.  虚拟机管理1. 虚拟机简单命令2. 用脚本安装虚拟机3. 虚拟机快照4. 虚拟机恢复5. 脚本重置虚拟机6. 补充一.  虚拟机管理1. 虚拟机简单命令virt-manager                             //开启虚拟机管理器virsh list                                    ...

2019-01-16 16:55:39 571

原创 Linux基础 ---------- 系统日志管理和时间同步

目录一. 系统日志管理1. rysylog服务2. 日志的远程同步二.  服务器时间同步1. chrony服务2. 管理系统时间##. 补充 date 的使用一. 系统日志管理简述:后台的程序(通常被称为守护进程或者服务进程)处理了你的linux系统的大部分任务,当这些守护进程工作的时候,他们会将任务的详细信息记录进日至文件中,作为他们做过什么的历史信息(包括错...

2019-01-15 00:46:08 356

原创 Linux基础 ---------- sshd的安全和登录 / scp的上传下载和rsync同步

目录一. sshd的安全和登录 1. sshd的安全设定2. 用户登陆审计二. scp的上传下载和rsync同步1.scp的上传,下载2.rsync同步三. 文档的归档和压缩1. 文件的归档(打包)2.  压缩3. 直接归档压缩一. sshd的安全和登录 1. sshd的安全设定设定路径:vim /etc/ssh/sshd_config --...

2019-01-14 20:34:55 155

原创 Linux简单命令使用(六) ---------- 进程查看与服务(基础)

 目录 一. 进程          1. 进程的查看 2.进程的前后台调用二 .   服务的简单介绍 1. 服务的控制命令 2.  网络连接配置 3.  登录其他主机一. 进程  1. 进程的查看      进程的概念:操作系统最核心的概念就是进程。其实进程简单来说就是在操作系统中运行的程序,它是操作系统资源管理的最小单位。但是进程是一个动态的实...

2019-01-11 15:34:41 210

原创 Linux简单命令使用(五) ---------- 文件权限,文件和目录的访问控制(acl 列表)

目录一. 文件的权限1.文件的属性介绍2.  文件读写权限的修改3. 系统默认的权限设定二.  文件的访问控制-----acl 表 1. acl的基本命令 2. suid   冒险位 3. guid  强制位 4.  sticky    粘制位一. 文件的权限1.文件的属性介绍 ls   -l     file //查看文件的属性,也可以用 ll ...

2019-01-05 23:57:56 406

原创 Linux 修改密码(忘记登录密码) ---------- 适用 红帽 ,Ubuntu(kylin)版本

红帽:具体操作:1.  找到linux16 这行删除到ro 修改 ro为rw 添加 rd.break2.  ctrl +x 进入 3.  输入chroot /sysroot/4.  输入passwd5.  touch /.autorelable(不建立文件图形界面无法启动)6.  两次exit退出以上是直接更改 root 用户的密码,其实对于一般的linux系统默认是不支持 ro...

2019-01-04 17:31:54 1366

原创 Linux简单命令使用(四) ---------- 用户信息的修改和用户权力的下放

一. 用户信息的修改目录一. 用户信息的修改二. 用户权力的下放usermod    -l     新用户名    原用户民       //修改用户名称usermod    -u    用户名                             //修改用户uid   --------     -g     -------                         ...

2019-01-04 17:09:46 147

原创 Linux简单命令使用(三)---------- Vim的详细操作和文件的管理输出

一. Vim的详细操作目录一. Vim的详细操作          1. vim的编辑管理 2. vim下的字符管理3. vim分屏4.vim进入插入模式的不同命令二. 管理输入输出三. 用户认证信息的控制 1. vim的编辑管理  vim的临时管理在命令行下: set nu                     //添加行号 set nonu    ...

2019-01-04 16:45:07 318

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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