原创 高級IO select poll epoll

緩存IO:多數系統使用緩存IO,數據先拷貝到內核緩衝區,然後再從內核緩衝區拷貝到用戶空間。 所以一次IO的完整過程就是這兩步。阻塞IO:用戶進程一直等待數據操作全部完成才返回非阻塞IO:每次調用時立刻返回,用戶自己不斷詢問是否數據就緒,數

原创 Lua中require、dofile、loadfile的

可以說Lua之所以稱爲是一種解釋型的語言,正是因爲有諸如load這樣的函數,因爲這樣的函數使得Lua可以執行動態生成的代碼。下面具體來分析這些函數。  load函數   load函數原型如下: [plain] view plain 

原创 編碼格式簡介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)

編碼一直是讓新手頭疼的問題,特別是 GBK、GB2312、UTF-8 這三個比較常見的網頁編碼的區別,更是讓許多新手暈頭轉向,怎麼解釋也解釋不清楚。但是編碼又是那麼重要,特別在網頁這一塊。如果你打出來的不是亂碼,而網頁中出現了亂碼,絕大部

原创 lua TValue類型分析

Lua 中數據的基本結構 下面分析每個結構中各個字段的含義 TValue Tvalue中的tt 存儲了 當前數據的類型,在Lua中有8種基礎類型:nil、boolean、number、string、userdata、

原创 Lua table數據結構 算法分析

一、數據結構 1、Node next:當hash衝突時,next = 衝突的node位置 - 應該 2、Table lsizenode:hash數組大小 = 2^lsizenode node :指向hash部分 arraysize :數

原创 Lua中Userdata類型源碼實現

  1、概述    Lua中userdata分兩種,一種是輕量級userdata(light userdata),輕量級userdata是一種表示C指針的值,對Lua虛擬機來說,這種數據類型不需要GC(垃圾回收),其指向的內存由用戶分配和

原创 Lua 閉包 和upvalue

一、基本概念線程的所有打開upvalue(在堆棧上的upvalue) 都存放在L->openupvalue 當前函數的upvalue 的位置有兩種情況:是父函數的local變量是父函數的upvalue變量二、閉包創建:是父函數的up

原创 Lua GC 垃圾回收

GC原理:http://blog.csdn.net/yuanlin2008/article/details/8558103 https://blog.codingnow.com/2011/03/lua_gc_1.htmlluaC_full

原创 Linux下編譯連接mysql數據庫

1.在Linux下編譯連接mysql數據庫的程序時,需要使用安裝Mysql數據庫時自帶的mysql_config腳本。它會爲你編譯MySQL客戶端,並連接到MySQL服務器提供有用的信息.需要使用下面兩個選項: --libs 選項 - 連

原创 mysql配置安裝:

1:在mysql官網上下載mysql並安裝: #wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm #rpm -ivh mysql-comm

原创 內存字節對齊

寫出一個struct,然後sizeof,你會不會經常對結果感到奇怪?sizeof的結果往往都比你聲明的變量總長度要大,這是怎麼回事呢?講講字節對齊吧.   /******************************分割線 如果體系結構

原创 Lua 字符串TString數據結構即算法分析

這裏主要寫Lua中的字符串TString相關結構和算法。文章中沒有貼Lua源碼,只畫出了結構圖,和算法的僞代碼。這樣閱讀起來更加直觀。 一、TString的概述 1、lua中字符串是常量,例s = s .. 1 創建了一個新的字符串賦值給

原创 google protobuf與as3的通信協議

Protobuf是谷歌開發的一套用於序列化結構數據、溝通協議、數據儲存等用途的工具,具有語言無關性、平臺無關性、可擴展性等優點。 用於通信時,只要通信雙方都使用protobuf生成的協議代碼,就可以用於將數據序列化爲二進制數據或者

原创 lua _G 實現

  在Lua腳本層,Lua將所有的全局變量保存在一個常規的table中,這個table被稱爲全局環境,並且將這個table保存在一個全局變量_G中,也就是說在腳本中可以用_G獲取這個全局table,並且有_G._G == _G,在默認

原创 linux下core文件設置與查看

程序異常推出時,內核會生成一個core文件(是內存映像以及調試信息)。可以通過使用gdb來查看core文件,指示出導致程序出錯的代碼所在的文件和行數。  1、查看系統中core文件生成的開關是否打開     1)使用ulimit -