自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 收藏
  • 关注

原创 数据结构总结

栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶(top)。当然,表也包括了很多类型,例如:线性表(链表),散列表,队列、栈等,他们都是表的一种特殊情况,而他们各自又可以根据情况不同,而使用不同的类型,比如说链表在不同的情况下可使用链表、双链表,循环链表。在这里,数值[0]所对应的便是milk,数值[3]所对应的便是apple,当我们查找apple时,它便会立马定位到数值[3],而不是通过遍历的方式从数值[0]一直往后遍历,因此它的时间复杂度仅为O(1)。

2024-04-12 14:58:50 1652 1

原创 算法题2两数相加

注意链表分为逆序和顺序,比如123,顺序为1-2-3,逆序则为3-2-1,链表在顺序中的第一个数是1,在逆序中的第一个数是3。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。返回dummy.next是因为dummy第一位是0,它的下一位节点才是我们需要的。的链表,表示两个非负的整数。它们每位数字都是按照。的方式存储的,并且每个节点只能存储。

2024-03-30 15:34:07 196

原创 数据结构与算法 哈希表(散列表)

因此,散列表的时间复杂度O(1)。当我们需要在数组里查找一个数时,就可以考虑到使用哈希表来降低时间复杂度了。所以,我们需要尽可能地高的填装因子和一个良好的散列函数,才能提高哈希表的性能。3.哈希表发生冲突时。

2024-03-29 14:59:51 586

原创 算法题1两数之和

问题:给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1]。但是,数组中同一个元素在答案里不能重复出现。不同于数组,哈希表找数的时间复杂度为O(1),所以这里的时间复杂度应为O(n)输入:nums = [2,7,11,15], target = 9。最容易理解,但是他的时间复杂为O(n2),因为这是两个for循环。

2024-03-29 14:43:33 426

原创 数据结构与算法分析2栈、队列

1.栈和队列本质上都是表,所以他们都有两种实现方式,链表实现和数列实现。栈的特点是后进先出。4.栈的危险操作:用尽栈空间,导致内容占用到别的寄存器里面去了,从而出现异常。6.队列的效果示意图。

2024-03-29 12:35:12 144

原创 数据结构与算法分析2表、链表

2.表的相关操作都可以由数组实现。但为了避免插入和删除的线性开销(所有元素都需要相应移动),发明了链表。下图就是表的一种表现方式。8.当所用高级语言没有指针时,使用游标实现法来实现链表。5.给出一个链表的类型声明和一些处理的函数。6.介绍双链表和循环链表。

2024-03-28 10:11:21 213

原创 数据结构与算法分析引论1

1.解决问题的算法有很多,但是在输入不同的情况下,不同算法之间的差异也很大,我们总是追求一个更快、更有效的方法。比如说普通的依次查找和二分查找,两者的差异就很大。我们使用大O表示法来表示算法的速度。依次查找就是O(n),而二分查找就是O(log2n)。假设4亿个数据,依次查找需要时间为4亿,而二分查找则是log2的4亿,当然这指的都是他们的最长时间,大O表示法指出了最糟糕情况下的运行时间。当然,不是所有问题都有好方法。2.在计算机科学中,除非有特别的说明,所有的对数都是以2为底的。

2024-03-26 22:36:56 307

原创 三.寄存器(内存访问)

2.并不是所有cpu都支持将数据段送入段寄存器,所以有时候用个别的寄存器先把数据段存储起来,再把该寄存器mov到段寄存器。

2024-03-24 20:41:15 127

原创 二.寄存器

10.在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=FFFFH,IP=0000H,即在8086PC机刚启动时,CPU从内存FFFFOH单元中读取指令执行,FFFFOH单元中的指令是8086PC机开机后执行的第一条指令。所以,要让CPU执行我们放在代码段中的指令,必须要将CS:IP指向所定义的代码段中的第一条指令的首地址。5.al,ah,ax在接受汇编指令时,并不相等,若是al、ah,就只是一个八位寄存器来使用,此时注意溢出的数值要清零。3.一个字是两个字节。

2024-03-23 22:59:40 179

原创 一.基础知识

