<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[oceanlee2的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/oceanlee2</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; oceanlee2]]></copyright><item><title><![CDATA[游戏服务器的设计]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/5157249</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/5157249</guid><author>oceanlee2</author><pubDate>Fri, 08 Jan 2010 12:40:00 +0800</pubDate><description><![CDATA[游戏服务器的设计是一项颇有挑战性的工作，游戏服务器的发展也由以前的单服结构转变为多服机构，甚至出现了bigworld引擎的分布式解决方案，最近了解到Unreal的服务器解决方案atlas也是基于集群的方式。负载均衡是一个很复杂的课题，这里暂不谈bigworld和atlas的这类服务器的设计，更多的是基于功能和场景划分服务器结构。首先说一下思路，服务器划分基于以下原则：1：分离游戏中占用系统]]></description><category></category></item><item><title><![CDATA[利用strstr和sscanf解析GPS信息]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/5081866</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/5081866</guid><author>oceanlee2</author><pubDate>Sat, 26 Dec 2009 16:42:00 +0800</pubDate><description><![CDATA[考察C程序员是否合格的一个重要标准就是看他操作字符串的能力，一个合格的C程序员应该可以熟练的对字符串进行拆分、组合、格式转换以及搜索定位，从一堆数据中提取出有效信息。比如说我们要做一个GPS导航的项目，需要读取GPS模块以ASCII码的形式发送过来的数据，然后对这些数据进行处理，提取我们需要的信息。这就涉及到很多操作字符串的问题。下面就以此为例，利用strstr函数和sscanf函数解析GPS]]></description><category></category></item><item><title><![CDATA[sscanf()的一些使用说明]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4753680</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4753680</guid><author>oceanlee2</author><pubDate>Sun, 01 Nov 2009 10:48:00 +0800</pubDate><description><![CDATA[ 这里有些sscanf()的一些使用说明，都是从论坛，Blog里整理出来的。供大家使用。   通过学习和使用个人认为，在字符串格式不是很复杂，但是也并不简单的时候用这个函数比较合适，这个尺度就要靠自己把握了，字符串不是很复杂，但自己写个处理的函数比较麻烦，效率也不高，就用这个函数，如果字符串很复杂，那就用正则表达式吧。不多说了，看看下面这些介绍和列子吧！名称:sscanf() - 从一]]></description><category></category></item><item><title><![CDATA[判断单链表是否存在环，判断两个链表是否相交问题详解]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4752915</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4752915</guid><author>oceanlee2</author><pubDate>Sat, 31 Oct 2009 23:37:00 +0800</pubDate><description><![CDATA[  有一个单链表，其中可能有一个环，也就是某个节点的next指向的是链表中在它之前的节点，这样在链表的尾部形成一环。问题：1、如何判断一个链表是不是这类链表？2、如果链表为存在环，如果找到环的入口点？解答：一、判断链表是否存在环，办法为：设置两个指针(fast, slow)，初始值都指向头，slow每次前进一步，fast每次前进二步，如果链表存在环，则fast必定先进入环，而slow后进入]]></description><category></category></item><item><title><![CDATA[Unix/Linux服务端与客户端崩溃情况]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4752694</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4752694</guid><author>oceanlee2</author><pubDate>Sat, 31 Oct 2009 22:06:00 +0800</pubDate><description><![CDATA[1 正常建立连接： ·服务器端调用accept，客户端调用connect，客户端发送SYN包； ·服务器收到SYN包，回复ACK，并发送一个SYN包； ·客户端收到SYN包，从connect返回，发送SYN包的ACK。此时从客户端角度看，连接已建立，即进入 ESTABLISHED状态； ·服务器端收到ACK，此时从服务器角度来看，连接建立，进入ESTABLISH状态，然后从accept返 回； 由]]></description><category></category></item><item><title><![CDATA[几种排序算法的比较]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4731618</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4731618</guid><author>oceanlee2</author><pubDate>Tue, 27 Oct 2009 02:21:00 +0800</pubDate><description><![CDATA[1.插入排序：每次将一个待排的记录插入到前面的已经排好的队列中的适当位置。①.直接插入排序直接排序法在最好情况下（待排序列已按关键码有序），每趟排序只需作1次比较而不需要移动元素。所以n个元素比较次数为n-1，移动次数0。最差的情况下（逆序），其中第i个元素必须和前面的元素进行比较i次，移动个数i+1，所以总共的比较次数 比较多，就不写出来了总结：是一种稳定的排序方法，时间复杂度O(n^2]]></description><category></category></item><item><title><![CDATA[HTTP本身是一个无状态的连接协议]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4730645</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4730645</guid><author>oceanlee2</author><pubDate>Mon, 26 Oct 2009 20:43:00 +0800</pubDate><description><![CDATA[HTTP是Hyper Text Transfer Protocol的缩写，顾名思义，这个协议支持着超文本的传输。那么什么是超文本呢？说白了就是使用HTML编写的页面。通常，我们使用客户端浏览器访问服务器的资源，最常见的URL也是以html为后缀的文件。因此，我们可以说超文本是网络上最主要的资源。        既然HTTP协议的目的在于支持超文本的传输，更加广义一些就是支持资源的传输，那么在客户端]]></description><category></category></item><item><title><![CDATA[nat 穿透原理]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4684719</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4684719</guid><author>oceanlee2</author><pubDate>Sat, 17 Oct 2009 01:18:00 +0800</pubDate><description><![CDATA[nat 穿透原理其实很早我就已经实现了使用TCP协议穿透NAT了，但是苦于一直没有时间，所以没有写出来，现在终于放假有一点空闲，于是写出来共享之。     一直以来，说起NAT穿透，很多人都会被告知使用UDP打孔这个技术，基本上没有人会告诉你如何使用TCP协议去穿透（甚至有的人会直接告诉你TCP协议是无法实现穿透的）。但是，众所周知的是，UDP是一个无连接的数据报协议，使用它就必须自己维护收发]]></description><category></category></item><item><title><![CDATA[32位CPU所含有的寄存器]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4684541</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4684541</guid><author>oceanlee2</author><pubDate>Sat, 17 Oct 2009 00:49:00 +0800</pubDate><description><![CDATA[ebp和esp是32位的SP，BP  esp是堆栈指针     ebp是基址指针  ESP与SP的关系就象AX与AL，AH的关系.32位CPU所含有的寄存器有：4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) ]]></description><category></category></item><item><title><![CDATA[linux设备驱动加载方式]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4684157</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4684157</guid><author>oceanlee2</author><pubDate>Sat, 17 Oct 2009 00:11:00 +0800</pubDate><description><![CDATA[在类unix操作系统中，驱动加载方式一般分为：动态加载和静态加载，下面分别对其详细论述。一、动态加载动态加载是将驱动模块加载到内核中，而不能放入/lib/modules/下。    在2.4内核中，加载驱动命令为：insmod ,删除模块为：rmmod；    在2.6以上内核中，除了insmod与rmmod外，加载命令还有modprobe；    insmod与modprobe不同之处：    ]]></description><category></category></item><item><title><![CDATA[strcpy()、memcpy()、memmove()、memset()的实现]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4657989</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4657989</guid><author>oceanlee2</author><pubDate>Mon, 12 Oct 2009 13:06:00 +0800</pubDate><description><![CDATA[strcpy(), 字符串拷贝.char *strcpy(char *strDest, const char *strSrc){    assert((strDest!=NULL) && (strSrc !=NULL));    char *address = strDest;        while( (*strDest++ = * strSrc++) != /0)  NULL ;    ]]></description><category></category></item><item><title><![CDATA[MySQL内存使用 - 全局共享]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4573124</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4573124</guid><author>oceanlee2</author><pubDate>Sun, 20 Sep 2009 16:58:00 +0800</pubDate><description><![CDATA[接着之前的一篇“ MySQL 内存使用-线程独享”，再写一篇 MySQL 全局共享内存的使用介绍。 全局共享内则主要是 MySQL Instance（mysqld进程）以及底层存储引擎用来暂存各种全局运算及可共享的暂存信息，如存储查询缓存的 Query Cache，缓存连接线程的 Thread Cache，缓存表文件句柄信息的 Table Cache，缓存二进制日志的 BinLog Buffer，]]></description><category></category></item><item><title><![CDATA[MySQL内存使用-线程独享]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4573105</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4573105</guid><author>oceanlee2</author><pubDate>Sun, 20 Sep 2009 16:51:00 +0800</pubDate><description><![CDATA[对于任何一个数据库管理系统来说，内存的分配使用绝对可以算的上是其核心之一了，所以很多希望更为深入了解某数据库管理系统的人，都会希望一窥究竟，我也不例外。 从内存的使用方式MySQL 数据库的内存使用主要分为以下两类 * 线程独享内存 * 全局共享内存 今天这篇文章暂时先分析 MySQL 中主要的 “线程独享内存” 的。 在 MySQL 中，线程独享内存主要用于各客户端连接线程存储各种操作的独享数据]]></description><category></category></item><item><title><![CDATA[linux和unix下常用解压和压缩命令]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4553144</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4553144</guid><author>oceanlee2</author><pubDate>Tue, 15 Sep 2009 01:12:00 +0800</pubDate><description><![CDATA[linux和unix下常用解压和压缩命令  .tar解包： tar xvf FileName.tar打包：tar cvf FileName.tar DirName（注：tar是打包，不是压缩！）---------------------------------------------.gz解压1：gunzip FileNa]]></description><category></category></item><item><title><![CDATA[ ftok () 函数介绍]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4539503</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4539503</guid><author>oceanlee2</author><pubDate>Thu, 10 Sep 2009 16:04:00 +0800</pubDate><description><![CDATA[系统建立IPC通讯（如消息队列、共享内存时）必须指定一个ID值 。通常情况下，该id值通过ftok函数得到 。ftok原型如下：key_t ftok( char * fname, int id )参数说明：                fname就时您指定的文档名                id是子序号。返回值：                在一般的UNIX实现中，是将文档的索]]></description><category></category></item><item><title><![CDATA[关于epoll的小应用]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4536464</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4536464</guid><author>oceanlee2</author><pubDate>Wed, 09 Sep 2009 17:55:00 +0800</pubDate><description><![CDATA[epoll用到的所有函数都是在头文件sys/epoll.h中声明的，下面简要说明所用到的数据结构和函数：　　所用到的数据结构　　typedef union epoll_data {　　void *ptr;　　int fd;　　__uint32_t u32;　　__uint64_t u64;　　} epoll_data_t;　　struct epoll_event {　　__uint32_t eve]]></description><category></category></item><item><title><![CDATA[Determining IP information for eth0... failed; no link present ]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4489334</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4489334</guid><author>oceanlee2</author><pubDate>Thu, 27 Aug 2009 12:08:00 +0800</pubDate><description><![CDATA[       red hat 9装在虚拟机vmware上之后，连接网络是出现问题 Determining IP information for eth0... failed; no link present. Check cable？    这个问题，搞了很长时间，一直以为是自己的设置没设对，最后发现是redhat的一个bug，考，郁闷。解决方法：到/etc/sysconf]]></description><category></category></item><item><title><![CDATA[一个关于临时对象的BUG]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4462606</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4462606</guid><author>oceanlee2</author><pubDate>Wed, 19 Aug 2009 13:01:00 +0800</pubDate><description><![CDATA[一个关于临时对象的BUG　　我相信任何一个使用C++超过一定时间的程序员都不会否认这样一个事实：使用C++需要有足够的技巧。它充满了有各种各样的难以识别的陷阱，顷刻就可以让一段看起来毫无破绽的代码崩溃。例如，对C/C++的新手而言，学会如何考虑对象的生存期就是他们必须跨越的一个障碍，这方面最典型的问题，就是对对象指针的使用，特别是在使用一个已经被删除了的对象指针的时候：　　MyClass *mc ]]></description><category></category></item><item><title><![CDATA[Unix/Linux字符乱码解决方案]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4450359</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4450359</guid><author>oceanlee2</author><pubDate>Sat, 15 Aug 2009 20:42:00 +0800</pubDate><description><![CDATA[安装系统时如果选择是English时，系统编码是en_US(中文乱码）安装系统时如果选择是中文安装时，系统编码是UTF-8（服务级命令是乱码） 1）用locale查看目前系统的语言编码2）用locale -a查看系统支持的语言编码3）LANG=zh_CN.UTF-84)如果是乱码，则安装系统盘里(系统.ISO/Server/）的rpm -ivh fonts-chines]]></description><category></category></item><item><title><![CDATA[字符编码简介：ASCII，Unicode，UTF-8，GB2312 ]]></title><link>https://blog.youkuaiyun.com/oceanlee2/article/details/4450339</link><guid>https://blog.youkuaiyun.com/oceanlee2/article/details/4450339</guid><author>oceanlee2</author><pubDate>Sat, 15 Aug 2009 20:33:00 +0800</pubDate><description><![CDATA[字符编码简介：ASCII，Unicode，UTF-8，GB23121. ASCII码我们知道，在计算机内部，所有的信息最终都表示为一个二进制的字符串。每一个二进制位（bit）有0和1两种状态，因此八个二进制位就可以组合出256种状态，这被称为一个字节（byte）。也就是说，一个字节一共可以用来表示256种不同的状态，每一个状态对应一个符号，就是256个符号，从0000000到1111111]]></description><category></category></item></channel></rss>