公孙无语
码龄8年
关注
提问 私信
  • 博客:483,357
    问答:1,003
    484,360
    总访问量
  • 146
    原创
  • 8,877
    排名
  • 636
    粉丝
  • 2
    铁粉
  • 学习成就

个人简介:公孙先生莫言

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2017-06-05
博客简介:

公孙莫言的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    4
    当前总分
    809
    当月
    4
个人成就
  • 获得1,038次点赞
  • 内容获得96次评论
  • 获得1,760次收藏
  • 代码片获得589次分享
创作历程
  • 68篇
    2024年
  • 23篇
    2023年
  • 3篇
    2021年
  • 5篇
    2020年
  • 23篇
    2019年
  • 25篇
    2018年
成就勋章
TA的专栏
  • QT
    付费
    8篇
  • 设计模式、数据结构和算法
  • 设计模式
    2篇
  • 通信协议
    3篇
  • 开发语言
  • 其他开发语言
    3篇
  • Qt基础
    6篇
  • C语言
    9篇
  • c++
    42篇
  • ImGui
    2篇
  • 机器视觉
    6篇
  • windows
    7篇
  • 运维
    1篇
  • 进程
    2篇
  • linux
    9篇
  • 进程线程
    6篇
  • 网络编程
    1篇
  • web前端
    3篇
  • 软件工具
    7篇
  • Linux/Ubantu/Kylin
    10篇
兴趣领域 设置
  • 人工智能
    分类
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

357人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

工厂方法模式与抽象工厂模式

请注意,在这个示例中,我们没有直接创建一个“汽车”类,而是创建了汽车的部件(发动机和轮胎)。在实际应用中,你可能会有一个“汽车”类,它接受发动机和轮胎作为参数,并在其内部使用它们。然后,我们将创建一个抽象工厂来定义创建这些部件的方法,并为宝马和奥迪提供具体的工厂实现。要将上述代码从工厂方法模式改为抽象工厂模式,我们需要引入一个额外的抽象层,以便能够创建不同类型的汽车部件(而不仅仅是汽车本身)。在抽象工厂模式中,一个工厂类负责创建一系列相关或相互依赖的对象,而无需明确指定它们的具体类。
原创
发布博客 2024.11.27 ·
1262 阅读 ·
25 点赞 ·
0 评论 ·
9 收藏

单例模式入门

虽然在这个简单的例子中可能看起来不是必须的,但在更复杂的场景中,这是一种重要的防御性编程策略。注意,在C++11及以后的版本中,局部静态变量的初始化是线程安全的,这意味着在多线程环境中调用getInstance函数时,不需要额外的同步机制来保证只有一个实例被创建。它的运作方式是这样的: 如果你创建了一个对象, 同时过一会儿后你决定再创建一个新对象, 此时你会获得之前已创建的对象, 而不是一个新对象。单例模式是一种创建型设计模式, 让你能够保证一个类只有一个实例, 并提供一个访问该实例的全局节点。
原创
发布博客 2024.11.25 ·
734 阅读 ·
5 点赞 ·
0 评论 ·
4 收藏

前向声明的意义

出现在 MainWindow.h 中,可能是为了告诉编译器ImageRender是一个类,以便你可以在MainWindow类中声明一个指向ImageRender的指针或引用,而无需立即包含ImageRender类的完整定义。解决循环依赖:当两个或多个类相互引用时,为了避免编译时的循环依赖问题,可以使用前向声明来提前告知编译器某个类的存在,而不需要立即包含该类的完整定义。你只能声明指向该类型的指针或引用。你不能访问前向声明类的任何成员(包括成员函数和成员变量),因为编译器不知道这些成员的存在。
原创
发布博客 2024.08.06 ·
288 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

实现寻找最近创建的文件并写入数据

要在C++中实现这两个功能,可以使用标准库来处理文件操作和时间获取。这个示例演示了如何在C++中实现文件创建和数据写入的基本功能,可以根据具体需求进行扩展和优化。1.在active函数中实现:创建Profile/###.cvs,其中###代表当前时间。2.在write函数中实现:找到时间最近的cvs文件,写入数据。
原创
发布博客 2024.07.08 ·
254 阅读 ·
5 点赞 ·
0 评论 ·
3 收藏

