自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux总结篇之——I / O复用(select poll epoll)

一、select 函数1. 函数功能分析2. 函数参数详解3. 函数用到的结构体fd_set 和 fd_array 和timeval结构4. 操作 fd_set类型结构体的接口5.select函数的执行过程6.select函数的优缺点:二、poll函数1. 函数参数详解一、select 函数1. 函数功能分析 系统调用 selec...

2018-07-27 17:27:42 403

原创 浅谈几种常见排序

插入排序之——直接插入排序: void InsertSort(int *a, int n){ assert(a != NULL && n &a

2018-05-28 00:21:10 280

原创 C++智能指针——探究六个常见的智能指针的使用及原理

一、智能指针1.什么是智能指针?——是一个类,用来存储指针(指向动态分配对象的指针)。2.智能指针满足的条件:1.具有RAII思想2.能够像指针一样(运算符重载,解引用,指向对象成员)3.对资源进行封装和管理RAII思想(资源分配及初始化)1.定义一个类来封装资源的分配与释放,2.构造函数中完成资源的分配及初始化;3.析构函数中完成资源的清理,可以保证资源的正确...

2018-05-20 17:21:18 19457 7

原创 进程间通信 (二)——信号量

一、什么是信号量?信号量的本质是什么? ——本质是一个数据操作锁,他本身不具有数据交换的功能,而是通过控制其他的通信资源(文件、外部设备)来实现进程间通信,它本身只是一种外部资源的标识。信号量在此过程中负责操作的互斥、同步等功能。个人理解: 信号量就是一个计数器,准确的说,是一个具有原子性的计数器。当使用资源时,计数器减一,表示外界的可用资源减少一个;当释放资源时,计数器加一,表示使用...

2018-05-12 21:53:39 2013

原创 虚函数&&虚表以及虚表在几种继承间的情况

一、虚函数(1)定义虚函数:类的成员函数前加virtual——这个成员函数称为虚函数。(2)虚函数的重写1)当在子类中定义了一个与父类-完全相同的(函数名,参数,返回值都相同)虚函数时, 则称子类的这个函数重写(也称覆盖了)父类的这个虚函数。 2)-协变除外(协变函数的返回值可以不同,依然构成了重写)(协变:子类函数的返回值是子类指针,父类函数的返回值是父类指针)...

2018-05-05 01:42:15 727

原创 (进程间通信一)——消息队列

一、消息队列——想知道如何通过消息队列实现进程间通信,我们必须得了解三个概念。1. 消息队列 2. 消息缓冲区 3. 通道 我们来参照这个图分析一下:什么是消息对列? ——就是一个数据结构,是一个队列。主要是用来实现消息传递。什么是消息缓存区? ——如上图,那些绿块块分别是一个一个的消息缓存区。用来存放通道号,和你写入通道中的数据。struct msg...

2018-04-29 16:04:37 2124

原创 Linux三剑客之——awk

一、对awk的基本认知awk的基本功能:在文件/字符串中,基于指定规则浏览或者抽取信息。awk抽取信息后,才可进行其他文本操作完整的awk脚本通常用来格式化文本内容awk以文件的 “行” 为处理单位,每接收一行,来执行命令,处理文本简单来说,awk就是把文件逐行读入,以空格为默认分隔符,将每行切片,切开的部分再做各种分析处理二、了解awk原理调用awk时,选用happy.c...

2019-07-09 18:02:22 296 1

原创 内存管理面试题

面试题一:设置一个不能被继承的类思路:子类继承父类的时候,子类的构造函数会自动调用父类的构造函数;子类的析构函数会自动调用父类的析构函数。所以只要将父类的构造函数和析构函数设置成私有的即可。(一旦设置成私有的,子类继承父类时,就会去调用父类函数和析构函数,从而导致编译器就会报错)上述方法也存在一定的问题,将父类的构造函数和系统函数设置成私有的,如何实例化对象呢,又如何对不用的对象进行释放...

2018-11-21 21:25:03 1222 1

原创 类和对象

一、类与对象的初步认知1. 什么是类?类是一个抽象的概念,是一个自定义的数据类型。2. 类和对象的区别?对象:1. 是一个类的一个实例,是真实的个体。2. 是...

