原创 c++與遊戲開發學習書籍推薦

書籍: 《c語言程序設計》《C++ Primer》《數據結構與算法分析:C語言描述》《算法設計與分析基礎》 《深入理解計算機系統》 《Linux高性能服務器編程》《Linux多線程服務端編程》 《PC遊戲編程:網絡遊戲篇》 《遊戲引擎架構

原创 基於事件方式實現的高效網絡庫

一個網絡處理通常是我們通過epoll接收讀事件,然後從網絡層讀取數據放入緩存中,在從緩存中讀出數據,進行協議解析分發處理消息。一個消息過來通常是需要進行應答的,所以我們還需要將回覆信息進行封包發送到網絡層。 1、網絡接收相對比較慢,消息傳

原创 c++ 實現高效緩存(鏈式buffer)

如果我們從網絡端接收的數據是不定長度的,不能提前分配好網絡緩存大小,則可以選擇使用鏈式緩存的實現方式。鏈式緩存主要是分配固定大小的緩存鏈保存數據,一個管理器去管理這些緩存鏈。 鏈式緩存示例: //一種鏈式緩衝 //ringbuffer是

原创 go語言學習-找出重複行

程序 package main import ( "bufio" "fmt" "os" ) func main() { counts := make(map[string]int) input := bufio.NewSc

原创 go語言學習-併發獲取多個url

package main import ( "fmt" "io" "io/ioutil" "net/http" "time" ) var https = []string{"https://www.baidu.com",

原创 VS跨平臺編譯-根據vcxproj生成cmake文件

# -*- coding: UTF-8 -*- # 根據vcxproj生成cmake文件,便於linux下程序編譯 import os import sys import xml.etree.ElementTree as ET imp

原创 go語言學習-簡單實現一個web服務器

package main import ( "fmt" "log" "net/http" "sync" ) var mu sync.Mutex var count int func main() { http.Handl

原创 unity3d 學習資料

Unity官方教程合集  入門級別: 滾動小球教程 (Roll-a-ball tutorial) - https://www.bilibili.com/video/av31982623 太空射擊遊戲 (Space Shooter tuto

原创 c++完整實現地圖尋路A星算法

A星尋路算法的講解有很多,這裏不再論述,只給出實現程序。 AStar.h #pragma once #include <vector> #include <map> #include <queue> // 二維地圖A*算法實現 co

原创 c++ 實現對象池

c++ 簡單實現一個管理對象池 ObjPool.h #pragma once #include <iostream> #include <queue> #include <memory> using namespace std; s

原创 c++ 獲取socket接收緩存大小

#ifdef SF_PLATFORM_WIN u_long readn = DEFAULT_SOCKET_READ_LEN; if (sf_ioctlsocket(fd, FIONREAD, &readn) < 0) retur

原创 基於事件驅動網絡服務器實現

socket 的事件類型有 讀事件(socket鏈接也屬於讀事件)、寫事件、socket 關閉事件 事件處理方式無非就是添加事件、刪除事件、分發執行事件 大致邏輯就是: 事件驅動的網絡實現邏輯 Loop:     EventOp->d

原创 c++ filesystem 使用

string path = "./"; for (auto it : directory_iterator(path)) { cout << it.path() << endl; } if (exists(path))

原创 c++實現A*算法

A星尋路算法的講解有很多,這裏不再論述,只給出實現程序。 AStar.h #pragma once #include <vector> #include <map> #include <queue> // 二維地圖A*算法實現 co