opencv灰度变换

图像处理中的灰度反转、对数变换和幂律(伽马)变换是一些常见的技术,主要用于图像增强、对比度调整以及特定场景的图像预处理。下面详细介绍这些技术的使用场景,并给出对应的C++代码示例。
原创
发布博客 2024.06.07 ·
477 阅读 ·
4 点赞 ·
0 评论 ·
9 收藏

opencv锐化卷积核的定义和应用(图像锐化)。

卷积核(Kernel)是一个小矩阵,它用于在图像处理操作中,比如模糊、锐化、边缘检测等。卷积核通过卷积操作应用于图像像素,产生新的图像。在锐化操作中,我们通常使用一个 3x3 的卷积核。float(3, 3) <<-1, 9, -1,这个卷积核的中心值为 9,其他值为 -1。中心值为正数且较大,表示增强当前像素的权重,而周围的 -1 表示减去周围像素的值。
原创
发布博客 2024.06.07 ·
888 阅读 ·
4 点赞 ·
0 评论 ·
6 收藏

图像压缩方案比较

图像压缩是通过减少图像文件大小来节省存储空间和带宽的技术。OpenCV可以用于图像压缩,常见的方法包括调整图像质量(针对JPEG)和改变图像尺寸。以下是一个使用C++和OpenCV实现图像压缩的示例。
原创
发布博客 2024.06.07 ·
355 阅读 ·
5 点赞 ·
0 评论 ·
4 收藏

浅拷贝与深拷贝

浅拷贝过程最大的问题是共享同一块内存,容易引发内存问题,下面这个例子就是浅拷贝在析构的时候出现段错误。
原创
发布博客 2024.06.07 ·
174 阅读 ·
8 点赞 ·
0 评论 ·
0 收藏

c++序列化和反序列化简单demo

序列化和反序列化是指将数据结构或对象转换为一种可以存储或传输的格式(序列化),然后再将其恢复为原来的数据结构或对象(反序列化)。在C++中,通常使用标准库和一些辅助库来实现序列化和反序列化。下面是一个简单的示例,演示如何使用C++实现对象的序列化和反序列化。我们将定义一个简单的Person类,并实现将其序列化为文件和从文件反序列化的功能。
原创
发布博客 2024.06.06 ·
478 阅读 ·
5 点赞 ·
0 评论 ·
7 收藏

值传递过程中的开销

按值传递会造成大量的内存复制,增加内存占用和复制开销。按引用传递则避免了不必要的拷贝,仅需传递指针,节省内存和时间。因此,在处理大字符串时,按引用传递是更高效的选择。
原创
发布博客 2024.06.06 ·
394 阅读 ·
4 点赞 ·
0 评论 ·
6 收藏

是否引用传递一定优于值传递

在C++中,传递参数时可以选择按值传递、按引用传递或按指针传递。每种方式有其适用场景和特点。具体到int。
原创
发布博客 2024.06.06 ·
418 阅读 ·
4 点赞 ·
0 评论 ·
3 收藏

`ImPlot::PlotScatter` 和 `ImPlot::PlotLine`介绍

ImPlot是一个用于绘制图表的即插即用的图形库,通常与Dear ImGui配合使用。在ImPlot中,和是两个用于绘制散点图和折线图的函数。用于绘制散点图,显示一组数据点而不连接它们。
原创
发布博客 2024.06.06 ·
391 阅读 ·
6 点赞 ·
0 评论 ·
7 收藏

动态规划详细解释

动态规划(Dynamic Programming,简称DP)是一种用于解决复杂问题的算法思想,特别适用于具有重叠子问题和最优子结构性质的问题。它通过将问题分解为更小的子问题,并保存这些子问题的解以避免重复计算,从而提高算法的效率。动态规划通常用于优化问题,如最短路径、最长公共子序列、背包问题等。重叠子问题(Overlapping Subproblems):最优子结构(Optimal Substructure):状态(State):状态转移方程(State Transition Equation):定义状态:
原创
发布博客 2024.06.05 ·
1056 阅读 ·
19 点赞 ·
0 评论 ·
8 收藏

