架构1.docx

上传人:b****9 文档编号:23318711 上传时间:2023-05-16 格式:DOCX 页数:21 大小:38.02KB
下载 相关 举报
架构1.docx_第1页
第1页 / 共21页
架构1.docx_第2页
第2页 / 共21页
架构1.docx_第3页
第3页 / 共21页
架构1.docx_第4页
第4页 / 共21页
架构1.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

架构1.docx

《架构1.docx》由会员分享,可在线阅读,更多相关《架构1.docx(21页珍藏版)》请在冰豆网上搜索。

架构1.docx

架构1

118、LINUX下线程,GDI类的解释。

LINUX实现的就是基于核心轻量级进程的"一对一"线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。

GDI类为图像设备编程接口类库。

119、STRUTS的应用(如STRUTS架构)Struts是采用JavaServlet/JavaServerPages技术,开发Web应用程序的开放源码的framework。

采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。

Struts有如下的主要功能:

一.包含一个controllerservlet,能将用户的请求发送到相应的Action对象。

二.JSP自由tag库,并且在controllerservlet中提供关联支持,帮助开发员创建交互式表单应用。

三.提供了一系列实用对象:

XML处理、通过JavareflectionAPIs自动处理JavaBeans属性、国际化的提示和消息。

120、Jdo是什么?

JDO是Java对象持久化的新的规范,为javadataobject的简称,也是一个用于存取某种数据仓库中的对象的标准化API。

JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBCAPI的使用)。

这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。

另外,JDO很灵活,因为它可以在任何数据底层上运行。

JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

121、内部类可以引用他包含类的成员吗?

有没有什么限制?

一个内部类对象可以访问创建它的外部类对象的内容

122、WEBSERVICE名词解释。

JSWDL开发包的介绍。

JAXP、JAXM的解释。

SOAP、UDDI,WSDL解释。

WebServiceWebService是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得WebService能与其他兼容的组件进行互操作。

JAXP(JavaAPIforXMLParsing)定义了在Java中使用DOM,SAX,XSLT的通用的接口。

这样在你的程序中你只要使用这些通用的接口,当你需要改变具体的实现时候也不需要修改代码。

JAXM(JavaAPIforXMLMessaging)是为SOAP通信提供访问方法和传输机制的API。

WSDL是一种XML格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。

这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。

相关的具体端点即组合成为抽象端点(服务)。

SOAP即简单对象访问协议(SimpleObjectAccessProtocol),它是用于交换XML编码信息的轻量级协议。

UDDI的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为WebService提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的WebService注册,以使别的企业能够发现的访问协议的实现标准。

JAVA代码查错

abstractclassName{privateStringname;publicabstractbooleanisStupidName(Stringname){}}大侠们,这有何错误?

答案:

错。

abstractmethod必须以分号结尾,且不带花括号。

2.publicclassSomething{voiddoSomething(){ privateStrings=""; intl=s.length();}}有错吗?

答案:

错。

局部变量前不能放置任何访问修饰符(private,public,和protected)。

