自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (1)
  • 收藏
  • 关注

原创 Shell入门

在Linux中,所有进程的都默认有3各文件描述符,0 标准输入 1标准输出 2标准错误输出。将原有终端中输入和输出的地方定向到其他的地方。

2024-09-10 21:53:21 240

原创 C++智能指针

普通指针的不足,new和new[] 需要delete和delete[]

2024-09-08 11:30:14 236

原创 C++类继承

派生类和基类内存模型相同,在创建派生类对象后,在虚函数列表中,会用派生类成员函数取代基类成员函数的地址。关键字,把它声明为虚函数,基类指针就可以调用派生类中同名的成员函数,通过派生类中同名的成员函数,就可以访问派生对象的成员变量。2)当需要创建多个类时,如果它们拥有很多相似的成员变量或成员函数,可以将这些类共同的成员提取出来,定义为基类,然后从基类继承。创建派生类时,申请一块基类+派生类的内存空间,先调用基类的构造函数初始化基类的成员,再调用派生类的构造函数初始化派生类的成员。如果在基类的成员函数前加。

2024-09-06 09:03:07 910

原创 C++基础回顾

如果重载函数有默认参数,调用函数时,可能导致匹配失败(本来有3个参数,第3个参数有个默认值,现在调用是只传入了两个参数,两个函数都能匹配,调用不明确)2)当需要创建多个类时,如果它们拥有很多相似的成员变量或成员函数,可以将这些类共同的成员提取出来,定义为基类,然后从基类继承。引用可以作为函数重载的条件,但是,调用重载函数的时候,如果实参是变量,编译器形参类型的本身和类型引用视为同一特征。)引用的本质是指针,传递的是变量的地址,在函数中,引用时已定义的变量的别名,作用是用作函数的形参和返回值。

2024-09-01 09:38:33 891

原创 线程同步学习

线程同步不是一起、相同,而是协调、协同的意思。1)按预定的先后次序进行运行,如:您说完,我再说;线程A生成数据后交给线程B处理;2)公共资源同一时刻只能被一个线程使用;共享数据在同一时刻只能被一个线程修改,以保证数据的完整性。线程安全的3大特性1、原子性原子性是指操作是不可分的。其表现在于对于共享变量的某些操作,应该是不可分的,必须连续完成。2、可见性可见性是指一个线程对共享变量的修改,另外一个线程能够立刻看到;基于互斥锁、条件变量、信号量、自旋锁、读写锁。

2024-08-27 11:54:02 752

原创 多进程比多线程开销大的原因

综上所述,多进程比多线程开销大的原因主要包括资源分配与回收的复杂性、上下文切换的开销、进程间通信的复杂性。然而,需要注意的是,在某些情况下(如需要高隔离性、高稳定性或利用多核CPU并行计算时),多进程可能是更好的选择。因此,在选择使用多进程还是多线程时,需要根据具体的应用场景和需求来权衡利弊。

2024-08-26 19:47:21 342

原创 Linux TCP多线程服务器

假设两个核心1,2,4个任务a,b,c,d,ab分配给了核心1,cd分配给了核心2,此时ab就是并发,cd也是并发,a与c就可以并行,b与d也可以并行。假如进程是一个文档编辑器,存放着相应的程序和文档,现在用户用键盘敲下回车,交互的程序接收键盘的按下事件,布局的程序将文字重新排布渲染出来,另外每隔一段时间,写入的程序保存文档到硬盘中,所以这三个程序最好能并行执行,但他们又需要访问修改同一个文档,所以肯定是在同一个进程中,所以现在需要更轻量级的3个线程,交互线程, 渲染线程,保存线程。

2024-08-25 16:56:19 1037

原创 堆栈的初步理解

那么什么时候可以回收呢,显然只有使用这块内存的程序员自己知道,也就是说 如果程序员不去释放内存,那么在任何函数中,都可以使用这块内存或者这个变量,这些变量占据的内存就是堆区。当变量出现在函数后就会出现一个问题,那就是变量的使用范围或者生命周期仅仅是函数内部还是超越函数,如果一个变量仅仅在函数内部,那么当函数结束后,这个变量占据的内存就可以进行销毁了,这就是局部变量。栈区的内存管理无需程序员关心,实际上栈区是非常好管理的,栈区的内存申请和释放是非常有规律的,先来的后释放,遵循栈的顺序。栈区和堆区大小一样吗。

