如何一步步学习开发服务器
因为题目中提到了Nginx和Tengine,所以这里假设是Linux下面的HTTP服务器的开发。
HTTP服务器开发是个漫长的体力活,如果真的想做下去,必须要有强烈的兴趣支撑。但是除此之外,HTTP服务器开发并没有什么特别高深的算法在里面,好好努力的话,做出来自己的HTTP服务器也并不是一件太难的事。
需要准备的有:
扎实 的C语言编程基础。相信到了大三的时候,你已经有了几年的变成经验,但是对于开发HTTP服务器来说,还是远远不够。课本中会给你C语言的一个大概讲解,但是在现实世界中,还是会有很多课本中覆盖不到的地方。因为你已经在阅读Nginx的代码了,所以建议你首先检查一下代码中是否有不认识的C语言语法和用法。如果有,那么就自己Google学习一下。如果没有,那么说明你的C语言学的足够好,不存在语言层面上的问题。接下来,非常推荐学习一下这本经典的The Practice of Programming。学校里学习到的知识太书本化,代码又太专业,不好懂。这本书能帮你在两者之间找一个平衡,读了之后就会知道很多地方为什么要这么做。
C语言准备的差不多了之后,可以开始准备网络编程的知识。Unix Network Programming的确是本好书,但是问题在于,它太厚了。对于初学者来说,它提供的东西太多了。从实用的角度,我更推荐Beej’s Guide to Network Programming,不太长,但是涵盖了网络编程的基本上所有常用的内容。全部读完也不过几个小时的时间。UNP可以用来在修炼的差不多了之后用来做参考书。或者用来学习网络编程中具体某个细节的知识。
接下来,因为是要写HTTP服务器,所以对HTTP协议需要有很深入的了解。当然最权威的资料就是一系列的RFC,比如HTTP 11的hwww ietforg/rfc/rfc2616txt。这时候就到了最开始讲的体力活的地方。不断的仔细阅读RFC,然后把它讲到的内容全部用代码实现一遍。当然,也有偷懒的办法,直接使用现有的HTTP解析库,比如h2o/picohttpparser · GitHub。
另外,关于Nginx的架构设计,Andrew Alexeev在 The Architecture of Open Source Applications (Volume 2): nginx里面讲的很清楚。这个会对你读代码有很大的帮助。
Java游戏开发要学什么?所谓的游戏开发编程语言其实有很多,基本上任何一种语言都可以作为游戏服务器的编程语言。这需要根据自己游戏的类型和要求加以选择。比如C++,Java,Erlang,go等等。目前我用过的只有C++和Java但是以Java为主。所以接下来就以自己的经验,谈谈以Java为核心的游戏服务器开发技术体系。
Java目前作为游戏服务器开发语言已经很是普遍。但是大多数是作为页游或手游的服务器,而端游戏一般选择C++,因为端游对服务器的性能要求相对比较高一些。两种语言各有利弊。C++效率高,但是掌握度难些。没有Java易于掌握。而目前对于追求快速上线率的页游和手游来说,Java成了一个不错的选择。
一、Java的技术系统
需要学习的技术:
(1)Java基础知识
(2)JavaNIO编程
(3)Netty,Mina网络框架精通一种,其它作为了解。
(4)一种缓存框架:Redis;memcache熟悉使用一个。
(5)SQL语言,用于数据库:mysql数据库
(6)springmvc主要用于http协议的服务器
(7)多线程编程,明白线程安全的重要性。
(8)Java并发集合的掌握。
(9)Linux常用的基本命令及shell脚本。
(10)数据库操作,比如mybatis。
以Java为服务器编程语言来说,掌握Java的基本知识就不必说了,是必不可少的。可以参考《Java编程思想》,《Java核心技术》等书。根据游戏通信协议的不同,大致有两种实现方式:Socket和http。先说简单些的http协议,这个协议已经很成熟的应用到了网站上。而Java语言也可以用于网站开发,所以相当就简单些。现在有很多开源的服务器软件,比如:tomcat,resin等。游戏前端不管是页游flash,还是手游的Android,IOS都支持http协议,只要把游戏的逻辑数据按post方法向服务器发出请求即可了。
二、学习流程
当然了,学习这些东西并不是一蹴而就的。需要根据实践循环渐进,这里推荐一个学习流程:
(1)对于初学Java的人来说,如果自学能力好些,可以买些书自己练习,而现在又更的多选择参加Java培训机构,以快速的掌握Java的知识。
(2)掌握了Java知识之后,要多写代码实践。这个时候可以结合mysql学习SQL语言,掌握数据库的操作。比如用springmvc写一个小网站,用mybatis实现网站数据的增,删,改,查等功能。
(3)完成上步之后,可以在服务器程序和数据库之间加一个缓存,学习redis或memcache。
(4)把程序部署到linux服务器上,练习linux的基本命令及shell脚
免责声明:内容来源于公开网络,若涉及侵权联系尽快删除!
根据游戏类型的不同,所学的软件也不一样。
中小型游戏大致可分为网页游戏,flash游戏,小游戏等,基本上都是一些休闲类的傻呆萌的情节和操作。
这类游戏开发相对比较简单,会Javascript、HTML、flashcs、Java就可以进行开发了,语言类主要有C/C++,汇编语言,着色器语言,脚本语言,高效的开发语言C#或Java。
现在的游戏主要分为三种:
1、PC类端游(就是电脑上面运行的游戏)
这类游戏在线人数多,游戏中要处理的数据庞大。所以对服务器性能要求非常高,一般都是采用C++做为开发语言,C++可以直接操作内存数据,与操作系统直接交互,减少数据之间的复制,它运行效率高,处理速度快,是很适合这里游戏开发语言。
学习这种游戏的开发,学习的有C++编程,Linux网络编程、TCP/IP通讯协议、多线程编程再加数据库。
PC类端游戏开发周期较长。大概需要三年左右的时间。
2、网页游戏(比如现在经常说的1刀999级)
因为是网页游戏,游戏的界面展示依赖于网络传输,所在在画面和特效上会次于客户端游戏很多。和端游类是差不多是一样的,有些公司之前是做端游的,他们就直接把端游的服务器架构拿来就可以使用,以完成快速开发。
需要学习内容和端游差不多。
3、手机游戏(主要区分为安卓和IOS)
手机类游戏目前是最热门的游戏,很多热播的电视剧或者**之后,都会有相同情节的手游上线。
服务器主流的开发语言是C++和Java,但是C++学习难度大,开发速度慢。一般来说我们都是使用Java语言来开发服务器。
扩展资料:
学习的先后顺序
1、首先是C++语言。
2、只是做windows方面的游戏学习,可以学习下DirectX,这个很方便在windows下做游戏开发。
3、如果想制作跨平台游戏,建议学习下opengl/opengles,这是个很强大很专业的图形接口,因为很多平台支持所以适合跨平台游戏制作使用。
4、想学习3d游戏并迅速工作,建议学习u3d引擎、ue引擎这些游戏引擎,有了以上的基础学习这些引擎也可以理解的更深入,u3d还会用到c#与js语言。
5、做2d游戏,可以使用cocos2dx等一些引擎,当然你也可以使用上面的3d引擎制作2d游戏。
6、然后就是可以深入的研究一些开源的游戏引擎,终极目标是可以自己做出一款比较棒的游戏引擎。
0条评论