自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【图形学】数学基础

在图形处理中,矩阵操作时最基本的操作,但是不同的系统中对矩阵的存储是不同,比如OpenGL和Cg中就是不一样的:比如一个4x4矩阵在实现中通常将其存储为一个一维的线性数组如float matrix【16】或者float* matrix。在opengl中这个matrix中数据的顺序是先遍历列的,线性存储为{m11,m21,m31,m41,m12,m22,m32…},这被称为矩阵的列序存储。GLM数据库采用的是列序存储。Directx的数学库是行序存储。opengl和hlsl都要求矩阵是列序存储。

2024-09-25 14:20:31 447

原创 【mit6s081】调试内核kernel

然后在另一个窗口启动gdb-multiarch 进入gdb后加载kernel。:分割窗口以同时显示源代码和汇编代码。: 显示每次断点的那条指令的汇编,默认gdb调试时没有汇编指令。以下是一些显示汇编的gdb指令。首先开启qemu gdb。该命令会让程序进入等待。: 显示一个指令界面。:切换到源代码视图。:切换到寄存器视图。退出layout界面。

2024-09-04 11:40:05 254 1

原创 【mit6s081】【WSL】windows终端运行WSL如何进行分屏

退出tmux: 输入 exit 或按 Ctrl + d 来退出当前的 tmux 会话,或按 Ctrl + b 然后按 d 来暂时退出并返回到原始Shell。在WSL2的Shell中,你还可以使用终端复用工具,如 tmux 或 screen,来进行分屏。水平分屏: 在 tmux 中,可以通过按 Ctrl + b 然后按 " (双引号) 来创建一个水平分屏。在分屏之间切换: 使用 Ctrl + b 然后按方向键(←,→,↑,↓)来切换不同的分屏。

2024-09-04 10:43:36 533

原创 【mit6s081】前期准备

视频资料B站和官方都有。

2024-09-03 15:52:17 362

原创 【C++】汇编分析,函数是如何调用,传参,返回

如何传参,通过push指令将参数压入栈,然后call参数放在哪:因为调用是先push再call, 进入函数后参数在栈下面,也就是不在[ebp, esp)这个范围内,通过ebp+x来取得参数。局部变量在哪:进入函数后的3条指令开辟了新的栈空间即[ebp, esp), 局部变量在栈空间内,通过ebp-x来取值。函数执行完恢复调用方的堆栈信息:进入函数后先将调用方的ebp压入栈,然后移动堆栈,调用方的ebp就存在当前栈底,即ebp指向的就是,退出函数时有个mov esp, ebp;

2024-08-29 23:15:58 753

原创 【C++】static

说起static,一般想到它的作用是延长变量的生命周期,如果只是这样那么它跟全局变量有什么区别呢?在C++之前,C语言就有static了,C的static作用很简单,就是不让其他文件的访问自己的全局变量。C中,我可以用extern来获取其他.c文件定义的全局变量,,有点类似c++的private。

2024-08-23 03:16:31 422

原创 【C++】字符串操作

strcat 是 C 语言标准库中的一个字符串操作函数,用于将一个字符串(源字符串)连接到另一个字符串(目标字符串)的末尾。

2024-08-23 01:17:23 254

原创 【C/C++】文件读写

有时候我们想要一个字符一个字符的读取文件:

2024-08-23 01:11:42 230

原创 【C++】指针运算

pa的地址实际增加了 2*sizeof(int)的值。

2024-08-21 20:24:00 128

原创 【C++】内存对齐

内存对齐,cache

2024-08-21 00:24:39 428

原创 【C++】如何判断类型

typeid对多态的情况不支持dynamic_castdynamic_cast<Child*>(pParent)尝试将一个基类指针转换为派生类指针,如果成功,返回指向该对象的派生类指针,失败返回nullptr。dynamic_cast只支持多态的情况,即基类必须有虚函数

2024-08-13 00:38:37 263

原创 【游戏引擎】事件系统

引擎支持多种窗口,如glfw窗口,Win窗口。每个都有自己的事件系统。希望引进统一事件的管理,并且方便把事件分发到我们游戏中的各个部分,就需要自己实现一套事件系统,这样事件系统可以跟窗口类解耦。本节解决事件如何产生与分发。1、事件系统的实现主要是设计各种事件类。

2024-08-13 00:23:42 458

原创 【C++】include<>和include““的区别

如果在当前目录中找不到,编译器会按照与 #include。它们之间的主要区别在于头文件的搜索路径和优先级。这种形式通常用于包含项目中的自定义头文件。

2024-08-02 11:06:15 350

原创 【C++】构造函数,拷贝构造,拷贝赋值

构造函数:如果没有声明任何构造函数,编译器会自动生成拷贝构造:没有则自动声明拷贝赋值:没有则自动声明。

2024-08-02 11:03:48 180

