自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 网络编程套接字(一)

网络编程套接字(一) 一、基础知识 1. 理解源IP地址和目的IP地址 在IP数据包头部中,有两个IP地址,分别叫源IP地址和目的IP地址。这两个很好理解,见名知义。 思考: 我们光有IP地址就可以完成通信了嘛? 想象一下发qq消息的例子, 有了IP地址能够把消息发送到对方的机器上,但是还需要有一...

2020-01-17 17:43:46 1743 0

原创 网络基础(一)

网络基础(一) 一、计算机网络的背景 1.网络的发展:独立模式: 计算机之间相互独立 2.网络互联:多态计算机连载一起,完成数据共享 3.局域网:计算机数量更多了, 通过交换机和路由器连接在一起; 4.广域网WAN: 将远隔千里的计算机都连在一起 二、认识“协议” 1.计算机之间的传输媒...

2020-01-17 14:46:12 5434 0

原创 Linux线程(七)

Linux线程(七) 一、单例模式 1.什么是单例模式? 单例模式是一种经典的“设计模式”,保证类在内存中只能有一个对象 2.什么是设计模式? 设计模式是一套被**反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。**使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。...

2020-01-17 12:52:59 3501 0

原创 Linux线程(六)

Linux线程(六) 一、线程池: 1.线程池: 线程池是一种使用模式。线程过多会带来调度开销,进而影响缓存的局部性和整体性能。而线程池维护着多个线程,等待监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建和销毁线程的代价。线程池内部不仅能够保证内核的充分利用,还能防止过度调度。可线...

2020-01-14 21:28:42 631 0

原创 Linux线程(五)

