java程序错误

2022-08-27 版权声明 我要投稿

第1篇:java程序错误

“Java程序设计”课程教学思考

摘 要: 目前,面向对象语言Java已成为Internet上最受欢迎的开发语言之一,许多高校纷纷将Java列为程序设计的核心课程。在多年Java教学经验的基础上,就Java语言的教学,包括教材的选择、开发环境的选取、教学内容的筛选、教学方法的运用、教学实例的选用等问题进行了较为深入的探讨,给出了可行性思路。

关键词: Java; 面向对象; 程序设计课程; 教学方法

Pondering over teaching of “java programming designing”

Lan Wenfei, Li Zimao

(School of Computer Science, South-central University of Nationalities, Wuhan, Hubei 430074, China)

Key words: Java; object-oriented; programming curriculum; teaching method

0 引言

在Java面世短短的十来年间,Java以其简单易学、安全可靠、面向对象、多线程及平台独立性等许多特点[1-3],被越来越多地推广和使用,它已成为Internet上最受欢迎的开发语言之一。

目前,许多高校已将“Java程序设计”列为程序设计的核心课程之一,肯定了它在培养计算机开发类人才中的地位和作用。

本人已连续多年担任高校计算机专业Java程序设计课程的主讲教师,针对Java教学中存在的问题,积累了一些教学经验,希望能与同仁共同探讨。

本文就Java语言的教学,包括教学时数的安排、教材的选择、开发环境的选取、教学内容的筛选、教学方法的运用、教学实例的选用等方面[4,5],给出了一些自己的做法,实践证明,这些方法是可行的。

1 教学准备环节

首先讨论Java程序设计课程教学的准备工作。

1.1 合理安排教学时数

我们授课的对象是软件工程实验班本科学生,该课程安排在大一第二学期,鉴于学生在大一第一学期已具备基本的计算机原理及专业基础知识,这样来安排教学计划是比较合理的。考虑到学生在大一已具备C/C++高级语言程序设计的基础,而多数学生在国内修完本科课程后会选择到国外继续深造学习,所以Java语言程序设计课程的教学设计必须考虑全方位,此外Java语言衍生自C++,它的基本语法同C语言,而其面向对象的基本特征同C++。鉴于此,我们将Java程序设计课程的上课时数设置为48个授课学时,18个实践学时,这样设置是比较合适的。

1.2 精选教材

选择合适的教材,是保证有效教学的重要手段之一[6]。合适的Java教材, 应具有较好的知识覆盖面,难度适中,适合学生的具体情况[4]。由于我们讲授的对象是实验班学生,需要使用全英文教学,此外,他们已具备一定的面向对象程序设计基础,所以诸如《Thinking in Java》、《Objects First with Java》、 《The Java Programming Language》等经典书籍都适合作为该课程的教材。

选择国外经典教材,能保证我们的教学内容与国外接轨[7]。学生在阅读英文原版教材的同时,可同时参考对应的中文翻译本,能使学生加强对所学知识的理解。

1.3 选择合适的实验环境

由于JDK(Java Development Kit)是命令行的编程环境,需要用编辑器建立Java源程序。如果选用Windows自带的记事本notepad来编辑程序,首先程序中若出现语法错误是很不容易被发现的;其次每次必须打开cmd窗口并输入一大堆命令,如编译命令、运行命令等;再就是对于applet小程序还要自编html文件,非常麻烦。但是,如果选用超智能、傻瓜型的集成开发环境,如JBuilder、NetBeans,因其耗内存,所以速度慢,慢到不能忍受;更重要的是不利于入门级的学生掌握Java的基本语法。因为Java上机实践的一个重要训练内容就是熟练使用Java编译器(java.exe)去检查语法错误,并能修改错误,这样做的目的是使学生能较快地掌握Java语法。

本文简要介绍一种既简单又方便入门者使用的Java编辑器TextPad。TextPad作为Java编辑器需要做简单配置,首先把TextPad装上(先装JDK),安装完毕就可按下面的方法配置:在菜单的Configure中选择Preference,选择Tools,点add下拉菜单,选择Java SDK commands。之后Tools中多了3项:Compile Java、Run Java Application、Run Java Applet。从这一点来看它确实比其他的Java编辑器更容易配置,如EditPlus。

按上述方法配置TextPad Java编辑器后,还可适当优化TextPad Java IDE环境,使它更适合编写、执行Java程序。优化环境方法在此省略,有兴趣的作者可参见文献[2]。

2 教学内容

根据多年的Java程序设计课程教学经验,我们认为讲授该课程的内容主要包括三个方面:一是Java语言基础;二是Java语言的新特性;三是在讲授上述内容时穿插介绍JDK类库的常用类。

Java语言基础包括:数据类型、表达式、基本语句、类和对象、继承和多态、异常处理机制、小程序、图形用户界面设计、输入/输出、多线程、网络编程和数据库编程。考虑到我们面授的学生已经掌握了C++面向对象程序设计基础内容,而且Java教学内容偏多、教学时数较少[8],因此对于衍生自C++的Java语言,它和C++类似的部分,包括数据类型和表达式、基本语句、类和对象、继承和多态及异常处理机制等,应讲授较少的学时数;而对于Java语言特有的部分,如小程序、图形用户界面设计、输入/输出、多线程、网络编程和数据库编程,则应讲授较多的学时数。由于篇幅有限,在此省去对每个章节学时数的具体编排。

1996年Sun公司发布了JDK1.0,在短短的十年时间里,JDK从1.0版本升级到6.0版本。特别值得一提的是2004年发布的JDK5.0版本,它在旧版本的基础上增加了一些非常有意义的新特性,比如,泛型编程、增强的for循环、自动装包/拆包、类型安全的枚举、可变参数和静态导入等,使用这些特性有助于我们编写更加清晰、精悍、安全的Java代码。为了与时俱进,让学生掌握较新的Java特性,我们认为很有必要在课堂上向学生传授新技术,以拓宽学生的知识面。

一方面为了节约有限的学时数,另一方面为了鼓励学生在课余积极使用、查阅JDK帮助文档,我们不安排专门的章节介绍JDK类库的使用,而是在讲授Java程序例子时,将重点介绍一些重要类的使用,比如,在讲授图形用户界面这一章时,则会讲授一些重要包的使用,包括java.awt、java.awt.event、java.applet、javax.swing等,概述这些包的类层次结构。这样做既节约了时间,也使学生通过对例子的学习较好地掌握了一些常用类的使用。特别需要说明的是,容器类很重要,这些类在程序设计中会普遍使用到。

总之,在教学内容的选择上,我们推崇简化的原则,忽略一些不常用的知识点,如带标号的跳转语句、复杂的表达式运算规则、嵌套类等,这样做既节约了课时,也能充分引导学生编写简单、可读性好的程序代码[4]。

3 教学方法

充分利用多媒体教学设施,为上课讲述的例子做编译、运行演示。对于学生编程时常常出现的错误,在编辑程序时可设置类似的错误障碍,让学生修改错误,以杜决今后再出现此类错误,此外还能现场教会学生如何使用JDK TextPad开发环境。到了学期的中后期,鉴于学生们已基本掌握Java的语法,上课可适当减少演示例子的次数。

对于Java基本类库的授课,根据多年的Java开发经历和教学实践,我们认为学生应该对基本类库有个整体了解,要重点掌握 Java类库中的Java.lang和Java.util两个包,特别是容器类的应用是难点,需要结合实际例子阐述。这两个包提供的是Java编程要用到的基本类,学生需要清楚这些类或接口的继承关系、主要功能[5]。我们在授课时适当介绍JDK API文档的使用和阅读,提倡使用最新版本的英文API文档;在教学中注意总结相关类的联系和区别,如String和StringBuffer在使用上的区别,以及FileInputStream和RandomAccessFile在用于读文件时的区别。

在实施Java教学时,应注意Java和C++的区别。Java和C++都是面向对象的语言,而且Java衍生自C++,在基本语法及面向对象特征方面均有很多相同之处。比如,我们在讲授Java的数据类型、常量、变量、表达式、语句、类和对象、继承和多态等内容时,应着重指出它和C++的区别,简略细节知识。这样既能节约课时,也能使学生快速掌握Java的基本语法和面向对象特征。

在学生掌握了Java的基本语法及面向对象特征的基础上,我们会考虑将重点放在图形用户界面、多线程、网络编程和数据库编程上,以使学生能进行一般的Java应用编程。

如果课堂教学时数比较宽裕,则可介绍Java和UML、Java和设计模式相关的知识,强调软件开发新技术,特别是对于软件工程专业的学生,更应该这么做。

4 教学实例

可将程序例子分为非算法型和算法型两种类型。在介绍Java基本语法时,我们提倡用非算法型的例程,利于学生对例子程序的阅读和理解。而在讲授计算机典型问题,如排序、查找、递归时,则使用算法型的例程,以加强学生对一些典型问题的掌握。

在选择例程时,以例程中是否含有JDK类作为筛选原则,目的在于能让学生掌握更多的JDK类。

