dream-in-fly
路上...
posts - 31,  comments - 6,  trackbacks - 0

IRVINE, Calif. - June 06, 2005 - Blizzard Entertainment® today announced that World of Warcraft®, its massively multiplayer online role-playing game (MMORPG), has officially launched in China. Players in China can now download the game, create accounts and experience the epic adventure of the Warcraft® series in an immersive and continually evolving online environment. The commercial launch of World of Warcraft follows a highly successful open beta period in China during which the game reached a peak concurrency - the total number of subscribers playing simultaneously - of more than 500,000 players.

"It has always been a goal at Blizzard to become a major developer and publisher for the Chinese gaming market," said Mike Morhaime, president and co-founder of Blizzard Entertainment. "We feel that China offers a huge and eager audience and it is poised to become the next great region in gaming. We are simply thrilled to be bringing World of Warcraft to this great country. With fully localized content, a regional network infrastructure, and local, around-the-clock customer support, we believe that World of Warcraft will provide Chinese gamers with an unparalleled game experience."

To provide players with an incomparable level of service, Blizzard Entertainment has partnered with local publisher The9, who it believes to be the most talented MMO operator in China. The9 will help operate and manage World of Warcraft in China, including all aspects of support. The9's dedicated team, composed entirely of Chinese management and staff, will serve as an integral part of the game's development and customer service efforts. They will assist in the synchronization of content updates, the delivery of player feedback to the developers, and will help ensure accurate localization to keep the game relevant and tailored to Chinese gamers. Furthermore, this local team will offer 24-hour support year around, with direct game master (GM) support and local call-center representatives dedicated to helping players with questions regarding gameplay and/or technical issues.

To deliver top-notch customer support and maintain a safe and secure service, Blizzard and The9 have implemented an authorization CD-key system for the official launch of World of Warcraft. This system will help protect the game from malicious hack programs that could otherwise affect players' enjoyment of the game.

Only players who have purchased an authorized CD key will be able to activate their accounts and enter the game. Each CD key costs 30 Yuan/RMB and can be purchased with a World of Warcraft Points Card. Point Cards also cost 30 Yuan/RMB and can be used at a rate of 9 points per hour (0.45 Yuan/hour) to play World of Warcraft.

posted @ 2005-06-07 16:16 小毅 阅读(407) | 评论 (0)编辑 收藏

需要包含头文件:

#include <alloc.h>

#include <stdlib.h>

 

函数声明(函数原型)

void *malloc(int size);

 

说明:malloc 向系统申请分配指定size个字节的内存空间。返回类型是 void* 类型。void* 表示未确定类型的指针。C,C++规定,void* 类型可以强制转换为任何其它类型的指针。

 

从函数声明上可以看出。malloc new 至少有两个不同: new 返回指定类型的指针,并且可以自动计算所需要大小。比如:

 

int *p;

 

p = new int; //返回类型为int* 类型(整数型指针),分配大小为 sizeof(int);

或:

 

int* parr;

 

parr = new int [100];  //返回类型为 int* 类型(整数型指针),分配大小为 sizeof(int) * 100;

 

malloc 则必须由我们计算要字节数,并且在返回后强行转换为实际类型的指针。

 

int* p;

 

p = (int *)  malloc (sizeof(int));

 

第一、malloc 函数返回的是 void * 类型,如果你写成:p = malloc (sizeof(int)); 则程序无法通过编译,报错:“不能将 void* 赋值给 int * 类型变量”。所以必须通过 (int *) 来将强制转换。

第二、函数的实参为 sizeof(int) ,用于指明一个整型数据需要的大小。如果你写成:

 

int* p = (int *) malloc (1);

代码也能通过编译,但事实上只分配了1个字节大小的内存空间,当你往里头存入一个整数,就会有3个字节无家可归,而直接“住进邻居家”!造成的结果是后面的内存中原有数据内容全部被清空。

 

malloc 也可以达到 new [] 的效果,申请出一段连续的内存,方法无非是指定你所需要内存大小。

 

比如想分配100个int类型的空间:

 

int* p = (int *) malloc ( sizeof(int) * 100 ); //分配可以放得下100个整数的内存空间。

 

另外有一点不能直接看出的区别是,malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的。

 

除了分配及最后释放的方法不一样以外,通过malloc或new得到指针,在其它操作上保持一致。

posted @ 2005-06-06 23:01 小毅 阅读(382) | 评论 (0)编辑 收藏
         阿,我年轻的朋友们,你们想成为游戏设计师,所以来问我有何好建议?我会给你们我最好的建议,但我猜想你们可能会听不进去。你们可能更愿意听那些说你们爱听的话的人所提供的建议。但这对我来说无所谓,我所能做的就是说些实事,并希望能进入某些人的耳朵里。

  首先,你们应该对自己的事业道路有个最初的规划,你想接受更专门的训练,还是想要更全面的教育?专门的训练能给你某些特别的技能,让你能一毕业就进入工作。但教育能给你一个更全面的素质培养,却不一定能马上看到好处,不过长期来看能给你带来更多的优势。这是个简单不过的选择:速成的路还是战略规划后的路。如果你非常急于求成,那就立马去那些专门学校,他们会教你最新最炫的电脑技术。精力充沛是年轻人的优势,但耐性决不是年轻人的特长,所以我完全能理解你们几乎不能忍受去学习那些看似无关的副科。当我还是你们年纪的时候,我总是对那些大学里的其他课程感到不耐烦。但现在,我对我当初的鲁莽想法感到羞愧,并真心的感谢当初教导我的师长。

  速成的路却是能立刻见效的路。如果你进了一家专门教授电脑游戏制作的学校,或者在正规大学主修电脑游戏设计。在此,你会学到很多关于电脑游戏设计最新的技术。毕业后,你很可能马上就能在正规的游戏公司找到一份工作,而这一切你可以在23岁之前搞定。

  请打住。在这里有一点需要指出。生产游戏和设计游戏是完全不同的。你所获得的第一份工作肯定是份渺小的工作,比如给一个无关紧要的npc画动画,而这个npc做的事情只是在背景上漫无目的的闲晃;或者写一段代码,这段代码的用处就是当用户按下exit的时候,显示“你确定要退出么?”。如果你很擅长做这些小事情,那不出几年就可能会让你画些更复杂的动画或写一段更重要的代码。然后再过几年,你就可能坐上某个更重要的位子,处理些更重要的事情。

  但请你别指望这些。根本的问题在于:有成百上千甚至上百万的学生,就像你们一样的学生,正做着同样的梦,想要进游戏业的梦。考虑一下供求曲线吧,如果职员的供应量十倍甚至百倍于员工的需求量,那么价格曲线将向下倾斜。你们必定将得到可怜的工资,并得不到任何的尊敬。你们当然可以抱怨,但得到的回答不仅简单也很实在:如果你不喜欢,你可以选择离开阿,门外有上百个像你一样的年轻人想要得到你的工作。

  事实上,这就是当前正在发生的事情。有可能的话你们可以去每年三月或四月在圣何塞举行的“游戏开发者大会”看看,你们并不需要真的去参加什么讨论会,只需要在圣何塞的会议中心转转,看看身边走过的人。你会发现两个惊人的事实:第一,每个人都穿着黑色衣服;第二,他们的平均年龄在25至30之间。

  我不知道为什么他们都穿着黑色,这可能是每个人都需要遵守的规则。但我能告诉你们,为什么他们都这么年轻:因为每个人都会在工作几年之后离开这个行业。游戏业就像是个奇怪的巨大建筑物,这个建筑物只有一个入口,却有很多个出口。成千上万个年轻人拥挤在入口处,争先恐后互相推挤着想要进门。只有很少一部分能顺利进入。但对于任何一个进入者来说,总会有另一个人离开——这才能让这个行业保持平衡。这个行业内的人有多么的年轻,就意味着被挤出去的人有多么的快。很少有人能撑到30岁。

  如果你想得再深些,那就会发现另一个事实:假设你是老板,既然有这么多小家伙想要为你做游戏,那你自然可以花一毛钱就雇一群人,像奴隶一样驱使他们,直到他们筋疲力尽,然后再找些替代者。你只需雇佣一些管理人员,能保证这些小家伙都努力工作就行。这个系统运转得非常完美。

  唯一的问题是,你是否打算成为他们中的一员呢?我希望不是。不过,要是你真狂热到打算削尖脑袋往游戏业里钻,那么就继续前进!我这个老笨蛋说再多也是无益。你自己去花时间看清这些吧。

  但在这里我还有另一个方案可以告诉你们。首先,你应该获得一个正规的教育,决不是什么一夜情式的培训。去一所正规的大学,学习任何专业除了游戏制作。几乎所有专业都可以:生物学、物理学(我当初就是念的这个)、艺术、文学、历史、心理学、语言学。你只需保证自己获得了常规教育,并尽量选修一些专业以外的课程,当然,你应该选修一下计算机。

同时,你应该开始试验制作游戏了。不要被时髦流行的图像技术所扰——这不能给你的游戏设计提供任何帮助。你应该专注于游戏的内涵:游戏的体系和架构。如何用很少的元素就能使整个游戏运转?别幻想能做出像商业游戏那么好的产品——我要大声告诉你,这些游戏要依靠很多人的力量才能完成。你此时所能做的这些小玩意同那些比较起来,只能用“可怜”两个字形容。要是把制作游戏比作造汽车,此时你根本不用管车子的外表涂层和喷漆,你应该专注于如何让活塞协作运转、如何控制阀门的正常闭合、搞清楚汽化器是个什么东西。你要制造的是个小卡丁车,而不是一辆劳斯莱斯。所有这些都是个试验的过程,别幻想你的这些小玩意会有商业用途,你要做的就是造好一个就扔掉一个——为了增加创造力,你要杀掉你自己的“孩子”。如果你沉迷于这些作品而不愿放弃,那你将永远也不会拥有一个真正游戏设计师所应有的创造力。

  继续不断的为增加你的创造力而努力。到目前为止,你的作品根本无法和一个经验老到的游戏设计师相抗衡,所以增加自己的能力是你此时唯一该做的。电影the matrix都看过吧,没经过训练的neo无论如何也不是agent smith的对手。学任何你能学到的东西。毕业前要把你学校图书馆所有的书架都翻一遍,在这些灰尘的覆盖下指不定隐藏着什么有趣的东西。

  当你出了学校,不要马上就进入游戏业。在一个正规公司找一份像样的工作,并挣些钱。更主要的是不断学习,你要学很多关于团队协作的方式,也要学会如何在众人面前寻找自己的位置。你应该学会何时何地站起来对你的老板说话——虽然这种机会不常有。还有,你应该学会如何同周围有经验的内行打交道。

  继续在你业余时间制作游戏,尽可能多的制作各种不同类型的“小卡丁车”,并试图了解各种类型卡丁车的性能,诸如操纵性、速度以及其他要素。当你做了六个或十个这种产品,你可能会想到继续亲自着手进行更大的项目。很好,去找些志同道合的朋友,他们会帮助你完成你的计划,我确信这将是个令人印象深刻的成果。完成之后,向全世界展示你的小宝贝吧。现在,你就可以把她作为你简历的一部分去申请游戏业中的职位了。如果你的那些产品确实好,你将能得到一个真正的游戏设计师职位,而不是去当那些小喽罗。此时你可能仍然只是其他游戏设计师的助手,但你已经处在了正确的位置上,如果你能努力出色的完成工作,你肯定会在游戏业中拥有前途。
  我知道这些并不是你们想听的内容。你们想要的是所谓的速成药,比如学习这个,然后学习那个,接下来就能确保得到一份高收入的工作、拥有巨大的办公室、用着最先进的电脑设备、做的是富有创造性的事情。没错,每个人都会这么想的,但没有人会得到这些。那些向你描述这些故事的人不过是些骗子,他们脑子里想的只是你口袋里的钱。一个令人悲伤的事实是:游戏先驱们主导世界的日子已经过去了,现在的游戏业是一个产业,没人会突然被发掘然后一夜之间成为巨星,对任何想入门的人来说,在你面前的必定是一条漫长的路。

  你们拥有激情和精力,想要让不可能变为可能。但你们是否对这条漫长的路做好了准备?或者说,你们是否打算在真正的准备完成前就冲进去?

  祝你们好运,孩子们,我相信你们会成功。


   谢谢您-----------chris crawford

 

posted @ 2005-04-21 06:21 小毅 阅读(480) | 评论 (3)编辑 收藏
开始安装EclipseME 0.5.5:

