自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Whisper报错:ffmpeg返回异常值1

查看了whisper源码,发现其也是调用的cmd来使用ffmpeg,于是修改其audio.py中的audio方法中ffmpeg的具体位置。本地使用cmd命令显示ffmpeg可以用,但是使用python代码调用whisper包就报错。

2024-04-06 15:17:08 418

原创 左、右值(C++基础)

左值:有地址的值右值:字面量的值,无地址(临时对象)返回参数带&的方法可接收右值。&&是接收右值的意思,且在&之前加const也可以使传参接收右值,但是如果重载方法中同样含有&&的话会优先&&。

2024-04-02 15:32:09 132

原创 字符串优化&&单例模式(C++基础)

在各种实际应用中,使用字符串的场景不在少数,总有由于一些错误的代码书写,导致产生性能问题,我们今天学习一种针对字符串视图的优化方法,在展示方法之前先看一下普通情况产生内存分配的情况。在这段代码中,重写了内存分配的方法,使其产生内存分配的时候静态变量就会+1,依次来观察内存分配的次数。在这段代码中,产生了三次内存分配。我们使用string_view对此进行优化。使用上述方法可以将内存分配次数减少到0次。

2024-04-01 19:02:33 620

原创 调试技巧&&安全&&预编译头文件(C++基础)

大型项目中会用到,预编译的头文件是让你抓取一堆头文件,并把他们转化为编译器可以使用的格式,而不必一遍又一遍的读取这些头文件。作用:在修改了主函数内容之后,引入的头文件,不用一遍一遍的随着再次编译,而是早就转化为了二进制文件,可以大大加快编译的时间。条件调试来选择条件进入断点设置,操作调试来使达到断点条件后完成某些操作(一般是output窗口输出)。不只是头文件可以预编译,自己写的代码也可以,只是要确认不经常修改了,比如日志库等。应该转向使用智能指针,但也不是必须。在这里就只输出了小于6的条件。

2024-03-31 22:15:47 188

原创 结构化绑定&&optional(C++基础)

问题:使用std::variant为什么定义了两种类型,一直只能使用一种类型,但是空间却还是两种类型的空间,为什么不能像联合体那样声明空间最大的类型的空间,而不是两者之和的空间。所以直接选择optional类型,其可以用于表示值存不存在的问题,在处理这种打开是否有效的这种情况非常好用。variant可以声明变量可以是几种不同的类型值,与联合体不同的是,这几个值分别占各自的空间。,不能存储std::string,并且内存只取最大的,而variant是定义之和。提供的特性和安全性在很多情况下是非常有价值的。

2024-03-31 22:15:10 304

原创 dynamic_cast&&基准测试(C++基础)

dynamic_cast是专门用于沿继承层次结构进行的强制类型转换,更像是一个函数, 不是编译时进行的类型转换,而是在运行时计算,正因如此,有小性能损失。使用需要rtti是打开状态,在绝大多数状态,打开会增加开销,但关闭可能会带来错误,如果只想优化,编写非常快的代码,需要避免使用。结果是最后一种最快,第一种中间,第二种最慢,因为第三种unique指针效率最高,而第二种需要构造shared_ptr所以他效率最低。在基类和派生类之间相互转换。如果类型转换无效,就说明不是你声称的给定类型,那么就会返回null。

2024-03-28 19:31:34 289

原创 虚析构函数&&类型转换(C++基础)

C++有四种转换:static_cast,reinterpret_cast,dynamic_cast,const_cast。发现在进行多态对象销毁的时候,并没有执行多态对象的析构函数,这样就可能造成内存泄漏。使用了C++风格的代码不同之处在于编译出的检查比较友好,会给出提示。static_cast:静态抓换,会做一些编译时检查。c语言风格的就就是加上括号进行转换,可读性没那么好。因此,在执行可能不安全的向下转换时,推荐使用。这里的类型转换分为c语言风格的和c++风格的。以确保类型转换的安全性。

2024-03-22 11:31:06 229

