自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux Day17 Libevent库】

Reactor 模式直译过来就是反应堆模式,也被称为 Dispatcher 模式。Reactor 是一种事件驱动机制,应用程序需要提供事的接口注册到 Reactor 上,如果有相应的事件发生,Reactor 就会主动分发给对应的接口进行处理。这种机制和好莱坞法则非常契合:不要打电话给我们,我们会打电话给你。

2024-03-20 13:25:23 738

原创 【Linux Day16 I/O复用】

I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的。

2024-03-20 13:21:12 941

原创 【Linux Day15 UDP网络通讯】

- UDP 是无连接的(不需要类似TCP的事先进行connect操作),所以每次发送数据都需要指定对端的地址(IP 和端口)。recvfrom()接收数据,每次都需要传给该方法一个地址结构来存放发送端的地址。recvfrom()可以接收所有客户端发送给当前应用程序的数据,并不是只能接收某一个客户端的数据。**- **UDP是面向数据报:传输的形式都是以数据报,不可分割也不可合并,发送端应用程序每执行一次写操作,UDP 模块就将其封装成一个 UDP 数据报发送。

2024-02-03 22:30:25 617 1

原创 【Linux Day14 TCP网络通讯】

有了套接字就可以通过网络进行数据的收发。创建套接字时要指定使用的服务类型,使用 TCP 协议选择流式服务(SOCK_STREAM)。**bind()方法是用来指定套接字使用的 IP 地址和端口。**IP 地址就是自己主机的地址,测试程序时可以使用回环地址“127.0.0.1”。端口是一个 16 位的整形值,一般 0-1024 为知名端口,如 HTTP 使用的 80 号端口。这类端口一般用户不能随便使用。其次,1024-4096 为保留端口,用户一般也不使用。4096 以上为临时端口,用户可以使用。

2024-02-03 22:16:48 1010

原创 【c++中的四种类型转换,应用场景】

C++的4种类型转换?应用场景?RTTI (Runtime Type Identification)是“运行时类型识别 "

2023-12-02 15:30:00 2081

原创 【 RTTI 】

RTTI(Run Time Type Identification)即通过运行时类型识别,程序能够使用基类的指针或引用来检查着这些指针或引用所指的对象的实际派生类型。

2023-12-02 11:10:13 932

原创 【仿写C++中的move函数和forward函数】