从0.5.5版本开始,EclipseME将采用新的安装模式。而在0.5.0版本及之前版本均是一个压缩文件解压到Eclipse的安装路径下即可。这种安装形式已经不在使用,我们将采用以下的新的安装模式。如果你仅是要升级EclipseME到0.5.5版本,那么也要按以下的新的安装方法来做。

1)第一步:打开Eclipse,选择Help -> Software Updates -> Find and Install。

























posted @ 2005-04-18 11:08 小毅 阅读(360) | 评论 (0)编辑 收藏

现在Eclipse的最新版本是3.0.2,但建议使用3.01M6版本。而EclipseME刚刚推出了0.9.0版本,完全支持Eclipse3.01M6版。
1、下载JDK:
http://java.sun.com 下载JDK1.4.2版本。或者此地址:

2、下载J2ME版本:http://java.sun.com 下载。或者此地址:

3、下载Eclipse3.01M6版本:http://www.Eclipse.org 下载。或者此地址

ftp://ftp.jaist.ac.jp/pub/eclipse/eclipse/downloads/drops/S-3.1M6-200504011645/eclipse-SDK-3.1M6-win32.zip

4、下载Eclipse3.01M6版本的中文语言包:http://www.Eclipse.org 下载。或者此地址

http://download.eclipse.org/eclipse/downloads/drops/L-3.0.1_Translations-200409161125/NLpack-eclipse-SDK-3.0.x-win32.zip

5、下载Eclipse3.01M6的J2ME插件EclipseME0.9.0版本:http://www.EclipseME.org 下载。或者此地址

http://nchc.dl.sourceforge.net/sourceforge/eclipseme/eclipseme.feature_0.9.0_site.zip

下载完以上五个文件后,进行相应顺序的安装。另外:Eclipse的软件不需要安装,直接解压即可,很方便吧。

posted @ 2005-04-18 11:03 小毅 阅读(456) | 评论 (0)编辑 收藏
在遥远古希腊的大草原中,驰骋着一批半人半马的族群,这是一个生性凶猛的族群。“半人半马”代表着理性与非理性、人性与兽性间的矛盾挣扎,这就是人马部落。部落里唯一的例外射手奇伦,是一个生性善良的男子,他对人坦诚真挚,谦逊有理。因此受到大家的尊敬与爱戴。

  有一天,英雄赫五力来拜访他的朋友奇伦。赫五力早就听说人马族的酒香醇无比,便要求奇伦给他拿来享用,可是,他喝光了奇伦的酒仍不尽兴,执意要喝光全部落的酒。奇伦非常耐心地解释给他听,酒是部落的公共财产,不是任何一个人可以独自占有的,希望赫五力不要因为一时的兴致而犯众怒。赫五力向来脾气暴躁,怎么能听得进奇伦的话,他把这个善良的朋友推到一边就闯进了人马部落。果不出奇伦所料,暴躁的赫五力和凶猛的人马族碰在一起,冲突不可避免的发生了。

  赫五力力大无穷,幼年即用双手扼死巨蟒,他完成国王的十项不可能完成的任务都游刃有余,连太阳神阿波罗都惧他三分,人马族虽然厉害,也并不是赫五力的对手,他们纷纷落逃。赫五力手持神弓紧紧追赶,借着酒劲,大肆进攻。人马族被逼的走投无路,只好逃到了奇伦的家中。人们惶惶不安,赫五力站在门口大声呵斥,如果再没人出来,他就把这个部落毁掉。奇伦听到这里,为了部落,为了朋友,为了化解这场争斗,他奋不顾身的推开门,走了出来。就在那一刹那,赫五力的箭也飞了过来!赫五力惋惜又痛心的看着自己的朋友被神箭射穿心脏,而奇伦则用尽最后的力气说到:“再锋利的箭也会被软弱的心包容;再疯狂的兽性也不会泯灭人性。”

  这时候,奇伦的身体碎成了无数的小星星,飞到了天上,它们聚集在一起,好象人马的样子,那只箭还似乎就在他的胸前。为了纪念善良的奇伦,人们就管这个星座叫射手座。

posted @ 2005-04-17 22:09 小毅 阅读(167) | 评论 (0)编辑 收藏
从嘉兴回来...兄弟没变多少 呵呵 一样的忙

认识了挺多的朋友 松哥,东哥,CEO,死过妹妹....

虽然前几天的笔试并没有成功  心情并不怎么好  在嘉兴却还是呆的开心的...^ ^


每次去看兄弟都能学到好多...
刚好碰上他在开发宠物系统...php-asp...
学了很多东西 有些习惯他好象是于身具来的  大概这就是天赋吧....


4月中旬了  毕业了近了...
工作还没定  心理有点烦了....
posted @ 2005-04-15 20:41 小毅 阅读(140) | 评论 (0)编辑 收藏
作者:xm4014

今天开始学习Java中多线程的实现.

  线程是一些可以并行的,独立的执行的代码.之前我编的程序都只能做一件事情,也就是只有一个线程.多线程的编程就是可以将程序任务分成多个并行的子任务,同时运行,互不干扰.我对多线程的理解是从格斗游戏得来的.格斗游戏中两人对打就是通过两个线程来实现的吧,否则如何能够你出你的招,我发我的冲击波呢.

  (1月18日)突然想到一个问题,补充一下.多线程是不是我们通常所说的多任务呢?我的理解是,不能这样说也可以这样说.

  简单说来,多线程提供了一种在进程内部进行多个线程并行调度的机制,而多任务则提供的是在一个操作系统内部运行多个进程的机制.

  多任务操作系统(如Windows)的基本原理是这样的:操作系统将CPU的时间片分配给多个线程,每个线程在操作系统指定的时间片内完成(注意,这里的多个线程是分属于不同进程的).操作系统不断的从一个线程的执行切换到另一个线程的执行,如此往复,宏观上看来,就好像是多个线程在一起执行.由于这多个线程分属于不同的进程,因此在我们看来,就好像是多个进程在同时执行,这样就实现了多任务.Whoops,真绕口.

  如上,多线程和多任务是有很明显的区别的.但是再想一下,在一个应用程序内实现多线程不也是靠CPU分配时间片吗?既然原理是相同的,那么多线程也可以说是多任务的.

  一个Java程序启动后,就已经有一个线程在运行,我们可以通过下面的例子来初步建立一个线程的实际印象

class testthread{
public static void main(String args[]){
Thread t=Thread.currentThread();
t.setName("This Thread is running");
System.out.println("The running thead:"+t);
try{
for(int i=0;i<5;i++)
{
System.out.println("Sleep time"+i);
Thread.sleep(1000);//挂起线程,就是让线程休息一会儿,
//不占用系统资源,因此其它线程可以继续.
//这里的Thread缺省表示主线程
}
}catch(InterruptedException e){System.out.println("thread has wrong");}
}
}

  这只是一个线程,那么我们怎么实现多个线程呢?又怎样让线程做我安排它要做的事情呢?

  实现线程体的构造有两种方法.

  第一种方法是通过继承构造线程体.

  在Java中专门有一个Thread类,这个类里面有一个函数run(),里面记录着线程要完成的操作,就好像通常所说的主函数main()一样,run()函数运行完了,线程就结束了.通过继承这个类,我们可以定义我们自己的线程,在run函数中告诉它该做什么事情.下面的程序就是继承了一个SimpleThread类,用两个线程来输出HelloWorld.

public class TwoThread{

public static void main(String args[]){
new SimpleThread("HelloWorld1").start();//创建两个线程的实例,就这么简单
new SimpleThread("HelloWorld2").start();
}

}
class SimpleThread extends Thread{ file://真正的内容在这里
public SimpleThread(String str){
super(str);//super代表SimpleThread类的直接父类,这里就是Thread
}

file://我们要线程做的事情都在这里了
public void run(){
for(int i=0;i<10;i++){
System.out.println(i+" "+getName());
try{
sleep((int)(Math.random()*1000));
}catch(InterruptedException e){}
}
System.out.println("Done!"+getName());
}
}

  运行的结果是两个线程交替显示各自的HelloWorld十次,输出是混在一起的,因为两个线程是同时运行的.

posted @ 2005-04-01 20:30 小毅 阅读(175) | 评论 (0)编辑 收藏

作者:xm4014


  今天第一次接触Java。

  虽然以前间或的也看了些书籍,但多是隔靴搔痒,上不了正席,绝不敢说自己懂Java。接触一门新的技术和初恋一样,都是第一次,但不同的是后者一般开始无比甜蜜,结局却很痛苦,而前者则往往开始很痛苦,越到后来却越是有味,简直是欲罢不能.现在我就正处于这个很痛苦的阶段,连一个最简单的Helloworld都运行不出来,总是提示Excepion in thread "main" java.lan.NoClassDefFoundError. 只好上网去查,去搜.记性又不好,所以搜出来赶紧保存下来,常备无患.

  一般来说安装完JDK之后,一定要按一下步骤配置,才可正确编译运行(假定jdk版本为1.4.0)

  1.将jdk1.4.0-安装在自己机器的某个盘符的根目录下,如:可安装在C:\jdk下。

  ***(以下出现的c:\jdk改为你自己安装JDK的目录)***

  2.如果你的运行环境是win98,则在C盘根目录下,autoexec.bat文件中,加入下面两条语句:

  set Path=%PATH%;c:\jdk\bin

  set CLASSPATH=.;c:\jdk\lib\dt.jar;c:\jdk\lib\tools.jar

  保存后,重新启动机器,就完成了jdk1.4的安装。

  3.如果你的运行环境是win2000的话,则需在“控制面板”的“系统”下,“高级”选项的“环境变量”中,添加两个用户变量。

  其中一个用户变量的名称为“path”,值为“.;d:\j2sdk1.4.0_01\bin”,

  另一个用户变量的名称为"CLASSPATH",值为“.;d"\j2sdk1.4.0_01\lib\dt.jar;d:\j2sdk1.4.0_01\lib\tools.jar”,单击“确定”即可。即完成了jdk1.4.0的安装。

  至于这样做的意义何在,我想应该是让Java系统在编译字节代码(.java)的时候需要一个什么东东的支持,如果你不告诉它这个东东放在哪个地方的话,它就犯傻了?!

  看到屏幕上终于显示出Hello world对我来说意义重大.这是我近一年来写的第一个程序!再次踏上程序之路,简直有恍如隔世的感觉,已经快找不准我的位置了.还好原来学的一些关于C++和面向对象的皮毛没忘光光,所以费点周折熟悉了JDK的环境之后,接下来的事情就好办多了,心里也踏实多了.

  用String类直接定义字符串变量比起C中讨厌的指针,感觉确实好的多,用惯了Object Pascal的我,如果再回去数* *,真要疯掉不可.

  数组的定义和C,C++好像略有不同,记不清了,先记下来再说

  int[] number=new int[5]

  String[] message=new String[5]

  变量这一部分想起来要交待的也就这么多吧。虽然是菜鸟,但我也知道,总是如谭浩强般在语法上面死抠的人简直是白痴:大多数情况下,漂亮的程序根本不需要无谓的点缀,工工整整,思路清晰就可以了.

  倒是对于Java程序的框架我倒想备忘一下,一个简单的java程序好像是应该是这样的框架

 class ProgramName
{
public static void main(String[] args)
{
file://程序的主体
}
public static int othermethod()
{
file://其它方法
}
}

  整个程序在一个大的类中,这个类的概念应该就跟pascal里面的单元差不多的。同pascal一样,文件名也要与单元名-在这里是类名-一样.Java对大小写要求的非常严格,我语法错了好几次都是因为这个.

  Java程序就是由一个或者多个或者很多个方法在这样一个大类当中组成的.

  在如上的代码中,定义方法的参数表示的意思分别为:

  public表示此成员函数是公有的,可以被其他类直接调用

  static表示main成员函数在ProgramName类的所有对象中是唯一的,Java将为其分配永久存储空间

posted @ 2005-04-01 20:18 小毅 阅读(201) | 评论 (0)编辑 收藏
过几天要去东星软件笔试程序员,要求挺高的 网上找了篇笔试的文章

