自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

范纹杉快拿中级职称的博客

范纹杉快拿中级职称的博客

  • 博客(58)
  • 问答 (1)
  • 收藏
  • 关注

原创 双相机结合halcon的条码检测

/ 存储解码后的条码数据。| `CreateBarCodeModel` | 创建条码检测模型 | `'quiet_zone'`, `'true'` |// 两台相机的图像。// 存储第一台相机捕获的图像。

2025-04-09 16:41:55 381

原创 代码改进想法

**异步方法调用**: 在多个地方使用 `await` 关键字进行异步操作,如 `SendHttpRequestWithRetryAsync` 和 `SendHttpRequestAsync`。- **新增日志输出**: 在关键步骤增加了详细的日志输出,如开始处理时间、发现的文件数量、处理进度、成功上传的数量和结束时间等。- **新增方法**: `ConfigureHttpClient` 方法用于配置 `HttpClient`。当然,我会在代码中对改动的地方进行标记。

2025-04-07 16:26:15 240

原创 私有字段与公有属性

类是对现实世界事物的抽象(如“人”“汽车”),包含**静态属性**(数据)和**动态行为**(方法)。| **特性** | **字段(成员变量)** | **属性** || **功能扩展** | 无业务逻辑能力 | 支持`get`/`set`中的任意逻辑|} // 业务逻辑。- **属性**:通过`get`/`set`控制数据访问,支持业务扩展(如数据校验)。

2025-03-13 15:11:22 266

原创 在C#中,字符串是不可变的(immutable),这意味着一旦字符串被创建,它的值就不能被改变。因此,调用ToUpper()或ToLower()方法并不会改变原始字符串,而是返回一个新的字符串。