此外,在期中阶段,可选择一两个游戏项目作为综合的例程,如用于Java学习的Robocode游戏实验项目。Robocode是IBM的一位工程师MatNelson用Java语言所创造的机器战斗仿真引擎,是一款专门为程序员设计的游戏半成品。利用该引擎,只要编写几行简单的代码,就可以创造出一个在屏幕上四处疾驰的机器人坦克,参加游戏对战[4]。这样能增强例子的实用性和趣味性,调动学生学习Java的积极性。在此基础上,再布置一个游戏项目,作为学生在课余时间的练兵题。

5 结束语

衍生于C++的Java语言,作为一种面世较晚的语言,它集中体现和充分利用了若干当代软件技术新成果,如面向对象、多线程、平台无关等[9],使其拥有众多优秀的特性,从而成为面向对象软件开发的首选语言。

出于“Java程序设计”这门课的重要性和教学中存在的问题,本文提出了“Java程序设计”教学实施的诸多方面,并在作者施教的班级进行了多次实践,实践表明,上述教学思路是可行的,能在一定程度上提高教学效果。

下一步我们将在“Java程序设计”实践教学和后续课程改革方面进行实践探讨。

作者多年从事Java教学和Java软件开发工作,积累了一些教学经验,本文将它提练总结,希望能给Java同仁一些启示。

参考文献:

[1] 秦学礼,汪迎,郑淑红.Java程序设计实用教程[M].清华大学出版社,2012.

[2] 刘正林等.Java技术基础(第2版)[M].华中科技大学出版社,2004:30-40

[3] 印旻.Java语言与面向对象程序设计(第二版)[M].清华大学出版社,2007.

[4] 叶恒舟.Java程序设计教学探讨[J].科技信息,2007.1:23-25

[5] 李纯玉,胡丽娜.Java语言程序设计教学中的几点思考[J].科技信息,2007.2:10-13

[6] 张延军,乔德军,温炎耿等.构建Java教学体系[J].邯郸学院学报,2007.17(9):41-44

[7] 蓝雯飞,郑波尽.高级语言程序设计课程建设思路[J].计算机教育,2012.6:30-32

[8] 陆萍.浅议Java程序设计教学改革[J].电脑知识与技术,2007.27:32-35

[9] 石瑞峰,边琦,冯小龙等.Java程序设计教程[M].清华大学出版社,2012.

作者:蓝雯飞 李子茂

第2篇:《Java程序设计》课程改革和实践

摘要:目前,很多高校的软件学院都开设有《Java程序设计》这门课程,但都存在重理论,轻实践的问题。本文在深入分析该门课程目前存在问题的基础上,提出了相应的解决办法,并且通过一个学期的课程改革试验,证明了建议解决办法的可行性及有效性。

关键字:Java教学改革;应用型人才;软件学院

一、Java课程概述

《Java程序设计》课程是软件学院学生的核心专业课程,它的内容是介绍J2SE相关知识,包括Java语法基础、面向对象理论知识、基本类库、图形用户界面及事件处理机制、异常处理机制、多线程程序设计、数据库的连接访问、输入输出流和网络编程等。本课程学习的效果不仅关系到后续课程的学习和毕业设计的效果,而且直接关系到学生程序设计水平的提高和专业素质的培养。

二、问题分析及建议

以下结合本人多年的Java开发及教学经历,对一些存在的问题进行分析并提出相应的建议。

1.加强实践训练及实践管理

问题分析:Java语言是一门实践性很强的计算机语言,但目前成了单一为考试而设置的一门课程,其结果是有的学生连最基本的实践操作也不会做。有的实践教学学生只是将书上的程序输入电脑运行一下,并没有去思考为什么会是这样的结果。学生只是机械地完成了程序的运行,过后就忘了,没有达到练习的目的,更不能做到学以致用。

建议:在条件许可的情况下,教师上课均应采用多媒体教学。在讲授Java理论的同时,在课堂上给学生进行使用演示,这样不仅使学生对所学的理论知识有直观的认识,而且能提高学生的学习兴趣,引发其好奇心,促使课后实际动手练习。另外,教师在讲授该门课程时,除了教材上既有的实例外,还应多找一些典型的实例,在课堂上给学生讲解和演示,加深学生的理解。

2.选择合适的教材

问题分析:传统的教学方法都是注重教学的系统性和完整性.按照一般教科书的编排顺序组织教学,想把Java语言讲透,至少得100课时以上。这样的教材内容,必然有大量的语法结构生涩且难以理解,使学生望而生畏,学习效果较差。

建议:尽量选择有较多实际例子的教材,或者选择有配套实验手册的教材,方便学生实践练习。

3.注重双师型教师的培养

问题分析:在指导学生使用Java程序设计实践教学方面,由于目前双师型教师的匮乏,师资队伍存在着知识结构、能力结构不合理问题,难以完成应用型人才Java程序设计的实践教学要求。

建议:教师在上课之余,应该多学习Java领域的最新技术,并且利用假期时间多去企业参观,学习企业用的最多的开发技术,才能教出符合企业需求的信息技术专业人才。

三、课程改革及成效

在对Java程序设计课程目前存在的问题深入分析后,本人上学期对第2部分中提到的各个建议解决办法进行了试验,以下简单予以介绍:

(1)关于加强实践方面。在讲述理论的同时,教材90%的代码均在上课时现场输入、现场演示、现场评讲。另外,除了教材上的实例,还通过查阅搜寻一些典型的实例,在相应的章节进行演示。

(2)关于教材选择方面。经过仔细对比研究后,上学期选用了机械工业出版社的《Java语言程序设计教程》一书作为上课的教材。本书由叶乃文主编,于2010年第一次出版,所讲Java技术和业界最新技术基本同步,而且综合性实例较多,非常方便学生进行课后练习。

(3)关于双师型教师培养方面。2010年暑期,去北京中关村一些知名IT企业进行学习参观,历时20余天。通过学习参观,了解到目前企业最新的Java应用人才需求,也学到了不少企业的开发经验,返回学校后对学生进行了相应的指导,学生反响强烈。

上学期,经过以上3点措施的实施,Java程序设计课程的教学效果相比以前明显改善,学生们普遍反映良好。具体表现为:因为实践动手多了,学生对学习Java的兴趣提升,实践动手能力快速提升,上机作业质量明显提升,教学效果持续改善。

四、小结

针对应用型高等学校人才的特点,作者依据多年从事Java技術开发的实际工作经验与理论教学实践经验,分析了企业对Java技术人才的需求及现今Java程序设计课程体系中存在的问题,提出了一些建议解决办法,并进行了相应的课程改革实践。实践结果证明了提出的建议解决办法的可行性和有效性。

【参考文献】

[1]朱剑锋,王冬,熊志斌,尹成国.《项目教学法在Java程序设计课程教学中的应用》[J].琼洲学院学报.2011,(2):82-84.

[2]张建东.《Java程序设计教学探讨》[J].科技信息.2009,(24):700.

[3]陈涛.《Java程序设计》教学思想与方法的探讨[J].电脑知识与技术.2011,(10):2446-2447+2450.

作者:段鹏松 吴庆涛

第3篇:Java程序混淆技术的最新研究进展

摘要:随着计算机技术的快速发展,计算机软件的安全存在着一定的威胁,包括软件的攻击和重组。Java程序混淆技术是一种特殊的编码技术,可以抵制逆向工程和重组工程,保护软件知识产权。

关键词:Java程序;混淆技术;软件;编码

Java程序可以在平台上迅速传播,Java语言很容易被反编码。Java程序混淆也就是在不改变原义的情况下,对Java程序程序进行混淆,混淆后的程序很难被反编码,或者发编码后的程序可读性非常差,就可以达到保护软件的目的。Java程序混淆技术被广泛地用于软件知识产权领域。

1 Java程序混淆技术的原理

混淆技术[1]实际上就是代码变换技术,通过变换,将原始程序P变换为新的程序P1,它们的功能相似或者相近,代码安全性非常高。

如果原始程序P,经过混淆变换T,变换为新的程序P1,也就是P1=T(P),这个软件混淆变化必须满足以下条件:如果P结束,那么P1也必须结束,并且输出结果与P相同;如果P无法结束,或者以错误状态结束,那么P1不一定结束;对于P和P1的计算任务,P1比P消耗的时间长,而且保持在一个特定的范围内;攻击者如果想要将P1恢复成P,那么所需要消耗的时间远远大于将P转换为P1的时间。

2 Java程序混淆技术的分类

2.1 数据混淆

数据混淆[2]是指对程序的组成元素,如常量、变量和数据结构进行混淆变换,增大攻击者反编码的难度。

1)分裂和合并变量混淆:分裂变量混淆指的是在保持程序原义的前提下,将一些比较简单的数据结构和数据类型分解成一些变量的组合,就可以达到隐藏原始程序的效果。

合并变量混淆指的是将几个数值变量或者整型数据合并成一个变量或数据,从而达到隐藏原始数据的目的。

