自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小勇博客

学习,成长中!

  • 博客(613)
  • 资源 (2)
  • 收藏
  • 关注

原创 C++之指针探究(三):指针数组和数组指针

前文:C++之指针探究(二):一级指针和一维数组一. 指针数组或:指针数组的本质是数组,数组中每一个成员是一个指针。定义形式如下:  char∗\ast∗ pArray[10];语法解析:pArray 先与“[ ]”结合,构成一个数组的定义,char∗\ast∗修饰的是数组的内容,即数组的每个元素。例4:运行结果:附例4代码//小问学编程#include <iostream>using namespace std;int main(){ char* pArr

2020-12-26 18:55:14 205

原创 《操作系统导论》第26章读书笔记:并发:介绍

多线程(multi-threaded):程序会有多个执行点(多个程序计数器,每个都用于取指令和执行)。换一个角度来看,每个线程类似于独立的进程,只有一点区别:他们共享地址空间,从而能够访问相同的数据。单个线程的状态与进程状态非常类似。每个线程有自己的一组用于计算的寄存器。上下文切换(context switch)、进程控制块(Process Control Block,PCB)与进程相比,线程之间的上下文切换有一点主要区别:地址空间保持不变。(即不需要切换当前使用的页表)

2024-04-18 00:42:37 344

原创 Linux笔记之查看docker容器目录映射

成为在日志文件或代码库中快速查找并理解特定条目上下文的有力工具。参数用于在输出中包括匹配行后的指定数目的行。在匹配行后显示额外的两行。是我们的搜索模式,而。

2024-04-15 12:24:10 242 1

原创 以C++为例详解UML

UML即统一建模语言,它是用于开发、说明、可视化与构建一个面向对象软件的一种方法。UML是面向对象设计的建模工具,独立于任何具体程序设计语言。UML类图将用户所希望描述的事物抽象为类,描述类的内部与多个类之间的设计视图。为之后学习各种设计模式打下基础,因为我们可以通过一种直观的表示方法来描述设计模式。

2024-04-14 18:17:03 874

原创 StarUML笔记之从UML图生成C++代码

—— 2024-04-14 使用vscode打开生成的代码:

2024-04-14 13:16:25 291

原创 StarUML笔记之从C++代码生成UML图

【代码】StarUML笔记之从C++代码生成UML图。

2024-04-14 12:15:11 244

原创 qt-C++笔记之QProcess声明在堆上和声明在栈上对进程执行是否异步的影响

是一个有用的函数,可以使开发者在需要确保外部程序完全执行结束后再继续执行代码的场景中,很方便地实现同步操作。然而,需要谨慎使用,以避免在不适当的场合(如在主线程中处理耗时任务)导致应用程序响应性能问题。

2024-04-13 10:06:29 950

原创 qt-C++笔记之获取当前文件名所在路径并拼接出新文件路径的一种方法

类通常用于文件系统信息的查询和目录管理。

2024-04-12 00:03:18 220

原创 C++笔记之std::bind(&MyClass::MemberFunction, &myObject)详解

是标准库中的一个函数模板,它的主要用途是将函数调用包装起来,可以绑定函数调用中的一些参数,让我们可以延迟函数调用或者将其作为参数传递给其他函数。来绑定一个成员函数时,需要传递成员函数的地址和一个对象的实例(或者指向对象的指针)作为参数。是 C++11 中引入的一个函数适配器,它的主要作用是将一个函数或可调用对象以及其参数绑定成为一个新的可调用对象。是带参数的成员函数,那么在绑定时,可以在对象实例之后添加成员函数的参数。占位符可以在调用时指定参数的位置,从而实现参数顺序的重新排列或者部分参数的固定。

2024-04-10 23:44:24 129

原创 C++笔记之注册回调函数常见的5种情况对比

