- 博客(108)
- 收藏
- 关注
原创 DeepSeek部署的一些问题
大模型并不知道你的这些私有的知识,所以我需要通过RAG技术来让大模型学习新的知识。检索:当用户提出问题时,系统会从外部的知识库中检索出于用户输入相关的内容增强:系统将检索到的信息与用户的输入结合,扩展模型的上下文。这让生成模型可以利用外部知识,是生成的答案更准和丰富。生成:生成模型基于增强后的输入生成最终的回答,它结合用户输入和检索到的信息,生成符合逻辑、准确且可读的文本内容这里需要再引入一个“微调”这个概念和RAG技术进行对比。“微调”:在已有。
2025-02-09 22:21:37
297
原创 python:函数
一般情况下,在外层函数执行结束之后,局部变量会被回收,如果有内部函数仍然需要访问这些变量,Python解释器会保留这些变量的引用,直到内部函数不再需要它们为止。
2024-12-20 16:51:13
735
原创 c++:多态性
父类指针的操作空间,只有父类自己的空间,所以当父类的指针被释放时,只会调用父类的析构函数,不会释放掉子类的空间,所以要使用虚析构函数(在析构函数前面加上virtual)在上面2.2的例子中我们是在栈上申请的一个Son类型对象,那我们现在就在堆上申请一个Son对象,再用父类指针指向它。创建一个父类的指针指向子类的对象,该指针指向访问父类中继承的成员,不能访问子类自己拓展的成员。上面说了,创建一个指向子类成员的父类指针,此时该指针只能访问父类的成员,而不能访问子类的成员。想调用父类中的show函数可以这样写。
2024-12-09 16:31:51
790
原创 c++:类型转换+多维数组
value:在这其中做了两个过程,先把int a进行类型转换成double,再由一个临时变量来保存这个(double)a的值,再把这个中间变量引用给value,但这个临时变量在第二行操作完成之后就会被释放,那value就没有引用的对象了,就会报错。value1:将int a保存的地址转化成double*类型,改变了访问的地址空间,会访问到非法空间,所以取出来的值也是非法的。将value设置为常引用,通过const延长value的生命周期,此时中间变量的生命周期也会延长,等value被释放时一起被释放。
2024-12-08 17:43:30
368
原创 函数指针与指针函数
在内存中申请一片空间0x7ffd1b14c0bc,用来存储变量a,里面的值为10,再把地址地址给pa,并返回pa,但在该函数运行结束之后,会释放栈区内所有变量,当运行到fun2时,又会重新把0x7ffd1b14c0bc用来存储变量b,里面的值为20,这就是悬控指针,应当避免,要在堆区进行申请空间,malloc或new。悬空指针:当指针指向的对象被释放,但仍然指向已经被回收了的内存地址。悬空指针——在栈区申请空间,被释放。野指针:未初始化的指针。
2024-11-27 21:32:44
366
原创 Makefile与CMake回顾
目标:依赖(tab)命令1(tab)命令2(加入@之后就不会打印执行的语句,直接打印输出的值)父:子:3.3在makefile中加入头文件目录3.4存在多个相同目标时,以最后一个目标为准二、CMake1.产生过程项目代码--->CMakeLists.txt(脚本文件)--->cmake(执行命令)--->生成makefile--->make(执行命令)mkdir build在build 下敲cmake ..命令再执行make就会生成可执行文件app2
2024-11-13 21:14:22
420
原创 Python复习1:
1.数字:int、float、bool2.字符串:string3.列表:list4.集合:set5.字典:dictionary。
2024-11-02 16:56:33
451
1
原创 c++:回顾(一)
class A{A(int a){//有参构造class Stuprivate:int age;A a;public:// 初始化列表// 初始化列表的调用时机:在构造函数调用之前// 如果要全部使用初始化列表来完成对类中属性的初始化,需按照顺序cout << "Stu的有参构造" << endl;cout<<"学号:"<<this->id<<"姓名:"<<this->name<<"年龄:"<<this->age<<endl;
2024-06-09 20:28:18
443
原创 IO多路复用回顾
1.进程中如果同时需要处理多路输入输出流,且在使用单进程单线程的情况下,就可以使用IO多路复用2.由于不需要创建新的进程和线程,减少系统的资源开销,减少上下文切换的次数。
2024-05-19 14:47:39
303
原创 进程间的IPC通信机制
进程与进程间的用户空间相互独立,内核空间共享。1.传统的进程间通信机制a.无名管道 pipeb.有名管道 fifoc.信号 signal2.system V中的IPC对象a.消息队列 message queueb.共享内存 shared memoryc.信号灯集 semaphoare3.可用于跨主机传输的通信机制a.套接字 socket。
2024-05-13 18:37:22
647
原创 IO:线程的同步互斥
将不访问共享资源的线程直接休眠,并设置一个唤醒条件,当线程需要访问的时候,其他线程通过制定的条件变量唤醒该线程。线程之间如果要进行通信,需要引入同步互斥机制,避免产生竞态,保证在同一时刻,只有一个线程在处理临界资源。当信号量的值=0时,申请失败,该申请操作会阻塞,线程休眠,等待信号量>0。3.如果申请上锁失败,说明互斥锁被别的线程占用,该线程进入休眠,等待互斥锁解开。2.互斥锁又被称之为二值信号量,只允许一个线程进入临界区,即信号量的初始值为1。2.申请上锁,进入临界区访问临界资源,退出临界区,解开锁。
2024-05-12 15:50:56
421
原创 线程知识点
线程:是一个进程并发执行多种任务的机制。串行:多个任务有序执行,一个任务执行完毕后,再去执行下一个任务并发:多个任务在单个CPU上运行,同一个时间片上只能运行一个任务,cpu不停在各个任务上切换并行:多任务在多个cpu上运行,同一个时间片上可以执行多个任务其中上下文:运行一个进程所需要的所有资源上下文切换:切换进程时,cpu访问的资源需要替换原先的资源,进程的上下文切换是个耗时操作,所以引入线程。因为线程属于同一进程下,共享其附属进程的所有资源。
2024-05-11 21:02:51
458
原创 c语言关键字
1.char:字符型变量,大小为1字节2.short:短整型,大小为2字节3.int:整形,大小为4字节4.long:长整型,大小为8字节5.float:单浮点型,大小为4字节6.double:双浮点型,大小为8字节7.unsigned:无符号类型,在定义char、short、int、long数据时可以用unsigned修饰。8.void:空类型关键字,函数无返回值或无参数。
2024-05-10 20:16:33
267
原创 FreeRTOS:day4
信号量:分别为二进制信号量和计数型信号量。互斥量:用于保护共享资源。缺点:FreeRTOS互斥量中没有实现谁上锁就由谁解锁。递归锁:在递归锁中哪个任务上锁就必须由哪个任务解锁。递归锁可以用于解决死锁问题。递归锁可以多次获取。事件组:事件组是一种同步机制,用于任务之间的通信和同步。它允许任务等待多个事件的状态,并且可以在任何事件设置唤醒等待任务。任务通知:无须创建,直接可以使用,通过任务控制块(TCB)来实现。
2024-04-20 11:48:23
206
原创 FreeRTOS:day3
任务的创建方式分为动态创建(xTaskCreate)和静态创建(xTaskCreateStatic)。区别:1.动态创建不需要自己提供栈,只需要制定栈的大小即可,静态创建任务需要自己提供栈的大小以及栈的空间(数组)。2.动态创建任务适用于随时需要创建任务和随时需要删除任务的场景,静态创建任务适用于任务数量确定的场景。3.动态创建任务需要消耗的资源会比较多,因为实在程序运行的时候创建,静态创建任务消耗的资源会比较少,因为它已经提前创建好了。4.动态创建任务会更加灵活。
2024-04-18 19:18:27
338
原创 FreeRTOS:day2
DMA是提供在外设和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速的移动,节省了CPU的资源,用来做其他操作。DMA+空闲中断用来接收长度不确定的数据空闲中断:在发送一串字符串时,两个字符之间的间隔非常短,所以在两个字符之间不叫空闲,当总线上在一个字节的时间内没有再接收到数据时,就会启动空闲中断。当发送完一次数据后,过一个发送字节的时间内没有收到数据,启动空闲中断,处理接收到的一包数据。DMA接收函数UART_HandleTypeDef *huart:接收串口。
2024-04-17 19:28:02
791
原创 FreeRTOS:day1
在使用Keil uVision5下载和编译代码时,注意工程设置、正确导入源代码、配置依赖项、检查编译器设置、确认调试配置、连接目标设备、下载代码前检查设备状态、及时解决错误。2.总结STM32Cubemx的使用方法和需要注意的事项。1.总结keil5下载代码和编译代码需要注意的事项。5.配置输入/输出模式、上下拉等;1.选择正确的MCU系列和型号;2.配置引脚、时钟和外设;6.生成代码并导入IDE;7.生成代码并导入IDE。1.选择对应MCU型号;3.选择需要配置的引脚;3.生成初始化代码;
2024-04-16 17:25:25
284
原创 QT:信号与槽
如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面。“,并给出两个按钮Yes|No,用户点击Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能。完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面。
2024-04-09 20:16:04
457
原创 QT:QMainWindow、ui界面、资源文件的添加、信号和槽
delete ui;qDebug()<<"登录成功";else{qDebug()<<"登录失败";
2024-04-08 20:10:29
368
原创 c++作业
2.写一个程序,程序包含两个类,类中实现一个成员函数,MyGetChar(),类A中每调用一次,按顺序得到一个数字字符,比如第一次调用得到'℃',第二次得到1',以此类推,类B没调用一次得到一个小写字母字符,比如第一次调用得到'a',第二次得到′b,以此类推,程序通过交替调用类A和类 B的函数,实现运行结果输出一串字符串“Oa1b2c3d4e5f6g7h8i9j0k112m3n4o5p6q7r8s9tuvwxyz”1.实现一个类,类中实现一个set 函数,设置一个成员a的值。
2024-04-06 21:21:25
377
原创 bit位清零、置1
单bit操作例如:0XFF bit5 清零先将1左移5位,即1<<5, 0000 0001 -> 0010 0000再将0010 0000取反 得 1101 1111最后将1111 1111 & 1101 1111,得1101 1111。
2024-03-30 14:43:43
418
原创 c++:引用
数据类型 &引用名 = 目标;引用必须初始化取变量的内存地址按位与&&逻辑与&表示定义引用如何区分何时是定义引用何时是取地址?如果&前面有数据类型,说明是定义引用如果&前面没有数据类型,说明是取变量地址。
2024-03-26 21:51:54
1116
原创 c++初步
c++中将字符串封装乘string类,后续可以用string定义字符串变量。如果导入了命名空间中和全局变量冲突的标识符时,后续访问该标识符会报错。访问全局变量: ::标识符名;(全局变量,默认在程序的匿名空间中)=,==,>,>=····运算符直接判断字符串间的关系。cout控制格式输出,只能输出十六进制、八进制和十进制。访问命名空间中的标识符: 命名空间名::标识符名。命名空间只能定义全局处/其他命名空间中。s1.empty:对字符串判空。s1.clear:清空字符串。
2024-03-25 23:25:23
470
原创 网络编程:IO多路复用
1.在有操作系统时,想让多任务并发执行,可以使用多进程或多线程完成多任务并发执行2.在没有操作系统的情况下,就不能使用多进程或多线程了,但是还仍然要让多任务并发执行,此时我们引入了IO多路复用技术3.原理:将多个阻塞任务的文件描述符,统一放到一个检测容器中,然后用一个阻塞函数进行管理,如果检测容器中有一个或多个文件描述符对应的事件发生,就会解除阻塞,进而去执行相应的函数。
2024-03-24 12:55:06
265
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人