前段时间因为要参加一个笔试,在准备期间在网上找到了两条关于笔试题目的文章,其中一篇为<<有感:应聘Java笔试时可能出现问题>>,还有一篇忘了名字,读后深受启发。
??????? 在寻找这些答案的过程中,我将相关答案记录下来,就形成了以下这些东西。需要说明的是以下答案肯定有很多不完整甚至错误的地方,需要各位来更正与完善它,千万不要扔我的鸡蛋啊。
?????? 希望本文能够给即将奔赴笔试考场的同仁些许帮助,更希望更多的人加入到收集整理笔试题与完善答案的这些工作中来,为大家更好的获得工作机会做一点贡献。
?????? 在此感谢前面两文的作者的对笔试题目的收集与整理。
?????? 如有任何意见与建议请通过QQ:6045306,Mail:huijunzi@21cn.com与我联系。

Java基础方面:

1、作用域public,private,protected,以及不写时的区别
答:区别如下:
作用域?????????? 当前类?????? 同一package? 子孙类?????? 其他package
public??????????? √????????????? √????????????????? √???????????? √
protected??????? √????????????? √????????????????? √???????????? ×
friendly????????? √????????????? √?????????????????? ×??????????? ×
private?????????? √????????????? ×?????????????????? ×??????????? ×
不写时默认为friendly

2、ArrayList和Vector的区别,HashMap和Hashtable的区别
答:
就ArrayList与Vector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
就HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value

3、char型变量中能不能存贮一个中文汉字?为什么?
答:
是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的

4、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
答:
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify

5、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
答:
父类:
package test;
public class? FatherClass
{
??? public FatherClass()
?{
??System.out.println("FatherClass Create");
?}
}
子类:
package test;
import test.FatherClass;
public class? ChildClass extends FatherClass
{
?public ChildClass()
?{
??System.out.println("ChildClass Create");
?}
?public static void main(String[] args)
?{
??FatherClass fc = new FatherClass();
??ChildClass cc = new ChildClass();
?}
}
输出结果:
C:\>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create

6、内部类的实现方式?
答:
示例代码如下:
package test;
public class? OuterClass
{
?private class InterClass
?{
??public InterClass()
??{
???System.out.println("InterClass Create");
??}
?}
?public OuterClass()
?{
??InterClass ic = new InterClass();
??System.out.println("OuterClass Create");
?}
?public static void main(String[] args)
?{
??OuterClass oc = new OuterClass();
?}
}
输出结果:
C:\>java test/OuterClass
InterClass Create
OuterClass Create
再一个例题:
public class OuterClass {
? private double d1 = 1.0;
??? //insert code here
}
You need to insert an inner class declaration at line 3. Which two inner class declarations are

valid?(Choose two.)
A. class InnerOne{
???? public static double methoda() {return d1;}
?? }
B. public class InnerOne{
???? static double methoda() {return d1;}
?? }
C. private class InnerOne{
???? double methoda() {return d1;}
?? }
D. static class InnerOne{
???? protected double methoda() {return d1;}
?? }
E. abstract class InnerOne{
???? public abstract double methoda();
?? }
说明如下:
一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 故 A、B 错
二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错。

故 D 错
三.非静态内部类的非静态成员可以访问外部类的非静态变量。 故 C 正确
四.答案为C、E

7、垃圾回收机制,如何优化程序?
希望大家补上,谢谢

8、float型float f=3.4是否正确?
答:
不正确。精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4

9、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?
答:
Collection FrameWork如下:
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)
Map提供key到value的映射

10、Java中异常处理机制,事件机制?

11、JAVA中的多形与继承?
希望大家补上,谢谢

12、抽象类与接口?
答:
抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。

13、Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示?
答:
Server端程序:
package test;
import java.net.*;
import java.io.*;

public class Server
{
?private ServerSocket ss;
?private Socket socket;
?private BufferedReader in;
?private PrintWriter out;
?public Server()
?{
??try
??{
???ss=new ServerSocket(10000);
???while(true)
???{
????socket = ss.accept();
????String RemoteIP = socket.getInetAddress().getHostAddress();
????String RemotePort = ":"+socket.getLocalPort();
????System.out.println("A client come in!IP:"+RemoteIP+RemotePort);
????in = new BufferedReader(new

InputStreamReader(socket.getInputStream()));
????String line = in.readLine();
????System.out.println("Cleint send is :" + line);
????out = new PrintWriter(socket.getOutputStream(),true);
????out.println("Your Message Received!");
????out.close();
????in.close();
????socket.close();
???}
??}catch (IOException e)
??{
???out.println("wrong");
??}
?}
?public static void main(String[] args)
?{
??new Server();
?}
};
Client端程序:
package test;
import java.io.*;
import java.net.*;

public class Client
{
?Socket socket;
?BufferedReader in;
?PrintWriter out;
?public Client()
?{
??try
??{
???System.out.println("Try to Connect to 127.0.0.1:10000");
???socket = new Socket("127.0.0.1",10000);
???System.out.println("The Server Connected!");
???System.out.println("Please enter some Character:");
???BufferedReader line = new BufferedReader(new

InputStreamReader(System.in));
???out = new PrintWriter(socket.getOutputStream(),true);
???out.println(line.readLine());
???in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
???System.out.println(in.readLine());
???out.close();
???in.close();
???socket.close();
??}catch(IOException e)
??{
???out.println("Wrong");
??}
?}
?public static void main(String[] args)
?{
??new Client();
?}
};

14、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 如在COLLECTION框架中,实现比较要实现什么样的接口?
答:
用插入法进行排序代码如下
package test;
import java.util.*;
class? InsertSort
{
?ArrayList al;
?public InsertSort(int num,int mod)
?{
??al = new ArrayList(num);
??Random rand = new Random();
??System.out.println("The ArrayList Sort Before:");
??for (int i=0;i??{
???al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));
???System.out.println("al["+i+"]="+al.get(i));
??}
?}
?public void SortIt()
?{
??Integer tempInt;
??int MaxSize=1;
??for(int i=1;i??{
?????? tempInt = (Integer)al.remove(i);
????if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
????{
?????al.add(MaxSize,tempInt);
?????MaxSize++;
?????System.out.println(al.toString());
????} else {
?????for (int j=0;j?????{
??????if

(((Integer)al.get(j)).intValue()>=tempInt.intValue())
??????{
???????al.add(j,tempInt);
???????MaxSize++;
???????System.out.println(al.toString());
???????break;
??????}
?????}
????}
??}
??System.out.println("The ArrayList Sort After:");
??for(int i=0;i??{
???System.out.println("al["+i+"]="+al.get(i));
??}
?}
?public static void main(String[] args)
?{
??InsertSort is = new InsertSort(10,100);
??is.SortIt();
?}
}
JAVA类实现序例化的方法是实现java.io.Serializable接口
Collection框架中实现比较要实现Comparable 接口和 Comparator 接口

15、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
答:
代码如下:
package test;

class? SplitString
{
?String SplitStr;
?int SplitByte;
?public SplitString(String str,int bytes)
?{
??SplitStr=str;
??SplitByte=bytes;
??System.out.println("The String is:'"+SplitStr+"';SplitBytes="+SplitByte);
?}
?public void SplitIt()
?{
??int loopCount;
??

loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split

Byte+1);
??System.out.println("Will Split into "+loopCount);
??for (int i=1;i<=loopCount ;i++ )
??{
???if (i==loopCount){
????

System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
???} else {
????

System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));
???}
??}
?}
?public static void main(String[] args)
?{
??SplitString ss = new SplitString("test中dd文dsaf中男大3443n中国43中国人

0ewldfls=103",4);
??ss.SplitIt();
?}
}

16、JAVA多线程编程。 用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。
希望大家补上,谢谢

17、STRING与STRINGBUFFER的区别。
答:
STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法

Jsp方面

1、jsp有哪些内置对象?作用分别是什么?
答:
JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):
 request 用户端请求,此请求会包含来自GET/POST请求的参数
?? response 网页传回用户端的回应
?? pageContext 网页的属性是在这里管理
?? session 与请求有关的会话期
?? application servlet 正在执行的内容
?? out 用来传送回应的输出
?? config servlet的构架部件
?? page JSP网页本身
?? exception 针对错误网页,未捕捉的例外

2、jsp有哪些动作?作用分别是什么?
答:
JSP共有以下6种基本动作
?? jsp:include:在页面被请求的时候引入一个文件。
?? jsp:useBean:寻找或者实例化一个JavaBean。
?? jsp:setProperty:设置JavaBean的属性。
?? jsp:getProperty:输出某个JavaBean的属性。
?? jsp:forward:把请求转到一个新的页面。
?? jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记

3、JSP中动态INCLUDE与静态INCLUDE的区别?
答:
动态INCLUDE用jsp:include动作实现
?? 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
?? 静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面
?? <%@ include file="included.htm" %>

4、两种跳转方式分别是什么?有什么区别?
答:
有两种,分别为:
?

?
? 前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。

Servlet方面

1、说一说Servlet的生命周期?
答:
servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。

2、Servlet版本间(忘了问的是哪两个版本了)的不同?
希望大家补上,谢谢

3、JAVA SERVLET API中forward() 与redirect()的区别?
答:
前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

4、Servlet的基本架构
public class ServletName extends HttpServlet {
? public void doPost(HttpServletRequest request, HttpServletResponse response) throws
????? ServletException, IOException? {
????? }
? public void doGet(HttpServletRequest request, HttpServletResponse response) throws
????? ServletException, IOException? {
????? }
}

Jdbc、Jdo方面

1、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询.
答:
程序如下:
package hello.ant;
import java.sql.*;
public class? jdbc
{
?String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
?String theUser="admin";
?String thePw="manager";
?Connection c=null;
?Statement conn;
?ResultSet rs=null;
?public jdbc()
?{
??try{
??? Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
????????? c = DriverManager.getConnection(dbUrl,theUser,thePw);
??? conn=c.createStatement();
??}catch(Exception e){
???e.printStackTrace();
??}
?}
?public boolean executeUpdate(String sql)
?{
???try
???{
?????conn.executeUpdate(sql);
?????return true;
???}
???catch (SQLException e)
???{
?????e.printStackTrace();
?????return false;
???}
?}
?public ResultSet executeQuery(String sql)
?{
???rs=null;
???try
???{
?????rs=conn.executeQuery(sql);
???}
???catch (SQLException e)
???{
?????e.printStackTrace();
???}
???return rs;
?}
?public void close()
?{
???try
???{
?????conn.close();
?????c.close();
???}
???catch (Exception e)
???{
?????e.printStackTrace();
???}
?}
?public static void main(String[] args)
?{
??ResultSet rs;
??jdbc conn = new jdbc();
??rs=conn.executeQuery("select * from test");
??try{
??while (rs.next())
??{
???System.out.println(rs.getString("id"));
???System.out.println(rs.getString("name"));
??}
??}catch(Exception e)
??{
???e.printStackTrace();
??}
?}
}

2、Class.forName的作用?为什么要用?
答:
调用该访问返回一个以字符串指定类名的类的对象。

3、Jdo是什么?
答:
JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

