<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[南_无_生的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/m0_68994303</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; m0_68994303]]></copyright><item><title><![CDATA[shell指令]]></title><link>https://blog.csdn.net/m0_68994303/article/details/138647295</link><guid>https://blog.csdn.net/m0_68994303/article/details/138647295</guid><author>m0_68994303</author><pubDate>Fri, 10 May 2024 09:12:03 +0800</pubDate><description><![CDATA[持续更新]]></description><category></category></item><item><title><![CDATA[cmake指定C++11]]></title><link>https://blog.csdn.net/m0_68994303/article/details/138646926</link><guid>https://blog.csdn.net/m0_68994303/article/details/138646926</guid><author>m0_68994303</author><pubDate>Fri, 10 May 2024 09:04:45 +0800</pubDate><description><![CDATA[CMakeLists.txt中指定C++标准的方法。]]></description><category></category></item><item><title><![CDATA[【STL】std::transform]]></title><link>https://blog.csdn.net/m0_68994303/article/details/137460719</link><guid>https://blog.csdn.net/m0_68994303/article/details/137460719</guid><author>m0_68994303</author><pubDate>Sun, 07 Apr 2024 22:08:44 +0800</pubDate><description><![CDATA[以上示例中，std::transform() 函数将 nums 容器中的每个元素应用 square() 函数进行平方操作，并将结果存储在 squares 容器中。是 C++ 标准库中的一个算法函数，用于对一个序列的元素进行转换操作，将输入序列的每个元素应用指定的转换函数后，生成一个新序列。：一元操作函数（函数对象或函数指针），用于指定要应用于每个输入元素的转换操作。：输入序列的起始和结束迭代器，指定要转换的元素范围。：输出序列的起始迭代器，指定转换后的元素存放位置。：指向输出序列的末尾迭代器。]]></description><category></category></item><item><title><![CDATA[【C++基础】std::for_each]]></title><link>https://blog.csdn.net/m0_68994303/article/details/136974289</link><guid>https://blog.csdn.net/m0_68994303/article/details/136974289</guid><author>m0_68994303</author><pubDate>Sat, 23 Mar 2024 21:48:00 +0800</pubDate><description><![CDATA[中的一个算法，它对指定范围内的每个元素执行某个操作。这个函数接受两个迭代器参数，表示要操作的元素范围，以及一个可调用对象（如函数指针、lambda表达式、函数对象、在C++中，可调用对象（Callable Object）是指那些可以像函数一样被调用的实体。）作为第三个参数，该调用对象定义了应用于范围内每个元素的操作。]]></description><category></category></item><item><title><![CDATA[【C++基础】std::bind]]></title><link>https://blog.csdn.net/m0_68994303/article/details/136922540</link><guid>https://blog.csdn.net/m0_68994303/article/details/136922540</guid><author>m0_68994303</author><pubDate>Thu, 21 Mar 2024 22:28:19 +0800</pubDate><description><![CDATA[在C++中，std::bind是一个功能强大的函数适配器，它接受一个可调用对象（如函数、函数对象或Lambda表达式）和一个或多个参数，然后生成一个新的可调用对象，该对象在调用时会调用原始的可调用对象并传递指定的参数。]]></description><category></category></item><item><title><![CDATA[【网络编程】tcpdump抓包工具]]></title><link>https://blog.csdn.net/m0_68994303/article/details/136820308</link><guid>https://blog.csdn.net/m0_68994303/article/details/136820308</guid><author>m0_68994303</author><pubDate>Mon, 18 Mar 2024 22:02:29 +0800</pubDate><description><![CDATA[命令是一款抓包工具，它可以打印所有经过网络接口的数据包的头信息，也可以使用-w选项将数据包保存到文件中，方便以后通过工具。截获所有192.168.10.7 的主机收到的和发出的所有的数据包。通信，服务端监听9999端口，服务端将客户端发送的消息返回客户端。如果想要获取主机192.168.10.7的9999端口的数据包。，但就是没有抓到数据包，原因是数据从回环口走了，可用下面命令。只会监视第一个网络接口，一般是。如果不指定网卡，默认。]]></description><category></category></item><item><title><![CDATA[【C++基础】std::copy]]></title><link>https://blog.csdn.net/m0_68994303/article/details/136636802</link><guid>https://blog.csdn.net/m0_68994303/article/details/136636802</guid><author>m0_68994303</author><pubDate>Mon, 11 Mar 2024 22:06:52 +0800</pubDate><description><![CDATA[等）及其迭代器，以及其他支持随机访问迭代器的数据结构。它也可以用于拷贝基本类型数组或指针范围内的元素。但是，如果需要处理复杂的自定义数据类型，最好使用拷贝构造函数或赋值操作符来进行元素的拷贝。需要注意的是，目标容器需要提前分配空间，以便能够容纳源容器中的元素。如果目标容器未正确分配空间，会导致未定义的行为。即将源容器中的元素复制到目标容器中。算法函数可用于容器之间的元素拷贝操作。容器，其中包含了一些整数元素。拷贝操作完成后，我们遍历。在上述示例中，我们有一个。范围内的元素拷贝到从。并打印拷贝得到的元素。]]></description><category></category></item><item><title><![CDATA[【C++基础】vector的resize和reserve的区别]]></title><link>https://blog.csdn.net/m0_68994303/article/details/136636728</link><guid>https://blog.csdn.net/m0_68994303/article/details/136636728</guid><author>m0_68994303</author><pubDate>Mon, 11 Mar 2024 22:04:27 +0800</pubDate><description><![CDATA[是两个用于管理容器大小和内存分配的成员函数。时，重点考虑你的需求。如果确切知道需要的元素数量，可以使用。如果需要预留空间以提高性能，可以使用。]]></description><category></category></item><item><title><![CDATA[遍历文件夹所有子文件夹，找出包含动态库文件的文件夹路径]]></title><link>https://blog.csdn.net/m0_68994303/article/details/136363132</link><guid>https://blog.csdn.net/m0_68994303/article/details/136363132</guid><author>m0_68994303</author><pubDate>Thu, 29 Feb 2024 10:01:05 +0800</pubDate><description><![CDATA[【代码】遍历文件夹所有子文件夹，找出包含动态库文件的文件夹路径。]]></description><category></category></item><item><title><![CDATA[Boost库常用功能]]></title><link>https://blog.csdn.net/m0_68994303/article/details/136182449</link><guid>https://blog.csdn.net/m0_68994303/article/details/136182449</guid><author>m0_68994303</author><pubDate>Tue, 20 Feb 2024 09:17:53 +0800</pubDate><description><![CDATA[1. 容器：Boost库提供了对STL容器的扩展，包括增加新的容器类型（如multi_array、circular_buffer等），同时提供了一些方便的算法和函数来操作和处理容器。这只是Boost库提供的一些常用功能的例子，实际上Boost库包含了大量的组件和模块，涵盖了许多不同的领域和功能。4. 时间和日期：Boost库提供了易于使用的时间和日期处理功能，可以进行时间的解析和格式化，计算时间差等操作。5. 文件系统：Boost库提供了对文件系统的操作接口，包括文件和目录的创建、删除、遍历等操作。]]></description><category></category></item><item><title><![CDATA[C++11的std::move]]></title><link>https://blog.csdn.net/m0_68994303/article/details/135540110</link><guid>https://blog.csdn.net/m0_68994303/article/details/135540110</guid><author>m0_68994303</author><pubDate>Thu, 11 Jan 2024 22:12:54 +0800</pubDate><description><![CDATA[C++11的标准库  提供了一个非常有用的函数 std::move()，std::move() 函数将一个左值强制转化为右值引用，以用于移动语义。移动语义，允许直接转移对象的资产和属性的所有权，而在参数为右值时无需复制它们。换一种说法就是，std::move() 将对象的状态或者所有权从一个对象转移到另一个对象，只是转移，没有内存的搬迁或者内存拷	贝。因此，通过std::move()，可以避免不必要的拷贝操作。]]></description><category></category></item><item><title><![CDATA[shell命令]]></title><link>https://blog.csdn.net/m0_68994303/article/details/135338431</link><guid>https://blog.csdn.net/m0_68994303/article/details/135338431</guid><author>m0_68994303</author><pubDate>Tue, 02 Jan 2024 13:19:30 +0800</pubDate><description><![CDATA[等于  应用于：整型或字符串比较 如果在[] 中，只能是字符串。-ef  第一个文件与第二个文件为同一个（ link 之类的文件）&&   逻辑的 AND 的意思, -a 也是这个意思。-k  判断文件是否具有sticky bit的属性。||  逻辑的 OR 的意思， -o 也是这个意思。-S  判断某文件是否socket（待修正）-L  判断某文件是否为符号链接（待修正）-u  判断文件是否具有SUID的属性。-g  判断文件是否具有SGID的属性。-w  判断文件是否为可以写入的属性。]]></description><category></category></item><item><title><![CDATA[C++通过类型名称创建类对象]]></title><link>https://blog.csdn.net/m0_68994303/article/details/135297344</link><guid>https://blog.csdn.net/m0_68994303/article/details/135297344</guid><author>m0_68994303</author><pubDate>Mon, 01 Jan 2024 19:37:26 +0800</pubDate><description><![CDATA[【代码】通过类型名称创建类对象。]]></description><category></category></item><item><title><![CDATA[【cmake】自定义Findxxx.cmake模块]]></title><link>https://blog.csdn.net/m0_68994303/article/details/135007914</link><guid>https://blog.csdn.net/m0_68994303/article/details/135007914</guid><author>m0_68994303</author><pubDate>Tue, 19 Dec 2023 21:30:18 +0800</pubDate><description><![CDATA[在一个项目当中，我们自己的可执行文件和库文件很有可能去引入和链接其他库文件，例如一个demo可执行文件需要去链接一个名为libadd.so# 引入头文件路径# 引入库文件路径# 链接目标库。]]></description><category></category></item><item><title><![CDATA[套接字对应的文件描述符的文件被删除]]></title><link>https://blog.csdn.net/m0_68994303/article/details/134884420</link><guid>https://blog.csdn.net/m0_68994303/article/details/134884420</guid><author>m0_68994303</author><pubDate>Fri, 08 Dec 2023 17:50:26 +0800</pubDate><description><![CDATA[域套接字是通过文件系统路径名称来引用的，但是一旦套接字被创建，就可以在文件系统中删除该文件而不会影响套接字的正常运行。需要注意的是，如果在接收端的套接字文件已被删除，接收方可能无法打开该文件，从而导致无法读取通过套接字发送的数据。因此，在使用域套接字进行通信时，发送和接收双方需要事先约定好套接字文件的路径和名称，并确保该文件在通信期间一直存在。当您使用域套接字发送消息时，操作系统内核会根据文件描述符找到对应的套接字对象，并将消息发送到此套接字对象所关联的套接字。]]></description><category></category></item><item><title><![CDATA[利用文件锁来防止进程启动多次]]></title><link>https://blog.csdn.net/m0_68994303/article/details/134776374</link><guid>https://blog.csdn.net/m0_68994303/article/details/134776374</guid><author>m0_68994303</author><pubDate>Mon, 04 Dec 2023 09:49:45 +0800</pubDate><description><![CDATA[具体方法是在程序启动时，尝试获取一个特定文件的文件锁，如果获取成功，则说明当前没有其他进程在运行该程序；如果获取失败，则说明已经有其他进程在运行该程序，可以选择终止当前进程。需要注意的是，上述示例中的文件锁只适用于同一个系统上的多个进程之间，并且需要高度保证锁文件的正确性，以避免死锁或者多个进程之间的冲突。如果获取锁失败，则说明已经有其他进程在运行该程序，可以直接返回或进行相应处理；函数返回值为-1），则说明已经有其他进程在运行该程序，函数返回。在程序执行完毕后，需要释放文件锁，可以通过删除锁文件来实现（]]></description><category></category></item><item><title><![CDATA[多次调用 fork 和 execv]]></title><link>https://blog.csdn.net/m0_68994303/article/details/134442531</link><guid>https://blog.csdn.net/m0_68994303/article/details/134442531</guid><author>m0_68994303</author><pubDate>Thu, 16 Nov 2023 15:10:56 +0800</pubDate><description><![CDATA[如果父进程打开了大量文件，子进程的创建和销毁过程中会涉及大量的文件描述符复制操作，产生一定的开销。：预先创建一定数量的子进程，维护一个进程池，每次需要运行任务时，从进程池中取出一个空闲的进程进行执行，复用进程，避免频繁的进程创建和销毁。：使用线程池可以避免频繁地创建和销毁进程，将任务分配给线程进行并发处理，减少进程创建和销毁的开销。：对于IO密集型任务，可以使用异步IO方式进行处理，避免阻塞和频繁的进程创建和销毁。：如果可以，可以考虑使用线程替代进程，因为线程的创建、销毁和切换开销相对较小。]]></description><category></category></item><item><title><![CDATA[子进程会继承父进程资源]]></title><link>https://blog.csdn.net/m0_68994303/article/details/134442248</link><guid>https://blog.csdn.net/m0_68994303/article/details/134442248</guid><author>m0_68994303</author><pubDate>Thu, 16 Nov 2023 15:03:04 +0800</pubDate><description><![CDATA[需要注意的是，子进程会继承这些资源的副本，而不是直接共享。子进程和父进程之间可以独立地修改这些资源的副本，互不影响。这样可以保证子进程的执行环境与父进程的执行环境相互独立。]]></description><category></category></item><item><title><![CDATA[C++消息队列，多线程]]></title><link>https://blog.csdn.net/m0_68994303/article/details/133251934</link><guid>https://blog.csdn.net/m0_68994303/article/details/133251934</guid><author>m0_68994303</author><pubDate>Mon, 25 Sep 2023 22:21:49 +0800</pubDate><description><![CDATA[本文提供了一种C++消息队列的实现方式(包括一个线程类和一个消息队列类)，通过一个简单示例说明如何生产消息和消费消息。]]></description><category></category></item><item><title><![CDATA[Thrift 在Windows环境下的编译与简单C++应用]]></title><link>https://blog.csdn.net/m0_68994303/article/details/126694737</link><guid>https://blog.csdn.net/m0_68994303/article/details/126694737</guid><author>m0_68994303</author><pubDate>Tue, 06 Sep 2022 21:48:22 +0800</pubDate><description><![CDATA[Thrift是Facebook提供的一个跨语言的服务部署框架，可以实现客户端和服务器远程过程调用。相较于Google的grpc框架，Thrift对三方库依赖更少，编译更简单，并且运行效率也更高。Thrift只依赖boost、openssl和libevent三个库，本次测试编译的都是静态库。下面详细介绍thrift 0.15.0的编译过程。]]></description><category></category></item></channel></rss>