final可以用来修饰局部变量(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。

3.abstractclassSomething{privateabstractStringdoSomething();}这好像没什么错吧?

答案:

错。

abstract的methods不能以private修饰。

abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstractmethod封锁起来呢?

(同理,abstractmethod前不能加final)。

4.publicclassSomething{publicintaddOne(finalintx){return++x;}}这个比较明显。

答案:

错。

intx被修饰成final,意味着x不能在addOnemethod中被修改。

5.publicclassSomething{publicstaticvoidmain(String[]args){Othero=newOther();newSomething().addOne(o);} publicvoidaddOne(finalOthero){ o.i++;}} classOther{publicinti;}和上面的很相似,都是关于final的问题,这有错吗?

答案:

正确。

在addOnemethod中,参数o被修饰成final。

如果在addOnemethod里我们修改了o的reference,(比如:

o=newOther();),那么如同上例这题也是错的。

但这里修改的是o的membervairable(成员变量),而o的reference并没有改变。

6.classSomething{inti;publicvoiddoSomething(){ System.out.println("i="+i);}}有什么错呢?

看不出来啊。

答案:

正确。

输出的是"i=0"。

inti属於instantvariable(实例变量,或叫成员变量)。

instantvariable有defaultvalue。

int的defaultvalue是0。

7.classSomething{finalinti;publicvoiddoSomething(){System.out.println("i="+i);}}和上面一题只有一个地方不同,就是多了一个final。

这难道就错了吗?

答案:

错。

finalinti是个final的instantvariable(实例变量,或叫成员变量)。

final的instantvariable没有defaultvalue,必须在constructor(构造器)结束之前被赋予一个明确的值。

可以修改为"finalinti=0;"。

8.publicclassSomething{publicstaticvoidmain(String[]args){Somethings=newSomething(); System.out.println("s.doSomething()returns"+doSomething()); } publicStringdoSomething(){ return"Dosomething...";}}看上去很完美。

答案:

错。

看上去在main里calldoSomething没有什么问题,毕竟两个methods都在同一个class里。

但仔细看,main是static的。

staticmethod不能直接callnon-staticmethods。

可改成"System.out.println("s.doSomething()returns"+s.doSomething());"。

同理,staticmethod不能访问non-staticinstantvariable。

9.此处,Something类的文件名叫OtherThing.javaclassSomething{privatestaticvoidmain(String[]something_to_do){ System.out.println("Dosomething...");}}这个好像很明显。

答案:

正确。

从来没有人说过Java的Class名字必须和其文件名相同。

但publicclass的名字必须和文件名相同。

10.interface A{ intx=0;} classB{intx=1;} classCextendsBimplementsA{publicvoidpX(){System.out.println(x);}publicstaticvoidmain(String[]args){newC().pX();}}答案:

错误。

在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时importjava.util和java.sql两个包时直接声明Date一样)。

对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为publicstaticfinal.所以可以通过A.x来明确。

11.interfacePlayable{voidplay();} interfaceBounceable{voidplay();} interfaceRollableextendsPlayable,Bounceable{ Ballball=newBall("PingPang");}classBallimplementsRollable{privateStringname;publicStringgetName(){returnname;}publicBall(Stringname){this.name=name;}publicvoidplay(){ball=newBall("Football");System.out.println(ball.getName());}}这个错误不容易发现。

答案:

错。

"interfaceRollableextendsPlayable,Bounceable"没有问题。

interface可继承多个interfaces,所以这里没错。

问题出在interfaceRollable里的"Ballball=newBall("PingPang");"。

任何在interface里声明的interfacevariable(接口变量,也可称成员变量),默认为publicstaticfinal。

也就是说"Ballball=newBall("PingPang");"实际上是"publicstaticfinalBallball=newBall("PingPang");"。

在Ball类的Play()方法中,"ball=newBall("Football");"改变了ball的reference,而这里的ball来自Rollableinterface,Rollableinterface里的ball是publicstaticfinal的,final的object是不能被改变reference的。

因此编译器将在"ball=newBall("Football");"这里显示有错。

JAVA编程题

1.现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset

importjava.util.*;

publicclassbycomma{publicstaticString[]splitStringByComma(Stringsource){if(source==null||source.trim().equals(""))  returnnull;StringTokenizercommaToker=newStringTokenizer(source,","); String[]result=newString[commaToker.countTokens()];inti=0; while(commaToker.hasMoreTokens()){ result[i]=commaToker.nextToken(); i++;} returnresult;}

 publicstaticvoidmain(Stringargs[]){String[]s=splitStringByComma("5,8,7,4,3,9,1");int[]ii=newint[s.length];for(inti=0;i=0;i--){ System.out.println(ii[i]); }}}

2.金额转换,阿拉伯数字的金额转换成中国传统的形式如:

(¥1011)->(一千零一拾一元整)输出。

