- 博客(70)
- 收藏
- 关注
原创 C++ 面向对象核心-多态
多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。多态可以理解为”一种接口,多种状态“,只需要编写一个函数接口,根据传入的参数类型,执行不同的策略代码。在面向对象编程中,我们通常将多态分为两种类型:静态多态(静态多态,也被称为编译时多态)和动态多态(动态多态,也被称为运行时多态)。多态的使用具有三个前提条件:● 公有继承● 函数覆盖● 基类的引用/指针指向派生类的对象
2024-08-07 21:16:39 589
原创 c++ 面向对象核心-继承
继承就是在已存在的类的基础上建立一个新的类,并拥有其特性。基类和派生类是相对的。构造函数与析构函数不能被继承。派生类的任意一个构造函数,都必须直接或者间接调用基类的任意一个构造函数。透传构造,委托构造,继承构造。多重继承。不同权限的继承,共有继承、保护继承、私有继承。
2024-08-07 19:56:00 1048
原创 C++ 模板
模板可以让类或者函数支持一种通用类型,这种通用类型在实际的运行过程中可以使用任何数据类型。模板——是一段带有类型参数的程序代码,可以通过给这些参数提供一些类型来得到针对不同类型的具体代码。模板通常有两种形式:● 函数模板 ● 类模板template是声明模板的关键字,函数模板——实际上是定义一个通用函数。则类模板是类的抽象,类是类模板的实例。
2024-08-04 21:05:58 759 1
原创 C++ 运算符重载
运算符预定义的操作只能针对基本数据类型,但是对于自定义类型,也需要类似的运算操作,此时就可以重新定义这些运算符的功能,使其支持特定类型,完成特定的操作。运算符重载有两种实现方式:● 友元函数运算符重载● 成员函数运算符重载
2024-08-04 20:44:23 1211
原创 C++ 友元
友元在于提高程序的运行效率,但是,他破坏了类的封装性和隐藏性,使得非成员函数能够访问类的私有成员。友元函数不属于任何一个类,是一个类外的函数,但是需要在内类进行声明。虽然友元函数不是类中的函数,但是却可以访问类中的所有成员(包括私有成员)。● 友元函数没有this指针● 友元函数的声明可以放置到类中的任何位置,不受权限修饰符的影响● 友元关系不能被继承● 友元关系不具有交换性
2024-08-04 20:21:49 354
原创 c++ 面向对象基础-作用域限定符、this指针
作用域限定符:C++中的作用域解析运算符( :: )用于在全局作用域中引用局部作用域的变量或函数。通知编译器应从作用域限定符左侧的名字所示的作用域中寻找右侧那个名字,即指定访问哪个名字空间的哪个成员。this指针:● 成员(变量+函数)必须由对象调用。类中成员的调用都依赖于this指针的,通常由编译器自动添加。使用this指针可以明确指示当前对象的地址,可以解决对象之间的命名冲突问题,同时也方便了对对象的成员变量和成员函数的操作。this标记的为成员变量,用来区分成员变量与函数传入的形参。
2024-08-04 20:00:25 284
原创 C++ 面向对象基础-构造函数
构造函数,构造函数进行初始化赋值,函数默认值。拷贝构造函数,浅拷贝与深拷贝。析构函数。构造函数是一种特殊的成员函数,用于创建对象时初始化。
2024-08-03 16:25:33 665
原创 C++ 面向对象基础-类与对象、封装
类:类是一个抽象的概念,用于描述同一类对象的特点。对象:根据类的概念所创造的实体。类中最基础的内容包括两个部分,一个是属性,一个是行为。用 class 进行创建, class + 类名。 栈内存对象与堆内存对象new 与malloc 的区别。封装指的是,将类的一些属性和行为隐藏,重新提供外部的访问接口。
2024-08-03 15:16:59 807
原创 C++ :从C 到C++
引用从一定程度上讲是指针的平替,几乎被所有的面向对象编程所使用。引用相当于对某一目标变量起一个"别名"。如果cin输入的字符串包含空格,则可以使用 getline(cin,str).内联函数用于取代C语言中的宏定义的函数。内联函数的正确使用可以提升程序的执行效率。内联函数在编译的时候,直接把函数体展开到主函数中进行编译,在运行期间减少调用的开销。C++中允许多个函数使用同一个名称,这种用法就是函数重载。函数重载要求函数名称相同,但是参数不同(类型或者数量、顺序)不同。与返回值等其他因素无关。
2024-07-26 19:45:31 686 1
原创 modbus 函数
modbus库(1)创建实例(2)设置从机id(3)建立连接(4)寄存器操作(5)释放mudbus 实例(6)关闭套接字实现 03功能:读当或多个保持寄存器编程实现采集传感器数据和控制硬件设备(传感器和硬件通过slave模拟)
2024-07-22 21:17:52 260 1
原创 modbus RTU
Modbus RTU也是主从问答协议,由主机发起,一问一答。ModbusRTU数据帧包含:从站地址码 功能码 数据 校验码地址码:从机 ID功能码:同 TCP数据:起始地址 数量 数据校验码:2个字节,对 地址码 功能码 数据进行校验,可以通过函数自动生成
2024-07-22 20:57:44 331
原创 modbus TCP
Modbus通信协议具有多个变种,其中有支持串口,以太网多个版本,其中最著名的是Modbus RTU、Modbus ASCII和Modbus TCP三种。离散量和线圈其实就是位寄存器(每个寄存器数据占1字节),工业上主要用于控制IO设备。输入和保持寄存器是字寄存器(每个寄存器数据占2个字节),工业上主要用于存储工业设备的值。ModbusTcp协议包含三部分:报文头、功能码、数据
2024-07-22 20:49:11 840
原创 网络-三次握手,四次挥手
第一次握手都由客户端发起在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。注意三次握手只是用来建立连接用的,和TCP可靠稳定没有关系,TCP的可靠是通过重传和检错等机制实现的。四次挥手既可以由客户端发起,也可以由服务器发起四次挥手也就是客户端与服务器断开连接时,需要一共发送四个报文段来完成断开TCP连接。
2024-07-16 17:21:49 737
原创 网络-TCP服务器实现FTP仿写功能
项目功能介绍:均有服务器和客户端代码,基于TCP写的。客户端和服务器链接成功后出现以下提示:四个功能***************list**************//列出服务器所在目录下的普通文件名***********put filename**********//从客户端所在路径上传文件***********get filename**********//从服务器所在路径下载文件**************quit***************//退出(可只退出客户端,
2024-07-13 16:18:16 956
原创 服务器模型--并发服务器--多进程服务器与多线程服务器
并发服务器:一个服务器同一时间可以连接多个客户端多进程:优点:服务器更稳定,父子进程资源独立,安全性高缺点:需要开辟多个进程,大量消耗资源,系统开销大多线程:优点:相对于多进程,资源开销小,多个线程共享同一个进程的资源缺点:需要开辟多个线程,安全性较差
2024-07-12 20:26:39 352 1
原创 服务器模型--IO多路复用--select--并发服务器
○ 先构造一张有关描述符的表(最大1024),然后调用一个函数。○ 当这些文件描述符中的一个或多个已准备好进行 I/O时函数才返回。○ 函数返回时告诉进程哪个描述符已就绪,可以进行 I/O操作。要求:用select创建并发服务器,可以与多个客户端进行通信(监听键盘、socket、多个acceptfd)
2024-07-12 19:44:12 563
原创 网络模型--IO多路复用
比较好的方法是使用 I/O多路复用技术。其(select)基本思想是:○ 先构造一张有关描述符的表(最大1024),然后调用一个函数。○ 当这些文件描述符中的一个或多个已准备好进行 I/O时函数才返回。○ 函数返回时告诉进程哪个描述符已就绪,可以进行 I/O操作。构造一张关于文件描述符的表 fd_set 清空表 FD_ZERO将关心的文件描述符添加到表中 FD_SET调用 select函数,监听判断是哪一个或者哪些文件描述符发生了事输入鼠标的时候, 响应鼠标事件, 输入
2024-07-12 19:26:54 356
原创 网络IO模型-信号驱动IO/异步IO
异步通知:异步通知是一种非阻塞的通知机制,发送方发送通知后不需要等待接收方的响应或确认。通知发送后,发送方可以继续执行其他操作,而无需等待接收方处理通知。1. 通过信号方式,当内核检测到设备数据后,会主动给应用发送信号SIGIO。2. 应用程序收到信号后做异步处理即可。3. 应用程序需要把自己的进程号告诉内核,并打开异步通知机制。异步io实现,当终端输入内容时,进程获取内容并从终端输出,当没有内容输入时,进程循环输出hello。
2024-07-11 19:27:12 220
原创 网络-非阻塞IO模型
轮询、耗费CPU,可以处理多路IO通过设置文件描述符的属性,把文件描述符的属性设置为非阻塞步骤:(1)获取文件描述符的属性(2)修改文件描述符的属性(3)设置文件描述符的属性因为文件描述符的属性中,二进制的每一位都表示一种属性,我们要修改其中一种属性,还得保证其他属性不能改变,可以通过位或操作,只改变其中一位二进制数,然后把修改后的的属性再设置回去。
2024-07-11 19:17:48 305
原创 网络-阻塞IO模型
最常见、效率低、不耗费cpu阻塞I/O 模式是最普遍使用的I/O 模式,大部分程序使用的都是阻塞模式的I/O 。缺省情况下(及系统默认状态),套接字建立后所处于的模式就是阻塞I/O 模式。丢包、粘包、拆包
2024-07-11 19:08:38 642
原创 网络-UDP通信
全双工通信、面向无连接、不可靠UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。服务器:1. 创建数据报套接字 socket2. 填充网络信息3. 绑定 bind4. 发送接收消息 sendto/recvfrom5. 关闭套接字 close客户端:1. 创建数据报套接字 socket2. 指定网络(服务器)信息3. 发送接收消息 sendto/recvfrom
2024-07-10 19:38:21 354
原创 网络连接-TCP通信连接
// 服务器:// 1.创建流式套接字 socket()// 2.指定本地的网络信息 struct sockaddr_in// 3.绑定套接字 bind()// 4.监听套接字 listen()// 5.链接客户端的请求 accept()// 6.接收/发送数据 recv()/send()// 7.关闭套接字 close()// 客户端:// 1.创建流式套接字 socket()// 2.指定服务器的网络信息
2024-07-10 19:24:39 938
原创 网络编程-TCP/IP
TCP:流式套接字,面向连接的,可靠的通信UDP:数据报套接字,无连接的,不可靠的通信TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。
2024-07-10 19:13:59 1252
原创 网络编程基础知识
ip地址,子网掩码,网络号,主机号,网络模型,TCP/IP模型,OSI模型端口号,字节序,端口转换,ip地址转换,TCP/UDP,socket套接字
2024-07-09 20:13:42 1000
原创 IO进程间通信方式练习
两个进程或者两个线程,分别执行输入和输出任务,输入quit时退出。线程间:全局变量写法,信号量写法进程间:无名管道写法,有名管道写法,共享内存写法,共享内存与信号灯集结合写法
2024-07-08 20:32:20 518 1
原创 进程间通信方式-共享内存与信号灯集结合练习
共享内存结合信号灯集。实现两个进程一边输入,一边输出,输入quit时结束。/*通过信号灯集与共享内存配合,实现输入输出交替进行,做到输入一个输出一个(1)初始化:零号信号灯初值为0,一号信号灯初值为1(2)输入部分:申请一号信号灯,可以申请到资源,然后一号信号灯变为0,输入完成之后,释放零号信号灯,零号信号灯就变为1;(3)输出部分:申请零号信号灯,刚开始零号信号灯初值为0,无法申请到资源,只有当输入进程完成输入,把零号信号灯变为1之后,输出进程才可以申请到资源,进行输出,
2024-07-06 14:29:46 242 1
原创 进程间通信方式-消息队列
消息队列是IPC对象(活动在内核级别的一种进程间通信的工具)的一种一个消息队列由一个标识符 (即队列ID)来标识消息队列就是一个消息的列表。用户可以在消息队列中添加消息、读取消息等消息队列可以按照类型(自己设一个值作为类型)来发送/接收消息(1) 产生key值: ftok()(2) 创建或打开消息队列msgget()(3) 添加消息:按照类型把消息添加到以及打开的消息队列末尾msgsnd()(4) 读取消息:可以按照类型把消息从队列中给你读走msgrcv()(5) 删除消息队列:
2024-07-06 14:05:08 159
原创 进程间通信方式-信号灯集
信号灯(semaphore),也叫信号量,信号灯集是一个信号灯的集合。它是不同进程间或一个给定进程内部不同线程间同步的机制;线程:全局变量,同步通过信号量。初始化:sem_init(&sem,0,0);申请资源:sem_wait(&sem);P操作 -1释放资源: sem_post(&sem); V操作 +1(1) 创建key值:ftok(2) 创建或开信号灯集: semget(3) 初始化信号灯: semctl(4) PV操作:semop(5) 删除信号灯集: semc
2024-07-06 12:00:19 921
原创 进程间通信方式-共享内存
(1)共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存,而不需要任何数据的拷贝。(2)为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间。进程就可以直接读写这一内存区而不需要进行数据的拷贝,从而大大提高的效率。(3) 由于多个进程共享一段内存,因此也需要依靠某种同步机制,如互斥锁和信号量等(1) 创建 key值(2) 创建或打开共享内存(3) 映射共享内存到用户空间(4) 撤销映射(5) 删除共享内存
2024-07-06 11:33:45 1112
原创 进程间通信方式-信号练习
1. 信号解决司机售票员问题1)售票员捕捉SIGINT(代表开车)信号,向司机发送SIGUSR1信号,司机打印(let's gogogo)2)售票员捕捉SIGQUIT(代表停车)信号,向司机发送SIGUSR2信号,司机打印(stop the bus)3)司机捕捉SIGTSTP(代表到达终点站)信号,向售票员发送SIGUSR1信号,售票员打印(please get off the bus)4)司机等待售票员下车,之后司机再下车。
2024-07-04 20:04:04 184 1
原创 进程间通信方式-信号
(1)信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式。(2)信号可以直接进行用户空间进程和内核进程之间的交互,内核进程也可以利用它来通知用户空间进程发生了哪些系统事件。(3)3)如果该进程当前并未处于执行态,则该信号就由内核保存起来,直到该进程恢复执行再传递给它;如果一个信号被进程设置为阻塞,则该信号的传递被延迟,直到其阻塞被取消时才被传递给进程。1)忽略信号:对信号不做任何处理,但是有两个信号不能忽略:即SIGKILL及SIGSTOP。2)捕捉信号:定义信号处理函数,当信号发生时
2024-07-04 19:57:37 793
原创 进程间通信方式-有名管道练习
进程间通信方式,有名管道利用两个进程实现cp复制功能利用有名管道,一个进程读取复制文件,写到管道中,一个进程读取管道中的内容,写到目标文件中。
2024-07-04 19:26:16 184
原创 IO线程的同步、互斥、条件变量 具体练习
IO线程的同步、互斥、条件变量。练习:请在linux 利用c语言编程实现两个线程按照顺序依次输出”ABABABAB......" (信雅达)例如a线程输出”A”之后b线程输出”B”,然后a线程输出“A”,再b线程输出”B”,之后往复循环。
2024-07-03 21:02:40 257
原创 IO线程-同步、互斥、条件变量
io线程,同步,互斥,条件变量。通过线程实现数据的交互,主线程循环从终端输入,线程函数将数据循环输出,当输入quit结束程序。请在linux 利用c语言编程实现两个线程按照顺序依次输出”ABABABAB......"
2024-07-03 20:45:23 822
原创 文件IO与标准IO总结
标准 IO文件IO概念C库中定义的一组用于输入输出的函数posix中定义的一组输入输出的函数特点有缓冲机制,减少系统调用,提高效率无缓冲机制围绕流进行操作,FILE *p围绕文件描述符操作,非负整数默认打开三个流:stdin/stdout/stderr默认打开三个文件描述符:0/1/2只能操作普通文件可以操作除了目录以外的任意类型文件可移植性更强可移植性弱函数打开文件: fopen \freopen打开文件: open关闭文件 :fclose关闭文件:close。
2024-07-02 21:00:35 857
原创 IO 线程
线程和进程都参与统一的调度。在同一个进程中可以创建的多个线程, 共享进程资源。:都为操作系统提供了并发执行能力调度和资源:线程是系统调度的最小单位,进程是资源分配的最小单位地址空间方面:同一个进程创建的多个线程共享该进程的资源;进程的地址空间相互独立通信方面:线程通信相对简单,只需要通过全局变量可以实现,但是需要考虑临界资源访问的问题;进程通信比较复杂,需要借助进程间的通信机制(借助3g-4g内核空间)安全性方面:线程安全性差一些,当进程结束时会导致所有线程退出;进程相对安全。
2024-07-02 20:49:52 660
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人