原创 指針類
template <class T> class CRefObject { protected : T* m_pRefObj; public : CRefObject() : m_pRefObj(NULL) { } CRefOb
原创 Linux讀取文件到jsoncpp
Json::Value conf; int file=::open("pathname",O_RDONLY); if(file<0) return -1; struct stat statbuf;//文件狀態結構體 if(::fstat
原创 對象池
#ifndef OBJECT_POOL_H_ #define OBJECT_POOL_H_ #include "Thread_Mutex.h" #include "Mutex_Guard.h" #include "Lib_Log.h"
原创 lua的table默認值賦值
--[[ table 的弱引用,給table賦默認值 --]] --------------------------------------------------------------------方法一--------------
原创 遊戲開發流程
遊戲服務器開發技術小結1 概述本文從開發者的視角,淺析遊戲服務器開發涉及到的幾個技術層面,並說明這幾個層面我們可以選擇的解決方案。一般地,會把遊戲服務器的架構劃分如下三層:網絡接入層、遊戲邏輯層、數據存儲層,這樣劃分的主要目的是:將底層通
原创 lua中模塊的加載
lua文件的本質是一個函數一:require 機制在加載一個.lua文件時,require會先在package.loaded中查找此模塊是否存在,如果存在,直接返回模塊。如果不存在,則加載模塊文件。require的特點是僅加載一次,並且對
原创 lua中的錯誤處理
Lua中處理錯誤,可以使用函數pcall(protected call)來包裝需要執行的代碼。pcall接收一個函數和要傳遞個後者的參數,並執行,執行結果:有錯誤、無錯誤;返回值true或者或false, errorinfoif pcal
原创 異步實現方式三:協程
協程的實現依賴於時間片的分隔 協程就是用戶態的線程”,Lua協程是非搶佔式的多線程,必須手動在不同的協程間切換,且同一時刻只能有一個協程在運行,相當於單線程的能力。線程確實比協程的性能更好,因爲線程能利用多核達到真正的並行計算,
原创 併發和並行,多線程和多進程,單核和多核,同步和異步的關係
併發:擁有處理多個任務的能力,不一定要同時,不同代碼塊交替執行的性能,可以串行處理也可以並行處理並行:同時處理多個任務的能力,不同代碼塊同時執行的性能串行:指多個任務時,各個任務按順序執行,完成一個之後才能執行下一個同步:所謂同步,就是在
原创 ZeroMQ
1 ZeroMQ概述 ZeroMQ是一種基於消息隊列的多線程網絡庫,其對套接字類型、連接處理、幀、甚至路由的底層細節進行抽象,提供跨越多種傳輸協議的套接字。ZeroMQ是網絡通信中新的一層,介於應用層和傳輸層之間(按照TCP/IP劃分)
原创 算法分析
一般而言,需要考慮的因素有以下四點: 1.待排序的記錄數目n的大小; 2.記錄本身數據量的大小,也就是記錄中除關鍵字外的其他信息量的大小; 3.關鍵字的結構及其分佈情況; 4.對排序穩定性的要求。 設待排序元素的個數爲n1)
原创 Linux 字符串截取
Linux 的字符串截取很有用。有八種方法。假設有變量 var=http://www.aaa.com/123.htm.1 . # 號截取,刪除左邊字符,保留右邊字符。複製代碼 代碼如下:echo ${var#*//}1其中 var 是變量
原创 編寫高性能的lua代碼
使用local在代碼運行前,Lua會把源碼預編譯成一種中間碼,類似於Java的虛擬機。這種格式然後會通過C的解釋器進行解釋,整個過程其實就是通過一個while循環,裏面有很多的switch...case語句,一個case對應一條指令來解析
原创 數據庫分析與選擇
關係型數據庫遵循ACID規則 事務在英文中是transaction,和現實世界中的交易很類似,它有如下四個特性: 1、A (Atomicity) 原子性 原子性很容易理解,也就是說事務裏的所有操作要麼全部做完,要麼都不做,事務成功