linux
星火(star&fire)
这个作者很懒,什么都没留下…
展开
-
C++ map::begin()、end()
在C++中,std::map是一个关联容器,它提供了一种键-值对的存储方式,并按照键的排序顺序进行自动排序。map类提供了一系列的成员函数,其中包括begin()和end()函数,用于获取指向map容器中第一个元素和最后一个元素之后位置的迭代器。原创 2023-08-23 14:54:00 · 2426 阅读 · 0 评论 -
stat()/lstat()的使用
stat()函数和lstat()函数都是用于获取文件或目录的信息的函数,它们可以返回包含文件或目录的各种属性的结构体。原创 2023-08-23 14:45:21 · 300 阅读 · 0 评论 -
对于结构体或者类对象的序列化反序列化
【代码】对于结构体或者类对象的序列化反序列化。原创 2023-08-21 16:40:27 · 169 阅读 · 0 评论 -
删除某一指定文件夹的实现方案
该方式自动检查当前目录是否存在指定的文件夹,存在则删除,不存在不会返回失败。对于编译选项不需要指定,并且可删除root权限下的文件夹。不需要修改程序权限。并且,通过该方式,再删除文件夹时,会因为root的权限问题引起删除失败。先判断当前文件夹是否存在,后调用接口删除,但是会由于权限问题删除失败。没有编译选项指定,但是对于文件的root权限会删除失败。1、调用dirent.h实现。3、调用cstdlib.h。2、调用unistd.h。4、调用fs系统删除。原创 2023-08-21 16:39:32 · 107 阅读 · 0 评论 -
C++ 信号处理
这个函数接收两个参数:第一个参数是要设置的信号的标识符,第二个参数是指向信号处理函数的指针。函数返回值是一个指向先前信号处理函数的指针。如果先前设置的信号处理函数为 SIG_IGN,则返回值为 SIG_IGN。在这里,sig 是要发送的信号的编号,这些信号包括:SIGINT、SIGABRT、SIGFPE、SIGILL、SIGSEGV、SIGTERM、SIGHUP。不管您想在程序中捕获什么信号,您都必须使用 signal 函数来注册信号,并将其与信号处理程序相关联。原创 2023-08-11 16:16:13 · 55 阅读 · 0 评论 -
is_base_of的特性
我们使用 std::is_base_of 检查 Derived 是否是 Base 的基类。第二次检查返回 false,因为 Base 并不是 Derived 的基类。std::is_base_of 提供了一个编译时的布尔值,指示第一个指定的类型是否派生(或是严格基类)自第二个指定的类型。总结来说,std::is_base_of 是一个类型特性,用于判断一个类是否是另一个类的基类。std::is_base_of 是 C++ 标准库中的一个类型特性(Type Trait),用于判断一个类是否是另一个类的基类。原创 2023-08-10 17:30:19 · 519 阅读 · 0 评论 -
git常见命令总结
请将 <remote_name> 替换为远程仓库的名称,通常为 origin。将 <branch_name> 替换为要删除的分支的名称。该命令用于删除已经合并到当前分支的其他分支。如果分支未经合并(例如,未提交的更改仍存在于分支中),则使用此命令会引发警告并拒绝删除。当涉及到删除 Git 分支时,有两个常用的命令可以使用:git branch -d 和 git branch -D。该命令用于强制删除指定的分支,无论该分支是否已经合并到当前分支。执行上述命令后,Git 将会删除远程仓库中的指定分支。原创 2023-08-10 16:57:31 · 34 阅读 · 0 评论 -
多线程以及线程池
生产者消费者问题是一个经典的并发编程问题,涉及到多个生产者线程和消费者线程对一个共享的缓冲区进行访问。通过使用线程池,可以有效地利用线程资源,并提供对任务调度和线程管理的控制。线程池可以提高线程的创建和销毁效率,并限制同时运行的线程数量,从而避免资源竞争和过度开销。这只是一个简单的线程池示例,实际应用中可能还需要考虑任务的优先级、线程池的最大线程数、任务队列的大小等其他因素。在main函数中,我们创建了两个生产者线程和两个消费者线程,并分别调用join()函数等待线程的结束。原创 2023-07-03 18:07:00 · 71 阅读 · 0 评论 -
生产者消费者模式
生产者-消费者模式可以有效地解决多线程环境下的数据共享和同步问题,提高系统的吞吐量和资源利用率。实现生产者-消费者模式时,可以使用互斥锁(mutex)和条件变量(condition variable)来实现线程之间的同步和通信。生产者-消费者模式是一种常见的并发编程模式,用于解决多线程环境下的数据共享和同步问题。在实际应用中,可以根据具体的需求和设计选择不同的数据结构作为缓冲区,例如队列、栈或循环缓冲区等。有一个共享的缓冲区,用来存储生产者产生的数据或任务。当缓冲区为空时,消费者必须等待数据的产生。原创 2023-07-03 18:02:15 · 125 阅读 · 0 评论 -
互斥锁 条件变量
需要注意的是,std::lock_guard是一种独占锁的方式,它使用的是std::mutex(互斥锁)而不是std::shared_mutex(共享互斥锁)。如果需要在多个线程之间共享锁,需要使用std::shared_lock或std::unique_lock来代替std::lock_guard。当创建std::lock_guard对象时,需要传递一个互斥锁对象作为参数。异常安全:std::lock_guard对象在构造时获取互斥锁,无论是否有异常,它的析构函数都会被调用来释放互斥锁,确保异常安全性。原创 2023-07-03 18:03:14 · 231 阅读 · 0 评论 -
int转换为string的所有方法
这种方法适用于将整数转换为字符串,使用std::stringstream对象将整数写入,然后从std::stringstream对象中提取字符串。这种方法适用于将整数转换为字符串,使用std::to_chars()函数将整数转换为对应的字符数组,然后通过字符数组构造字符串。这种方法适用于将单个整数转换为字符串,使用std::to_string()函数将整数转换为对应的数字的字符串形式。方法三:使用std::to_chars()函数(C++17及以上)方法一:使用std::to_string()函数。原创 2023-06-28 15:43:46 · 25044 阅读 · 1 评论 -
unsigned char 与string之间的转换
这种方法适用于将无符号字符数组转换为字符串,使用std::stringstream对象将每个无符号字符逐个写入,然后从std::stringstream对象中提取字符串。这种方法适用于将单个无符号字符转换为字符串,使用std::to_string()函数将无符号字符转换为对应的ASCII码数字的字符串形式。这种方法适用于将无符号字符数组转换为字符串,使用字符数组存储数据,然后使用字符数组构造字符串。方法一:使用std::to_string()函数。方法三:使用字符数组和std::copy()原创 2023-06-28 15:39:00 · 3856 阅读 · 0 评论 -
通过ifstream读文件内容
在读取文件内容时,通过read函数可以实现对文件字节的读取,如果想要读取全部内容,需要知道文件内部存储的文件的大小,所以,在读取文件之前,需要对文件内部数据大小进行计算,通常通过指针末尾位置来判断内容的大小,即通过seekg()以及tellg()来计算。原创 2023-06-28 13:49:34 · 1534 阅读 · 0 评论 -
ifstream中函数tellg()与seekg()
在操作文件读写过程中,有时候会访问某一位置的字节以及文件大小,或者操作文件指针进行指定位置的访问,或者想回退某个字节的位置。可以使用tellg()和seekg()。原创 2023-06-28 13:36:05 · 1201 阅读 · 0 评论 -
shared_from_this()
使用场合:当类A被share_ptr管理,且在类A的成员函数里需要把当前类对象作为参数传给其他函数时,就需要传递一个指向自身的share_ptr。我们就使类A继承enable_share_from_this,然后通过其成员函数share_from_this()返回当指向自身的share_ptr。原创 2023-05-08 10:41:54 · 1128 阅读 · 0 评论 -
c++ 流对象之streambuf
由图可以看出,在stream 的实现中,除了虚基类IOS_BASE之外,所有的类内部都有一个streambuf, streambuf 是一个虚基类(不能被实例化,因此所内部包含streambuf(这个虚基类而非其子类)的类也是虚基类),代表流对象内部的缓冲区,就是我们流操作中输入输出的内容在内存中的缓冲区。格式化写入一个int 数据时,会将该数据每位分离出来,按照字符编码写到缓冲区,例如 int x= 123, 格式化写入以后缓冲区存以后,缓冲区有三个字节分别存放1,2,3的字符编码。原创 2023-05-06 17:41:14 · 184 阅读 · 0 评论 -
linux配置多个环境变量问题
linux配置多个环境变量问题。二、演示多个环境变量的配置。一、配置环境变量的方法。原创 2023-05-06 16:29:06 · 1094 阅读 · 0 评论 -
C/C++给文件加crc校验
CRC16/32校验是常用的一种校验方法,crc16需要区分多项式,不同多项式的校验结果是不一样的,如果是对通信数据做校验,那收发两端的crc16一定要匹配,否则校验不通过。原创 2023-05-06 16:06:03 · 679 阅读 · 0 评论 -
计算文件夹的空间大小
【代码】计算文件夹的空间大小。原创 2023-05-06 16:04:01 · 49 阅读 · 0 评论 -
文件的读写操作
【代码】文件的读写操作。原创 2023-05-06 15:59:00 · 37 阅读 · 0 评论 -
拆分入参中的路径以及文件名称
【代码】拆分入参中的路径以及文件名称。原创 2023-05-06 15:57:56 · 34 阅读 · 0 评论 -
CRC校验码
CRC(Cyclic Redundancy Checksum)是一种纠错技术,代表循环冗余校验和。数据通信领域中最常用的一种差错校验码,其信息字段和校验字段长度可以任意指定,但要求通信双方定义的CRC标准一致。主要用来检测或校验数据传输或者保存后可能出现的错误。它的使用方式可以说明如下图所示:在数据传输过程中,无论传输系统的设计再怎么完美,差错总会存在,这种差错可能会导致在链路上传输的一个或者多个帧被破坏(出现比特差错,0变为1,或者1变为0),从而接受方接收到错误的数据。原创 2023-05-06 15:50:10 · 558 阅读 · 0 评论 -
fstream、ifstream、ofstream、seekg、seekp、tellg、tellp用法
本文主要总结用C++的fstream、ifstream、ofstream方法读写文件,然后用seekg()、seekp()函数定位输入、输出文件指针位置,用tellg()、tellp()获取当前文件指针位置。seekg():输入文件指针跳转函数。表示将输入文件指针跳转到指定字节位置。seekp():输出文件指针跳转函数。表示将输出文件指针跳转到指定位置。fstream:文件输入输出类。表示文件级输入输出流(字节流);ifstream:文件输入类。ofstream:文件输出类。表示文件输出流,即文件写。原创 2023-05-06 14:45:30 · 475 阅读 · 0 评论 -
文件操作,对文件进行创建,读,写
在对文件进行操作过程中,通常使用的标准库为fstream,在使用中,存在两种数据流,ofstream和ifstream数据类型,可以实现对数据的输入和输出,即读写操作。原创 2023-05-06 14:38:30 · 69 阅读 · 0 评论 -
从文件读取和保存数据
【代码】从文件读取和保存数据。原创 2023-04-20 19:55:35 · 45 阅读 · 0 评论 -
C++ 读文件 将文件内容读入到字符串string中
【代码】C++ 读文件 将文件内容读入到字符串string中。原创 2023-04-20 19:52:29 · 1502 阅读 · 1 评论 -
linux C/C++ 删除某个目录下的所有文件(包括目录本身)
【代码】linux C/C++ 删除某个目录下的所有文件(包括目录本身)原创 2023-04-20 19:51:23 · 628 阅读 · 0 评论 -
c++ 判断文件是否存在
使用ifstream打开文件流,成功则存在,失败则不存在。使用access函数获取文件状态,成功则存在,否则不存在。使用stat函数获取文件状态,成功则存在,否则不存在。以fopen读方式打开文件,成功则存在,否则不存在。原创 2023-04-20 19:48:48 · 124 阅读 · 0 评论 -
Linux查看系统资源占用
2、查看内存占用前五的进程 ps auxw | head -1;3、查看CPU占用前三的进程 ps auxw|head -1;1、总体内存占用的查看 free。4、查看系统整体的负载 top。原创 2023-04-20 19:46:11 · 166 阅读 · 0 评论 -
C++ seekp和seekg函数用法
在使用文件流的过程中,涉及到两个函数用来移动读写位置,分别是 seekp 和 seekg,seekp 函数用于已经打开要进行输出的文件,而 seekg 函数则用于已经打开要进行输入的文件。可以将 “p” 理解为 “put”,将 “g” 理解为 “get”,这样理解当然是有根据的,因为 seekp 可用于将信息 put(放入)到文件中,而 seekg 则可用于从文件中 get(获取)信息。原创 2023-04-20 19:41:27 · 742 阅读 · 0 评论 -
C++标准库fstream的使用
fstream的使用中大致分为下面四部分:首先第一步是加头文件#include ,引入库函数第二步,声明一个ofstream对象,调用ofstream的成员函数open函数,与指定的文件相关联第三步,使用<<向文件中写入数据,注意<<操作符已经在库函数里重载过,所以直接调用即可。最后一步,关闭输出流,调用close()函数。原创 2023-04-18 14:00:33 · 485 阅读 · 0 评论 -
消费者生产者模式
生产者,消费者原创 2023-03-02 14:16:20 · 52 阅读 · 0 评论 -
C++多线程和并发
多线程,并发原创 2023-02-26 13:44:19 · 75 阅读 · 0 评论 -
C++时间计算 clock()、chrono::high_resolution_clock、system_clock
std::chrono原创 2023-02-20 18:14:56 · 406 阅读 · 0 评论 -
C++ std::stringstream标准库的使用
std::stringstream c++原创 2023-02-20 17:42:42 · 655 阅读 · 0 评论 -
C/C++ 内存管理(关于new和delete的实现原理)
malloc 内存函数原创 2023-01-30 14:20:41 · 132 阅读 · 0 评论 -
curl的基本使用
curl 简介原创 2023-01-14 17:51:02 · 905 阅读 · 0 评论 -
string和char *之间的转换
string char* const char*原创 2023-01-14 16:51:50 · 7688 阅读 · 1 评论 -
计算字符串长度
字符串大小原创 2023-01-14 16:41:48 · 60 阅读 · 0 评论 -
C++ string类型字符串拼接
string原创 2023-01-14 16:39:21 · 3584 阅读 · 0 评论