原创 ejabberd源碼分析《三》客戶端數據處理

參考 http://www.cnblogs.com/yjl49/archive/2011/09/02/2371964.html 1.客戶端連接服務器後,發送消息給服務器的xml數據處理在ejabberd_c2s中。    ejabbe

原创 node.js入門示例

1、控制檯版 Hello World 編輯文件hello_world.js var sys = require("util"); sys.puts("Hello world"); 執行:node hello_world

原创 無系統 nasm彙編貪喫蛇demo草稿

開發系統centos 6.5 64位,利用系統時鐘中斷和鍵盤中斷 源碼文件snake.s org 7c00h global start start: jmp entry # db 0x00 # db "helloO

原创 OpenGL入門博文精選

http://www.twinklingstar.cn/2015/1532/introduce-to-opengl/

原创 linux網絡編程之poll

#include<netinet/in.h> #include<sys/socket.h> #include<sys/poll.h> #includ

原创 lua CRC32校驗碼生成

1、普通文件(如壓縮文件)的crc32校驗碼計算方法: 生成多項式採用0xEDB88320 This polynomial ( 0xEDB88320L) DOES generate the same CRC values as

原创 ejabberd源碼分析《一》application啓動

什麼都別說,直接看啓動函數 start(normal, _Args)     %% ejabberd_logger主要是讀取application的配置文件,然後啓動lager,設置lager參數。     ejabberd_logg

原创 mnesia的鎖機制

一、基本概念1、mnesia的鎖不是操作系統級別的鎖; 2、一個mnesia結點中,所有的鎖由單獨的mnesia_locker進程進行管理; 3、其它進程對鎖的申請和釋放通過發送消息到mnesia_locker進程實現; 4、A進程請求

原创 如何判斷lua是不是一個純數組類的table

這種方式只用遍歷table一次,效果不錯 function isArrayTable(t) if type(t) ~= "table" then return false end local n

原创 centos安裝pomelo

1、安裝NPM(Node Package Manager,是一個NodeJS包管理和分發工具,已經成爲了非官方的發佈Node模塊(包)的標準) yum install npm 2、安裝node.js yum install nodejs

原创 ejabberd源碼分析《二》客戶端網絡監聽

在配置文件ejabberd.cfg的listen配置項裏,可以配置監聽模塊 由ejabberd_listener.erl負責啓動監聽 1、客戶端的連接 生成一個套接字以後,由ejabberd_c2s.erl調用 ejabberd_fro

原创 linux網絡編程之select

#include<stdio.h> #include<sys/select.h> #include<sys/types.h> #include<sy

原创 記錄lua的table轉string一個問題

      最近的項目開發中發現原有代碼的table2Str函數實現不對,一時偷懶從網上百度了一下。 選中了http://blog.csdn.net/xiaodan007/article/details/7096718這個地址的代碼用到了

原创 erlang模塊化對象用法

在erlang中,由於沒有變量的概念,生成一個結構以後不能夠修改,只能修改後生成新的結構。這樣持有一個對象變得比較困難。利用進程典存放生成的結構,通過ID進行索引,在生成結構時,返回{結構類型,ID},這樣就可以實現形如Player =

原创 skynet熱更新方案

    普通程序lua的熱更新:     lua的熱更新一般是比較方便的,比如下面一個模塊module.lua local module = {} function module:func() print("module:fun