自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《LINUX网络编程》TCP粘包问题的处理

TCP是传输层的协议,它是一个面向连接,安全的,流式传输协议。因为数据传输基于流的所以发送端和接收端每次处理的数量,处理数据的频率是不对等的,传递的数据是没有消息边界的。

2023-06-30 18:34:52 207

原创 STL初识

it!//set容器插入之后就不能在修改,所以只能在插入之前指定规则 set < int , myCompareInt > s;//仿函数,不能用回调函数,因为括号里需要一个类型 s . insert(10);it!return 0;} };

2023-06-03 19:32:41 145 4

原创 C++异常

catch(MyException *e)对象会提前释放掉,不能在非法操作,如果不想被提前释放掉,则throw new MyException(),但是要自己delete。异常处理就是处理程序中的错误.所谓错误是指在程序运行的过程中发生的一些异常事件(如0溢出,数组下标越界,所要读取的文件不存在,空指针,内存不足等)从try代码块开始,到throw抛出异常之前,所有栈上的数据都会被释放掉,释放的顺序和创建顺序相反,这个过程为栈解旋。异常接口声明将严格的告诉你抛出的异常的数据类型。利用throw抛出异常。

2023-05-27 21:32:44 149 8

原创 C++类型转换

用于类层次结构中基类(父类)和派生类(子类)之间指针和引用的转换用于基本数据类型之间的转换,如把int转成char,把char转成int,这种转换的安全性也要开发人员来保证。

2023-05-24 19:53:43 85

原创 数组类的封装

对数组类的封装主要实现以下几个简单的功能分文件编写是一个好习惯o。

2023-05-18 16:38:41 203

原创 多线程基本知识以及生产者消费者问题

生产者消费者共享缓冲区,生产者向缓冲区中放数据,消费者从缓冲取中取数据,当缓冲区中被放满时,生产者线程就必须进入挂起状态,直到消费者从缓冲中取走数据时,生产者才能继续向缓冲区中存放数据,同样当缓冲取中没有数据时,消费者线程就必须进入挂起休眠状态,直到生产者向缓冲区中放入数据时,消费者才能被唤醒继续从缓冲区中取走数据。

2023-05-09 21:01:45 185

原创 智能指针管理new出来的对象的释放操作

在c++中,我们可能会new出来非常多的对象,这些对象开辟在堆区需要手动用delete释放内存,就像下面这段代码。保证调用了new之后一定会调用delete(相当于将new和delete做一个捆绑)这只体现出智能,并没有体现出。实现了Person的析构调用!这时候的结果就完全没问题了。思路有了,解决方案是。

2023-05-03 15:31:51 690

原创 运算符重载

运算符重载:对已经有的运算符重新定义,赋予另一种功能,以适应不同的数据类型operator 是 C++ 的一个关键字,它和运算符(如 =)一起使用,表示一个运算符重载函数,在理解时可将 operator和待重载的运算符整体(如 operator=)视为一个函数名。使用 operator 重载运算符,是 C++ 扩展运算符功能的方法。使重载后的运算符的使用方法与重载前一致;扩展运算符的功能只能通过函数的方式实现。(实际上,C++ 中各种“功能”都是通过函数实现的)

2023-04-26 19:40:11 62

原创 C++类模板

通俗来说,类模板是一种通用的类定义,它可以使用任何数据类型作为其成员的类型。在使用类模板时,需要将其中的占位符类型T替换为实际的数据类型。这样可以让我们编写一份通用的代码来处理不同类型的数据,而不必为每种数据类型都编写一份不同的代码。当我们需要处理不同类型的数据时,可以通过使用类模板来避免编写大量的类定义。它允许我们定义一种通用的数据类型,而不需要指定实际使用的数据类型,这种数据类型可以用于任何数据类型。类模板允许我们写出一个类的通用定义,该类可以使用任何数据类型作为其数据成员的类型。

2023-04-24 21:41:16 66

