自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 【STL】std::transform

以上示例中,std::transform() 函数将 nums 容器中的每个元素应用 square() 函数进行平方操作,并将结果存储在 squares 容器中。是 C++ 标准库中的一个算法函数,用于对一个序列的元素进行转换操作,将输入序列的每个元素应用指定的转换函数后,生成一个新序列。:一元操作函数(函数对象或函数指针),用于指定要应用于每个输入元素的转换操作。:输入序列的起始和结束迭代器,指定要转换的元素范围。:输出序列的起始迭代器,指定转换后的元素存放位置。:指向输出序列的末尾迭代器。

2024-04-07 22:08:44 211

原创 【C++基础】std::for_each

中的一个算法,它对指定范围内的每个元素执行某个操作。这个函数接受两个迭代器参数,表示要操作的元素范围,以及一个可调用对象(如函数指针、lambda表达式、函数对象、在C++中,可调用对象(Callable Object)是指那些可以像函数一样被调用的实体。)作为第三个参数,该调用对象定义了应用于范围内每个元素的操作。

2024-03-23 21:48:00 273 1

原创 【C++基础】std::bind

在C++中,std::bind是一个功能强大的函数适配器,它接受一个可调用对象(如函数、函数对象或Lambda表达式)和一个或多个参数,然后生成一个新的可调用对象,该对象在调用时会调用原始的可调用对象并传递指定的参数。

2024-03-21 22:28:19 144 1

原创 【网络编程】tcpdump抓包工具

命令是一款抓包工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w选项将数据包保存到文件中,方便以后通过工具。截获所有192.168.10.7 的主机收到的和发出的所有的数据包。通信,服务端监听9999端口,服务端将客户端发送的消息返回客户端。如果想要获取主机192.168.10.7的9999端口的数据包。,但就是没有抓到数据包,原因是数据从回环口走了,可用下面命令。只会监视第一个网络接口,一般是。如果不指定网卡,默认。

2024-03-18 22:02:29 403

原创 【C++基础】std::copy

等)及其迭代器,以及其他支持随机访问迭代器的数据结构。它也可以用于拷贝基本类型数组或指针范围内的元素。但是,如果需要处理复杂的自定义数据类型,最好使用拷贝构造函数或赋值操作符来进行元素的拷贝。需要注意的是,目标容器需要提前分配空间,以便能够容纳源容器中的元素。如果目标容器未正确分配空间,会导致未定义的行为。即将源容器中的元素复制到目标容器中。算法函数可用于容器之间的元素拷贝操作。容器,其中包含了一些整数元素。拷贝操作完成后,我们遍历。在上述示例中,我们有一个。范围内的元素拷贝到从。并打印拷贝得到的元素。

2024-03-11 22:06:52 283

原创 【C++基础】vector的resize和reserve的区别

是两个用于管理容器大小和内存分配的成员函数。时,重点考虑你的需求。如果确切知道需要的元素数量,可以使用。如果需要预留空间以提高性能,可以使用。

2024-03-11 22:04:27 224

原创 遍历文件夹所有子文件夹,找出包含动态库文件的文件夹路径

【代码】遍历文件夹所有子文件夹,找出包含动态库文件的文件夹路径。

2024-02-29 10:01:05 90 1

原创 Boost库常用功能

1. 容器:Boost库提供了对STL容器的扩展,包括增加新的容器类型(如multi_array、circular_buffer等),同时提供了一些方便的算法和函数来操作和处理容器。这只是Boost库提供的一些常用功能的例子,实际上Boost库包含了大量的组件和模块,涵盖了许多不同的领域和功能。4. 时间和日期:Boost库提供了易于使用的时间和日期处理功能,可以进行时间的解析和格式化,计算时间差等操作。5. 文件系统:Boost库提供了对文件系统的操作接口,包括文件和目录的创建、删除、遍历等操作。

2024-02-20 09:17:53 307

原创 C++11的std::move

C++11的标准库 提供了一个非常有用的函数 std::move(),std::move() 函数将一个左值强制转化为右值引用,以用于移动语义。移动语义,允许直接转移对象的资产和属性的所有权,而在参数为右值时无需复制它们。换一种说法就是,std::move() 将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷 贝。因此,通过std::move(),可以避免不必要的拷贝操作。

2024-01-11 22:12:54 416

转载 shell逻辑判断&&和-a区别