2024-08-25 10:47:20 350

原创 指针的学习和理解

在64位操作系统中,不管什么类型的指针都占8个字节。

2024-08-22 20:00:36 659

原创 Linux系统编程全面学习

一种可执行的二进制文件,编译好的代码。使用库可以提高开发效率Linux库分为静态库和动态库静态库:静态库在程序编译的时候会被链接到目标代码里面。所以我们的程序运行就不再需要该静态库了。因此编译出来的体积就比较大,静态库以lib开头.a结尾(10个程序都需要某个静态库,编译的时候就需要链接10次,不太方便)动态库: 动态库(也叫共享库)在程序编译的时候不会被链接到目标代码里面,所以我们的程序运行就需要该动态库。因此编译出来的体积就比较小。静态库以lib开头.so。

2024-08-22 19:58:10 1259

原创 QT事件机制理解

在操作系统中,用户操控硬件时的中断由操作系统所监控,比如,当用户点击了一下鼠标时,此时鼠标就产生了一个中断,操作系统监控到这个中断,向CPU发出响应的请求(即一种信号),CPU按照自己的时间片对这个响应请求进行响应并进入相应的函数对这个鼠标点击事件进行处理的过程,叫做响应。只能说信号槽的信号产生是由事件产生的。事件机制是CPU调度完成的,信号与槽机制是自动触发的,只要触发了信号,直接槽函数处理,不会等CPU。事件是信号槽中信号产生的基础,而不是信号槽,信号槽解决的是两个不相关的控件中的通信问题。

2024-08-20 12:45:09 391

原创 QT多线程和自定义信号

信息流转流程:线程里收到数据后,通过emit发出信号,同时信号中携带数据变量Buf,发出的信号导致执行槽函数,槽函数接收信号中的变量并处理myThread.hQ_OBJECT//加上这个宏才能使用信号和槽public://构造函数void run();//重写run,线程处理函数private:signals://声明信号socket=s;//ui界面只能在ui类里操作//发出信号在widget.cpp里连接信号和槽函数同时在widget.h声明槽函数。

2024-08-20 11:28:59 413

原创 Qt时钟 <QTime> <QTimer><QDatetime>

【代码】Qt时钟 <QTime> <QTimer><QDatetime>

2024-08-20 09:13:03 116

原创 MySQL快速使用

关系型数据库(RDBMS):建立在关系模型基础上,由多张相互连接的二维表组成的数据库特点:使用表存储数据,格式统一方便维护;使用SQL语言操作,标准统一使用方便。

2024-08-18 12:42:23 450

原创 Qt传入参数到mysql语句

这种格式直接写在mysql语句里。试过两种方法都成功了。传入参数,然后再使用。

2024-08-18 12:41:49 338

原创 QT的网络编程:TCP、UDP

快速学习tcp、udp通信

2024-08-11 17:46:05 347

原创 QT学习从零开始,开发一个串口调试助手

c语言就是面向过程的,C++就是面向对象的。举例: a+b:直接计算a+b就是面向过程。面向对象就是给a+b穿上了一层衣服。不是直接计算a+b。封装了再计算a+b,更加方便使用public:char age;对象是类的实例化。通过类定义的变量就是对象student my;删除堆定义的对象delete my;//目的是释放堆里面的内存。

2024-08-11 13:10:37 989

原创 ARM架构了解

现在说ARM,指一家半导体行业技术领先的公司,主要业务是设计RISC处理器(设计RISC处理器架构的公司);也指一类微处理器芯片或产品的统称,即采用ARM公司提供方案开发的处理器,像高通的处理器、华为的处理器,都叫ARM处理器。

2024-08-06 15:16:15 698

原创 Linux常用命令学习