2)数组重构混淆:数组是程序中的基本数据结构,对数组进行重构混淆,包括数组分裂变换、数组合并变换、数组平滑变换以及数组折叠变换。数组分裂变换指的是将一个数组分裂成两个或者两个以上的数组;数组合并变换是指将两个或两个以上的数组合并为一个数组;数组平滑变换是指减少数组的维数;数组折叠变换是指增加数组的维数。

3)将静态数据转换为与程序相关的数据:静态数据,特别是字符串数据,包含大量信息。通过混淆变换,可以将静态数据转换为一个函数或者一段子程序,在执行程序的时候,可以通过程序调用生成相应的字符串,从而增加程序的复杂程度。

2.2 词法混淆

词法混淆是变换函数和变量的名称,违背Java见名知义的软件原则。词法混淆是根据Java虚拟机规范中的类文件结构的有关规定,混淆常量池中存储的类、字段、方法以及变量等名称的“CONSTANT_Utf8_info”类型数据。词法混淆主要有三种方法:用名称相同但是类型不同的字段进行替换;有意义的标识符用没有任何意义的字符来替换;用Java虚拟机不限制但是Java语言禁止的字符或者字符串来代替原始的字符或者字符串。词法变化具有单向性,不需要额外的执行代价,所以程序的复杂几乎不受影响,在实践中应用比较广泛。

词法混淆还包括移除和改名。移除是指将程序中的注释、调试信息等格式化信息删除掉,这种方法具有单向性,一旦混淆无法恢复,操作简单,但是强度很差。改名是指将程序中的常量名、变量名等标识符改为没有意义的标识符。

2.3 控制混淆

1)循环条件插入变换:通过不透明谓词把一个循环的终止条件变得更加复杂。

2)分支插入变换:对于一串语句,加入一个控制条件,增加程序的复杂程度。可以加一个不透明谓词,构造一个不会执行的分支,或者另两个分支上的语句都和原语句相同,从而影响后面语句的执行。

3)将可制约的控制流转换为不可制约的控制流:利用不透明谓词,加入一个假分支,将一个循环变换为多个循环,增加控制流图的翻译难度。

4)并行化代码:并行程序比串行程序更复杂,难以被分析。使用并行技术,可以构造不透明谓词,混淆程序的控制流。可以将串行程序并行化,还可以在程序中添加代码,增加程序的理解难度。

5)控制顺序混淆:一般情况下,Java类文件包含了很多控制信息,对这些控制转换信息进行掩藏可以通过打乱表达式、方法的顺序,增加程序的理解难度。

2.4 类结构混淆

1)类合并:类合并[3]指的是将两个或两个以上的类合并成一个类,包括各个类所包含的变量和函数,从而破坏系统的类,隐藏系统的整体设计。根据重命名的变量和方法,如果合并的类中有相同标识符的函数和变量,那么就将它们改为不重复的变量或函数;如果合并的类中,构造函数的标识符和参数都是相同的,那么就增加一个伪造的参数;如果合并的两个类之间存在着继承的关系,那么为了区分标识符相同的函数,可以增加一个布尔型的私有变量。

2)类分裂:类分裂指的是将一个类C拆分成C1和C2两个类,并且C2是C1的子类。另外还要保证C中的变量和方法,由C1继承或者由C2包含。

3)类型隐藏:

在Java中,除了类之外,还有接口,接口也是一种类型。通过接口,可以声明待混淆类的变量和方法,从而实现类型的隐藏。另外,如果引入的所有接口只服务于一个类,那么很容易被识别,为了使自动分析变得困难,可以使引入的接口同时为几个类服务。

3 Java程序混淆技术的算法

1)滥用标识符混淆算法:滥用标识符混淆算法[4]是指用同一个标识符代替一个类中出现的所有标识符,主要是通过Java中标识符中的重命名来实现的。

2)重载无关联方法算法:重载无关联方法算法与扩展转换和方法重载有很大的关系。这种方法是将被混淆类中的所有实体用相同的标识符来重命名。在Java程序中,如果某个编译时刻通过了一个象征性的参考,那么混淆操作一定会被执行,如果用这种方法对已操作程序反编译,并重新执行,就会改变程序的代码。

3)非法标识符替换算法:非法标识符替换算法[5]是将程序中的普通标识符用关键词和非法字符结合的字符串或者纯粹的关键词来代替。这种混淆算法,很容易迷惑大多数的反编译软件。

4)重写静态方法算法:重写静态方法算法可以处理一些被编译过的Java类。它的混淆变化非常细微,很难被察觉,从而增加了攻击者的难度。

4 Java程序混淆技术的应用

1)保护DRM技术。DRM技术的安全性和关键数据的保护有很大的关系,采用Java程序混淆技术,可以保护DRM技术的关键数据信息。

2)保护算法。如果开发者想要将一个新算法应用到软件中的时候,可以通过代码混淆技术混淆算法的一部分,从而增加算法的理解难度,达到保护算法的目的。

3)代码抗篡改。当进行网络软件操作或者执行相关任务的时候,代码的安全是相当重要的。软件设计者可以采用Java程序混淆技术保护操作软件,防止外来用户或者恶意主机篡改代码。

4)病毒变种。杀毒技术的重要方法就是模式匹配。对于病毒码,如果采用混淆技术,那么就可以产生很多不同特征的病毒变种,威胁到网络安全。

5 结束语

Java程序混淆技术在不改变程序功能的基础上,增加攻击者对程序反编译的难度,提高软件知识产权的保护力度,因此混淆技术在代码保护方面,应用非常广泛。今后的混淆技术不仅要加大混淆力度,提高防篡改力度,还要考虑混淆算法的运行负担。

参考文献

[1] 王建民,余志伟,王朝坤,等.Java程序混淆技术综述[J].计算机学报,2011,34(9):105-108.

[2] 霍建雷.用于Java软件保护的代码混淆技术研究与实现[D].西安:西北大学,2009.

[3] 郭玉杰.面向Java的代码混淆技术的研究[D].苏州:江苏大学,2010.

[4] 李新良,罗戈夕.基于Java的代码混淆算法研究[J].湖南文理学院学报:自然科学版,2010,22(3):58-62.

[5] 霍建雷,范训礼,房鼎益.标识符重命名混淆算法及其实现[J].计算机工程,2010,36(1):99-103.

作者:衣李娜

第4篇:JAVA常见程序错误

1**:请求收到,继续处理

2**:操作成功收到,分析、接受 3**:完成此请求必须进一步处理

4**:请求包含一个错误语法或不能完成 5**:服务器执行一个完全有效请求失败

100——客户必须继续发出请求

101——客户要求服务器根据请求转换HTTP协议版本

200——交易成功

201——提示知道新文件的URL 202——接受和处理、但处理未完成 203——返回信息不确定或不完整 204——请求收到,但返回信息为空

205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件 206——服务器已经完成了部分用户的GET请求

300——请求的资源可在多处得到 301——删除请求数据

302——在其他地址发现了请求数据

303——建议客户访问其他URL或访问方式 304——客户端已经执行了GET,但文件未变化 305——请求的资源必须从服务器指定的地址得到

306——前一版本HTTP中使用的代码,现行版本中不再使用 307——申明请求的资源临时性删除

400——错误请求,如语法错误 401——请求授权失败

402——保留有效ChargeTo头响应 403——请求不允许

404——没有发现文件、查询或URl 405——用户在Request-Line字段定义的方法不允许 406——根据用户发送的Accept拖,请求资源不可访问 407——类似401,用户必须首先在代理服务器上得到授权 408——客户端没有在用户指定的饿时间内完成请求 409——对当前资源状态,请求不能完成

410——服务器上不再有此资源且无进一步的参考地址 411——服务器拒绝用户定义的Content-Length属性请求 412——一个或多个请求头字段在当前请求中错误 413——请求的资源大于服务器允许的大小

414——请求的资源URL长于服务器允许的长度 415——请求资源不支持请求项目格式

416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求 也不包含If-Range请求头字段 417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下 一级服务器不能满足请求

500——服务器产生内部错误

501——服务器不支持请求的函数

502——服务器暂时不可用,有时是为了防止发生系统过载 503——服务器过载或暂停维修

504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长 505——服务器不支持或拒绝支请求头中指定的HTTP版本

HTTP 1xx-信息提示

这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个1xx响应。

100-继续。

101-切换协议。 2xx-成功

这类状态代码表明服务器成功地接受了客户端请求。 200-确定。客户端请求已成功。 201-已创建。 202-已接受。

203-非权威性信息。 204-无内容。 205-重置内容。 206-部分内容。 3xx-重定向

客户端浏览器必须采取更多操作来实现请求。例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。 301-对象已永久移走,即永久重定向。 302-对象已临时移动。 304-未修改。 307-临时重定向。 4xx-客户端错误 发生错误,客户端似乎有问题。例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。400-错误的请求。

401-访问被拒绝。IIS定义了许多不同的401错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在IIS日志中显示: 401.1-登录失败。

401.2-服务器配置导致登录失败。

401.3-由于ACL对资源的限制而未获得授权。 401.4-筛选器授权失败。

