058-design-patterns-learning
设计模式网站 refactoringguru 设计模式 图说设计模式 GeeksforGeeks 设计模式 视频 设计模式-阿西拜编程 GitHub design-patterns-for-humans design-patterns-cpp
057-nlohmann_json库的使用
json.hpp 库下载及安装nlohmann json 的开源项目地址: https://github.com/nlohmann/json#serialization–deserialization 对于我们项目中要使用 nlohmann json 工具,只需要引入 json.hpp 这一个文件,其中包含所有接口函数,正如其文档中所述 json.hpp 文件在 single_include/nlohmann 目录下,我们只需要下载该文件即可: git clone https://github.com/nlohmann/json/blob/develop/single_include/nlohmann/json.hpp 注意:不是 include/nlohmann/json.hpp,而是 single_include/nlohmann/json.hpp,前者要包含整个文件夹,后者只需要包含 json.hpp 文件。 用 json 赋值在使用 nlohmann JSON 库时,如果 JSON...
055-windwos下用Studio编译缺少jsoncpp库怎么办
在 Windows 下使用 Microsoft Visual Studio 时,如果没有jsoncpp库,你可以通过以下几种方式来解决这个问题: 使用 vcpkg 安装 jsoncpp 库: 首先,确保你已经安装并设置好vcpkg。如果没有,请参考vcpkg 的官方文档进行安装。 打开命令提示符,导航到vcpkg的安装目录,然后运行以下命令来安装jsoncpp: 1vcpkg install jsoncpp 安装完成后,将vcpkg集成到 Visual Studio 中: 1vcpkg integrate install 在你的项目中,确保在项目属性中包含vcpkg的头文件和库路径。 手动下载和编译 jsoncpp 库: 访问jsoncpp 的 GitHub 页面下载源码。 使用 CMake 生成 Visual Studio 项目文件,然后在 Visual Studio 中打开并编译。 将生成的库文件和头文件添加到你的项目中。 使用 NuGet 包管理器: 在 Visual Studio 中,右键点击你的项目,选择“管理 NuGet...
054-Microsoft Visual Studio 怎么编译c++项目, 项目中包含了.sln文件
在 Microsoft Visual Studio 中编译包含 .sln 文件的 C++ 项目通常需要以下步骤: Microsoft Visual Studio 编译 c++ 项目步骤 1: 打开解决方案 启动 Microsoft Visual Studio。 点击 “文件” -> “打开” -> “项目/解决方案”。 浏览到包含 .sln 文件的目录,选择该文件,然后点击 “打开”。 步骤 2: 设置构建配置 在 Visual Studio 窗口的工具栏中找到 “解决方案配置” 下拉菜单(通常在右上角),选择合适的配置: Debug:用于调试,包含调试信息,优化级别较低。 Release:用于发布,优化级别较高,无调试信息。 根据需要,选择 “平台”(如 x86 或 x64)。 步骤 3: 检查项目设置 在解决方案资源管理器(Solution Explorer)中右键单击项目名称,选择 “属性”。 在弹出的 “属性页” 中检查关键配置: 常规: 确保 输出目录 和 中间目录...
053-localhost和127.0.0.1的关系
localhost 和 127.0.0.1 都是指向本地主机的地址,但它们在使用上有一些细微的区别: 1. 127.0.0.1 IPv4 地址:127.0.0.1 是一个标准的 IPv4 地址,专门用于指向本地计算机。 环回地址:它是一个环回地址,意味着任何发送到这个地址的数据包都会被返回到本地计算机。 网络接口:通常与名为lo或lo0的网络接口绑定。 2. localhost 主机名:localhost 是一个主机名,通常在系统的/etc/hosts文件中被解析为127.0.0.1。 域名解析:在大多数系统中,localhost 被解析为127.0.0.1,但它也可以被配置为解析为其他地址(如 IPv6 的::1)。 可配置性:用户可以在/etc/hosts文件中更改localhost的解析地址。 3. 关系与区别 默认解析:在大多数情况下,localhost 默认解析为127.0.0.1,但它是通过域名解析系统(如/etc/hosts文件)实现的。 IPv6 支持:localhost 也可以解析为 IPv6 地址::1,而127.0.0.1仅限于...
052-进程间通信
进程间通信(Inter-Process Communication, IPC) 进程间通信有哪些方式 共享内存 管道 消息队列 信号量 套接字 进程间通信(IPC)的连接可以通过多种机制建立,每种机制都有其特定的用途和实现方式。以下是几种常见的 IPC 机制及其连接建立方式: 1. 管道(Pipe) 匿名管道 只能在父子进程之间使用 通过pipe()系统调用创建 创建后返回两个文件描述符:一个用于读,一个用于写 12345int pipefd[2];if (pipe(pipefd) == -1) { perror("pipe"); exit(EXIT_FAILURE);} 命名管道(FIFO) 可以在无亲缘关系的进程间使用 通过mkfifo()创建一个特殊文件 进程通过打开这个文件进行读写 1mkfifo("/tmp/myfifo", 0666); 2....
051-使用cmake编译项目
要编译一个已有 CMakeLists.txt 文件的 C++ 项目,你需要按照以下步骤进行操作: CMake 和 make1. 确保安装了 CMake 和编译工具首先,确保你的系统已经安装了 CMake 和适当的 C++ 编译工具。具体取决于你的操作系统,下面是一些常见的安装方式: Windows:安装 CMake 和 Visual Studio 或 MinGW(如果你使用的是命令行编译器)。 Linux/Mac:可以通过包管理器安装 CMake 和 g++ 编译器: Linux: sudo apt-get install cmake g++ macOS: brew install cmake(如果使用 Homebrew) 2. 创建构建目录通常我们不直接在项目的根目录中进行构建,而是创建一个单独的构建目录,这样可以保持项目目录的整洁。 在项目的根目录下,执行以下命令: 12mkdir buildcd build 3. 运行 CMake 配置项目在构建目录中,使用 cmake 命令来配置项目。这会生成平台特定的构建文件(如 Makefile 或...
050-线程与进程
进程是操作系统对一个正在运行的程序的一种抽象。线程是进程中的一个执行单元。 为什么不用类似于 fork 的方式创建线程fork 创建进程的特点 资源复制 123456pid_t pid = fork();// fork会复制:// - 内存空间// - 文件描述符// - 程序计数器// 等所有资源 开销大 需要复制整个进程地址空间 创建新的页表 复制文件描述符表 线程的设计目的 轻量级任务切换 123456789pthread_t thread;pthread_create(&thread, NULL, thread_func, NULL);// 线程共享:// - 代码段// - 堆空间// - 文件描述符// 仅独立:// - 栈空间// - 寄存器 资源共享优势 线程间通信成本低 上下文切换快 内存占用小 如果用 fork 方式创建线程会带来的问题 性能问题 123创建100个线程:- 当前方式:只需要分配100个栈空间-...
049-data-structure-and-algorithm-learning
数据结构与算法是计算机科学的基础,是解决实际问题的关键。 书籍 《大话数据结构》 网站 Hello 算法