4、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。
答:
一种分页方法
<%
? int i=1;
? int numPages=14;
? String pages = request.getParameter("page") ;
? int currentPage = 1;
? currentPage=(pages==null)?(1):{Integer.parseInt(pages)}
? sql = "select count(*) from tables";
? ResultSet rs = DBLink.executeQuery(sql) ;
? while(rs.next()) i = rs.getInt(1) ;
? int intPageCount=1;
? intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1);
? int nextPage ;
? int upPage;
? nextPage = currentPage+1;
? if (nextPage>=intPageCount) nextPage=intPageCount;
? upPage = currentPage-1;
? if (upPage<=1) upPage=1;
? rs.close();
? sql="select * from tables";
? rs=DBLink.executeQuery(sql);
? i=0;
? while((i%>
//输出内容
//输出翻页连接
合计:<%=currentPage%>/<%=intPageCount%>
第一页

href="List.jsp?page=<%=upPage%>">上一页
<%
? for(int j=1;j<=intPageCount;j++){
? if(currentPage!=j){
%>
? [<%=j%>]
<%
? }else{
? out.println(j);
? }
? }
%>
下一页最后页


Xml方面

1、xml有哪些解析技术?区别是什么?
答:
有DOM,SAX,STAX等
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
STAX:Streaming API for XML (StAX)

2、你在项目中用到了xml技术的哪些方面?如何实现的?
答:
用到了数据存贮,信息配置两方面。在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。

3、用jdom解析xml文件时如何解决中文问题?如何解析?
答:
看如下代码,用编码方式加以解决
package test;
import java.io.*;
public class DOMTest
{
?private String inFile = "c:\\people.xml";
?private String outFile = "c:\\people.xml";?
?public static void main(String args[])
?{
??? ?new DOMTest();
??? }
?public DOMTest()
?{
??try
???? {?
???? ?javax.xml.parsers.DocumentBuilder builder =
???? ??

javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();
???? ?org.w3c.dom.Document doc = builder.newDocument();
???? ?org.w3c.dom.Element root = doc.createElement("老师");
???? ?org.w3c.dom.Element wang = doc.createElement("王");
???org.w3c.dom.Element liu = doc.createElement("刘");
???? ?wang.appendChild(doc.createTextNode("我是王老师"));
???? ?root.appendChild(wang);
???? ?doc.appendChild(root);
???? ?javax.xml.transform.Transformer transformer =
???? ??javax.xml.transform.TransformerFactory.newInstance().newTransformer();
???? ?transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312");
???? ?transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");??

? ?
???? ?transformer.transform(new javax.xml.transform.dom.DOMSource(doc),
???? ???????new

javax.xml.transform.stream.StreamResult(outFile));
???? }
???? catch (Exception e)
???? {
???? ?System.out.println (e.getMessage());
???? }
??? }
}

4、编程用JAVA解析XML的方式.
答:
用SAX方式解析XML,XML文件如下:


? 王小明
? 信息学院??
? 6258113
? 男,1955年生,博士,95年调入海南大学
?

?事件回调类SAXHandler.java
?import java.io.*;
import java.util.Hashtable;
import org.xml.sax.*;
public class SAXHandler extends HandlerBase
? {
? private Hashtable table = new Hashtable();
? private String currentElement = null;
? private String currentValue = null;
? public void setTable(Hashtable table)
??? {
??? this.table = table;
??? }
? public Hashtable getTable()
??? {
??? return table;
??? }
? public void startElement(String tag, AttributeList attrs)
? throws SAXException
??? {
??? currentElement = tag;
??? }
? public void characters(char[] ch, int start, int length)
? throws SAXException
??? {
??? currentValue = new String(ch, start, length);
??? }
? public void endElement(String name) throws SAXException
??? {
??? if (currentElement.equals(name))
????? table.put(currentElement, currentValue);
??? }
? }
JSP内容显示源码,SaxXml.jsp:





<%@ page errorPage="ErrPage.jsp"
contentType="text/html;charset=GB2312" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.Hashtable" %>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="org.xml.sax.*" %>
<%@ page import="javax.xml.parsers.SAXParserFactory" %>
<%@ page import="javax.xml.parsers.SAXParser" %>
<%@ page import="SAXHandler" %>
<%
File file = new File("c:\\people.xml");
FileReader reader = new FileReader(file);
Parser parser;
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
SAXHandler handler = new SAXHandler();
sp.parse(new InputSource(reader), handler);
Hashtable hashTable = handler.getTable();
out.println("");
out.println("" + "");
out.println("" + "");
out.println("" + "");
out.println("" + "");
out.println("
教师信息表
姓名" +
? (String)hashTable.get(new String("name")) + "
学院" +
? (String)hashTable.get(new String("college"))+"
电话" +
? (String)hashTable.get(new String("telephone")) + "
备注" +
? (String)hashTable.get(new String("notes")) + "
");
%>

EJB方面

1、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别?
答:
规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS.....

2、EJB与JAVA BEAN的区别?
答:
Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

3、EJB的基本架构
答:
一个EJB包括三个部分:
? Remote Interface 接口的代码
? package Beans;
? import javax.ejb.EJBObject;
? import java.rmi.RemoteException;
? public interface Add extends EJBObject
? {
?? //some method declare
? }
? Home Interface 接口的代码
? package Beans;
? import java.rmi.RemoteException;
? import jaax.ejb.CreateException;
? import javax.ejb.EJBHome;
? public interface AddHome extends EJBHome
? {
??? //some method declare
? }
? EJB类的代码
? package Beans;
? import java.rmi.RemoteException;
? import javax.ejb.SessionBean;
? import javx.ejb.SessionContext;
? public class AddBean Implements SessionBean
? {
??? //some method declare
? }?

J2EE,MVC方面

1、MVC的各个部分都有那些技术来实现?如何实现?
答:
MVC是Model-View-Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

2、应用服务器与WEB SERVER的区别?
希望大家补上,谢谢


3、J2EE是什么?
答:
Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

4、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。
答:
Web Service描述语言WSDL
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。


5、BS与CS的联系与区别。
希望大家补上,谢谢

6、STRUTS的应用(如STRUTS架构)
答:
Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能:
一.包含一个controller servlet,能将用户的请求发送到相应的Action对象。
二.JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。
三.提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。

设计模式方面

1、开发中都用到了那些设计模式?用在什么场合?
答:
每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。


2、UML方面
答:
标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图,

JavaScript方面

1、如何校验数字型?
var re=/^\d{1,8}$|\.\d{1,2}$/;
var str=document.form1.all(i).value;
var r=str.match(re);
if (r==null)
{
?? sign=-4;
?? break;
}
else{
?? document.form1.all(i).value=parseFloat(str);
}


CORBA方面

1、CORBA是什么?用途是什么?
答:
CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。 其目的为:
用不同的程序设计语言书写
在不同的进程中运行
为不同的操作系统开发


LINUX方面

1、LINUX下线程,GDI类的解释。
答:
LINUX实现的就是基于核心轻量级进程的"一对一"线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。
GDI类为图像设备编程接口类库。

posted @ 2005-03-19 21:18 小毅 阅读(251) | 评论 (0)编辑 收藏
javax.microedition.lcdui.Display类

方法
static Display getDisplay(MIDlet midlet)                       获取Display类的实例
Displayable getCurrent()                                                   获取目前Displayable类的实例
void setCurrent(Alert alert,Displayable displayable)    显示所指定的报警对话框的实例和被指定Displayable类的实例

void setCurrent(Displayable displayable)                       显示所指定的Displayable类的实例
 
boolean isColor()                                                                  判断设备是否支持彩色

int numColors()                                                                     获取设备能用的色彩位数或灰度

void callSerial(Runnable runnable)                                     重绘图后,调用Runnable类的实例

javax.microedition.lcdui.Displayable类

方法
void addCommand(Command command)                           将命令关联到Displayabel类的实例

void removecommand (Command command )                     撤消关联
  
void setCommandListener (CommandListener commandlistener)   关联CommandListener到Displayable类的实例

boolean isShown ()                                                                 判断Displayable类实例时候在屏幕上显示

javax.microedition.lcdui.Command类

Command(String label, int commandTYPE, int priority)      创建Command类的实例,显示指定的标签,设置指定的命令类型和优先级

int getCommandType()                                                            获取命令的命令类型

String getLabel()                                                                        获取命令的标签

int getPriority()                                                                           获取命令的优先级

javax.microedition.lcdui.CommandListener接口

方法

void commandAction(Command command,Displayable dispalyable)  处理Command类的实例

javax.microedition.lcdui.Item类

方法
String  getLabel()                                                                          获取与Item类的实例关联的标签

void setLabel(String label)                                                           为Item类的实例指定一个标签

javax.microedition.ItemStateListener接口
方法

void itemStateChanged (Item item)                                           处理Item类的实例的改变

javax.microedition.midlet.MIDlet 类

方法
abstract void destroyApp(boolean unconditional)                    关闭MIDlet

abstract void pauseApp()                                                               暂停MIDlet

abstract void startApp()                                                                 激活MIDlet

final void notify Destroyed()                                                           请求停止MIDlet
final void notifyPause()                                                                    请求暂停MIDlet
final void notifyRequset()                                                                请求激活MIDlet

final String getAppProperty(string key)                                          从JAD或JAR文件获取属性

javax.microedition.midlet.MIDletStateChangeException类

方法
MIDletStateChangeException                                                        不用测试生成心得MIDletStateChangeException对象

MIDletStateChangeException(String string)                            生成新的带消息的MIDletStateChangeException对象
posted @ 2005-03-16 20:21 小毅 阅读(176) | 评论 (0)编辑 收藏

在应用程序即将使用一个对象时在分配这个对象,而不是在应用程序启动是全部分配。
一旦应用程序不再需要一个对象,就要将所有对该对象的引用赋值为null
总是重用对象而不是创建对象。
遵守拇指法则


应用程序通常是单线程的。
一次只能运行一个应用程序
应用程序是事件驱动的
用户从一个应用程序切换到另一个应用程序,而不是结束应用程序
移动小型计算设备的使用方式通常是每次只用两分钟,每次用30次。
应用程序必须在两分钟之内完成一项任务。

posted @ 2005-03-14 21:58 小毅 阅读(143) | 评论 (0)编辑 收藏

我还喜欢她吗?我也不知道,真的真的模糊了

我记得有段时间狠狠的喜欢过,也信誓旦旦的承诺过


虽然在繁忙的学习之间会想起她,虽然是一闪而过,但是心里还是酸酸的。


她很漂亮,至少我一直这样想的,倒不是说就是一见钟情的那种。感觉却是聊天里来的
….


似乎这很老套。可就是这样简单的打招呼,亲切的问候……似乎就忘不了了
.


即使真的喜欢又会怎么样呢?想起她就这样反问自己。“见都没见过呢”。“先有事业,在有妻室”,“热血男儿志在四方”,
理由就是这样一个接一个的会涌上来
.


苦苦笑笑
得了吧

就算认识过,就算真的相爱过,在距离面前0

 

我知道答案其实一直一直都没变过,变的只是周围的环境,繁忙的学习,巨大的工作压力,让我渐渐把这个答案深深埋了起来,再不能象以前一天到晚守在电脑前等她上线,再不能拿着手机给她发消息,再不能偷偷打工为她买东东,再不能……………..

 

好难得周末能这样轻松的坐在电脑前..(别忘了明天早起上课..-_-

 

把她放在心里我知道她会永远在自己心里.

posted @ 2005-03-05 21:45 小毅 阅读(155) | 评论 (0)编辑 收藏

马上就要毕业了,大学四年的生活一晃而过,过的好快哦。


读书的时候总拼命找时间玩..总想星期六星期天有时间可以补回来。呵呵,所以整个大学四年都在缝缝补补。

人们总是以为一件事情干两天肯定要比干一天要做好,以前的我也是如此认为,做事慢慢吞吞,总以为花的时间越多就能做的越好。其实错了,大家都错了,一天能做好的事情就要花一天做的最好,星期六星期天是拿来放松的,拿来休息的。

并是不忙忙碌碌就能成功。

而成功的人就一定是效率高。

posted @ 2005-02-23 16:48 小毅 阅读(189) | 评论 (0)编辑 收藏

回学校啦,呵呵,音响放到最响....

 

室友添了新电脑...嘿嘿 ....以后爽游戏又方便多啦...HOHO

 

2005  一切都在改变.....我也要加油干起来了~~~

posted @ 2005-02-20 19:03 小毅 阅读(145) | 评论 (0)编辑 收藏

回家啦 ...终于回家了....

大学生涯最后一个寒假....happy  new year~~~

珍惜拥有....

posted @ 2005-01-31 09:44 小毅 阅读(192) | 评论 (0)编辑 收藏

忘记以前的天真,无忧。。。。。在这一年里即将踏入社会。我知道现在我是新人,生活法则,社会规则,我必须一点一滴的从头开始。。。。2005 奋斗的一年,那里有一座陌生的城市等我去闯荡,那里有崭新的事业等我去开拓,以后回头------我必须告诉自己。。。2005年,我为我自己选者的路而骄傲

posted @ 2005-01-29 22:52 小毅 阅读(172) | 评论 (0)编辑 收藏

Thread  线程
它能锁定任何对象占用的内存(内存实际是多种共享资源的一种),所以同一时间只能有一个线程使用特定的内存空间。为达到这个目的,需要使用synchronized关键字。
浏览器最初只是纯粹的查看程序,这是由于每次采取一些要求编程的操作时,必须将信息反馈回服务器,在服务器那一端进行处理。所以完全可能需要等待数秒乃至数分钟的时间才会发现自己刚才拼错了一个单词。这就叫作“客户端编程”。
applet 程序片

时刻提醒自己注意以下几个问题:
(1) 对象是什么?(怎样将自己的项目分割成一系列单独的组件?)
(2) 它们的接口是什么?(需要将什么消息发给每一个对象?)
在确定了对象和它们的接口后,便可着手编写一个程序。出于对多方面原因的考虑,可能还需要比这更多的说明及文档,但要求掌握的资料绝对不能比这还少。

想象成用遥控板(句柄)操纵电视机(对象)。只要握住这个遥控板,就相当于掌握了与电视机连接的通道。但一旦需要“换频道”或者“关小声音”,我们实际操纵的是遥控板(句柄),再由遥控板自己操纵电视机(对象)。如果要在房间里四处走走,并想保持对电视机的控制,那么手上拿着的是遥控板,而非电视机。
此外,即使没有电视机,遥控板亦可独立存在。

Heap 堆

Java对象本身永远都不会置入静态存储空间

wrapper 封装器  Scope 作用域

class ATypeName {/*类主体置于这里}
这样就引入了一种新类型,接下来便可用new创建这种类型的一个新对象:
ATypeName a = new ATypeName();

我们在Java里的全部工作就是定义类、制作那些类的对象以及将消息发给那些对象

class DataOnly {
  int i;
  float f;
  boolean b;
}

这个类并没有做任何实质性的事情,但我们可创建一个对象:
DataOnly d = new DataOnly();
可将值赋给数据成员,但首先必须知道如何引用一个对象的成员。为达到引用对象成员的目的,首先要写上对象句柄的名字,再跟随一个点号(句点),再跟随对象内部成员的名字。即“对象句柄.成员”。例如:
d.i = 47;
d.f = 1.1f;
d.b = false;

Method 方法

Java的方法只能作为类的一部分创建。只能针对某个对象调用一个方法

import的作用是指示编译器导入一个“包”——或者说一个“类库”

posted @ 2005-01-24 22:33 小毅 阅读(178) | 评论 (0)编辑 收藏

梵天:印度教神话中三大最高神之一。世界的创造者。佛教吸收其为护法神,称“大梵天王”

湿婆:印度三大神的第三位。又叫“西哇”。是最受崇拜的神之一。是象征“昌盛”和“吉兆”的神。同时又象征“毁灭”,是起死回生之神。一般被视为“破坏神”。同时他也是生殖之神,传到中国后与藏教密宗中的大欢喜菩萨互相影响。有时也被人塑成一面目狰狞的怒汉和一极美女子交合的形象。湿婆表现愤怒的一面传入日本后,作为大黑天十分闻名,是武士和浪人的保护神。

毗湿奴:三大主神之一,与前两者并称为三联神。称谓极多,有一千种以上,常见的为“那罗衍”,“世界之主”等。

因陀罗:雷电之神,众神之首,后成为天王。被佛教吸收后又叫“帝释天”,为善见城城主。

吉祥天:即拉克什密。被称为毗湿奴的妻子。在最古老的神话中与大梵天,俱毗罗,因陀罗联系在一起,是佛教的护法天王。是毗沙天门王之妹,号称“功德天王”。毗沙天王是北方天王,是财富之神,胜利,护法之神。

释迦:原名乔达摩。悉达多,佛教的创始人。相传为印度北部小国王子,后舍弃家庭,权位,独自出走。七年后在菩提树下顿悟成佛。又被称为大日如来。佛教中最为崇高的神,曾降伏过中国的战斗之神齐天大圣。

天龙八部:即八部众,说法见于佛经。《法华经。提婆达多品》中曾提到过:“天龙八部,人与非人,皆遥见彼龙女成佛、”

天:即帝释天为首的天神。天神的寿命也会完结,这是因为佛家相信事事皆有无常。天神临死前会出现“衣裳垢腻,头上花萎,身体臭秽,腋下出汗,不乐本位”这五种征兆,也就是所谓的“天人五哀”。

阿修罗:阿修罗是与天对立的一族。他们非常好战,男的极丑,女的极美。阿修罗有美女而无美食。天有美食而无美女。双方常因此而互相争斗,场面十分惨烈。“修罗场”的说法即从此来。阿修罗一族被视为战神,他还有个化身是火神大摩尼,也就是“拜火教”和中土“明教”的最高神。

龙:龙无论在东西方神话,还是在奇幻文化中都是个非常欢迎的角色。以其独特的外形,强大的力量备受青睐。可以说一说到奇幻,人们就会想到龙,龙几乎成了奇幻文学的代表。东西方的龙虽然有所不同,但它们也有很多相似之处,头部特征,善飞翔,会从嘴中吐出物质攻击等。这些惊人的巧合让人忍不住怀疑是否以前有此一类生物存在。龙的记载在我国由来以久,大量详实,准确,生动的记录贯穿着整个古代正史,有纪可考的记录最后见于民国初年,让人十分迷惑。但天龙八部中的龙其实说的是一种大蟒蛇。

乾达婆:拥有黄金之翼半人半鸟的精灵。天界的音乐家。

迦楼罗:中国人很熟悉的一种大鸟,传入中国后演变成了金翅大鹏鸟。原型是种翅有种种庄严宝色的神鸟,一天吞噬一条龙王和五百条小龙(哪来这么多龙让它吃?),五百年自焚一次,然后又从火焰中复活,凤凰重生的传说即来源于此。

其他有代表性的神
巴尔:又名巴卢尔或巴卡尔,出现在不同神话中,名称也不同。美索不达米亚一带的主神,掌管雷电和农牧,生殖。也是死而复生之神。与兄长穆图是死敌。起先是善神,后在基督教义中被视为邪神。在《暗黑破坏神二》中登场,被视为毁灭之王。

穆图:也名莫特。死神,冥界之神,混沌之神,干旱和歉收之神。是巴尔的兄长和主要对手。出自闪米特族神话。

阿卡特拉姆:凯尔特神话中的勇敢之神,达努神族努阿达的别名。曾与邪神巴尔殊死作战。

须佐之男:日本神话中最早的大神依邪那歧三子女中的最幼者,另两为就是日本最高神天照大神,和月读了。他全名为素盏鸣尊,乱暴之神,因其狂暴的性格而被视为破坏神。他斩杀了八歧大蛇,成为神话中的英雄。

伊希斯:埃及神话中神力非凡的巫师,被视为魔法的始祖。

塞特:出自埃及神话,希腊人称之为缇丰,为恶灵的化身,永远与善良作对。传说他曾化身黑猪,每月攻击啖食月亮。

哈奴曼:印度版孙悟空,是印度神话中的神猴。风神和母猴所生之子。在英雄叙事诗《罗摩衍那》中登场成为帮助罗摩王子的好帮手。他聪明非凡,力能排山倒海,善于腾云驾雾,变幻形象和大小(还说不是孙悟空?),多次救助罗摩王子,是智慧和力量的化身。

塞克尔:埃及神话中的死者之神。以鹰头木乃伊的形象出现,传说为冥界的判官,常用一架天平来称量死者的心脏,以决定他的待遇。在古埃及法老陵墓中的壁画上大量出现,在罗。斯托神庙中被膜拜。

posted @ 2005-01-23 19:08 小毅 阅读(585) | 评论 (0)编辑 收藏

奥丁:北欧阿斯神族的至高神,诸神之王,也是死者之王,战神,权力之神,魔法之神。曾冒死以一人之力闯入冥界,为人类取得古文字而拥有大量知识,为此失去一只眼睛。他身形高大,身披金甲,骑八足神马“斯莱普尼斯”,手持名枪“冈尼尔”,居住在“瓦尔哈拉”的神殿中,让女武神收集死者的魂魄,为终末之战“饶纳诺克”即“诸神的黄昏”做准备。为举世闻名的北欧蛮族,维京人所信仰。他们坚信如果英勇战死就可以进入“瓦尔哈拉”,所以战斗是勇猛无比,曾席卷过大半个欧洲。

女武神(瓦尔基里):侍奉主神奥丁的女神,奉命奔波在战场上,收集战死的勇士的灵魂,带往“瓦尔哈拉”,让其复活以应付诸神与巨人族的“诸神的黄昏”的最终战。女武神们各个武技高超,为人类的保护神 。著名剧作家瓦格纳曾为其谱写过名曲《女武神的飞驰》(瓦格纳以及他的作品和生平会在以后介绍,他的著名作品《尼伯龙根的指环》是歌剧版的奇幻小说,有兴趣的可以找来听听,十分精彩!)

齐格弗里德:德国著名英雄叙事诗《尼伯龙根之歌》里登场的英雄,他得到了拥有至高力的指环,可以听懂鸟语。他杀死过巨龙,沐浴过龙血,成为有最强肉体的不死男人。但却因为沐浴时一片树叶掉在了背上,肩胛骨下的一处成为致命弱点而被人杀死。(详情请参阅瓦格纳的《尼伯龙根的指环》)

洛基:最初被看作仁慈之神,因为其杰出的才能和外貌而被阿斯神族接受,但身为巨人族的他生性喜欢喜欢挑拨其他神争斗,还杀死了主神奥丁的儿子,被诸神囚禁,在诸神与巨人族的终末战“诸神的黄昏”时爆发,加入巨人族阵营战斗,最后带来了诸神的毁灭。

瑟特:住在火之国度的巨人,“诸神之黄昏”中率火巨人出战。

赫尔:主宰地下世界的女神,据说是洛基的女儿,奥丁赋予她到冥界尼弗尔海姆,统治九界的权力。

焚里尔:北欧神话中最著名的魔兽,洛基的子女之一,巨大狼形怪物,传说当他张开嘴后上下鄂可以顶住天地,因其性格凶暴而被矮人族囚困,直到终末战时,他才脱困,并且吞下了太阳和主神奥丁。

托尔:著名的雷电之神,名字即“轰鸣者”的意思,诸神中最具怪力的神,以巨大铁槌作战。他的铁槌也很著名,“托尔的铁槌”在许多作品中几乎成为了力量的代表。他还是丰饶之神,主管一切人类所必须经历的仪式,如婚丧嫁娶等。“诸神之黄昏”中托尔和世界蛇尤蒙冈多同归于尽。尤蒙冈多是一条自己衔着自己的大蛇,象征无限。

北欧命运三女神:掌握“存在”和“未来” 斯克尔特 掌握“必然”和“现在” 威尔珊迪
掌握命运和过去 ???(没找到。)

多瓦夫:矮人中的妖精族(奇怪的组合)。据说当初是蛆虫,因啃食了最初巨人尤米尔的遗体而获得了人形和智慧。拥有天才的锻造本领,是武器和工艺品的杰出制造者,也就是奇幻小说中常常出现的矮人族设定的原形,代表人物很多,如《龙枪》中弗林特。火炉。他们共同的特点为矮胖的身体,大胡子,手持战斧,忠诚而脾气暴躁。

BERSERK:巴萨卡,这个词源于古代北欧语言,意思是“披着熊皮的人”后为“狂战士”的称谓。是奇幻作品中最受欢迎的职业设定之一。狂战士受主神奥丁的加护,战斗中会陷入极度兴奋的忘我状态,以超强的肉体打击敌人,没有恐惧,疼痛的感觉。严重者会陷入癫狂而死。

posted @ 2005-01-23 19:07 小毅 阅读(770) | 评论 (0)编辑 收藏

宙斯:希腊神话中的至高神,掌握雷电,所以又被称为雷神。在母亲蕾亚的支持下,杀了父亲克洛诺斯,成为了第三代神王。性格极为好色,常背着妻子赫拉与其他女神 和凡人私通,私生子无数。

克洛诺斯:前奥林波斯神诋之一,天神乌拉诺和大地女神瑞亚之子,泰坦巨人中的最幼者,推翻父亲成为第二代神王,其后却遭到与父亲同样的命运。

波塞冬:海之皇,宙斯的二哥,手持巨大三叉戟,统领海中所有生物。有被描写为半人半鱼的模样,能呼风唤雨。性格凶暴残忍。

哈帝斯:宙斯,波塞冬,得墨忒尔的兄长,主管冥界,力量很强,但性格平和。除了抢夺丰收女神得墨忒尔之女春之女神玻尔塞富涅为妻外,无它恶行。

瑞亚:希腊神话中的大地女神,是奥林波斯神系之前的古神,也是泰坦之母,她与乌拉诺生下了众多希腊神诋。

帕拉斯。雅典娜:智慧女神和正义战争女神,宙斯和墨涅斯之女,她出生时宙斯头部剧烈疼痛,之后用大斧劈开后,雅典娜手持长枪,身披战甲从中跳出。是很受欢迎的神。因失手杀死好友帕拉斯而改名为帕拉斯。雅典娜。

阿波罗;太阳神,宙斯和勒托之子,月神和狩猎女神阿尔忒弥斯的兄长,希腊十二大神诋之一,又名赫利俄斯。主掌光明,医药,文学,诗歌,音乐等。每天架天马拉乘的的黄金车巡游天上一周。

阿尔忒弥斯:月神,狩猎女神,纯洁之神。所以也被称为处女的保护神。阿波罗的孪生妹妹。

阿瑞斯:战神,是凶残,狡诈,非理性的,为战争而战争的神。曾与工匠之神的妻子维纳斯私通,被装进一张工匠之神特制的大网中而无法脱身。(维纳斯原为罗马神诋,后为希腊神话所吸收。)

赫尔墨斯:宙斯与阿特拉斯的女儿迈亚所生的儿子。脚生双翼,速度如飞,成为天界众神传令的使者,后为旅人,商人,盗贼的保护神,经常化为凡人下界帮助保护者。

狄俄涅索斯:酒神,拉丁文名字为巴卡斯,传说中酿酒的发明人,形象为一手持酒杯,一手拿松果木神杖,后升为欢乐,文明之神。

赫拉克勒斯:宙斯与凡人的私生子,为神母赫拉所仇视,但在雅典娜的巧妙安排下,赫拉为其哺过乳。出生后既力大无穷,曾于摇篮中捏死过两条巨蛇。成人后,完成了号称不可能完成的十二件大功。因此其后升为大力神。因在完成十二件大功中替人类扫除了众多妖魔怪兽,并解放了为宙斯囚禁的善神普罗米修斯,所以受人爱戴。富于反抗精神,曾不满宙斯的专制而反抗神界。

刻耳柏洛斯:地狱的守门狗,三头而蛇尾的魔兽,以青铜之声攻击敌人,是巨人和怪物所生的怪兽。

posted @ 2005-01-23 19:06 小毅 阅读(2112) | 评论 (1)编辑 收藏
一、马太效应
    《新约 马太福音》中有这样一个故事,一个国王远行前,交给三个仆人每人一锭银子,吩咐他们:“你们去做生意,等我回来时,再来见我。”国王回来时,第一个仆人说:“主人,你交给我们的一锭银子,我已赚了10锭。”于是国王奖励他10座城邑。第二个仆人报告说:“主人,你给我的一锭银子,我已赚了5锭。”于是国王例奖励了他5座城邑。第三个仆人报告说:“主人,你给我的一锭银子,我一直包在手巾里存着,我怕丢失,一直没有拿出来。”于是国王命令将第三个仆人的一锭银子也赏给第一个仆人,并且说:“凡是少的,就连他所有的也要夺过来。凡是多的,还要给他,叫他多多益善。”这就是马太效应。看看我们周围,就可以发现许多马太效应的例子。朋友多的人会借助频繁的交往得到更多的朋友;缺少朋友的人会一直孤独下去。金钱方面更是如此,即使投资回报率相同,一个比别人投资多10倍的人,收益也多10倍。
    这是个赢家通吃的社会,善用马太效应,赢家就是你。
  
  对企业经营发展而言,马太效应则告诉我们,要想在某一个领域保持优势,就必须在此领域迅速做大。当你成为某个领域的领头羊的时候,即使投资回报率相同,你也能更轻易的获得比弱小的同行更大的收益。而若没有实力迅速在某个领域做大,就要不停地寻找新的发展领域,才能保证获得较好的回报。
二、手表定理
    手表定理是指一个人有一只表时,可以知道现在是几点钟,而当他同时拥有两只表时却无法确定。两只表并不能告诉一个人更准确的时间,反而会让看表的人失去对准确时间的信心。你要做的就是选择其中较信赖的一只,尽力校准它,并以此作为你的标准,听从它的指引行事。记住尼采的话:“兄弟,如果你是幸运的,你只需有一种道德而不要贪多,这样,你过桥更容易些。”
    如果每个人都“选择你所爱,爱你所选择”,无论成败都可以心安理得。然而,困扰很多人的是:他们被“两只表”弄得无所,心身交瘁,不知自己该信仰哪一个,还有人在环境、他人的压力下,违心选择了自己并不喜欢的道路,为此而郁郁终生,即使取得了受人瞩目的成就,也体会不到成功的快乐。
   
  手表定理在企业经营管理方面给我们一种非常直观的启发,就是对同一个人或同一个组织的管理不能同时采用两种不同的方法,不能同时设置两个不同的目标。甚至每一个人不能由两个人来同时指挥,否则将使这个企业或这个人无所适从。手表定理所指的另一层含义在于每个人都不能同时挑选两种不同的价值观,否则,你的行为将陷于混乱。
posted @ 2005-01-23 19:00 小毅 阅读(254) | 评论 (1)编辑 收藏

练级无至尽,现在网络游戏似乎除了练级还是练级,一切都是为了练级...

是不是可以在游戏中加入年龄这种概念,即可以把在线时间换算成游戏中角色年龄,角色年龄只跟角色在线时间有关,不管角色在线上做什么.而角色的各项技能又和角色年龄有关,在各个年龄段练习不同的技能,打怪只是提高自己的技能阶级.角色到达一定年龄阶段角色技能会衰减....还想的不是很成熟..

 

 

posted @ 2005-01-21 19:12 小毅 阅读(137) | 评论 (0)编辑 收藏

所有东西都是对象.

程序就是对象的组合,对象之间通过消息联系

对象就是类class的一个实例.类的最重要的特征就是能发什么样的消息给对象.!

对象可以包含对象.封装! 

interface规定了可对一个特定对象发那些请求.

若只是简单地继承一个类,并不做其他任何事情,来自基础类接口的方法就会直接照搬到衍生类。这意味着衍生类的对象不仅有相同的类型,也有同样的行为,这一后果通常是我们不愿见到的。

等价与类似.新类型拥有旧类型的接口,但也包含了其他函数,所以不能说它们是完全等价的


我们将这种把衍生类型当作它的基本类型处理的过程叫作“Upcasting”(上溯造型)。

将一条消息发给对象时,如果并不知道对方的具体类型是什么,但采取的行动同样是正确的,这种情况就叫作“多形性”(Polymorphism)。

在面向对象的程序设计中,由于C++的引入而显得尤为突出的一个问题是:所有类最终是否都应从单独一个基础类继承。在Java中(与其他几乎所有OOP语言一样),对这个问题的答案都是肯定的,而且这个终级基础类的名字很简单,就是一个“Object”。

上溯造型成一种更“通用”的类型。而是下溯造型成一种更“特殊”的类型

posted @ 2005-01-20 12:36 小毅 阅读(242) | 评论 (0)编辑 收藏

自我堕落了两天了...

我该回到原来的生活中去了...

真的该回去了....

恩....努力,加油,我不要酱紫的反思!!!!

posted @ 2005-01-19 22:41 小毅 阅读(139) | 评论 (0)编辑 收藏

- - !

在狗海和叉叉海中被无情的蹂躏....

呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜呜~~~~~

posted @ 2005-01-18 22:11 小毅 阅读(115) | 评论 (0)编辑 收藏

晶晶:

    17号听说你的噩耗....

  一直 希望你能坚持的走回来 ...但....

   虽然你我并不相识...我衷心祝福你在天堂的路要走好...祝福.....

posted @ 2005-01-18 11:34 小毅 阅读(142) | 评论 (0)编辑 收藏

《轩辕本纪》有神兽白泽的故事:(黄)帝巡狩,东至海,登桓山,于海滨得白泽神兽,能言,达于万物之情。因问天下鬼神之事。自古精气为物、游魂为变者凡万一千五百二十种,白泽言之;帝令以图写之,以示天下。” 

    
白泽 昆仑山上的神兽,著名的神兽,浑身雪白,能说人话,通万物之情,很少出没,除非当时有圣人治理天下,才奉书而至。
 

    
 出生于东海流破山,其形状如牛,无角,身形巨大,昏黑色,但只有一只脚支撑,也叫独脚夔。
 
  夔是一种恶兽,能放出如同日月般的光芒和雷鸣般的叫声。
 

    
凤凰 大家很熟悉的神鸟了,头像鸡,颔像燕,颈像蛇,胸象鸿,尾像鱼。五德之鸟。
 

    
麒麟 是品性仁慈、妖力强大的生物,谙悟世理,通晓天意,可以聆听天命。人的世界有十二个国家,分别由十二个王来统治。王不是以出身或功绩来评选,而是由天命来决定。麒麟就是传达天命,为自己的国家选出王者的神兽。
 
     
  梼杌
 
  原本只是令人害怕厌恶的恶人,根据《左传》文公十八年:颛顼有不才子,不可教训,不知诎言,告之则顽,舍之则嚣,傲狠明德,以乱天常,天下之民,谓之梼杌。这个不可教训的恶人死后最终演化成上古著名的魔兽,《神异经·西荒经》记西方荒中,有兽焉,其状如虎而犬毛,长二尺,人面,虎足,猪口牙,尾长一丈八尺,搅乱荒中,名梼杌。已然是一派怪异扭曲的形象,与其说是魔兽不如说是生化实验失败核泄漏的产物。
 
   
  獬豸
 
  古代神裁制度下产生的著名神兽,又被称为法兽。根据《论衡》和《淮南子·修务篇》的说法它身形大者如牛,小者如羊,样貌大致类似麒麟,全身长着浓密黝黑的毛发,双目明亮有神,额上通常有一只独角,据传角断者即死,有被见到长有双翼,但多数没有翅膀。拥有很高的智慧,能听懂人言,对不诚实不忠厚的人就会用角抵触。后世常将普通羊饲养在神庙,用来代替獬豸
 

  吼
 
    形如兔,两耳尖长,仅长尺余。狮畏之,盖吼溺着体即腐。
 
    《偃曝馀谈》有载。
 
  
 
  重明鸟
 
    在《拾遗记》中说,尧在位七十年,有积支之国,献明鸟,一名双晴言在目。状如鸡,鸣似凤。解落毛羽,用肉翅而飞。能抟逐兽狼,使妖灾群恶不能为害。或一年来数次,或数年都不来。国人都全洒扫门户,以留重明。如重明鸟未到的时候,国人或刻木,或造铜像,

  为此鸟的形象,放在明户之间,则魑魅之类,自然退伏。所以到了现在,都刻木像、造铜像或画图像,故现在画鸡于门上。
 
  
 
  华方
 
    在《山海经.西次三经》中,有在章峨之山,有一种鸟,型状如鹤,一足,有红色的纹和白喙。就是叫做华方。《海外南经》:「华方鸟在东方,青水西,只有一只脚。」而《淮南子.汜论训》中说,木生毕方。因而有说毕方是木精所变的,而形状是鸟、一足、不食五谷。《在文选.张衡〔东京赋〕》中说:「华方...老父神,如鸟,两足一翼,常衔火在人家作怪灾也。」而《韩非子.十过》中说:「昔者黄帝合鬼神于西秦山之上,驾象车而蛟龙,毕方并害。袁珂说华方是凤,凤为太阳鸟,故「见则其吧有讹火」。《骈雅》:「毕方,兆火鸟也。」凤即为神,也是灾难的象征。《淮南子.本经训》:「尧之时...大风为害,尧乃使羿...缴风于青邱之泽。」大风即大凤。《淮南子》「木生毕方」是受五行思想的影响所玫,意即木生火。因毕方为火鸟故用毕方代火,非指毕方生于木。
 

  白虎
 
    在中国,白虎是战神、杀伐之神。虎具有避邪、禳灾、祈丰及惩恶的扬善、发财致富、喜结良缘等多种神力。而它是四灵之一,当然也|是由星宿变成的。是由二十八星宿中,西方七宿:奎、娄、胃、昂、毕、觜、参。所以是西方的代表,而它的白,是因是西方,西方在五行中属金,色是白的。所以它叫白虎不是因它是白色,而是从五行中说的了。
 
  
 
  玄武
 
    玄武是一种由龟和蛇组合成的一种灵物。玄武的本意就是玄冥,武、冥古音是相通的。武,是黑色的意思;冥,就是阴的意思。玄冥起初是对龟卜的形容:龟背是黑色的,龟卜就是请龟到冥间去诣问袓先,将答案带回来,以卜兆的形式显给世人。因此,最早的玄武就是乌龟。以后,玄冥的含义不断地扩大。龟生活在江河湖海(包括海龟),因而玄冥成了水神;乌龟长寿,玄冥成了长生不老的象征;最初的冥间在北方,殷商的甲骨占卜即「其卜必北向」,所以玄冥又成了北方神
 
  
 
  朱雀
 
    凤凰在中国来说,是一种代表幸福的灵物。它的原形有很多种。如锦鸡、孔雀、鹰鹫、鹄、玄鸟(燕子)等等...又有说是佛教大鹏金翅鸟变成的。凤凰神话中说的凤凰是有鸡的脑袋、燕子的下巴、蛇的颈、鱼的尾、有五色纹。又请凤是有五种品种,以颜色来分的:红是凤、青是鸾鸟、白是天鹅、另有黄和紫的凤凰又可说是朱雀或玄鸟。朱雀是四灵之一,也和其它三种一样,它是出自星宿的,是南方七宿的总称:井、鬼、柳、星、张、翼、轸。联想起来就是朱雀了。朱为赤色,像火,南方属火,故名凤凰。它也有从火里重身的特性,和西方的不死鸟一样,故又叫火凤凰。
 
  
 
  青龙
 
    在中国,龙的地位就远高于印度。因在中国,龙是神物、是至高无上的,也是皇帝的象征。也是东方的代表、五行中是属木的,也因青色是属木的,故此有左青龙、右白虎的说法。
 
    星宿的是用廿八星宿中,东方七宿-角、亢、氐、房、心、尾、箕,古人把它们想象成为龙的形象,因位于东方,按阴阳五行给五方配色之说,东方色青,故名「青龙」。又有龙性淫旳说法,和牛交时生麒麟、和猪交时生象。又有龙生九子,都不像龙的说法,是这样的:大儿是叫囚牛:它平身喜爱音乐,故常立在琴头上。如汉族的胡琴,白族的三弦琴等。而蒙古的马头琴也可能是囚牛的变种。二儿子是睚毗:它平身爱杀所以多被安在兵器上,用以威摄敌军。同时又用在仪仗上,以显得更加威严。三儿是嘲风:是只兽形龙,样子有点像狗,它善于瞭望,故多安在殿角上。据说可以威摄妖魔、消灭灾祸。第四儿是蒲牢:喜欢吼叫,人们就把它安在钟上,大多是蒲牢的形象。据说它是住在海滨的,但却十分怕鲸鱼,一但鲸鱼发起攻击,它就会吓得乱叫。故人们把木杵造成鲸的形状,以令铜钟格外响亮。第五儿是狻猊:形似狮子。是外来品,随佛教传入中国的,所以性格有点像佛。它好安静、又爱烟火。所以往往把它安在佛位上或香炉上,让它为佛门护法。第六儿是霸下:又名赑屃,样子似龟。相传上古时它常背起三山五岳来兴风作浪。后被夏禹收服,为夏禹立下不少汗马功劳。治水成攻后,夏禹就把它的功绩,让它自己背起。故中国的石碑多由它背起的。第七儿是狴犴:又名宪章,样子像虎。相传它主持正义,而且能明是非,因此它被安在狱门上下、衙门大堂两则、以及官员出巡时肃静回避的牌上端,以维护公堂的肃然之气。第八儿是负屃:因它喜爱文学,故多安在石碑的两则。么子是螭吻:又名鸱尾,鱼形的龙。相传是大约在南北朝时,由印度「摩竭鱼」随佛教传入的。它是佛经中,雨神座下之物,能够灭火。故此,螭吻由此变化出来,所以它多安在屋脊两头,作消灾灭火的功效。
 
  
 
  饕餮
 
    《神异经·西南荒经》:西南方有人焉,身多毛,头上戴豕。贪如狠恶,积财而不用,善夺人谷物(上二句原作好自积财,而不食人谷,据《史记·五帝本纪》正义引改)。强者夺老弱者,畏强而击单,名曰饕餮。《春秋》饕餮者,缙云氏之不才子也。
” 
  《左传·文公十八年》云:缙云氏有不才子,贪于饮食,冒于货贿,侵欲崇侈,不可盈厌;聚敛积实,不知纪极;不分孤寡,不恤穷匮。天下之民以比三凶,谓之饕餮。《神异经》所谓《春秋》言,即此。
 
    《吕氏春秋·先识》云:周期着饕餮,有首无身,食人未咽,害及其身。宋罗泌《路史·蚩尤传》注云:蚩尤天符之神,状类不常,三代彝器,多者蚩尤之像,为贪虐者之戒。其像率为兽形,傅以肉翅。揆其所说,殆亦饕餮。
 
    《左传》谓饕餮是缙云氏不才子,而《史记·五帝本纪》集解引贾玄曰:缙云氏,姜姓也,炎帝之苗裔,当黄帝时在缙云之官也。蚩尤姜姓,亦为炎帝之苗裔(《路史·蚩尤传》),故蚩尤很可能即此缙云氏之不才子饕餮。又《山海经·北次二经》所记狍(号鸟),郭璞注以为即《左传》之饕餮。
 
    附:狍(号鸟):《山海经·北次三经》:钩吾之山……有兽焉,其状羊身人面,其目在腋下,虎齿人爪,其音如婴儿,名曰狍(号鸟),是食人。郭璞注:为物贪(忄林),食人未尽,还害其身,像在夏鼎,《左传所谓》饕餮是也。
” 
  
 
  远飞鸡
 
    又名翻明鸡、目羽鸡。紫色,翅膀下亦有眼睛。日出夕还。(鸽子的异种)
 
    《洞冥记》有载。
 
  
 
  腓腓
 
    有点象狸,白色的尾巴。养之可以解忧愁。(高级宠物)
 
    《山海经(中山经)》有载。
 
  
 
  诸犍
 
    人面豹身,牛耳一目,有长尾,能发巨声。行走时衔着尾巴,休息时盘着尾巴。
 
    《山海经(北山经)》有载。
 
  
 
  混沌
 
    长毛四足,如犬,有腹无五脏。抵触善人,凭依恶人。(绝对恶灵是也)
 
    (另有混沌神之说,另行说明,不归此处)
 
    《神异经(西荒经)》有载。
 
  
 
  应声虫
 
    居于人腹。宿主每发声,腹中便有小声效之,且会越来越大。以雷丸可治。(腹语?)
 
    《续墨客挥犀》、《隋唐嘉话》有载。
 
  
 
  庆忌
 
    又名要离。泽精,人形,大概十几公分高。黄衣黄帽,称黄色小车,日驰千里。叫它的名字可使之报信(亦有捉鱼之说)。历史上也有人名(吴王僚子,猛将)、塔名为此。
 
    《管子(水地)》、《太平预览》有载。 

posted @ 2005-01-17 11:02 小毅 阅读(1498) | 评论 (1)编辑 收藏
生命是没有贵贱之分的,人类和其他物种的生命都是同样伟大的。剥夺一个弱小生命的行为和杀人并没有太大的不同,这一点对于魔法师来说尤为重要。若是有一天,你成为一名强大的魔法师,那么,常人的生命在你的眼中也将随之变得脆弱,而你对生命的认识将决定你是走向黑暗还是光明。要杀死一条脆弱的生命只要一个简单的法术,要孕育一条伟大的生命却需要十月怀胎。当你失去对他人生命的热爱时,你就不会介意使用暗黑系的那些邪恶法术。
posted @ 2005-01-17 10:57 小毅 阅读(234) | 评论 (0)编辑 收藏
http://gd.91.com/bbs/Topic/Topiclist.aspx?URL=0,201,0,0,1,0
posted @ 2005-01-16 16:33 小毅 阅读(169) | 评论 (0)编辑 收藏

手机就是一台网络计算机,基于手机的网络游戏将会成为IT最后的金矿..... 
一、背景介绍

  现在的移动电话是小型的计算机,它的处理能力与台式机的标准处理能力相比很有限,但是足够运行一个小型的游戏。 

  现在的手机的一个特性就是它们还是网络计算机,能够高速发送和接收数字数据。 除了语音数据以外,它们还可以发送和接收其它类型的数据。所以类似《传奇》、《千年》这样的网络游戏也可以在手机上实现。

  当然就处理能力和性能而言,当前阶段的支持Java的手机很接近第二代控制台游戏机、80年代中期的家用电脑和早期的手持游戏机。内存通常很有限--一般128KB到500KB--虽然有些智能手机比如Nokia 3650有4 MB内存。与PC相比,它们的输入和显示功能也很有限;小屏幕(许多仍然是黑白屏幕),为电话拨号优化的小键盘并不针对文本输入,以及有限的声音处理能力。

  二、移动游戏是如何实现的 

  目前在移动电话实现游戏的技术主要有以下几种:

  1、嵌入式游戏

  一些游戏在出厂前就固化在芯片中了,象Nokia的贪吃蛇就是一个最著名的例子。但由于用户不能自己安装新的游戏,所以它们逐渐变得不太流行了。

  2、短消息服务游戏

  短信息服务(SMS)被用来从一个手机向另一个手机发送简短的文字信息。用户一般为每条信息支付1毛钱的信息费。短消息服务游戏的玩法通常是发送一条信息到某个号码,这个号码对应游戏供应商的服务器,服务器接收这条消息,执行一些操作然后返回一条带有结果的消息到游戏者的手机中。短消息服务不是一个特别好的用于实现移动游戏的技术,因为它依靠用户输入文字,因此本质上它是一个命令行环境。而且它还很昂贵,即使和服务器只交换10次信息也要花费1块钱或者更多的钱。虽然多媒体消息服务( MMS)技术的推出使得基于消息的游戏更加具有吸引力,但是仍然不是一种重要的游戏环境,所以在此我们不会深入探讨它。

  3、浏览器游戏

  差不多1999年以后出厂的每台手机都有一个无线应用协议(WAP)浏览器。WAP本质上是一个静态浏览载体,非常像一个简化的Web,是为移动电话小型特征和低带宽而专门优化的。要玩WAP游戏的话,可以进入游戏供应商的URL(通常通过移动运营商门户网站的一个链接),下载并浏览一个或多个页面,选择一个菜单或者输入文字,提交数据到服务器,然后浏览更多的页面。WAP (1.x)版本使用独特的标记语言WML,允许用户下载多个页面,即卡片组。新版本的WAP(2.x)使用XHTML的一个子集,一次传递一个页面并且允许更好的控制显示格式。两种版本的WAP都提供一个比SMS更友好的界面,而且更加便宜,只要根据使用时间付费而不是根据信息数。但是它是一个静态的浏览载体;手机本身几乎不需要做任何处理过程,并且所有游戏必须通过网络,所有的操作都是在远程服务器上执行的。手机将继续带有WAP浏览器,而且开发者可能发现WAP有利于传送比游戏应用程序提供的更详细的帮助信息或者规则,因为大部分的游戏仍然受有限的内存制约。然而,WAP没能达到高使用率的目标(在欧洲和北美洲,只有6%的手机使用WAP),而且移动运营商和游戏开发者正在远离WAP技术。 我们也不会在这里探究任何WAP的细节。

  4、J2ME和其它的解释语言

  Java 2 Micro Edition (J2ME)是一种针对移动电话和PDA这样的小型设备的Java语言。大部分的手机厂商都迫切希望Java手机推广应用。上千万的Java手机已经到了消费者的手中。J2ME与台式机中的Java相比还是有很大的限制,但是它已经极大的提高了移动电话支持游戏的能力。它有比SMS或WAP更好控制的界面,允许使用子图形动画,并且可以通过无线网络连接到远程服务器。支持Java的手机的普及,所以它成为目前最好的移动游戏开发环境,我们在这里将详细研究J2ME游戏的开发。J2ME不是手机上配置的唯一的解释语言,但是它是一个许多厂商支持的行业标准。一些专用的解释语言也在某些区域有上佳的表现,如北美的Qualcomm的BREW ( Binary Runtime Environment for Wireless,用于无线应用程序的二进制运行环境)和一些韩国移动运营商支持的名为GVM的标准。在这个系列文章中,我们将要重点讨论使用J2ME开发移动游戏,并且将介绍在Nokia平台上开发移动游戏的方法。 

  5、C++应用程序或其它编译语言

  另外一种开发方式是使用C++开发移动游戏,把程序编译为本机机器代码。编译语言程序一般说来提供更好的控制用户界面,以及与解释语言相比更快的速度。C++开发者可以定位于Series 60平台设备。此外,Microsoft的.Net CF也可以以编译的形式开发移动设备上的游戏,在以后的文章中我将介绍Pocket PC平台上游戏开发的方法。

三、移动游戏开发与传统游戏开发的区别 

  移动游戏开发与传统游戏开发区别在许多方面:

  1、开发团队的大小

  传统的PC和控制台游戏一般需要12到30人的开发团队。因为大部分移动游戏规模比控制台游戏小,所以一般情况下只需要3到5人的团队开发,有的时候甚至设计者和编程者是同一个人。

  2、预算

  传统游戏的预算在一百万美元到五百万美元之间。大部分移动游戏的预算则通常少于一百万美元。实际上,移动电话有限的显示能力和对应用程序大小的限制使得不可能象传统游戏那样投入大量的财力物力。从某种意义上来说,这也算是一个优点。

  3、开发周期

  传统的游戏一般要开发两到三年。而大部分移动游戏几月之内就能开发完毕。换句话说,只要有一个小型开发团队和一个小的预算,你就可以开发并推广一个专业品质的移动游戏。因此,对于许多在传统游戏领域遇到挫折的开发者来说,移动游戏开发有很强的吸引力。

  4、网络设备

  移动游戏可能不同于我们之前看到的任何游戏:它受载体因素的限制,但是支持网络并且可多人游戏。用于PC的调制解调器也只是8年前才大范围应用;控制台游戏只不过现在才能上网。移动电话的特性决定它是一种网络设备。即使它们的处理能力使人想起以前的老式计算机技术,但是它们的网络性能却更加出众。

  5、开放标准

  控制台游戏开发需要从控制台游戏厂商取得授权和支持,需要支付给他们"平台使用费"。在无线应用程序世界(如同在PC游戏开发中一样),你可以免费的开发任何款式的游戏,而不要支付Nokia、Sun或其他平台提供商一分钱。此外,这些移动游戏开发平台标准可以向开发者发布、开放并可免费取得。

  6、部署

  传统的游戏主要是在软件市场上购买。而移动游戏主要是由用户从移动门户网站下载并安装。在有些情况下,它们是通过无线网络下载的。有些手机允许你下载一个应用程序到计算机中,然后通过数据线传送到手机中。

  因此,移动游戏的销售渠道是非常不同的。用户一般通过移动运营商的游戏菜单、手机厂商预装在手机中的游戏菜单或者无线应用程序门户网站上找到移动游戏。

  四、载体的优点

  1、庞大的潜在用户群

  现在全球超过十亿部移动电话正在被使用,并且这个数目正在逐渐增加。在除美国之外的每个发达国家,拥有手机的人数比拥有计算机的人数更多。虽然那些手机只有一小部份是支持Java的手机,但是这个数目正在快速地提高并且在几年内Java手机将要成为行业标准。移动游戏潜在的市场比其它任何平台,比如Playstation和GameBoy都要大。

  2、便携性

  GameBoy比任何其他控制台游戏卖出的多的一个原因就是:便携性。人们可以随时随地玩他们选择的游戏。与现在的游戏控制台或者个人电脑相比,手机可能不是一个好的游戏设备,但是人们基本上是随时随刻都把它们带在身边。在他们离开家的时候或者想玩的时候,给开发者应该为他们提供好玩的游戏。

  3、支持网络

  因为移动电话是网络设备,所以可以实现多人游戏,虽然有某些限制因素。

五、载体的缺点

  1、屏幕小

  你面对的是小型的屏幕。虽然屏幕分辩率持续提高,并且彩屏即将成为标准,但是屏幕尺寸还是一直很小,因为没有人乐意拿着砖块一样大的手机。

  还有一个相关的问题:不同的手机的屏幕大小是不同的。比如说Nokia Series 60平台设备就提供了和Nokia 5100这样的Series 40设备不同的屏幕尺寸。虽然各个厂商已经标准化它们产品的屏幕尺寸以避免分割市场,但是开发者仍然需要为不同的电话优化他们的游戏--你肯定想使用特定的手机上所有可用的屏幕空间。

  2、有限的颜色和声音支持

  大部分使用者手中的手机仍然是黑白的,虽然现在出售的支持Java的手机大部分都是彩屏手机。在这些手机中12bit彩色非常流行。

  即使手机本来就有声音设备,但是应用程序播放声音的能力却非常有限。J2ME规范根本不需要硬件厂商支持声音,虽然基本的Java手机允许使用一些声音并且MIDI支持正在成为标准。通常,手机中只有一个语音或者一个声道可用。

  3、应用程序大小限制

  大部分的Java手机只有很少的内存空间用于运行MIDlet。此外,对MIDlet的大小始终有一个限制。实际的限制取决于手机设备和移动运营商的规定。

  在这样的限制条件下设计开发移动游戏固然是非常困难的,但是我们要知道,第一台家用电脑只有64 KB内存,但是仍然有人热衷于在其上开发游戏软件。在一些智能手机上内存的限制就少一些,比如Nokia 3650甚至可以运行几兆字节的应用程序。

  4、高等待时间

  等待时间----机器发出请求和接到响应之间所花费的时间----在计算机上是以微秒计算;在有线因特网上是以毫秒计算;而在无线网络则要以秒计算。

  等待时间是网络游戏中一直存在的一个问题,开发者们总是在努力消除它带来的问题。无线网络等待时间非常长,这就不可能有效的开发多人快速动作移动游戏。然而基于回合制的多人游戏是相当可行的,我们在后面的文章中将讨论如何使用各种方法来处理这个问题。

  虽然移动运营商总是在努力增加移动电话可用的带宽,但是他们却没有把降低等待时间当成首要解决的问题,因为它对于别的应用程序并不重要。

  还有一种特殊情况:使用蓝牙技术或其他无线局域网技术的手机可以和附近的蓝牙设备使用因特网等待时间(一般200-400毫秒)通讯。这样,使用像Nokia 3650这样的智能手机,你就可以和附近的移动用户一起玩多人快速动作游戏了。

  5、可中断性是关键

  当用户接听电话的时候,手机都会中断进行中的游戏。游戏程序必须能够暂停并且继续,而且不会造成游戏问题(例如,游戏者在打电话的时候老怪仍然在移动,打死玩家扮演的角色,导致输掉游戏)并且不会造成内存溢出。这需要在编程的时候多注意,Nokia提供了技术文档帮助J2ME和Symbian C++开发者了解并解决这个问题。

  6、正在发展的技术

  用于开发移动游戏的技术并不是针对游戏设计的,因此常常有特定的限制条件。例如,J2ME规范不需要支持透明度,这就使得子图形除了在空白的背景上以外,在任何背景上都会很难看。

  幸运的是,大部分设备厂商的Java手机都补充了J2ME,支持了透明度。为了充分利用J2ME的性能,你需要支持手机特定的API;为了得到最好的效果,就需要为一个游戏编写好几个版本。最近发行的MIDP 2.0规范解决了一些此类问题,但是对不兼容MIDP 2.0的手机是无效的。

六、避其短处 取其长处

  游戏有惊人的可塑性;它们可以使用从石器时代到现代高科技的每一种技术来实现。每当你使用你以前从来没有使用过的技术进行开发的时候,你需要了解它的性能和局限,努力把它的性能发挥到极限,同时回避或者解决它的局限性。

  我们可以从我们的移动游戏的性能和局限性的讨论中得出什么结论呢?

  1、短的游戏时间

  人们迟早要打电话或者接电话,并且他们不想把所有的电量都用来玩游戏。理想的情况是每一回合游戏应该保持在五个分钟或更短时间之内。这不意味着一个完整的游戏必须在五分钟之内结束--而是你应该允许游戏者中断、保存和继续游戏。

  2、玩家有自己的时间表,而不是必须遵循你的时间表

  让人们在想要玩游戏的时候玩,不要强迫他们等待(如果你可以避免),也不要要求他们在任何时间都在游戏中。

  3、避免等待时间

  这对单人游戏来说很容易实现。在多人游戏中,你就需要解决等待时间的问题了。(我们将在后面讨论这个问题。)

  4、使用网络

  网络不一定对于每个移动游戏都是必需的,但是那种与人竞争的感觉,即使只有一个排行榜,也能吸引更多的游戏者。要记住,手机实际上是一种社会性设备,添加某种社会性因素到你的游戏中会使它更加受欢迎。

  5、尽可能地让游戏保持小型

  记住一点,人们仍然热中于80年代的优秀的游戏。在某些方面,技术的限制强迫你把更多的注意力放到基本的游戏中去。

  当我们在后续文章中探讨开发的时候,我们将讨论一些技术问题。

  6、做好支持多种手机的准备

  至少,需要支持不同的屏幕尺寸,这对Nokia系列手机很容易做到。为Series 40开发一种版本,为Series 60开发另一种版本。多数情况下,你还要利用特定手机的性能和API,比如Nokia的用户界面和SMS API,你要为不具备相同特性的手机开发不同的版本。

  7、为国际化做好准备

  全世界都在使用移动电话,每一种语言都有自己的市场。在你开发的时候你就要做好计划,以便更利于本地化。

七、处理等待时间

  移动游戏如何解决无线网络的高等待时间呢?

  1、单人游戏

  游戏者的游戏不需要用到网络,除非是把高分传送到排行榜中,或允许游戏者浏览排行榜。这种网络通讯对于游戏影响不大,几秒钟的延迟不会引起用户的反感。

  实质上,在大多数的单人游戏中并没有这个问题。

  2、"多玩家"单人游戏

  在一个"多玩家"单人游戏中,游戏者感觉他们是在玩一个多人游戏,但是事实上,每个人只是面对相同的游戏,在游戏或者回合结束时比较分数。

  当一个游戏者加入游戏时,他告诉其他游戏者他的ID号,然后开始玩单人游戏。服务器要么给每个游戏者发送一个包含相同消息的游戏状态文件,要么发送一个来自构造启动游戏状态的客户软件的代码。每个游戏者玩游戏,设法取得最高的得分。当一个游戏者结束游戏后,他的客户端程序把他的得分提交到服务器。当所有的游戏者都完成游戏后(或者超过某个时间以后),服务器告诉每个游戏者谁取得了最高分,以及每个游戏者取得的分数。

  这种风格的游戏在因特网上相当成功;AOL最受欢迎的游戏Slingo就是一个很好的例子。

  因为只有在服务器开始或者结束游戏的时候才需要交换消息,所以等待时间只有在这些时候才成为一个问题。

  3、基于回合的游戏

  在一个基于回合的游戏中,游戏者进入他们的回合,并在接收结果之前需要等待一段时间。几秒钟的延迟是可以容忍的。

  有两种基于回合的游戏:

  3.1、轮流游戏

  在一个轮流游戏中,每个游戏者按次序进入回合。像象棋、红心大战这样的经典游戏就是很好的例子。
这种游戏的缺点就是游戏者在重新进入回合之前无事可做。虽然经典游戏在因特网上有很多玩家,但这多多少少有点无趣,。

  因此,限制轮流游戏的游戏者数是个非常好的主意,这样延迟就不会变得非常长。两到四个游戏者是比较理想的情况。

  3.2、同时动作游戏

  在一个同时动作游戏中,每个游戏者独立于其它游戏者计划他自己的行动。当一个游戏者就绪时,他发送指令到服务器。服务器等到从所有的游戏者那里都接到指令,然后分解回合,再把结果发送到所有的游戏者那里。

  4、"即时动作"游戏

  在一个"即时动作"游戏中,游戏可能会持续很长时间(几天、几个星期、几个月甚至到永远)。游戏者可以在任何时候进入游戏,执行游戏中的动作。在一些游戏中,他们可能只能与其他的同时进入游戏的用户交互;在其它的游戏中,他们也许能与任何其他游戏者交互,即使这些游戏者已经下线。

  6、把等待时间分布到游戏中

  让游戏者接受高等待时间的另一种简单方法就是把等待时间分布到游戏本身中。例如,大部分星际飞船战斗游戏让人都感觉到象是二次大战时的空战,战船在你身边呼啸而过,向你开炮。然而,在手机上要实现这种火爆的场面好像困难很大。我们可以换一种思路,我们可以把星际战舰类游戏做成一个类似第一次世界大战海战的游戏,星际飞船慢慢地移动,彼此之间一发一发的发射炮弹,导弹缓慢的移动奔向它们的目标。你可以使用这种方法来隐藏几秒钟的等待时间。肯定还有更多的解决长等待时间的方法。这是一个值得花时间去思考解决的问题。





posted @ 2005-01-16 13:01 小毅 阅读(410) | 评论 (0)编辑 收藏

<2005年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

常用链接

留言簿(4)

随笔分类

随笔档案

文章档案

blog 好友

友情链接

常用网站

技术网站论坛

搜索

  •  

最新评论

阅读排行榜

评论排行榜