<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[achouyihao的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/achouyihao</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; achouyihao]]></copyright><item><title><![CDATA[观察者模式的实现（c++）]]></title><link>https://blog.youkuaiyun.com/achouyihao/article/details/147042944</link><guid>https://blog.youkuaiyun.com/achouyihao/article/details/147042944</guid><author>achouyihao</author><pubDate>Mon, 07 Apr 2025 14:16:48 +0800</pubDate><description><![CDATA[主题接口定义了添加、删除和通知观察者的方法。// 观察者接口public:// 主题接口private:public:具体主题是主题接口的具体实现，它维护了一个观察者列表，并在状态发生变化时通知所有观察者。// 状态变化时通知所有观察者具体观察者是观察者接口的具体实现，它在收到通知时更新自己的状态。]]></description><category></category></item><item><title><![CDATA[工厂模式实现（c++）]]></title><link>https://blog.youkuaiyun.com/achouyihao/article/details/147042252</link><guid>https://blog.youkuaiyun.com/achouyihao/article/details/147042252</guid><author>achouyihao</author><pubDate>Mon, 07 Apr 2025 14:03:54 +0800</pubDate><description><![CDATA[工厂模式是一种创建型设计模式，用于封装对象的创建逻辑。它提供了一个接口来创建对象，但将具体的对象创建委托给子类或工厂方法。工厂模式可以分为两种主要类型：简单工厂模式和工厂方法模式。简单来说，简单工厂模式是有一个工厂类，传入衣服，鞋子参数，分别创建衣服、鞋子对象，工厂方法模式是一个抽象工厂类，分别创建adidas，nike工厂，然后不同工厂生产各自的鞋子。]]></description><category></category></item><item><title><![CDATA[尽量使用静态变量取代全局变量]]></title><link>https://blog.youkuaiyun.com/achouyihao/article/details/146937519</link><guid>https://blog.youkuaiyun.com/achouyihao/article/details/146937519</guid><author>achouyihao</author><pubDate>Wed, 02 Apr 2025 10:51:41 +0800</pubDate><description><![CDATA[使用静态变量取代全局变量可以提高代码的封装性、安全性、可预测性、线程安全性和可维护性。虽然静态变量也有其局限性（如作用域限制），但在大多数情况下，这些优点使其成为更好的选择。]]></description><category></category></item><item><title><![CDATA[select、poll和epoll]]></title><link>https://blog.youkuaiyun.com/achouyihao/article/details/145924588</link><guid>https://blog.youkuaiyun.com/achouyihao/article/details/145924588</guid><author>achouyihao</author><pubDate>Fri, 28 Feb 2025 13:35:10 +0800</pubDate><description><![CDATA[举个例子，假设客户端一次性发来了4K数据 ，但是服务器recv函数定义的buffer大小仅为1024字节，那么一次肯定是不能将所有数据都读取完的，这时候就会继续触发可读事件，直到所有数据都处理完成。里面的fd，它代表一个文件描述符，初始化的时候传入需要监听的文件描述符，当监听返回时，此处会传出一个有事件发生的文件描述符，因此，无需我们遍历所有的文件描述符，就可以得到结果了。epoll的优点显而易见，它解决了poll需要遍历所有注册的fd的问题，只需要关心触发了事件的极少量fd即可，大大提升了效率。]]></description><category></category></item><item><title><![CDATA[C++11特性-高阶函数用法汇总]]></title><link>https://blog.youkuaiyun.com/achouyihao/article/details/145871634</link><guid>https://blog.youkuaiyun.com/achouyihao/article/details/145871634</guid><author>achouyihao</author><pubDate>Wed, 26 Feb 2025 10:25:59 +0800</pubDate><description><![CDATA[以std::set为例class set//如上，set默认的比较函数std::less,这是一个模板仿函数，会堆Type类型的两个对象比较大小(此时需要实现自定义键值的比较函数)//keyA一样则根据keyB大小排序.keyA不同则根据keyA从大大小排序int keyA;int keyB;// {// };int main()也可以自定义比较函数//keyA一样则根据keyB大小排序.keyA不同则根据keyA排序int keyA;int keyB;]]></description><category></category></item><item><title><![CDATA[++i 比 i++ 快的原因]]></title><link>https://blog.youkuaiyun.com/achouyihao/article/details/145652781</link><guid>https://blog.youkuaiyun.com/achouyihao/article/details/145652781</guid><author>achouyihao</author><pubDate>Sat, 15 Feb 2025 16:30:41 +0800</pubDate><description><![CDATA[一句话总结：是因为++i可以通过寄存器来进行计算，而 i++ 需要生成一个临时变量用于保存原始值，导致额外的内存读写操作]]></description><category></category></item><item><title><![CDATA[c++的名称修饰]]></title><link>https://blog.youkuaiyun.com/achouyihao/article/details/145519599</link><guid>https://blog.youkuaiyun.com/achouyihao/article/details/145519599</guid><author>achouyihao</author><pubDate>Sat, 08 Feb 2025 17:13:53 +0800</pubDate><description><![CDATA[名称修饰（Name Mangling），也称为名称改编或名称编码，是编译器在编译过程中对函数名、变量名等进行的一种转换。这种转换的主要目的是为了支持某些语言特性，如函数重载、类成员函数等。名称修饰使得编译器可以在生成的目标代码中唯一地标识每个函数和变量，即使它们在源代码中具有相同的名字。]]></description><category></category></item><item><title><![CDATA[在 C 语言中，使用 const 和 #define]]></title><link>https://blog.youkuaiyun.com/achouyihao/article/details/145518309</link><guid>https://blog.youkuaiyun.com/achouyihao/article/details/145518309</guid><author>achouyihao</author><pubDate>Sat, 08 Feb 2025 16:23:51 +0800</pubDate><description><![CDATA[在 C 语言中，使用 `const` 和 `#define` 来定义常量也有各自的优缺点。虽然 `const` 在 C 语言中的处理方式与 C++ 有所不同，但仍然有一些情况下使用 `const` 更为合适。下面详细比较这两种方法在 C 语言中的优缺点：]]></description><category></category></item></channel></rss>