- 博客(28)
- 收藏
- 关注
原创 Git-----------世界上最大的分布式版本控制系统
多人协作过程中,A先推送了一个版本,B再推送自己的,此时远程仓更加新,B无法直接推送,B需要先拉取,此时就会产生冲突。2.两个人修改了相同的文件,那么B拉取完了,git会保留两方所有的修改,用户应该根据自己的逻辑做出最终的调整,然后再次提交,再次推送。速度非常快,体验较好。特点:所有的版本库都存在中央服务器,本地备份动作必须依赖中央服务器,如果一旦服务器挂掉,或者网络状况不好,没法提交版本。有些时候,你必须把某些文件放到Git工作目录中,但又不能提交它们,比如保存了数据库密码的配置文件啦,等等,每次。
2025-08-16 10:39:14
965
原创 FreeRTOS2
本篇只要介绍了队列(用于任务之间的通信),互斥与同步(volatile的使用)、信号量、互斥量(其中包括优先级反转以及优先级继承)
2025-08-07 20:19:00
733
原创 FreeRTOS
实时操作系统(Real-time operating system, RTOS),又称即时操作系统,它会按照排序运行、管理系统资源,并为开发应用程序提供一致的基础。实时操作系统与一般的操作系统相比,最大的特色就是“实时性”,如果有一个任务需要执行,实时操作系统会马上(在较短时间内)执行该任务,不会有较长的延时。这种特性保证了各个任务的及时执行。
2025-08-05 08:37:19
1061
原创 八、数据库(掌握)
推荐使用这种方式,这种方式需要先编写有占位符的预处理SQL语句,交给Qt,Qt内部就知道要执行的SQL语句格式,然后在进行参数与占位符的替换,最终执行。Qt本身并没有数据库的功能,但是Qt支持调用其他主流的数据库产品,并且这些数据库产品指定了统一的Qt接口,实际上使一种数据库的中间件。增删改操作都需要录入用户输入,然后把用户输入的数据组装成SQL语句,最后执行。数据库的相关产品无法直接使用,需要在.pro项目配置文件中添加sql模块。数据库操作信息类,用户手机数据库底层传递到Qt中的错误信息的。
2025-07-26 17:08:32
423
原创 QT核心————信号槽
因此,槽函数的执行将延迟到接收对象所在的线程中执行,这通常用于跨线程连接。如果信号和槽在同一线程中,那么使用Qt::DirectConnection,否则使用Qt::QueuedConnection。槽函数实际上是一种特殊的成员函数,在声明的时候权限的作用主要是修饰其作为普通成员函数的使用效果,不影响信号槽的连接效果。Qt不可能内置所有执行的动作代码,特别是复杂的动作,需要开发者手动编写槽函数,这种方式也是所有连接方式中使用最多的。1)自定义的槽函数:不可以只写声明,不实现,会直接报错的。
2025-07-26 16:14:25
427
原创 单片机——通信
串口通讯:点对点通讯,异步,全双工,串行,传送数据低位先行,传输速度在112kb左右SPI通讯:一对多,同步,串行,全双工,传输数据高位先行,传输速度在几M到几十M之间,占用引脚多,每增加一个从机都增加一个片选线。IIC通讯:多主从,同步,串行,半双工,传输数据高位先行,传输速度一个是100kb,最快400kb。
2025-07-18 09:03:51
1210
1
原创 C++——运算符重载
● 重载的运算符只能在C++语言中已有的运算符范围内,不能创建新的运算符。● 运算符重载不能改变运算符的优先级和结合性,也不能改变操作数和语法结构。赋值运算符返回值是当前类型的引用,因此只能使用成员函数进行运算符重载!● 运算符重载函数的操作数中一定包含自定义类型。把友元函数的第一个参数替换为this指针。● 运算符重载函数不支持默认参数。也必须通过成员函数进行重载!● 运算符重载也是函数重载。● 见名知意,避免滥用。
2025-06-21 14:33:50
411
原创 C++——继承
虚继承底层原理与编译器相关,当Sofa类和Bed类使用virtual继承Furniture类时,Sofa类的对象和Bed类的对象都会多一个隐藏指针,这个指针指向了Furniture类的一个表——虚基类表,查询这个表可以找到Furniture的函数调用位置。真正的虚继承定义是Sofa与SofaBed、Bed与SofaBed的继承关系,此时SofaBed对象就会拥有两个继承来的隐藏虚基类表指针,在SofaBed对象调用Furniture的相关函数时,通过隐藏成员指针查询的调用位置进行比对来避免二义性问题。
2025-06-20 20:23:46
514
原创 C++——STL标准模板库(算法、容器、迭代器)
迭代器(Iterators)是STL的核心,它们是泛型指针,是一种指向其他对象(objects)的对象,迭代器能够遍历由对象所形成的区间(range)。STL广义上分为三类:algorithm(算法)、container(容器) 和 iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。每个元素的数据被称为值(value),每个元素拥有一个独一无二的名称:键(key),所以一个完整的元素被称为键值对。
2025-06-19 20:24:11
1049
原创 C++——详细介绍关键字(static、const、以及this指针)
静态成员函数也可以脱离对象使用,所以内部没有this指针,不能调用此类其他的非静态成员。静态成员变量是类的所有对象公用一份,但是并不推荐使用对象调用静态成员变量,因为静态成员变量不与任何对象绑定(即可以脱离对象使用),支持直接使用类名::的方式调用。使用const修饰成员函数,表示常成员函数,这样的成员函数无法修改成员变量值,不能调用其他非const的成员函数。const修饰对象表示该对象为常量对象,这种对象无法修改成员变量,也无法调用非const的成员函数。this指针是一种特殊的指针,在类内指向。
2025-06-18 19:20:11
676
原创 网编———并发服务器模型详细(C语言)
/ 在tcp的服务器中有两类文件描述符:一类用于通信(可以有多个,使用accept),一类用于连接,只有一个socket;//不能是阻塞的join如果在这里阻塞住的话,就不会有其他的客户端可以连接上!// 5.阻塞等待连接请求---阻塞在accept这一步骤。// 4.监听---将主动套接字变成被动套接字。
2025-06-08 21:09:48
790
原创 TCP的客户端与服务器端代码(C语言实现)
4. 监听 (listen)----------------------------------》待机。3. 绑定套接字 (bind)--------------------------》绑定手机(插卡)5.关闭套接字(close)---------------------------》挂断电话。1.创建套接字 (socket)-------------------------》有手机。2. 指定网络信息--------------------------------》有号码。
2025-06-04 19:33:36
890
原创 进程间的通信
1.管道空时,读会被阻塞;2.管道满时,写会被阻塞;管道空间时64k=655363.管道满之后,必须读出至少4k=4096的空间,才运行继续写入数据,可以写入数据直到满为止;4.只有在管道的读端存在时,向管道中写入数据才有意义。向管道中写入数据的进程将收到内核传来的SIGPIPE信号 (通常Broken pipe错误)。读端关闭后的代码不再运行,程序在读端关闭处程序结束!
2025-06-02 13:55:12
740
原创 通过举例解释结构体内存的对齐规则
1.确定每个成员变量的对齐数:结构体成员变量自身大小与编译器(64位8字节,32位4字节)对齐数中较小的。③.确定结构体的大小:以最大的对齐数为准,最大对齐数为4字节,因此上述结构体大小为12字节。②.根据对齐数来确定成员变量的位置:因为起始位置是以自身对齐数的整数倍。2.起始位置:以自己对齐数的最小整数倍开始开辟。②.根据成员变量的对齐数来确定成员变量的位置。3.结构体的总体大小取决于最大的对齐数。③.确定结构体大小:8个字节;
2025-05-07 09:57:51
263
空空如也
C语言 算术运算符的自增运算符
2025-05-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人