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 小毅 阅读(415) |
评论 (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 小毅 阅读(391) |
评论 (0) |
编辑 收藏
阿,我年轻的朋友们,你们想成为游戏设计师,所以来问我有何好建议?我会给你们我最好的建议,但我猜想你们可能会听不进去。你们可能更愿意听那些说你们爱听的话的人所提供的建议。但这对我来说无所谓,我所能做的就是说些实事,并希望能进入某些人的耳朵里。
首先,你们应该对自己的事业道路有个最初的规划,你想接受更专门的训练,还是想要更全面的教育?专门的训练能给你某些特别的技能,让你能一毕业就进入工作。但教育能给你一个更全面的素质培养,却不一定能马上看到好处,不过长期来看能给你带来更多的优势。这是个简单不过的选择:速成的路还是战略规划后的路。如果你非常急于求成,那就立马去那些专门学校,他们会教你最新最炫的电脑技术。精力充沛是年轻人的优势,但耐性决不是年轻人的特长,所以我完全能理解你们几乎不能忍受去学习那些看似无关的副科。当我还是你们年纪的时候,我总是对那些大学里的其他课程感到不耐烦。但现在,我对我当初的鲁莽想法感到羞愧,并真心的感谢当初教导我的师长。
速成的路却是能立刻见效的路。如果你进了一家专门教授电脑游戏制作的学校,或者在正规大学主修电脑游戏设计。在此,你会学到很多关于电脑游戏设计最新的技术。毕业后,你很可能马上就能在正规的游戏公司找到一份工作,而这一切你可以在23岁之前搞定。
请打住。在这里有一点需要指出。生产游戏和设计游戏是完全不同的。你所获得的第一份工作肯定是份渺小的工作,比如给一个无关紧要的npc画动画,而这个npc做的事情只是在背景上漫无目的的闲晃;或者写一段代码,这段代码的用处就是当用户按下exit的时候,显示“你确定要退出么?”。如果你很擅长做这些小事情,那不出几年就可能会让你画些更复杂的动画或写一段更重要的代码。然后再过几年,你就可能坐上某个更重要的位子,处理些更重要的事情。
但请你别指望这些。根本的问题在于:有成百上千甚至上百万的学生,就像你们一样的学生,正做着同样的梦,想要进游戏业的梦。考虑一下供求曲线吧,如果职员的供应量十倍甚至百倍于员工的需求量,那么价格曲线将向下倾斜。你们必定将得到可怜的工资,并得不到任何的尊敬。你们当然可以抱怨,但得到的回答不仅简单也很实在:如果你不喜欢,你可以选择离开阿,门外有上百个像你一样的年轻人想要得到你的工作。
事实上,这就是当前正在发生的事情。有可能的话你们可以去每年三月或四月在圣何塞举行的“游戏开发者大会”看看,你们并不需要真的去参加什么讨论会,只需要在圣何塞的会议中心转转,看看身边走过的人。你会发现两个惊人的事实:第一,每个人都穿着黑色衣服;第二,他们的平均年龄在25至30之间。
我不知道为什么他们都穿着黑色,这可能是每个人都需要遵守的规则。但我能告诉你们,为什么他们都这么年轻:因为每个人都会在工作几年之后离开这个行业。游戏业就像是个奇怪的巨大建筑物,这个建筑物只有一个入口,却有很多个出口。成千上万个年轻人拥挤在入口处,争先恐后互相推挤着想要进门。只有很少一部分能顺利进入。但对于任何一个进入者来说,总会有另一个人离开——这才能让这个行业保持平衡。这个行业内的人有多么的年轻,就意味着被挤出去的人有多么的快。很少有人能撑到30岁。
如果你想得再深些,那就会发现另一个事实:假设你是老板,既然有这么多小家伙想要为你做游戏,那你自然可以花一毛钱就雇一群人,像奴隶一样驱使他们,直到他们筋疲力尽,然后再找些替代者。你只需雇佣一些管理人员,能保证这些小家伙都努力工作就行。这个系统运转得非常完美。
唯一的问题是,你是否打算成为他们中的一员呢?我希望不是。不过,要是你真狂热到打算削尖脑袋往游戏业里钻,那么就继续前进!我这个老笨蛋说再多也是无益。你自己去花时间看清这些吧。
但在这里我还有另一个方案可以告诉你们。首先,你应该获得一个正规的教育,决不是什么一夜情式的培训。去一所正规的大学,学习任何专业除了游戏制作。几乎所有专业都可以:生物学、物理学(我当初就是念的这个)、艺术、文学、历史、心理学、语言学。你只需保证自己获得了常规教育,并尽量选修一些专业以外的课程,当然,你应该选修一下计算机。
同时,你应该开始试验制作游戏了。不要被时髦流行的图像技术所扰——这不能给你的游戏设计提供任何帮助。你应该专注于游戏的内涵:游戏的体系和架构。如何用很少的元素就能使整个游戏运转?别幻想能做出像商业游戏那么好的产品——我要大声告诉你,这些游戏要依靠很多人的力量才能完成。你此时所能做的这些小玩意同那些比较起来,只能用“可怜”两个字形容。要是把制作游戏比作造汽车,此时你根本不用管车子的外表涂层和喷漆,你应该专注于如何让活塞协作运转、如何控制阀门的正常闭合、搞清楚汽化器是个什么东西。你要制造的是个小卡丁车,而不是一辆劳斯莱斯。所有这些都是个试验的过程,别幻想你的这些小玩意会有商业用途,你要做的就是造好一个就扔掉一个——为了增加创造力,你要杀掉你自己的“孩子”。如果你沉迷于这些作品而不愿放弃,那你将永远也不会拥有一个真正游戏设计师所应有的创造力。
继续不断的为增加你的创造力而努力。到目前为止,你的作品根本无法和一个经验老到的游戏设计师相抗衡,所以增加自己的能力是你此时唯一该做的。电影the matrix都看过吧,没经过训练的neo无论如何也不是agent smith的对手。学任何你能学到的东西。毕业前要把你学校图书馆所有的书架都翻一遍,在这些灰尘的覆盖下指不定隐藏着什么有趣的东西。
当你出了学校,不要马上就进入游戏业。在一个正规公司找一份像样的工作,并挣些钱。更主要的是不断学习,你要学很多关于团队协作的方式,也要学会如何在众人面前寻找自己的位置。你应该学会何时何地站起来对你的老板说话——虽然这种机会不常有。还有,你应该学会如何同周围有经验的内行打交道。
继续在你业余时间制作游戏,尽可能多的制作各种不同类型的“小卡丁车”,并试图了解各种类型卡丁车的性能,诸如操纵性、速度以及其他要素。当你做了六个或十个这种产品,你可能会想到继续亲自着手进行更大的项目。很好,去找些志同道合的朋友,他们会帮助你完成你的计划,我确信这将是个令人印象深刻的成果。完成之后,向全世界展示你的小宝贝吧。现在,你就可以把她作为你简历的一部分去申请游戏业中的职位了。如果你的那些产品确实好,你将能得到一个真正的游戏设计师职位,而不是去当那些小喽罗。此时你可能仍然只是其他游戏设计师的助手,但你已经处在了正确的位置上,如果你能努力出色的完成工作,你肯定会在游戏业中拥有前途。
我知道这些并不是你们想听的内容。你们想要的是所谓的速成药,比如学习这个,然后学习那个,接下来就能确保得到一份高收入的工作、拥有巨大的办公室、用着最先进的电脑设备、做的是富有创造性的事情。没错,每个人都会这么想的,但没有人会得到这些。那些向你描述这些故事的人不过是些骗子,他们脑子里想的只是你口袋里的钱。一个令人悲伤的事实是:游戏先驱们主导世界的日子已经过去了,现在的游戏业是一个产业,没人会突然被发掘然后一夜之间成为巨星,对任何想入门的人来说,在你面前的必定是一条漫长的路。
你们拥有激情和精力,想要让不可能变为可能。但你们是否对这条漫长的路做好了准备?或者说,你们是否打算在真正的准备完成前就冲进去?
祝你们好运,孩子们,我相信你们会成功。
谢谢您-----------chris crawford
posted @
2005-04-21 06:21 小毅 阅读(488) |
评论 (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 小毅 阅读(368) |
评论 (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 小毅 阅读(465) |
评论 (0) |
编辑 收藏
在遥远古希腊的大草原中,驰骋着一批半人半马的族群,这是一个生性凶猛的族群。“半人半马”代表着理性与非理性、人性与兽性间的矛盾挣扎,这就是人马部落。部落里唯一的例外射手奇伦,是一个生性善良的男子,他对人坦诚真挚,谦逊有理。因此受到大家的尊敬与爱戴。
有一天,英雄赫五力来拜访他的朋友奇伦。赫五力早就听说人马族的酒香醇无比,便要求奇伦给他拿来享用,可是,他喝光了奇伦的酒仍不尽兴,执意要喝光全部落的酒。奇伦非常耐心地解释给他听,酒是部落的公共财产,不是任何一个人可以独自占有的,希望赫五力不要因为一时的兴致而犯众怒。赫五力向来脾气暴躁,怎么能听得进奇伦的话,他把这个善良的朋友推到一边就闯进了人马部落。果不出奇伦所料,暴躁的赫五力和凶猛的人马族碰在一起,冲突不可避免的发生了。
赫五力力大无穷,幼年即用双手扼死巨蟒,他完成国王的十项不可能完成的任务都游刃有余,连太阳神阿波罗都惧他三分,人马族虽然厉害,也并不是赫五力的对手,他们纷纷落逃。赫五力手持神弓紧紧追赶,借着酒劲,大肆进攻。人马族被逼的走投无路,只好逃到了奇伦的家中。人们惶惶不安,赫五力站在门口大声呵斥,如果再没人出来,他就把这个部落毁掉。奇伦听到这里,为了部落,为了朋友,为了化解这场争斗,他奋不顾身的推开门,走了出来。就在那一刹那,赫五力的箭也飞了过来!赫五力惋惜又痛心的看着自己的朋友被神箭射穿心脏,而奇伦则用尽最后的力气说到:“再锋利的箭也会被软弱的心包容;再疯狂的兽性也不会泯灭人性。”
这时候,奇伦的身体碎成了无数的小星星,飞到了天上,它们聚集在一起,好象人马的样子,那只箭还似乎就在他的胸前。为了纪念善良的奇伦,人们就管这个星座叫射手座。
posted @
2005-04-17 22:09 小毅 阅读(171) |
评论 (0) |
编辑 收藏
从嘉兴回来...兄弟没变多少 呵呵 一样的忙
认识了挺多的朋友 松哥,东哥,CEO,死过妹妹....
虽然前几天的笔试并没有成功 心情并不怎么好 在嘉兴却还是呆的开心的...^ ^
每次去看兄弟都能学到好多...
刚好碰上他在开发宠物系统...php-asp...
学了很多东西 有些习惯他好象是于身具来的 大概这就是天赋吧....
4月中旬了 毕业了近了...
工作还没定 心理有点烦了....
posted @
2005-04-15 20:41 小毅 阅读(146) |
评论 (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 小毅 阅读(182) |
评论 (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 小毅 阅读(208) |
评论 (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("姓名 | " + "" + ? (String)hashTable.get(new String("name")) + " |
");
out.println("学院 | " + "" + ? (String)hashTable.get(new String("college"))+" |
");
out.println("电话 | " + "" + ? (String)hashTable.get(new String("telephone")) + " |
");
out.println("备注 | " + "" + ? (String)hashTable.get(new String("notes")) + " |
");
out.println("
");
%>
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 小毅 阅读(257) |
评论 (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 小毅 阅读(184) |
评论 (0) |
编辑 收藏
在应用程序即将使用一个对象时在分配这个对象,而不是在应用程序启动是全部分配。
一旦应用程序不再需要一个对象,就要将所有对该对象的引用赋值为null
总是重用对象而不是创建对象。
遵守拇指法则
应用程序通常是单线程的。
一次只能运行一个应用程序
应用程序是事件驱动的
用户从一个应用程序切换到另一个应用程序,而不是结束应用程序
移动小型计算设备的使用方式通常是每次只用两分钟,每次用30次。
应用程序必须在两分钟之内完成一项任务。
posted @
2005-03-14 21:58 小毅 阅读(152) |
评论 (0) |
编辑 收藏
我还喜欢她吗?我也不知道,真的真的模糊了…
我记得有段时间狠狠的喜欢过,也信誓旦旦的承诺过…
虽然在繁忙的学习之间会想起她,虽然是一闪而过,但是心里还是酸酸的。
她很漂亮,至少我一直这样想的,倒不是说就是一见钟情的那种。感觉却是聊天里来的….
似乎这很老套。可就是这样简单的打招呼,亲切的问候……似乎就忘不了了.
即使真的喜欢又会怎么样呢?想起她就这样反问自己。“见都没见过呢”。“先有事业,在有妻室”,“热血男儿志在四方”,
理由就是这样一个接一个的会涌上来.
苦苦笑笑 得了吧…
就算认识过,就算真的相爱过,在距离面前…“0”
我知道答案其实一直一直都没变过,变的只是周围的环境,繁忙的学习,巨大的工作压力,让我渐渐把这个答案深深埋了起来,再不能象以前一天到晚守在电脑前等她上线,再不能拿着手机给她发消息,再不能偷偷打工为她买东东,再不能……………..
好难得周末…能这样轻松的坐在电脑前..(别忘了明天早起上课..-_-)
把她放在心里…我知道她会永远在自己心里.
posted @
2005-03-05 21:45 小毅 阅读(160) |
评论 (0) |
编辑 收藏
马上就要毕业了,大学四年的生活一晃而过,过的好快哦。
读书的时候总拼命找时间玩..总想星期六星期天有时间可以补回来。呵呵,所以整个大学四年都在缝缝补补。
人们总是以为一件事情干两天肯定要比干一天要做好,以前的我也是如此认为,做事慢慢吞吞,总以为花的时间越多就能做的越好。其实错了,大家都错了,一天能做好的事情就要花一天做的最好,星期六星期天是拿来放松的,拿来休息的。
并是不忙忙碌碌就能成功。
而成功的人就一定是效率高。
posted @
2005-02-23 16:48 小毅 阅读(195) |
评论 (0) |
编辑 收藏