it.val = 0;Int tmp(x);return tmp;Int f(a);return 0;运行结果1.通过右值引用,比之前少了一次移动构造和一次析构,原因在于右值引用绑定了右值,让临时右值的生命周期延长了 2.函数返回值构建过程和之前分析的一样(图 2.2。

2023-11-25 18:14:21 222

原创 【Linux-Day13-生产者消费者模型】

生产者/消费者问题,也被称作有限缓冲问题。可以描述为:两个或者更多的线程共享同一个缓冲 区,其中一个或多个线程作为“生产者”会不断地向缓冲区中添加数据,另一个或者多个线程作为“消费者”从缓冲区中取走数据。生产者/消费者模型关注的是以下几点:生产者产生资源,消费者获取资源,资源队列为满时,生产者停止生产,资源队列为空时,消费者无法获得资源 使用信号量来构建此模型分析如下:还需定义互斥锁mutex实现对缓冲区的互斥访问,避免多次操作同一个地址测试代码:运行结果

2023-09-18 18:57:35 75

原创 【Linix-Day12-线程同步和线程安全】

int。

2023-09-15 19:25:00 73

原创 【Linux-day11-线程的创建与同步】

成功返回 0, 失败返回错误码thread: 接收创建的线程的 IDattr: 指定线程的属性start_routine: 指定线程函数arg: 给线程函数传递的参数。

2023-09-13 22:14:24 184

原创 【Linux-Day10-信号量,共享内存,消息队列】

msgget()创建或者获取一个消息队列msgget()成功返回消息队列 ID,失败返回-1。

2023-09-12 22:20:02 352

原创 【Linux-Day9-进程间通信】

前提引入: 我们之前接触过管道 | 将前一个命令的输出结果作为后一个命令的输入如:ps | grep “sleep”其实就是将 ps 的结果写入到一个区域,在从这个区域读出目标数据。

2023-09-03 14:48:25 367

原创 【回溯法-附模板和例题分析】

所有回溯法的问题都可以抽象为树形结构!因为回溯法解决的都是在集合中递归查找子集,。既然是树形结构,遍历树形结构一定要有终止条件,所以回溯也有要终止条件。什么时候达到了终止条件,树中就可以看出,一般来说搜到叶子节点了,也就找到了满足条件的一条答案,把这个答案存放起来,并结束本层递归。回溯法一般是在集合中递归搜索,集合的大小构成了树的宽度,递归的深度构成的树的深度。可以从图中看出,这样就把这棵树全遍历完了,一般来说,搜索叶子节点就是找的其中一个结果了模板:回溯算法中函数返回值一般为void。

2023-09-02 12:49:53 270

原创 【Linux-Day8- 进程替换和信号】

我们发现 终端输入的任意命令的父进程都是bash,这是因为Linux系统是用fork()复制出子进程,然后在子进程中调用替换函数进行进程替换,实现相关命令。(1) exec 系列替换过程:pcb 使用以前的只修改,进程实体更换。

2023-08-26 23:42:40 1842

原创 【Linux-Day7-文件操作,fork与malloc结合】

(1)c 语言中文件操作回顾C语言操作文件分为三步1)打开文件2)读写文件3)关闭文件。有FILEfilename: 文件名,包括路径,如果不显式含有路径,则表示当前路径。mode:文件打开模式,指出对该文件可进行的操作。常见的打开模式如 “r” 表示只读, “w” 表示只写,“rw” 表示读写,“a” 表示追加写入。返回值: 打开成功,返回该文件对应的 FILE 类型的指针;打开失败,返回 NULL。故需定义 FILE 类型的指针变量,保存该函数的返回值。​。

2023-08-14 11:05:06 84

原创 【Linux-Day6-fork()--僵死进程,fork与缓冲区结合问题】

当子进程结束后,并没有消失,仍然可以在系统中观测到,但此时子进程其实已经运行结束了,此时子进程的状态被称为僵死状态,系统把处于该类状态的进程称为僵死进程。如图。

2023-08-14 10:57:58 63

原创 【Linux-Day5-fork()-复制进程】

(1) 进程:一个正在运行的程序。(2) PCB : 即是进程控制块,是进程存在的唯一标志。用来描述进程的属性信息。fork 函数会复制此进程的PCB块,新生成一个进程,调用 fork 函数的进程为父进程,新生成的进程为子进程。在父进程中返回子进程的 pid,在子进程中返回 0,失败返回-1。程序运行的 fork()处,会将父进程整体复制一份,子进程只执行fork()后的语句,不执行fork()以前的语句。

2023-08-14 10:45:44 70

原创 【Linux-Day4-库文件,printf的缓冲区,main函数参数】

静态库制作,动态库制作,printf函数刷新区,主函数参数

2023-08-09 19:52:22 54

原创 【Linux-Day3-gcc命令,gdp调试,文件解压,压缩操作】

(1) 预编译 : gcc -E main.c -o main.i(2) 编译: gcc -S main.i -o main.s(3) 汇编: gcc -c main.s -o main.o(4) 链接: gcc main.o -o main。

2023-08-09 19:14:48 247

原创 【Linux-Day2-基础指令补充】

find 搜索路径 -name 文件名 按文件名字搜索find 搜索路径 -cmin -n 搜索过去n分钟内修改的文件find 搜索路径 -ctime -n搜索过去n分钟内修改的文件。

2023-08-09 19:06:24 42

原创 【Linux Day-1(简单指令和vim操作)】