ToUpper()`和`ToLower()`方法不会修改原始字符串,而是返回新的字符串对象。在这个例子中,`name3.ToUpper()`返回了一个新的字符串`upperName3`,而`name3`本身保持不变,仍然是`"james"`。- `name3 == name4.ToLower()` 比较的是`"james"`和`"james"`,结果为`true`。- `name3 == name4` 比较的是两个不同的字符串`"james"`和`"JAMES"`,结果为`false`。

2025-03-05 14:13:30 417

原创 C#获取文件夹下所有的文件

【代码】C#获取文件夹下所有的文件。

2025-01-20 14:06:39 805

原创 XML通过HTTP POST 请求发送到指定的 API 地址,进行数据回传

代码结构说明这段代码的主要功能是:从指定文件夹中读取所有 XML 文件。将每个 XML 文件的内容通过 HTTP POST 请求发送到指定的 API 地址。处理服务器的响应,并记录每个文件的处理结果。

2025-01-09 15:13:10 1029

原创 这段代码是一个使用 Halcon 图像处理库进行条形码扫描的类实现

类与方法注释: 每个方法和类都有详细的注释,解释了其功能、参数和返回值。关键代码块注释: 在关键代码块(如相机初始化、图像捕获、条形码检测等)中添加了注释,帮助理解代码的逻辑。资源管理注释: 在资源释放的代码块中添加了注释,确保资源的正确释放,避免内存泄漏。通过这些注释,代码的可读性和可维护性得到了显著提升。

2025-01-06 16:19:30 472

原创 这段代码通过循环遍历八张包含2/5 Interleaved条形码的图像

这段代码通过循环遍历八张包含2/5 Interleaved条形码的图像,首先尝试忽略校验字符读取条形码,然后再次读取并启用校验字符检查。- 使用 `read_image` 函数读取指定路径下的图像文件,文件名格式为 `'25interleaved' + (I$'.2')`,其中 `I` 是当前迭代的次数,`I$'.2'` 表示将数字 `I` 格式化为两位数(如01, 02, ..., 08)。- 再次尝试解码条形码,但这次包括校验字符的检查,并在图像上用黑色显示解码后的字符串(不包括校验字符)。

2024-12-09 15:43:49 308

原创 halcon实现条形码读取实例加代码解释

总的来说,这段代码旨在演示如何使用HALCON来读取2/5工业类型的条形码,并展示了如何处理校验字符以确保读取的准确性。这种双重读取的方法(一次忽略校验字符,一次包含校验字符)可以帮助评估条形码的质量和读取的可靠性。- 再次尝试解码条形码,但这次包括校验字符的检查,并在图像上用黑色显示解码后的字符串(不包括校验字符)。- 解码成功后,会在图像上用绿色高亮显示解码出的字符串,并特别标注最后一个字符(假设这是校验字符)。- 尝试忽略校验字符来读取条形码,这意味着即使校验字符不正确,也会尝试解码条形码。

2024-12-09 15:37:00 516

原创 halcon实现多个条形码读取功能

使用之前创建的一维码检测模型,在图像中查找类型为Code 128的一维码,并将结果存储在`SymbolRegions`和`DecodedDataStrings`中。需要注意的是,代码中的注释部分似乎有一些重复或未完成的内容,比如关于图像增强和去噪的部分被注释掉了。这行代码创建了一个一维码检测模型,并启用了“安静区域”选项(`quiet_zone`),这意味着在条码周围需要有一定的空白区域,以便于更准确地检测条码。- 获取图像的尺寸,存储在`Width`和`Height`变量中。

2024-12-06 16:08:33 996

原创 【经验分享】央企国企的群面、半结构面试复习方法和经验总结

这篇文章主要是讲一讲我在2024年秋招时,求职银行的整个经历和部分面经,主要是在最后会分享我自己当时准备面试的技巧和经验。如果你对金融央企(主要是银行)感兴趣的话,可以浏览一下,如果能对你有略微的一丢丢启发的话,就是我最大的快乐与荣幸!这篇文章主要是复习方法层面的分享,不仅仅适用于求职银行求职国企,也适用于学习其他新知识、其他考试,至少是比较适用于我自己,各位看官轻喷。

2024-09-08 17:03:41 2194

原创 高频知识总结 | 算法题如何刷?我的高效刷题方法

下面把我平时针对每道题的题号收集、博客资料收集的文档都分享给大家。注意!这个题号并不是说就要全部都刷,因为时间来不及,一定把我上面提到的高频题按分类给刷明白了,如果有余力再把剩下的给刷了!所有回溯递归都是一样的套路,明确递归的对象,对一个节点进行考虑,正如二叉树一样,回溯其就是 N叉树 + 剪枝明确递归的对象,要对哪个节点进行递归(二叉树)?还是对一张表的一个格子进行递归(岛屿问题)?还是要对一个状态进行递归(全排列树状图画出来)?

2024-09-08 16:58:56 1948

原创 高频知识汇总 | 【操作系统】面试题汇总(万字长博通俗易懂)

这篇我亲手整理的操作系统资料,融入了我个人的理解。当初我在研习八股文时,深感复习时的困扰,网上资料虽多,却过于繁杂,有的甚至冗余。例如,文件管理这部分,在实际面试中很少涉及,因此我仅深入探究了磁盘、缓存和内存的读写速度差异,未再深究其他内容。此文是我精心筛选的结晶,囊括了操作系统中最为核心、常被提及的知识点。我建议你首先掌握这些内容,再进一步探索更高级、全面的知识。

2023-12-23 20:38:33 1156

原创 【学习记录】动态数组(vector)的基本操作,包括插入、删除、扩容、输出、释放内存等。用C语言编写

这段代码主要用于演示一个基本的动态数组的实现,以及如何进行插入和删除操作。在主函数中,通过随机操作来测试这些功能,以及展示 vector 内容的输出。这段代码实现了一个简单的动态数组(vector)数据结构,允许用户插入和删除元素,以及动态扩展数组的容量。

2023-10-18 16:22:57 474

原创 高频知识汇总 |【计算机网络】面试题汇总(万字长文通俗易懂)

这篇【计算机网络】是我在学习时自己整理的,大部分都是按我个人的理解来写的答案。废话不多说直接铺干货。

2023-09-08 17:24:49 1466 2

原创 【数据结构】C++代码定义了一个动态数组(Vector)的数据结构,并实现了一些基本的操作,包括插入、删除、扩容和输出。

然后创建一个初始容量为2的动态数组,并使用循环执行一系列随机操作,包括插入、删除、扩容和输出操作。运算符动态分配两倍于原容量的新数组,将原数组的数据复制到新数组中,删除原数组的数据指针,将新数组的指针赋值给原数组的数据指针,最后将原数组的容量大小更新为新容量大小的两倍,并返回1表示扩容成功。然后从数组的末尾开始遍历,将数组中的元素向后移动一位,为要插入的元素腾出位置。这段代码定义了一个动态数组(Vector)的数据结构,并实现了一些基本的操作,包括插入、删除、扩容和输出。,表示数组的初始容量大小。

2023-09-07 16:15:10 792

原创 【数据结构】链表C++编写的,它定义了一个链表,并实现了一些基本的链表操作,如创建新节点、插入节点、清空链表、输出链表以及查找节点

该函数遍历链表,如果找到了与给定值相等的节点,则输出该节点及其后的所有节点,并在其前面输出一个标记符号"^"和"|",然后返回1表示找到了目标值。它通过循环遍历链表,找到指定位置的前一个节点,然后将新节点插入到该节点之后。该函数首先计算链表的长度,然后依次输出每个节点的数据和指向下一个节点的箭头符号。总结起来,这段代码实现了一个简单的链表数据结构,并提供了插入、查找和输出链表的功能。,用于在链表中插入一个新的节点。这段代码实现了一个简单的链表数据结构,并提供了插入、查找和输出链表的功能。

2023-09-07 15:54:34 842

原创 【数据结构】链表C语言编写的,它定义了一个链表,并实现了一些基本的链表操作,如创建新节点、插入节点、清空链表、输出链表以及查找节点

这段代码是用C语言编写的,它定义了一个链表,并实现了一些基本的链表操作,如创建新节点、插入节点、清空链表、输出链表以及查找节点。

2023-09-06 16:23:40 394

原创 【数据结构】动态数组(vector)的基本操作,包括插入、删除、扩容、输出、释放内存等。以下是代码的解释和注释:

函数中,通过随机数生成了一系列的插入和删除操作,并在每次操作后输出动态数组的内容。整个程序演示了动态数组的基本操作,包括创建、扩容、插入、删除、输出和释放内存。这段C代码实现了一个动态数组(vector)的基本操作,包括插入、删除、扩容、输出、释放内存等。这段代码首先包含了一些头文件,然后定义了一个名为。的结构体,用于表示动态数组。

2023-09-04 20:55:51 1647 1

原创 HZOJ#237. 递归实现排列型枚举

这段代码的目的是生成从1到n的所有全排列。全排列是指从n个不同元素中取出n个元素(也就是全部元素)进行排列的不同排列方式的总数。这里使用了回溯算法进行全排列的生成。回溯算法是一种通过探索所有可能的候选解来找出所有解的算法。如果候选解被确认不是一个解(或者至少不是最后一个),回溯算法会通过在上一步进行一些变化来舍弃该解。​ 从 1−n这 n个整数排成一排并打乱次序,按字典序输出所有可能的选择方案。​ 每行一组方案,每组方案中两个数之间用空格分隔。​ 输入一个整数 n。​ 注意每行最后一个数后没有空格。

2023-09-04 19:10:38 163

原创 HZOJ#236. 递归实现组合型枚举

对于每个可能的值k(从j开始,直到n),它将k赋值给当前位置的元素,并递归地调用函数f,将下一个位置、k+1作为新的j,n作为新的m。需要注意的是,这个程序没有对输入进行有效性检查,例如确保m小于等于n等。这段代码是一个C++程序,它的目的是生成所有可能的数组排列,使得数组的前m个元素都是不同的,且每个元素都在1到n的范围内。​ 从 1−n 这 n 个整数中随机选取 m个,每种方案里的数从小到大排列,按字典序输出所有可能的选择方案。在主函数main中,它从用户输入n和m的值,并调用函数f开始生成排列。

2023-09-04 17:02:52 196

原创 HZOJ-235:递归实现指数型枚举(c语言)

这是一个 C++ 程序,它使用递归函数来生成一个整数数组的所有可能排列。(这样在下一次递归中,它可以从下一个位置开始遍历),并且数组的长度仍然是。​ 从1−n这n个整数中随机选取任意多个,每种方案里的数从小到大排列,按。在每次赋值和打印数组后,函数都会打印当前的数组,然后继续下一次递归。需要注意的是,这个程序没有对输入值进行任何错误检查,所以如果输入的。的范围内遍历所有可能的数字,并将这些数字赋值给数组的第。是一个非常大的数,可能会导致堆栈溢出。函数,开始生成所有可能的数组排列。输出所有可能的选择方案。

2023-09-04 16:11:28 302

原创 leetcode弹簧板

题目描述 有一个小球掉落在一串连续的弹簧板上,小球落到某一个弹簧板后,会被弹到某一个地点,直到小球被弹到弹簧板以外的地方。假设有 n 个连续的弹簧板,每个弹簧板占一个单位距离,a[i] 代表代表第 ii 个弹簧板会把小球向前弹 a[i]个距离。比如位置 1 的弹簧能让小球前进 2 个距离到达位置 3。如果小球落到某个弹簧板后,经过一系列弹跳会被弹出弹簧板,那么小球就能从这个弹簧板弹出来。现在小球掉到了11 号弹簧板上面,那么这个小球会被弹起多少次,才会弹出弹簧板。1号弹簧板也算一次。

2023-09-04 10:24:52 508

原创 leetcode路飞吃桃,递归做法

路飞买了一堆桃子不知道个数,第一天吃了一半的桃子,还不过瘾,又多吃了一个。以后他每天吃剩下的桃子的一半还多一个,到 n天只剩下一个桃子了。路飞想知道一开始买了多少桃子。

2023-09-04 10:14:08 304

原创 标准代码书写准则,避免屎山代码风格指南

这是一个你的项目应该遵循的标准代码书写准则的列表,把称为适当的标准代码。避免屎山。

2023-07-20 18:03:32 690 1

原创 leetcode:两数之和,梦最开始的地方

这段代码实现了在一个整数数组中寻找两个数的组合,使得它们的和等于给定的目标值。它使用了两个嵌套的循环来遍历数组中的每个元素,并查找与目标值的差值。作为输入,并返回一个整数向量,其中包含两个索引值,表示在数组中找到了两个数的组合,它们的和等于目标值。然后,使用两个嵌套的循环来遍历数组中的每个元素。然后,内部循环继续遍历数组中的元素,直到找到一个与。如果未找到匹配项,函数将在结束所有循环后返回一个空的向量。从数组的第一个元素开始,内部循环变量。如果找到了匹配的元素,将外部循环变量。的差值,并将其存储在变量。

2023-07-15 21:45:35 89

原创 【C++课程大作业】C++实现基于多态的职工管理系统,黑马程序员课后作业

职工管理系统可以用来管理公司内所有员工的信息本教程主要利用C++来实现一个基于多态的职工管理系统。

2023-07-05 21:26:26 187 1

原创 【C++】一个简单的立方体类的实现,其中包含了一些成员函数和全局函数来计算立方体的表面积、体积以及判断两个立方体对象是否相等。

然后通过设置各个对象的长度、宽度和高度来进行初始化。接下来,分别使用成员函数和全局函数来判断两个立方体对象是否相等,并输出计算的表面积和体积。这段代码是一个简单的立方体类的实现,其中包含了一些成员函数和全局函数来计算立方体的表面积、体积以及判断两个立方体对象是否相等。用于在程序运行结束后暂停控制台窗口,以便查看输出结果。这行代码在不同的编译环境下可能需要根据实际情况进行调整或删除。类来表示立方体,并包含了一些成员函数和全局函数来实现相关的功能。函数中,首先创建了两个立方体对象。

2023-07-05 18:00:57 495 1

原创 C++笔记,设计一个class人类

类,并提供了相应的设置和获取函数。其中,姓名属性可读可写,年龄属性只读,情人属性只写。通过对象的成员函数对属性进行操作和访问。总结:该代码定义了一个具有姓名、年龄和情人属性的。的类,该类具有三个成员函数和三个私有成员变量。使程序暂停,以便观察输出结果。这段代码定义了一个名为。函数中,首先创建了一个。

2023-07-04 21:42:00 344 1

原创 C++课程设计大作业,设计一个简易通讯录,具有增删查改的功能

使用更合适的数据结构:目前的代码中使用了数组来存储联系人信息,但在插入和删除联系人时需要移动数组元素,效率较低。使用函数参数传递结构体对象:目前的代码中,每个函数都需要传递Addressbooks对象的指针作为参数,可以考虑将Addressbooks对象作为参数传递给函数,避免使用全局变量,并增加代码的可读性和可维护性。减少重复代码:目前的代码中,一些功能(例如输入姓名、性别、年龄、电话和住址)在多个函数中出现了重复的代码。可以将这些公共的代码提取出来,作为独立的函数进行复用,减少重复的劳动和代码冗余。

2023-07-01 11:37:23 441

原创 从零开始学C++,编写一段通讯录管理系统,具有增删查改的功能。课程设计大作业-通讯录管理系统

遍历通讯录中的联系人数组,如果找到了与指定姓名匹配的联系人,则返回该联系人在数组中的索引;首先判断通讯录是否已满,如果已满则提示无法添加,否则依次输入联系人的姓名、性别、年龄、电话和住址,并更新通讯录中联系人的个数。这段代码是一个简单的通讯录管理系统,它实现了添加联系人、显示联系人、删除联系人、查找联系人、修改联系人、清空联系人等功能。函数用于显示菜单界面,包括添加联系人、显示联系人、删除联系人、查找联系人、修改联系人、清空联系人和退出通讯录等选项。如果存在,则输出该联系人的姓名、性别、年龄、电话和住址;

2023-06-30 21:23:51 211

原创 从零开始学C++,设计一个结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5名人员。通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。

题目:设计一个结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5名人员。通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。函数使用嵌套的循环进行冒泡排序,比较相邻的两个元素的年龄大小,如果前一个元素的年龄大于后一个元素的年龄,则交换两个元素的位置。这段代码实现了一个结构体的定义,以及使用冒泡排序对一组按照年龄进行排序,并打印排序后的结果。函数中,定义了一个包含5个人员结构体的数组。函数会依次输出每个人员的姓名、性别和年龄。函数,传入排序后的数组。

2023-06-26 20:49:49 454

原创 从零开始学C++,创建和打印一个包含教师和学生信息的数据结构体

它接受一个教师数组和数组长度作为参数。在函数内部,通过循环遍历教师数组,为每个教师设置姓名,然后为每个教师的学生数组中的学生设置姓名和随机生成的成绩。在函数内部,通过循环遍历教师数组,打印每个教师的姓名,然后打印每个教师的学生数组中每个学生的姓名和成绩。总结来说,该程序通过结构体和数组来存储和管理教师和学生的信息,并通过调用相应的函数来填充数据和打印结果。这段代码是一个简单的C++程序,主要用于创建和打印一个包含教师和学生信息的数据结构。函数中,首先设置随机数种子,然后定义了一个包含3个教师的教师数组。

2023-06-26 17:02:35 279

原创 【leetcode】奶酪迷宫问题

时间限制: 3000MS内存限制: 589824KB题目描述:一只聪明的老鼠发现了一个三角形的奶酪迷宫。这个迷宫有若干个小房间,每个小房间有若干块大小相等的小奶酪(每个房间至少有一块奶酪)。奶酪迷宫的构造如下: (1) 奶酪迷宫一共有N行,第1行有一个小房间,第2行有两个房间,第3行有三个小房间,......第N行有N个小房间。(2) 所有的小房间都是从第1列开始进行排列的。(3) 奶酪迷宫的入口是第1行的那个小房间。

2023-06-25 16:21:53 308

原创 从零学C++,利用指针进行冒泡排序

内层循环比较数组中相邻的元素,如果它们的顺序不正确,则进行交换。函数,它实现了冒泡排序算法以升序排序数组。通过将数组的总大小除以一个整数的大小来计算数组的长度。函数来打印数组的元素。语句暂停程序的执行,以便在控制台窗口中查看结果。函数,传递数组和其长度作为参数进行排序。结束程序的执行并返回0,表示成功执行。次,表示需要进行的趟数以排序数组。并以与之前数组相同的值进行初始化。并使用未排序的整数值进行初始化。循环遍历数组的元素,并使用。函数中,声明了一个新的数组。函数,打印排序后的数组。是外层循环当前的趟数。

2023-06-25 15:25:49 354

原创 用C++实现单利,并详细说明过程和编程代码注释

单利是指在银行储蓄中,本金在一定时间内获得的利息,利息不会产生利息的一种计息方式。执行上述代码,程序会提示用户输入本金、年利率和存款时间,然后输出计算出的利息和本息和。在主函数中,我们先从标准输入中读取本金、年利率和存款时间。表示存款时间(以年为单位)。函数内部先计算出利息。的函数,用于计算单利。函数计算本息和,并将结果输出到标准输出中。在上述代码中,我们首先定义了一个名为。,然后将本金和利息相加,得到本息和。最后,函数返回本息和。

2023-06-20 21:23:38 575

原创 从零开始学C++,冒泡排序

这段代码是用 C++ 编写的,用于对一个整数数组进行升序排序。具体来说,它使用了嵌套的 for 循环来实现冒泡排序算法。外层循环控制排序轮数,内层循环控制每轮比较和交换操作。如果相邻两个元素的顺序不正确,则交换它们的位置。在排序完成后,代码使用另一个 for 循环遍历数组,并将每个元素打印到控制台上。最后,代码返回 0,表示程序正常结束。

2023-06-19 15:20:29 46

原创 从零开始学C++,数组倒置

这段代码是用C++编写的,它实现了将一个整数数组逆置的功能。具体来说,它首先创建一个长度为5的整数数组,并输出其原始顺序。然后,通过使用两个指针(start和end),它实现了数组的逆置。最后,它再次遍历数组,并输出逆置后的结果。

2023-06-19 15:07:01 746

原创 从零开始学C++,乘法口诀表

这段代码是用C++编写的,它打印出1到9的数字与它们的乘积之间的关系。具体来说,它使用两个嵌套的for循环来遍历每个数字对(i,j),其中i从1到9,j从1到i。对于每个数字对,代码将打印出j和i的乘积,中间用"*"隔开。

2023-06-19 15:06:53 201

原创 从零开始学C++,水仙花数

这是一个使用C++编写的程序,其功能是找到一个三位数,使得它的每个数字的立方和等于这个数字本身。这段代码将输出所有满足条件的三位数,从100开始一直检查到999为止。

2023-06-19 15:04:17 87

空空如也

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

TA关注的人

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