动态规划实现斐波那契数列,时间复杂度和空间复杂度解析

函数定义定义了一个名为的函数,它接收一个整数n,返回类型为,用于表示第n个斐波那契数。处理基本情况如果n小于或等于1,直接返回n,因为斐波那契数列的第0个和第1个数分别为0和1。初始化变量初始化prev2和prev1分别为0和1,这两个变量用于存储前两个斐波那契数。curr用于存储当前计算的斐波那契数。计算斐波那契数i <= n;++i) {使用一个循环从2开始迭代到n,每次循环中计算当前的斐波那契数curr,并更新prev2和prev1。返回结果返回第n个斐波那契数。时间复杂度。
原创
发布博客 2024.06.05 ·
384 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏

斐波那契的实现,尽可能降低时间复杂度和空间复杂度。

时间复杂度低:使用动态规划的实现,时间复杂度为 (O(n))。空间复杂度低:使用递归实现,时间复杂度为 (O(2^n)),但通过尾递归优化可以在某些编译器上实现空间复杂度为 (O(1))。选择使用哪种实现方式取决于具体需求。如果需要高效的计算,动态规划是更好的选择。如果代码的简洁性和易读性更为重要,并且输入规模较小,递归实现也是一种可行的方法。
原创
发布博客 2024.06.05 ·
636 阅读 ·
13 点赞 ·
0 评论 ·
4 收藏

qml与Qwidget绘制动画的优缺点

QML和Qt Widgets都提供了绘制动画的能力,但它们在实现方式和使用场景上有一些区别。
原创
发布博客 2024.06.05 ·
837 阅读 ·
3 点赞 ·
0 评论 ·
10 收藏

qml实现简单的运动动画

在这里,我们创建了一个可见的窗口,宽度为640像素,高度为480像素,标题为"Simple Animation"。这段代码是一个使用Qt Quick的QML语言编写的简单动画示例。这些语句导入了Qt Quick的模块,使我们可以使用Qt Quick中定义的各种类型和属性。属性分别指定了矩形的宽度和高度,颜色属性为"red"表示矩形填充红色。这段代码实现了一个简单的动画,让一个红色矩形在窗口中来回移动。在窗口中,我们创建了一个矩形,并为其指定了一些属性。类型的缓动,这个类型使动画有一个缓慢的开始和结束。
原创
发布博客 2024.06.05 ·
368 阅读 ·
4 点赞 ·
0 评论 ·
8 收藏

qt中qml调用cpp中的逻辑

在Qt中,QML可以通过多种方式调用C++中的逻辑。常见的方法包括使用QmlEngine和将C++对象暴露给QML,通过信号和槽机制进行交互,或通过QML插件进行扩展。以下是一个简单的示例,演示如何在QML中调用C++代码。
原创
发布博客 2024.06.05 ·
561 阅读 ·
9 点赞 ·
0 评论 ·
4 收藏

左值和右值

左值:表示内存中的某个具体位置,可以获取地址,具有持久性。右值:表示临时对象或字面量,不能获取地址,具有短暂性。左值引用:引用左值。右值引用:引用右值,通常用于优化临时对象的处理。理解左值和右值的区别对于编写高效、健壮的C++代码至关重要,尤其是在涉及引用、指针和资源管理时。
原创
发布博客 2024.06.05 ·
378 阅读 ·
3 点赞 ·
0 评论 ·
8 收藏

AZStd::get<1>(profile_info_) = std::move(buffer)解释

置于一个有效的但未定义的状态。这通常用于优化性能,因为移动通常比复制更快,特别是当对象包含大量资源或数据时。这行代码在 C++ 中涉及了几个重要的概念:结构化绑定(尽管这里没有直接使用,但通常与。这个容器(可能是元组或类似容器)中索引为 1 的元素,并将。用于访问元组(或类似容器)中的元素,以及。综上所述,这行代码的意思是:将。
原创
发布博客 2024.05.28 ·
247 阅读 ·
4 点赞 ·
0 评论 ·
4 收藏
加载更多