- 博客(21)
- 收藏
- 关注
原创 MissingSemester-版本控制系统Git
版本控制系统 (VCSs) 是一类用于追踪源代码(或其他文件、文件夹)改动的工具。顾名思义,这些工具可以帮助我们管理代码的修改历史;不仅如此,它还可以让协作编码变得更方便。VCS通过一系列的快照将某个文件夹及其内容保存了起来,每个快照都包含了文件或文件夹的完整状态。同时它还维护了快照创建者的信息以及每个快照的相关信息等等。当前模块是谁编写的?这个文件的这一行是什么时候被编辑的?是谁作出的修改?修改原因是什么呢?最近的1000个版本中,何时/为什么导致了单元测试失败?
2024-10-17 20:26:39
973
1
原创 static关键字,使用以及原理
符号解析(SR)又叫符号绑定,程序中定义与引用的符号(包括变量和函数),将符号保存在符号表.symtab节(结构数组)中,函数名在.text节,变量名在.data/.bss节(已初始化.data/未初始化)。如果在类或结构体内定义一个静态变量,表示在这个类的所有实例中,这个变量只有一个实例,也就是这个变量的全局实例,所以在实例中引用这个变量/函数是没有意义的。static变量存储在全局数据段中,但其作用域仅限于声明它的文件,这意味着它在程序的整个生命周期中都存在,但只能被该文件中的代码访问。
2024-10-11 11:13:03
1363
原创 C++中的new和delete及其重载
如果使用placement new在预分配的内存上构造了一个对象,你需要在不再需要该对象时显式调用其析构函数来销毁它,然后释放内存。这是因为placement new不会在对象的作用域结束时自动调用析构函数。如果使用。
2024-09-22 17:43:07
1137
原创 基于Beast的Http服务器基本流程
方法根据请求的目标路径处理POST请求。如果目标路径是/email,则解析请求体中的JSON数据,并生成相应的响应。如果目标路径不是/email,则返回404 Not Found响应。方法处理HTTP POST请求,解析请求体中的JSON数据,并生成相应的响应。如果请求的目标路径不是/email,则返回404 Not Found响应。
2024-08-02 17:46:01
842
原创 linux服务器中关于vscode插件的内存占用原因及解决
服务器连续多次崩溃,本来就小内存的服务器,vscode远程连接后,任意打开一个cpp文件就崩溃,发现是内存占用过高,一个来自Remote-SSH的server服务,另一个是cpptools。
2024-06-28 18:11:44
3454
原创 linux进程操作
僵尸进程(Zombie Process)是指已经结束执行但其进程描述符仍然存在的进程。这种情况发生在子进程已经完成执行并退出,但其父进程尚未通过wait()或waitpid()系统调用来读取子进程的退出状态。在这种情况下,子进程的进程ID和退出状态仍然保存在系统中,以便父进程可以查询。僵尸进程不占用除了进程表项之外的任何资源,不会消耗CPU时间,也不会占用内存空间。然而,因为每个进程都需要一个唯一的进程ID,如果系统中存在大量的僵尸进程,它们可能会耗尽可用的进程ID,从而阻止新的进程被创建。
2024-05-19 19:09:03
2184
原创 std::string
拼接是指将多个 string_literals 连接成一个更长的 string_literal 的过程,不同的编程语言可能有不同的语法和规则。注意,这里的 "String"s 是一个 std::string 类型的 string_literal,因为它使用了 s 后缀。s 后缀是一个用户自定义的字面量 (user-defined literal),它可以将一个 const char* 类型的 string_literal 转换为一个 std::string 类型的 string_literal。
2024-05-16 21:14:10
2267
原创 snprintf函数
其中,str 是指向用于存储结果字符串的缓冲区的指针,size 是缓冲区的最大大小(以字节为单位),format 是格式字符串,与 printf 函数中的格式字符串相同,后面的 …表示可变数量的额外参数,这些参数与格式字符串中的格式占位符相对应。如果 buffer 太小,无法容纳全部格式化后的数据,则返回的值将会是如果 buffer 足够大,本应写入的字符总数。如果缓冲区不够大,实际写入的字符数会少于这个返回值,但函数仍然会返回完整的字符总数,以便程序员可以了解需要多大的缓冲区来容纳全部数据。
2024-05-12 20:52:08
686
原创 push_back(std::move(string))与emplace_back(string)
如果你想要添加一个已经存在的对象,并且想要避免复制,那么使用push_back(std::move(string))是合适的。如果你想要直接在vector中构造一个新元素,那么使用emplace_back并传递构造新元素所需的参数是更好的选择。
2024-05-11 18:39:24
1160
1
原创 函数指针与匿名函数
函数指针是指向函数的指针变量。因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。其中,是函数返回类型,是指针变量的名称,是函数参数的类型。// 声明一个指向函数的指针// 将函数指针指向特定的函数// 通过函数指针调用函数return 0;这个例子中,funcPtr是一个指向接受一个整数参数并返回void的函数的指针。然后,它被赋值为指向myFunction函数的指针,并通过该指针调用函数。
2024-05-07 12:48:46
999
1
原创 C++完美转发
完美转发是指在模板函数中将接收到的参数无损地转发到另一个函数的能力。这是通过来实现的,它是一个特殊的模板函数,用于保持原始参数的值类别(左值或右值)。当你在模板函数中使用时,它会根据每个参数的原始值类别来转发这些参数。如果原始参数是左值,那么转发后它仍然是左值;如果原始参数是右值,那么转发后它也是右值。这种机制非常重要,因为它允许你编写通用代码,同时保持参数的优化(比如避免不必要的拷贝)。完美转发是现代C++中实现高效和灵活代码的关键技术之一。接下来一个一个解释。
2024-05-02 12:30:34
1187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