- 博客(92)
- 收藏
- 关注

原创 matlab绘制折线图基本操作
最后进行一个总结,绘制折线图,我们需要设置线型、标记、线条颜色,还需要设置线宽、标记大小、标记边缘颜色、标记面部颜色,还需要设置轴标签、标题、图例和字体,如果需要绘制多个图,需要使用hold on,这样后绘制的图就不会覆盖前面的图。
2023-04-20 15:49:21
23954
1

原创 粒子群算法优化策略总结
非线性递减惯性权重,前期w取值较大,具有较强的全局搜索能力,后期w取值较小,具有较强的局部搜索能力,而非线性递增惯性权重则与之相反,前期w取值较小,具有较强的局部搜索能力,后期w取值较大,具有较强的全局搜索能力。混沌Sine映射作为一种经典的混沌映射,具有良好的遍历性等优点,增加了算法的随机性,使算法在前期拥有较强的局部寻优能力的同时,在后期也拥有不错的全局寻优能力。通过混沌sine映射产生(0,1)的随机数,使得w增长的更慢,使得其前期具有更强的局部开发能力
2023-03-19 14:19:30
6830

原创 群智能优化计算中的混沌映射
经实验证明,采用混沌映射产生随机数的适应度函数值有明显提高,用混沌映射取代常规的均匀分布的随机数发生器可以得到更好的结果,特别是搜索空间中有许多局部解时,更容易搜索到全局最优解,利用混沌序列进行种群初始化、选择、交叉和变异等操作会影响算法的整个过程,而且常常能取得比伪随机数更好的效果。
2023-03-09 21:51:29
7711
13

原创 粒子群算法
当目标函数比较复杂时,普通的粒子群算法容易陷入局部最优,而且后期的收敛速度较慢,这会导致整个算法的效率和精度下降。影响粒子群算法的效率和精度的参数主要有惯性权重w、个体认知因子c1、群体认知因子c2。当w较大时,算法有着更好的全局搜索能力,当w较小时,算法有着更好的局部寻优能力;当c1较小、c2较大时,算法有着更好的局部寻优能力。恰当地选取算法的参数值可以改善算法的性能。
2023-03-06 16:57:56
16332
1

原创 static关键字的作用
函数也是具有外部连接属性的,编译器每次编译只处理一个编译单元,当某个编译单元需要使用其他编译单元中的函数,只需要声明该函数(或者包含该函数声明所在的头文件)然后就可以使用,当一个函数被static所修饰的时候,这个函数的外部连接属性就变成了内部连接属性,也就成为了静态函数,使得这个静态函数只能在自己所在的编译单元中被使用,而不能被其它编译单元所使用,否则会出现链接性错误。
2023-01-14 08:13:42
10029

原创 C语言rand()函数产生随机数详解
在调用rand函数之前,会先查询是否主动调用过srand(seed)来为伪随机数生成器设定种子,如果有,那么就按照我们的代码设定种子,即初始化seed的起始值,若没有调用srand(seed),那么系统会自动给seed赋初始值,即自动调用srand(1)一次,也就是将seed的值设置为1。如果每次调用rand函数时,种子相同,那么根据公式产生的伪随机数将是相同的。
2022-09-28 21:13:01
41020
15

原创 VS2019实用调试技巧
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,编译器对我们写的代码进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用,Release版本不能调试。
2022-05-19 17:45:13
7725

原创 C/C++清理输入缓冲区中的内容
1.清理输入缓冲区最后剩下的单个回车符:方法一:用getchar函数读取回车符,方法二:用scanf("%*c")读取掉回车符,方法三:用scanf(" %c",&ch)。 2.清理输入缓冲区中剩下的所有内容:方法一:用getchar函数结合循环语句,方法二:用scanf("%*[^\n]"):
2022-05-14 11:21:12
10600
2

