- 博客(69)
- 收藏
- 关注
原创 最简单的实验室资产管理系统,使用Flask,mysql,html(四、知识补充)
GET请求的数据放在URL里,读取用。POST请求的数据放在请求体里,读取用。
2025-07-07 16:35:32
198
原创 最简单的实验室资产管理系统,使用Flask,mysql,html(三、实验室资产管理系统)
用户通过前端的按钮或者什么的触发回调函数向后端服务器发送请求,后端服务器接收到请求之后处理mysql数据返回数据给前端,之后前端再进行可视化。其中后端也会将请求日志保存下来。
2025-07-07 16:05:04
284
原创 最简单的实验室资产管理系统,使用Flask,mysql,html(二、使用DBeaver可视化管理mysql表格)
对于ubantu20.04下载Debian。之后在下拉菜单中选择新建数据库链接。双击表格修改,之后ctrl+s保存。点击下面的按钮新建数据。
2025-07-07 15:27:16
202
原创 最简单的实验室资产管理系统,使用Flask,mysql,html(一、如何在ubantu配置mysql)
本文介绍了MySQL数据库的安装、配置和基本操作。安装部分包括更新软件包、安装MySQL服务及检查运行状态。配置部分详细说明了如何创建数据库(lab_assets)并指定字符集和排序规则,创建用户(flaskuser)并授权,以及刷新权限等操作。数据表部分展示了如何创建资产表(assets),其中包含自增ID、资产名称、描述、状态(可用/借出)、借用人和借用日期等字段,并对每个字段的用途和特性进行了说明。该指南提供了完整的MySQL数据库设置流程,适用于实验室资产管理系统的数据库搭建。
2025-07-07 15:11:19
877
原创 c++学习(十、共享指针和一般指针)
2.如果一个共享指针a申请了内存,另另外一个共享指针b等于a,那么即使a,b都被reset了,那么这个内存其实只释放了一次。因为共享指针维护了一个计数器,他能计数有多少个共享指针指向了当前的内存,当计数为0的时候,才会释放一次内存。因为程序结束的时候,已经申请好的内存会被释放,但是共享指针也会释放它,所以相同的内存被释放了两次,所以报错。对于一般指针,使用delete释放内存,指针不会自动变null,如果此时操作指针,那么就会造成内存泄漏。主要用于管理对象生命周期,不支持指针运算,可通过。
2025-07-02 17:25:40
371
原创 c++学习(九、内联函数)
由于在代码区,main函数和需要调用的函数对应的指令没有放在一起,所以执行函数的时候需要跳转,所以肯定需要保存现场,至少要保存当前指令的指针,为了函数执行结束之后可以跳转回来。对于内联函数,它只直接把函数的代码嵌入到main区域,如果函数多次调用的话,他就会多次嵌入,缺点就是占内存,优点就是计算快了,因为不需要来回保存现场和跳转了。当我们使用类创建一个对象,之后再某些场景下调用这个对象的成员函数,编译器会直接将该对象的成员函数对应的代码直接嵌入到当前区域。
2025-07-02 10:23:13
273
原创 c++学习(八、函数指针和线程)
对于auto boundFunc = boost::bind(&CBSROS::updateObstacleThread, this);,this是对象,updateObstacleThread是成员函数,有对象有成员函数,绑定在一起返回一个函数,可以直接调用这个函数了,就相当于调用当前成员的成员函数。上面的代码相当于创建了一个线程类,线程类里面执行的是当前对象的成员函数,之后找到一个指针来指向这个线程类,用来管理线程,比如让线程开始或者结束等。函数指针调用时候应该是。
2025-07-01 22:37:20
388
原创 c++学习(六、面向对象编程)
当子类继承父类的时候,也会继承这个虚函数指针和虚函数表,指向和父类相同的虚函数,这个时候对子类进行virtual重载,那会就会重写这个虚函数指针和虚函数表,虚函数表里面是重载的函数。因为编译器不会自动提供默认构造,需要自己写默认构造。正常来讲函数是不属于类的一部分的,但是如果在函数前面加上virtual关键字,那么就会在类中产生一个指针,这个指针指向一个虚函数表,这个表就是函数储存的位置。假设有class A,A中有class B,那么构造函数的时候,先构造B后构造A,析构的时候,先析构A,再析构B。
2025-06-30 23:00:36
962
原创 c++学习(七、模版)
比如交换两个变量的值,如果两个变量都是int需要写一个函数,都是double又需要写一个函数,但是使用模版函数,只需要一个函数就可以了。对于下面的例子,对于模版T,如果传入一个参数是int类型,一个是char类型,模版T不知道自己是int还是char类型,所以会报错。当有两个自定义类型比较是否相等的时候,直接==就会有问题,需要做额外的处理,也就是定制模版函数,定制的模版函数优先调用。普通类的成员函数在类初始化的时候创建。对于下面的func,是一个模版函数,但是没办法确定T的类型,所以报错。
2025-06-30 15:18:52
771
原创 c++学习(五、函数高级)
当传入变量的时候,操作系统选择没有const的函数,当传入的是一个常量的时候,操作系统选择有const的函数。函数占位还可以有默认参数,有了默认参数就不需要传参数了。又会产生歧义,操作系统不知道调用哪个重载函数。3.函数的类型不同或者个数不同或者顺序不同。函数站位需要传参数,不然报错。1.在同一个作用域下。
2025-06-28 23:31:03
399
原创 c++学习(四、引用)
2.既然是指针常量,那么一旦初始化之后就不可以更改,这个很正常,因为比如c现在是一个指针常量,我怎么修改它的指向呢,直接c = xxx,这会自动被编译器识别是值的变化,如果是&c没有这个语法。1.不能返回函数内部的局部变量,因为函数执行结束之后,这个变量的内存就被回收了,但是却返回了这个内存,所以当访问这个内存的时候,相当于调用了野指针,就会内存报错。3.引用可以作为左值,只要理解引用的本质是一个指针常量,其实这1,2,3都容易理解。当引用作为函数的参数的时候,希望可读而不可写,使用这种方式。
2025-06-28 23:12:36
290
原创 c++ 学习(二、结构体)
调用函数的时候,希望这个结构体是可读而不可写的时候,传指针,使用const修饰,方式误操作。结构体的所有成员变量默认全部都是public的,而class默认都是private的。
2025-06-28 22:48:30
188
原创 c++学习(一、指针)
对于32位操作系统,指针4个字节,对于64位操作系统,指针占8个字节。所以通过这种办法还可以判断你的操作系统的位数。初始化指针的时候,可以初始化空指针,空指针地址0-255,无法访问这个地址里面的内容,如果访问会报错。野指针也不可以访问,因为操作系统并没有分配这部分内容,直接访问可能出问题。所以如果强制访问会报错。2.指针不可变,值可变 指针常量。1.指针可变,值不可变。3.指针和值都不可变。
2025-06-28 22:40:20
242
原创 c++学习(三、内存四区)
文章摘要:程序内存主要分为四个区域:代码区存放编译后的指令;全局区存储全局变量、静态变量和常量;堆栈区由系统自动管理,存放函数参数和局部变量,函数结束即释放;堆区通过new申请内存,需手动释放或程序结束时自动释放。不同区域的变量存储位置和生命周期存在显著差异。
2025-06-28 14:03:24
259
原创 YOLOv5检测红花(自制数据集)
下面的这个代码中,我的基本文件夹是/home/yzh/红花视频,在这个文件夹下有文件名为21, 22, 23, 24, 26五个文件夹,这段代码的作用是将这五个文件夹的图片放到同级文件夹combined_images下,所有图片会自动重新命名。因为我们有很多视频,每个视频都分割一个图片放到一个文件夹里面,之后进行标注为了方便,我们还需要把所有的图片放到一个文件夹,之后还需要给所有的图片命名。image_original_path:图片路径/home/yzh/红花视频/相对稀疏的/21.mp4。
2025-06-15 11:25:20
754
原创 ESP32的spi通讯(Arduino)
这个路径下找到ESP32SPISlave库文件,上面的路径都是安装的第三方库都放在这里,重启Arduino,如果情况和下面一样,那么安装成成功。直接下载会有-master,把这个后缀删除即可。编译代码,版本正确,路径正确,那么成功配置。如果搜不到这个开发板那就执行下面操作。最后设置编译,查看是不是用的这个库。esp32自己核心的库放在。导入到arduino。
2025-06-14 20:44:55
518
原创 ubantu给普通用户配置sudo指令
最后一行添加如下内容,其中yzh是用户名,这个文件默认可读,可能还需要加写权限。使用下面指令验证sudo。第一次可能要设置密码。
2025-05-26 11:16:00
212
原创 docker部署XTdrone
由于修改了PX4 sitl_gazebo中的gazebo_gimbal_controller_plugin.cpp(源代码不能控制多无人机的云台),要再编译一次。在第四部安装gazebo的时候,实际上需要将xtdrone的gazebo_ros_pkgs放到一个工作空间中。Gazebo启动后,在另一个终端运行(注意要等Gazebo完全启动完成,或者可能脚本会报错)Gazebo包括Gazebo本身和ROS的插件,需要分别安装。首先卸载之前的Gazebo。编译完成后,会弹出Gazebo界面,将其关闭即可。
2025-05-25 23:00:07
664
原创 机械师安装ubantu双系统:三、GPT分区安装Ubantu
插入磁盘,重启系统,狂按F7(具体我也忘了),进入u盘启动模式,之后选择第三个UERF OS。选中空闲分区,点击加号,开始进行磁盘分区。之后出现下面的这个菜单,选第一个。第一个选EFI,分配500MB。右击左边灰色区域,点击属性。之后点击现在安装,开始安装。剩下的可以全部给根挂载点。所有附带软件正常安装。
2025-05-25 22:29:17
595
原创 机械师安装ubantu双系统:二、磁盘分区
如果发现可用压缩空间远小于磁盘的空闲空间,可以将磁盘的所有内容转到u盘里面,之后再从u盘复制到磁盘里面,出现这种现象的原因是磁盘存储的东西不连续。swap表示交换分区,当内存爆了或者程序挂起,会把数据放在这里。efi表示ubantu系统的引导程序。右击要分区的磁盘,之后点击压缩卷。将home和/放在一起。在搜索栏中搜索磁盘分区。home储存个人数据。
2025-05-25 17:30:54
349
原创 机械师安装ubantu双系统:一、制作系统盘
映像文件选择刚刚下载的ubantu.iso文件,设备选择自己的u盘,之后写入,等待。下载完成后一路安装就可以了。准备一个空的u盘,插入电脑。
2025-05-25 17:11:39
209
原创 机械师安装ubantu双系统:四、在ubantu安装常用软件
重启后可以发现右上角有搜狗输入法了,或者按ctrl+空格。根据自己的电脑选择对应的版本,架构的查看方式上面已经给出。之后给这个添加可执行权限并运行时,会报下面的错误。如果可以使用键盘正常控制小乌龟,那么安装成功。这个会提示一堆东西,自己看英文翻译看着来。点击上述网址,下载我圈住的区域。选择.deb的下载解压便可。选择.deb的下载解压便可。输入自己买的链接,之后导入。
2025-05-25 16:37:00
229
原创 如何使用docker配置ros-noetic环境并使用rviz,gazebo
其实这个东西是相当必要的,因为我们有时候需要在一台电脑上跑好几个项目,每个项目都有不同的依赖,这些依赖冲突搞得人头皮发麻,与其整理乱糟糟的依赖关系,不如直接给每个项目一个环境。(3)一个启动roscore 一个启动rviz或者gazebo。2.允许本地机器上的用户或进程连接到 X server。不允许就是sudo xhost -local。4.显示rviz和gazebo。(1)打开两个终端,进入容器内。二、docker 相关指令。
2025-05-07 22:47:20
699
原创 python库文件查找详解
当激活一个conda环境的时候,会自动执行miniconda3/envs/当前环境/etc/conda/activate.d文件夹下创脚本,会自动执行这个脚本。对于PATH这个环境变量,这个环境变量存的是一些可执行文件的路径,使用which python的时候,搜索的就是PATH这个环境变量的路径。注意:在ros中,我有很多功能包,我编译好工作空间之后,刷新环境变量,就会将这些功能包的路径加入到PYTHONPATH中,这样这些功能包中的库文件就可以相互调用。前者是使用pip安装,后者是使用apt安装。
2025-05-01 15:43:37
878
原创 ubantu部署yolov5(第四集:模型加速)
recipe_type 这个是稀疏化的配置直接从官网下,weights这个稀疏化权重也是直接从官网下,你只需要把--data改成自己的数据集的配置文件就可以了。如果太卡,还要改--batchsize。经过我的测试onnx和openvino是最快的。模型导出后,将onnx的路径加到上述二的脚本文件里面,直接运行。但是确实效率没提升多少,onnx的规模确实是下降了。文档上介绍效率很高,但是我实际使用感觉除了模型变小了一点,其他没有什么太大区别。将model_path替换为自己的onnx模型所在的位置。
2025-04-30 11:41:41
639
原创 ubantu部署yolov5(第三集:训练自己的数据)
配置文件的路径是:/home/yzh/yolo_v5/yolov5/data/my_dataset_17.yaml,my_dataset_17.yaml是你自己新建的配置文件的名称。一次标注完成后,会在一个目录下生成标签文件和一个class.txt文件,如果想要第二次标注直接加载上一次标注的信息,那么选择。训练完成后,训练的结果保存在/home/yzh/yolo_v5/yolov5/runs/train,包括权重和一些评价指标。--weight:预训练权重的位置,这个写上去就算没有他应该会自己下。
2025-04-30 11:13:51
804
原创 ubantu部署yolov5(第二集:部署与使用yolov5)
将所检测的图片放在yolov5/data/images路径下,检测的结果被放在yolov5/runs/detect/exp。vid.mp4为视频的路径,检测的结果被放在yolov5/runs/detect/exp路径下。这个需要进入上一集创建的虚拟环境里面执行,把包都装在虚拟环境里面。
2025-04-27 11:55:55
670
原创 ubantu部署yolov5(第一集:环境的安装与配置)
默认路径为/home/您的用户名/miniconda3,直接按Enter即可,或输入自定义路径。不同虚拟环境的库文件不同。所以进入不同的虚拟环境,执行下面这个指令,回显不同。2.根据选型,下面有指令,直接复制指令在虚拟环境中执行。打开虚拟环境,之后进入python,之后执行下面代码。如果成功打印出torch的版本,那么下载成功。:按Enter键逐页阅读,或者按Q退出阅读。3.运行脚本,安装miniconda。一、miniconda的安装与使用。①:miniconda的安装。1.下载最新的安装脚本。
2025-04-27 11:45:32
448
原创 ROS机器人开发实践->机器人建模与仿真
点击: 左上角 file ---> Save (保存路径功能包下的: models)然后 file ---> Exit Building Editor。
2025-04-20 14:08:41
1248
原创 ROS::一个功能包调用另外一个功能包的函数以及自定义msg
有的时候会碰到这个问题,在同一个工作空间下,我的一个msg写在了功能包a,一个函数也写在了功能包a,在功能包b中需要调用这个函数和msg。这篇博客就是解决这个问题。
2025-04-01 21:51:29
721
原创 ros调试工具foxglove使用指南三:在3d空间写写画画(Panel->3D ->Scene entity)
我想使用ros1在3d空间里面的某一个位置,显示一些文字。Scene entity的数据结构如下,显示一定的时间,我需要利用的是frame_id, life_time,texts。里面有两个属性,entities和deletions,其中entities是用来显示物体的,deletions使用来删除物体的。这里重点介绍entities,是一个SceneEntity的列表,代表。如果你想要在3d空间空间里面显示一些东西,比如文字,比如一些形状,而且想控制这些东西的显示时间,那么可以使用本文提到的方法。
2025-03-31 16:06:35
701
2
原创 rviz可视化(二、可视化八叉树地图)
先拿到点云数据,之后再把点云数据转化成可以使用rviz可视化八叉树地图的数据结构。2.安装rviz可视化八叉树地图的插件。主要是找到点云和八叉树地图相关的库。1.安装八叉树地图相关库。
2025-03-30 11:30:32
512
原创 mpc控制四旋翼无人机(使用acados,python)
包括四个文件,quadrotor_model.py, mpc_controller.py,mpc_solver.py,polynomial_trajectory_generator.py。激活虚拟环境成功后如下图,在最左边多了一个env,在这个虚拟环境下运行python文件,就是使用的这个虚拟环境下的python解释器和对应的库。如果不加上上面的代码,那么在运行下面的代码时,就会提示‘lbx‘的维度为0。这个库被装在虚拟环境下了,你在非虚拟环境下直接用透视找不到这个库。这个文件是数值分析仿真实验的内容。
2025-03-27 23:42:02
1192
原创 windows远程连接ubantu
现在工位上有两台电脑,一台windows的,一台unbantu的,但是windows操作比较方便,而且屏幕比较大, 所以想在windows上操作ubantu,需要用的ssh。运行ifconfig之后结果为,如果你的ubantu系统是插网线的,就找enp这种开头的网卡,如果连接的wlan,就找wlan开头的。这个不用太解释,打开vscode找到扩展,之后搜索这个扩展,之后安装就可以了。打开终端,运行下面的指令,如果找不到这个指令,就。之后在弹出的窗口中输入密码(ubantu的密码)(4)选择连接文件夹。
2025-03-24 15:21:01
1203
原创 ros调试工具foxglove使用指南三:显示日志(Panel->Log)
【代码】ros调试工具foxglove使用指南三:显示日志(Panel->Log)
2025-03-23 22:23:08
316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人