当前位置:  编程技术>c/c++/嵌入式

基于linux下C开发中的几点技术经验总结

    来源: 互联网  发布时间:2014-10-17

    本文导语:  最近一致致力于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       /* printf */
#include        /* 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、后台程序记住,数据库是瓶颈,所以和数据库打交到的时候,要使用异步思想,把数据丢给数据库,程序该干嘛干嘛,
知道是否成功,就是必须要确保一定会回来一个数据标记,告诉我们程序。
今天就想到这么多,写这么多。继续努力加油。

    
 
 

您可能感兴趣的文章:

  • linux下编译ACE5.7.5(总结)
  • 求Linux和Windows异同总结,顺便散分
  • linux进程间通讯方式(IPC)优缺点总结
  • Linux Shell 常见的命令行格式简明总结
  • Linux下Oracle常见安装错误总结及参考案例
  • Linux中执行shell脚本的4种方法总结
  • linux服务器之LVS、Nginx和HAProxy负载均衡器对比总结
  • Linux pidof命令使用总结
  • 个人编程学习总结以及Linux开发方向和国内相应具体情况讨教?
  • 最近心情不好,散分总结自己的生活&Linux历程
  • 我的总结,RedHat linux9.0新手遇到的问题,大家过来帮忙解决,好多问题,也许你会其中的几个。
  • 自己总结的linux使用技巧
  • Linux Shell中的特殊符号和含义简明总结(包含了绝大部份)
  • 深入linux下遍历目录树的方法总结分析
  • 有WINDOWS编程经验的人想学LINUX及开发,该怎么学,请有经验的指教
  • 恳请对服务器的开发有经验的谈谈服务器开发经验(Unix/Linux & Win32):服务器构架、内存泄漏检测,异常出错……!!!
  • 没有LINUX经验如何获得一份LINUX工作
  • 请教 Linux 手机 DIY 编程的办法及经验
  • 想在linux下学习oracle,有经验的高手们给点建议。
  • 请有经验的朋友推荐一下Linux/Nnix下网络编程方面的书,急需学习
  • 这里有一个linux论坛。(后备力量全是Linux开发有经验的程序员)
  • 想学习linux环境下的IM server/client 开发,请有经验的朋友指点一下!
  • 嵌入式linux学习经验
  • Unix/Linux下的开发经验,谁有这方面面试题.
  • 请教有实战经验的大虾们关于Linux做安全路由或网关服务器的问题!
  • 求助!如何在linux中移植SOAP协议?有经验的朋友提供一点建议
  • 求有过公司linux解决经验的高手指点!!!
  • 高薪求Linux开发高手,可兼职,有开发经验的进来看看
  • 请有配置Linux下ftp服务器经验的人和我联系,高分重赏 (OICQ:57226475)
  • 想通过自己动手学习Linux网络编程,做一个什么比较好呢?望有经验的高手指点~~
  • 招聘: 嵌入式linux工程师,1-2年工作经验,熟悉QT
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux 下c++开发error while loading shared libraries问题解决
  • 我常未开发过Linux下的程序,请问Linux下可以使用那些开发工具,最好的开发工具是什么版本?
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • 嵌入式linux开发与防火墙系统linux开发
  • 我的总结,RedHat linux9.0新手遇到的问题,大家过来帮忙解决,好多问题,也许你会其中的几个。 iis7站长之家
  • linux下用java开发是不是JB就可以,JAVA在LINUX下开发有优势吧!
  • linux 嵌入式开发用不用买开发板,买什么样的开发板?
  • 谁知道国内有那些公司在linux平台上做开发的,或开发linux软件的?
  • 作 Linux/Unix开发 应该从何处入手?致力于Linux开发的迷惑???欢迎讨论。
  • 我是学习web开发的,主要是java开发SSH开发框架和ajax等。我想知道有没有必要学习一下linux相关知识。
  • 请问在Linux 下用C开发移动增值软件都有什么开发工具啊,我以前一直在Windows下用VC开发
  • 请问大家 在linux下开发嵌入式linux用什么集成开发环境?
  • linux 嵌入式开发用买开发板吗?
  • 请问LINUX下开发大家一般都是什么开发环境?
  • 我想在Linux下开发,不知道用什么工具、什么开发语言??
  • 各位设备驱动开发的朋友,请问,linux设备驱动开发和网络编程开发哪一样工资比较高呀?
  • 强烈建议将linux/Unix栏目放到“软件开发者”大类里面来。----Unix开发的人助威支持!!!
  • 关于linux内核开发和应用开发的区别
  • 学习linux驱动开发,买什么开发板好?
  • 请问在哪下载嵌入式Linux开发平台???想学嵌入式开发!!!
  • 从windows开发转Linux开发 的前辈请进!!!
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3