原创 scanf语句的使用和执行原理
这说明scanf语句读取完数字后,会把后面的空格也读取掉。如果后面有变量来接收,读取后就会把空格赋值给对应的变量,如果没有变量来接收,那么仅仅是读取,不会进行赋值操作。值得注意的是,scanf只有在读取完数字后会继续把后面的空格读取掉
2022-02-07 11:10:31
13671
1
原创 使用可视化工具手动删除数据库记录后,新增数据id不是按顺序递增
在清空MySQL数据库中的表的记录后,重新插入数据时自增id不是从1开始,要想在插入数据时id从1开始,不能使用可视化工具手动删除,而要用truncate语句,该语句的作用是清空表中的数据,包括自增主键id。
2024-11-14 19:44:11
103
原创 Error creating bean with name ‘reactiveElasticsearchClient
由于我的程序没有用到reactiveElasticsearchClient,因此直接在启动类注解上加上如下代码,避免创建 reactiveElasticsearchClient Bean 即可解决程序报错。SpringBoot在启动过程中会通过启动类注解@SpringBootApplication中的自动配置注解@SpringBootConfiguration为第三方配置类创建bean对象。
2024-11-09 17:45:10
451
原创 Git推送被拒
原因是因为有人更新了test分支的代码,我在合并之前没有拉取最新的test分支代码,所以他提示我“推送前需要合并远程更改”,我们点击合并后,就相当于帮我们合并了最新更新的代码到我们要推送的test分支中,这样test分支中除了我们自己更新的代码之外的其他代码才与远程仓库中的代码一致,才能推送成功。
2024-10-16 18:16:48
773
1
原创 SpringMVC工作原理
HandlerAdapter 将会把处理器包装为适配器,从而支持多种类型的处理器,即适配器设计模式的应用,从而很容易支持很多类型的处理器,然后HandlerAdapter 将会根据适配的结果调用真正的处理器的功能处理方法,完成功能处理,并返回一个ModelAndView 对象(包含模型数据、逻辑视图名)
2024-07-23 10:31:51
457
原创 反射快速入门
反射就是通过字节码文件获取类的成员变量、构造方法和成员方法的所有信息。利用反射,我们可以获取成员变量的修饰符、名字、类型、取值。我们可以获取构造方法的名字、形参,并利用通过反射获取的构造方法创建对象。我们可以获取成员方法的修饰符、名字、形参、返回值、抛出的异常、注解,并运行通过反射获取的方法。
2024-07-03 17:31:55
317
1
原创 RxJava快速入门
Rxlava是基于观察者模式实现的,分别有观察者和被观察者两个角色,被观察者会实时传输数据流,观察者可以观测到这些数据流。基于传输和观察的过程,用户可以通过一些操作方法对数据进行转换或其他处理。在RxJava中,观察者就是Observer,被观察者是Observable和Flowable。
2024-06-29 16:34:22
393
原创 npm安装依赖过慢
今天在使用npm安装taro框架的依赖时,速度慢到吐血,使用了淘宝镜像源依然很慢,安装一个多小时没反应,最后清理了缓存再次安装速度就快很多了,因此解决方法大致有两种:
2024-06-07 16:11:31
863
原创 启动SpringBoot测试方法的时候报错:java.lang.NullPointerException
解决方法:(1)必须在SampleTest方法上添加@RunWith注解,来指定其测试环境(2)使用JUnit5的@Test注解,即junit.jupiter.api中的@Test注解
2024-05-30 16:44:27
450
原创 Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name
这个jar包是 mybatis开发团队为Spring Boot 提供了 MyBatis的整合的jar包,等于这个包是为了解决springboot整合mybatis用的,帮你做很多自动化的工作,当你配了这个以后,你再引入的mybatis-plus实际上是不会生效的。
2024-05-30 16:18:05
400
原创 org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘dataSource‘
今天启动一个测试类的时候 idea报错:Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource',原因是yml文件中数据库配置有问题,改正后正确通过测试
2024-05-30 16:05:25
281
原创 String s = “hello“和String s = new String(“hello“)的区别
这涉及字符串加载到字符串常量池的原理:由于字符串字面量先在编译阶段加载到class常量池中,然后在类加载阶段从类常量池中加载到运行时常量池中,当字符串字面量被调用的时候,会检查字符串常量池中是否包含该字符串对象,如果已经包含,则直接返回该字符串对象的引用,如果没有,则创建该字符串字面量对应的对象。
2024-05-11 16:20:56
374
原创 深入剖析JVM常量池(类常量池、运行时常量池、字符串常量池)
字符串常量池专门用于存储字符串常量。对于 Hotspot 虚拟机来说,类加载时,字符串字面量作为类常量池的一部分信息被载入运行时常量池中,它们以特殊的形式存储在运行时常量池中,此时它们并未被实例化为Java堆中的String对象。只有当这个字符串字面量被调用时,才会对其进行解析,即检查字符串常量池中是否已经存在相同内容的字符串对象。如果存在,就直接返回指向该对象的引用,如果不存在,虚拟机会在字符串常量池中创建一个对应的String实例,并返回这个新实例的引用。
2024-05-11 15:07:54
2580
原创 为什么反射慢?
对于基本数据类型的参数,它们必须被装箱成对应的包装类(如Integer、Double等),以便它们可以作为对象被传递。在方法实际执行时,如果方法的参数是基本类型,JVM需要基本类型的值,而不是它们的包装类对象。因此,JVM会自动进行拆箱。例如,如果你通过反射调用的方法期望得到一个int类型的参数,但你传入的是Integer,在调用过程中JVM会自动将Integer对象拆箱为int类型。装箱和拆箱操作涉及到额外的对象创建(装箱时)和对象值的提取(拆箱时),在高性能要求的场景下,过度的装箱和拆箱可能会导致性能瓶
2024-05-10 14:40:41
655
原创 为什么说反射是一种在运行时动态解析类信息的机制
普通的方法调用是在编译时确定的,这意味着编译器在编译代码时就知道要调用的方法是什么。但是,当涉及到反射时,情况就不同了,当我们使用反射来调用方法时,编译器无法在编译时确定要调用的方法,而是在运行时执行代码之后才能确定。
2024-05-10 10:32:23
395
原创 Q_DECL_IMPORT和Q_DECL_EXPORT的作用
在类或函数的声明中使用 Q_DECL_IMPORT,这个宏告诉编译器该类或函数是在另一个动态链接库中定义的,因此该类或函数是从外部库导入的,编译器应该生成适当的代码来处理导入。通常在头文件中的类和函数声明中使用,以便在使用该类或函数的代码中正确处理导入。
2024-01-18 11:02:07
2612
原创 VS+QT编译环境中字符乱码问题详解
原因在于这些中文字符串被GBK编码为源字符集,编译器会先采用GBK将这被GBK编码的源字符集解码,再用GB2312编码为执行字符集,而Qt5内部采用Unicode字符集,UTF-16编码,QT中的函数会将执行字符集使用UTF-8解码,再使用UTF-16编码为unicode字符集,QString内部使用UTF-8对执行字符集进行解码的时候,与执行字符集编码格式不一致,肯定会出现乱码现象。
2024-01-17 19:59:19
2211
原创 PCB电路板Bmp图像处理
解析PCB电路板的gerber文件,将PCB电路板图像显示并绘制出PCB电路板BMP图像用于喷墨打印,针对打印需求,需要输出1bit图像、2bit图像、1bit&2bit反色图、8bit墨量直观图、预览图和xml文件,同时,为控制喷头喷印的墨量,需要对图像进行处理,比如2bit灰度变化、抽点、削减线宽,为防止喷墨后有墨流出,需要对色块的边缘进行一圈筑坝。解析和显示部分由同事完成,本人主要完成PCB电路板BMP图像处理部分,即上述黑体字所描述的功能。
2024-01-14 15:59:25
1251
原创 利用Qt输出XML文件
xmlWriter.setAutoFormatting(true);//这一行设置xmlWriter为自动格式化模式,这意味着生成的 XML 文件将以更易读的格式排列,包括缩进和换行
2024-01-12 16:50:19
804
原创 C语言实现bmp图像底层数据读写与创建
创建bmp图像文件的方式有很多,比如用halcon,用qt,这些都是把已经画好的图像保存为bmp图像,有时候我们需要自己实现bmp图像底层数据的写入,进而创建一张bmp图像,比如我之前业务上的一个需求,喷印机喷头需要识别2bit图像,但是现有的图像处理库比如halcon,opencv,qt都无法直接生成一张2bit图像,这就需要我们自己创建一个文件,然后把bmp图像的底层数据写进去。
2024-01-12 09:56:26
698
原创 bmp图像文件格式超详解
位图数据(bitmap data):图像的像素值可以是RGB值,也可以是调色板的索引值。如果使用了调色板,那像素值就是调色板的索引值,可以根据像素值得到调色板索引值,然后根据调色板索引值找到相应的颜色,该颜色即为像素的颜色,如果用RGB值表示位图数据,那位图就没有调色板。通常8位深及8位深以下的图像会用到调色板,8位深以上的就不用调色板了,因为8位深以上的图像再使用调色板内存开销就会很大,直接使用RGB值存储,更节省内存。 以16位深图像为例,共有2^16=65536种颜色,如果使用调色板,调色板的大小就是
2024-01-11 17:59:17
7048
原创 bmp图像大小计算方式
首先计算图像每行字节数,直接95 * 1/8肯定是不行的,因为这没有考虑内存对齐。由于Windows在进行行扫描的时候最小的单位为4个字节,所以我们以4字节为单位计算图像的每行字节数,即width * bitCount/32,95 * 1/32 = 2(DWORD),这样算出来的结果就是以4字节为单位,windows进行行扫描的时候就不会出现扫描不到一整个4字节的情况,然而这样还是有问题的,它是一种向下取整,会损失像素信息,95 * 1%32=31,这31比特,不到4字节的信息就没被存储。所以我们要向上取整
2024-01-10 20:54:56
1351
原创 计算圆弧的起始角度、终止角度和矩形信息并使用drawArc绘制圆弧
正值的角度表示逆时针方向,而负值的角度表示顺时针方向。因此,如果你指定正值的 startAngle 和 spanAngle,那么绘制的弧形将是逆时针方向的;如果是负值,那么绘制的弧形将是顺时针方向的。0度位于时钟的 3 点钟位置。这意味着,如果 startAngle 为零,弧形的起始点将位于圆的最右侧,然后按照逆时针方向绘制。
2024-01-06 22:03:55
1353
原创 delete释放内存时卡在命令行窗口
如果指针指向的内存不是通过 new 关键字动态分配的,而是通过栈或全局/局部静态内存分配的,那么调用 delete[] 会导致未定义行为。确保在分配内存时,不要在后续的使用中越界访问该内存。越界访问可能破坏内存管理数据,导致未定义行为。最终调试发现,我的错误属于第四种,我在后续的代码中对ptr指向的动态内存越界访问了。如果 eTwoLineData 在被删除后再次被访问,就会发生未定义行为。如果同一个指针被删除了两次,这会导致未定义行为。
2023-10-19 14:34:46
231
原创 C6385:从“imageData”中读取的数据无效: 可读大小为“int __cdecl qCeil(double)(pixelWidth*pixelHeight)*1”个字节,但可能读取了“2”个
当使用unsigned char c = imageData[i]这种方式访问数组时,编译器默认根据对齐规则进行内存访问操作。对齐是指将变量存储在内存中的地址按照特定规则对齐的过程。当你使用unsigned char c = imageData[i]这种方式进行访问时,实际上编译器会认为你要读取imageData[i]这个字节,然后进行对齐操作,将它与下一个字节作为一个整体处理。这可能是因为读取一个单独的字节会导致未对齐的访问,可能会降低性能或导致硬件异常。因此,当你尝试读取一个字节时,编译器会默认读取
2023-09-14 09:43:14
701
原创 GetProcAddress无法获取动态库中函数的地址
原因在于GetProcAddress(hDll,"add")这个函数的第二个参数,第二个参数表示要调用的函数地址,add函数作为动态库dll2中的一个函数,在经过编译器编译后,采用_cdecl调用约定对应的函数名修饰规则对add函数名进行了修饰,修饰过后add的函数名变为?add@@YAHHH@Z,所以只需把第二个参数改为?add@@YAHHH@Z即可运行成功。
2023-06-09 10:40:24
1238
1
转载 C/C++函数调用约定和函数名称修饰规则
对于C++的类成员函数(其调用方式是thiscall),函数的名字修饰与非成员的C++函数稍有不同,首先就是在函数名字和参数表之间插入以“@”字符引导的类名;其次是参数表的开始标识不同,公有(public)成员函数的标识是“@@QAE”,保护(protected)成员函数的标识是“@@IAE”,私有(private)成员函数的标识是“@@AAE”,如果函数声明使用了const关键字,则相应的标识应分别为“@@QBE”,“@@IBE”和“@@ABE”。如果参数类型是类实例的引用,则使用“AAV1”,对于con
2023-06-09 10:08:31
595
原创 如何用VS2019创建并调用动态库
网上查了相关资料,创建动态库主要有两种方式,一种是通过空项目创建动态库,一种是直接创建动态链接库,本文所总结的就是第二种,直接创建动态链接库。
2023-06-01 17:02:33
3292
原创 报错:dll不是有效的win32应用程序
原因在于Dll3动态库是默认的启动项目,我们需要修改应用程序text3为启动项目:右键text3->选择“设为启动项目”->问题解决
2023-06-01 11:54:21
2424
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人