想请问一下做java游戏服务器的应该怎么学。
光说不练假把式
要自己一边写程序一边学习自己需要用到的东西
游戏一定要多人登陆
这个多线程就一定要强
基本用socketserver 和 socket
IO流应用好了就没什么问题
1LoadRunner:支持多种常用协议多且个别协议支持的版本比较高;可以设置灵活的负载压力测试方案,可视化的图形界面可以监控丰富的资源;报告可以导出到Word、Excel以及HTML格式。
2WebLoad:webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能用户创建的是基于javascript的测试脚本,称为议程agenda,用它来模拟客户的行为,通过执行该脚本来衡量web应用程序在真实环境下的性能。
3E-Test Suite:由Empirix公司开发的测试软件,能够和被测试应用软件无缝结合的Web应用测试工具。工具包含e-Tester、e-Load和e- Monitor,这三种工具分别对应功能测试、压力测试以及应用监控,每一部分功能相互独立,测试过程又可彼此协同。
4QALoad:(1)测试接口多;(2)可预测系统性能;(3)通过重复测试寻找瓶颈问题;(4)从控制中心管理全局负载测试;(5)可验证应用的扩展性;(6)快速创建仿真的负载测试;(7)性能价格比较高。此外,QALoad不单单测试Web应用,还可以测试一些后台的东西,比如SQL Server等。只要它支持的协议,都可以测试。
5Benchmark Factory: 首先它可以测试服务器群集的性能;其次,可以实施基准测试;最后,可以生成高级脚本。
6JMeter:是开源测试工具,专门为运行和服务器负载测试而设计、100%的纯Java桌面运行程序。原先它是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和HTTP和SQL(使用JDBC)的模块一起运行。它可以用来测试静止或活动资料库中的服务器运行情况,可以用来模拟服务器或网络系统在重负载下的运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。
7WAS:是Microsoft提供的免费的Web负载压力测试工具,应用广泛。WAS可以通过一台或者多台客户机模拟大量用户的活动。WAS支持身份验证、加密和Cookies,也能够模拟各种浏览器和Modem速度,它的功能和性能可以与数万美元的产品媲美。
8ACT:或称MSACT,它是微软的Visual Studio和Visual Studionet带的一套进行程序压力测试的工具。ACT不但可以记录程序运行的详细数据参数,用图表显示程序运行情况,而且安装和使用都比较简单,结果阅读方便,是一套较理想的测试工具。
9OpenSTA:它的全称是Open System Testing Architecture。OpenST的特点是可以模拟很多用户来访问需要测试的网站,它是一个功能强大、自定义设置功能完备的软件。但是,这些设置大部分需要通过Script来完成,因此在真正使用这个软件之前,必须学习好它的Script编写。如果需要完成很复杂的功能,Script的要求还比较高。当然这也是它的优点,一些程序员不会在意编写Script的。
10 PureLoad:一个完全基于Java的测试工具,它的Script代码完全使用XML。所以,编写 Script很简单。它的测试包含文字和图形并可以输出为HTML文件。由于是基于Java的软件,因此PureLoad可以通过Java Beans API来增强软件功能。
这个不知道你用UDP 还是TCP ,不过为了效率一般都是有UDP的,而决定了用UDP,接收的代码都是一样的,无非就是循环的接收数据包,所以解决高并发的重点不在怎么写Socket 这些代码,而是在于游戏的底层的数据交换,为了高效一般不用object IO(尽管这样方便编程)而是直接处理byte数组。还有对游戏本身的优化也是解决高并发的方案,最好是能优化的都优化。
总的来说解决高并发,就是要提高系统本身的效率而不是只盯着网络这一点不放。要写出高效的系统要下的功夫可深着呢,加油吧
三大框架:Struts+Hibernate+Spring
Java三大框架主要用来做WEN应用。
Struts主要负责表示层的显示
Spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作)
Hibernate主要是数据持久化到数据库
再用jsp的servlet做网页开发的时候有个webxml的映射文件,里面有一个mapping的标签就是用来做文件映射的。当你在浏览器上输入URL得知的时候,文件就会根据你写的名称对应到一个JAVA文件,根据java文件里编写的内容显示在浏览器上,就是一个网页。
一 Struts框架:struts是开源软件。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。
1.流程:服务器启动后,根据webxml加载ActionServlet读取struts-configxml文件内容到内存。
2.架构:Struts对Model,View和Controller都提供了对应的组件。ActionServlet,这个类是Struts的核心控制器,负责拦截来自用户的请求。
Model部分:由JavaBean组成,ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionFrom里面的请求参数处理用户的请求。JavaBean则封装了底层的业务逻辑,包括数据库访问等。
View部分:该部分采用JSP实现。Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。
Controller组件:Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。 系统核心控制器,对应上图的ActionServlet。该控制器由Struts框架提供,继承HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用Model来完成处理。对应Action部分。
二.Spring框架
Spring是一个解决了许多在J2EE开发中常见的的问题的强大框架。Springle提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类变成的好习惯。Spring的架构基础是基于使用JavaBean属性的Inversion of Control 容器。然而Spring在使用IoC容器作为构建玩关注所有架构层层的完整解决方案方面是独一无二的。Spring提供了唯一的数据管理抽象包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。Spring的数据访问架构还集成了Hibernate和其他O/R mapping 解决方案。
三.Hibernate框架
Hibernate 是一个开源代码的对象关系映射框架,对JDBC惊醒了费城轻量级的的对象封装,使得Java程序员可以随心所欲的使用对象变成思维来操作数据库。Hebernate可以应用在任何使用JDBC的场合,既可以在java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用最具革命意义的事,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任
Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心接口分别加以介绍。
1.Session接口:负责执行被持久化对象的CRUD操作(CRUD的任务是完成与数据库的交流,包含了很多常见的SQL语句。)。但需要注意的是Session对象是非线程安全的。同时,Hibernate的session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后会将HttpSession对象称为用户session。
2.SessionFactory接口:负责初始化Hibernate。它充当数据存储源的代理,并负责创建Session对象。这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
3.Configuration接口:负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动的过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
4.Transaction接口:负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
5.Query和Criteria接口:负责执行各种数据库查询。它可以使用HQL语言或SQL语句两种表达方式。
在Java中,要实现热部署,首先,你得明白,Java中类的加载方式。每一个应用程序的类都会被ClassLoader加载,所以,要实现一个支持热部署的应用,我们可以对每一个用户自定义的应用程序使用一个单独的ClassLoader进行加载。然后,当某个用户自定义的应用程序发生变化的时候,我们首先销毁原来的应用,然后使用一个新的ClassLoader来加载改变之后的应用。而所有其他的应用程序不会受到一点干扰。
0条评论