原创 多维数组&&排序(C++基础)

至于为什么都返回false的时候1被排列在了中间,这是因为在这个特定的比较逻辑中,1既不比其他数字小,也不比其他数字大。由于1与任何非1数字比较时都返回false,所以它的相对位置取决于它在排序前的位置和其他数字的排序方式。结果是,1既不排在最前面,也不排在最后面,而是根据其他数字的相对位置,被排列在中间。结果是,1会排在所有其他数字之后,因为每当与1比较时,1都被视为“较大”的数。如果b是1,同样地,它也不认为b比a小,返回false。如果a是1,它不认为a比b小,返回false。猜猜下面代码运行结果?

2024-03-21 17:19:37 313

原创 类型双关&&联合体(C++基础)

类型双关就是在同样的一个内存中,存储的数据可以用做不同类型的表述。用在底层性能优化的时候,一般使用的时候要非常小心,因为不当的使用可能导致程序的不稳定和不可预测的行为。在上述行为的情况下,在大多数编译器和系统会出现未定义行为,因为整数和浮点数的内存布局是不同的,但在修改了value后,上述的a出的内存,因为本质上是一片内存。因为char指针占1个字节,所以挪动4次后会位于2的位置,此时转为int指针类型,就指向Entity对象的y。在这里对联合体和类型双关的表述是类似的。

2024-03-21 16:22:20 298

原创 github拉取项目找不到前端代码

今天从github上拉取了一个项目,使用docker部署在了服务器上, 代码正常运行,但是想在下载的项目中找前端代码遇到了问题,项目结构中的template模板只有一个页面,于是查看nginx配置文件引入了一些js文件,webpack打包造成,然后上csdn求助解决办法,可以使用shuji逆向解包。

2024-03-14 08:54:10 990

原创 docker不能正常启动

修改完毕,但是依然不能启动,选择备份数据后重装docker。将镜像备份,docker下所有内容换到一个文件夹内存储。可能是卸载的时候没有卸载掉镜像?

2024-03-13 11:10:01 428

原创 命名空间&&多线程&&计时(C++基础)

上述示例中,会调用orange中的print,因为apple中的print输入需要做隐性转换,但如果把orange去掉,apple中又可以正常使用,这样很容易造成一些错误,所以一定不要轻易使用命名空间,就使用apple::print就可以。不要在头文件内使用using namespace,一定要确保实在一个足够小的作用域下使用,在哪个范围内,比如函数、if语句等,但一定不要在头文件中使用!命名空间不能滥用,如果滥用了,那函数在命名空间中本来的含义又有什么意义呢。大部分情况都使用这个库来进行计时,

2024-03-12 23:46:46 342

原创 静态数组&&函数指针&&lambda表达式(C++基础)

array和普通数组相比,有边界检查,array存储在栈中,当速度最快的时候,是和普通数组一样的,它实际并不存储大小,size大小是直接给的模板参数,类中并不存储size变量,所以并不返回size变量,也不影响性能,而且有一些。这里带了()之后1,就变成了一个函数的声明,返回值为std::array,名叫newArray的函数。不需要通过函数的定义,就可以定义一个函数的办法,设置函数指针指向函数任何地方,我们都可以将它设置为lambda。返回第一个大于3的值,如果没有的话会报错!

2024-03-11 21:59:42 366

原创 ctrl c、v失灵

本来一直正常的, 突然在某次后就失灵了,排查半天,后来发现给xtranslator关了就正常了,出来clip文件夹,大多数都是有冲突导致的。

2024-03-11 14:41:02 545

原创 人工智能课题、模型源码

人工智能研究生毕业~深度学习、计算机视觉、时间序列预测(LSTM、GRU、informer系列)、python、人工智能项目代做和指导,各种opencv图像处理、图像分类模型(vgg、resnet、mobilenet、efficientnet等)、人脸检测、烟雾检测、人脸识别、表情识别、各种目标检测算法(yolo系列、rcnn系列等)、各种图像分割算法(unet、deeplab、maskrcnn等)、可视化ui界面等,tensorflow、keras、pytorch等deep learning框架均可,包括

