自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux下详细基本指令

1.ls指令语法:ls[选项][目录或文件]功能:对于目录,该命令列出该目录下的所有子目录与文件。对于文件,将列出文件名以及其他信息。常用选项:-a,列出目录下的所有文件。包括以.开头的隐含文件-d,将目录像文件一样显示,而不是显示其下的文件。如:ls -d指定目录-i,输出文件的i节点的索引信息。如ls -ai指定文件。-k,以k字节的形式表示文件的大小。ls -alk指定文件。...

2019-09-30 16:43:17 553

原创 二叉树的镜像

问题描述:输入一棵树,输出对应的镜像二叉树递归实现class Solution {public: void Mirror(TreeNode *pRoot) { if(pRoot==NULL) return; TreeNode *temp=pRoot->left; pRoot->left=pRoot-...

2019-09-08 15:43:23 183

原创 单例模式--懒汉、饿汉

1.单例模式是设计模式的一种:一个对象只能被实例化一次2.单例模式有饿汉和懒汉两种实现方式:饿汉:程序初始化时进行实例化,因为资源已经全部加载,因此运行速度比较快,流畅。缺点是初始化的时候耗时比较长。懒汉:程序资源使用的时候再进行加载,对象使用的时候再实例化,初始化加载比较快,但是运行流畅度不够。饿汉方式实现单例模式template<typename T>class ...

2019-08-31 14:58:09 176

原创 链表的逆置

方法:使用p和q两个指针配合,使得两个节点的指向反向。再循环p=q;q=r;r=q->next;代码如下:class Solution {public: ListNode* ReverseList(ListNode* pHead) { if(pHead==NULL||pHead->next==NULL) return ...

2019-08-29 15:50:17 176

原创 智能指针

1.智能指针的使用及原理1.1RAIIRAII是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源。借此,我们实际上把管理一份资源的责任托管给了一个对象。这样做有两大好处:不需要显式地释放资源采用这种方式,对象所需的资源在其生命周期内始终保持有...

2019-08-29 11:09:03 154

原创 TCP三次握手和四次挥手过程及常见面试题

1.三次握手服务器端状态转换:[CLOSED->LISTEN]服务端调用listen后进入LISTEN状态,等待客户端连接.[LISTEN->SYN_RCVD]一旦监听到连接请求(同步报文段),就将改连接放入内核等待队列中,并向客户端发送SYN确认报文.[SYN_RCVD->ESTABLISHED]服务端一旦接收到客户端的确认报文,就进入ESTABLISHED状态,可以进行...

2019-08-24 13:04:05 233

原创 HTTP协议&实现一个最简单的HTTP服务器

1.HTTP协议(超文本传输协议)是一个应用层的协议。2.认识URL平时我们所说的网址就是URLurlencode和urldecode像/?:等这样的字符,已经被url当作特殊意义理解了。因此这些字符不能随便出现。比如,某个参数中需要带有这写特殊字符,就必须先对特殊字符进行转义。转移的规则如下:将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上...

2019-08-24 09:58:10 777

原创 搜索二叉树(插入、删除)

1.1搜索二叉树的概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有一下性质的树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值。若它的右子树不为空,则右子树上所有节点的值都大于根节点的值。它的左右子树也分别为二叉搜索树。1.2二叉搜索树操作1. 二叉搜索树的查找若根节点不为空:如果根节点key==查找key,返回true;如果根节点key>查找k...

2019-08-23 21:50:54 183

原创 C++set&multiset

1.set1.1set的介绍set是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除他们。在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行排序。set容器通过key访问单个元素的速度通常比...

2019-08-22 11:03:44 115

原创 C++map&multimap

1.map的介绍map是关联容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。在map中,键值key通常用于排序和唯一的标识元素,而值value中存储与此键值key关联的内容。键值key和值value的类型可能不同,并且在map的内部,key与value通过成员类型value_type绑定在一起,为其取别名为pair:typedef pair value...

2019-08-21 21:06:09 303

原创 类的六个默认成员函数

1.构造函数1.1概念:构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有一个合适的初始值,并且在对象的生命周期内只调用一次。1.2特性构造函数是特殊的成员函数,需要注意的是,构造函数的名称虽然叫构造,但是需要注意的是构造函数的主要任务并不是开空间创建对象,而是初始化对象。其特征如下:函数名与类名相同无返回值对象实例化时编译器自动调...

2019-08-20 16:46:26 131

原创 C++多态

1.多态的概念多态的概念:通俗的来说,多态就是多种形态,具体就是去完成某个行为,当不同的对象去完成时会产生不同的状态。2.多态的定义及构成2.1多态的构成条件多态是在不同关系的类对象,去调用同一函数,产生了不同的行为。在继承中构成多态需要两个条件:必须通过基类的指针或者引用调用虚函数。被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写2.2虚函数虚函数:即被virt...

2019-08-19 10:04:05 94

原创 C++异常

1.C++异常概念异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。throw:当问题出现时,程序会抛出一个异常。这是通过使用throw关机字来完成的。catch:在你想要处理问题的地方,通过异常处理程序捕获异常。catch关键字用于捕获异常,可以有多个catch进行捕获。try:try块中的代码标识将被激活的特定异常,它...

2019-08-18 10:57:13 93

原创 IP协议

基本概念主机:配有IP地址,但是不进行路由控制的设备;路由器:即配有IP地址,又能进行路由控制;节点:主机与路由器的统称;协议头格式4位版本号:指定IP协议的版本,对于IPv4来说,就是4;4位头部长度:IP头部的长度是多少个32bit,也就是length*4的字节数,4bit表示最大的数是15,因此IP头部最大长度是60字节;8位服务类型:3位优先权字段,4位TOS字段,和1位...

2019-08-16 17:15:03 192

原创 C/C++内存管理

1.C/C++内存分布说明栈又叫堆栈,非静态局部变量/函数参数/返回值等,栈是向下增长的。内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享内存,做进程间通信。堆用于程序运行时动态内存分配,堆是可以向上增长的。数据段—存储全局数据和静态数据。代码段—可执行的代码/只读常量。2.C语言中动态内存管理方式2.1 malloc/calloc/...

2019-08-05 22:56:52 110

原创 C++中的继承

1.继承的概念和定义1.1继承的概念继承机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有特性的基础上进行扩展,增加功能,这样产生新的类,称为派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。之前我们接触的复用都是函数复用,继承是类设计层次的复用。class Person{public:void Print(){ cout &l...

2019-08-04 15:15:07 145

原创 模板

1.泛型编程泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。模板分为函数模板和类模板2.函数模板2.1函数模板概念函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。2.2函数模板格式template<typename T1,typenameT2,…,typename Tn>返回值类...

2019-07-27 22:18:51 149

原创 Linux进程信号(信号概念/信号产生/信号处理/可重入函数等)

信号概念信号是进程之间事件异步互通知的一种方式,属于软中断。用kill-l可以查看系统定义的信号列表每个信号都有一个编号和一个宏定义名称,这些宏定义可以在signal.h中找到。编号34以上的都是实时信号。信号常见处理方式可选的处理动作有以下三种:1.忽略此信号2.执行该信号的默认处理动作3.提供一个信号处理函数,要求内核在处理该信号时切换到用户态执行这个处理函数,这种方式称为捕...

2019-07-27 20:13:20 243

原创 进程间通信(管道,内存共享,信号量)

进程间通信基本介绍:操作系统提供给用户的几种进程间通信方式进程间通信是干什么的:(进程间数据共享,数据传输,进程控制,时间通知)也正因为有不同的应用场景(不同的需求),因此操作系统也提供了多种不同的进程间通信方式。操作系统为什么要给用户提供进程间通信方式:进程的独立性(无法直接沟通)—提供一个公共的媒介。进程间通信目的数据传输:一个进程需要将它的数据发送给另外一个进程。资源共享:多个进...

2019-07-25 15:35:39 185

原创 基础IO(熟悉open/read/write/close,纵向对比fd与FILE结构体)

一、熟悉open/read/write/close函数1.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,mo...

2019-07-23 17:02:37 264

原创 进程创建,等待,终止

进程创建fork函数在Linux中fork是很重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。#include<unistd.h>pid_t fork(void);返回值:子进程中返回0,父进程返回子进程id,出错返回-1进程调用fork,当控制转移到内核中的fork代码后,内核做:(1)分配新的内存块和内核数据结构给子进程(2)将父进程...

2019-07-18 15:01:20 101

原创 类和对象(1)

1.类和对象的初步认知C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。c++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。2.类的引入C语言中,结构体只能定义变量,在c++中,结构体内不仅可以定义变量,也可以定义函数。...

2019-07-17 15:21:19 90

原创 使用代码模拟实现僵尸进程,孤儿进程的场景

1.僵尸进程僵死状态是一个比较特殊的状态。当进程退出并且父进程没有读取到子进程退出的返回码时就会产生僵尸进程。僵尸进程会以终止状态保持在进程表中,并且会一直在等待父进程读取退出状态代码。所以,只要子进程退出,父进程还在运行,但父进程没有读取子进程状态,子进程进入僵死状态。列举一个创建维持30秒的僵死进程例子:#include<stdio.h>#include<stdl...

2019-07-16 16:10:45 194

原创 五种IO模型以及同步和异步的区别

IO操作分了两个过程:等待+数据拷贝1.阻塞IO:在内核将数据准备号之前,系统调用会一直等待。所以的套接字,默认都是阻塞方式。阻塞IO是最常见的IO模型。2.非阻塞IO:如果内核还未将数据准备好,系统调用仍然会直接返回,并且返回WOULDBLOCK错误码。非阻塞IO往往需要程序员循环的方式反复尝试读写文件描述符,这个过程称为轮询。这对CPU来说是较大的浪费,一般只有特定场景下才使用。...

2019-07-15 13:45:27 1711

原创 Linux下实现进度条程序,自主实现彩色进度条(代码)

用C语言实现彩色进度条#include<stdio.h>#include<unistd.h>#include<string.h>int main(){ int i = 0; char bar [101]; const char *lable = "|/-\\"; for(i=0;i<=100;i++) ...

2019-07-14 12:39:51 120

原创 Linux基本指令(部分)(附图)

1.将之前所创建的目录和文件全部清理掉:rm rm[-f -i -r -v][dirname/dir] 适用对象:所有使用者2.在家目录下创建~/workspace/cmd目录以及 ~/workspace/tmp/test目录家目录就是在/home里面的目录。3.进入~/workspace/cmd目录,创建一个空文件my.txt4.使用重定向>>与echo命令向my.tx...

2019-07-14 12:16:06 213

原创 C++入门知识。如:函数重载、缺省参数、指针引用等

一.什么是C++C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(objectoriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向...

2019-07-13 21:13:41 238

原创 Linux思维导图(xmind)

2019-07-13 20:15:59 1109 1

空空如也

空空如也

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

TA关注的人

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