401.5-ISAPI/CGI应用程序授权失败。

401.7–访问被Web服务器上的URL授权策略拒绝。这个错误代码为IIS6.0所专用。 403-禁止访问:IIS定义了许多不同的403错误,它们指明更为具体的错误原因: 403.1-执行访问被禁止。 403.2-读访问被禁止。 403.3-写访问被禁止。 403.4-要求SSL。 403.5-要求SSL128。 403.6-IP地址被拒绝。 403.7-要求客户端证书。 403.8-站点访问被拒绝。 403.9-用户数过多。 403.10-配置无效。 403.11-密码更改。

403.12-拒绝访问映射表。 403.13-客户端证书被吊销。 403.14-拒绝目录列表。

403.15-超出客户端访问许可。

403.16-客户端证书不受信任或无效。 403.17-客户端证书已过期或尚未生效。

403.18-在当前的应用程序池中不能执行所请求的URL。这个错误代码为IIS6.0所专用。 403.19-不能为这个应用程序池中的客户端执行CGI。这个错误代码为IIS6.0所专用。 403.20-Passport登录失败。这个错误代码为IIS6.0所专用。 404-未找到。

404.0-(无)–没有找到文件或目录。

404.1-无法在所请求的端口上访问Web站点。 404.2-Web服务扩展锁定策略阻止本请求。 404.3-MIME映射策略阻止本请求。

405-用来访问本页面的HTTP谓词不被允许(方法不被允许) 406-客户端浏览器不接受所请求页面的MIME类型。 407-要求进行代理身份验证。 412-前提条件失败。 413–请求实体太大。 414-请求URI太长。

415–不支持的媒体类型。 416–所请求的范围无法满足。 417–执行失败。 423–锁定的错误。 5xx-服务器错误

服务器由于遇到错误而不能完成该请求。 500-内部服务器错误。

500.12-应用程序正忙于在Web服务器上重新启动。 500.13-Web服务器太忙。

500.15-不允许直接请求Global.asa。

500.16–UNC授权凭据不正确。这个错误代码为IIS6.0所专用。 500.18–URL授权存储不能打开。这个错误代码为IIS6.0所专用。 500.100-内部ASP错误。

501-页眉值指定了未实现的配置。

502-Web服务器用作网关或代理服务器时收到了无效响应。 502.1-CGI应用程序超时。

502.2-CGI应用程序出错。application. 503-服务不可用。这个错误代码为IIS6.0所专用。 504-网关超时。

505-HTTP版本不受支持。 FTP 1xx-肯定的初步答复

这些状态代码指示一项操作已经成功开始,但客户端希望在继续操作新命令前得到另一个答复。

110重新启动标记答复。

120服务已就绪,在nnn分钟后开始。 125数据连接已打开,正在开始传输。 150文件状态正常,准备打开数据连接。 2xx-肯定的完成答复

一项操作已经成功完成。客户端可以执行新命令。200命令确定。 202未执行命令,站点上的命令过多。 211系统状态,或系统帮助答复。 212目录状态。 213文件状态。 214帮助消息。

215NAME系统类型,其中,NAME是AssignedNumbers文档中所列的正式系统名称。 220服务就绪,可以执行新用户的请求。 221服务关闭控制连接。如果适当,请注销。 225数据连接打开,没有进行中的传输。

226关闭数据连接。请求的文件操作已成功(例如,传输文件或放弃文件)。 227进入被动模式(h1,h2,h3,h4,p1,p2)。 230用户已登录,继续进行。

250请求的文件操作正确,已完成。 257已创建“PATHNAME”。 3xx-肯定的中间答复 该命令已成功,但服务器需要更多来自客户端的信息以完成对请求的处理。331用户名正确,需要密码。

332需要登录帐户。

350请求的文件操作正在等待进一步的信息。 4xx-瞬态否定的完成答复 该命令不成功,但错误是暂时的。如果客户端重试命令,可能会执行成功。421服务不可用,正在关闭控制连接。如果服务确定它必须关闭,将向任何命令发送这一应答。 425无法打开数据连接。

426Connectionclosed;transferaborted. 450未执行请求的文件操作。文件不可用(例如,文件繁忙)。 451请求的操作异常终止:正在处理本地错误。 452未执行请求的操作。系统存储空间不够。 5xx-永久性否定的完成答复

该命令不成功,错误是永久性的。如果客户端重试命令,将再次出现同样的错误。500语法错误,命令无法识别。这可能包括诸如命令行太长之类的错误。 501在参数中有语法错误。 502未执行命令。 503错误的命令序列。

504未执行该参数的命令。 530未登录。

532存储文件需要帐户。

550未执行请求的操作。文件不可用(例如,未找到文件,没有访问权限)。 551请求的操作异常终止:未知的页面类型。

552请求的文件操作异常终止:超出存储分配(对于当前目录或数据集)。 553未执行请求的操作。不允许的文件名。 常见的FTP状态代码及其原因

150-FTP使用两个端口:21用于发送命令,20用于发送数据。状态代码150表示服务器准备在端口20上打开新连接,发送一些数据。

226-命令在端口20上打开数据连接以执行操作,如传输文件。该操作成功完成,数据连接已关闭。

230-客户端发送正确的密码后,显示该状态代码。它表示用户已成功登录。

331-客户端发送用户名后,显示该状态代码。无论所提供的用户名是否为系统中的有效帐户,都将显示该状态代码。

426-命令打开数据连接以执行操作,但该操作已被取消,数据连接已关闭。

530-该状态代码表示用户无法登录,因为用户名和密码组合无效。如果使用某个用户帐户登录,可能键入错误的用户名或密码,也可能选择只允许匿名访问。如果使用匿名帐户登录,IIS的配置可能拒绝匿名访问。

550-命令未被执行,因为指定的文件不可用。例如,要GET的文件并不存在,或试图将文件PUT到您没有写入权限的目录。

第5篇:Java程序员在写SQL程序时候常犯的10个错误

Java程序员编程时需要混合面向对象思维和一般命令式编程的方法,能否完美的将两者结合起来完全得依靠编程人员的水准: 技能(任何人都能容易学会命令式编程) 模式(有些人用“模式-模式”,举个例子,模式可以应用到任何地方,而且都可以归为某一类模式) 心境(首先,要写个好的面向对象程序是比命令式程序难的多,你得花费一些功夫) 但当Java程序员写SQL语句时,一切都不一样了。SQL是说明性语言而非面向对象或是命令式编程语言。在SQL中要写个查询语句是很简单的。但在Java里类似的语句却不容易,因为程序员不仅要反复考虑编程范式,而且也要考虑算法的问题。

下面是Java程序员在写SQL时常犯的错误(没有特定的顺序): 1.忘掉NULL

Java程序员写SQL时对NULL的误解可能是最大的错误。也许是因为(并非唯一理由)NULL也称作UNKNOWN。如果被称作UNKNOWN,这还好理解些。另一个原因是,当你从数据库拿东西或是绑定变量时,JDBC将SQL NULL 和Java中的null对应了起来。这样导致了NULL = NULL(SQL)和null=null(Java)的误解。

对于NULL最大的误解是当NULL被用作行值表达式完整性约束条件时。

另一个误解出现在对于NULL 在 NOT IN anti-joins的应用中。 解决方法: 好好的训练你自己。当你写SQL时要不停得想到NULL的用法: 这个NULL完整性约束条件是正确的? NULL是否影响到结果? 2.在Java内存中处理数据

很少有Java开发者能将SQL理解的很好.偶尔使用的JOIN,还有古怪的UNION,好吧.但是对于窗口函数呢?还有对集合进行分组呢?许多的Java开发者将SQL数据加载到内存中,将这些数据转换成某些相近的集合类型,然后再那些集合上面使用边界循环控制结构(至少在Java8的集合升级以前)执行令人生厌的数学运算. 但是一些SQL数据库支持先进的(而且是SQL 标准支持的!)OLAP特性,这一特性表现更好而且写起来也更加方便.一个(并不怎么标准的)例子就是Oracle超棒的MODEL分句.只让数据库来做处理然后只把结果带到Java内存中吧.因为毕竟所有非常聪明的家伙已经对这些昂贵的产品进行了优化.因此实际上,通过将OLAP移到数据库,你将获得一下两项好处: 便利性.这比在Java中编写正确的SQL可能更加的容易. 性能表现.数据库应该比你的算法处理起来更加快.而且更加重要的是,你不必再去传递数百万条记录了. 完善的方法: 每次你使用Java实现一个以数据为中心的算法时,问问自己:有没有一种方法可以让数据库代替为我做这种麻烦事. 3. 使用UNION代替UNION ALL 太可耻了,和UNION相比UNION ALL还需要额外的关键字。如果SQL标准已经规定了支持,那么可能会更好点。 UNION(允许重复) UNION DISTINCT (去除了重复) 移除重复行不仅很少需要(有时甚至是错的),而且对于带很多行的大数据集合会相当慢,因为两个子select需要排序,而且每个元组也需要和它的子序列元组比较。