2024-03-10 13:36:25 421

原创 宏&&auto关键字(C++基础)

如果是临时使用的变量,并且比较复杂,使用auto较为方便,如果需要大段代码使用,最好还是指明类型,增强代码的可读性,下图代码中需要保持一个良好的习惯,在类型位置和大括号前,经常性的。下面通过上图中借用不同开发模型设置的预处理器定义可以完成对代码的自动化,就比如可以完成在调试情况下输出控制台信息,而在开发环境下不输出。在不想使用using和typedef的情况下,来短暂的使用auto关键字·,或者在迭代器中短暂的使用,发现非常的方便,记得。程序可以顺利运行,但其实没有必要,因为类型也并不复杂。

2024-03-08 16:05:18 376

原创 返回多值&&模板(C++基础)

待补充~视频讲了项目,不太想听。

2024-03-07 10:54:38 350

原创 创建与使用库(C++基础)

当然像Engine是Game所依赖的,如果Engine有所改动,启动Game会发现存在一些问题。就比如清理解决方案后,构建Game,可以看到也是先构建的Engine。1.使用相对本文件路径,一般在实际开发中,并不推荐这样使用,可变性太强,容易导致错误。确保Engine配置类型为lib静态库,而Game配置类型为exe可执行文件。这时将生成出的exe文件移到别的文件夹下,也是可以运行的,说明已经链接成功了。在这里勾选出要引用的文件,在外部依赖项中可以看到其被引入。在Engine下新建Engine.h。

2024-03-06 22:03:01 345

原创 vs配置(持续更新)

中间目录:$(SolutionDir)bin\intermediates\$(Platform)\$(Configuration)\。输出目录:$(SolutionDir)bin\$(Platform)\$(Configuration)\。犯了一个大错,之前讲的vs配置没有做笔记,今天项目没法执行了!

2024-03-06 21:03:00 337 1

原创 静态链接&&动态链接(C++基础)

静态链接库是在编译的时候发生的,编译一个静态库的时候,将其链接在可执行文件,也就是应用程序上,或者连接到一个动态库,有点像取出那个静态库的内容,将它放在其他二进制数据中,它实际在动态库中或者在可执行文件中,正因为这样,很多优化可以进行,因为编译器和链接器现在知道,静态链接时,实际进入应用程序的代码,一般为lib文件,而动态链接指加载时对dll文件进行连接,一般来说,静态链接更快,静态链接允许更多优化发生。),一般dll文件都要与对应的lib文件配套使用,它们是同时编译的。

2024-03-06 20:04:05 1615 1

原创 箭头操作符&&动态数组(C++基础)

输出3,2e2引用后e就不能改变对象,哪怕不会报错,但对e2操作还是会操作在e上,而不是e3。使用引用来避免数据复制,参数传递、返回值、运算符重载等等都会用到。

2024-03-06 00:08:57 331 1

原创 深拷贝(C++基础)

在字符串、指针或者带有指针的对象拷贝的时候,如果只是简单做了赋值处理,不能拷贝一份指针指向的内存地址,只是拷贝了一份指向内存地址的指针,在对拷贝过的内存操作的时候就很可能带来一些错误,比如释放了拷贝过的内存,之前拷贝前的内存也会被释放,因为根本是同一个内存地址。运行后发现,输出都是lvx,并且在程序结束的时候会出线错误,说明lhx只有一个,并且被修改为lvx,而出现错误是因为在使用析构函数进行释放内存的时候,同一片内存被连续释放了。要习惯总是通过const引用去传递对象,但在某些情况下,复制可能更快。

2024-03-05 09:09:26 614

原创 生命周期&&智能指针(C++基础)

