- 博客(134)
- 收藏
- 关注
原创 std::string::compare
是 C++ 标准库 std::string 类的一个成员函数,用于比较两个字符串或部分字符串。compare方法提供了与字符串比较相关的详细功能,可以直接用来比较字符串的相对顺序。
2024-09-14 11:23:38
760
原创 boost::trim
是 Boost C++ Libraries 中的一个函数,用于去除字符串开头和结尾的空白字符。可以帮助你清理不必要的空白字符。在使用之前,请确保你的项目正确配置了 Boost 库,并包含了正确的头文件。
2024-09-14 11:10:56
570
原创 Redis入门
Redis 是一个开源的、高性能的内存数据存储系统,广泛用于缓存、实时数据分析、消息传递和其他需要快速读写操作的场景。它可以用作数据库、缓存和消息代理。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等,并提供了丰富的操作功能。
2024-09-13 09:05:38
408
原创 docker 多阶段构建
Docker 的多阶段构建(Multi-Stage Builds)是一个功能强大的特性,用于优化 Docker 镜像的构建过程。它允许你在Dockerfile中使用多个FROM指令来创建不同的构建阶段,从而将构建过程分成多个阶段。每个阶段都可以使用不同的基础镜像,最终只将所需的内容从构建阶段传递到最终镜像中。
2024-08-27 09:38:18
941
原创 std::tuple源码分析
std::tuple是 C++ 标准库中的一种模板类,用于存储固定大小的不同类型的元素。它主要依赖于模板和递归技术来实现。它提供了一种灵活的方式来处理不同类型的多个数据,允许你将不同类型的多个元素组合成一个单一的对象。
2024-08-26 13:45:05
574
原创 标准库中的 std::variant
是 C++17 标准库中引入的一个类型安全的联合体(Union)。它允许一个对象在运行时存储多个不同类型中的一种,并且提供了安全访问和类型操作的功能。是处理需要存储不同数据类型的场景时的理想选择,比传统的union或void*更安全、灵活。利用 std::get、std::get_if 和 std::visit,你可以有效地处理不同类型的数据,同时保持代码的清晰和安全。
2024-08-26 10:45:16
528
原创 Variant
在计算机编程中,Variant 是一种特殊的数据类型,通常用于表示可以存储多种不同类型的值。它提供了一种灵活的方式来处理动态类型数据。在程序运行时,Variant 可以根据需要存储整数、浮点数、字符串、日期等多种类型的值,并且能够动态地改变存储的类型。
2024-08-26 10:32:42
480
原创 序列化协议 Protocol Buffers
Protocol Buffers(通常简称 Protobuf)是由 Google 开发的一种数据序列化协议。它提供了一种高效、平台无关、可扩展的序列化结构化数据的方式,广泛用于各种应用场景,如数据存储、RPC(远程过程调用)和消息传递系统。
2024-08-26 09:04:02
368
原创 序列化和反序列化
序列化和反序列化是计算机科学中的两个重要概念,通常用于数据传输和存储。序列化和反序列化的格式和协议必须匹配,否则会导致数据不一致或错误。反序列化过程中可能会遇到恶意数据,特别是在网络环境中。反序列化攻击可能导致代码执行漏洞,因此处理不信任的数据时需要小心。
2024-08-26 08:48:53
1013
原创 awk和sed
awk是一种强大的文本处理工具,常用于数据提取和报告生成。它以其简洁的语法和强大的功能在Linux和Unix系统中广泛使用。awk的名字源自其发明者Alfred Aho、Peter Weinberger和Brian Kernighan的名字首字母。sed(Stream Editor)是一个流编辑器,用于对输入文本进行编辑和处理。它通常用于替换、删除、插入和格式化文本。
2024-08-23 15:00:31
277
原创 #pragma pack()
是一种编译器指令,用于控制数据结构在内存中的对齐方式。它可以改变数据结构的对齐要求,以优化内存使用或与特定的硬件或协议规范对齐。虽然是 C++ 标准中不定义的,但它在许多编译器中得到了支持(如 GCC、MSVC 和 Clang)。使用和可以设置和恢复对齐方式。然而,使用 #pragma pack() 时需要考虑可移植性、性能以及硬件对齐要求。
2024-08-23 11:26:13
765
原创 boost::mysql::results
是 Boost.MySQL 库中的一个类,用于处理从 MySQL 数据库查询返回的结果集。它提供了处理 MySQL 查询结果集的功能,包括访问和操作数据。它通过迭代器支持遍历结果集,并通过方法提供对结果数据的安全访问。
2024-08-23 10:47:17
383
原创 boost::mysql::tcp_ssl_connection
是 Boost C++ Libraries 中 Boost.MySQL 模块的一部分,用于通过 SSL/TLS 加密连接 MySQL 数据库。它确保了数据在网络上传输时的安全性,适用于需要保护数据隐私和完整性的场景。通过配置和使用 SSL/TLS 加密,可以确保与 MySQL 数据库通信的安全性,并防止潜在的安全威胁。
2024-08-23 09:12:02
533
原创 boost::mysql::tcp_connection初识
是 Boost C++ Libraries 中的一个类,用于实现 MySQL 数据库的 TCP 连接。这个类是 Boost.MySQL 库的一部分,旨在提供一种高效、可靠的方式来与 MySQL 数据库进行通信。用于通过 TCP/IP 协议与 MySQL 数据库进行通信。它提供了连接管理、查询执行和结果处理的功能,并支持异步操作,适用于高性能和高并发的应用场景。
2024-08-23 09:01:35
548
原创 boost::property_tree初识
是 Boost 库中的一个模块,用于处理树状数据结构,并提供一种方便的方式来存储和访问层次化的属性数据。它常用于配置文件解析、数据存储和处理、以及其他需要树形数据结构的场景。
2024-08-22 16:06:07
873
原创 计算机的网卡是如何工作的
计算机的网卡(网络接口卡,Network Interface Card,简称NIC)是计算机连接网络的硬件组件。它负责将计算机的数据与网络进行物理和协议层面的连接。它在计算机网络中起着至关重要的作用,通过封装、发送、接收和解封装数据,实现计算机与网络之间的通信。它将网络协议栈中的数据转化为可以通过网络介质传输的信号,并确保数据的准确性和完整性。
2024-08-22 13:29:17
767
原创 NPU、CPU和GPU
NPU、CPU和GPU是三种不同类型的处理器,它们各自有不同的设计特点和应用场景。NPU(Neural Processing Unit,神经网络处理单元)是一种专门为加速神经网络计算而设计的处理器。
2024-08-22 10:26:25
957
原创 std::get_time和std::put_time
在 C++ 中,std::get_time 和 std::put_time 是处理日期和时间格式化的两个实用函数。它们提供了一种简单的方法来解析和格式化日期时间字符串。它们都属于 头文件。它们是 std::istream 和 std::ostream 的操作符,因此,它们没有传统意义上的构造函数。它们用于格式化和解析日期时间,但本身并不涉及直接创建对象。
2024-08-14 10:12:22
830
原创 Mariadb中BLOB类型文件的存储和检索
在数据库中,BLOB(Binary Large Object)是一种用于存储大量二进制数据的字段类型。这些数据通常包括文件、图片、视频、音频等非结构化的二进制数据。不同的数据库系统对 BLOB 类型的支持和实现方式有所不同,但基本概念是相似的。下面将介绍如何在 MariaDB 中存储和检索 BLOB 数据。
2024-08-14 10:03:18
378
原创 使用boost库链接MySQL数据库
在这个示例中,我们假设要创建一个名为 users 的表,包含 username 和 age 字段,并插入一些示例数据。在C++中进行数据库的读写通常需要使用第三方库,因为C++本身并不直接提供数据库操作的标准库。如果你还没有安装 Boost 库,需要先安装。Boost 提供了非常强大和广泛使用的 C++ 库集合,包括 Boost.Asio 和 Boost.Beast。首先需要安装 MySQL C++ Connector,它是 MySQL 官方提供的 C++ 驱动程序,用于连接和操作 MySQL 数据库。
2024-08-08 11:08:32
576
原创 docker0是如何工作的
每当创建一个新的 Docker 容器时,Docker 会自动为该容器分配一个唯一的虚拟以太网接口 veth 并连接到 docker0 桥接接口。这个 veth 接口的另一端会被放置到容器的网络命名空间中,从而使得容器可以通过 docker0 桥接接口与宿主机和其他容器进行通信。Docker Daemon 会根据容器的网络配置自动进行 IP 地址转换和路由处理,使得容器可以与宿主机外部的网络进行通信。所有连接到 docker0 桥接接口的容器都能直接通过 docker0 桥接接口与宿主机通信。
2024-08-08 08:14:42
524
原创 docker自定义桥接网络
Docker 提供了几种不同的网络模式,除了默认的桥接网络外,Docker 允许用户创建和管理自定义桥接网络。在 Docker 中,可以通过自定义桥接网络来实现容器之间的通信和隔离。自定义桥接网络允许用户定义子网、网关以及其他网络选项,以更好地管理容器的网络配置。使用 docker network inspect 命令可以查看自定义桥接网络的详细信息, 包括子网、网关、已连接的容器等信息。可以指定网络的名称、子网、网关等参数。创建自定义桥接网络后,可以通过 --network 参数将容器连接到该网络。
2024-08-02 16:45:25
521
原创 mysql主从数据一致性确认机制
MySQL 主从复制通过二进制日志的记录和复制线程的处理,结合状态监控和错误处理机制,有效地确保主从服务器之间数据的一致性。这些机制使得主从复制成为备份、负载均衡和灾难恢复的重要工具之一。MySQL主从复制是一种常见的数据库复制技术,用于将一个MySQL数据库的更改同步到其他MySQL数据库,以实现数据备份、负载均衡和故障恢复等目的。
2024-08-02 15:44:46
541
原创 docker容器通信——overlay网络
跨主机的 Docker 容器通信通常需要使用 Docker 提供的网络功能或者使用编排工具来简化管理。Overlay 网络是 Docker 提供的一种内置网络插件,用于在跨主机环境中连接容器。它使用 VXLAN (Virtual Extensible LAN) 技术创建一个虚拟网络,将不同主机上的容器连接到同一个逻辑网络中。要创建 Overlay 网络,需要先在一个主机上作为 Swarm Manager 启动一个 Docker Swarm,然后在其他主机上加入 Swarm。
2024-08-02 07:59:27
563
原创 shell脚本批量插入数据库
这个Shell脚本示例展示了如何使用循环和MySQL命令行工具批量插入数据到MariaDB数据库中,其中 LOCATION 字段被视为整数类型。根据实际需求,你可以调整循环生成数据的方式和递增的逻辑。编写脚本批量插入MariaDB数据库可以使用各种脚本语言,比如Python、Shell脚本或者直接使用SQL脚本,这里结合使用Shell脚本和MySQL命令行工具(mysql)来实现。使用 for 循环生成要插入的数据。在每次循环中,计算 TASK_ID、LOCATION 和 TIME。
2024-08-01 18:03:00
377
原创 Linux journalctl 是什么
journalctl 是一个功能强大的工具,用于查询、查看和分析由 systemd-journald 收集的日志。systemd-journald 是 Systemd 的一个组件,负责捕获、存储和管理系统及应用程序的日志。与传统的日志系统(如 Syslog)不同,systemd-journald 记录日志的方式更加结构化和集成。systemd-journald 支持日志轮转和压缩,可以通过配置文件中的选项进行调整,例如设置日志文件的最大大小和保留时间。可以配置日志的持久性和存储大小。
2024-07-31 08:20:36
469
原创 Linux Systemd 是什么?
Systemd 是一个现代化的系统和服务管理器,为 Linux 系统提供了强大的初始化和服务管理功能。它通过并行启动服务、明确的依赖关系管理、强大的日志管理和监控功能,使得系统管理更加高效和可靠。Systemd 是一个 Linux 系统中的系统和服务管理器,它是现代 Linux 发行版中的标准初始化系统。它的设计目标是取代传统的 SysVinit 和 Upstart,并提供更好的系统启动性能、并行启动服务、更好的依赖管理以及其他管理和监控功能。
2024-07-31 08:03:40
545
原创 配置 MariaDB Galera Cluster
Galera 是一个高可用性解决方案,主要用于 MySQL 和 MariaDB 数据库的同步复制。它提供了一个多主(multi-master)复制环境,允许多个数据库节点同时读写。所有节点都是主节点,并且使用同步复制来保持一致性。
2024-07-30 09:20:18
568
原创 galera cluster 中的wsrep配置说明
wsrep 是 Galera 复制的核心组件,它负责数据的一致性和同步,要配置 MariaDB Galera Cluster,必须在每个节点上进行相应的 wsrep 配置。确保所有节点在配置中使用相同的集群名称和地址,以保证它们能够正确地发现和连接到集群中的其他节点。确保在每个节点的配置文件中设置正确的 wsrep_node_name 和 wsrep_node_address,并且所有节点都使用相同的 wsrep_cluster_name 和 wsrep_cluster_address。
2024-07-30 08:41:29
1408
原创 浮动IP的工作原理
浮动 IP 是一个可以在多个服务器或网络设备之间移动的 IP 地址。它并不是绑定在特定的物理设备上,而是可以根据需要从一个设备迁移到另一个设备。这样,当一个设备发生故障或需要维护时,浮动 IP 可以迅速切换到其他设备,确保服务不中断。
2024-07-29 16:52:30
689
原创 如何设置浮动IP
浮动 IP(Floating IP)是一种网络配置技术,使得 IP 地址能够在多个网络设备或服务器之间“浮动”或迁移,从而提高高可用性和负载均衡。常用于实现高可用的服务架构或灾难恢复解决方案。浮动 IP 是一个可以在多个服务器或网络设备之间移动的 IP 地址。这种 IP 地址不绑定到特定的物理网络接口或服务器,而是可以根据需要在不同的设备之间切换。确保浮动 IP 在主节点上可以正常访问。在备用节点上测试切换功能。在 Linux 环境中设置浮动 IP。
2024-07-29 16:45:21
929
原创 shared_ptr reset函数
在C++中,shared_ptr是一种智能指针,用于管理动态分配的对象。shared_ptr通过引用计数来跟踪多个指针是否指向同一对象,并在最后一个指向对象的shared_ptr被销毁时自动释放对象。在重置时,如果shared_ptr当前有其他指针在管理同一对象,则它会减少引用计数。如果引用计数减少到0,即没有任何shared_ptr实例指向该对象时,对象将被销毁。shared_ptr类提供了一个名为reset的成员函数,用于重新指定shared_ptr所管理的对象或清空其管理的对象。
2024-07-25 09:09:34
498
原创 shared_ptr get函数
shared_ptr类提供了一个名为get的成员函数,用于获取其所管理对象的原始指针。这个函数的作用是返回一个指向shared_ptr管理的对象的裸指针(raw pointer)。shared_ptr 是 C++11 标准引入的智能指针,位于 头文件中,它可以用来管理动态分配的对象,并且通过引用计数来跟踪多个指针是否指向同一个对象。总之,shared_ptr的get函数提供了一种方便的方式来获取所管理对象的原始指针,但需要谨慎使用,避免引入悬空指针和内存安全问题。
2024-07-25 09:05:47
624
原创 AES-256加密算法
AES-256是一种使用256位密钥长度的高级加密标准(Advanced Encryption Standard)。它是对称加密算法,意味着加密和解密使用相同的密钥。AES算法支持不同的密钥长度,包括128位、192位和256位,其中256位密钥长度提供了最高的安全性。总之,AES-256作为当前使用最广泛的加密算法之一,提供了强大的安全性和高效的加解密性能,适用于许多敏感数据的保护需求。解密过程与加密过程类似,但是轮密钥的使用顺序与加密过程相反,最终可以得到原始的明文数据。
2024-07-24 15:20:36
7276
1
原创 在Linux环境中如何获取进程id
这段代码在Linux环境下使用,依赖于 /proc 文件系统来获取进程信息。因此,在其他操作系统上(如Windows)可能无法直接运行或需要不同的实现方法。进程名在 /proc/self/stat 文件中被括号括起来,所以在比较时需要去除括号。该示例代码相对简单,实际应用中可能需要更复杂的逻辑来处理各种情况,如多个同名进程等。
2024-07-24 10:07:23
1515
原创 Linux用户和权限管理
Linux 中常见的系统调用有很多,它们是操作系统提供给用户空间程序访问操作系统内核功能的接口。用户和权限管理是非常重要的部分,涉及到文件和进程的访问控制、安全性等方面。系统调用的详细使用方法可以查阅对应的系统调用手册 (man) 或相关的操作系统文档。用户和权限管理涉及的系统调用和工具使得管理员可以精确控制系统中用户和进程的权限,从而提高系统的安全性和管理效率。
2024-07-15 15:42:11
358
原创 c++20新特性
包括对并发编程的支持(例如std::jthread)、对日期和时间处理的增强(std::chrono)以及其他一些新的容器和算法。这些改进使得lambda表达式在C++20中变得更加强大和灵活,能够处理更多种类的编程任务,并提供更高的表达能力和性能。这简化了对集合的操作,例如使用范围for循环来处理数据。通过operator运算符,C++20引入了一种标准的方法来定义类型的三路比较,这简化了自定义类型的比较操作。C++20引入了更灵活和一致的初始化语法,包括聚合初始化的扩展和类类型的默认成员初始化。
2024-07-15 14:32:05
611
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人