- 博客(25)
- 收藏
- 关注
原创 网络编程(6)
get请求可能没有请求数据,也可能有请求数据,但是请求数据不会在请求格式里请求数据处,会在地址栏中(也会在请求格式的url后面以?分割),post请求,有数据会在请求格式里请求数据处,一定不会在地址栏中(也不会在url之后跟着)上,浏览器作为HTTP客户端通过URL主动向HTTP服务端即WEB服务器发送所有请求,Web服务器根据接收到的请求后,向客户端发送响应信息。(一个 TCP 连接可处理多个请求),支持管道化(客户端可连续发送多个请求),新增缓存机制(如Cache-Control)。
2025-09-10 21:30:00
1249
原创 网络编程(7)
【0】复习modbus rtu与modbus tcp区别:都遵循主从问答Modbus TCP:以太网 报文头(7) 功能码(1) 数据 读数据、写单个、写多个Modbus RTU:串口 地址码(1) 功能码(1) 数据 校验位(2)Modbus 库:创建实例、设置从机ID、建立连接、寄存器操作、关闭套接字、释放实例。
2025-09-10 21:30:00
789
原创 ARM处理器的七种工作模式
ARM处理器的七种工作模式是其的核心设计,用于隔离不同场景下的操作权限并高效处理各类事件(如中断、异常、系统调用等)。
2025-09-08 09:00:05
1150
原创 网络编程(5)Modbus
【1】Modbus1. 起源Modbus由Modicon公司于1979年开发,是全球第一个真正用于工业现场的总线协议在中国,Modbus 已经成为国家标准,并有专业的规范文档,感兴趣的可以去查阅相关的文件,详情如下:标准编号为:GB/T19582-2008文件名称:《基于 Modbus 协议的工业自动化网络规范》Modbus通信协议具有多个变种,其中有支持串口,以太网多个版本,其中最著名的是Modbus RTU、Modbus ASCII和Modbus TCP。
2025-09-06 16:00:00
1310
原创 网络编程(4)
【0】复习【1】组播(多播)理论●单播方式只能发给一个接收方。●广播方式发给所有的主机。过多的广播会大量占用网络带宽,造成广播风暴,影响正常的通信。●多播是一个人发送,加入到多播组的人接收数据。●多播方式既可以发给多个主机,又能避免像广播那样带来过多的负载(每台主机要到传输层才能判断广播包是否要处理)多播地址D类:224.0.0.1-239.255.255.254接收者创建套接字(socket)设置多播属性,将自己的IP加入到多播组中指定网络信息。
2025-08-30 20:00:00
1958
原创 网络编程(3)
未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户端确认包。类似地,每一个FIN(表示结束)的ACK中的确认号为FIN的序列号加1。第二次握手:服务器必须确认客户的SYN,同时自己也得发送一个SYN分节,它含有服务器将在同一连接中发送的数据的初始序列号。指定网络信息-----------------------------------------------》有号码。
2025-08-30 15:20:03
1027
原创 网络编程(2)
由于 bind 函数所需的参数类型为 struct sockaddr *,而实际使用的是 struct sockaddr_in 类型的变量 saddr,因此必须执行类型转换操作,将 struct sockaddr_in 类型的指针转换为 struct sockaddr * 类型的指针。(struct sockaddr *):为强制类型转换运算符,用于将 &saddr 所获得的 struct sockaddr_in * 类型指针转换为 struct sockaddr * 类型指针。这个FIN由TCP确认。
2025-08-29 16:11:27
862
原创 网络编程(1)
笔试1:某公司有四个部门:行政、研发1、研发2、营销,每个部门各50台计算机接入公司局域网,如果要在192.168.1.0网段为每个部门划分子网,子网掩码应该怎么设置,每个子网的地址范围分别是什么?确保一个系统应用层发送的消息可以被另一个系统的应用层读取,编码转换,数据解 析,管理数据加密,解密;4.监听 (listen)----------------------------------》待机。3.绑定套接字 (bind)--------------------------》绑定手机(插卡)
2025-08-27 08:20:37
993
原创 IO进程
大纲标准IO文件IO库linux IO模型进程:process进程基础进程间通信:无名管道(pipe)、有名管道(fifo)、信号(signal)、共享内存(shared memory)、消息队列(message queue)线程(thread)、同步、互斥、条件变量课程特点:逻辑性没那么强,但是内容多节奏快。标准IO1. 什么是标准IO1.1 概念标准IO:是在C库中定义的一组专门用于输入输出的函数。1.2 特点通过缓冲机制减少系统调用,提高效率。
2025-08-25 20:58:29
639
原创 QT(八)数据库
推荐使用这种方式,这种方式需要先编写有占位符的预处理SQL语句,交给Qt,Qt内部就知道要执行的SQL语句格式,然后在进行参数与占位符的替换,最终执行。Qt本身并没有数据库的功能,但是Qt支持调用其他主流的数据库产品,并且这些数据库产品指定了统一的Qt接口,实际上使一种数据库的中间件。增删改操作都需要录入用户输入,然后把用户输入的数据组装成SQL语句,最后执行。数据库操作信息类,用户手机数据库底层传递到Qt中的错误信息的。数据库相关类,用于一个数据库的连接。数据库的操作类,可以操作SQL语句。
2025-07-28 12:00:00
684
原创 QT(七)文件IO
在实际开发中,两个线程不可能在毫无关系的前提下各干各的,最常见的情况是主线程分配一个耗时任务给子线程,子线程需要把耗时任务的执行情况反馈给主线程,主线程刷新子线程的耗时操作,并展示ui效果。之前说过的数据库也是一种数据持久化的方式,虽然嵌入式使用的SQLite数据库已经轻量级数据库了,但是相对于其他的技术,还是略显冗余了。在默认的情况下,Qt的项目是单线程的,这个自带的线程用于处理程序的主要任务和UI交互,也被称为主线程或者UI线程。一个伪拷贝的案例,使用for循环加睡眠,模拟文件拷贝的功能。
2025-07-28 07:00:00
770
原创 QT(六)多窗口编程
QDialog的Qt源码中,派生类往往都是一些在特定场合下使用的预设好的对话框窗口,这些窗口的使用无需创建对象,直接使用静态成员函数弹窗,使用函数的返回值作为这个窗口的结果。之前认识此类更多的是站在组件的角度上,实际上QWidget作为所有窗口的基类,也具有很多窗口的特性。setter函数进行设置。本次学习主要是在窗口类中实现事件函数,从而检测到事件的传递过程,利用事件的触发机制实现一些特定的效果。事件函数的基础使用,只需要在对应的类中覆盖基类的事件函数即可,事件函数的参数就是包含了当前事件数据的对象。
2025-07-27 21:00:00
719
原创 QT(四)基本组件
QLabel可以用来显式文字或者图片,但是需要注意的是,QLabel不能与用户交互(不能点击),只能展示使用,因此没有合适的信号函数。我们也可以直接对组件对象进行命名, 系统默认的命名方式是“标签名称_序号”的方式,可以直接双击命名,命名完成后,需要回车。把图片导入到项目中,成为项目资源,直接使用Qt的虚拟路径导入图片,可以在任何的环境中进行使用这些资源图片了。策略:除非必要情况,或者实现特殊功能,否则我们的策略尽量不要修改,因为当前的策略对组件是最友好的。因为图片的操作非常消耗程序的资源。
2025-07-27 20:00:00
1466
原创 QT(五)常用类
中的容器类,相比较于C++的容器类,Qt的容器类更轻巧、更安全、更加的易于使用。Qt中对C++的类重写时,充分考虑到了C++程序员的编程习惯,因此QString几乎支持所有string的API,除此之外也会增加一些额外的函数。QString是Qt的字符串类,与C++的string相比,不再使用ASCII编码,QString使用的是Unicode编码。Qt是一个跨平台的开发框架,所以必须保证各个平台的数据类型的长度保持一致,因此Qt为常见的基本类型定义了新的类型符号。可以使用时间戳作为随机数的种子。
2025-07-27 20:00:00
1360
原创 QT(三)信号槽(重点)
这种方式是最简单的,因为信号函数和槽函数都是Qt内置的,只需要在文档中查找出函数后,使用connect函数连接即可。Qt不可能内置所有执行的动作代码,特别是复杂的动作,需要开发者手动编写槽函数,这种方式也是所有连接方式中使用最多的。多对一指的是多个信号连接同一个槽函数,多对一的问题在于槽函数无法直接判断那个信号触发的槽函数调用,但是可以通过。,在声明的时候权限的作用主要是修饰其作为普通成员函数的使用效果,不影响信号槽的连接效果。信号槽通过程序员提前设定的“约定”,可以实现对象之间的通信,有两个先决条件。
2025-07-27 08:00:00
375
原创 QT(一)简介
Qt是一个基于C++的图形用户界面(GUI)开发框架,但是Qt不仅仅能开发界面,还包含了很多传统的技术:多线程、数据库、图像处理、网络通信、文件IO。如果想要输出内容到后台中,需要使用QDdebug类下的qDebug函数输出调试信息到后台中,支持中文,整个的使用跟cout非常的相似,但是有以下区别。在C语言中printf或者C++的cout输出的内容都不区分前后台,但是Qt中输出的内容区分前台后台,在Qt中一个自定义的类的声明都写在.h中,这个类所用到的其他类头文件,也在此文件中引入。
2025-07-27 06:00:00
1027
原创 QT(二)UI入门
上面的窗口中,什么都没有,实际上可以向窗口中添加若干个子组件,来实现不同的显式效果和交互效果,本节以QPushButton(按压式按钮)组件为例。按照C++的内存回收机制,子组件应该在父窗口的构造函数中创建,在析构函数中销毁。样式表,QString为Qt的字符串类型,样式表使用QSS语法,(模仿的前端CSS语法)QWidget是所有组件和窗口的基类,内部也包含了一些最基础的界面特性。横坐标,每个图形的左上角为定位点。纵坐标,每个图形的左上角为定位点,纵轴的零点在屏幕的最上面,正方向向下。
2025-07-27 06:00:00
424
原创 C++笔记八(智能指针)
每次多一个shared_ptr对资源进行管理,引用计数将+1,每个指向该对象的shared_ptr对象销毁时,引用计数-1,最后一个shared_ptr对象销毁时,计数清零,资源对象销毁。weak_ptr是一个不控制资源对象的智能指针,不会影响资源的引用计数,其主要的目的是协助shared_ptr工作。通过weak_ptr的构造函数,参数传入一个持有资源对象的shared_ptr或者weak_ptr对象即可创建。作为auto_ptr的改进,unique_ptr对其他持有的资源对象具有唯一控制权,即。
2025-07-26 22:00:00
398
原创 C++笔记七(异常处理)
异常是程序在执行期间产生的问题,C++的异常是指在程序运行时发生的特殊情况,比如at函数的下标访问越界等。异常的处理方式有两种:抛出异常(throw)和捕获异常(try-catch)throw语句的操作数可以是任意的表达式,表达式的结果决定了抛出异常的类型。如果有一个try代码块抛出一个异常,捕获异常则使用catch代码块。无异常抛出,此时程序正常执行,不进入catch块。异常抛出,正确捕获,此时程序执行进入catch块。异常抛出,错误捕获(捕获类型不对),此时程序。在代码块中的任何地方抛出异常。
2025-07-26 17:04:00
299
原创 C++笔记六(面向对象高级)
定义大学生类,继承自学生类,大学生有专业名、成绩的私有成员变量,还有是否获得奖学金的成员函数(成绩为判断依据)。当Sofa类和Bed类使用virtual继承Furniture类时,Sofa类的对象和Bed类的对象都会多一个隐藏指针,这个指针指向了Furniture类的一个表——虚基类表。这种情况下,派生类(Polygon)中仍然存在纯虚函数(继承来的),此时派生类仍然是一个抽象类,需要继续向下继承,直到某个派生类(Rectangle)全部实现纯虚函数。有一个微软键盘类继承键盘类,有一个苹果键盘继承键盘类;
2025-07-26 09:02:39
1152
原创 C++笔记五(STL容器)
STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。每个元素的数据被称为值(value),每个元素拥有一个独一无二的名称:键(key),所以一个完整的元素被称为键值对。所有容器类的使用都需要引入对应的头文件,因为这些类型都是std名字空间下的类。作用:迭代器是一种抽象的指针,用于遍历容器中的元素,提供了访问容器元素的统一接口。
2025-07-25 08:00:00
1713
原创 C++笔记四(运算符重载)
在C++中,成员函数(也称为方法)与普通函数(全局函数)是两种不同的函数类型,它们的主要区别体现在定义位置、访问权限、调用方式和隐含参数等方面。C++中预定义的运算符只能操作基本数据类型,但是对于很多自定义类型,也需要类似的运算操作,此时就可以重载这些运算符,赋予新的计算功能,执行特殊类型的计算操作。它只能通过对象的公有接口访问类的成员。由于不属于类的成员函数,因此友元函数没有this指针,访问类的成员只能通过对象。可以访问类的所有成员(私有、保护、公有),无论其定义位置是类内还是类外。
2025-07-24 20:23:41
848
原创 C++笔记三(面向对象基础)
在你的`String`类实现里,`operator<`、`operator==`和`get_str()`对`const`的使用是正确且必要的。二是可以让这个函数在`const`对象上被调用。`this`指针的性质:在这个`const`成员函数内部,`this`指针的类型是`const String*`,这就保证了不能通过`this`来修改对象。参数里的`const`:参数`s1`和`s2`使用`const String &`,这样做是为了防止在函数内部修改传入的对象,并且避免进行对象复制。
2025-07-24 06:00:00
945
原创 C++笔记(二)
不需要手动管理资源:因为`String`类使用`std::string`来存储字符串,而`std::string`能够自动管理内存,所以`String`类不需要实现析构函数、拷贝构造函数和拷贝赋值运算符,默认生成的这些函数就能正常工作,这遵循了“资源获取即初始化”(RAII)原则。在`String`类中的情况:编译器会生成默认的拷贝构造函数,它会复制`str`成员变量。在`String`类中的情况:编译器会生成默认的析构函数,它会调用`str`的析构函数,从而正确释放`std::string`占用的资源。
2025-07-23 18:30:00
542
原创 C++笔记(一)
1.C++发展史1983年,贝尔实验室(Bell Labs)的Bjarne Stroustrup发明了C++。C++在C语言的基础上进行了扩充和完善,是一种面向对象程序设计(OOP)语言。Stroustrup说:“这个名字象征着源自于C语言变化的自然演进”。还处于发展完善阶段时被称为“new C”,之后被称为“C with Class”。C++被视为C语言的上层结构,1983年Rick Mascitti建议使用C++这个名字,就是源于C语言中的“++”操作符(变量自增)。
2025-07-23 08:00:00
787
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