01 2024 档案
摘要:目录函数简介低层实现逻辑 函数简介 /* Manipulate an epoll instance "epfd". Returns 0 in case of success, -1 in case of error ( the "errno" variable will contain the sp
阅读全文
摘要:目录函数简介低层实现逻辑epoll_create与epoll_create1函数的区别 函数简介 /* Creates an epoll instance. Returns an fd for the new instance. The "size" parameter is a hint spec
阅读全文
摘要:目录函数简介低层实现逻辑 函数简介 /* Wait for events on an epoll instance "epfd". Returns the number of triggered events returned in "events" buffer. Or -1 in case of
阅读全文
摘要:原因:缺少libmysqlclient-dev, 安装:apt-get install libmysqlclient-dev
阅读全文
摘要:VS Code中安装插件:Remote-WSL扩展、Remote Development扩展 安装检查:在左下角有一个远程状态的标记 这个标记可以看出vscode在远程还是本地工作。点击后可选择需要的操作。
阅读全文
摘要:目录定义events字段data字段 定义 epoll_event结构体一般用在epoll机制中,其定义如下: struct epoll_event { uint32_t events; /* Epoll events */ epoll_data_t data; /* User data varia
阅读全文
摘要:epoll 是一种在 Linux 上可用的高性能 I/O 事件通知机制,用于处理大量并发连接。 以下是使用 epoll 进行网络编程的基本步骤: 1. 创建 epoll 实例:使用 epoll_create 函数创建一个 epoll 实例。 2. 添加监听的文件描述符:使用 epoll_ctl 函数
阅读全文
摘要:目录"##"预处理运算符 "##"预处理运算符 在C++中,## 是一个预处理运算符,被称为“连接符”或“连接运算符”。当它在宏定义中出现时,它将其左右两边的标记(token)连接成一个标记。这在创建宏时特别有用,尤其是当你需要合并两个标记来形成一个新的、有效的标记时。 以下是一些使用 ## 的例子
阅读全文
摘要:目录简介应用场景与回调函数区别示例 简介 在Linux下,基于事件驱动的机制主要是通过内核实现,主要涉及到消息传递机制。当硬件设备发出中断时,Linux内核会将触发事件的信息转发到对应的进程上,从而使用户态的应用程序可以响应中断信号,提高程序的响应能力。 此外,Linux还提供了多种方式来实现事件驱
阅读全文
摘要:目录简介如何使用示例 简介 在 Linux 下,I/O 多路复用是一种用于高效处理多个 I/O 操作的技术。它允许一个进程同时监视多个文件描述符或网络套接字,以便在其中任何一个发生 I/O 事件时能够及时响应。 I/O 多路复用的主要目标是提高系统的并发性能和资源利用率。通过同时监听多个 I/O 源
阅读全文
摘要:目录Reactor模型Proactor模型总结实际应用优缺点示例 Reactor 模型和 Proactor 模型都是用于处理异步 I/O 操作的并发模型,它们在设计和实现上有一些区别。 Reactor模型 Reactor 模型(反应器模型)是一种基于事件驱动的并发模型,主要用于处理网络通信等 I/O
阅读全文
摘要:在 Linux 系统中,man 是一个命令,用于调用系统的手册页(Manual Pages)以获取命令、函数、文件或概念的详细信息和用法。 手册页是一种文档形式,提供了有关 Linux 系统中各种命令、工具、库函数、文件格式等的详细说明。它们按照特定的章节组织,并分配了不同的编号。 要使用 man
阅读全文
摘要:目录简介如何遵守?示例 简介 依赖倒置原则(Dependency Inversion Principle,DIP)是软件工程中的一种设计原则,它指出高层模块不应该依赖于底层模块,而是应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。 依赖倒置原则的核心思想是通过抽象来解耦高层模块和底层模块,
阅读全文
摘要:目录简介如何遵守?示例 简介 接口隔离原则(Interface Segregation Principle,ISP)是软件设计中的一个重要原则,它指出不应该强迫客户依赖他们不需要的接口。具体而言,接口隔离原则要求将一个复杂的系统拆分为多个独立的接口,每个接口只提供与特定功能相关的操作,以避免客户端由
阅读全文
摘要:目录简介如何遵守?示例 简介 里氏替换原则(Liskov Substitution Principle,LSP)是面向对象编程中的一个设计原则,由麻省理工学院的Liskov于1988年提出。里氏替换原则主张使用“抽象”和“多态”将设计中的静态结构改为动态结构,维持设计的封闭性。这个原则的主要目标是确
阅读全文
摘要:目录简介如何遵守?反例 简介 开闭原则(Open-Closed Principle,OCP)是软件工程中的一个重要设计原则,它指出软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。 开闭原则的核心思想是,在设计一个软件系统时,应该尽量保持其稳定性和可扩展性。当需要对系统进行扩展或修改时,应该通
阅读全文
摘要:目录简介如何遵守?反例 简介 单一职责原则(Single Responsibility Principle,SRP)是软件工程中的一种设计原则,它指出一个类或模块应该只有一个主要的职责,并且该职责应该被完整地封装在这个类或模块中。 遵循单一职责原则的好处包括: 提高可读性和可维护性:当一个类或模块只
阅读全文
摘要:目录socket地址API主机字节序和网络字节序通用socket地址专用socket地址ip地址转换函数创建socket命名socket监听socket接收连接发起连接关闭连接数据读写带外标记地址信息函数socket选项网络信息API socket地址API 主机字节序和网络字节序 在 Linux
阅读全文
摘要:目录简介成员函数 简介 原子操作库 在 C++11 中,std::atomic是一个用于原子操作的类模板。它提供了原子的读-改-写操作,以确保在多线程环境下对共享变量的操作是线程安全的。 std::atomic的主要用途是对共享变量进行原子操作,例如递增、递减、赋值等。它可以用于实现线程安全的数据结
阅读全文
摘要:目录semaphore信号量的实现semaphore信号量的使用Semaphore与condition_variable的区别 semaphore信号量的实现 参考链接 使用了std::mutex和std::condition_variable来实现信号量的操作。 在这个实现中,Semaphore类
阅读全文
摘要:参考 git config --global core.quotepath false git config --global i18n.commitencoding utf-8 git config --global i18n.logoutputencoding utf-8
阅读全文
摘要:目录简单的线程池C++ 线程池 (学习) 简单的线程池 在 C++11 中,你可以使用 std::thread 和 std::mutex 等标准库来实现一个简单的线程池。 这个代码定义了一个简单的线程池类 ThreadPool,可以用于提交任务并在多个线程上执行。 下面是代码的主要部分和功能: Th
阅读全文
摘要:目录什么是C++中的异步操作?std::async异步调用函数future类 什么是C++中的异步操作? 在C++中,异步操作是指在程序执行期间,可以同时执行多个任务,而无需等待前一个任务完成。这种并发执行的方式可以提高程序的性能和响应速度。 C++中的异步操作通常通过多线程或异步任务来实现。使用s
阅读全文
摘要:目录Shell 显示所在项目当前git分支及状态正常.bashrc文件 Shell 显示所在项目当前git分支及状态 在 ~/.bashrc 最后添加如下内容 function git_branch { ref=$(git symbolic-ref HEAD 2> /dev/null) || ret
阅读全文
摘要:目录condition_variable简介成员函数实现线程间的通信 condition_variable简介 std::condition_variable是C++中用于线程同步的一个类。它通常与std::mutex一起使用,用于在一个或多个线程中阻塞,直到另一个线程修改了共享变量并通知了cond
阅读全文
摘要:目录vscode打开的文件标签过多,换行显示插件C++语法检查规则自动换行file encoding vscode打开的文件标签过多,换行显示 插件 vscode-icons vscode中复制文件名 Copy file name GitLens — Git supercharged 安装后可以直接
阅读全文
摘要:目录C++中的mutex类如何使用Mutex中的lock与unlocktry_lock、try_lock_for和try_lock_untilstd::lock_guard和std::unique_lock C++中的mutex类 C++中的Mutex类是用于实现线程同步的关键工具之一。它用于保护共
阅读全文
摘要:目录地址转换问题unsigned long几个字节指针地址的使用 地址转换问题 #include <iostream> using namespace std; int main() { char test[8] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x0
阅读全文
摘要: ::C++中单例模式为什么设置成静态的C++中 子类可以重写父类中的非虚函数吗C++中static变量的加载时机C++11中静态变量和静态初始化器的作用域是什么在C++中,当类被加载到内存时,以下类型的变量会被构建C++中 i
阅读全文
摘要:目录静态库动态库 静态库 要创建静态库,您需要遵循以下步骤: 创建源文件和头文件 使用GCC生成对象文件 使用ar命令将对象文件打包成静态库 使用静态库编译您的程序 以下是一个示例,演示了如何创建和使用静态库: // 创建头文件 mymath.h int add(int a, int b); int
阅读全文
摘要:目录简介框架电话号码的字母组合 简介 回溯算法是一种用于解决一些计算问题的通用算法,它会逐步构建候选解,并在确定候选解无法完成时放弃每个部分的候选解。回溯算法通常用于解决组合优化问题,如八皇后问题、0-1背包问题等。它使用递归的方式来尝试所有可能的解,并在搜索过程中进行剪枝,以提高效率。 下面是一个
阅读全文
摘要:目录简介单词规律 简介 在C++中,unordered_map是一个非常有用的数据结构,提供了许多常用的函数来进行插入、删除、查找和遍历操作。下面是一些常用的unordered_map函数的介绍: 插入和删除操作 insert(key, value): 向unordered_map中插入一个键值对。
阅读全文
摘要:目录简介长度最小的子数组 简介 滑动窗口算法是一种用于解决问题的技术,它将嵌套的两个循环转换为单个循环。该算法适用于数组或列表。通常,这些问题可以通过暴力方法以O(n²)或O(n³)的时间复杂度解决,但是滑动窗口技术可以将时间复杂度降低到O(n)。 滑动窗口算法的基本思想是将两个嵌套循环转换为单个循
阅读全文
摘要:目录代码随想录全栈潇晨 代码随想录 https://www.programmercarl.com/ 全栈潇晨 链接
阅读全文
摘要:容器(Containers)、迭代器(Iterators)、算法(Algorithms)、函数对象(Function Objects)、适配器(Adaptors)、分配器(Allocators)
阅读全文
摘要:目录简介一维动态规划爬楼梯打家劫舍多维动态规划最小路径和三角形最小路径和最长回文子串买卖股票的最佳时机 II 简介 动态规划是一种计算机编程技术,它将一个算法问题分解为子问题,保存结果,并对子问题进行优化,以找到整体解决方案。动态规划通常用于寻找算法查询的最大和最小范围。动态规划的核心思想是将复杂问
阅读全文
摘要:在C++中,可以通过重载operator bool()来实现对自定义类型的bool类型重载。这样,您可以定义自定义类型的对象在条件语句中的行为,使其能够像内置类型一样进行条件判断。 下面是一个示例,演示了如何在C++中重载bool类型: #include <iostream> #include <s
阅读全文
摘要:目录Linux工具快速教程鸟哥的Linux私房菜Linux就该这么学 Linux工具快速教程 链接 鸟哥的Linux私房菜 链接1 链接2 Linux就该这么学 链接
阅读全文
摘要:目录简介参数详解使用方法TCP和UDP协议的性能测试 简介 iPerf是一个用于测量和调整网络性能的工具。它是一个跨平台的工具,可以为任何网络生成标准化的性能测量。iPerf具有客户端和服务器功能,并且可以创建数据流,以测量两端之间的吞吐量。它支持TCP和UDP测试,可以测量数据吞吐量、延迟和丢包率
阅读全文
摘要:目录简介ftp用法vsftpd用法vsftpd优势 简介 FTP是文件传输协议,用于在计算机之间传输文件。VSFTPD是一个非常安全的FTP守护进程,是一个用于UNIX系统的GPL许可的FTP服务器。它支持IPv6和SSL,可以处理虚拟IP配置、虚拟用户、独立或inetd操作、强大的每用户可配置性、
阅读全文
摘要:目录简介安装Telnet使用Telnet检查开放端口创建登录用户使用Telnet登录到服务器使用场景为什么不安全 简介 Telnet是一种网络协议,用于在两台计算机之间提供双向、基于文本的通信渠道。它允许用户通过TCP/IP网络远程访问计算机,并在远程计算机上运行命令。Telnet使用端口23建立连
阅读全文
摘要:目录 nc命令是一个非常有用的网络工具,也被称为Netcat。它是一个命令行实用程序,用于在两台计算机网络之间读取和写入数据。通信可以使用TCP或UDP协议进行。nc命令在不同系统上可能有不同的名称,例如netcat、ncat等。 以下是nc命令的基本语法: nc [<选项>] <主机> <端口>
阅读全文
摘要:目录简介五个钩子 简介 Netfilter是Linux内核中的一个数据包处理框架,它提供了一种灵活的机制,允许内核模块注册回调函数来处理网络数据包。Netfilter框架的主要功能包括数据包过滤、网络地址转换(NAT)、端口转换等。它允许注册的回调函数在数据包经过特定的处理点时被调用,从而实现对数据
阅读全文
摘要:目录简介使用清空防火墙原理netfilter框架 简介 iptables是Linux系统中的防火墙程序,用于监控服务器的网络流量并根据规则进行过滤。它通过表和链的方式来管理规则,决定数据包的处理方式。iptables有四个默认表:Filter、Network Address Translation
阅读全文
摘要:/proc/sys/net/ipv4文件夹包含了Linux内核中与IPv4网络配置相关的系统参数。这些参数可以通过sysctl命令进行配置和管理。以下是/proc/sys/net/ipv4文件夹中可能包含的一些子目录和参数: /proc/sys/net/ipv4/conf:这个子目录包含了针对不同网
阅读全文
摘要:目录TCP头部结构TCP和UDP区别 TCP头部结构 TCP和UDP区别
阅读全文
摘要:目录route命令格式命令功能命令参数使用示例创建静态路由ip route命令格式命令功能命令参数使用示例静态路由和动态路由静态路由动态路由适用场景 route route命令是Linux系统中用于显示和操作IP路由表的命令。它的主要作用是创建一个静态路由,让指定的主机或网络通过一个网络接口进行通信
阅读全文
摘要:volatile、RTTI 运行时类型信息、explicit、std::cerr
阅读全文
摘要:目录简介显示系统上所有TCP连接的状态统计信息 简介 Netstat是一个网络工具,用于显示计算机与其他计算机或网络设备之间的详细通信信息。它可以显示有关单个网络连接、整体和协议特定的网络统计信息等内容,有助于解决某些网络问题。Netstat命令在Windows、macOS和Linux等操作系统中都
阅读全文
摘要:目录简介步骤1:安装tcpdump步骤2:捕获数据包步骤3:过滤和分析数据包步骤4:将捕获结果写入文件步骤5:查看捕获结果常用参数使用场景 简介 tcpdump是一个命令行实用程序,允许您捕获和分析通过系统的网络流量。它通常用于帮助排除网络问题,以及作为安全工具。以下是使用tcpdump的基本步骤:
阅读全文
摘要:目录概念使用场景示例类图代码实现 概念 简单工厂模式是一种创建型设计模式,它提供了一个创建对象的接口,但允许子类决定实例化哪个类。在C++中,简单工厂模式可以通过一个工厂类来实现,该工厂类负责根据输入参数创建不同的对象实例。下面是一个简单的C++示例来说明简单工厂模式的实现: #include <i
阅读全文
摘要:目录概念使用场景 概念 策略模式是一种行为设计模式,它允许定义一系列算法,并将每个算法封装到一个对象中。这些算法对象可以相互替换,使得客户端调用算法的代码与具体算法的实现分离。在C++中,策略模式通常由一个接口类、具体策略类、上下文类和客户端代码组成。 下面是一个使用C++实现策略模式的示例: 类图
阅读全文
摘要:https://www.zhihu.com/answer/2973245260
阅读全文
摘要:目录泛型编程模板元编程示例 泛型编程 泛型编程是一种通用的软件组件设计方法,使得组件可以在各种不同的情况下轻松重复使用。在C++中,类和函数模板是非常有效的泛型编程机制,因为它们使得通用化成为可能,同时又不损失效率。 一个简单的泛型编程示例是将C标准库的memcpy()函数泛化。memcpy()函数
阅读全文
摘要:学习参考:CMake菜谱(CMake Cookbook中文版) CMake是一个跨平台的自动化建构系统,用于管理软件建构的过程。它使用与平台无关的配置文件来控制软件的编译过程。下面是一个基本的CMake示例,用于构建一个简单的项目: # 指定CMake的最低版本 cmake_minimum_requ
阅读全文
摘要:继承:子类->父类;实现:实现类->接口;组合/聚合:部分类->整体类;关联/依赖:引用类->被引用/依赖类。
继承(泛化 Generalization)= 实现(Realization)> 组合(Composition)> 聚合(Aggregation)> 关联(Association)> 依赖(Dependency)
阅读全文
摘要:1 线程的创建
2 线程的执行方式,`join`或者`detach`
3 向线程函数传递参数,需要注意的是线程默认是以拷贝的方式传递参数的,当期望传入一个引用时,要使用`std::ref`进行转换
4 线程是`movable`的,可以在函数内部或者外部进行传递
5 线程在运行过程中,如果需要停顿,可以用`this_thread::sleep_for`实现
6 每个线程都一个标识,可以调用`get_id`获取。
阅读全文
摘要:std::bind、POD、初始化列表、显示转类型转换、显示转换操作符、RAII、完美转发、智能指针、lambda表达式
阅读全文