当事件循环运行时,它会处理队列中的事件,调用注册的回调函数。在面向对象的设计中,这种方法不够灵活或安全,因为它不支持成员函数的直接回调,且无法保证回调函数与对象的状态相关联。在面向对象设计中,回调函数通常与对象的状态紧密相关,因此会注册对象的成员函数作为回调,以便在回调时能够访问对象的状态。在C++中,事件循环通常是由一个循环实现的,等待事件发生,并根据事件的类型调用相应的回调函数。:因为槽是对象的成员函数,它自然可以访问和修改对象的状态,这符合“情况 5”的描述,即回调函数需要访问对象状态时。

2024-04-10 23:39:39 332

原创 qt-C++笔记之QLabel加载图片

例如,可以修改图像的大小,应用滤镜,调整颜色等。有时可能需要在两者之间转换,例如,可能会从文件中加载一个图像到。或其他控件中,以指定是否应该缩放控件的内容以填充控件的大小。如果正在处理视频流,并且有解码后的图像数据,通常会得到一个。以下是一个简化的例子,说明如何从视频流中的原始数据创建。更适合图像的离屏处理,例如图像的像素级操作。当从视频流中解码图像时,可能直接得到原始的帧数据,的大小,那么图片将会被裁剪。类中的一个函数,用于创建原始图像的缩放版本。是一个枚举值,指示应保持原始图像的宽高比。

2024-04-06 20:15:46 828

原创 C语言笔记之struct dirent*和DIR*

文件和子目录的名称将按照在文件系统中的存储顺序显示,这通常与文件名的字母顺序不同。目录流代表着一个打开的目录,它可以用来查看该目录中的文件和子目录。在实际应用中,可能需要更复杂的逻辑来处理特殊的目录项,如。这是一个典型的模式,用于遍历所有的目录项。这通常用于排除这两个目录项,因为它们在目录遍历中通常不是们关心的项。指针表示已经到达目录流的末尾,没有更多的目录项可读。,即存在另一个目录项,则循环体内的代码块将被执行。结构体的成员,包含了目录项的文件名)是否等于。,这是一个字符数组,包含了目录项的名字。

2024-04-05 18:34:06 156

原创 C++笔记之pkg-config详解,以及g++、gcc编译时使用pkg-config

的优势是它自动处理这些细节,包括库依赖关系、版本号和路径问题。如果手动指定这些参数,需要确保它们是正确的,并且当库更新或路径变化时,可能需要手动更新编译命令。是一个非常有用的工具,它简化了编译和链接过程中的库依赖管理。是一个在编译时用来帮助获取库的相关信息的工具。它主要用于获取编译和链接时所需的标志,例如。头文件和库文件的安装位置。当在编译程序时,如果程序依赖于某个库(如 GTK+, libxml2 等),所需的标志,需要手动指定这些标志。来简化 C++ 程序的编译过程,包括自动获取编译器和链接器标志。

2024-04-05 14:51:32 193

原创 Linux笔记之制作基于ubuntu20.4的最小OpenGL C++开发docker镜像

— 2024-04-03 夜。

2024-04-03 21:05:57 1139

原创 Linux笔记之perf生成火焰图

— 杭州 2024-04-01 中午。

2024-04-01 18:02:37 325

原创 《操作系统导论》第16章读书笔记:分段

到目前为止,我们一直假设将所有进程的地址空间完整地加载到内存中。利用基址和界限寄存器,操作系统很容易将不同进程重定位到不同的物理内存区域。但是,对于这些内存区域,你可能已经注意到一件有趣的事:栈和堆之间,有一大块“空闲”空间。从图 16.1 中可知,如果我们将整个地址空间放入物理内存,那么栈和堆之间的空间并没有被进程使用,却依然占用了实际的物理内存。因此,简单的通过基址寄存器和界限寄存器实现的虚拟内存很浪费。另外,如果剩余物理内存无法提供连续区域来放置完整的地址空间,进程便无法运行。

2024-03-31 22:56:53 792

原创 《操作系统导论》第15章读书笔记:机制:地址转换(address translation)

受限直接访问(Limited Direct Execution,LDE)。LDE背后的想法很简单:让程序运行的大部分指令直接访问硬件,只在一些关键点(如进程发起系统调用或发生时钟中断)由操作系统介入来确保“在正确时间,正确的地点,做正确的事”。为了实现高效的虚拟化,操作系统应该尽量让程序自己运行,同时通过在关键点的及时介入(interposing),来保持对硬件的控制。高效和控制是现代操作系统的两个主要目标。

