03 2024 档案

摘要:std::functional 是 C++ 标准库中的一个模板类,它是对可调用对象的一种通用包装器。std::functional 允许你将任何可调用对象(包括函数、函数对象、lambda 表达式、以及其他 std::functional 对象)当作一个统一的对象来处理。它通常与 C++ 的算法库、 阅读全文
posted @ 2024-03-31 23:27 He_LiangLiang 阅读(107) 评论(0) 推荐(0) 编辑
摘要:一个C++的单例类,类里面定义了一个线程对象,线程对象会定时去计算一个时间,并返回这个计算出来的时间。 应用场景: 比如,有些比较消耗时间的操作,就可以放在线程里面定时计算,我们在外部定时读取。 这样就可以避免主线程被阻塞。 #include <iostream> #include <thread> 阅读全文
posted @ 2024-03-31 18:08 He_LiangLiang 阅读(17) 评论(0) 推荐(0) 编辑
摘要:std::make_shared 和 new 都用于动态分配内存并返回指向该内存的指针,但它们之间有一些重要的区别。下面详细解释它们之间的差异: 内存分配方式: std::make_shared:该函数是一个模板函数,会在内存中分配一块足够大的内存来存储对象及其控制块(用于跟踪引用计数等信息),然后 阅读全文
posted @ 2024-03-31 17:06 He_LiangLiang 阅读(525) 评论(0) 推荐(1) 编辑
摘要:可以准确获取某个挂载点的硬盘空间,已使用空间。 现在问题就出在 挂载点的判断 和类型过滤上面。 #include <iostream> #include <fstream> #include <sstream> #include <vector> #include <string> #include 阅读全文
posted @ 2024-03-31 09:20 He_LiangLiang 阅读(15) 评论(0) 推荐(0) 编辑
摘要:使用文件流的方式,解析 cat /proc/meminfo 文件里面的数据 #include <iostream> #include <fstream> #include <sstream> #include <string> #include <unordered_map> #include <m 阅读全文
posted @ 2024-03-31 08:37 He_LiangLiang 阅读(18) 评论(0) 推荐(0) 编辑
摘要:ARM架构和x86架构在多个方面存在显著的区别。 首先,从应用领域来看,ARM架构主要用于嵌入式系统、移动设备和低功耗应用等领域。它特别适用于那些对功耗有严格要求的设备,如智能手机和平板电脑。而x86架构则是PC领域的主流架构,广泛应用于个人电脑和服务器等领域。 其次,从指令集特点来看,ARM架构采 阅读全文
posted @ 2024-03-31 00:57 He_LiangLiang 阅读(122) 评论(0) 推荐(0) 编辑
摘要:https://hwmon.wiki.kernel.org/device_support_status 阅读全文
posted @ 2024-03-27 06:34 He_LiangLiang 阅读(9) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <fstream> #include <string> #include <sstream> #include <unordered_map> #include <sys/statvfs.h> #include <string> //物理硬盘 阅读全文
posted @ 2024-03-27 06:20 He_LiangLiang 阅读(262) 评论(0) 推荐(0) 编辑
摘要:获取cpu核数,使用率 #include <sys/sysinfo.h> #include <sys/statvfs.h> #include <fstream> #include <iostream> #include <string> #include <thread> #include <vec 阅读全文
posted @ 2024-03-27 06:19 He_LiangLiang 阅读(334) 评论(0) 推荐(0) 编辑
摘要:CORS(跨源资源共享)是一种网络浏览器的安全功能,它定义了一种浏览器和服务器交互的方式来确定是否允许跨源请求。CORS背后的主要思想是使用额外的HTTP头部来告诉浏览器,一个来自不同源的请求是被允许的。这使得浏览器能够执行跨域请求,而不会受到同源策略的限制。 CORS的详细工作原理如下: 预检请求 阅读全文
posted @ 2024-03-25 06:41 He_LiangLiang 阅读(27) 评论(0) 推荐(0) 编辑
摘要:namespace Core { /** * 创建一个异步任务的包装函数,返回一个指向 std::packaged_task 的 shared_ptr。 * * @tparam F 函数类型 * @tparam Args 参数类型 * @param f 要执行的函数 * @param args 函数 阅读全文
posted @ 2024-03-24 15:30 He_LiangLiang 阅读(27) 评论(0) 推荐(0) 编辑
摘要:在 Git 中设置用户名可以通过以下命令完成: git config --global user.name "Your Username" git config --global user.email "your_email@example.com" ## 添加缓存时间git config --gl 阅读全文
posted @ 2024-03-23 14:31 He_LiangLiang 阅读(657) 评论(0) 推荐(0) 编辑
摘要:如果你目前在 dev_a 分支上有未提交的代码,而想要从 develop 分支创建一个名为 dev_b 的新分支, 并将 dev_a 分支上的未提交更改应用到了 dev_b 分支上。可以按照以下步骤操作: 保存当前工作进度:如果你有未提交的更改,首先需要保存当前工作进度。你可以使用以下命令暂存更改: 阅读全文
posted @ 2024-03-23 14:11 He_LiangLiang 阅读(23) 评论(0) 推荐(0) 编辑
摘要:自定义字面量操作符是从C++11标准开始引入的。它允许程序员为特定类型定义自定义的字面量表示法,以提供更加直观和灵活的语法。通过定义自定义字面量操作符,可以让程序更容易阅读和理解,同时提高代码的可读性和表达能力。 根据C++标准(C++ Standard),对自定义字面量操作符有如下定义: 自定义字 阅读全文
posted @ 2024-03-22 07:48 He_LiangLiang 阅读(87) 评论(0) 推荐(0) 编辑
摘要:#!/bin/bash # 检查参数数量 if [ "$#" -ne 1 ]; then echo "Usage: $0 <port_number>" exit 1 fi # 获取端口号 PORT=$1 # 检查端口号是否为数字 if ! [[ "$PORT" =~ ^[0-9]+$ ]]; the 阅读全文
posted @ 2024-03-21 00:55 He_LiangLiang 阅读(35) 评论(0) 推荐(0) 编辑
摘要:在 Snowflake 算法中,通常包含以下几个部分来构造一个唯一的 ID: 时间戳(Timestamp):占据了 64 位 ID 中的高 41 位,用来表示生成 ID 的时间。通过时间戳的递增,保证了生成的 ID 是递增且唯一的。 数据中心 ID(Data Center ID):用于标识不同的数据 阅读全文
posted @ 2024-03-20 19:22 He_LiangLiang 阅读(168) 评论(0) 推荐(0) 编辑
摘要:在C++中实现单例模式可以使用模板和C++11的特性来达到目的。下面是一个简单的示例代码: #include <iostream> template <typename T> class Singleton { public: static T& getInstance() { static T i 阅读全文
posted @ 2024-03-20 15:39 He_LiangLiang 阅读(56) 评论(0) 推荐(0) 编辑
摘要:错误信息 "Host '192.168.10.103' is not allowed to connect to this MariaDB server" 指出,从 IP 地址 192.168.10.103 尝试连接到 MariaDB 服务器的客户端被拒绝,因为该主机没有被授权访问数据库服务器。 要 阅读全文
posted @ 2024-03-20 06:38 He_LiangLiang 阅读(364) 评论(0) 推荐(0) 编辑
摘要:https://github.com/MariaDB/mariadb-docker/tree/master AIchatOS https://chat18.aichatos.xyz/#/chat/1710920186749 MQTTManager::process() CPU消耗达到120%通常意味 阅读全文
posted @ 2024-03-20 00:56 He_LiangLiang 阅读(7) 评论(0) 推荐(0) 编辑
摘要:如果在安装MariaDB的过程中没有设置root用户的密码,或者忘记了设置的密码,可以通过以下步骤来重置MariaDB的root密码: 1. 停止MariaDB服务 首先,需要停止MariaDB服务。使用以下命令: systemctl stop mariadb 2. 以无密码模式启动MariaDB 阅读全文
posted @ 2024-03-19 07:36 He_LiangLiang 阅读(1178) 评论(0) 推荐(0) 编辑
摘要:在CentOS 7上安装MariaDB,可以按照以下步骤进行: 配置MariaDB的yum源。可以选择使用MariaDB的官方yum源,这样可以方便地安装和更新MariaDB。根据所使用的Linux发行版和想安装的MariaDB的版本,选择合适的yum源地址。 安装MariaDB。使用yum命令进行 阅读全文
posted @ 2024-03-19 07:33 He_LiangLiang 阅读(213) 评论(0) 推荐(0) 编辑
摘要:设置 LD_LIBRARY_PATH: 在 ~/.bashrc 或 ~/.bash_profile 文件中添加以下行来设置 LD_LIBRARY_PATH: export LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH 然后,运行 source 阅读全文
posted @ 2024-03-19 00:03 He_LiangLiang 阅读(556) 评论(0) 推荐(0) 编辑
摘要:以下内容由 豆包 大语言模型生成,内容仅供参考: C++20 引入了一个新的标准库头文件 <barrier>,其中包含了对屏障(barrier)的支持。屏障是一种用于同步多个线程的同步原语,它允许线程在某个点上等待,直到所有线程都到达该点。 C++20 的 <barrier> 头文件提供了一个 st 阅读全文
posted @ 2024-03-17 15:40 He_LiangLiang 阅读(177) 评论(0) 推荐(0) 编辑
摘要:在 C++ 中,system 是一个函数,通常定义在 <cstdlib> 库中,它允许程序调用操作系统的命令行解释器(如 Unix/Linux 中的 shell)来执行指定的命令。在 CentOS 7(一个基于 Linux 的操作系统)中,使用 system 函数可以执行几乎任何可以在命令行中运行的 阅读全文
posted @ 2024-03-17 14:40 He_LiangLiang 阅读(174) 评论(0) 推荐(0) 编辑
摘要:CentOS 7系统默认不包含FFmpeg工具,但可以通过安装第三方YUM源来安装。以下是安装FFmpeg的步骤: 升级yum: sudo yum install epel-release -y sudo yum update -y 安装Nux Dextop Yum源: sudo rpm --imp 阅读全文
posted @ 2024-03-17 13:43 He_LiangLiang 阅读(1814) 评论(0) 推荐(1) 编辑
摘要:在C++中,std::promise对象调用get_future()方法返回一个std::future对象,而不是指针、引用或其他类型的对象。std::future对象用于获取与std::promise对象相关联的异步操作的结果。 std::promise和std::future是C++标准库中的一 阅读全文
posted @ 2024-03-17 13:11 He_LiangLiang 阅读(51) 评论(0) 推荐(0) 编辑
摘要:使用valgrind 检查内存 --tool=memcheck 我们的可执行文件是 ./bin/thread_13,它有内存泄漏的问题,需要valgrind来检查分析。 将日志输出到 t13_memcheck.log 2>&1 是一个特殊的重定向,它会把标准错误(stderr,通常是错误消息)重定向 阅读全文
posted @ 2024-03-17 10:58 He_LiangLiang 阅读(198) 评论(0) 推荐(0) 编辑
摘要:列表初始化(List Initialization)是C++11引入的一种新的初始化方式,它使用大括号 {} 来包围初始化器的值。这种初始化方式提供了更高的灵活性和安全性,特别是在处理聚合类型(如数组、结构体和类)以及在某些需要避免函数声明歧义的情况下。 下面我将详细讲解列表初始化的几个关键方面,并 阅读全文
posted @ 2024-03-17 00:22 He_LiangLiang 阅读(987) 评论(0) 推荐(0) 编辑
摘要:不可以将 std::atomic<int> atomicInt(0); 改为 std::atomic<int> atomicInt = 0;。原因如下: 在C++中,对象的初始化与赋值是两个不同的操作,它们有不同的语义和用途。 初始化 (std::atomic<int> atomicInt(0);) 阅读全文
posted @ 2024-03-17 00:13 He_LiangLiang 阅读(635) 评论(0) 推荐(0) 编辑
摘要:gprof:这是一个GNU的性能分析工具,主要用于分析程序的函数调用关系,以及每个函数的运行时间等。 Valgrind:这是一个用于内存调试、内存泄漏检测以及性能分析的开源工具集。其中,Valgrind的Callgrind工具可以收集程序运行时的函数调用信息,用于性能分析。 perf:这是Linux 阅读全文
posted @ 2024-03-16 11:06 He_LiangLiang 阅读(3824) 评论(0) 推荐(0) 编辑
摘要:单例模式的3种实现方式: 饿汉式、 懒汉式 双重检查 1. 饿汉式(Eager Initialization) 饿汉式单例模式在类加载时就创建实例,因此线程安全,但可能会增加程序启动时间和内存消耗。 #include <iostream> class Singleton { public: // 获 阅读全文
posted @ 2024-03-13 12:06 He_LiangLiang 阅读(10) 评论(0) 推荐(0) 编辑
摘要:今天去一家公司面试,一上来就是一个让我懵逼的问题,后面是一连串的类似懵逼问题。 这些问题记录如下: 1.读溢出,会报什么错? 2.写溢出,会报什么错? 3.库函数shutdown()是同步调用还是异步调用? 4.什么是粘包问题?粘包如何解决? 5.有2个线程在对一个socket套接字同时调用 sen 阅读全文
posted @ 2024-03-12 20:43 He_LiangLiang 阅读(14) 评论(0) 推荐(0) 编辑
摘要:这是一个base16 编码/解码 的方法。而且支持中文的编码和解码。 代码由chatgpt-3.5生成: #include <iostream> #include <string> const std::string base16 = "0123456789ABCDEF"; void Base16E 阅读全文
posted @ 2024-03-11 22:48 He_LiangLiang 阅读(438) 评论(0) 推荐(0) 编辑
摘要:在这个单例模式的实现中,使用了静态局部变量来确保只有一个实例。 静态局部变量只会在第一次调用函数时初始化,并且在程序的整个生命周期内保持其值不变。 这意味着,无论多少次调用 getInstance() 方法,都只会在第一次调用时创建一个实例,后续的调用会返回同一个实例。 具体来说,在 getInst 阅读全文
posted @ 2024-03-10 21:22 He_LiangLiang 阅读(23) 评论(0) 推荐(0) 编辑
摘要:template< class... Args >void emplace_back( Args&&... args ); (C++11 起)(C++17 前) template< class... Args >reference emplace_back( Args&&... args ); (C 阅读全文
posted @ 2024-03-06 13:23 He_LiangLiang 阅读(16) 评论(0) 推荐(0) 编辑
摘要:面试的时候,有时候会问到你对shell的了解,要你说出你知道的一些SHELL命令。 安装: yum install xxx yum remove xxx wget xxx 压缩,解压缩 tar -zxvf xxx tar -zcvf xxx zip xxx unzip xxx 系统相关: chmod 阅读全文
posted @ 2024-03-06 11:20 He_LiangLiang 阅读(7) 评论(0) 推荐(0) 编辑
摘要:`strcpy`和`memcpy`都是用于内存复制的函数,但它们之间有几个关键的区别: 1. **复制的对象**: - `strcpy`主要用于复制字符串,它将从源字符串的起始位置开始复制字符,直到遇到源字符串的空字符('\0'),然后将空字符也复制到目标字符串中,表示字符串的结束。 - `memc 阅读全文
posted @ 2024-03-04 22:23 He_LiangLiang 阅读(116) 评论(0) 推荐(0) 编辑
摘要:在C++中,std::priority_queue 默认实现的是一个大顶堆(Max-Heap), 其中每个父节点的值都大于或等于其子节点的值。 然而,通过指定第三个模板参数为比较函数或函数对象,可以改变这一默认行为。 std::priority_queue<int, std::vector<int> 阅读全文
posted @ 2024-03-03 16:35 He_LiangLiang 阅读(377) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> #include <memory> class MyClass { public: MyClass() { std::cout << "MyClass constructed" << std::endl; } ~MyClass() { std::cout << 阅读全文
posted @ 2024-03-02 16:31 He_LiangLiang 阅读(3) 评论(0) 推荐(0) 编辑