这里不会增加引用计数,当把shared_ptr赋值给另一个时,它会增加引用计数,但是把shared_ptr赋值给一个weak_ptr时,不会增加计数,因此当你。智能指针、联合指针这是作用域指针,还有很多例子,最简单的例子就是作用域指针了,本质上就是一个类,一个指针的包装类。,则会非常有用,就像你可能在对一个Entity列表进行排序,并不关心它们是否有效,只需要存储一个引用就可以,可以。智能指针使用场景:比如在一个类中要统计某对象从生成到析构的使用时间,就可以使用智能指针自动计算。的时候应该使用智能指针。

2024-03-05 08:40:54 1249

原创 重载运算符&&this关键词(C++基础)

听到这里的时候已经有点听不进去了,一方面是使用指针、引用和const关键字比较多有点晕,二方面是缺乏练习,然后去写了会儿力扣,结果更晕了,三方面是看到了一条语句,越看越晕。听了这么多就记住了,this关键词就是指针,一个。

2024-03-04 19:28:25 378

原创 new关键字&&explicit关键字(C++基础)

在使用name来构造就会发生变化,原因在于char类型和std::string类型并不通用,需要做二次类型转化(char->std::string->Entity),而隐性的类型转化只支持一次。上述两种声明方式,除了第一种方法会自动调用构造函数外,其他并无区别。一些C++策略可以让这个过程变得自动化,比如基于作用域的指针,也有些高级的策略及,比如引用计数。上:在内存上找到一个足够我们使用的内存块,然后分配一个指向那个地址的指针。在堆上声明的,使用过后一定要记得释放内存,

2024-03-04 11:41:16 323

原创 三元运算符&&创建对象(C++基础)

上述代码若第一个判断为真,进入下一个判断,下一个判断若为真,就是第一个结果,若为假就是第二个结果,而第一个判断若为假,就是第三个结果。简单的三元运算符就不进行介绍,下面代码是一个嵌套的二次判断的三元运算。还有其他指针类型:智能指针、共享指针。目前两种方式在栈和堆上进行。

2024-03-03 22:28:32 351

原创 mutable关键字&&构造函数初始化列表(C++基础)

使用场景:比如在实际项目中,想统计一个const过后的类对象的某个方法的使用次数,但如果将变量声明到类外,容易混乱,而声明在类中又会报错,所以使用关键字mutable后,便可以在类中声明可改变的变量。另外若类中有成员变量为其他类的对象时,若需要在构造函数中初始化赋值,假如不使用构造函数初始化列表,其他类的对象会初始化两次,造成性能的浪费。两种用法:一种在const方法中用于声明可以改变类成员变量,一种在lambda表达式中用于引用传递作为局部变量来使用。,若打破这个规则,可能会造成许多依赖问题。

2024-03-03 21:45:36 294

原创 const关键字(C++基础)

const关键词并不对实际代码产生影响,而是类似可见性,是一种针对开发者的强制规定。虽然是规定,但可以通过一定方法绕过。除了对的使用场景外,还有对和对的使用场景。

2024-03-03 12:12:46 354

原创 字符串字面量(C++基础)

实际开发使用中基本没有1字节的char,windows是2,linux是4,所以为了普适性,使用char16、char32来强制规定。\0也就是null,表明结束符,如果使用c语言中strlen函数进行计算,会得到\0之前的字符长度。字符串字面量定义,不允许被改变,新版本规定需要加const,不然会报错。在拼接字符串的时候大致分为两种方式:R和使用string命令空间。如果真的想修改这个字符变量,就应该把它定义为数组而不是指针。

2024-03-03 10:57:59 408

原创 数组&&字符串(C++基础)

在堆生命的数组不能获得数组的大小。example->size()会出错,可以通过一些小技巧,在声明数组的时候就将数组大小存储。下图example[2]最终的值为6可以说明这一点(32位系统中char大小为4)另外提供了一个官方的array数组,边界检查,更为安全,性能会慢一点点。生命周期不同,在栈只在作用域内有效,而在堆需要手动释放内存。std::string本质就是char数组和一些内置函数。两种声明方式,一种在栈,一个在堆。数组是位于内存中的连续空间。双引号字符串是常量不能相加。

