原创 dynamic_cast, reinterpret_cast, static_cast and const_cast 學習

dynamic_cast, reinterpret_cast, static_cast and const_cast 在C語言中,經常會遇到類型轉換的一些東西。類型轉換分爲:顯示類型轉換和隱式類型轉換。 隱式類型轉換: 所謂隱式類型轉換就

原创 支持vector,map,list序列化,反序列化實現

本篇文章,主要介紹項目中用到的數據傳輸層上的協議打解包的操作。 貼一下我的代碼地址:http://code.taobao.org/p/msgPack/src/msgPack/ 一、支持 1.支持基本類型的序列化與反序列化 比如bool,u

原创 ]linux內核學習之網絡篇——接收分組

計算機處於網絡中,是不知道什麼時候會發過來數據,是不可預測的。因此,目前所有的現代設備驅動程序都是使用了中斷來通知內核的有 鏈路層的以太網幀到達。 驅動程序有特定的相應的程序,因此當有數據幀到達的時候,內核就會調用該程序。將數據從網卡上

原创 Linux 服務器後臺系統架構的高性能設計

因爲,目前在做遊戲的的後臺開發。儘管最近在忙於開發遊戲業務邏輯的的相關代碼,也在不停思考着遊戲後臺的一些架構問題。 因爲遊戲後臺處理着大部分的業務邏輯,因此。在性能上是必須的。 那麼如何盡最大的提高性能呢,下面根據我們後臺架構提出的幾

原创 linux內核學習之網絡篇——通過socket通信

通過網卡,讓我們能達到通信,對unix是相當的複雜,組要是socket每一層都是用了不同的通信協議,需要好多設置好多的選項。因此在/dev目錄下,並沒有網卡對應的文件。   socket不僅可以用於各種傳輸協議的IP的連接。也可以用於內核

原创 ngnix 源代碼學習(1)

一直想學習一個優秀的服務器源代碼,之前一直糾結在學apache還是ngnix,後來比較一下,還是學習ngnix比較好,因爲我目前致力於linux下的服務端軟件開發。 尤其是想學一下web服務器的開發。   第一,代碼量比較少,貌似就十萬行

原创 角色扮演類大型網絡遊戲C++後臺和純C語言後臺的差異

因爲一些原因,我從一個用c++做後臺程序的工作室轉到了用純C語言作爲遊戲後臺的工作室,   而這兩套後臺程序都可以號稱目前中國在角色扮演類遊戲中成熟的後臺架構。。c++的架構我已經基本已經很清晰了,因爲看了兩個月代碼。   而這套純C語言

原创 Linux 下C語言簡單實現線程池

C語言簡單實現線程池 0 前言 網上關於線程池的例子還是不少,簡單明瞭的倒是比較少,看了網上的資料,打算借鑑網上的一些例子,自己實現以下。 線程的概念就不多說,首先說一下多線程的好處:多線程技術主要解決處理器單元內多個線程執行的問題,

原创 信號量,互斥鎖和條件變量之間的差異

首先信號量,互斥鎖和條件變量 具體如何使用大家可以去學習UNP2進程間通信。裏邊以消費者生產者模型爲例子,講的很好,推薦大家學習。 信號量,互斥鎖和條件變量 在linux編程中,常用於線程間的同步。   在計算機中,一些資源在同一時間只允

原创 POSIX---linux多線程編程基礎入門。

      過年不回家了,一直在工作的地方呆着,就騰出了很多時間來學習了。前幾天騰訊給打電話,問了linux下的一些知識,但是答得很不好。自我分析了一下,總結如下: 1.知識學習一遍是遠遠不夠的。還是要多學習,多揣摩,多思考。 2.知識是

原创 如何提高遊戲後臺數據查找效率

在遊戲後臺中,內存的數據查找是一個很重要,也是關係到我們遊戲的後臺效率的問題。 在大量的數據中,我們如何讓我們的的程序能夠快速的查找到我們所想要的數據呢。那麼我們就要使用相應的算法了。 首先,我們所有使用的內存都是通過分配內存的方式,基

原创 Ngnix 源碼學習(3)----內存池結構

本篇首先把 內存池結構 大概的說一下,具體使用將在下一節細緻描述   首先知道內存池的作用     爲什麼需要內存池? a. 在大量的小塊內存的申請和釋放的時候,能更快地進行內存分配(對比malloc和free) b.減少內存碎片,防止

原创 linux內核學習之網絡篇——網絡物理層的設備初步

網卡是是網絡中最基本的硬件之一。 在內核中,每個網絡設備都一個一個net_device 結構體實例,在進行初始化完成之後,會將該結構註冊到內核中。然能內核知道該結構的存在。 這會創建一個sysfs項,這,關聯到該設備的對應目錄中。該目錄爲

原创 c語言實現的通用二分查找算法

// /* 二分查找是基於排好序的算法。複雜度低,並且很高效, 由於項目中大量使用的了二分查找,但是又不能每個業務實現一個 因此有必要實現一個通用的二分查找 其主要思想:通過對已經排好序的數組,進行數據指針的比較。 @con

原创 遊戲後臺開發九問--linux平臺

在遊戲中會遇到很多問題,下面大體總結: 這九個選擇分別是: 第一,選擇什麼樣的架構。 第二,選擇單線程還是多線程。 第三,如何在遊戲中使用腳本。 第四,如何處理網絡通訊。 第五,如何處理遊戲通信協議。 第六,如何設計存儲結