注意即使SQL标准规定了INTERSECT ALL和EXCEPT ALL,很少数据库会实现这些没用的集合操作符。 处理方法:

每次你写UNION语句时,考虑实际上是否需要UNION ALL语句。 4.通过JDBC分页技术给大量的结果进行分页操作

大部分的数据库都会支持一些分页命令实现分页效果,譬如LIMIT..OFFSET,TOP..START AT,OFFSET..FETCH语句等。即使没有支持这些语句的数据库,仍有可能对ROWNUM(甲骨文)或者是ROW NUMBER() OVER()过滤(DB2,SQL Server2008等),这些比在内存中实现分页更快速。在处理大量数据中,效果尤其明显。 纠正:

仅仅使用这些语句,那么一个工具(例如JOOQ)就可以模拟这些语句的操作。

5.在java内存中加入数据 从SQL的初期开始,当在SQL中使用JOIN语句时,一些开发者仍旧有不安的感觉。这是源自对加入JOIN后会变慢的固有恐惧。假如基于成本的优化选择去实现嵌套循环,在创建一张连接表源前,可能加载所有的表在数据库内存中,这可能是真的。但是这事发生的概率太低了。通过合适的预测,约束和索引,合并连接和哈希连接的操作都是相当的快。这完全是是关于正确元数据(在这里我不能够引用Tom Kyte的太多)。而且,可能仍然有不少的Java开发人员加载两张表通过分开查询到一个映射中,并且在某种程度上把他们加到了内存当中。 纠正:

假如你在各个步骤中有从各种表的查询操作,好好想想是否可以表达你的查询操作在单条语句中。

6.在一个临时的笛卡尔积集合中使用 DISTINCT 或 UNION 消除重复项

通过复杂的连接,人们可能会对SQL语句中扮演关键角色的所有关系失去概念。特别的,如果这涉及到多列外键关系的话,很有可能会忘记在JOIN .. ON子句中增加相关的判断。这会导致重复的记录,但或许只是在特殊的情况下。有些开发者因此可能选择DISTINCT来消除这些重复记录。从三个方面来说这是错误的:

它(也许)解决了表面症状但并没有解决问题。它也有可能无法解决极端情况下的症状。

对具有很多列的庞大的结果集合来说它很慢。DISTINCT要执行ORDER BY操作来消除重复。 对庞大的笛卡尔积集合来说它很慢,还是需要加载很多的数据到内存中。 解决方法: 根据经验,如果你获得了不需要的重复记录,还是检查你的JOIN判断吧。可能在某个地方有一个很难觉察的笛卡尔积集合。 7. 不使用MERGE语句

这并不是一个过失,但是可能是缺少知识或者对于强悍的MERGE语句信心不足。一些数据库理解其它形式的更新插入(UPSERT)语句, 如 MYSQL的重复主键更新语句,但是MERGE在数据库中确是很强大,很重要,以至于大肆扩展SQL标准,例如SQL SERVER。 解决之道: 如果你使用像联合INSERT和UPDATE或者联合SELECT .. FOR UPDATE然后在INSERT或UPDATE等更新插入时,请三思。你完全可以使用一个更简单的MERGE语句来远离冒险竞争条件。 8. 使用聚合函数代替窗口函数(window functions)

在介绍窗口函数之前,在SQL中聚合数据意味着使用GROUP BY语句与聚合函数相映射。在很多情形下都工作得很好,如聚合数据需要浓缩常规数据,那么就在join子查询中使用group查询。

但是在SQL:2003中定义了窗口函数,这个在很多主流数据库都实现了它。窗口函数能够在结果集上聚合数据,但是却没有分组。事实上,每个窗口函数都有自己的、独立的PARTITION BY语句,这个工具对于显示报告太TM好了。 使用窗口函数: 使SQL更易读(但在子查询中没有GROUP BY语句专业) 提升性能,像关系数据库管理系统能够更容易优化窗口函数 解决方法:

当你在子查询中使用GROUP BY语句时,请再三考虑是否可以使用窗口函数完成。 9. 使用内存间接排序

SQL的ORDER BY语句支持很多类型的表达式,包括CASE语句,对于间接排序十分有用。你可能重来不会在Java内存中排序数据,因为你会想: SQL排序很慢 SQL排序办不到 处理方法: 如果你在内存中排序任何SQL数据,请再三考虑,是否不能在数据库中排序。这对于数据库分页数据十分有用。 10. 一条一条的插入大量纪录

JDBC ”懂“批处理(batch),你应该不会忘了它。不要使用INSERT语句来一条一条的出入成千上万的记录,(因为)每次都会创建一个新的PreparedStatement对象。如果你的所有记录都插入到同一个表时,那么就创建一个带有一条SQL语句以及附带很多值集合的插入批处理语句。你可能需要在达到一定量的插入记录后才提交来保证UNDO日志瘦小,这依赖于你的数据库和数据库设置。 处理方法: 总是使用批处理插入大量数据。

第6篇:Java常见异常和错误

1、 在某一路径下执行编译好的class文件出错。

异常如下:

E:liwy>java Test98

Exception in thread "main" java.lang.NoClassDefFoundError: Test98

如果出现了以上错误提示,常见问题有如下两种:1 大小写写错了, 2 路径不正确。

2、数组错误,访问不存在的数组,数组超出绑定,代码如下: public class ArrayDemo

{

} public static void main(String args[]){}int array[] = null; //声明数组 array = new int[3]; //为数组开辟空间,大小为3 for(int i=0;i

异常如下:

array[0]=0

array[1]=

1array[2]=

2Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3at ArrayDemo.main(ArrayDemo.java:11)

以上就是数组的索引超出绑定,就是表示数组越界。

3、某个类没有实例化,访问类属性时,出现空指针异常

class Person{

String name ; int age ;// 声明姓名属性 // 声明年龄属性 public void tell(){ // 取得信息

};} System.out.println("姓名:" + name + ",年龄:" + age) ;

public class ClassDemo03{

}; public static void main(String args[]){} Person per = null ; per.name = "张三" ; per.age = 30 ; per.tell() ;// 声明对象 // 为姓名赋值 // 为年龄赋值 //per = new Person() ; // 实例化对象 // 调用方法,打印信息

异常如下:

Exception in thread "main" java.lang.NullPointerException

at ClassDemo03.main(ClassDemo03.java:12)

4、错误的多态,出现异常

class A{

};

class B extends A{

};

public class PolDemo03{

}; public static void main(String asrgs[]){} A a = new A() ;B b = (B)a ;b.fun1() ; b.fun2() ; b.fun3() ;// 实例化了一个父类对象 // 发生了向下转型关系 public void fun1(){} public void fun3(){} System.out.println("B --> public void fun3(){}") ;// 此方法被子类覆写了 System.out.println("B --> public void fun1(){}") ;} public void fun2(){} this.fun1() ;// 调用fun1()方法// 定义类A // 定义fun1()方法 public void fun1(){ System.out.println("A --> public void fun1(){}") ;

异常如下:

Exception in thread "main" java.lang.ClassCastException: A

at PolDemo03.main(PolDemo03.java:20)

5、两个数字相除,被除数为0,出现异常

public class ExceptionDemo01{

}; public static void main(String args[]){} System.out.println("********** 计算开始 ***********") ; int i = 10 ;int j = 0 ;// 定义整型变量// 定义整型变量 int temp = i / j ; // 此处产生了异常 System.out.println("两个数字相除的结果:" + temp) ; System.out.println("********** 计算结束 ***********") ;

异常如下:

********** 计算开始 ***********

Exception in thread "main" java.lang.ArithmeticException: / by zero

at ExceptionDemo01.main(ExceptionDemo01.java:6)

6、两个数字相除,输入两个参数,分别为字母a 和b,出现异常,数字格式化出问题 public class ExceptionDemo04{

}; public static void main(String args[]){} System.out.println("********** 计算开始 ***********") ; int i = 0 ;int j = 0 ;try{} System.out.println("********** 计算结束 ***********") ; String str1 = args[0] ;String str2 = args[1] ;i = Integer.parseInt(str1) ; j = Integer.parseInt(str2) ; // 接收第一个参数 // 接收第二个参数 // 将第一个参数由字符串变为整型 // 将第二个参数由字符串变为整型 // 定义整型变量// 定义整型变量 int temp = i / j ; // 此处产生了异常 System.out.println("两个数字相除的结果:" + temp) ; System.out.println("----------------------------") ; // 捕获算术异常 System.out.println("出现异常了:" + e) ; }catch(ArithmeticException e){

异常如下:

********** 计算开始 ***********

Exception in thread "main" java.lang.NumberFormatException: For input string: "a"

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)at java.lang.Integer.parseInt(Integer.java:447)

at java.lang.Integer.parseInt(Integer.java:497)

at ExceptionDemo04.main(ExceptionDemo04.java:9)

6、两个数字相除,输入两个参数,如果两个参数什么也不输入,出现异常,数组超出绑定。 异常如下:

********** 计算开始 ***********

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

at ExceptionDemo04.main(ExceptionDemo04.java:7)

7、assert断言的使用,当断言结果不对出现异常。

