<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[蔡曜镫专栏]]></title><description><![CDATA[思绪如风，偶尔停留  https://github.com/caiyaodeng/]]></description><link>https://blog.youkuaiyun.com/CAIYAODENG</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CAIYAODENG]]></copyright><item><title><![CDATA[Linux 忘记mysql root密码简易步骤]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/119188956</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/119188956</guid><author>CAIYAODENG</author><pubDate>Wed, 28 Jul 2021 20:16:41 +0800</pubDate><description><![CDATA[这里写自定义目录标题Linux 忘记mysql root密码简易步骤
Linux 忘记mysql root密码简易步骤

systemctl stop mysql
mysqld start – skip-grant-tables
直接输入mysql -u root -p 回车, （忽略密码）再回车
UPDATE mysql.user SET Password=PASSWORD(‘xxx’) where USER=‘root’;
flush privileges;
service mysqld restart]]></description><category></category></item><item><title><![CDATA[无缝世界网游服务器架构设计思路(下)]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/86314366</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/86314366</guid><author>CAIYAODENG</author><pubDate>Fri, 11 Jan 2019 19:36:14 +0800</pubDate><description><![CDATA[无缝世界网游服务器架构设计思路(下)
上次写了《无缝世界网游服务器架构的设计思路》，这次是续篇，主要内容是两种架构的优缺点分析。
从一组服务器的角度来看，一般来说，我们的服务器组（Cluster）内都会有登陆验证服务器（Login Server）、持久性数据服务器（DB及DB Proxy）、连接代理服务器（Gate Server、FEP Server、Client Proxy等）以及Auto Pa...]]></description><category></category></item><item><title><![CDATA[无缝世界网游服务器架构设计思路（上）]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/86314195</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/86314195</guid><author>CAIYAODENG</author><pubDate>Fri, 11 Jan 2019 19:31:35 +0800</pubDate><description><![CDATA[无缝世界网游服务器架构设计思路（上）
过去一年中，花了很多时间在考虑服务器架构设计方面的问题。看了大量文章、也研究了不少开源项目，眼界倒是开阔了不少，不过回过头来看，对网游架构设计方面的帮助却是不多。老外还是玩儿console game的多，MMO Games方面涉及的还是不如国内广泛。看看 Massively Multiplayer Games Development 1 &amp;amp; 2 这两本...]]></description><category></category></item><item><title><![CDATA[Linux下编译安装log4cxx]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/78699345</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/78699345</guid><author>CAIYAODENG</author><pubDate>Sat, 02 Dec 2017 23:50:53 +0800</pubDate><description><![CDATA[Linux下编译安装log4cxxlog4cxx的官方下载地址是http://logging.apache.org/log4cxx/index.html ，我用的是apache-log4cxx-0.10.0版本。为了编译它，还需要两个辅助库，apr,和apr-util，可以在这里下载http://apr.apache.org/download.cgi ,我用的版本分别是apr-1.5.0.tar.g]]></description><category></category></item><item><title><![CDATA[GCC 4.8及以上支持内存非法访问检查]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/76274699</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/76274699</guid><author>CAIYAODENG</author><pubDate>Fri, 28 Jul 2017 18:47:26 +0800</pubDate><description><![CDATA[gcc4.8及以上版本支持地址越界，野指针检查，只需要在编译时使用-fsanitize=address选项即可，当运行程序时如果访问非本程序申请的地址就会报错。
  root@localhost:/home/ngos/practice> vi nullpoint.c 
        1 #include “stdio.h” 
        2  
        3 int main(int a]]></description><category></category></item><item><title><![CDATA[SGI-STL 迭代器实现]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/59215617</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/59215617</guid><author>CAIYAODENG</author><pubDate>Thu, 02 Mar 2017 00:17:39 +0800</pubDate><description><![CDATA[SGI-STL 迭代器实现
  迭代器模式：该模式能够提供一种方法，使之能够依序寻访某个聚合物（容器）所含的每个元素，而又无需暴露该聚合物的内部表达方式。 
       ———————————————————————————————————————— 《STL源码剖析》
它是什么？它其实就是算法与容器的一种粘胶剂。它像什么？迭代器的行为非常类似智能指针（SmartPointer），所以对他来说最重]]></description><category></category></item><item><title><![CDATA[模板化vs模板特化vs模板偏特化]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/59213325</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/59213325</guid><author>CAIYAODENG</author><pubDate>Thu, 02 Mar 2017 00:12:37 +0800</pubDate><description><![CDATA[模板化vs模板特化vs模板偏特化
  编译器在编译阶段进行匹配时，抉择顺序：模板偏特化>模板特化>模板化代码直观
template <typename T>
class CTemplate
{
public:
    CTemplate()
    {
        std::cout << "一般模板" << std::endl;
    }
};//模板化
template <>
class]]></description><category></category></item><item><title><![CDATA[RB-tree性质理解]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/59104389</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/59104389</guid><author>CAIYAODENG</author><pubDate>Wed, 01 Mar 2017 14:11:48 +0800</pubDate><description><![CDATA[RB-tree性质理解规则
  
  每个节点的颜色非红即黑。
  根节点的颜色必定为黑。
  每个叶子节点是黑色的（指的是NIL节点）。
  如果节点的颜色为红，其左右子节点的颜色必为黑。
  任意节点到NULL（尾节点）的任意路径上包含的黑色节点数量必须一致。
  
根据以上规则，可以得出以下要求：
新增节点的颜色需要为红。
新增父节点的颜色需要为黑。
为了能达到以上的要求，需要对变化后的红黑树]]></description><category></category></item><item><title><![CDATA[快速掌握一种语言的50%]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/58671509</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/58671509</guid><author>CAIYAODENG</author><pubDate>Tue, 28 Feb 2017 21:40:56 +0800</pubDate><description><![CDATA[快速掌握一种语言的50%
  
  首先了解该语言的基本数据类型，基本语法和主要语言构造，主要数学运算符和print函数的使用，达到能够写谭浩强程序设计书课后数学习题的程度；
  其次掌握数组和其他集合类的使用，有基础的话可以理解一下泛型，如果理解不了也问题不大，后面可以补；
  简单字符串处理。所谓简单，就是Regex和Parser以下的内容，什么查找替换，截断去字串之类的。不过这个阶段有一个难点]]></description><category></category></item><item><title><![CDATA[C/C++函数参数为何是从右到左？]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/58604332</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/58604332</guid><author>CAIYAODENG</author><pubDate>Tue, 28 Feb 2017 16:46:39 +0800</pubDate><description><![CDATA[C/C++函数参数为何是从右到左？那是因为不定长参数函数的存在。。。。我们先看看printf函数
   
  _Check_return_opt_ _CRTIMP int __cdecl _vfprintf_l(_Inout_ FILE * _File, _In_z_ const char * _Format, _In_opt_ _locale_t _Locale, va_list _ArgList]]></description><category></category></item><item><title><![CDATA[GCC 编译选项]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/58067057</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/58067057</guid><author>CAIYAODENG</author><pubDate>Mon, 27 Feb 2017 14:05:50 +0800</pubDate><description><![CDATA[GCC 编译选项
  gcc 提供了大量的警告选项，对代码中可能存在的问题提出警 告，通常可以使-Wall来开启以下警告:  
             -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat  
             -Wchar-subscripts -Wimplicit-int -Wimplicit-function-]]></description><category></category></item><item><title><![CDATA[浅拷贝与深拷贝]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/58048145</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/58048145</guid><author>CAIYAODENG</author><pubDate>Mon, 27 Feb 2017 12:00:24 +0800</pubDate><description><![CDATA[浅拷贝与深拷贝
  　　在某些状况下，类内成员变量需要动态开辟堆内存，如果实行位拷贝，也就是把对象里的值完全复制给另一个对象，如A=B。这时，如果B中有一个成员变量指针已经申请了内存，那A中的那个成员变量也指向同一块内存。这就出现了问题：当B把内存释放了（如：析构），这时A内的指针就是野指针了，出现运行错误。
  
  　　深拷贝和浅拷贝可以简单理解为：如果一个类拥有资源，当这个类的对象发生复制过程]]></description><category></category></item><item><title><![CDATA[现代编译过程]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57563944</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57563944</guid><author>CAIYAODENG</author><pubDate>Sun, 26 Feb 2017 23:07:48 +0800</pubDate><description><![CDATA[现代编译过程编译过程分为五步：
扫描解析文件
预处理工作 
处理宏定义，不管是由-D参数指定，还是在源码内部通过#define，或者使用了标准库，扩展库中的宏，都会替换为定义的值。 
命令：cpp a.c>a.i 输出的a.i就是预处理过的文件，包含了完整的内容。 
由此可以得出，宏不是运行时的定义内容，也不是编译时的内容，而是预处理阶段就完成的。
编译阶段： 
将源代码（也就是预处理过的代码）编译]]></description><category></category></item><item><title><![CDATA[静态变量与类大小关系]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57539216</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57539216</guid><author>CAIYAODENG</author><pubDate>Sun, 26 Feb 2017 22:45:16 +0800</pubDate><description><![CDATA[静态变量与类大小关系
  首先，类的大小是什么？确切的说，类只是一个类型定义，它是没有大小可言的。 
  用sizeof运算符对一个类型名操作，得到的是具有该类型实体的大小。
如果Class A;
A obj;那么sizeof(A)==sizeof(obj) 
那么sizeof(A)的大小和成员的大小总和是什么关系呢，很简单，一个对象的大小大于等于所有非静态成员大小的总和。 
为什么是大于等于而不是]]></description><category></category></item><item><title><![CDATA[ET和LT触发方式]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57416003</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57416003</guid><author>CAIYAODENG</author><pubDate>Sun, 26 Feb 2017 15:49:57 +0800</pubDate><description><![CDATA[ET和LT触发方式
  ET模式只能通过一种方式（图中红线）。所以ET模式下能被唤醒的情况,LT模式下一定也能被唤醒。我们先来讨论特殊情况（ET模式）,再来讨论一般情况（LT模式）。
ET根据上一节对两种加入rdlist途径的分析，可以得出ET模式下被唤醒（返回就绪）的条件为： 
对于读取操 
(1) 当buffer由不可读状态变为可读的时候，即由空变为不空的时候。 
(2) 当有新数据到达时，即b]]></description><category></category></item><item><title><![CDATA[ET模式实现分析]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57415496</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57415496</guid><author>CAIYAODENG</author><pubDate>Sun, 26 Feb 2017 15:32:10 +0800</pubDate><description><![CDATA[ET模式实现分析ET和LT的实现区别 

 
注：上图的poll不要理解成和select相似那个poll，这是通过epoll_ctl调用的。 
下面简要分析一下epoll的工作过程： 
(1) ep]]></description><category></category></item><item><title><![CDATA[Epoll模型详解]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57414564</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57414564</guid><author>CAIYAODENG</author><pubDate>Sun, 26 Feb 2017 15:07:13 +0800</pubDate><description><![CDATA[Epoll模型详解内核中提高I/O性能的新方法epollepoll是什么？按照man手册的说法：是为处理大批量句柄而作了改进的poll。要使用epoll只需要这三个系统调 用：epoll_create(2)， epoll_ctl(2)， epoll_wait(2)。当然，这不是2.6内核才有的，它是在 2.5.44内核中被引进的(epoll(4) is a new API introduced in]]></description><category></category></item><item><title><![CDATA[剖析虚函数]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57232235</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57232235</guid><author>CAIYAODENG</author><pubDate>Sun, 26 Feb 2017 00:44:22 +0800</pubDate><description><![CDATA[剖析虚函数虚函数表对C++ 了解的人都应该知道虚函数（Virtual Function）是通过一张虚函数表（Virtual Table）来实现的。简称为V-Table。在这个表中，主是要一个类的虚函数的地址表，这张表解决了继承、覆盖的问题，保证其容真实反应实际的函数。这样，在有虚函数的类的实例中这个表被分配在了这个实例的内存中，所以，当我们用父类的指针来操作一个子类的时候，这张虚函数表就显得由为重要]]></description><category></category></item><item><title><![CDATA[游戏开发中常用的设计模式]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57161340</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57161340</guid><author>CAIYAODENG</author><pubDate>Sat, 25 Feb 2017 23:30:31 +0800</pubDate><description><![CDATA[游戏开发中常用的设计模式]]></description><category></category></item><item><title><![CDATA[string、vector、list、deque、set、map区别]]></title><link>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57125189</link><guid>https://blog.youkuaiyun.com/CAIYAODENG/article/details/57125189</guid><author>CAIYAODENG</author><pubDate>Sat, 25 Feb 2017 21:16:10 +0800</pubDate><description><![CDATA[string、vector、list、deque、set、map区别在STL中基本容器有: string、vector、list、deque、set、map set 和map都是无序的保存元素,只能通过它提供的接口对里面的元素进行访问
setset:集合, 用来判断某一个元素是不是在一个组里面,使用的比较少mapmap:映射,相当于字典,把一个值映射成另一个值,如果想创建字典的话使用它好了 
底层采]]></description><category></category></item></channel></rss>