前面所讲的内存读或写命令是由几根控制线综合发出的,其中有一根称为“读信号输出”的控制线负责由CPU向外传送读信号,CPU向该控制线上输出低电平表示将要读取数据;这也就是说,CPU在操控它们的时候,把它们都当作内存来对待,把它们总的看作一个由若干存储单元组成的逻辑存储器,这个逻辑存储器就是我们所说的内存地址空间。举例来讲,一个CPU的地址总线宽度为10,那么可以寻址1024个内存单元,这1024个可寻到的内存单元就构成这个CPU的内存地址空间。13.不同的计算机系统的内存地址空间的分配情况是不同的。

2024-03-21 22:57:46 398

原创 c#学习记录 委托lambda

3.委托有点类似于类里面的重载和模板,都是因为无法封闭,所以想出来的新办法。1.一些方法无法封闭,所以我们可以使用委托来封闭。2.方法里使用委托时,可以用lambda代替来写。

2024-03-19 14:32:44 88

原创 c#学习记录2

2.类里面override的方法必须继承自虚方法。virtual和override是对应的。多态的基础就是virtual和override,一个父类,多种实现。1.标为abstract的类是抽象类,不能实例化,只是用来继承的,并且內部不能有方法的具体实现除了构造函数。3.面向对象与面向过程的差异在于延展性,面向过程是写死的,很难再拓展的,但是面向对象是可以拓展更新的。8.结构体也是值类型 ,也有一种构造函数,但是构造函数必须要有参数。5.因为继承只能继承一个类,所以有了接口。4.is是判断,as是转换。

2024-03-17 16:58:12 972

原创 c#学习记录

8.readline读取的是字符串,parse()用来解析字符串,int a1=int.parse(read)即可使read变为int类型,当然read要是数字,否则会出问题。4.string a = ""与string a=string.empty等价,但是不等价于string a = null。5.类型可分为值类型和引用类型,string,list属于引用类型,并且null只能赋值给引用类型。例如:string a = @"123\t123";7.var是隐式类型,是自动给变量找到它的类型的。

2024-03-16 16:31:27 712

原创 深入理解计算机系统学习记录5

3.当执行一个运算时,如果一个有算数有符号,一个运算数无符号,这时会把有符号转换为无符号,并假设这两个数都非负的来执行这个运算。4.无符号数扩展位采用零扩展,有符号数扩展位采用符号扩展。无符号数加零即可,有符号数加最高有效位的值,即0或1。2.%d,%u和%x分别以有符号十进制、无符号十进制、十六进制格式输出一个数字。1.强制类型转换的结果保持位值不变,只是改变了解释这些位的方式。

2023-12-14 14:30:11 47

原创 深入理解计算机系统学习记录12.11

1.逻辑运算和位级运算很容易混淆,注意区分。

2023-12-11 22:46:52 42

原创 控制工程学习记录1

1.一阶常系数微分方程和二阶常系数微分方程。

2023-12-11 21:41:07 48

原创 深入理解计算机学习系统学习记录3

1.在几乎所有的机器上,多字节对象都被存储为连续的字节序列,对象的地址为所使用字节中最小的地址。2.二进制代码很少能在不同机器和操作系统组合之间移植。3.位级运算的一个常见用法就是实现掩码运算。

2023-12-10 21:41:14 30

原创 深入理解计算机系统学习记录2

2.操作系统两个基本功能:(1)防止硬件被失控的应用程序滥用(2)向应用程序提供简单一致的机制来控制复杂而又通常大不相同的低级硬件设备。3.进程是操作系统对一个正在运行的程序的一种抽象。而并发运行,则是一个进程的指令和另一个进程的指令交错运行。1.我们可以把操作系统看成是应用程序和硬件之间插入的一层软件。5.堆和栈在运行时都可以动态地扩展和收缩,调用一个函数,栈增长,从一个函数返回,栈收缩。7.要想显著加速整个系统,必须提升全系统中相当大的部分的速度。4.一个进程实际上可以由多个称为线程的执行单元组成。

2023-12-09 21:37:35 16

原创 深入理解计算机系统学习记录1

