自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux】socket套接字编程----TCP

TCPsocket1. 创建套接字2. 为套接字绑定地址信息3. 服务端开始监听backlog参数4. 获取新建socket的操作句柄5. 通过新获取的套接字操作句柄(accept返回的描述符)与指定客户端进行通信6. 关闭套接字7. 客户端向服务端发送连接请求1. 创建套接字int socket(int domain, int type, int protocol);domain:地址域...

2020-03-19 15:15:08 370

原创 【Linux】socket套接字编程----UDP

socket套接字socket是一套网络编程接口,类似于中间件;上层用户可以通过这些接口简单的完成网络通信传输,而不需要过于关心内部的实现过程。套接字编程讲的就是使用socket的接口实现网络通信socket编程:TCP/UDP传输层有两个协议:TCP/UDP;这两个协议特性各有不同,因此实现流程也稍有差别;因此需要分开来讲UDP:用户数据报协议:无连接,不可靠,面向数据报;应用场景:...

2020-03-17 16:50:16 229

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

单例模式普通的非单例模式饿汉懒汉单例模式是设计模式的一种,一个对象/资源只能被初始化加载一次(比如游戏中的图片资源)实现方式:饿汉和懒汉普通的非单例模式#include <iostream>#include <cstdio>class singleton{ public: int _data; int *get_instance(){...

2020-03-16 16:02:46 167

原创 【Linux】线程----线程池

线程池为什么使用线程池线程池原理思路代码实现注意事项为什么使用线程池线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。线程池原理在服务器启动的时候,就创建大量线程 + 创建一个线程安全的队列作为线程池,任务来了,就将任...

2020-03-15 20:36:00 117

原创 【Linux】线程----POSIX信号量

POSIX信号量作用本质实现同步实现互斥信号量的应用信号量和条件变量的区别信号量和互斥锁的区别作用实现进程、线程间的同步与互斥本质一个计数器 + pcb等待队列实现同步计数器对资源数量进行计数,当线程想要获取资源的时候,先访问信号量,判断是否能够获取(信号量通过自身的计数完成判断)若计数<=0则直接阻塞线程,计数-1;其它线程生产资源之后,计数+1,唤醒等待队列上的...

2020-03-14 21:51:25 124

原创 【Linux】线程----线程安全

线程安全概念实现方法互斥互斥锁互斥锁原理互斥锁操作流程:举例死锁死锁产生的必要条件:预防死锁避免死锁同步条件变量条件变量提供的接口功能例子问题分析注意概念多个执行流对临界资源进行争抢访问,而不会造成数据二义性或者逻辑混乱,称这段争抢访问的过程是线程安全的。实现方法线程安全的实现:同步:通过条件判断,实现对临界资源访问的时序合理性互斥:通过唯一访问,实现对临界资源访问的安全性互...

2020-03-13 19:35:21 207

原创 【Linux】线程----线程控制