原创 【CMake】install用法

以前一直不清楚install的具体作用,现在明白了,其实就是把你的文件(生成的二进制,源代码或者任意)给复制(也可以说安装)到指定路径。

2024-06-10 12:58:36 468

原创 【cmake】cmake cache

cmake cache是cmake在配置好后生成的一个CMakeCache.txt的文件,里面存储了一堆变量,这些变量一般都是关于项目的配置和环境的。比如你用的什么编译器,编译器选项,还有项目目录。

2024-06-06 22:18:00 1149

原创 【C++】【工具】【VScode】常用快捷键

在Visual Studio Code (VSCode) 中,有几个快捷键可以帮助你更高效地编写C++代码,特别是与代码提示、自动完成等功能相关的快捷键。所有平台: 当你键入函数名并输入左括号(时,VSCode会自动显示此函数的参数提示。需要注意的是,这些快捷键的有效性可能受到你安装的扩展和当前的编辑器配置的影响。这个快捷键会弹出一个建议列表,显示可能的代码完成项,如变量名、函数名或其他可用的代码片段。参数提示可以帮助你了解函数期望的参数,包括它们的类型和顺序。移动到下一个/上一个参数(在代码完成中)

2024-05-30 10:53:59 1040

原创 【C++】【Windows】程序加载DLL库时依次查找哪些目录

有时,开发者可能会使用 SetDllDirectory 或 AddDllDirectory 函数增加额外的目录到搜索路径中,这会影响DLL搜索顺序。另外,使用 LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR 和相关的加载选项能够更改默认的搜索顺序。具体的加载顺序有时还可能受到系统配置和具体的API调用方式(比如 LoadLibrary, LoadLibraryEx)的影响。所以,上述顺序并不是固定不变的,可能会根据不同的情况或系统配置有所改变。

2024-05-29 15:31:23 958

原创 分清异步和同步

要理解一个东西:异步不是一个技术点,而是你程序中的任务执行的方式,可以说是一种模型。作为程序员,你也可以理解为你要实现的目标。而跟实现异步有关的技术点有:回调,多线程,消息机制。为什么要实现异步:为了最大化的利用计算机的资源。A->B->C->IO操作->D->E。很明显,IO操作是需要异步的部分。比如你的程序走到了IO操作了,1、调用方根本就不关心执行结果。同步就是等待,异步就是不等待。2、调用方需要知道执行结果。假设任务流程是这样的。

2024-03-04 17:13:31 407

原创 【加密】加密模式CBC,CTR,ECB

由于每个块都依赖于前一个块的密文,因此在加密时需要一个初始化向量(IV),而且每个块的加密是并行进行的,因此适合并行加密。这意味着如果同样的明文块被加密多次,每次加密的结果都是相同的,这样就可能会导致一些安全性问题,例如信息泄漏或模式攻击。在 CBC 模式中,明文被分割成固定大小的块,然后每个块都会与前一个块的密文进行异或操作(XOR),然后再进行加密。ECB 是一种加密模式,它是最简单的加密模式之一,但是也是最不安全的加密模式之一。在 ECB 模式中,明文被分割成固定大小的块,并且每个块都独立地加密。

2024-02-22 16:30:34 898

原创 【C++11】委托构造函数和集成构造函数

在同一个类中一个构造函数可以调用另一个构造函数。

2024-01-22 16:47:18 422

原创 多线程可以加很多锁吗

最近在做一个作业,要求用多线程处理一个很大的数据的压缩。因为数据很大,所以将数据分成很多段,并行进行计算,我定义了一个task的数据结构来描述每个计算任务信息,比如数据大小,是否完成等等。然后再将压缩的结果合并。问题是这样:首先每一段压缩后的结果的长度是不确定的,并且最后合并结果时也不能有空隙。这就意味着合并时必须等待每个task计算完成,但是不能等所有task计算完成再合并,因为这样合并要等很长时间,最后达不到要求。

2024-01-22 12:32:31 399

原创 【C++】bool操作符重载

C++的重载操作符还能重载bool,实际上这是转换操作,把类型转换为bool类型。一般用来判断一个封装了资源的类其资源是否还在。

2024-01-15 18:30:21 646

原创 【C++11】可变参数模版

C++11中允许模板定义0-任意个模板参数。写法如下:…的语义为:1)声明一个参数包,参数包可以包含任意个参数;2)在模板定义的右边,可以将参数包展开成一个一个独立的参数。

2024-01-08 21:56:14 372

原创 【C++11】可调用对象

C++11,可调用对象

2024-01-08 19:47:52 425 1

原创 【OpenGL】一些容易遗忘的标准

当链接着色器至一个程序的时候,它会把每个着色器的输出链接到下个着色器的输入。当输出和输入不匹配的时候,你会得到一个连接错误。纹理贴图的(0,0)是左下角。OpenGL是右手坐标系。渲染三角形时按顺时针。

