自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 刚装好vs后跑一个helloword报错0x761FC59B (shell32.dll)处(位于 ConsoleApplication2.exe 中)引发的异常: 0xC0000005: 读取位置

刚装好Visual Studio 后跑一个helloword报错0x761FC59B (shell32.dll)处(位于 ConsoleApplication2.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000004 时发生访问冲突。我的是Visual Studio 2019 其它版本应该也一样。进到选项设置,然后勾选和去掉这里的默认勾选。打开vs 找到工具栏。

2024-03-12 10:25:17 281

原创 CNN(卷积神经网络)介绍

首先什么是CNN呢?我们在这里模仿儿童的学习方式,当小孩子学习一个陌生东西的时候,往往会从问题开始,这里我们拿CNN做对比,来介绍什么是CNN。从上面的对话,我们知道CNN的全称是"Convolutional Neural Network"(卷积神经网络)。而神经网络是一种模仿生物神经网络(动物的中枢神经系统,特别是大脑)结构和功能的数学模型或计算模型。神经网络由大量的人工神经元组成,按不同的连接方式构建不同的网络。

2023-11-18 18:43:11 885

原创 日志生成封装导出备份及存入数据库(xx面板厂监控项目)

开发环境工具:vs2022,HeidiSQL,mysql-8.0.31-winx64。开发环境工具:clion,HeidiSQL,mysql-8.0.31-winx64。

2023-11-09 16:08:01 792

原创 Git操作指南及git常用命令汇总

如果本次代码合并主干请求中,有处理过冲突的操作,一定要二次检查确保无误,一定不要问题的发现都依赖检视代码的人,检视代码的人有时候也会有疏漏。正常操作下,出现异常结果,不要恐惧,不要着急乱点 (特别是不认识英文的情况下)稳定情绪,合理分析,冷静解决。(1)右键找到rebase按钮,注意分支名,左侧是本地分支,右侧是远程主干分支,同时勾选force勾选。(2)然后通过commit-id值找到对应的需要合并的记录,然后进行合并处理,一般是将后面提交的合并。【提交的时候,因为涉及到文件的替换,一定记得要比对下】

2023-11-07 16:33:07 788

原创 C语言:为什么要使用二级指针?

所以,当我们定义了一个指向指针的指针的时候(pointer to pointer),我们也称之为二级指针,那针对于这个二级指针来说,第一级指针存放的是指向的变量的地址,第二级指针存放的是第一级指针的地址。1. 传递指针的指针作为函数参数:当需要在函数中修改指针的值时,如果直接传递指针作为参数,函数内部只能修改指针指向的值,而无法修改指针本身。而通过传递指针的指针作为参数,函数内部可以修改指针的值,从而达到修改指针本身的目的。在C语言中,二级指针是指指向指针的指针,也被称为指针的指针。

2023-10-28 11:53:04 502

原创 力扣第一题,C语言实现,两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。提示:2 <= nums.length <= 104,-109 <= nums[i] <= 109,-109 <= target <= 109。示例 1:输入:nums = [2,7,11,15], target = 9,输出:[0,1]示例 2:输入:nums = [3,2,4], target = 6,输出:[1,2]

2023-10-28 11:41:05 201

原创 c++面试题2023版

c++最新2023版本面试题,吊打面试官.个人总结整理,适用于1.5w左右薪资以下的求职者

2023-10-28 11:38:58 184

原创 实现一个基于 Qt 的客户端程序和一个使用 WinSock2 进行通信的基于 C++ 的服务器程序

服务器接受客户端的连接,并为每个连接创建一个线程以处理收发包的操作。服务器程序负责监听客户端的连接请求,并创建新的线程来处理每个客户端的收发包操作。网络访问接口,实现的功能是:服务器一直监听一个端口,一旦有客户端连接请求,便建立连接,并向客户端发送一个字符串,然后客户端接收该字符串并显示出来。如果初始化和绑定成功,还会创建一个线程来处理接受新连接的请求(accept)。在一个循环中,接收客户端的数据,然后将接收到的数据发送回客户端。当有新的客户端连接时,会创建一个新的线程来处理该客户端的收发包操作。

2023-10-26 21:08:51 299

原创 静态库的创建(c++)

# g++ -I 头文件的目录-L·指定库的文件月录 -l 链接接的名称use_static_lib.cpp-o use_static_lib.exe。# -I 头义件的目灵[ 如买目录上有空格,则加上双引号]紧接着,在你的项目里创建一个cpp文件进行调用这个静态库。然后写对应的需求代码,然后点击小锤锤编译一下。# -l 链接库的名称。

2023-10-24 21:45:19 135

原创 clion内置翻译工具插件教程(超详细)

安装完成后,你可以使用"Translation"插件来翻译CLion中的文本。1. 打开CLion,并进入"Settings"(或"Preferences")菜单。在Mac上,可以通过"CLion"菜单找到"Preferences"选项。2. 在"Settings"(或"Preferences")窗口中,找到"Plugins"选项。5. 在搜索结果中,找到"Translation"插件并点击"Install"按钮进行安装。3. 在"Plugins"选项卡中,点击"Marketplace"按钮。

2023-10-23 22:04:02 1498

原创 智能指针有关代码解释(c++)

是C++标准库中提供的智能指针类,用于管理共享所有权的对象。它使用引用计数的方式来跟踪有多少个指针指向同一个对象,当没有指针指向该对象时,自动释放该对象的内存。这段代码主要介绍了C++中智能指针的使用。智能指针是为了实现自动释放动态内存的功能而设计的。智能指针是一种用于管理动态分配的内存的工具,它可以自动地进行内存的分配和释放,避免了手动管理内存的繁琐和容易出错的问题。是一个自定义的智能指针类,与。

2023-10-23 20:33:29 23

原创 大文件复制+断点续传技术

上述代码实现了一个将一个文件拷贝到另外一个文件的功能,并在过程中显示下载进度。

2023-10-23 20:18:28 45

原创 ini文件解析(c++)

【代码】ini文件解析(c++)

2023-10-23 20:10:38 694 2

原创 日志封装log(c++)

【代码】日志封装log。

2023-10-23 19:59:08 78

原创 c++ /QT 加锁的懒汉式单例

【代码】c++ /QT 加锁的懒汉式单例。

2023-10-23 11:25:21 73

原创 unordered_map和map的区别,从算法,底层实现原理区别,效率,桶树等结构等等多个层面解析(c++角度)

--而unordered_map底层实现是哈希表,它使用哈希函数将元素映射到桶中,可以在常数时间内完成基本操作,但是在最坏情况下,哈希冲突可能导致时间复杂度退化到O(n)。---由于map是基于红黑树实现的,它的插入、查找和删除操作的时间复杂度都是O(log n),相对于unordered_map而言,它在处理小规模数据时,性能表现较好。---而unordered_map是基于哈希表实现的,它的查找、插入和删除操作的时间复杂度都是O(1),相对于map而言,在处理大规模数据时,性能表现更好。

2023-10-10 21:16:11 984

原创 QT中使用信号槽的方式设计实现A.B两个界面的切换

当在AMainWindow窗口点击按钮时,将发射信号ASignal(),然后在AMainWindow类中的槽函数AmySlot()中可以实现显示BMainWindow窗口、隐藏AMainWindow窗口的逻辑。同样,当在BMainWindow窗口点击按钮时,将发射信号BSignal(),然后在AMainWindow类中的槽函数AmySlot2()中可以实现显示AMainWindow窗口、隐藏BMainWindow窗口的逻辑。在AMainWindow类的头文件(amainwindow.h)中,声明信号。

2023-10-09 20:55:19 160

原创 C++标准库中的函数模板,STL组件中数据类型转换用法使用解读

5. **调试和性能分析**:通过自定义分配器,你可以在内存分配和释放的过程中添加调试信息或性能分析代码,以便更好地监控和调试应用程序。1. **自定义内存管理**:如果你希望自定义字符串的内存管理方式,例如使用特定的内存池或内存分配策略,可以通过自定义分配器来实现。- **嵌入式系统**:在资源有限的嵌入式系统中,内存管理可能需要特殊的优化,自定义分配器可以帮助减少内存碎片和提高性能。- **实时系统**:在实时系统中,内存分配和释放的性能和可预测性非常重要,因此可以使用自定义分配器来满足实时要求。

2023-09-27 12:54:44 34

原创 c++:定义一个Dog类,包含体重和年龄两个成员变量及相应的成员函数。声明一个实例dog1,体重为5,年龄为10,使用I/O流把dog1的状态写入磁盘文件。再声明另一个实例dog2,通过读文件把dog

在`readFromFileBinary`函数中,我们使用`std::ifstream`以二进制模式打开相同的文件,并从文件中读取二进制数据,并将其解释为`weight`和`age`的值。在`main`函数中,我们创建了一个名为`dog1`的`Dog`对象,并将其状态写入名为`dog1.txt`和`dog1.bin`的文本和二进制文件中。然后,我们创建了一个名为`dog2`的空`Dog`对象,并从文本文件和二进制文件中读取`dog1`的状态,并将其赋值给`dog2`。最后,我们输出了`dog2`的状态。

2023-09-21 16:41:10 622

原创 c++中面向对象里面多态中的--虚函数,纯虚函数和虚析构函数(详细)

通过基类或基类对象的引用访问派生类中的成员函数,可以实现一些多态的效果。当使用基类类型的引用或基类对象调用派生类中的成员函数时,会根据实际对象的类型来确定要调用的函数版本。在面向对象编程中,派生类继承了基类的成员(包括成员函数),因此可以通过派生类的对象直接访问这些成员函数。同时,由于派生类是基类的一种特殊类型,可以使用基类类型的引用或基类对象来引用派生类的对象。利用基类或基类对象的引用访问派生类中的成员函数是指通过基类类型的引用或基类对象来调用派生类中定义的成员函数。然后,通过这些基类引用或对象调用。

2023-09-21 10:24:51 195

原创 在clion和Linux中如何连接数据库?(详细版)

34 //- `"localhost"`: 替换为您的MySQL服务器地址。在Linux上,可以使用包管理器进行安装。35 // - `"username"`: 替换为您的MySQL用户名。39 //可以修改SELECT语句中的"column1, column2, column3"部分,根据您的需求指定要查询的列名。40 //如果您想查询所有列,可以使用*通配符,如上述示例中的"SELECT * FROM table"。37 // - `"database"`: 替换为您要连接的数据库名称。

2023-09-20 22:47:32 218

原创 实现String字符串类,包含无参构造函数、有参构造函数、拷贝构造函数、size()求字符串长度、substr(int pos, int count)获取子串函数,并实现以下运算符重载:

/**实现String字符串类,包含无参构造函数、有参构造函数、拷贝构造函数、size()求字符串长度、substr(int pos, int count)获取子串函数,并实现以下运算符重载:==、!= 、> 、< 、= 、<< 、>> 、[]、+、+= */#ifndef INC_0908C_STRING_H#define INC_0908C_STRING_H#include <iostream>#include <cstring&gt

2023-09-19 09:07:36 38

原创 c++:实现一个类,删除/创建文件夹,并打印指定目录下的文件列表,并返回文件个数

函数来创建指定名称的文件夹。如果创建成功,会输出 "Directory created: 文件夹名" 并返回。如果创建失败,会输出 "Failed to create directory: 文件夹名" 并返回。函数来删除指定的文件。如果删除失败,会输出 "Failed to remove file: 文件名" 并返回。函数来遍历指定名称的目录,并输出目录中的文件名。函数会返回目录中的文件数量。函数来列出该目录中的文件。最后,输出目录中文件的总数。函数中,首先定义了一个文件名。函数来创建该文件夹。

2023-09-16 18:54:11 151

原创 c++先有对象还是先调用构造函数

c++先有对象还是先调用构造函数

2023-09-11 16:39:51 175

原创 二叉树的分类

3. 二叉搜索树(Binary Search Tree):二叉搜索树是一种特殊的二叉树,它的左子树中的所有节点的值都小于根节点的值,右子树中的所有节点的值都大于根节点的值。(由于是弱平衡,可以看到,在相同的节点的情况下,AVL树的高度低于红黑树),相对于严格要求的AVL树来说,它的旋转次数少,所哟对于搜索,插入和删除操作较多的情况下,我们就用红黑树。2. 完全二叉树(Complete Binary Tree):完全二叉树是一种二叉树,除了最后一层外,其他层的节点都是满的,并且最后一层的节点都靠左排列。

2023-09-04 15:10:40 154

原创 3. 无重复字符的最长子串

首先,判断当前字符 `s[i]` 是否在当前子串中已经出现过(即 `charIndex[s[i]] >= start`),如果是,则需要更新子串的起始位置为重复字符的下一个位置。然后,将当前字符 `s[i]` 的下标赋值给 `charIndex[s[i]]`,表示该字符已经出现过,并更新当前子串的长度 `currentLen`。然后,定义了变量 `maxLen` 用于存储最长子串的长度,变量 `start` 用于记录当前子串的起始位置,以及数组 `charIndex` 用于记录字符出现的位置。

2023-08-16 09:01:25 46

原创 2325. 解密消息

例如,key = "happy boy"(实际的加密密钥会包含字母表中每个字母 至少一次),据此,可以得到部分对照表('h' -> 'a'、'a' -> 'b'、'p' -> 'c'、'y' -> 'd'、'b' -> 'e'、'o' -> 'f')。示例 1:输入:key = "the quick brown fox jumps over the lazy dog", message = "vkbs bs t suepuv",输出:"this is a secret",解释:对照表如上图所示。

2023-08-16 09:00:29 33

原创 2315. 统计星号

在`countStars`函数中,我们使用一个变量`count`来记录星号的数量,使用一个变量`inPair`来判断当前字符是否在竖线对之间。示例 3:输入:s = "yo|uar|e**|b|e***au|tifu|l",输出:5,解释:需要考虑的字符加粗加斜体后:"yo|uar|e**|b|e***au|tifu|l"。解释:不在竖线对之间的字符加粗加斜体后,得到字符串:"l|*e*et|c**o|*de|"。示例 1:输入:s = "l|*e*et|c**o|*de|",输出:2。

2023-08-16 08:59:29 34

原创 1929. 数组串联

定义一个名为`getConcatenation`的函数,它接受一个整数数组`nums`、数组大小`numsSize`和一个指向整数的指针`returnSize`。该函数返回一个长度为`2 * numsSize`的整数数组`ans`,其中`ans`由两个`nums`数组串联形成。在`main`函数中,我们定义了一个示例数组`nums`,然后调用`getConcatenation`函数来获取答案数组`ans`。ans[i + n] == nums[i],具体而言,ans 由两个 nums 数组 串联 形成。

2023-08-16 08:58:45 117

原创 1920. 基于排列构建数组

解释:数组ans构建如下:ans = [nums[nums[0]], nums[nums[1]], nums[nums[2]], nums[nums[3]], nums[nums[4]], nums[nums[5]]]= [nums[0], nums[2], nums[1], nums[5], nums[3], nums[4]]= [0,1,2,4,5,3]这是 `main` 函数的定义,其中定义了一个示例数组 `nums`,并通过计算数组元素个数的方式得到数组的大小 `numsSize`。

2023-08-16 08:58:15 20

原创 两个数组的交集

给定两个数组 nums1 和 nums2 ,返回 它们的交集。解释:[4,9] 也是可通过的,提示:1 <= nums1.length, nums2.length <= 1000。示例 2:输入:nums1 = [4,9,5], nums2 = [9,4,9,8,4],输出:[9,4]示例 1:输入:nums1 = [1,2,2,1], nums2 = [2,2],输出:[2]//遍历第二个数组,如果元素在hash数组中存在且未被标记为-1,则将其加入结果数组。

2023-08-16 08:57:22 36

原创 C语言:字符统计及重排

else if(isupper(s[j])&& isupper(s[j+1])&&s[j>s[j+1]]){//同大写,需按自然顺序。} else if (islower(s[j])&& islower(s[j+1])&&s[j]>s[j+1]){ //同小写。}else if(hash[s[j]]==hash[s[j+1]]){ //若个数相同则需要考虑下方场景。输出描述:按照字母出现次数从大到小的顺序输出各个字母和字母次数,用英文分号分隔,注意末尾的分号:字母和次数间用英文冒号分隔.

2023-08-11 08:43:26 201

原创 C语言:力扣88题,删除字符串中字符最少字符

最后,再次遍历字符串,删除出现频率为minCount的字符,并输出结果。// 外层循环遍历字符串的每个字符,内层循环将当前字符之后的字符串逐渐前移,来删除最小频率的字符。示例2:输入:aabbccdd,输出:empty,说明:如果字符串的字符都被删除,则范围empty。* 然后遍历字符串统计每个字符串出现的频率,然后找到频率最小的字符删除,最后在遍历输出。* 首先定义长度为26的数组count,用于记录每个小写字母出现的频率,删除字符串中出现次数最少的字符,如果有多个字符出现次数一样,则都删除.

2023-08-10 22:15:21 175

原创 C语言:字符串的解压缩

void decompressString(char* str) { //解压。if(num == 0){//字符前没有数字 只放一个字符。void compressString(char* str) { //压缩。printf("请输入要解压缩的字符串:");printf("请输入要压缩的字符串:");printf("压缩后的字符串为:");

2023-08-10 22:14:23 715

原创 C语言:文件调用

在 `demo.c` 文件中,我们首先定义了三个数组 `arr1`、`arr2`、`arr3`,并分别调用了选择排序、冒泡排序和插入排序函数对它们进行排序。然后,我们输出排序前和排序后的数组内容。首先,我们在 `sort.c` 文件中实现选择排序、冒泡排序和插入排序的函数。接下来,我们在 `sort.h` 文件中声明这几个排序函数。最后,在 `demo.c` 文件中调用这几个排序函数。编译并运行 `demo.c` 文件,即可看到排序结果。

2023-08-10 22:13:19 424

原创 C语言:力扣268,丢失的数字

示例 1:输入:nums = [3,0,1],输出:2,解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。示例 3:输入:nums = [9,6,4,2,3,5,7,0,1],输出:8,解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。3. 根据等差数列的求和公式,计算期望的和 `expectedSum`,即 `numsSize * (numsSize + 1) / 2`,其中 `numsSize` 是数组 `nums` 的长度。

2023-08-10 22:11:46 128

原创 C语言:力扣263题,丑数

/这个函数首先检查输入的数是否小于等于0,如果是则返回false。然后,它使用循环将输入的数除以2、3和5,直到无法再整除为止。最后,它检查剩余的数是否等于1,如果是则返回true,否则返回false。示例 3:输入:n = 14,输出:false,解释:14 不是丑数,因为它包含了另外一个质因数 7。解释:1 没有质因数,因此它的全部质因数是 {2, 3, 5} 的空集。示例 1:输入:n = 6,输出:true,解释:6 = 2 × 3。示例 2:输入:n = 1,输出:true。

2023-08-10 22:10:50 70

原创 C语言:力扣202题,快乐数

这个算法使用了快慢指针的思想,快指针每次计算两次平方和,慢指针每次计算一次平方和,直到两个指针相遇。如果最终相遇的数不是1,则说明不是快乐数。如果这个过程 结果为 1,那么这个数就是快乐数。解释:12 + 92 = 82,82 + 22 = 68,62 + 82 = 100,12 + 02 + 02 = 1。示例 2:输入:n = 2,输出:false,提示:1 <= n <= 231 - 1。printf("%d 不是快乐数\n", n);printf("%d 是快乐数\n", n);

2023-08-10 22:10:13 107

原创 C语言:力扣169题,多数元素

这样,你就可以在`main`函数中调用`majorityElement`函数来解决多数元素的问题。给定一个大小为 n 的数组 nums ,返回其中的多数元素。提示:n == nums.length,1 <= n <= 5 * 104,-109 <= nums[i] <= 109。该算法的基本思想是通过消除不同的元素对多数元素的计数进行抵消。你可以根据需要修改数组和数组大小,并在你的程序中使用这个合并后的代码来找到多数元素。示例 2:输入:nums = [2,2,1,1,1,2,2],输出:2。

2023-08-10 22:09:15 38

原创 C语言:验证回文串,力扣125题

我们使用`left`和`right`指针分别指向字符串的开头和结尾,并向中间移动。如果有任何不匹配的字符,我们返回`false`,否则返回`true`。在`main`函数中,我们使用示例字符串调用`isPalindrome`函数,并打印结果。输出将是`true`或`false`,表示字符串是否是回文串。示例 2:输入:s = "race a car",输出:false。示例 3:输入:s = " ",输出:true。解释:在移除非字母数字字符之后,s 是一个空字符串 ""。否则,返回 false。

2023-08-10 22:08:00 77

c++面试题2023版

适用于1.5w左右及以下面试者

2023-10-28

空空如也

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

TA关注的人

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