- 博客(317)
- 资源 (20)
- 收藏
- 关注
原创 C++的静态绑定和动态绑定、虚函数表的理解
"绑定"指的是函数调用与函数实现之间的关联,在C++中,这种绑定可以是静态的(编译时决定)或动态的(运行时决定)。静态绑定发生在一个函数调用与一个函数实现之间。这里,函数的调用是基于调用对象的静态类型(即声明时的类型)来决定的。也就是说,编译器在编译时就决定了会调用哪个函数;动态绑定发生在一个虚函数调用与多个可能的函数实现之间。在这种情况下,函数的调用是基于调用对象的实际类型(即运行时对象的类型)来决定的。也就是说,运行时系统(而不是编译器)在运行时决定了会调用哪个函数。
2024-04-02 17:08:37
2043
2
原创 C++多态的一些理解
多态分为静态多态和动态多态,静态多态是在编译时确定要调用的函数版本,通过函数重载实现,适用于非虚函数和静态成员函数。动态多态是在运行时确定要调用的函数版本,通过虚函数和继承实现,适用于虚函数和纯虚函数,并且需要使用指针或引用来实现多态性。静态多态的绑定是在编译时完成的,而动态多态的绑定是在运行时完成的。
2024-04-02 13:31:25
1059
原创 C++中的面向对象到底是什么
对象嘛,就和大家都有的对象一样,两只眼睛、一个嘴巴、两条腿……对不起跑题了,C++的面向对象中的对象可不是显示中的对象哦,但是有一些相似之处,有对象的同学可以参考着去学习C++面向对象的概念,没有对象的同学……那就先new一个出来(手动滑稽
2024-04-01 17:08:32
1223
原创 QT基础但是很重要的一些小技巧(更新中)
基于字母的ASCII值,将 s1 与 s2 进行比较,如果 s1 小于、等于或大于 s2,则返回小于、等于或大于零的整数。如果 cs 是 Qt::CaseSensitive,则比较区分大小写;否则,比较不区分大小写。和第一种的区别在于,s1是调用compare()的字符串,s2是&other。函数原型有以下几个重载函数。先附上一张ASCII表。但是常用的只有以下两个。
2024-03-31 10:17:48
377
原创 单链表实现LRU缓存淘汰算法
因为计算机内存中的缓存大小是有限的,所以当缓存满的时候,我们必须采用某种算法来替换掉某块缓存。常用的算法有FIFO(先进先出)、LFU(最少使用)、LRU(最近最少使用)。LRU(Least Recently Used)算法也叫做最近最少使用算法。顾名思义,也就是当内存中的缓存满的时候,有新的数据需要加入到缓存中,最近使用过的缓存很可能还会再次使用到,所以我们需要将最近时间内使用次数最少的缓存替换掉。
2024-03-13 23:32:14
459
2
原创 Python词频对比分析并导出到CSV文件
import jiebaimport pandas as pdimport csvimport codecs# num=jieba.lcut("中国是一个伟大的国家") # jieba库的测试# print(num)# 计算机专业的-1.txttxt1=open("计算机专业.txt").read()# 导入停用词库,过滤掉那些没用的词语,甚至都不是词语,比如标点符号,停用词在我...
2024-03-11 10:16:31
261
1
原创 qgis启动提示Could not load qgis_app.dll
当遇到类似问题时,首先应该回忆发生问题之前有没有卸载什么程序,对系统做过什么改动,然后再使用进行分析,通过搜索关键字 “Error” 来定位问题,将缺少的dll全部安装即可(dll不会自己消失,一般都是因为程序的卸载导致的,可以先将卸载的程序安装回去试一下)。
2024-02-27 12:52:46
2797
原创 C++后端开发之Sylar学习三:VSCode连接Ubuntu配置Gitee
为了记录学习的过程,学习Sylar时写的代码统一提交到Gitee仓库中。
2024-02-05 22:30:49
1518
1
原创 C++后端开发之Sylar学习二:配置VSCode远程连接Ubuntu开发
没错,我不能像大佬那样直接在Ubuntu上面用Vim手搓代码,只能在本地配置一下VSCode远程连接Ubuntu进行开发咯!本篇主要是讲解了VSCode如何配置ssh连接Ubuntu,还有如何使用VSCode和CMake进行编译与调试。
2024-02-04 17:33:03
1958
原创 C++后端开发之Sylar学习一:配置环境
我安装的是Ubuntu 20.04,分配了60G的SSD容量,8G的内存,正式开启C++后端开发的学习之路~
2024-01-24 14:42:30
1937
原创 路由器子网划分问题
有一台互联三个子网的路由器,这三个子网的所有接口要求具有前缀223.1.17/24,还假定子网1要求支持多达60个接口,子网2要求支持多达90个接口,子网3要求支持多达12个接口,请提供三个满足这些限制的网络地址,形式为a.b.c.d/x。
2023-12-28 15:15:31
1877
1
原创 DFS算法查找所有路径详解
深度优先搜索(Depth-First Search,DFS)是一种图遍历算法,它从起始节点开始,沿着一条路径尽可能深入,直到达到最深的节点,然后回溯到前一节点,继续探索下一条路径。DFS通常使用递归或栈(非递归)来实现。
2023-12-26 18:22:31
1185
原创 佛洛依德算法详解
佛洛依德算法(Floyd-Warshall Algorithm)和迪杰斯特拉算法(Dijkstra’s Algorithm)都是用于解决图的最短路径问题的算法,但它们有一些关键的区别。
2023-12-26 18:06:55
343
原创 迪杰斯特拉算法详解
首先要知道的是,迪杰斯特拉算法是求解单源最短路径的,就是在一个图中(无向图和有向图均可),指定一个源点,求出来这个源点到其他各个节点的最短路径。
2023-12-25 16:02:09
2423
原创 PCL显示double类型的点云方案
我们知道,PCL和OpenGL等三维可视化软件一样,为了兼顾性能需求,只支持加载Float类型的点云数据,但是当我们对精度要求太高时,Float类型支持不了我们的精度要求,我们的数据必须用Double类型存储才可以,要怎么解决呢?
2023-12-13 14:32:06
654
原创 分享一个自用的Win11护眼主题(无需下载)
首先,把主题设置为高对比度主题——沙漠。设置完点击另存为,然后保存并应用即可。然后点击编辑,依次设置为以下值。
2023-11-17 13:05:46
2658
1
原创 QT在线安装所有版本,可共存(下载速度飞快)
使用最新的QT在线安装器,安装QT版本时只能安装5.15以及之后的版本,安装QT5.15之前的版本只能通过离线安装的方式,离线安装后还要自己去配置QT,离线安装还有个问题的,后续维护比较麻烦,QT的维护工具还要自己配置档案库啥的。而在线安装是不需要自己配置的,想安装哪几个版本的QT都行,它会自动帮我们管理好,而且Qt Creator会自动识别这些QT,我们的后续维护也很方便,这里我找到了一个在线安装5.15之前版本的解决方案,并且下载速度非常快。
2023-11-03 21:46:03
2508
原创 记录一段帮朋友写的代码,使用牛顿-拉夫逊方法解方程
C语言使用牛顿-拉夫逊法来求方程的解,牛顿-拉夫逊方法的基本思想是:从一个初始猜测值开始,使用函数的导数(或切线的斜率)来更新猜测值,逐步逼近函数的真实零点。
2023-10-30 16:25:17
270
原创 Ubuntu系统编译调试QGIS源码保姆级教程
在之前的文章中,我详细介绍了怎么在Windows下编译QGIS源码,也得到了不错的反馈。但是不足的是Windows下只能编译QGIS的Release模式和RelWithDebInfo模式,想要分析源码,Debug模式下的“断点调试”肯定是少不了的,虽然这两种模式虽然也能做到调试程序,但是总有种种不足,例如,因为代码是优化过的,某些调试操作可能会有所不同或略显困难。另外由于某些变量可能被优化掉,它们在调试过程中可能不可见等等。所以,为了调试程序更方便,决定在Unbuntu下编译一个Debug模式的QGIS。
2023-10-29 23:02:46
2093
4
原创 VS使用Visual Assist添加代码说明信息
写代码时,我们一般需要在代码的最前面添加一些说明信息,作者的联系方式等等。一些高级的 IDE 工具提供修改代码模板的功能,这样就能够在创建新代码时自动加上版权信息。Visual Studio 虽然没有提供这样的操作界面,但是我们可以通过使用插件 Visual Assist 来达到这个目的。
2023-10-18 17:35:56
553
原创 C++产生未定义的行为的原因分析
未定义的行为是什么?在C++(以及其他编程语言)中,“未定义的行为”(Undefined Behavior,简称 UB)是指语言标准没有为某些代码行为提供明确的规范或定义,因此编译器不必为这种行为提供任何特定的支持或保证。当代码触发未定义的行为时,可能会发生以下情况之一(或更多):程序崩溃(闪退):例如,通过无效指针引用内存;不可预测的输出:程序可能会产生意外的结果;随机行为:程序在不同的运行或在不同的平台上可能表现不同;安全漏洞:攻击者可能会利用未定义的行为来执行恶意操作。
2023-10-17 15:39:28
1146
原创 基于QGIS进行二次开发的正确姿势
最近一直在琢磨QGIS的二次开发,也踩过不少坑,好在最后的结果是好的。这里介绍一下我最喜欢的二次开发姿势。
2023-09-28 11:32:28
4099
2
原创 QGIS3.18编译教程
在之前,我编译了一个3.28版本的,但是Python模块出现了问题,导致用不了Python插件。真是无语,就当给开发者当实验小白鼠了。在这之后,我又编译了3.32版本,还是出现了一样的问题。于是,我直接选择了最多人编译的3.16,妈呀,真香,直接成功!但是我编译出来的版本,在加载分隔文本图层后,选择渐进颜色带时,它内置的几条色带全部是一个颜色。。。然后换了3.18版本,一切正常!应粉丝的请求,写一下3.18版本的编译过程。
2023-09-24 12:50:34
1463
1
原创 Win11点击鼠标右键,“新建”选项消失的解决方法
更新了Win11后,我发现当我想在桌面新建一个文件夹、文本文档或者Word、Excel的时候,却没有“新建”选项,很是苦恼,只能通过文件资源管理器进行新建操作。可以看到,不管是在桌面还是在其他文件夹里面,点击鼠标右键都有了“新建”选项。以管理员运行cmd,然后输入下面这段代码。试了很多方法,终于找到个有用的。
2023-08-22 18:07:59
7852
19
原创 QGIS3.28的二次开发九:添加矢量要素
对矢量要素的编辑是 GIS 软件很重要的功能点之一,也是最难实现的功能点之一。编辑矢量要素涉及到很多方面的考虑,包括且不限于矢量要素的几何类型,拓扑关系,构成要素的节点的增删改,编辑会话 (session) 的启动、回溯和提交,要素属性的增删改等。本文不会也不可能涉及到属性编辑的方方面面,仅仅实现了一个添加面要素的地图工具,作抛砖引玉的作用。
2023-08-15 10:19:16
1299
1
原创 QGIS3.28的二次开发八:显示shp的属性表
这里实现两个基本的 GIS 软件需求:矢量图层的属性表显示,以及根据属性筛选要素。QGIS 提供了若干类用于实现图层属性表。属性表基于 Qt 的QTableView实现,利用了机制。QGIS 用于实现属性表所涉及到类比较多,彼此关系也不太直观,比较复杂, 这里仅做简单的总结。
2023-08-13 14:07:27
1103
原创 QGIS3.28的二次开发七:创建地图工具
地图工具是输入设备(一般指鼠标与键盘)与画布(QgsMapCanvas)的交互接口。它负责处理所有用户通过输入设备(鼠标和键盘)和画布互动的操作,例如镜头控制、要素绘制、标识工具等。我们这里写段代码测试一下QGIS的三个地图工具。
2023-08-12 18:47:47
1665
原创 QGIS3.28的二次开发六:VS不借助QT插件创建UI界面
上一篇博客我们说了在VS中如何使用QT插件来创建UI界面,但是我们二次开发QGIS的第一篇博客就说了,最好使用OSGeo4W中自动下载的QT进行QGIS二次开发,这样兼容性是最好的,那么该如何在VS中不使用外部安装的QT以及QT的VS插件情况下进行UI界面的创建和使用呢?如果你仔细看完了我前面的博客,那么配置起来也很简单~
2023-08-11 14:09:37
1895
原创 QGIS3.28的二次开发五:VS使用QT插件创建UI界面
前面我们说了在创建项目时创建的是一个空项目,即不使用 Qt 提供的综合开发套件 Qt Creator,也不使用 Qt Visual Studio Tools 这类工具。但是后面发现,如果我想要有更加满意的界面布局,还是要自己写一个UI文件,如果不使用QT插件,在VS中导入自己的UI文件编译起来不是那么容易,因此介绍一下如何使用QT插件来二次开发QGIS。那么既然使用了Qt VS Tools插件,那么环境配置就要改改了!(不使用QT插件也可以,参见我下一篇博客~)
2023-08-10 22:25:16
1423
原创 QGIS3.28的二次开发四:实现图层列表
在实际开发中我们通常会遇到同时显示多个图层,并且还要实时显示和隐藏各图层的需求,如同 ArcGIS 的图层列表那样,界面左侧显示图层列表,列出当前已加载的所有图层,同时每个图层前面有复选框可以控制图层的显示/隐藏;界面右侧为画布,按图层列表的适当顺序显示所有未隐藏的图层。具体该怎么实现呢?
2023-08-09 15:58:32
1392
原创 QGIS3.28的二次开发三:显示Shapefile
Shapefile 为 OGR 所支持的最重要的数据格式之一,自然可以被 QGIS 加载。那么该如何显示Shapefile呢?
2023-08-08 17:45:55
904
3
原创 QGIS3.28的二次开发二:不重新编译QGIS进行二次开发
由于重新编译QGIS对于初学者来说还是有一定难度,因此这里介绍另外一种不编译QGIS也能够二次开发的方法,不需要下载QGIS的整套源码。
2023-08-08 12:36:11
1788
1
原创 VS创建QT项目的几个注意点
一、创建项目无法找到头文件,点击编译运行又可以执行。虽然可以编译运行,但是无法找不到头文件显示是红色并且在开发时无法出现相关代码提示,并且无法导入QT相关头文件;二、无法使用qDebug();三、创建项目的时候,不是和Qt Creator一样有析构函数,而且ui不是指针,是一个对象。这样容易造成内存泄漏;四、这个问题其他非QT项目也适用,编译项目出现warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。
2023-08-02 14:15:10
685
原创 QGIS3.28的二次开发一:编译工程
搭建QGIS的二次开发环境的第一步,编译QGIS的源码包,这里选择的版本是3.28.9.环境:VS2019+OSGeo4W+CMake_3.26+Cygwin64+QGIS_3.28注意:一定要按照步骤顺序来!
2023-07-30 21:57:44
3497
17
原创 QT介绍与特点
Qt(官方发音 [kju:t],音同 cute)是一个跨平台的C++开发库,主要用来开发图形用户界面(Graphical User Interface,GUI)程序,当然也可以开发不带界面的命令行(Command User Interface,CUI)程序。Qt 是纯 C++ 开发的,所以学好 C++ 非常有必要,对于不了解 C++ 的读者,我建议先阅读《C语言教程》,再阅读《C++教程》。C++ 是在C语言的基础上发展起来的,学完C语言就学了 C++ 的一半了。
2023-07-27 14:53:19
3091
原创 QT项目打包成软件进行发布的三种方式
一些小伙伴可能很好奇我们使用QT制作的软件该怎么像网上其他人那样进行打包发布,我这里对打包发布的三种方式都进行了详细讲解,分别为绿色便携版、单文件版和安装版。除了绿色便携版,其他两种方式非QT开发的软件也同样适用。
2023-07-26 16:52:11
20775
9
C++和QT实现的交通路径规划系统
2024-01-07
QGIS3.18编译需要的环境,需要的软件都在压缩包里面
2023-12-17
QGIS二次开发:给图层添加矢量要素,编程环境为QGIS3.28和VS2017
2023-08-15
QGIS二次开发:显示矢量图层的属性表,编程环境为QGIS3.28和VS2017
2023-08-15
QGIS二次开发:创建地图工具,编程环境为QGIS3.28和VS2017
2023-08-15
QGIS二次开发:显示多个图层,编程环境为QGIS3.28和VS2017
2023-08-15
QGIS二次开发:显示Shapefile,编程环境QGIS3.28+VS2017
2023-08-15
Python数据可视化(处理地下车库情况的CSV文件,统计信息并绘图)
2023-03-10
CS1.6便携版,几十个地图均做了改良,低配电脑也可愉快玩耍,可局域网联机对抗,同时附带一些好玩的部件
2022-02-14
博客使用的Tampermonkey插件.zip
2021-08-30
concurrent.rar
2021-02-03
新闻发布系统前端页面.rar
2020-05-25
纯JS实现前端购物车案例.rar
2020-04-08
股票列表的HTML代码和爬取结果.rar
2020-01-30
Sublime Text Build 3176 x64 Setup.exe
2019-05-31
cpu-z_1.88-cn.zip
2019-05-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人