原创 C++运算符new|delete|关键字explicit

由此看出,在堆区开辟数组,一定会调用默认构造函数,所以!当写了有参构造函数,编译器不会提供默认构造函数,此时若没有写默认构造函数,则无法在堆区开辟空间!总之,在函数可能发生隐式类型转换时带上explicit关键字可以帮助编译器更严格的检查你的代码,提高代码的可读性。new在堆区开辟一块内存,并返回一个指针来接收这个内存,堆区开辟的内存手动开辟手动释放,自动初始化并调用构造函数。所以,在c++中有一种更简单的在堆上分配内存的新方法,就是使用。malloc不会调用构造函数,new会调用构造函数。

2023-04-24 00:27:51 90

原创 实现自己的shell

包含头文件:#include 函数定义:int execvp(const char *file, char * const argv []);函数说明:execvp()会从环境变量所指的目录中查找符合参数 file 的文件名, 找到后执行该文件, 然后将第二个参数argv传给该执行的文件。返回值:如果执行成功则函数不会返回, 执行失败则直接返回-1.该函数可以。

2023-03-24 21:40:49 251

原创 project1:设计一个 C 语言的动态扩容缓冲区

project1:设计一个 C 语言的动态扩容缓冲区

2023-01-04 18:47:35 151

原创 结构体基础知识小结

;//和下面的形式相同 struct book {在上面那段代码中,struct是关键字,表明跟在后面的是结构体,book是结构体的标记(可以看作是该结构体的名字),便于在main函数里引用//在main函数里的声明 注意!声明写在main函数里我们创建了一个结构变量library,该变量的结构布局是book(就是和book结构体长得一样!)。在book结构体内部,我们可以定义各种类型的变量,如int,double,char,甚至可以嵌套一个结构体(后面详细介绍)。

2022-12-19 19:23:16 104 1

原创 高精度加法(大数相加)

高精度算法

2022-11-22 21:30:23 192

原创 Xiyou Linux兴趣小组2020纳新试题

对a:先将a看作int,就是 0000 0000 0000 0000 0000 0000 1111 1111 ,然后截取char类型的长度,就是1111 1111(补码),因为无符号,原码:1111 1111,就是255,减去128得127。对ch:char类型,8字节,128的原码就是1000 0000,这是个有符号型,所以输出,为-128.输出:&a = 0x7ffcd238aaf0 &a[0] = 0x7ffcd238aaf0 &a。a是一个二维数组,&a指的是a。详见我的另一篇文章第14题。

2022-11-19 17:28:01 345

原创 西邮Linux兴趣小组2021纳新试题

1.不改变变量,相当于产生了一个一模一样的形参,造成压栈。用大括号括起来表示是一个整体,是swap里语句,不然可能发生错误。回到本题中,t1为例,int占4个字节,short占2个字节,解释:若表达式1成立,则执行表达式2,否则执行表达式3。,double占8个字节,前面已经有6个字节被占了,变量分为局部与全局,局部变量又可称之为内部变量。,所以整体不用补齐,所以最后答案就是16啦!既可以是某对象函数创建,也可以是在本程序。,所以double前面是8个字节,2.地址不开辟新的空间,节省空间。

2022-11-16 20:46:32 529

原创 【无标题】西邮Linux兴趣小组2022纳新试题

首先,test上面的a为全局变量,剩下的如test函数里的a以及main函数里的a均为局部变量。第一个输出的a用的是上一行定义的a值,可是a并未初始化,所以编译器会给出一个默认值,所以不同编译器可能给出不同的值;上题中,以union为例,long占四个字节,int占四个字节,因为int定义的是一个数组,一共占20个字节,char占一个字节,[被括号括起来的int是函数的参数,表明被指向的函数有一个int参数,最前面的int表明返回类型是int])占20个字节,一共24个字节,double占8个字节,

2022-11-14 22:06:12 561 4

空空如也

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

TA关注的人

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