2024-03-30 23:05:46 829

原创 《操作系统导论》第14章读书笔记:插叙:内存操作API

— 杭州 2024-03-30 夜。

2024-03-30 20:52:33 926

原创 qt-C++笔记之QSpinBox控件

【代码】qt-C++笔记之QSpinBox控件。

2024-03-27 23:07:01 228

原创 《操作系统导论》第13章读书笔记:抽象:地址空间

— 杭州 2024-03-26 夜。

2024-03-26 22:46:12 398

原创 《操作系统导论》第10章读书笔记:多处理器调度(高级)

并行(Parallelism):是指两个或更多任务同时执行。在多核CPU中,可以实现真正的并行,因为不同的核可以同时执行多个任务。并发(Concurrency):是指管理多个同时处于开启状态的任务的能力。在单核CPU中,任务被快速地切换执行,给人一种多任务同时进行的错觉。在单核CPU上,无论是多线程还是多进程,我们都只能实现并发,因为任务实际上是交替执行的。在多核CPU上,我们可以实现并行,因为可以有多个任务(线程或进程)在同一时间内在不同的核上运行。

2024-03-26 22:37:00 648

原创 C++笔记之memmove函数(可重叠)

— 杭州 2024-03-25 夜。

2024-03-25 22:49:32 110

原创 git笔记之撤销、回退、reset方面的笔记