等于 应用于:整型或字符串比较 如果在[] 中,只能是字符串。-ef 第一个文件与第二个文件为同一个( link 之类的文件)&& 逻辑的 AND 的意思, -a 也是这个意思。-k 判断文件是否具有sticky bit的属性。|| 逻辑的 OR 的意思, -o 也是这个意思。-S 判断某文件是否socket(待修正)-L 判断某文件是否为符号链接(待修正)-u 判断文件是否具有SUID的属性。-g 判断文件是否具有SGID的属性。-w 判断文件是否为可以写入的属性。

2024-01-02 13:19:30 34

原创 C++通过类型名称创建类对象

【代码】通过类型名称创建类对象。

2024-01-01 19:37:26 364

原创 【cmake】自定义Findxxx.cmake模块

在一个项目当中,我们自己的可执行文件和库文件很有可能去引入和链接其他库文件,例如一个demo可执行文件需要去链接一个名为libadd.so# 引入头文件路径# 引入库文件路径# 链接目标库。

2023-12-19 21:30:18 917 1

原创 套接字对应的文件描述符的文件被删除

域套接字是通过文件系统路径名称来引用的,但是一旦套接字被创建,就可以在文件系统中删除该文件而不会影响套接字的正常运行。需要注意的是,如果在接收端的套接字文件已被删除,接收方可能无法打开该文件,从而导致无法读取通过套接字发送的数据。因此,在使用域套接字进行通信时,发送和接收双方需要事先约定好套接字文件的路径和名称,并确保该文件在通信期间一直存在。当您使用域套接字发送消息时,操作系统内核会根据文件描述符找到对应的套接字对象,并将消息发送到此套接字对象所关联的套接字。

2023-12-08 17:50:26 386

原创 利用文件锁来防止进程启动多次

具体方法是在程序启动时,尝试获取一个特定文件的文件锁,如果获取成功,则说明当前没有其他进程在运行该程序;如果获取失败,则说明已经有其他进程在运行该程序,可以选择终止当前进程。需要注意的是,上述示例中的文件锁只适用于同一个系统上的多个进程之间,并且需要高度保证锁文件的正确性,以避免死锁或者多个进程之间的冲突。如果获取锁失败,则说明已经有其他进程在运行该程序,可以直接返回或进行相应处理;函数返回值为-1),则说明已经有其他进程在运行该程序,函数返回。在程序执行完毕后,需要释放文件锁,可以通过删除锁文件来实现(

2023-12-04 09:49:45 400

原创 多次调用 fork 和 execv

如果父进程打开了大量文件,子进程的创建和销毁过程中会涉及大量的文件描述符复制操作,产生一定的开销。:预先创建一定数量的子进程,维护一个进程池,每次需要运行任务时,从进程池中取出一个空闲的进程进行执行,复用进程,避免频繁的进程创建和销毁。:使用线程池可以避免频繁地创建和销毁进程,将任务分配给线程进行并发处理,减少进程创建和销毁的开销。:对于IO密集型任务,可以使用异步IO方式进行处理,避免阻塞和频繁的进程创建和销毁。:如果可以,可以考虑使用线程替代进程,因为线程的创建、销毁和切换开销相对较小。

2023-11-16 15:10:56 63 1

原创 子进程会继承父进程资源

需要注意的是,子进程会继承这些资源的副本,而不是直接共享。子进程和父进程之间可以独立地修改这些资源的副本,互不影响。这样可以保证子进程的执行环境与父进程的执行环境相互独立。

2023-11-16 15:03:04 152 1

原创 C++消息队列,多线程

本文提供了一种C++消息队列的实现方式(包括一个线程类和一个消息队列类),通过一个简单示例说明如何生产消息和消费消息。

2023-09-25 22:21:49 798 3

原创 Thrift 在Windows环境下的编译与简单C++应用

Thrift是Facebook提供的一个跨语言的服务部署框架,可以实现客户端和服务器远程过程调用。相较于Google的grpc框架,Thrift对三方库依赖更少,编译更简单,并且运行效率也更高。Thrift只依赖boost、openssl和libevent三个库,本次测试编译的都是静态库。下面详细介绍thrift 0.15.0的编译过程。

2022-09-06 21:48:22 1977 1

转载 Lambda表达式

Lambda表达式是现代C++在C ++ 11和更高版本中的一个新的语法糖 ,在C++11、C++14、C++17和C++20中Lambda表达的内容还在不断更新。

2022-08-31 21:28:38 135

原创 SQLite的锁

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。

2022-08-28 14:50:11 2393

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除