- 博客(35)
- 收藏
- 关注
原创 冒泡排序:简单而优雅的排序算法
冒泡排序虽然在效率上不是最优的,但它的实现非常简单,对于教学和理解排序算法的基本概念非常有帮助。在实际使用中,如果数据量不大或者基本有序,冒泡排序仍然是一个不错的选择。不过,对于大规模数据的排序,我们通常会选择更高效的排序算法,如快速排序、归并排序等。
2024-01-25 18:39:21
621
原创 vector的认识学习
C++中的vector是一种动态数组,它可以在运行时改变大小。与静态数组不同,vector可以自动管理内存,并在需要时重新分配内存以容纳更多的元素。这使得vector非常适合在不知道所需元素数量的情况下存储数据。本文将介绍vector的基本概念、使用方法以及注意事项。
2023-12-21 16:58:13
506
原创 Tesseract,PaddleOCR的Python使用
在官网下载TesseractOCR,然后配置环境变量,之后下载pytesseract包。
2025-09-07 15:34:41
341
原创 SpringCloud添加ai微服务(2)
(1)进行服务的配置首先要开启nacos服务,nacos就是服务的注册与发现。相似的还有zookeeper,eurekar。在这里添加nacos的配置,我这里的地址是虚拟机里面的地址,我将nacos部署在虚拟机的docker容器里面。(2)启动类添加注解添加这个注解,以便nacos能够发现这个服务。(3)确认注册成功在第一个图中我的nacos的地址是192.168.40.133:8848。那么进入网站的地址就是在这里我们就能看到名字叫ai-service的服务注册成功。
2025-09-04 02:09:31
825
原创 SpringCloud添加ai微服务(1)
添加新的模块,然后选择maven点击创建就行。之后进行导入Maven坐标,我这里使用的是ollama链接的本地大模型,因为这是是微服务项目,所以其他依赖可以直接导入Common微服务。修改启动类:AiServiceApplication.java。
2025-09-03 00:51:50
569
原创 多线程2之线程同步
线程同步是指多个线程在访问共享资源时,通过一定的机制来协调它们的执行顺序和访问方式,以确保共享资源在同一时刻只能被一个线程访问,或者在多个线程访问时能够保证数据的一致性和正确性。在多线程编程环境中,由于线程的执行是并发的,如果没有适当的同步机制,可能会导致数据竞争(data race)、死锁(deadlock)等问题。
2024-11-01 19:27:44
1177
1
原创 多线程的学习(1)
1.继承Thread类2.实现Runnable接口3.实现Callable接口run()run()call()FutureTask。
2024-10-21 19:45:28
515
原创 对象操作流
ObjectOutputStream用于将对象写入输出流,从而实现对象的序列化。而ObjectInputStream则用于从输入流中读取对象,实现对象的反序列化。综上所述,通过正确使用对象操作流以及合理实现Serializable接口和处理transient关键字与serialVersionUID,可以有效利用对象操作流来提高应用程序的可靠性和兼容性。
2024-08-04 22:35:55
370
1
原创 IO流学习
字节流是Java中用于处理二进制数据的一种机制,主要用于读取和写入字节(8位)数据。IO流,即输入输出流,是Java中实现输入输出的基础。根据流的方向和数据类型,可以将IO流进行分类,具体分类为字节流、字符流、输入流、输出流等。在Java中,处理文本文件的读写操作是非常常见的任务,而字符流则是实现这些操作的基础。在Java中,处理文件的读写操作是非常常见的任务,而字节流则是实现这些操作的基础。此外,Java的NIO(非阻塞IO)提供了与IO流不同的数据读写方式,主要用于文件的高效读写和网络通信中。
2024-08-04 22:27:00
623
原创 File类的学习
它是文件和目录路径名的抽象表示,文件和目录是可以通过File封装成对象的,对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也可以是不存在的。将来是要通过具体的操作把这个路径的内容转换为具体存在的,Java中的File类为文件系统操作提供了丰富的方法和功能,是进行文件处理和目录管理的强大工具。在使用中,开发者可以根据具体需求选择合适的构造方法和成员方法来完成相应的文件操作。File类的构造方法。
2024-07-30 21:55:45
974
1
原创 集合(Collection)
Java中的集合(Collection)是一种用于存储、操作和管理数据元素的数据结构。它提供了一种高效、灵活的方式来处理对象集合。集合的定义和基本特性定义:集合是Java中用于存储对象的容器,具体来说,它存放的是对象的引用,而非对象本身。这种设计使得集合能够有效地管理内存。互异性:在同一个集合中,任何两个元素都是不相同的,即同一个元素在集合中不会重复出现。动态性:集合能够根据需要动态地调整其大小,以便存储更多元素。集合的类型List。
2024-07-30 21:20:08
1255
原创 常用的API
在Object类中,toString()方法的默认实现返回一个由对象所属类的全限定名、'@'字符和对象哈希码的无符号十六进制表示组成的字符串。在Object类中,equals()方法的默认实现是比较两个对象的引用是否相同,即它们是否指向内存中的同一个位置。:此方法返回对象的哈希码值,这是一个整数。BigDecimal类是Java提供的一个用于精确计算的类,特别是在金融计算中经常使用,以避免浮点数计算中的精度损失问题。Java中的Date类是java.util包中的一个类,它表示特定的瞬间,精确到毫秒。
2024-06-05 22:04:48
1065
1
原创 常用类的介绍
StringBuilder 是一个可变的字符串类,我们可以把它看成是一个容器,这里的可变指的是 StringBuilder 对象中的内容是可变的。字符串的不可变,一旦创建了不可更改.对原有的字符串进行任何操作,都不影响原有的对象的值,会产生一个新的对象,String类代表的是字符串 ""包裹的内容属于字符串,双等号两边为基本数据类型,那么比较的是数据的值是否相等,双等号两边为引用数据类型,那么比较的是对象的。创建一个空白可变字符串对象,不含有任何内容。根据字符串的内容,来创建可变字符串对象。
2024-06-01 11:26:21
863
原创 JAVA内部类
Java内部类是定义在另一个类内部的类,它可以访问外部类的所有成员属性和方法。根据不同的使用场景和需求,Java内部类可以分为多种类型,下面对各种类型的内部类进行详细的介绍:内部类的基本概念:在一个类中定义一个类。比如说在类a的内部定义一个类b,那么这个类b就叫内部类。内部类展示:内部类的访问特点:1.内部类可以直接访问外部类的成员,包括私有。2.外部类要访问内部类成员必须创建内部类对象。代码展示:成员内部类 成员内部类(Member Inner Class)成员内部类的定义位置:在类中方
2024-05-26 22:37:16
641
2
原创 多态性的初步学习
多态性是面向对象编程的一个重要特性,它允许我们使用一个接口来表示不同类型的对象。在C++中,多态性主要通过虚函数(virtual function)和继承(inheritance)来实现。
2023-12-21 17:46:42
436
原创 二分法查找的学习
搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。在这个例子中,我们首先定义了一个名为`binarySearch`的函数,它接受一个整数数组、两个索引(表示要在其中搜索的数组的范围)和一个要查找的元素作为参数。二分法的基本思想是每次通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间被缩小为0。// 如果元素不存在于数组中。
2023-12-21 17:41:46
425
原创 c++结构体再学习
结构体的定义使用关键字 struct,后面跟着结构体的名称和一对花括号,花括号内是结构体的成员变量。例如:```cppint age;```这里定义了一个名为 Student 的结构体,包含三个成员变量:name(姓名),age(年龄)和 score(分数)。
2023-12-21 17:05:59
546
原创 c++各种排序的介绍学习
5. 堆排序:堆排序是一种选择排序,整体主要由构建初始堆+交换堆顶和末尾元素并重建堆两部分工作组成,依次将最大(小)元素“浮”到数列的顶部,然后与末尾元素交换,从而排除了当前最大(小)元素。3. 选择排序:选择排序的主要思想是每趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。4. 希尔排序:希尔排序是插入排序的一种更高效的改进版本,通过对值的间隔进行排序,可以在插入排序中实现小值移动的距离较远,大值移动的距离较小。
2023-12-21 16:42:16
1026
原创 学习c++运算符重载
运算符重载是C++中一种允许我们为自定义类型定义自己的运算符行为的特性。通过运算符重载,我们可以让自定义类型的对象像内置类型一样使用运算符。例如,我们可以为表示矩形的类定义加法和减法运算符:```cpppublic:// ...其他成员...// 加法运算符重载// 减法运算符重载```
2023-12-21 15:55:14
1084
原创 c++类的认识与学习
类是C++中用于描述对象属性和行为的一种抽象数据类型。类定义了对象的结构(成员变量)和行为(成员函数)。通过类,我们可以创建具有相同属性和行为的多个对象。
2023-12-21 15:49:38
859
原创 结构体类型学习
double X;double Y;int num;char sex;int age;类似于此的即是结构体类型。struct 结构名类名 成员名;结构体可以包含多个数据成员(data member),它们在"{ }"之间定义 特殊情况下,可以定义没有任何成员的结构。结构体成员的数据类型可以是基本类型、复合类型,也可以是扩展类型。int num;结构体变量的初始化int num;char sex;int age;int num;char sex;
2023-12-20 21:59:21
434
原创 初步认识引用(reference)
其次,一旦引用被初始化为一个对象,就不能被指向到另一个对象,而指针可以在任何时候指向到另一个对象。它是C++对C语言的重要扩充,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。但引用不同于指针,指针可以为任何有意义或无意义的值,而引用必须与某个具有内存地址的变量绑定。但引用不同于指针,指针可以为任何有意义或无意义的值,而引用必须与某个具有内存地址的变量绑定。总的来说,引用提供了一种简洁、安全的方式来操作变量或对象,它在C++编程中扮演着重要的角色。引用为变量引入一个别名。
2023-12-20 21:26:02
437
原创 指针的初步学习
"间接访问"方式 通过存放变量地址的变量去访问变量专门存放变量地址的变量指针变量指针即地址(address),某个对象(变量)在内存中的存储位置 变量的指针就是变量的地址 指针变量就是存放变量地址的变量 用来指向变量 采用*表示指向。需要注意的是,在使用指针时需要特别小心,因为指针可以指向任意类型的内存地址。因此,在使用指针时应该始终确保其指向正确的内存地址,并避免空指针的使用。指针声明的一般形式为:type *varName,其中type代表指针所指向变量的类型,varName是指针的名称。
2023-12-20 17:37:55
448
原创 程序设计基础—二维数组
例如,我们可以如下方式初始化一个3行4列的整型二维数组:int arr[3][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};因此,数组中的一个元素可以表示为arr[i][j],其中i和j分别代表元素所在的行和列。二维数组声明的一般形式为:type arrayName[行数][列数],其中type代表元素的数据类型,arrayName是数组的名称,行数和列数代表二维数组的维度大小。例如,我们可以定义一个3行4列的整型二维数组int arr[3][4]。
2023-12-20 17:27:38
564
原创 程序设计基础—一维数组
在C++编程语言中,数组是一种数据结构,用于存储一系列相同类型的元素。这些元素在内存中是连续存放的。数组中的每个元素都可以通过索引访问,索引从0开始,并依次递增。同一类型的有序的数据集合 组成数组的对象称为元素 类型 数组名[元素个数];例:int a[10]//表示a[0]-a[9]。注意:每个数组元素的数据类型相同,且可以是任何合法的数据类型 数组可以是一维的、二维的,甚至更高维的 int ARRAY[3][3][3];
2023-12-20 17:06:54
411
原创 程序设计基础—c++的数据表达
注释在程序中的作用是对程序进行注释和说明,以便阅读,提高可读性。注释分为两种,1.块注释2.行注释。1.块注释:/*......*/ 2.行注释://......
2023-12-20 16:59:44
398
原创 程序设计基础—了解c++
机器语言(Machine language) 机器代码,是计算机唯一能接受和执行的语言,由二进制码组成,直接对硬件操作 指令,每一串二进制码叫做指令,一条指令规定了计算机执行的一个动作 有几个字节组成,第一个字节为操作码(基本操作),其他为操作数(操作对象或操作对象的地址) 指令系统,一台计算机所能懂得的指令的集合叫做这台计算机的指令系统。
2023-12-20 16:48:40
480
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