面向对象的基本概念 面向对象编程(Object-Oriented Programming,OOP)是一种编程范式,它基于“对象”的概念,将数据和操作数据的方法封装在一起。面向对象的四大基本特征是抽象、封装、继承和多态,这些特征构成了 OOP 的核心。 抽象(Abstraction): 抽象是指隐藏对象的内部细节,只暴露必要的接口。这允许我们忽略那些…
日志系统 日志系统的重要性 错误跟踪:当系统出现问题时,日志是诊断问题的重要工具。通过分析日志,可以追踪错误发生的原因和上下文。 安全审计:日志可以记录安全相关的事件,如登录尝试、权限变更等,这对于检测和响应安全威胁至关重要。 性能监控:日志可以帮助监控系统性能,通过分析日志中的性能指标,可以发现潜在的性能瓶颈。 系统维护:日志提供了系统运行的历史…
进程虚拟内存空间 虚拟内存空间 将 C 程序的内存管理任务完全交给操作系统,虽然听起来是一种简化的方法,但实际上可能会带来一系列问题: 进程隔离性:操作系统需要确保不同进程之间的内存空间相互隔离,以防止一个进程访问或破坏另一个进程的数据。如果 C 程序直接管理物理内存,这种隔离性很难实现,因为程序可能无意中访问到其他进程的内存区域,或者操作系统难以…
cmake_minimum_required(VERSION 3.28) get_filename_component(ProjectId ${CMAKE_CURRENT_SOURCE_DIR} NAME) string(REPLACE " " "_" ProjectId ${ProjectId}) project(${ProjectId} C) …
安装库 Linux sudo apt install libmysqlclient-dev 在调用函数之前,需要包含头文件 <mysql/mysql.h> 在生成可执行程序的链接阶段时,需要加入链接选项 -lmysqlclient Windows https://dev.mysql.com/downloads/ 使用流程 mysql_i…
C++11 线程 函数接口 线程 id 的获取 // 此处的 get_id 是成员函数,说明需要使用对象进行调用 std::thread::id get_id() const noexcept; // 此处的 get_id 是 std::this_thread 命令空间中的一个实体,就是个普通函数 std::thread::id get_id() …
函数对象 函数对象(也称为仿函数)是 C++ 中的一种概念,它允许对象表现得像函数一样。这意味着可以像调用普通函数那样调用这些对象。函数对象可以是以下几类: 重载了函数调用运算符的类创建的对象: 用户自定义的类,通过重载 operator() 运算符,可以创建出自己的函数对象。这些对象可以有状态(即数据成员),也可以是无状态的。 函数名: 在 C+…
基本语法特性 [capture](params) opt -> retureType { body; }; 其中 capture 是捕获列表,params 是参数列表,opt 是函数选项,retureType 是返回值类型,body 是函数体。 捕获列表 不能省略。捕获一定范围内的变量。 [] 不捕捉任何变量。 [&] 捕获外部作用域…
概述 算法中包含很多对容器进行处理的算法,使用迭代器来标识要处理的数据或数据段、以及结果的存放位 置,有的函数还作为对象参数传递给另一个函数,实现数据的处理。这些算法可以操作在多种容器类型 上, 所以称为“泛型”,泛型算法不是针对容器编写,而只是单独依赖迭代器和迭代器操作实现。而且算法 库中的算法都是普通函数(自由函数)。 算法的分类 非修改式的算…
迭代器的基本概念 迭代器(iterator)模式又称为游标(Cursor)模式,用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。 或者这样说可能更容易理解:Iterator 模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由 iterator 提供的方法)访问聚…