<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ke_wu的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ke_wu</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ke_wu]]></copyright><item><title><![CDATA[2025牛客寒假算法营6]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/145572666</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/145572666</guid><author>ke_wu</author><pubDate>Tue, 11 Feb 2025 22:29:26 +0800</pubDate><description><![CDATA[【代码】2025牛客寒假算法营6。]]></description><category></category></item><item><title><![CDATA[2025牛客寒假算法营4]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/145483062</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/145483062</guid><author>ke_wu</author><pubDate>Fri, 07 Feb 2025 01:56:48 +0800</pubDate><description><![CDATA[【代码】2025牛客寒假算法营4。]]></description><category></category></item><item><title><![CDATA[2025牛客寒假算法营3]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/145371651</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/145371651</guid><author>ke_wu</author><pubDate>Mon, 27 Jan 2025 02:22:12 +0800</pubDate><description><![CDATA[【代码】2025牛客寒假算法营3。]]></description><category></category></item><item><title><![CDATA[使用select函数创建多线程TCP服务端]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/145344373</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/145344373</guid><author>ke_wu</author><pubDate>Fri, 24 Jan 2025 17:35:28 +0800</pubDate><description><![CDATA[前文。]]></description><category></category></item><item><title><![CDATA[2025牛客寒假算法营2]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/145329466</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/145329466</guid><author>ke_wu</author><pubDate>Thu, 23 Jan 2025 23:33:18 +0800</pubDate><description><![CDATA[A题打卡。检查给定的七个整数是否仅包含 1,2,3,5,6 即可。为了便于书写，我们可以反过来，检查这七个整数是否不为 4 和 7。时间 O(1)；空间 O(1)。B题G题F题J题D题代码的核心思路是针对每个小写字母，分别正向和反向遍历字符串，找出该字母至少出现两次时的最长连续子串长度，最后取所有字母对应的最长长度作为可爱度。不过要注意，此代码实现与题目要求的可爱度定义可能存在差异，因为它仅考虑了单个字母的情况，而没有对所有可能的子串和不连续子序列进行检查。]]></description><category></category></item><item><title><![CDATA[2025牛客寒假算法营1]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/145290193</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/145290193</guid><author>ke_wu</author><pubDate>Wed, 22 Jan 2025 20:54:08 +0800</pubDate><description><![CDATA[那么，模拟方式是，我们首先得到每个元素的下标，然后维护区间两个端点l和r，当我们需要翻倍的区间增大的时候（比如从最小值到次小值），只需要将l向左移动或者将r向右移动，直到包含当前需要选择的元素。对于这道题而言，我们可以先将数组排序，对于前半部分我们将这些元素变成前半部分的中位数，后半部分我们将这些元素变成后半部分的中位数。首先大家需要了解中位数定理：给定一个数组，每次操作加1或者减1，将所有元素变成相同的最小操作次数则是将所有元素变成中位数即可。如果有节点度数大于3，则不存在正确的路径，输出-1。]]></description><category></category></item><item><title><![CDATA[不同IO模型服务器的简单实现]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/145272074</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/145272074</guid><author>ke_wu</author><pubDate>Tue, 21 Jan 2025 00:14:20 +0800</pubDate><description><![CDATA[在阻塞 I/O 模型下，进程在执行 I/O 操作时会被阻塞，直到数据被成功读取或写入。信号驱动 I/O 在套接字准备好进行 I/O 操作时，会向进程发送一个信号，通知进程去处理该 I/O 操作。进程会注册一个信号处理函数来响应。多路复用 I/O 允许服务器监控多个文件描述符（如多个客户端连接），并在某个文件描述符准备好进行 I/O 操作时进行处理。异步 I/O 是最先进的 I/O 模型，进程发出 I/O 请求后，不需要阻塞，操作系统在操作完成时通知进程。在非阻塞 I/O 模型下，I/O 操作不会阻塞进程。]]></description><category></category></item><item><title><![CDATA[实现简单的TCP服务器]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/145268764</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/145268764</guid><author>ke_wu</author><pubDate>Mon, 20 Jan 2025 21:05:39 +0800</pubDate><description><![CDATA[该代码实现了一个多线程的 TCP 服务器，能够同时处理多个客户端连接。每当有一个新的客户端连接，服务器创建一个新的线程来处理该连接，避免了串行处理多个客户端带来的延迟。]]></description><category></category></item><item><title><![CDATA[网络IO与IO多路复用]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/145214644</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/145214644</guid><author>ke_wu</author><pubDate>Fri, 17 Jan 2025 20:59:29 +0800</pubDate><description><![CDATA[【代码】网络IO与IO多路复用。]]></description><category></category></item><item><title><![CDATA[创建一个CMake项目]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/145124274</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/145124274</guid><author>ke_wu</author><pubDate>Mon, 13 Jan 2025 21:44:26 +0800</pubDate><description><![CDATA[POST_BUILD解释用于添加一个自定义命令，这里添加到目标的POST_BUILD阶段。表示在构建完成后，使用 CMake 的-E选项执行echo命令输出。解释创建一个名为run的自定义目标。表示该目标的命令是执行可执行文件。表示run目标依赖于，当被更新时，run目标会重新执行。]]></description><category></category></item><item><title><![CDATA[Linux系统命令与网络、磁盘参数和日志监控]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/144983610</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/144983610</guid><author>ke_wu</author><pubDate>Fri, 10 Jan 2025 00:08:06 +0800</pubDate><description><![CDATA[这里写目录标题重点0.1 监控0.2 测试sysbench 工具相关介绍Linux CPU 使用率统计维度及相关分析0.3 优化1 Linux基础命令和工具1.1 grep搜索字符1. `grep` 命令概述2. 常用选项参数及其作用（1）`-c` 参数（2）`-i` 参数（3）`-n` 参数（4）`-v` 参数（5）`-r` 参数（6）`-C n` 参数3. 不同搜索场景下的 `grep` 命令示例（1）在指定文件查找（2）在多个文件中搜索（3）递归搜索目录下所有文件（4）反向查找（5）结合多个参数查找1]]></description><category></category></item><item><title><![CDATA[解决vmware虚拟机和宿主机之间不能复制粘贴]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/144948446</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/144948446</guid><author>ke_wu</author><pubDate>Sun, 05 Jan 2025 17:36:21 +0800</pubDate><description><![CDATA[在虚拟机内执行一下命令。]]></description><category></category></item><item><title><![CDATA[C++新特性||线程协程（代码解析3）]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/144860342</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/144860342</guid><author>ke_wu</author><pubDate>Wed, 01 Jan 2025 01:34:37 +0800</pubDate><description><![CDATA[首先创建一个 ZERO_ThreadPool 对象，使用 init(2) 初始化线程池的线程数为2，然后调用 start() 启动线程池。等待任务完成：与 test1 相同，调用 waitForAllDone() 等待任务完成，并调用 stop() 停止线程池。这个示例代码展示了如何通过 ZERO_ThreadPool 类实现多线程并发任务执行，同时也演示了如何处理带有返回值的任务。：使用 std::future 的 get() 方法来获取任务的返回值，并打印结果。这些函数用于测试任务有返回值的情况。]]></description><category></category></item><item><title><![CDATA[C++新特性||线程协程（代码解析2）]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/144860022</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/144860022</guid><author>ke_wu</author><pubDate>Wed, 01 Jan 2025 00:56:13 +0800</pubDate><description><![CDATA[这段代码是 ZERO_ThreadPool 类的实现部分，涉及线程池的管理、任务调度和线程的启动、停止等操作。1. 如果任务队列为空，线程会被挂起，等待条件变量 _condition 的通知，直到有任务或者线程池被终止。3. 遍历所有工作线程，调用 join() 等待它们完成任务，然后删除线程对象，清空线程列表。3. 如果指定了超时时间，则使用 wait_for 等待任务完成，若超时则返回 false。2. 如果线程池已终止，返回 false，否则从任务队列中取出任务，并移除该任务。]]></description><category></category></item><item><title><![CDATA[C++新特性||线程协程(代码解析1）]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/144859874</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/144859874</guid><author>ke_wu</author><pubDate>Wed, 01 Jan 2025 00:22:25 +0800</pubDate><description><![CDATA[它采用了 C++11 的标准，主要功能包括任务的执行、线程管理、任务队列等，支持任务超时管理。_func 是实际的任务函数，_expireTime 是任务的超时时间（如果有）。提交任务到线程池，f 是任务函数，args 是任务的参数。这种设计非常适合需要高并发和任务调度的场景，能有效地利用多个线程来执行任务，提高系统效率。获取当前线程池中的线程数和任务数。初始化线程池，num 为线程数，成功返回 true，失败返回 false。线程池的工作线程会调用此函数，它的主要职责是从任务队列中取任务并执行。]]></description><category></category></item><item><title><![CDATA[C++新特性||线程协程]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/144807820</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/144807820</guid><author>ke_wu</author><pubDate>Tue, 31 Dec 2024 19:39:36 +0800</pubDate><description><![CDATA[目录1 C++11多线程thread1.1 线程thread1.1.1 语法1.1.2 **简单线程的创建****1.1.3 线程封装**1.2 互斥量1.2.1 独占互斥量std::mutex1.2.2 递归互斥量std::recursive_mutex1.2.3 带超时的互斥量std::timed_mutex和std::recursive_timed_mutex**1.2.4 lock_guard和unique_lock的使用和区别**1.3 条件变量1.3.1 成员函数1. **wait函数**1. ]]></description><category></category></item><item><title><![CDATA[C++进阶重点知识（一）|智能指针|右值|lambda|STL|正则表达式]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/144773613</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/144773613</guid><author>ke_wu</author><pubDate>Sat, 28 Dec 2024 14:26:15 +0800</pubDate><description><![CDATA[序列容器、有序关联容器、无序关联容器、容器适配器序列容器：有序关联容器（键按顺序保存）无序关联容器：容器适配器：序列容器描述了线性的数据结构（也就是说，其中的元素在概念上” 排成一行"), 例如数组、向量和链表。关联容器描述非线性的容器，它们通常可以快速锁定其中的元素。这种容器可以存储值的集合或 者键值对。栈和队列都是在序列容器的基础上加以约束条件得到的，因此STL把stack和queue作为容器适配器来实现，这样就可以使程序以一种约束方式来处理线性容器。类型string。]]></description><category></category></item><item><title><![CDATA[结构型设计模式]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/144748686</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/144748686</guid><author>ke_wu</author><pubDate>Thu, 26 Dec 2024 17:24:41 +0800</pubDate><description><![CDATA[内存屏障是一个指令，它能够强制计算机系统的某些操作按特定的顺序执行。它并不会直接影响计算的结果，而是通过确保内存操作的顺序，从而保证程序的正确性。具体来说，它可以用于阻止对内存的重排序（Reordering），确保内存操作的顺序满足程序的要求。内存屏障是并发编程中的一种重要工具，它帮助我们控制多线程程序中的内存访问顺序，避免由于处理器的乱序执行和指令重排序所带来的问题。理解内存屏障及其在现代处理器架构中的使用是编写高效且正确的并发程序的关键。在 C++ 中，内存屏障通常通过原子操作和内存顺序（如。]]></description><category></category></item><item><title><![CDATA[模板方法、观察者模式、策略模式]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/144741264</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/144741264</guid><author>ke_wu</author><pubDate>Thu, 26 Dec 2024 13:33:36 +0800</pubDate><description><![CDATA[模板方法模式通过抽象化算法的结构并将具体的步骤交给子类来实现，使得可以在保持算法结构不变的前提下定制化具体实现。它适用于需要在固定流程中灵活插入不同行为的情况。]]></description><category></category></item><item><title><![CDATA[面向对象编程概念]]></title><link>https://blog.youkuaiyun.com/ke_wu/article/details/144731122</link><guid>https://blog.youkuaiyun.com/ke_wu/article/details/144731122</guid><author>ke_wu</author><pubDate>Thu, 26 Dec 2024 00:29:17 +0800</pubDate><description><![CDATA[虚析构函数（Virtual Destructor）拷贝构造函数（Copy Constructor）移动构造函数（Move Constructor）静态成员（Static Members）封装（Encapsulation）构造函数（Constructor）多态（Polymorphism）析构函数（Destructor）继承（Inheritance）组合（Composition）重载（Overloading）重写（Overriding）接口（Interface）对象（Object）友元（Friend）]]></description><category></category></item></channel></rss>