处理器看上去是按照一个非常简单的指令执行模型来操作的,这个模型是由指令集架构来决定的,但实际上现代处理器使用了非常复杂的机制来加速程序的执行,因为我们将处理器的指令集架构和处理器的微体系结构区分开来,指令集架构描述的是每条机器代码指令的效果,而微体系结构描述的是处理器实际上是如何实现的。一个简单的hello程序执行顺序:键盘输入,读入寄存器,传到内存,执行指令,从内存传到主存,pc读主存,执行其机器语言指令,字节复制到寄存器,再从寄存器复制到显示器显示。1.在unix系统上,从。0.信息就是位+上下文。

2023-12-07 22:55:20 22

原创 c语言读取dxf的直线信息

【代码】c语言读取dxf的直线信息。

2023-10-30 20:30:50 98

原创 c语言读取dxf文件的版本信息

只需要把你的dxf文件和cpp文件放在同一目录下即可运行。

2023-10-30 20:13:20 63

原创 mayo编译配置

加入dll文件和qt的platforms即可解决,注意,dll和platforms要放在mayo的debug文件夹下,再编译,即可运行。基本上是所有的if、endif(除了头文件那里),编译,报错,显示缺少dll,这时,参考我的文章。报新的错误,是io-occ.cpp文件里面有一部分代码未能完全实现,注释掉就行。4.打开io-occ.cpp文件,根据提示注释掉不需要的代码。在c++命令行里删除下面的命令,再编译。1.打开pro文件,运行,报错。3.配置完成,此时再编译,报错。

2023-10-25 09:07:00 187

原创 qt的samp2-3注释

【代码】qt的samp2-3注释。

2023-10-10 10:52:53 32

原创 occview.cpp新注释

【代码】occview.cpp新注释。

2023-10-09 09:47:34 174

原创 occqt.cpp新注释

【代码】occqt.cpp新注释。

2023-10-09 09:46:34 53

原创 opencv环境配置

点击“链接器-输入-添加依赖项”,将D:\opencv\build\x64\vc15\lib 文件夹下的opencv_world460d.lib 文件名复制到依赖项下,然后点击确定。将下载的opencv文件夹中的头文件添加到包含目录中,小编下载的opencv头文件存放路径是D:\opencv\build\include,然后点击确定。同样的方法添加库目录,小编opencv库文件存放的路径是D:\opencv\build\x64\vc15\lib,然后点击确定。在弹出的界面点击空项目,再点击下一步。

2023-10-09 09:44:32 34

原创 occview.cpp注释解析

【代码】occview.cpp注释解析。

2023-09-28 15:05:32 211

原创 occqt.cpp注释解析

【代码】occqt.cp注释解析。

2023-09-28 11:03:14 162

原创 occview.h解析注释

【代码】occview.h解析注释。

2023-09-27 12:05:45 106

原创 occqt.h解析注释

【代码】occqt.h解析注释。

2023-09-27 11:52:26 85

原创 qt学习记录9.20

2.在Qt中,'emit'是一个关键字,用于发出信号。Qt的信号和槽机制是Qt的核心特性之一,它用于对象之间的通信。当某个特定事件发生时,一个对象可以发出一个信号,而其他对象可以连接到这个信号,从而知道这个事件发生。例如,如果你有一个名为'mySignal'的信号,你可以使用'emit mySignal();qDebug是一个全局函数,可以直接输出调试错误信息,方便程序员调试程序,查找错误。1.在写自己的信号与槽时,在头文件中声明槽函数,在相应的cpp文件中定义槽函数。

2023-09-20 21:28:12 39

原创 关于qt与vs联合使用报错的解决方法

先把qt/msvc-64的platforms加入于项目的debug文件里,再把qt/msvc-64的bin文件中的dll文件全部放在debug文件里,即可成功运行。1.配置好环境后编译,出现问题。

2023-09-19 10:37:26 341 1

原创 occQt使用vs编译过程中遇到的问题和解决办法