public class Test

{

} public static void main(String args[]){} int i[] = {1,2,3};// 数组长度为3 assert i.length==0;// 此处断言数组长度为0

异常如下:

D:d代码>java -ea Test

Exception in thread "main" java.lang.AssertionError

at Test.main(Test.java:5)

断言需要在运行时需要加上“-ea”,如上java –ea 类名。

第7篇:【黑马程序员】Java基础 : Java语句笔记

摘要: Java基础—java语句这些是黑马程序员java基础入门的一个很重要的内容。今天主要给大家简单讲解一下Java基础—java语句,以后会慢慢讲解黑马程序员的课程内容!

关键语句介绍

一、while 语句 一般形式:

whi l e ( 条件表达式 ) { 语句体 ……… } 执行过程:

条件表达式为真,执行语句体。否则,退出!

二、do while 语句 一般形式: do { 语句体 ……. } while ( 条件表达式 ); 执行过程:

先执行一次语句体,判断 条件表达式是否为真,为真再执行do语句中的语句体。为假,退出。

需要注意:与whi l e语句区别

黑马程序员合肥中心 编著

1. while ( 条件表达式 ) 后面有分号 ; 2. 不管条件表达式是否为真,语句体均会执行一次。

三、for 语句 一般形式:

for( 子句 1; 子句 2; 子句 3) { 语句体 …… } 执行过程:

四、break 、 cont inue 语句 break 退出所在循环 : int stopHere = 5; for(int i=1; i<8; i++) { if(i == stopHere) { break; } System.out.println("i = " + i);

黑马程序员合肥中心 编著

} //打印结果:5,6,7,8均没有打印出来。

需要注意的一个问题: int stopHere = 5; for(int i = 1; i < 8; i + + ) { if (i = = stopHere) { / /语句体 } break; System. out . println("i = " + i ); } 这个时候编译器会报错:无效的 System.out 输出语句。 冷静分析一下:

break 语句会结束循环,所以不会再去执行 System.out 输出语句。编译会认为你在多此一举, sorry 报个错!

continue 退出本次循环,不会退出整个循环: int skipHere = 5; for(int i = 1; i < 8; i + + ) { if (i = = skipHere) { continue; }

黑马程序员合肥中心 编著

System. out . println("i = " + i ); } / /打印结果:除了5没有打印出来。

i = 1 i = 2

五、 switch 语句 一般形式: switch(常量) { case 表达式1:语句体1; break; case 表达式2:语句体2; break; ..... default : 语句体n; break; }

执行过程: 执行过程:

case 根据自己的表达式看是否匹配常量,如果匹配就执行语句体,否则执行 default 语句。

case 执行类似于并行操作,不是顺序操作。所以各个表达式的值不可以相同。

黑马程序员合肥中心 编著

哪个 case 匹配常量就会执行自己的语句体,不会再去寻找其他 case 语句。 注意:

<1> case 穿透:省去break关键字

[AppleScript] 纯文本查看 复制代码 ?

01 /**

02 * @author 传智播客 03 */

04 int i = 10; 05 switch (i ) { 06 case 10:

07 System.out .println(" A" ); 08 //break; 09 case 5:

10 System.out .println(" B" ); 11 //break; 12 case 7:

13 System.out .println(" C" ); 14 //break; 15 default :

16 System.out .println(" error"); 17 break; 18 }//打印结果:A B C error

<2> 在 Java 编程中 switch 括号中的常量的数据类型只可以为 int 类型或者是 byte 、char 、 short( 因为 byte 、 char 、 short 可以自动提升为 int ) ,常量类型不可以是 long 、 float 和 double 等数据类型。 <3> 多个 case 可以合并 , 相当于 " 或 " ,例如下面 i 等于 10 、 5 、 7 都可以执行打印语句。

[AppleScript] 纯文本查看 复制代码 ?

01 /**

02 * @author 传智播客 03 */

04 int i = 5; 05 switch (i ) { 06 case 10: 07 case 5: 08 case 7:

09 System.out .println(" C" ); 10 break; 11 default :

12 System.out .println(" error" ); 13 break;

黑马程序员合肥中心 编著

14 }//打印结果:C <4> default 语句可以省,但是不推荐,他后面的 break 可省 <5> case 或者 default 子句中可以写多条语句 case 7: System.out .println(" C" ); if(i == 5) { System.out .println(" i = " +i ); } break; <6> case 或者 default 子句中还可以嵌套 switch 或者其他语句

六、 return 语句

终止方法的运行并指定要返回的数据。 两种形式:

<1> return 表达式;

<2> return ;没有任何数据直接返回,结束函数 ( 方法 ) 的执行。

七、 if 语句

一般形式:

1.if (条件表达式) { 语句体} 2.if (条件表达式) { 语句体} else{语句体 } 3. if (条件表达式1) { 语句体} else if (条件表达式2) {语句体 } else {语句体 }

特别注意:形式3,else与其最近的上个if 配对。例子:

[AppleScript] 纯文本查看 复制代码 ?

黑马程序员合肥中心 编著

01 /**

02 * @author 传智播客 03 */