如果你已经做了一个commit,但还没有将其push到远程仓库,并且希望修改这次commit的信息,你可以使用命令进行操作。下面是一步一步的指导:打开你的命令行工具。使用git log查看最近的commit,确保你要修改的是最近一次的commit信息。这将打开你的默认文本编辑器,允许你修改commit信息。在编辑器中修改commit信息,然后保存并关闭编辑器。如果你想直接在命令行中修改commit信息,而不是打开文本编辑器,可以使用以下命令(其中完成修改后,你可以使用git log。

2024-03-25 19:32:22 775

原创 C++笔记之argv[1]与字符串内容的比较

在 C++ 中,argv[1] 是一个 char*类型,它指向第一个命令行参数的第一个字符。比较两个 char* 类型的值实际上是比较两个指针,而不是它们指向的字符串内容。因此,if(argv[1] == “Hello”)。实际上比较的是两个内存地址,而不是字符串值。返回 0,那么两个字符串是相同的。对象的内容,如果内容相同,那么结果是。

2024-03-24 23:34:31 76

原创 《操作系统导论》第8章读书笔记:调度:多级反馈队列

— 杭州 2024-03-23 夜。

2024-03-23 22:10:52 890

原创 《操作系统导论》第7章读书笔记:进程调度:介绍

— 杭州 2024-03-23 傍晚。

2024-03-23 19:38:06 1241

原创 《操作系统导论》第6章读书笔记:机制:受限直接执行

— 杭州 2024-03-23 下午。

2024-03-23 16:37:02 1167

原创 C++笔记之设计模式全局状态管理类:使整个工程项目中的所有函数可以访问同一个变量,并且能够感知到这个变量的变化(变量共享)

—— 杭州 2024-03-21 夜实现方法:code review!类GlobalState包含一个可以被整个项目访问的变量value1.2.main.cpp可以在任何需要的地方包含这个头文件,并使用GlobalState::getInstance()来获取全局状态的实例,并通过它访问和修改value:虽然单例模式解决了全局变量的一些问题,但它仍然可能导致代码测试和维护的困难,因为它引入了全局状态。此外,如果在多线程环境中使用单例,还需要考虑线程安全性。在这种情况下,可能需要使用线程局部存储(thr

2024-03-21 18:55:48 218

原创 Linux笔记之ldd命令详解

命令时,它会显示可执行文件或共享库在运行时所依赖的动态链接库。这包括直接依赖项(可执行文件或库直接链接的动态库)和间接依赖项(直接依赖项所依赖的其他动态库)。它可以帮助你确定可执行文件或共享库是否正确链接了所需的共享库,以及检查共享库的版本是否匹配。是一个用于查看可执行文件或共享库所依赖的共享库的命令。它可以帮助你了解可执行文件或库与系统上安装的共享库之间的依赖关系。此输出显示了可执行文件或共享库所依赖的共享库,以及它们在系统上的位置和加载地址。这将显示可执行文件或库的详细信息,包括链接的静态库。

2024-03-20 20:17:27 435

原创 CMake笔记之通过指定相对路径来访问任意上级或跨级目录的常用方法

来访问上级目录是不推荐的做法,因为它使得 CMake 脚本的可移植性和可读性变差。如果可能,尽量避免这样做,并且始终从一个已知的、可靠的基准目录(如。然后,这个新计算出的路径被存储在变量。选项可以确保即使存在符号链接,路径也会被正确解析。的上两级目录的规范化绝对路径。是一个绝对路径,我们在其后添加了。)开始构造你的路径。

2024-03-20 20:10:38 420

原创 Linux笔记之shell中的重定向

就像我们平时写的程序一样,一段程序会处理外部的输入,然后将运算结果输出到指定的位置。在交互式的程序中,输入来自用户的键盘和鼠标,结果输出到用户的屏幕,甚至播放设备中。而对于某些后台运行的程序,输入可能来自于外部的一些文件,运算的结果通常又写到其他的文件中。而且程序在运行的过程中,会有一些关键性的信息,比如异常堆栈,外部接口调用情况等,这些都会统统写到日志文件里。shell脚本也一样,但是我们一般在使用shell命令的时候,更多地还是通过键盘输入,然后在屏幕上查看命令的执行结果。

2024-03-20 19:55:16 1248

原创 CMake笔记之将任意官方库作为third_party完整地包含在工程项目中使用的通用模板

— 杭州 2024-03-20 凌晨1:06。

2024-03-20 01:17:49 821

原创 CMake笔记之GLOB和GLOB_RECURSE的使用方法

— 杭州 2024-03-19 夜。

2024-03-19 23:16:01 533

原创 CMake笔记之PROJECT_SOURCE_DIR、CMAKE_SOURCE_DIR、CMAKE_CURRENT_BINARY_DIR对比

— 杭州 2024-03-19。

2024-03-19 23:14:19 1160

原创 操作系统笔记之进程调用API中的getpid、fork、wait、exec补充

— 杭州 2024-03-17 夜。

2024-03-17 19:42:44 799

原创 《操作系统导论》第5章读书笔记:插叙:进程AIP

— 杭州 2024-03-17 中午。

2024-03-17 12:48:32 945

原创 《操作系统导论》第4章读书笔记:抽象:进程

— 杭州 2024-03-17 上午。

2024-03-17 11:11:23 954

原创 《操作系统导论》第2章读书笔记:操作系统介绍

— 杭州 2024-03-17 夜。

2024-03-17 00:27:47 939

原创 C++笔记之给枚举类型的变量赋值

如果你想打印枚举值的名称而不是它的整数值,你需要写一个函数来将枚举值转换为字符串。C++11及之后的版本中没有直接的方式将枚举值转换为其对应的名称字符串。在C++中,你可以在结构体内部定义一个枚举类型,并在创建结构体变量时给枚举类型的变量赋值。请注意,在 C++ 中,枚举值默认是整型,所以在上面的。会被输出为其对应的整数值(在这个例子中是。是枚举中的第二个值,而枚举值默认从。—— 杭州 2024-03-10。的枚举类型,并声明了一个。函数中,我们创建了一个。,然后使用作用域运算符。

2024-03-10 07:37:41 140

原创 C++笔记之嵌套类中的成员函数识别外层类的成员变量

— 杭州 2024-03-10。

2024-03-10 07:34:39 60

GifCam.zip中文版本

GifCam.zip中文版本

2021-03-01

ORB_SLAM2源码中文注释.zip

ORB_SLAM2源码中文注释.zip

2021-02-28

空空如也

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

TA关注的人

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