packagetest.format;importjava.text.NumberFormat;importjava.util.HashMap;publicclassSimpleMoneyFormat{

 publicstaticfinalStringEMPTY="";publicstaticfinalStringZERO="零";publicstaticfinalStringONE="壹";publicstaticfinalStringTWO="贰";publicstaticfinalStringTHREE="叁";publicstaticfinalStringFOUR="肆";publicstaticfinalStringFIVE="伍";publicstaticfinalStringSIX="陆";publicstaticfinalStringSEVEN="柒";publicstaticfinalStringEIGHT="捌";publicstaticfinalStringNINE="玖";publicstaticfinalStringTEN="拾";publicstaticfinalStringHUNDRED="佰";publicstaticfinalStringTHOUSAND="仟"; publicstaticfinalStringTEN_THOUSAND="万";publicstaticfinalStringHUNDRED_MILLION="亿";publicstaticfinalStringYUAN="元";publicstaticfinalStringJIAO="角";publicstaticfinalStringFEN="分"; publicstaticfinalStringDOT=".";privatestaticSimpleMoneyFormatformatter=null;privateHashMapchineseNumberMap=newHashMap(); privateHashMapchineseMoneyPattern=newHashMap(); privateNumberFormatnumberFormat=NumberFormat.getInstance(); privateSimpleMoneyFormat(){ numberFormat.setMaximumFractionDigits(4);  numberFormat.setMinimumFractionDigits

(2); numberFormat.setGroupingUsed(false); chineseNumberMap.put("0",ZERO);chineseNumberMap.put("1",ONE); chineseNumberMap.put("2",TWO);chineseNumberMap.put("3",THREE);chineseNumberMap.put("4",FOUR);chineseNumberMap.put("5",FIVE);chineseNumberMap.put("6",SIX); chineseNumberMap.put("7",SEVEN); chineseNumberMap.put("8",EIGHT);chineseNumberMap.put("9",NINE); chineseNumberMap.put(DOT,DOT);chineseMoneyPattern.put("1",TEN);chineseMoneyPattern.put("2",HUNDRED);chineseMoneyPattern.put("3",THOUSAND); chineseMoneyPattern.put("4",TEN_THOUSAND);chineseMoneyPattern.put("5",TEN); chineseMoneyPattern.put("6",HUNDRED);chineseMoneyPattern.put("7",THOUSAND);chineseMoneyPattern.put("8",HUNDRED_MILLION);}

 publicstaticSimpleMoneyFormatgetInstance(){ if(formatter==null) formatter=newSimpleMoneyFormat();returnformatter;}

 publicStringformat(StringmoneyStr){  checkPrecision(moneyStr); Stringresult;result=convertToChineseNumber(moneyStr); result=addUnitsToChineseMoneyString(result);  returnresult; }publicStringformat(doublemoneyDouble){returnformat(numberFormat.format(moneyDouble));} publicStringformat(intmoneyInt){ returnformat(numberFormat.format(moneyInt));

 } publicStringformat(longmoneyLong){ returnformat(numberFormat.format(moneyLong));}

 publicStringformat(NumbermoneyNum){  returnformat(numberFormat.format(moneyNum));}

 privateStringconvertToChineseNumber(StringmoneyStr){ Stringresult;StringBuffercMoneyStringBuffer=newStringBuffer();for(inti=0;i

   //拾佰仟万亿等都是汉字里面才有的单位,加上它们intindexOfDot=cMoneyStringBuffer.indexOf(DOT); intmoneyPatternCursor=1; for(inti=indexOfDot-1;i>0;i--){  cMoneyStringBuffer.insert(i,chineseMoneyPattern.get(EMPTY+moneyPatternCursor));  moneyPatternCursor=moneyPatternCursor==8?

1:

moneyPatternCursor+1; } StringfractionPart=cMoneyStringBuffer.substring(cMoneyStringBuffer.indexOf(".")); cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf("."),cMoneyStringBuffer.length());while(cMoneyStringBuffer.indexOf("零拾")!

=-1){

     cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零拾"),cMoneyStringBuffer.indexOf("零拾")+2,ZERO);

   }while(cMoneyStringBuffer.indexOf("零佰")!

=-1){

     cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零佰"),cMoneyStringBuffer.indexOf("零佰")+2,ZERO);

   }while(cMoneyStringBuffer.indexOf("零仟")!

=-1){

     cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零仟"),cMoneyStringBuffer.indexOf("零仟")+2,ZERO);

   }while(cMoneyStringBuffer.indexOf("零万")!

=-1){

    cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零万"),cMoneyStringBuffer.indexOf("零万")+2,TEN_THOUSAND);

   }whi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 哲学历史

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1