kernel是核心,管理操作系统的硬件资源,包括内存、cpu、硬盘,运行在核心态,就是说运行在这个状态,CPU想干什么就干什么。apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。:普通用户的家目录,每创建一个新用户,就会在home目录下创建一个家目录。重定向就是把输入输出定义在一个文件,不显示在终端,而是输出到一个文件中。Linxu是一个多用户系统,不同的用户访问不同的文件,有不同的权限。:系统会识别一些设备,然后挂载在这个目录里,比如U盘、光驱。

2024-08-03 17:49:21 1115

原创 OLED、LCD

0.96寸OLED显示屏(驱动芯片:SSD1306/ SSD1315)1.3寸OLED显示屏(驱动芯片:SH1106)4Pin I2C接口7Pin SPI接口128*64像素像素颜色不限(有全白、蓝、第一行黄其他蓝)OLED一般由一个屏幕和一个PCB底板组成,驱动芯片(一个长条的东西)就在屏幕上。点阵屏,需要不断进行扫描刷新,但这里128*64的点阵屏,用单片机直接驱动显然无法完成,这里近乎200个引脚。因此需要一个单独负责扫描驱动的芯片,他的 任务就是扫描刷新,让屏幕不断显示内容。

2024-07-30 16:18:13 252

原创 TCP/UDP通信

TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。:传输层引入的概念,有了mac+ip地址,可以确定具体网络下的某一设备,但需要确定交换的数据交给哪个程序应用(进程)处理,是QQ还是微信,于是就需要端口号。:在网络层引入的地址,用于区分不同计算机是否属于同一子网络下。:物理层里网卡的地址,设备的唯一标识,不可变。建立了主机到主机的通信,

2024-07-29 18:57:13 467

原创 Wi-Fi、WLAN、Bluetooth、zigbee、蜂窝网络、4g5g、MQTT

为什么打开手机的WiFi连接,显示的是WLAN?分清Wi-Fi、WLAN、Bluetooth、zigbee、蜂窝网络、4g5g、MQTT这些概念.

2024-07-29 11:44:11 730

原创 STM32-FreeRTOS快速学习

FreeRTOS 满足实施系统对任务响应时间的要求。实时操作系统、轻量级(内核小,只需要几KB的ROM和RAM)、提供了一些内核功能,如任务管理、时间管理、内存管理和通信机制等。

2024-07-24 22:00:47 1158

原创 STM32+ESP8266(ESP32)+MQTT+阿里云物联网平台

设置发布主题后,客户端发送数据,阿里云平台收到数据,温度表和湿度表显示,点击开关,客户端mqtt.fx收到数据。在直接使用单片机与阿里云通信前,先利用mqtt.fx工具模拟客户端确认阿里云这边配置无问题。利用sscom串口工具,测试esp8266通过at指令发布订阅消息。在产品上添加物模型,然后设备是继承自产品的,因此也具有物模型。产品-设备-编辑物模型-设备端开发-查看上报数据。添加产品、添加设备、产品上添加物模型。绘制图形化界面,添加数据来源。可以看到设备状态变化。

2024-07-05 17:45:39 773

原创 STM32和DHT11使用显示温湿度度(代码理解)+单总线协议

基于STM32CT,利用DHT11采集温湿度数据,在OLED上显示。一定要阅读DHT11数据手册。

2024-07-05 17:44:58 1297

原创 【STM32HAL库学习】通信方式:USART、IIC、SPI

通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统。

2024-07-02 22:50:28 839

原创 【STM32HAL库学习】定时器功能、时钟以及各种模式理解

记录自己从学习了定时器理论->代码实现使用定时->查询数据手册,加深了对定时器的理解以及该过程遇到了的一些不清楚的知识。

2024-06-05 19:57:39 1835

原创 【STM32】影子寄存器简单理解

比如STM32参考手册里叙述可以在定时器计数的时候操作自动装载寄存器ARR,那么问题来了,在用户写了ARR时,此时定时器当前计数值与哪个定时值比较,会不会由于写的值小于当前计数值立即溢出?这就是影子寄存器的作用,写了ARR后,当前的计数值是和影子寄存器里的值比较的,当产生了更新事件或者手动情况下,自动装载值立即被送往影子寄存器。影子寄存器是个实际存在的寄存器,主要起一个缓存作用。

