zoukankan      html  css  js  c++  java
  • 服务器开发的一点心得体会

    这段时间在公司做一款游戏服务器开发,开发过程中的一点体会记录下来,日后也是一点经验

    1.定时刷新机制,服务器中,要有不断定时刷新的措施,比如任务系统

    2.线程的管理和调度,一般使用线程池方案

    3.内存方面,为了提高性能,通常使用内存池,而不是频繁地动态分配内存

    4.数据包的设计,通常为 头部+数据包体 的方式,接受数据包时,先接受包头,然后根据包头描述的大小接收剩下的数据;

       数据包的内存表现上,为了节省空间,通常将数据按二进制形式串行化(或者说序列化)到Buffer中再发送。

     Google的protobuf是个很好的工具,虽然在此次项目中没有用到,以后可能会考虑使用。

    5.队列的运用,服务器中一般是多线程处理,队列的思想能够让逻辑变得清晰,服务器中经常用到,比如数据包队列。其实在Windows平台下,完成端口IOCP也是运用了队列 的思想

    6.避免竞争,将一个Socket或者连接的处理都放在一个线程中,不要让多个线程同时处理同一个socket

    7.日志系统,日志系统也可以运用线程和队列思想,可以考虑用跨平台的日志库,Log4cplus(Log4cxx),一款功能强大的开源C++日志库

    8.异步回调思想的运用,服务器中有时要处理的结果并不是马上能够获取到,会发生阻塞,比如数据库的查询和更新(数据库的插入和更新都很耗时)等,此时可以运用异步回调的方式提高性能。

    9.超时检测,有时候由于网络原因,客户端已经断线了,但服务器可能会很久都没收到信号,因此,定时的超时检测是很有必要的。

    10.状态机的运用,比如用户状态机,状态机的运用能够使得逻辑更清晰

    11.设计模式运用,用的比较多比如单例模式,观察者模式

  • 相关阅读:
    Oracle数据库入门——体系结构
    基础知识——CentOS7操作系统的安装图文教程
    Oracle数据库入门——基础知识
    Windows Server 2008 R2 64位操作系统安装Oracle 11g 64位数据库,在客户终端上安装Oracle 11g 32位,才能安装P/L Sql Developer并配置
    2. Mysql数据库的入门知识
    1. Mysql数据库的安装
    Excel制作考勤管理
    常用函数公式及技巧搜集
    调试C++NPv2_Select_Reactor_Log_Server程序
    调试C++NPv2_Reactor_Log_Server程序
  • 原文地址:https://www.cnblogs.com/knight-monkey/p/monkey_server_blog.html
Copyright © 2011-2022 走看看