一个简单的游戏服务器框架

最近一段时间不是很忙,就写了一个自己的游戏服务器框架雏形,很多地方还不够完善,但是基本上也算是能够跑起来了。我先从上层结构说起,一直到实现细节吧,想起什么就写什么。
继续阅读 »

一个进程池的服务器程序

下面做了非常简单的http服务器,该服务器只能接收Get请求。
流程大概如下:
1,父进程listen,创建pipe(下面所有父子进程之间的通信都用该pipe)
2,父进程预fork n个子进程
3,各个子进程accept(listenfd),即所有子进程竞争accept请求。由于listenfd是在fork之前就有的,所以所有子进程都可以访问到,不需用到“进程间文件描述符传递”问题;
4,子进程每accept到一个请求都告诉父进程,父进程把请求数加1;子进程没完成一个请求,父进程把请求数减1;当父进程发现请求数 >= 子进程数时,父进程创建新的子进程,并把子进程数加1(当然子进程数有个预先上限);当父进程发现子进程数大于请求数加1时,父进程杀死多余的子进程。
总的来说,思想是让子进程accept并处理请求,父进程通过子进程发来的信息控制请求数与子进程数之间的关系。
继续阅读 »

Git删除远程Tag、分支

删除远程分支

git branch -r -d origin/branch-name
git push origin :branch-name
删除远程Tag

显示本地 tag
git tag
Remote_Systems_Operation
删除本地tag
git tag -d Remote_Systems_Operation
用push, 删除远程tag
git push origin :refs/tags/Remote_Systems_Operation

QTE中如何支持GIF、JPEG等格式图片

1. ./configure配置QTE的时候需要添加相应的参数:-qt-gif -qt-libjpeg
2. 交叉编译,安装完成后,在安装目录中有 plugins/imageformats 这样的目录,里面有libqgif.so,libqjpeg.so等动态库文件。
3. 在目标板上某目录内建立插件目录plugins/imageformats(如:/usr/lib/plugins/imageformats),再将libqgif.so, libqjpeg.so等文件复制进来。
4. 在QT应用程序中,main函数刚开始的地方添加代码:QApplication::addLibraryPath(“/usr/lib/plugins”);
5. done!
继续阅读 »

移植mysql到嵌入式ARM平台

MySQL没有专门针对ARM的版本,移植到ARM没有官方文档可参考,因此,暂时参考这样一篇文档: http://blog.chinaunix.net/space.php?uid=9701860&do=blog&id=285428,因为MySQL5.5之后,编译是用的cmake不再使用./configure,因此,只好倒回支持./configure的版本来用,这里使用了文档上的5.1.51版本。进行如下步骤完成移植:
继续阅读 »

Linux ARM交叉编译工具链制作过程

一、下载源文件

源代码文件及其版本与下载地址:

Binutils-2.19.tar.bz2
http://ftp.gnu.org/gnu/binutils/
gcc-4.4.4.tar.bz2
http://mirrors.kernel.org/gnu/gcc/gcc-4.4.4/
Glibc-2.11.2.tar.bz2
Glibc-ports-2.11.tar.bz2
http://ftp.gnu.org/gnu/glibc/
Gmp-4.2.tar.bz2
http://ftp.gnu.org/gnu/gmp/
Mpfr-2.4.0.tar.bz2
http://ftp.gnu.org/gnu/mpfr/
Linux-2.6.29.tar.bz2
Patch-2.6.29.bz2
http://www.kernel.org/pub/linux/kernel/v2.6/
继续阅读 »

Crosstool-ng制作交叉编译工具链

交叉编译器可以用现成的,比如CodeSourcery制作的交叉编译器,也可以自己制作,一般是用kernel+gcc+glibc+binutils的源码包来编译安装,后来由于这个太麻烦于是就有类似crosstool这样的自动化配置工具。

现在之所以用crosstool-ng是因为crosstool-ng是新的用来建立交叉工具链的工具,它是crosstool的替换者。crosstool的gcc版本只能到4.1.1,无法编译版本高于2.6.29的linux内核。而crosstool-ng一直保持着更新,现在最新能够建立 gcc 4.3.2版本,可用来编译最新内核。
继续阅读 »

fork两次如何避免僵尸进程收藏

fork两次如何避免僵尸进程收藏
继续阅读 »

GDB调试信号、多线程、多进程

GDB的功能很强大,本文主要介绍用GDB来调试信号、多进程、多线程,具体如下:

(一)信号

GDB有能力在你调试程序的时候处理任何一种信号,你可以告诉GDB需要处理哪一种信号。你可以要求GDB收到你所指定的信号时,马上停住正在运行的程序,以供你进行调试。你可以用GDB的handle命令来完成这一功能。
继续阅读 »

建立交叉编译工具链

(1)下载交叉编译工具:arm-linux-gcc-3.4.5.tar.bz2
(2)解压:tar xvf arm-linux-gcc-3.4.5.tar.bz2,多出usr目录
(3)命令:mkdir /usr/local/arm/,创建arm交叉工具链,存放目录
(4)命令:mv usr/local/arm/3.4.5/ /usr/local/arm/,将交叉工具链移动到lusr/local/arm
(5)命令:vim /root/.bashrc,添加如下语句:export PATH=$PATH:/usr/local/arm/3.4.5/bin,这条语句将交叉编译工具链bin/目录的路径添加到环境变量PATH中。保存
(6)重新打开一个终端,输入arm,然后按tab键,如出现arm-linux-,则说明成功了