04 public class TestIF {

05 public static void main(String[] args) { 06 int i = 30; 07 if (i < 20) {

08 System. out . println("<20"); 09 } else if (i < 50) {

10 System. out . println("<50"); 11 } else if (i < 80) {

12 System. out . println("<80"); 13 } else

14 System. out . println(">=80"); 15 System. out . println("黑马程序员!"); 16 }

如果大家想学习java基础的知识,欢迎大家可以去传智播客官网http:///去了解java基础知识!

黑马程序员合肥中心 编著

第8篇:Java程序员面试 成都Java培训学校

Java程序员面试 成都Java培训学校

根据职位从开放到关闭时所经历的平均天数来衡量各个职位的难易招程度。从下图可以看到,互联网公司招聘一名营销人员平均需要54.4天时间,可谓互联网难招的职位,排名前五的难招职位中,有2个职位都属于市场与销售类别,对市场与销售人员的庞大需求量成正相关,同时由于互联网市场类职位的起薪相对较低,也成为了该类职位难招到人的制约因素。

我们看到,互联网易招的5种职位中,有四种均属于职能类别的职位,表明互联网对这类职位人员的需求量不大。我们发现前段时间兴起的新兴职位:程序员鼓励师属于互联网易招的职位,一方面是目前行业内公司对该职位需求量较小,要求不高,另一方面由于其有趣的工作职责要求,吸引了很多年轻女性前来应聘。

四川地处中国大西南,肥沃的土地,丰富的自然资源,悠久的历史和绚烂多彩的少数民族文化,构成了多样性的自然和文化旅游资源。每到中考季,很多初中生总是为自己的未来前途担心,尤其是一些学习成绩不好的初中生,他们不知道中考没考上怎么办。同时许多家长也担心,自己的孩子年龄还小,进入社会显然不合适。这个时候职业培训学校更加适合,放眼众多学院,四川国信安职业培训学校无疑是非常合适的。

各种各样的IT培训相关信息,难免让大家眼花缭乱,但是没关系,经过小编的整理,希望大家能够对其认识更深一步!接下来就让小编带你来看看IT培训相关的情况吧~请看下文~

Java是目前使用非常广泛的网络编程语言之一,它具有简单,面向对象,稳定,与平台无关等诸多特点,深受IT编程工作者喜爱,在当今信息化社会中发挥了的重要作用。

根据IDC的统计数字:我国Java人才的缺口已达25.5万,并且以每年左右2倍较度增长。在未来5年内,合格软件人才的需求将远大于供给。

Java工程师的缺口较为突出,可见Java工程师的受欢迎程度,那么,今天四川国信安Java培训的小编就来整理一些面试中常见的问题,希望能够对你起到一定帮助:

面试前花一些时间整理你的相关经历

一定要多花时间回忆你过去的相关经历,包括你参与的项目,你遇到的各种困难,以及如何解决的这些难题。你的回答会影响面试官对你Java技术能力的印象,所以一定要回顾和整理一下你过去的项目经历。

不要过于依赖事先准备好的面试答案

试图通过事先背诵一些答案,然后在面试派上用场是一个非常不好的方法。首先,恰好能用上你背的答案的概率微乎其微,其次,这样的准备会花费你大量的时间和精力,而没有真正能力上的提高。记住,你在现场发挥的越好、越真实,你身上的价值就越高。

不要过度依赖代码编辑器

如果你要参加一个技术型的面试,面试官通常会要求你在白板/白纸上写代码,而不是在电脑上。所以,你不能过度依赖于代码编辑器,因为在那里它会帮你补充代码、显示出你的语法错误等。赶快拿出笔和纸,写下你的代码,当你满意自己在纸上写的程序的时候,再把它输入到电脑,让编译器验证它正确与否。

面试时不要找急忙慌,稳重一些

在解决问题时不要着急,否则只会导致更多的错误,显得你很粗心。要有条理和准确的的做事,经常回头看看你的代码,如果有错误就改正它们。这样做,其实完成项目的时间会更短,而且错误会更少。

面试中能够对面试官的问题对答如流必然是加分的,但现在的企业最看重的却不是这些,在这个高学历泛滥的年代,公司们注重的早已是

个人能力与经验。那么,无经验的应届毕业生想找到合适的工作该怎么办呢? 课本里的知识那么单薄,导致许多应届毕业生无法适应工作岗位,许多人选择了培训机构,但许多IT培训机构是不提供实训机会的,所以在选择上一定要慎重。

成都国信安Java班由副教学总监,优秀讲师带队并亲自授课,秉承成都国信安一贯的专业品质态度,在课程质量,学生素质,就业服务上相当严格要求,并以学业满意就业为目标,打造国内优秀Java培训班,感兴趣的同学不妨关注国信安了解一下吧。

第9篇:java程序员招聘

职位描述:

1、

参加基于 JAVA 技术的门户网站的开发;

2、

负责公司的网站开发维护及新产品的研发;

3、

书写技术文档和制定开发规范;

4、

从系统层面去合理析网站产品,并提供开发工程师构架建议;

任职资格:

1、计算机相关专业大专或以上学历;

2、2年以上电子商务平台开发经验;

3、精通Java、JSP开发;熟悉Eclipse开发工具,熟悉J2EE架构以及servlet、javaBean等相关技术;

4、熟悉Weblogic、Tomcat等WEB应用服务器,有相关应用部署经验;

5、熟悉Mysql、Sqlserver数据库;

6、精通Linux环境WEB服务器开发与部署;

7、熟悉HTML、css等;

8、头脑灵活、思维敏捷、性格开朗。

具体要求:

熟悉J2EE架构,有Java开发经验二年以上. 透彻理解MVC模式,能熟练运用Spring做项目。 熟悉Jsp,JavaScript开发,有B/S开发经验. 熟悉SQLServer,Oracle,MySql,任何一种. 有应用软件开发背景或对抽像思想有深刻认识或有MVC框架开发经历优先. 有良好的沟通能力和独立的工作能力,能出差。 有数据库方面专长优先。

工作职责:负责产品的设计、开发、测试和维护工作,并进行相关文档的编写。 职位要求:

1. 具有使用Java开发项目的经验,工作经验1-2年;

2. 熟悉面向对象编程原理,熟悉J2EE、Servlet,JavaBean、JSP、javascript、XML、Spring、ibatis、Struts、WebService等技术; 3. 熟悉Struts、ibatis等MVC架构; 4. 熟悉并能熟练使用CORBA; 5. 熟练掌握Oracle等数据库应用;

6. 熟悉三层架构并熟练应用Apache,Tomcat等;

7. 工作认真,细心,有条理;积极性高,求知欲强;具有较强的责任心,沟通能力及团队合作精神。

注:可年后到岗

岗位职责

1、 进行产品需求分析;

2、 负责公司新产品的研发和设计;

3、 负责公司现有产品的维护和升级;

4、 负责对软件进行单元测试、集成测试;

5、 负责解决开发过程中的技术问题;

6、 负责对系统测试和验收测试报告的问题进行回复;

7、 负责软件更改说明、功能特性说明等开发文档编写工作;

任职资格

1、 计算机及相关专业毕业,大学本科以上学历

2、 一年以上相关工作经验;

3、 熟悉软件技术文档的编写;具备良好的文档编制习惯和代码书写规范;

4、 熟悉Visual C++开发环境;精通C/C++语言编程;良好的C/C++功底;

5、 积极上进,善于学习,具备良好的分析、解决问题的能力

6、 英语听、说、读、写能力强;

7、 良好的沟通能力和团队协作精神;

基本要求

(1)学历要求:专科以上学历,计算机及其相关专业,2年以上相关岗位经验;

(2)工作经验要求:一年以上java开发工作经验;B/S项目开发经验1年以上;1年以上的Java, J2EE, XML等开发经验,1年以上架构设计经验(Windows环境);

(3)项目开发要求:具有一定规模的项目开发经验; 其它要求:

(1)有较强的学习能力。

(2)具有良好的表达和交流能力,较强的沟通能力,富有进取心;

(3)具有阅读相关技术需求文档能力;具有一定的软件设计及文档编写能力。

Java硬性技术要求:

(1)精通JAVA开发语言、熟练掌握Eclipse开发工具;熟悉HTML、精通Apache、JSP、Servlet等Web开发相关技术;熟悉主流数据库,熟练掌握SQL。

(2)熟悉使用struts、spring、hibernate等常用开发框架;查看、分析前述和其它Java开源项目源代码者优先。

(3)熟练使用JavaScript和Ajax技术;具有一年及以上Ajax开发经验或熟悉Javascript。

应用过UML、重构、软件设计模式者优先……

工作职责:

参与系统设计,进行产品开发

岗位要求:

1.具备Web开发技能,精通JSP、HTML、JAVA语言开发;

2.熟悉TOMCAT安装与Web应用程序部署;

3.会使用数据库中间件:JDBC,Hibernate;

4.大学本科以上,至少2年以上的相关工作经验;

5.有基于GIS系统开发WEB应用经验者优先。

注:工作地点在北四环保福寺桥

职位描述:

要求:

1、有2年以上J2EE相关技术架构的中小型项目开发经验;

2、精通IBM WebSphere或Bea Weblogic平台下的J2EE开发。最好是用IBM WebSphere5.0进行过为期一年以上的J2EE应用开发。并且在开发过程中,大量运用了JSP、JSTL、JNDI、JDBC、XML、AJAX技术和Spring、Struts、Hibernate框架以及Web Services;

3、熟息Web程序开发流程,包括对架构设计、模块设置、代码编写、页面制作、调试、测 试和布署;

4、精通Web Services体系和Web服务体系,能熟练运用在开发过程之中;

5、JS面向对象

pvototype.js,精通JAVA script

6、至少精通Oracle、SQLServer、Sybase数据库中的一种,能熟练编写存储过程和综合查询 视图;

7、有丰富的团队协作开发经验,熟悉CVS管理等团队协作工具。

8、熟悉民航机务维修业务或有类似行业经验者优先。

1.一年以上Web开发开发经验,熟练使用JAVA开发语言,熟悉B/S结构网站开发流程,熟悉HTML,JAVASCRIPT,JQUERY;

2.良好的编程能力,掌握J2EE平台JAVA编程技术,有开源项目hibernate、struts,spring中的两种以上使用经验;

3.熟悉Grails开发有相关经验者优先;

4.熟练掌握主流的应用服务器,如TomcatWeblogicApache等的使用和管理;

5.熟悉SQL语言,熟悉MySQL数据库,熟悉SQL脚本;有ORACLE、SQLSERVER等大型数据库开发经验优先;

6.有WAP网站开发经验者优先;

7.有较强的学习与自学能力; 有良好的合作性和沟通能力,高度的奉献精神及敬业精神;

职位描述:

基本要求

1、年龄 22-33岁

2、计算机应用等相关专业

职位要求

1、精通JAVA开发,熟悉JSP,有一年以上JAVA开发经验,熟练JBuilder等开发工具;

2、熟悉BJB规范、J2EE体系,Weblogic,WebSphere等主流的中间件产品;

3、对MVC模式有较深入的理解,熟悉Struts架构;

4、熟悉XML技术;

5、熟悉数据库技术;

6、能够适应外地出差;

7、有BIP/EAI方面经验者优先;

8、逻辑表达能力强;

9、具备独立开发和运维能力;

10、熟悉电子商务与网上交易研发的JAVA工程师优先(1名)。 岗位职责:

1、参加开发和实施公司各类软件项目;

2、参加负责项目后期运行维护;

3、服从软件经理的其他开发任务安排。

职位描述: 岗位职责: 1. 程序开发 2. 网站的日常维护 任职要求: 1.精通J2EE技术;

2.熟练使用java,JSP,JavaScript等开发语言,熟悉AJAX;

3.精通SQL语法及mysql数据库应用开发;

4.精通HTML,XML,CSS等超文本标记语言;

5.精通B/S三层结构开发模式,熟练各种中间件;

6.精通spring,hibernate;

7.精通Apache、Tomcat;

8.精通Eclipse、JBuilder、Ant等开发工具; 9.重视实践能力。

1、大专或者本科以上学历

2、1年以上大型B/S结构应用软件系统(J2EE架构)开发经验。

3、熟悉一些知名开源项目的框架,如Structs、Spring、Hibernate;并且有实际运用其开发的经验。

4、熟悉Oracle/MYSQL/SQLServer等主流数据库管理系统、相关技术及工具。

5、熟悉B/S模式的应用开发,能灵活使用HTML/DHTML、XML、JavaScript;

6、精力充沛,能承受工作压力,有团队开发经验者优先考虑。

任职要求:

1、本科以上学历,理工科相关专业;

2、精通面向对象设计方法,逻辑能力佳;

3、精通J2EE,掌握XML、HTML、JSP、AJAX等技术;

4、2年以上J2EE开发经验,至少熟悉MySQL、Oracle、SQL Server中的一种数据库开发;

5、有Websphere开发经验者优先;

6、具备极强的团队精神和合作精神,对工作有热情。

上海沃克软件有限公司成立于2001年,是由中外专业人士创立的软件服务公司。公司面向银行领域,为国内银行提供一流的IT咨询和产品解决方案。

目前公司能够提供的解决方案包括: 1. 银行核心业务系统解决方案。 2. 银行EAI/ESB解决方案。 3. 银行综合前端解决方案。 4. 银行卡系统解决方案。 5. 银行现代化支付解决方案。 6. 银行统一应用系统监控解决方案。 7. 银行信贷管理系统解决方案。

" 应用为本,专注行业 "的发展战略,使上海沃克软件有限公司形成了 "以行业用户为中心" 的

管理体制,将解决方案、市场销售、技术支持等业务,进行一体化整合。尤其在金融领域,形成了银行应用系列及开发工具系列等,为用户提供了完善的解决方案和优质服务,同时公司成立了一个相对独立的技术服务中心,为客户提供全面的技术支持。

上海沃克软件有限公司致力于成为银行业信息化建设的咨询专家、应用软件解决方案及相关软件产品的优秀提供商及服务商,成为国内这一领域最有价值的企业。

基本要求:

1、一年以上工作经验;

2、专业要求:计算机,通信,自动化;

3、踏实、勤奋、开朗、富有责任心、注重细节; 岗位要求:

1、至少参与过两个基于J2EE的WEB项目的开发;

2、能够基于详细设计文档独立完成模块的编码实现;

3、熟悉基于B/S架构的应用软件开发流程;

4、扎实的JAVA基础功底;

5、熟悉J2EE基于开源框架的开发;

6、webwork、spring、ibatis、struts、hibernate等主流框架至少使用过三种;

7、熟练应用Eclipse、svn等常用开发平台和版本控制工具;

8、熟悉ORACLE,能够熟练编写常用SQL语句;

9、熟悉WEBLOGIC、webspere、tomcat等应用服务器;

10、熟悉常用JAVASCRIPT;

11、熟悉公安业务者优先; 报道时间要求:一个月内。

欢迎有项目经验的优秀毕业生加入!

注:本公司检查学历,执假学历者请勿浪费时间

工作要求

1. 有两年软件开发经验。

2. 熟练掌握Oracle+Java开发技术,熟练掌握Eclipse开发工具。 3. 熟悉Spring+Hibernate+Struts+Ibatis等Java开源框架。 4. 熟悉JavaScript、HTML、JSP、CSS等页面相关技术。 5. 熟悉Linux操作系统。

6. 能独立完成数据库和程序设计。 工作内容

1. 负责公司业务系统的编写和修改 2. 负责公司网站开发及设计 3. 公司数据分析

岗位职责

1、 参与新项目整体开发和计划;

2、 参与项目系统架构设计,负责系统模块分析和系统接口设计;

3、 核心代码与组件编写,共享重用代码库开发;

4、 项目代码审查与确认,制定代码编写的规范;

5、 负责系统性能优化和技术攻关;

任职资格

1、 计算机相关专业,本科以上学历;

2、 3年以上软件开发工作经历;

3、 精通JAVA语言,熟练使用组件技术,数据库,相关开发工具,能独立承担项目的模块开发任务;

4、 熟悉相关框架知识,熟练应用服务器配置;

5、 有良好的编码习惯和技术文档编写能力;熟练阅读英文技术文档,具有很强的沟通、组织和协调能力;

6、 能够承受较强的工作压力和强度,有极强的工作责任心。

1.一年以上Web开发开发经验,熟练使用JAVA开发语言,熟悉B/S结构网站开发流程,熟悉HTML,JAVASCRIPT,JQUERY;

2.良好的编程能力,掌握J2EE平台JAVA编程技术,有开源项目hibernate、struts,spring中的两种以上使用经验;

3.熟悉Grails开发有相关经验者优先;

4.熟练掌握主流的应用服务器,如TomcatWeblogicApache等的使用和管理;

5.熟悉SQL语言,熟悉MySQL数据库,熟悉SQL脚本;有ORACLE、SQLSERVER等大型数据库开发经验优先;

6.有WAP网站开发经验者优先;

7.有较强的学习与自学能力; 有良好的合作性和沟通能力,高度的奉献精神及敬业精神;

软件工程师(java)

职位描述

1、B/S项目开发经验2年以上

2、熟悉使用struts、spring、hibernate

3、查看、分析上述活其它Java开源项目源代码者优先

职位要求:

3年以上的Java, J2EE, XML等开发经验,1年以上架构设计经验(Windows环境);

熟练掌握Structs、Spring、Hibernate, 等常用开发框架; 精通Transaction、Security、Persistence等机制及实现,IOC、AOP、SOA等理念及实现 熟悉主流数据库系统、应用服务器和开发工具,如SQLServer, Oracle、WebLogic、WebSphere、JBoss、Tomcat、JBuilder、Eclipse, 熟悉 HTML/JAVASCRIPT/CSS 等WEB技术;

熟练掌握面向对象的分析设计技术和工具,包括UML等。 两年以上大型J2EE架构的门户网站项目经验者优先;良好的表达和交流能力,富有进取心;

了解Web应用的性能瓶颈和调优方式 专业: 计算机相关专业本科以上

公司介绍

1997年,一个人才的摇篮在上海诞生—新世界教育,这个由海外资金注入,国内精英支持的教育集团,正式扬起了航行的风帆。新世界教育旗下已拥有新世界进修中心、樱花国际日语、新贝青少儿教育、爱马德汉语培训、智赢国际雅思等数家知名专业培训机构,在不同的教育领域取得了非凡的成绩。

新世界教育集团立足于上海,走向全国。经过十年发展,在上海已经建立了46个学习中心,遍布沪上繁华商圈的涉外办公楼。在北京、广州、深圳、大连、青岛、杭州、南京、苏州、绍兴、无锡、常州、南通、温州等18个城市建立了98个学习中心,扩展了外地教育市场,成为全国闻名的培训学校。

现在全国范围内诚聘英才。

我们将提供完善的培训,和良好的职业发展机会。

1.要求计算机软件、通信及相关专业的本科或硕士毕业; 2.具有二年以上在J2EE架构下开发大型项目的经验;

3.精通java开发工具,熟悉Oracle、Informix等数据库的使用和开发;

4.精通J2EE技术架构,具备较强的独立开发能力;

5.具备较强的沟通能力以及团队协作精神,具有出色的分析判断能力。

工作职责:

1、依据项目要求和相关规范,完成系统的详细设计和相应文档的编写

2、根据项目要求和编码规范,完成基于J2EE平台的相应编码(Java、JSP、Servlet、EJB、XML等)任务

3、根据项目要求和单体测试规范,完成系统的单体测试Case设计、实施和总结

4、根据项目要求,配合项目人员完成结合测试、系统测试和系统交付等工作

职位要求:

1、计算机相关专业,重点大学本科以上学历,精通Java,3年以上编程开发经验,有较好的面向对象的程序设计思想和应用经验;

2、熟悉Flex,熟悉IBM Websphere、Eclipse、Jboss、Tomcat等系列产品;

3、熟悉Oracle,SQLServe、DB2数据库开发,精通SQL语言;

4、对J2EE开发体系架构有较深的理解和丰富的项目实践经验,熟练掌握Web Service、Web组件、EJB组件的相关开发

5、熟悉和精通用于Java Web开发的各种流行的开发框架、数据库框架及其设计思想,比如:Struts、Spring、Hibernate等;

6、具备较强的逻辑思维能力和学习能力;或许会有项目出差。

7、对工作认真负责,肯吃苦;积极主动;具备较好的语言表达和沟通能力;

8、有HIS系统开发经验优先。

工作职责:

1、依据项目要求和相关规范,完成系统的详细设计和相应文档的编写

2、根据项目要求和编码规范,完成基于J2EE平台的相应编码(Java、JSP、Servlet、EJB、XML等)任务

3、根据项目要求和单体测试规范,完成系统的单体测试Case设计、实施和总结

4、根据项目要求,配合项目人员完成结合测试、系统测试和系统交付等工作

职位要求:

1、计算机相关专业,重点大学本科以上学历,精通Java,3年以上编程开发经验,有较好的面向对象的程序设计思想和应用经验;

2、熟悉Flex,熟悉IBM Websphere、Eclipse、Jboss、Tomcat等系列产品;

3、熟悉Oracle,SQLServe、DB2数据库开发,精通SQL语言;

4、对J2EE开发体系架构有较深的理解和丰富的项目实践经验,熟练掌握Web Service、Web组件、EJB组件的相关开发

5、熟悉和精通用于Java Web开发的各种流行的开发框架、数据库框架及其设计思想,比如:Struts、Spring、Hibernate等;

6、具备较强的逻辑思维能力和学习能力;或许会有项目出差。

7、对工作认真负责,肯吃苦;积极主动;具备较好的语言表达和沟通能力;

8、有HIS系统开发经验优先。

上一篇:扫黄打非职责分工制度下一篇:初中体育教师教学计划