线程控制线程创建代码示例线程中的各种id线程终止主动退出被动退出线程等待代码示例:线程分离代码示例实际上Linux操作系统并没有给用户提供创建一个线程的系统调用接口,用户无法直接创建线程,但是大佬们封装了一套线程库,通过库函数可以实现线程控制的各种操作。线程创建我们创建线程就是在用户态创建线程,可以实现在内核态创建一个轻量级进程实现调度;int pthread_create(pth...

2020-03-12 21:33:56 267

原创 【Linux】线程----线程概念

线程线程概念进程和线程线程之间的独有与共享多线程和多进程的优缺点优点:缺点:应用场景:多线程、多进程的共同优势:线程概念在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”一切进程至少都有一个执行线程线程在进程内部运行,本质是在进程地址空间内运行在Linux系统中,在CPU眼中,看到的PCB都要比传统的进程更加轻量化...

2020-03-11 22:20:21 88

原创 【网络】TCP协议

TCP协议TCP协议段格式源/目的端口号:表示数据是从哪个进程来,到哪个进程去;32位序号/32位确认号:后面详细讲;4位TCP报头长度:表示该TCP头部有多少个32位bit(有多少个4字节);所以TCP头部最大长度是15 * 4 = 606位标志位:URG:紧急指针是否有效ACK:确认号是否有效PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走RST:对方要求重新建立连...

2019-11-09 21:03:23 397

原创 【网络】UDP协议

UDP协议传输层最重要的协议为TCP协议和UDP协议。这两者走了两个极端,TCP协议复杂,但传输可靠;UDP协议简单,但传输不可靠。其它的各个传输层协议在某种程度上都是这两个协议的折中。我们先来看看比较简单的UDP协议。UDP协议简介UDP(User Datagram Protocol)传输与IP传输非常类似。你可以将UDP协议看作IP协议暴露在传输层的一个接口。UDP协议同样以数据包(da...

2019-11-07 21:51:54 187

原创 【网络】IP协议

IP协议网络层(network layer)是实现互联网的最重要的一层。正是在网络层面上,各个局域网根据IP协议相互连接,最终构成覆盖全球的Internet。更高层的协议,无论是TCP还是UDP,必须通过网络层的IP数据包(datagram)来传递信息。协议头格式(IPv4)一个IP包分为头部(header)和数据(payload/data)两部分。头部是为了实现IP通信必须的附加信息,数据...

2019-11-05 22:35:07 255

原创 TCP三次握手与四次挥手

面试常见场景面试官:请介绍下三次握手你:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报文之后,会应答一个报文给客户端,第三次握手就是客户端收到报文后再给服务器发送一个报文,三次握手就成功了。面试官:然后呢?你:这就是三次握手的过程,很简单的。面试官:好的同学,回去等通知吧(GG。。)那么问题来了,什么是三次握手和四次挥手呢?面试时又该如何回答呢?三次握手三...

2019-11-04 22:52:27 151

原创 C++volatile关键字

volatile关键字不加volatile关键字#include <iostream>#include <sys/types.h>#include <signal.h>bool quit = false;void handler(int signo){ switch(signo) { case 2: quit = t...

2019-10-27 11:13:35 183

原创 【Linux】进程信号

信号生活中的信号程序员小明明天晚上要去和女朋友看电影,但女朋友没有说具体时间,只说了到时候打电话通知小明。在小明等待女朋友电话的过程中,虽然期间女朋友的电话还没来,但是小明内心清楚当电话来了后他要做什么(看电影)。也就是小明能“识别电话”。当电话响起时,正在改bug的小明突然觉得女朋友没有那么重要了,于是他决定再改半小时。在这半小时内,小明没有去看电影,但他知道女朋友在等他,也就是说看电影...

2019-10-25 17:21:42 339

原创 【Linux】进程间通信----共享内存

system V共享内存共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据父进程fork子进程或者exec执行一个新的程序。在子进程和新程序里面不会继承父进程之前使用的共享存储共享内存不提供同步与互斥机制,需要用户自己完成共享内存示意图共享内存函数shmget函数...

2019-10-24 13:52:00 176

原创 【Linux】进程间通信----管道

进程间通信进程运行时是具有独立性的,所以要让进程通信本身是一件有难度的事情。所以想要进程实现通信,前提是必须让不同进程看到同一份资源(通常指的是某一块内存)。进程间通信目的数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。进程控制:有些进...

2019-10-23 14:54:58 116

原创 【Linux】常用命令

基础命令功能man阅读文档apropos查找文档help / help -d获取帮助信息>重定向输出<重定向输入日常按键功能Tab自动补全参数Ctrl + r搜索命令行历史记录Ctrl + w删除键入的最后一个单词Ctrl + u删除当前行光标所在位置之前的内容Ctrl ...

2019-10-20 20:05:17 65

原创 【Linux】进程状态

进程状态为了弄明白正在运行的进程是什么意思,我们需要知道进程的不同状态。一个进程可以有几个状态(在Linux内核里,进程有时候也叫做任务)。查看进程状态命令:ps aux 或 ps axj运行 ps aux 结果:运行 ps axj 结果:下面是进程的状态在kernel源代码里定义:/** The task state array is a strange "bitmap"...

2019-10-20 17:22:08 393

原创 【C++11】Lambda表达式(匿名函数)

Lambda表达式举个例子:在C++98中,如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法。如果待排序元素为自定义类型,需要用户定义排序时的比较规则。随着C++语法的发展,人们开始觉得上面的写法太复杂了,每次为了实现一个algorithm算法, 都要重新去写一个类,如果每次比较的逻辑不一样,还要去实现多个类,特别是相同类的命名,这些都给编程者带来了极大的不便。因此,...

2019-10-20 15:22:16 227

原创 VMware Workstation pro无法在无法在Windows上运行

国庆节期间没打开虚拟机然后今天想学习了,打开VMware发现出现了以下错误果真是老天都不让我学习,哈哈哈习还是要学的百度了一下发现问题出在win10最近更新的那个补丁上解决方法一卸载更新开始 -> 设置 -> 更新与安全查看更新历史记录卸载更新找到**KB4517389**,右键、卸载,然后等待卸载完成并重启(重启会有Windows更新,等待更新完成),然...

2019-10-19 20:24:33 251

原创 构造函数和析构函数可以是虚函数吗?

构造函数可以是虚函数吗,为什么答:不可以因为对象中的虚函数表指针是在构造函数初始化列表阶段才初始化的。C++之父 Bjarne Stroustrup 在《The C++ Programming Language》里说:To construct an object, a constructor needs the exact type of the object it is to crea...

2019-10-18 16:02:59 1494 1

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

类的六个默认成员函数1. 构造函数构造函数是特殊的成员函数,需要注意的是,构造函数的虽然名称叫构造,但是需要注意的是构造函数的主要任务并不是开空间创建对象,而是初始化对象。特点:函数名与类名相同无返回值对象实例化时编译器自动调用对应的构造函数可以重载如果类中没有显式定义构造函数,则C++编译器会自动生成一个无参的默认构造函数,一旦用户显式定义编译器将不再生成无参的构造函数和全...

2019-09-28 22:42:31 180

原创 C语言中的各种指针和指针数组

字符指针char arr1[] = "abcdef";char arr2[] = "abcdef";char *p1 = "abcdef";char *p2 = "abcdef";if (arr1 == arr2) printf("arr1 == arr2");if (p1 == p2) printf("p1 == p2");// 输出结果?第一种arr1[]和arr...

2019-09-22 15:57:55 198

原创 vaeYFdnLVc

vaeYFdnLVc

2019-07-26 16:46:30 102

原创 C语言截断与整型提升

0

2019-07-16 12:52:43 556

原创 原码,反码和补码

原码,反码和补码概念深入理解(一)原码(二)反码(三)补码补码再深入`同余``负数取模`功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导...

2019-07-10 10:31:41 268

原创 【删除公共字符】问题

题目描述输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”输入描述:每个测试输入包含2个字符串输出描述:输出删除后的字符串示例1:输入They are students. aeiou输出Thy r stdnts.解题思路暴力法:采用暴...

2019-05-23 16:13:58 832

原创 【组队竞赛】问题

题目描述牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。例如:一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是...

2019-05-23 15:57:21 507

原创 类和对象(上)

【知识点】类与对象的初步认知类的引入类的定义类的作用域类的实例化类的访问限定符及封装类的对象大小的计算类成员函数的this指针1. 类与对象的初步认知C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。2. 类的引入C语言中,结构体中只能定义变量,...

2019-01-18 14:18:15 120

原创 大小端

1. 什么是大端小端大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。例如对于这段代码:int a = 0x11223344;低位存高地址,高位存低地址 大端低位存低地址,高位存高地址 小端2. 为什么会有大端小端为什么会有大小端...

2019-01-18 14:15:55 170

原创 结构体内存对齐

1. 如何计算结构体的大小让我们先来看看下面几个问题://练习1struct S1{ char c1; int i; char c2;};//printf("%d\n", sizeof(struct S1));//练习2struct S2{ char c1; char c2; int i;};//printf("%d\n", sizeof(struct S2))...

2019-01-17 17:32:45 324

原创 C++入门基础知识点

C++入门【目录】C++关键字命名空间C++输入&amp;amp;amp;amp;输出缺省参数函数重载引用内联函数auto关键字(C++11)基于范围的for循环(C++11)指针空值-- - nullptr(C++11)总结1.C++关键字关键字(keyword)又称保留字,是整个语言范围内预先保留的标识符。每个C++关键字都有特殊的含义。经过预处理后,关键字从预处理记号(prepro...

2019-01-16 17:19:06 246

原创 C++日期类(Date类)的实现以及相关运算符重载

日期类(Date类)先看.h文件Date.h#pragma once#include &amp;lt;iostream&amp;gt;using namespace std;class Date{public: int GetMonthDay(int year, int month) const; // 四个成员函数 Date(int year, int month, int day)...

2019-01-16 16:36:38 2081

空空如也

空空如也

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

TA关注的人

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