Linux线程(五) 一、posix信号量 1.相关概念: posix信号量和system V信号量作用一样,都是用于同步操作,达到无冲突访问共享资源的目的。但Posix可以用于线程间同步 2.sem_init函数 int sem_init(sem_t *sem, int pshared, u...

2020-01-14 18:33:36 1945 0

原创 Linux线程(四)

Linux线程(四) 一、线程同步 1.条件变量 当一个线程互斥的访问某个变量时,他可能发现在其他线程改变状态之前,他自己什么都做不了 例如一个线程访问队列时,发现队列为空,它只能等待,直到其他线程讲一个节点添加到队列中。这种情况就要用到条件变量 2.同步概念与竟态条件 同步:在保证数据安全...

2020-01-12 23:11:42 1171 0

原创 Linux线程(三)

Linux线程(三) 一、互斥量 根据前面的分析,得到的结果不是我们想要的原因是–ticket操作不是原子操作,这个共享资源可能并发的切换大其他线程,导致有多个线程同时影响到这个共享资源,所以导致得到的结果不对。 1.解决方法(加锁—>Linux中叫这把锁为互斥量): 代码必须有互斥行...

2020-01-11 21:54:42 3376 0

原创 Linux线程(二)

linux线程(二) 一、线程终止: 1.pthread_exit函数: 只需终止某个线程而不需要终止整个进程的三个方法: 从线程函数return,这种方法对主线程不适合,从main函数的return,相当于调用exit函数 线程可以调用pthread_exit来终止自己 一个线程可以调用pth...

2020-01-11 20:04:50 2960 0

原创 Linux线程(一)

Linux线程(一) 一、线程相关概念? 1.什么是线程: 线程是一个程序内的一个执行路线。更准确的说是线程是“一个进程内的控制序列“ 任意的进程至少有一个执行线程 线程在进程内部执行,本质是在进程地址空间内运行行 在Linux中,在CPU眼中,线程都要比进程更加轻量化 透过进程虚拟地址空间,可...

2020-01-11 16:57:20 1995 0

原创 排序详解

排序详解 一、选择排序 代码: void SelectSort(int* arr,int len) { int begin = 0; int end = len - 1; while(begin < end) { int min_index = begin; ...

2020-01-10 00:43:15 3866 0

原创 Linux中的信号

Linux中的信号 一、信号的概念 1.信号:信号是进程之间异步通知的一种方式,属于软中断。 2.用kill -l来查看系统定义的信号列表: 从图中可以看到每个信号都有一个编号和宏定义的名称,这些宏都可以在signal.h中找到 注意并不是一共有64个信号,自己仔细看,共有62种信号 ...

2020-01-09 18:01:43 2582 0

原创 区分多种类型的输入输出

区分多种类型的输入输出 1.printf函数 这个就不说了 2.sprintf函数 int sprintf(char *str, const char *format, ...); 作用:是把格式化字符串输出到指定字符串,所以参数比printf多了个char * ,那就是目标字符串...

2020-01-08 00:27:58 1497 0

原创 进程间通信(三)

进程间通信(三) 一、System V共享内存 1.什么是共享内存: 共享内存区是最快的IPC形式。一旦这样的内存映射到共享他的进程地址空间,这些进程间进行传输数据不再涉及到内核,换句话说就是进程不再通过执行进入内核的系统调用来传递彼此的数据。 2.共享内存示意图: 3.共享内存的数据结构: ...

2020-01-07 16:14:37 795 0

原创 进程间通信(二)

进程间通信(二) 一、管道的读写规则: 1.当管道没有数据可以读取时: O_NONBLOCK disable :read调用阻塞,即进程暂停执行,一直等到有数据到来位置 O_NONBLOCK enable :read调用返回-1,error为EAGIN 2.当管道满的时候,往管道中写数据: ...

2020-01-07 14:33:02 875 0

原创 进程间通信(一)

进程间通信 一、进程间通信简介 1.进程间是相互独立的,每个进程都有自己的进程虚拟地址空间,二进程通讯需要介子,使得两个进程都能访问的公共资源; 2.进程间通讯的目的: 数据传输:一个进程需要将他的数据发送给另一个进程 资源共享:多个进程间共享同样的资源 通知事件:一个进程需要向另一个或一组进程...

2020-01-06 23:48:35 900 1

原创 文件系统

文件系统 一、FILE 1.因为IO相关函数与系统调用接口对应,并且库函数封装系统调用,所以本质上,访问文件都是通过fd访问的。 所以C库当中的FILE结构体内部,必定封装了fd #include <stdio.h> #include <string.h> int main...

2020-01-06 22:33:20 812 0

原创 Linux中的基础IO(二)

Linux中的基础IO(二) 一、基本接口 int open(const char *pathname, int flags, mode_t mode) const char *pathname:代表要打开或要创建的目标文件。 int flags:可传入多个参数选项,进行或运算组成flags ...

2020-01-06 20:54:25 602 0

原创 Linux中的基础IO(一)

Linux中的基础IO 一、C语言中的文件接口 写在前面 计算机文件是以计算机硬盘为载体存储在计算机上的信息集合,是存储在某种长期储存设备上的一段数据流。在C语言中用一个指针变量指向一个文件,这个指针称为文件指针。通过文件指针就可对它所指的文件进行各种操作,C语言规定该文件指针类型为FILE型。 ...

2020-01-06 17:05:58 459 0

原创 Linux下编写UDP/TCP版本的服务器和客户端的流程

Linux下编写UDP/TCP版本的服务器和客户端的流程 一:UDP和TCP的区别 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,通常情况下是无差错,不丢失,不重复,且按序到达的,(注意...

2020-01-06 16:09:49 571 0

原创 C++中多态(二)

C++中多态(二) 一、多态的虚函数相关概念: 1.虚函数表(和继承的虚基表要注意区分) // 这里常考一道笔试题:sizeof(Base)是多少? class Base { public: virtual void Func1() { cout << "Func1()&qu...

2020-01-06 15:32:50 533 0

原创 C++中的多态(一)

C++中的多态(一) 一、多态的概念 1.多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。(即同一事物在不同场景下的不同形态) 2.多态的定义和实现条件: a. 必须通过基类的指针或者引用调用虚函数 b. 被调用的函数必须是虚函数,且派生类必须...

2020-01-05 22:46:40 350 0

原创 C++中的继承(三)

C++中的继承(三) 一、复杂菱形继承和菱形虚拟继承 1.单继承:一个子类只有一个直接父类时称这种继承关系为单继承 2.多继承:一个子类有两个或两个以上的直接父类时,称这种继承关系为多继承。 3.菱形继承:为多继承的一种特殊情况 二、菱形继承的问题: 1.先看一段代码 class Perso...

2020-01-05 22:18:56 502 0

原创 进程间程序替换和minishell

进程间程序替换和minishell 一、进程间程序替换的原理: 1.用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),这样就达不到创建进程的目的。 2.子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程...

2020-01-04 00:48:54 630 0

原创 贪吃蛇游戏(二)

贪吃蛇游戏(二) 转自大佬(…) #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> #include <stdlib.h> #include<windows.h&g...

2020-01-03 12:32:31 920 0

原创 关于如何升级gcc版本及相关的标准库问题

关于如何升级gcc版本及相关的标准库问题 第一大步:先升级gcc: (这里只是举个例子,你们操作时把例子中gcc版本换成你们自己下载的gcc版本) 先找到自己想要的gcc版本,可以在下面链接中找: gcc版本库 获取安装包并解压: wget http://ftp.gnu.org/gnu/gcc...

2020-01-03 00:17:27 1117 0

原创 C++中的继承(二)

C++中的继承(二) 一、派生类的默认成员函数 前面已经总结过类中的默认的成员函数: 类中的默认的成员函数 所以,既然是默认,就代表如果我们不显示定义,编译器就会默认生成,那么在继承体系中,派生类的默认成员函数又是什么yang的呢 派生类的构造函数必须调用基类的构造函数初始化基类的那一部分成员。...

2020-01-02 15:44:15 858 0

原创 C++中的继承(一)

C++中的继承(一) 一.继承的概念及定义 1.继承的概念: 继承是面向对象程序设计中使代码复用的重要手段,它允许程序在保持原有类的结构的基础上进行扩展,增加功能,这样差生的类就叫派生类,也叫子类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,...

2020-01-02 15:07:49 803 0

原创 C++版二叉树非递归遍历

C++版二叉树非递归遍历 1.二叉树前序遍历 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; ...

2020-01-02 00:32:56 665 0

原创 C++中各种智能指针的实现及弊端(四)

C++中各种智能指针的实现及弊端(四) 一、std::shared_ptr std::shared_ptr文档 int main() { // shared_ptr通过引用计数支持智能指针对象的拷贝 shared_ptr<Date> sp(new Date); shared_ptr&l...

2020-01-01 23:52:14 438 0

原创 C++中各种智能指针的实现及弊端(五)

C++中各种智能指针的实现及弊端(五) 一、std::shared_ptr的循环引用

2020-01-01 23:51:37 410 0

原创 C++中各种智能指针的实现及弊端(三)

C++中各种智能指针的实现及弊端(三) 一: std::unique_ptr C++11中开始提供更靠谱的unique_ptr std::unique_ptr文档 int main() { unique_ptr<Date> up(new Date); // unique_ptr的设计思...

2020-01-01 23:35:13 646 0

原创 C++中各种智能指针的实现及弊端(二)

C++中各种智能指针的实现及弊端(二) 一:实现auto_ptr C ++98版本的库中提供了auto_ptr的智能指针: auto_ptr文档 // C++库中的智能指针都定义在memory这个头文件中 #include <memory> class Date { public: D...

2020-01-01 23:25:34 618 0

原创 C++中各种智能指针的实现及弊端(一)

C++中各种智能指针的实现及弊端(一) 一、为什么需要智能指针? 首先看一段代码: #include <vector> void _MergeSort(int* a, int left, int right, int* tmp) { if (left >= right) retu...

2020-01-01 22:50:03 628 0

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