2018-11-18 18:07:37 242

原创 死锁

一、前景知识了解 二、死锁(死亡拥抱)1. 什么是死锁?2. 死锁产生的原因:3. 死锁产生的条件:(4个)①互斥条件②不可剥夺条件③占有且申请条件④环路等待条件4. 死锁的预防:①破坏互斥条件②破坏不可剥夺条件:③破坏占有且申请条件④破坏环路等待条件5. 死锁的避免① 1. 系统安全状态②银行家算法一、前景知识了解(进...

2018-08-03 19:19:38 316

原创 C语言知识点知识点清单

00.模拟实现库函数

2018-08-01 08:09:44 269

原创 模拟库函数 :strcmp、strncmp、memcpy、memove、strcpy、strncpy、strcat、strstr、strrstr

1. my_strcmp2. my_strncmp3. my_memcpy4. my_memmove(对my_memcpy的优化)5. my_strcpy6. my_strncpy7. my_strcat8. my_strstr9. my_strrstr1. my_strcmp 比较两个字符串,对两个字符串中的字符进行逐个比较,直到发现不同。...

2018-07-31 22:08:40 316

原创 linux总结篇之——tcp

① TCP的优缺点:1. 优点:2. 缺点② TCP协议报头信息:③ 报头内容详解:④ TCP的可靠性:⑤ TCP的性能:① TCP的优缺点:1. 优点:1. TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议(因为面向连接,所以是一对一的,不适用于广播和多播。发送方每发送的一个包带有序号,接收方都会进行反馈。如果一定时间内(...

2018-07-30 12:29:16 367 1

原创 不能被声明为虚函数的几个函数以及为何析构函数最好被声明为虚函数

总的来说,不能被定义为虚函数的函数有五种:构造函数、普通函数、友元函数、内联函数、静态函数1.构造函数什么是构造函数? 在C++编译阶段,系统自动调用的一个进行初始化的函数。为什么构造函数不能定义为虚函数? 答:构造函数是先创建对于一个构造函数,还没有构造成功,没有虚函数表,自然也就无法实现对它的调用...

2018-07-30 09:01:11 261

原创 信号:signal() 、 pause() 、 alarm()

一、信号1. 什么是信号?2. 哪些情况会引发信号?3.系统到底有哪些信号呢?4.信号处理的三种方式5.可靠信号&&不可靠信号6.实时信号&&非实时信号7.后台进程&&前台进程二、进程间的各个信号详解

2018-07-24 17:17:10 1162

原创 数据结构算法目录

00. 单链表01. 链表面试题(一)02. 链表面试题(二)

2018-05-23 00:34:14 208

原创 Linux 知识点总结目录

00. 同步与互斥01. 信号量02. 消息队列

2018-05-23 00:28:51 1424 1

原创 C++知识点总结目录

01. C++智能指针02. 虚函数&&虚表03. new / delete

2018-05-22 18:32:20 233

原创 链表面试题(二)

11.判断链表是否带环?若带环,求环长?求环的入口点?//1.判断是否带环LinkList* HasCircle(LinkList*node){ LinkList*fast = node; LinkList*slow = node; while (fast->_next != NULL); { slow = slow->_n...

2018-05-18 21:32:56 147

原创 链表面试题(一)

1.从尾到头打印单链表思路导图: 代码实现:void LinkListPrint(LinkList*head){ assert(head != NULL); LinkList*end = NULL; while (end != head) { LinkList*cur = head; while (cur->...

2018-05-15 01:29:25 232 1

原创 进程间的同步与互斥

同步 互斥

2018-05-13 10:04:23 3198

原创 new / delete,new[ ] / delete[ ],operator new /operator delete,malloc / free 之间的区别和联系

1. C语言和C++中动态内存分配的区别 区别 C语言 C++ 申请内存 malloc new 和new[] 释放空间 free delete 和delete[] 作用域 内置类型 所有类型new / delete 是两个操作符,malloc / free是两个系统函数2. new / delete 是...

2018-04-29 22:05:05 342

原创 求两个数的 最大公约数 和最小公倍数

最大公约数思路:假设有两个数a,b,求a,b的最大公约数令a%b,得到的结果用tmp记录再将b的值给a,tmp的值给b此时a的值变成了b,b的值变成了tmp,循环进行a%b直至a%b的结果为0时,循环结束,此时b的值即为最小公约数举例分析: a=14,b=8,求a,b的最大公约数 令:14%8=6 ; 8%6=2; 6%2=0;此时b=2 所以:14 ,8 的最大公约...

2018-04-28 18:25:31 3312 1

原创 冒泡排序 以及 k 法优化

冒泡一般优化:此种方法,优化在:循环一次,找到一个最大的放在末尾,下次再找,它的区间就会减1(由第一个倒数第二个) 以此类推,优化在减少了待找区间的大小(即内层循环的趟数)代码分析:#include<stdio.h>#include<stdlib.h>int a[] = { 1,5,4,2,6,7

2018-04-27 21:35:47 376

原创 左旋字符串的三种方法

实现字符串的左旋: 注:有效次数为:总次数% N(如上图所示,假设对字符串左旋6次和左旋2次,得到的结果是一样的)字符串左旋之—— 移首补尾法思路:左旋一次的方法: 将第一个字符存放起来,然后将第二个至最后一个字符依次向前挪一位,再将第一个字符放在末尾。先写一个左旋一次的函数,然后需要左旋几次,就调用几次这个函数。#include<stdio.h...

2018-04-26 23:00:14 974 1

原创 浅谈文件描述符 以及 文件读取 / 创建过程

文件描述符(fd)——file descriptor (进程使用它来标识文件)fd 的有效范围是 0~OPEN_MAX(一般64个文件)1.什么是文件描述符?每个进程都有一个文件描述符表一个系统只有一张文件表一个系统只有一张V节点表如上图所示:文件描述符表是一个指针数组,里面存放的全是指向文件描述符的指针,而文件描述符实际上就是这些数组元素的下标。(非负...

2018-04-25 22:12:29 1491 1

原创 如何判断大小端(模拟实现)

如何判断你的系统是大端模式还是小端模式呢?首先,得知道什么是大小端 大端模式:数据的高位存放在内存的低地址中,数据的低位存放在内存的高地址中。 小端模式:数据的高位存放在内存的高地址中,数据的低位存放在内存的低地址中。代码实现:(法1)#include<stdio.h>#include<stdlib.h>int main(){ int i...

2018-04-25 19:15:03 537

原创 如何 用C语言模拟实现c++的继承和多态??

模拟实现继承:首先,得知道什么是继承? ——继承就是:子类可以调用父类的成员变量和成员函数。那么如何用C语言模拟实现呢?c语言没有类,只有结构体,结构体中只有成员变量,所以在结构体中定义成员变量,在结构体外定义函数。用两个结构体实现,结构体A 相当于 父类,结构体 B相当于 子类。——在B中定义一个A的结构体变量。(即可通过这个结构体变量访问结构体的成员变量)——以此来实现对变量...

2018-04-25 17:47:14 271

原创 类对象存储模型——类的内存对齐&&空类的大小(面试题)

类实例化对象类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际空间来存储它。一个类可以实例化出多个对象,实例化出的对象有实际的物理空间。做个比方:类实例化出对象,好比拿着设计图来设计房子。类就是设计图,并没有实体建筑,而对象才是设计出来的成品,占用物理空间。类对象存储模型一个类可以实例化多个对象每个对象的大小为类中所有成员变量大小之和。(成员函...

2018-04-23 01:37:11 415

原创 在杨氏矩阵中查找数据

杨氏矩阵首先,我们了解一下,什么是杨氏矩阵? 题目:请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思路:以右上角的那个数为基准,如果比它大,行++;如果比它小,列- -//杨氏矩阵——查找数据#pragma warning(disable:4996)//屏蔽scanf出现的错误#include<stdlib.h>#inclu...

2018-04-23 00:09:24 170

原创 调整数组,使得奇数都位于偶数的前面(奇数都在左边,偶数都在右边)

调整数组,使得奇数都位于偶数的前面(奇数都在左边,偶数都在右边)思路: 1.定义两个指针,begin指向数组的头,end指向数组的尾 2.判断情况: 1)begin指向的是偶数,end指向的是奇数——a[begin]和a[end]交换 2)begin指向奇数,直接begin++ 3)end指向偶数,直...

2018-04-22 11:49:02 828

原创 引用

引用 :引用的概念及用法: 引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。定义的格式:类型&引用变量名引用的特点:1.一个变量可以取多个别名2.引用必须初始化3.引用只能在初始化的时候引用一次,不能改变为再引用其他的变量。代码分析:void Test1(){int a = 1; int& b = a;a = 2;b ...

2018-04-15 18:55:10 160

原创 注释转换小程序

convert.h#ifndef _CONVERT_COMMENT_H_#define _CONVER_COMMENT_H_#include <stdio.h>#include <windows.h>#define INPUTFILE "input.c"//输入#define OUTPUTFILE "output.c"//输出enum { CST...

2018-04-15 17:10:52 171

原创 C++——继承(单继承、多继承、菱形继承)&&虚继承&&虚基类

首先,我们得知道,面向对象的三大语言:封装 继承 多态今天我们主要谈谈继承1.什么是继承——子类(派生类)可以访问和使用父类(基类)的成员比如:有两个类,A和B,我们在定义时,使得B 可以访问 A 的成员,我们叫做 B继承了A。 B为子类,(派生类);A为父类(基类)2.为什么要用继承呢 ?代码分析:#include<iostream>u...

2018-04-15 16:27:24 340

原创 为什么C语言不支持重载,C++支持重载???

首先,我们得知道,什么是函数的重载?函数的重载: 在同一个作用域类,一组函数的函数名相同,参数列表不同(个数不同/类型不同),返回值可同可不同。那么问题来了,为什么C语言不支持重载,C++支持重载呢? 我们先来看看,编译的整个过程: 实例分析: 比如一个函数声明如下:void function(float x,float y);在C语言中,编译器进行编译之后,在库...

2018-04-15 10:15:21 2370 2

原创 类和对象_Date(日期类)

date.h#pragma once#include<assert.h>#include<iostream>using namespace std;class Date{ public: Date(int year= 1900, int month=1, int day=1) //构造函数的初始化,可以调用私有变量 { ...

2018-04-12 00:55:15 1031

原创 实现两种方式的引用计数写时拷贝。——新创建引用计数 和 引用计数在头上

#define _CRT_SECURE_NO_WARNINGS -1//调用sacnf和strcpy会出现报错include<iostream>#include<stdlib.h>using namespace std;新创建引用计数 代码实现:class String{public: String(char* str = ...

2018-04-12 00:48:37 307 1

原创 析构函数&&构造函数 以及 拷贝构造&&赋值运算符的重载

析构函数&&构造函数:1.析构函数:当一个生命周期结束时,C++系统会默认调用的一个成员函数。 ——将对象定义在其中,保证在结束时对象被清理。2.构造函数:在创建变量时,C++系统默认调用的一个成员函数。 ——保证对象一定被初始化*※既然系统会默认调用构造函数,那么为什么还要自己写呢?——拷贝时,如果是简单的拷贝值,即浅拷贝时,可以不写。但如果是深度...

2018-04-01 16:35:10 224

原创 linux 进程关系

单道程序设计:一个 CPU同一时刻只能运行一个程序,但是感觉是多个程序 ——并发处理(宏观上多个,微观上实际是一个) 多道程序运行(分时系统) ——并行处理:真的是多个程序同时运行硬件中断技术的出现,进而软件上有了分时系统,时间片轮转。程序:为了执行特定任务的一系列指令的有序集合。进程:从用户角度看:进程是程序的一次动态执行过程从操作系统来看:1.进程是操作系...

2018-03-29 23:43:47 165

原创 三子棋小程序

Chess.h#pragma once#ifndef __GAME_H__ #define __GAME_H__ #define ROWS 3 #define COLS 3 #include<stdio.h> #include<stdlib.h> #include <time.h>#include<string.h...

2018-03-05 19:47:42 172 1

空空如也

空空如也

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

TA关注的人

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