2023-12-27 23:21:27 410 1

原创 【OpenGL】VAO,VBO,EBO,顶点属性

glDrawElements函数从当前绑定到GL_ELEMENT_ARRAY_BUFFER目标的EBO中获取其索引。3、通过glVertexAttribPointer调用与顶点属性关联的顶点缓冲对象。当绑定了VAO后,这个VAO会追踪那些绑定VBO,EBO以及顶点属性的函数调用。VAO能存储VBO、EBO和顶点属性。所以确保没有在解绑VAO之前解绑索引数组缓冲,否则它就没有这个EBO配置了。2、通过glVertexAttribPointer设置的顶点属性配置。顶点数组对象与顶点缓冲对象相比多了可以。

2023-12-27 22:50:16 603 1

原创 【C++】sizeof

sizeof

2023-12-27 17:55:31 406 1

原创 【C++】类型转换操作符

使用方法有两种,一种是利用构造函数,二是用。写C++可以让一个类A可以转换成类B。operator实现一个。

2023-12-26 16:40:43 417 1

原创 【C++11】理解基于范围的for循环,并且实现自定义的range循环

也就是说只要for-range循环冒号后边的东西是个类,这个类只要实现begin(),end()方法,并且两个方法返回一个迭代器即可。这个for-range循环实际上只是C++的语法糖,它是下面代码的等价替换。冒号前面的局部变量声明只要求能够支持容器类型的隐式转换。现在我们要实现一个类似于Python的range循环。这两种方法的弊端在于,都要写begin,和end。这个range是个函数,它返回一个我们前面说的类。我们要实现迭代器,满足要求的类,和range函数。新的基于范围的for循环是这样的。

2023-12-26 15:59:40 947 1

原创 C++11 列表初始化

C++11之后,列表初始化可以涵盖所有类型的初始化。

2023-12-24 14:15:44 384 1

原创 C++11模板的改进

比如我们想要一个key固定为string类型的map。typedef不方便跟模板结合,而 using可以。定义函数指针类型也更方便。

2023-12-24 10:31:42 384 1

原创 【C/C++】将二进制数据流转换为字符串

只支持4096个字节的显示。

2023-12-22 15:43:31 1188

原创 【WSL】wsl连接usb串口设备

wsl检测串口设备

2023-12-20 10:06:57 1778 2

原创 【cmake】记录VS 2022 + cmake 配置glfw3库的过程

首先我在想要在我的cmake项目里添加glfw3的库。我想要使用find_package来找到库,这样如果我想再创建新的项目引入glfw库时也不需要去指定目录了。构建时我设置了DCMAKE_INSTALL_PREFIX,用于指定了其install目标的目录。在然后,我们在要引用的项目里把这个路径添加进行。其中cmake的find_package要找的glfw3Configure.cmake就在lib文件夹下面。这个代码肯定会报错,因为我们还没有glfw库。然后编译好的库就会到指定的install文件夹下。

2023-11-16 12:25:33 1147 1

原创 【vscode】如何带参调试

在launch.json中设置好后,不能点击右上角的调试按钮。要点击侧边栏的调式,要选择好配置项。

2023-10-17 22:45:06 84

原创 【visual studio】常用快捷键

转到声明 转到定义。

2023-10-16 23:17:05 351 1

原创 一名外国老程序员的人生箴言

你可以结识很多想法相同的人,大家互相交流,不一定有相同的兴趣,但是对方会用跟你相同的方式思考问题,这很酷。我心里就会很讨厌这种技术,但会把它推荐给客户,比如我恨 Jenkins,但把它推荐给新客户,我不觉得做错了。(22)发生事故时,如果周围的人试图将责任归咎于外部错误或底层服务中断,那么是时候离开这家公司,继续前进了。(18)手腕和背部的健康问题可不是开玩笑的,好的设备值得花钱。(25)做自己喜欢的事情并不重要,不要让我做讨厌的事情更重要。(9)如果我发现自己是公司里面最厉害的工程师,那就该离开了。

2023-10-04 09:52:37 62 2

原创 windows如何使用linux的命令

GitBash搭配微软终端,界面美观:https://www.cnblogs.com/cong-wang/p/15026535.html。最好的方式就是用Git自带的GitBash.

2023-09-18 23:57:04 47 1

原创 【C++】Visual Studio warning C4819: 该文件包含不能在当前代码页(936)中表示的字符 && “常量中有换行符”的解决办法

打开“文件”菜单下的“高级保存选项”,设置编码 Unicode(utf-8带签名)- 代码页 65001 可以解决。在一个CMakeLists项目中遇见了这个BUG。代码都是没用问题的。原因是代码文件的字符编码格式的UTF8无签名的。

2023-09-11 11:13:19 373

空空如也

空空如也

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

TA关注的人

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