四.我们在occqt的debug目录下添加所有的opencascade的dll文件(除了32位的,因为我们这里是使用64位的编译),以及qt中的msvc64的bin文件夹中的dll文件(这里会有dll重复,选择替换掉,因为有些occ中的dll文件和qt的dll文件版本不一致,实测后我发现得使用qt的dll文件,使用occ的dll文件会报错)。五.将qt的msvc64的plugin中的platforms文件放在occqt的debug目录下,当然,直接将里面的dll文件放在里面也可,如下。

2023-09-14 16:26:04 364 1

原创 qt编译得到的exe文件无法运行

先是显示缺一个libgcc_s_dw2-1.dll,加入该dll后,显示无法运行,我们需要这样设置环境变量。注意qt的bin在strawberry的bin前面。

2023-09-13 23:44:48 476 1

原创 opencascade环境配置

选则解决方案-属性-链接器-常规-附加库目录,输入lib文件目录,我的是D:\OpenCASCADE-7.7.0-vc14-64\opencascade-7.7.0\win64\vc14\libd。选则解决方案-属性-调试-环境,我的是输入PATH=D:\OpenCASCADE-7.7.0-vc14-64\opencascade-7.7.0\win64\vc14\bind;选则解决方案-属性-链接器-输入-附加依赖项,添加需要的lib文件,这里是所有的lib文件名。3.添加lib文件路径。

2023-09-12 16:10:03 553

原创 9.12学习记录

在许多编程语言中,你都可以找到类似的实现。我将为你列举一些常见的编程语言及其对应的 map 容器库,并简要介绍如何使用它们。这部分代码并且程序能够成功运行,可能是因为你在函数中没有实际抛出任何异常,或者你没有在程序中捕获这些异常。如果你移除了这个声明,编译器将无法知道函数可能会抛出哪些类型的异常,因此会报错。然而,如果你希望函数能够抛出异常并在调用该函数的地方捕获这些异常,那么你需要保留。这部分代码,程序仍然能够成功运行,那么可能是因为你没有在函数。留空,这样编译器将认为该函数不会抛出任何异常。

2023-09-12 11:10:10 20

原创 9.11学习记录

然而,有时候你可能需要对特定类型的模板进行一些特殊的处理。栈在许多算法和程序设计中都有应用,例如在计算机科学中的深度优先搜索,括号匹配,后缀/中缀/前缀表达式的求值,函数调用和递归等场景中。类模板特化是一种声明一个模板的特殊行为的方式,当模板被特定类型的参数实例化时,这个特殊行为就会发生。总的来说,类模板特化提供了一种在保持代码复用的同时,能够对特定类型进行特殊处理的方法,这是泛型编程中的一个强大工具。在日常生活中,我们可以将栈理解为一种累积或者堆积的方式,比如叠盘子,最后放上去的盘子将是第一个被取走的。

2023-09-11 21:16:05 29

原创 9.8学习记录

【代码】9.8学习记录。

2023-09-08 20:51:38 49 1

原创 9.7c++学习记录(7)

和 Complex Complex::operator+(Complex b,Complex c) { return Complex(r + b.r, i + b.i);成员初始化列表可以直接将参数的值传递给成员变量,而赋值运算符则需要先创建局部变量,然后再将局部变量的值赋给成员变量。在性能方面,成员初始化列表通常比赋值运算符更高效,因为它可以直接将参数的值传递给成员变量,而不需要创建额外的局部变量。另外,注意到在你的代码中,无论哪个函数,它们都使用了相同的返回类型和构造函数的参数。

2023-09-07 18:50:30 29

原创 9.6学习记录

子类必须提供这些抽象函数的实现。当删除派生类对象时,虚析构函数会确保先调用派生类的析构函数,然后再调用基类的析构函数。当使用基类的指针删除派生类对象时,如果基类没有包含虚析构函数,则只会调用基类的析构函数,这可能导致派生类资源没有被正确释放,从而产生资源泄漏。声明Employee的print为虚函数,则可访问到Manager的print函数,非虚函数,则只能访问到Employee的print。总结一下,虚析构函数主要用于解决基类的指针指向派生类对象,并用基类的指针删除派生类对象时可能出现的资源泄漏问题。

2023-09-06 13:33:03 36 1

空空如也

空空如也

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

TA关注的人

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