程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> 基於linux下C開辟中的幾點技巧經歷總結

基於linux下C開辟中的幾點技巧經歷總結

編輯:關於C++

基於linux下C開辟中的幾點技巧經歷總結。本站提示廣大學習愛好者:(基於linux下C開辟中的幾點技巧經歷總結)文章只能為提供參考,不一定能成為您想要的結果。以下是基於linux下C開辟中的幾點技巧經歷總結正文


比來分歧努力於linux下的C開辟,由於老邁是某訊出來的。是以,應用的重要技巧都是某訊的根本的後台架構想想。
在這段時光,進修到了許多,然後信服某訊的技巧果真很凶猛。
是以,自我感到,從頭開辟我們這個項目,到如今,隨著我這個年夜牛級的老邁學到了很多器械。
今朝在游戲裡的公會體系,義務體系,郵件體系,地圖,商城,等等許多年夜年夜小小的體系,都是由我來擔任了。
上面是我比來總結的一點點器械罷了,今後還會更多
1、時光
linux體系在時光上有比擬多的器械。在游戲裡,時光是一個異常主要的一個變量,觸及到前後端時光同步,游戲營業的倒計時,心跳等等的一系列功效點
等等,假如可以或許靈巧應用時光這個變量,最最少你要曉得以下幾個函數或許變量

    time_t 

這個變量實際上是一個long型,表現的是從一個時光點(普通是1970年1月1日0時0分0秒)到那時的秒數。對,目標是秒數。
在time.h文件中還有一些其他以其為參數的函數

在time.h頭文件中,我們還可以看到一些函數,它們都是以time_t為參數類型或前往值類型的函數:

double difftime(time_t time1, time_t time0);
time_t mktime(struct tm * timeptr);
time_t time(time_t * timer);
char * asctime(const struct tm * timeptr);
char * ctime(const time_t *timer);


給一個小例子

/* time example */
#include <stdio.h>      /* printf */
#include <time.h>       /* time_t, struct tm, difftime, time, mktime */
int main ()
{
  time_t timer;
  struct tm y2k;
  double seconds;
  y2k.tm_hour = 0;   y2k.tm_min = 0; y2k.tm_sec = 0;
  y2k.tm_year = 100; y2k.tm_mon = 0; y2k.tm_mday = 1;
  time(&timer);  /* get current time; same as: timer = time(NULL)  */
  seconds = difftime(timer,mktime(&y2k));
  printf ("%.f seconds since January 1, 2000 in the current timezone", seconds);
  return 0;
}

上面為了加倍准確
上面兩個類型也會常常應用到

struct timeval *a_pstTv, struct timezone *a_pstTz

當我們挪用

gettimeofday(&pstCtx->stCurr, NULL);

獲得到以後的時光
2、隨機數
隨機數在法式裡也是常常應用,隨機出來一個數,使一些工作看起來很有隨機性。
C說話今朝供給的是rand函數。那我們若何應用呢,看以下宏

#define RAND1(range)  ((int)((double)(range)*rand()/(RAND_MAX+1.0)))

這個宏隨機出了0到 rang-1中央的一個數。但我們想應用一個他來打亂我們的一個數組的次序的時刻,我們可以隨機出它的下標,然後用來與某個詳細的
元素好比,array[0]來交流。
3、數組與指針
這個話題是C說話的永遠的話題。就今朝我經常使用的一級二級指針,還不長短常的艱苦。經由過程取詳細數據內存的地址,來停止對數據的操作。
數組和指針之間的相互轉換,等成績
今朝特別是要留意的是三個函數

void * memcpy ( void * destination, const void * source, size_t num );
void * memmove ( void * destination, const void * source, size_t num );
void * memset ( void * ptr, int value, size_t num );

在第三個三參數sizeof的時刻必定要留意其數據塊的年夜小,和數據肇端地位
正告
在應用指針之前必定要記得確保指針為非空。
應用數組前,必定要留意數組越界行動。
4、奇妙應用回調函數
當我們體系須要挪用統一類型的函數時刻,就最好應用回調函數,停止注冊,然後依據敕令聯系關系的函數,停止詳細挪用,相似於c++的多態行動。異常值得應用。
5、算法算法照樣算法。
日常平凡寫代碼,要多思慮,多動腦認為如許寫好欠好,應用詳細算法會不會更好,會不會進步效力,省空間等等。
6、後台法式記住,數據庫是瓶頸,所以和數據庫打交到的時刻,要應用異步思惟,把數據丟給數據庫,法式該干嗎干嗎,
曉得能否勝利,就是必需要確保必定會回來一個數據標志,告知我們法式。
明天就想到這麼多,寫這麼多。持續盡力加油。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved