2 Mamba_cheng

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 61w+

5种IO模型

一、概述五种IO模型包括:阻塞IO、非阻塞IO、信号驱动IO、IO多路转接、异步IO。其中,前四个称为同步IO。1、什么是IOIO (Input/Output,输入/输出)即数据的读取(接收)或写入(发送)操作,通常用户进程中的一个完整IO分为两阶段:用户进程空间<–>内核空间、内核空间<–>设备空间(磁盘、网络等)。IO有内存IO、网络IO和磁盘IO三种,通常我们说的IO指的是后两者。网络I/O就是通过网络进行数据的拉取和输出。磁盘I/O主要是对磁盘进行读写工作。比如你打

2020-07-13 11:31:29

怎么限制一个类的对象实例,只能在“堆“上分配,或者只能在“栈“上分配

在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。动态建立类对象,是使用new运算符将对象建立在堆空间中。这个过程分为两步,第一步是执行operator new()函数,在堆空间中搜索合适的内存并进行分配;第二步是调用构造函数构造对象,初始化这片内存

2020-07-12 16:32:39

C++:四大类型转换

四大类型转换前言dynamic_caststatic_castconst_castreinterpret_cast前言C语言的类型转换比较自由,但也带来了一些问题,这些问题大多由程序员自行控制和解决。对于庞大的C++语言机制而言,这种简单粗暴的类型转换方式显然是个巨大的负担,因此C++引入4种类型转换运算符,更加严格的限制允许的类型转换,使转换过程更加规范:dynamic_cast 用于多态类型的转换static_cast 用于非多态类型的转换const_cast 用于删除const ,volat

2020-07-12 16:20:53

C++类内存分布

一、成员函数成员函数可以被看作是类作用域的全局函数,不在对象分配的空间里,只有虚函数才会在类对象里有一个指针,存放虚函数的地址等相关信息。成员函数的地址,编译期就已确定,并静态绑定或动态的绑定在对应的对象上。对象调用成员函数时,早在编译期间,编译器就可以确定这些函数的地址,并通过传入this指针和其他参数,完成函数的调用,所以类中就没有必要存储成员函数的信息。二、成员变量下面可以定义一个类,像下面这样:class Base{ int a; int b;public:

2020-07-11 15:47:23

C++ 构造函数与初始化列表

一、初始化与赋值的区别意义上:1)初始化:一个变量或者一个对象在产生的时候就赋予一个值,属于伴随性质2)赋值:在一个变量或者一个对象在产生之后的任意时刻赋予一个值,属于任意性质宏观代码上:1)两者作用相同2)对于数组和结构体来说,初始化和赋值的的形式不同。对于数组,可以使用花括号一起初始化,如果赋值的话,就只能单个元素就行;对于结构体,可以使用花括号初始化,否则只能通过“.”来访问变量进行赋值二、构造函数特点1、造函数也是一个函数,这个函数有几个特点:1)函数的名字与类的名字相同2)在创

2020-07-11 15:24:40

面向对象--虚机制

虚机制,一个听起来不好惹的角色,却是C++面向对象部分的精髓。不得不承认的是,这部分的内容有些多,也不太好理解。但同样不得不承认的是,虚机制在面向对象部分准确说是多态特性发挥着举足轻重的作用。可以说没有了虚机制,C++的面向对象就没有了灵魂。因此,这一篇,我们就来整理有关虚机制的内容。本文的内容思维导图如下虚函数的创建和实现这虚函数也是函数啊,唯一不同的就是它比较虚~~因此,只需要在成员函数前面加上“虚”就完事了。虚函数必须是成员函数这里,需要强调,虚函数必须是成员函数!!!对于这样的定义:

2020-07-10 14:06:26

同步、异步、阻塞、非阻塞

1 同步与异步#首先来解释同步和异步的概念,这两个概念与消息的通知机制有关。也就是同步与异步主要是从消息通知机制角度来说的。1.1 概念描述所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列。要么成功都成功,失败都失败,两个任务的状态可以保持一致。所谓异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了。至于被依赖的任务最终是否真正完成,依赖它的任务无法确定

2020-06-30 09:42:25

排序算法总结

c++经典排序算法总结算法分类###一、冒泡排序//冒泡排序void BubbleSort(int* h,size_t len){ if(h==NULL) { return; } if(len<=1) { return; } for(int i=0;i<len-1;++i) { for(int j=0;j<len-1-i;++j) {

2020-06-28 19:43:56

C++字符串

C风格字符串尽管C++支持C风格字符串,但在C++程序中最好还是不要使用它们。这是因为C风格字符串不仅使用起来不方便,而且极其容易引发程序漏洞,是诸多安全问题的根本原因。C风格字符串不是一种类型,而是为了表达和使用字符串而形成的一种约定俗成的写法。|函数 | 说明 || strlen() |返回p的长度,空字符不计算在内|| strcmp(p1,p2) | 比较p1和p2的相等性。如果p1==p2,返回0;如果p1>p2,返回一个正值,否则返回负值 || strcat(p1,p2)

2020-06-24 10:12:06

网络编程之I/O复用

原理解析一、socket1、socket创建过程//创建socket int s = socket(AF_INET, SOCK_STREAM, 0); //绑定 bind(s, ...) //监听 listen(s, ...) //接受客户端连接 int c = accept(s, ...) //接收客户端数据 recv(c, ...); //将数据打印出来 printf(...) 注:Recv 是个阻塞方法,当程序运行到 Recv 时,它会一直等待,直到接收到数据才往

2020-06-22 17:14:30

非递归树

树的递归与非递归#include<iostream>#include<vector>#include<stack>using namespace std;class TreeNode{ public: TreeNode(int data):val(data){}; ~TreeNode(); int val; TreeNode* left; TreeNode*

2020-06-19 23:14:51

单例模式

单例模式一、简介单例模式是一种常用的软件设计模式,其定义是单例对象的类只能允许一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。二、基本实现思路单例模式要求类能够有返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用initance这个名称)

2020-06-19 17:26:27

LRU

LRU的实现LRU的c++实现,使用的是双向链表+map。链接: [https://blog.csdn.net/weixin_43819197/article/details/95901964).#ifndef _LRU_H#define _LRU_H#include<map>class CatchLRU{ public: CatchLRU(int size); ~CatchLRU(); struct CatchNod

2020-06-19 12:09:33
勋章 我的勋章
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 阅读者勋章Lv2
    阅读者勋章Lv2
    授予在CSDN APP累计阅读博文达到7天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。