2024-05-30 17:52:13 520

原创 【STM32HAL库学习】定时器-HAL_TIM_Base_Start_IT和 HAL_TIM_Base_Start 区别

两者的区别在于是否开启中断,以及是否适用于周期性任务

2024-05-30 15:41:53 1284

原创 Java反射学习记录

Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。

2023-09-16 16:45:14 114

原创 @RequestParam 使用快速了解

`@RequestParam` 是 Spring MVC 中用来获取请求参数的注解之一。它用于将请求中的参数值绑定到方法的参数上。`@RequestParam` 注解有以下几个常用的属性:- `value`:指定要绑定的请求参数的名称。例如,`@RequestParam(value = "id")` 指定绑定名为 "id" 的请求参数。- `required`:指定该参数是否为必需的,默认为 `true`。如果设置为 `true`,但请求中没有包含该参数,则会抛出异常。如果设置为 `false`,

2023-09-12 17:34:52 884

原创 04 Java基本数据结构之链表

链表这一部分内容较多,同时实现起来最开始的时候也是笔者最开始不太理解的,掌握基础链表后,再进一步实现双端链表、有序链表、双向链表以及用链表实现栈、队列。

2023-07-11 16:12:57 796

原创 03 Java基本数据结构之优先级队列

在阅读本篇内容前希望简单看看上一篇关于队列的介绍,然后仍然先简单介绍一下优先级队列,然后是整体的代码实现,和普通队列的实现基本只有插入数据部分的不同,最后对每个部分需要注意的点作了详细说明。

2023-07-11 12:14:43 468

原创 02 Java基本数据结构之队列实现

仍然先简单介绍一下队列的基本结构,然后是整体的代码实现,最后对每个部分需要注意的点作了详细说明。队列,类似于栈,只是队列中第一个插入的数据项最先被移除(先进先出,FIFO),而在栈中,最后插入的数据项最先移除(LIFO)。

2023-07-10 15:56:00 525

原创 01 Java基本数据结构之栈实现

笔者在学习了数据结构后,希望通过Java实现加深印象,如栈、队列、链表等基本结构,可网上这方面资料比较少或者带有各种个人风格不太规范的代码,零零碎碎的,对于我这个初学者而言不太友好,有些地方不是很理解,因此阅读了《Java数据结构和算法》,学习里面的基本数据结构的Java实现,并参考里面代码写下博客记录自己的学习过程。同时文章主要专注于数据结构代码的实现和理解,对于数据结构原理部分不会很详细,希望能对有同样困惑的朋友有个小小的参考。

2023-07-10 11:08:37 784

原创 Scanner.nextLine()读取不到输入的坑,详细分析原因和解决方法

Scanner.next系列的输入读取和Scanner.nextLine()混用时导致读取不到数据。next nextInt nextDouble nextFloat和Scanner.nextLine()连用都会有问题。

2023-05-22 15:06:20 1230

原创 【Error】one of the variables needed for gradient computation has been modified by an inplace operatio

【Error】 one of the variables needed for gradient computation has been modified by an inplace operation

2023-05-16 17:19:07 1169

原创 【Error】 IndexError: index 300 is out of bounds for axis 0 with size 300

遍历300*300的图片,在遍历到边界 i=299 或者 j=299 的时候,存在 i+1 或者 j+1,导致数组越界。

2023-05-15 17:30:10 391

原创 【Error】 cannot unpack non-iterable NoneType object

返回其他任意类型值,但注意得返回2个。大多数情况是程序写错了导致返回的。

2023-05-13 17:29:57 1129

原创 【Error】 TypeError: ‘tuple‘ object does not support item assignment

【Error】 TypeError: 'tuple' object does not support item assignment,错误使用tuble

2023-05-13 17:23:49 188

锁定放大器multisim仿真.zip

基于AD630设计的锁定放大器,包含仿真文件和报告,可以参考,包含移相电路、比较器、滤波电路、乘法器等结构

2020-07-23

空空如也

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

TA关注的人

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