bin 存放常用命令(即二进制可执行程序)/etc 存放系统配置文件/home 所有普通用户的家目录/root 管理员用户的家目录/usr 存放系统应用程序及文档/proc 虚拟文件系统目录,以进程为单位存储内存的映射/dev 存放设备文件/mnt 临时挂载点/lib 存放库文件/boot 系统内核及启动有关的文件/tmp 存放各种临时文件,是所有用户均可访问的地点/var 存放系统运行中常改变的文件, 如系统日志。

2023-08-09 18:49:14 46

原创 【完全背包问题——附例题剖析】

完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。

2023-07-30 22:33:40 337

原创 【01背包问题——附例题讲解】

0/1 背包问题,作为动态规划问题的经典问题,可以帮助捋顺思维。核心就是有一堆物品,有两个维度的限制,在保证一个维度限制的情况下,使得另一个维度最优。

2023-07-29 22:17:00 686

原创 c++虚函数详解(多态,虚表,联编,抽象类)

派生类中定义虚函数必须与基类中的虚函数同名外,还必须同参数表,同返回类型(三同)。否则被认为是 同名覆盖,不具有多态性。如基类中返回基类指针,派生类中返回派生类指针是允许的,这是一个 例外(协变)。只有类的成员函数才能说明为虚函数。这是因为虚函数仅适用于有继承关系的类对象。友元函数和 全局函数也不能作为虚函数。静态成员函数,是所有同一类对象共有,不受限于某个对象,不能作为虚函数。内联函数每个对象一个拷贝,无映射关系,不能作为虚函数。构造函数和拷贝构造函数不能作为虚函数。

2023-07-22 22:27:38 70

原创 菱形继承中虚基类,虚基表指针

当在多条继承路径上有一个公共的基类< 菱形继承>,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),若只想保存这个基类的一个实例,可以将这个公共基类说明为虚基类。所以虚基类的作用是为了保证虚基类在派生类中只被继承一次。如图:A为公共基类类D中有两个int a,这不仅没有意义,还浪费空间,显然是不合理的,所以引入虚基类,来解决这个问题。

2023-07-19 16:01:04 42

原创 【力扣刷题篇——枚举】

枚举就是将满足条件的情况都枚举出来,然后根据题意选出最优解。eg: 给定一个数组,返回其中最大值。

2023-07-18 21:28:30 61

原创 排序算法——插入排序

最坏的情况是待排序数组是逆序的,此时需要比较次数最多,总次数记为:1+2+3+…+N-1,所以,插入排序最坏情况下的时间复杂度为O(n^2)在插入排序中,当待排序数组是有序时,是最优的情况,只需当前数跟前一个数比较一下就可以了,这时一共需要比较N- 1次,时间复杂度 O(n)按照此法对所有元素进行插入,直到整个序列排为有序的过程,称为插入排序。

2023-07-03 11:42:29 37

原创 排序算法——冒泡排序

每一轮都可以选出最大的放在后面,多次重复操作即可使数组有序。相邻两个数之间比较,将大的数放在后面。

2023-07-02 15:12:07 52

原创 多层继承中常见问题

如:class Intprivate:int value;s1.Print();当类中无自定义的拷贝构造函数时,系统会给出默认的缺省构造函数(按位复制进行 Object s1(obj);

2023-06-13 23:10:30 36

原创 C++中的单例模式

单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应该是静态方法(类方法),因为让类的实例去生成另一个唯一实例毫无意义。

2023-06-11 17:45:46 952

原创 C++ 对象间的继承关系(赋值兼容规则)

C++ 通过类派生 的机制来支持继承。被继承的类称为基类 ,新产生的类为派生类 或子类,基类和派生类的集合 称作类继承层次结构。

2023-06-11 15:35:07 1111 1

原创 c++中对象与对象的关系

1.依赖关系是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化;依赖关系也可能发生变化;举例:学生学习可以通过书,台式电脑,笔记本,还可以冥想式学习;//依赖关系//台式机//笔记本class student //学生public:int main()

2023-05-27 22:45:28 75

原创 排序算法——选择排序

选择排序算法:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。j++)