2024-03-01 17:51:19 335

原创 可见性(C++基础)

并没有什么是一成不变的,并不推荐所有都用public,也不推荐所有都用private,然后都使用get&set方法。friend可以标记类,访问其内部属性(继承对象不能访问内部属性,但friend可以)protected这个类以及派生类可以访问,但不能在main函数中访问。类中模型为private,struct模型为public。public任何可以访问。

2024-03-01 16:49:49 306

原创 虚函数&&纯虚函数(C++基础)

在A继承B的函数括号后加override表示为重写函数,会有严格的语法检查。就比如Print函数输入为指向Printable类型对象的指针,那么使用这个函数只要是继承它的子类就都可以。是通过指针来访问对象的成员函数,这种用法通常用于指针或智能指针类型的对象。在C++中的主要差别在于它们分别用于指针类型的对象和直接的对象实例。A为B的子类,标记B的某个方法为虚函数,则A可以重写此函数。则是通过对象本身来直接调用成员函数,这种用法适用于对象实例。操作符,而直接访问对象的成员函数则使用。

2024-03-01 16:28:41 316

原创 继承(C++基础)

64位系统可以使用更多的内存,因为它们能够使用64位(或8字节)的内存地址,从而理论上可以直接寻址高达2^64(约18.4亿GB)个不同的内存地址。:在这样的系统中,CPU 的数据路径是32位宽,这意味着它可以在每个时钟周期内处理32位数据。在32位系统中,内存地址通常是以32位(或4字节)为单位进行寻址,因此理论上最多可以直接寻址到2^32(约4GB)个不同的内存地址。32位系统:也被称为x86,适合内存较少的计算机使用,由于寻址能力的限制,最多支持4G内存。因为如果没有显式初始化,它们的值是未定义的。

2024-03-01 15:42:47 314

原创 析构函数(c++基础)

在构造函数中做了一些初始化工作,如果不使用析构函数,可能会造成内存泄漏。比如在堆上分配了内存空间,也要手动的释放。手动释放后,声明的对象手动释放。手动去使用析构函数比较奇怪,唯一解释就是,在使用new 进行内存分配(也就是使用堆空间的时候),删除的时候使用free函数。总的来说构造函数和析构函数外观上唯一的区别就是析构函数前需要加波形符(~),定义方式和构造函数一样,都是类名定义。

2024-02-29 17:36:38 320

原创 Visual Studio 不能进入断点

在听Cherno课程中,可能会因为有些设置未改导致Visual Studio 不能进入断点,下图中优化错选为了最大优化,调整为禁用即可。

2024-02-27 17:41:20 453

原创 pycharm远程开发启动后闪退

将pycharm卸载(通过控制面板),而后将破解脚本卸载,重新安装解决。2.服务器上的集成开发环境多导致环境混乱。1.破解后修改配置文件导致。

2024-02-27 15:21:49 692

原创 Pycharm专业版双击打不开怎么办

在双击打不开之后,用了能搜到的所有方法都没有解决,最后猜测是因为破解未还原导致的,尝试了一下,果然!最后通过移除脚本进行解决,爽极了下图中的uninstall之后跳出Done,解决~

2024-02-27 15:18:40 375

原创 快速上手python连接mysql

python快速上手mysql数据库连接

2022-09-04 12:30:47 217 1

使用python轻松上手fsatdfs

由于python3.x版本问题,大家使用官网下载的工具包来操作fastdfs会报错,使用修改过的就不会出现问题了。 将工具包拖入项目的site-package即可。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

2022-11-22

layui+springboot实现的作业管理系统

基于jdk1.8,使用数据库mysql 系统包括管理员、老师、学生三者权限登录。 包含对管理员、老师、学生、作业、课程、班级、个人信息的管理 项目里有sql文件,可创建数据库后直接导入,在springboot的配置文件里修改连接数据库的相关信息。 如有其他不懂可直接联系qq,1379228428,可远程

2022-05-25

空空如也

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

TA关注的人

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