原创 指針類

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) 原子性   原子性很容易理解,也就是說事務裏的所有操作要麼全部做完,要麼都不做,事務成功