2023-05-25 12:27:04 39

原创 基于快排的题目

根据题目可得,每个蛋糕盒的大小相同,背包恰好能装 n 个蛋糕盒,要求最大蛋糕数量,只需要每个蛋 糕盒中蛋糕尽可能的多,所以我们只需要将所有蛋糕盒中的蛋糕数存入数组,然后从大到小排序,输出前 n 个即可,可以设计一个结构体去存储每个货柜中的蛋糕盒数和 每个蛋糕盒内的蛋糕数,然后按蛋糕盒中的蛋糕数目排序。采用快排算法使得时间复杂度减小;

2023-05-10 11:19:30 20

原创 排序算法——快速排序(单边,双边划分,随机划分 三位取中划分 通俗易懂 )

单边划分,双边划分 随机划分 三位取中划分 通俗易懂

2023-05-10 10:54:08 332

原创 堆排序——最大堆(通俗易懂,动图演示,静态分解 详解版)

当我们将一个完全二叉树调整为最大堆时,发现根节点为数组中最大值,所以可以用这种方式将每一轮的最大值依次放入数组尾部,从而实现将无需数组重新按由小到大的顺序排列。将最大堆的根节点和数组的最后一个数据进行交换,然后数组前 n-1 个数据再次进行最大堆调整,再次交换,以此类推,即可得到最终从小到大排序的数据。如上图,将数组ar抽象构建成一棵完全二叉树,若每个节点的值都大于其左右孩子节点 ,则该完全二叉树为最大堆。堆排序的是将数组构建成最小堆或者最大堆的方式,对数据进行排序,其时间复杂度为O(nlog n);

2023-04-05 21:23:41 1090

原创 链式结构-循环双链表

循环双链表的增删改查操作处理

2023-04-05 14:29:08 118

原创 链式结构-单链表

每个节点有两个域,数据域存储数据,指针域存储下一个节点的地址,无后续节点,则指针域为NULL(空指针)。用指针保存待删节点的地址,将指定节点的指针指向待删节点的后一节点,释放待删节点的内存。需要先将插入节点的指针指向后续节点,然后将上一个节点的指针指向插入节点便可。利用malloc函数申请内存空间,进行数据写入。,顺序不可改变,否则将无法找到后续节点)2.初始化函数(创建一个空链表)4.在指定节点后插入节点 函数。5.删除指定节点的后一节点。

2023-04-05 12:54:09 68

原创 ip地址转换

将无符号整型转换为IP地址格式

2023-03-19 23:03:02 837

原创 结构体的定义,用法;结构体大小,字节对齐方式

结构体定义,用法;结构体大小和字节对齐方式

2022-12-22 16:47:53 726

西安工业大学 c++实验文档

一共八个实验(姜虹老师)

2023-09-18

西安工业大学 物理基础实验word电子版

西安工业大学 物理基础实验word电子版适用于杨老师等要求电子版的。 1.扩程校准 2.固定均匀弦振动试验数据处理 3.惠斯通电桥测电阻 4.金属丝杨氏模量的测定

2023-08-10

西安工业大学-数据结构课设-最短路径

西安工业大学-数据结构课程的课设 最短路径

2023-08-10

c语言课设-学籍管理系统,包含代码和课设报告

小型学籍管理系统包括学生信息的录入、删除、查找、排序和打印等内容。学生的信息包括学生的姓名、年龄、性别、成绩等内容。对学生档案的排序可以按学生学号进行排序。

2023-08-10

西安工业大学 计算机网络 四个实验

实验一 网络命令及交换机的基本配置 实验二 VLAN划分及VLAN间通信 实验三 路由器基本配置 实验四 综合路由配置—静态路由配置

2023-08-08

空空如也

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

TA关注的人

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