第一篇:java程序员需掌握的知识点
一、数据库事务
答:是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务处理可以确保事务性单元内的所有操作都成功完成,否则永久不会更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
事务是数据库运行中的一个逻辑工作单位,由数据库管理系统(DBMS)中的事务管理子系统负责事务的处理。
原子性
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。
一致性
事务在完成时,必须使所有的数据都保持一致状态。
隔离性
由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。
持久性
事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。
二、多态,重写,重载
重写:重写的方法必须和被重写的方法相同的方法名、参数列表和返回值类型。
重载:重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型可以是不同的参数类型,不同的参数个数,不同的参数顺序(参数类型必须不一样)。
多态:父类对象持有对子类的引用,并可以调用子类的方法,但该方法的实际持有对象是子类。
三、JDBC思想
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java编写的类和接口组成。1.注册驱动(只做一次)2.建立连接(Connection)
3.创建执行SQL的语句(Statement)
4.处理执行结果(ResultSet)
5.释放资源(ResultSet, Statement,Connection)
四、抽象类与接口的区别
1、接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的。
2、实现接口的一定要实现接口里定义的所有方法,而继承类可以有选择地重写需要用到的方法
3、接口要用implement实现,抽象类要使用extends继承。
五、jsp和servlet之间的联系
六、面向对象3大特征
继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父
类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。继承性很好的解决了软件的可重用性问题。
封装:封装是面向对象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。
多态性:多态性是指允许不同类的对象对同一消息作出响应。很好的解决了应用程序函数同名问题。
七、MVC
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。MVC模式:用一种将业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
八、软件开发模型:快速原型模型 优点:耦合性低、重用性高、部署快、可维护性高。
缺点:没有明确的定义、不适合小型,中等规模的应用程序、增加系统结构和实现的复杂性。
九、hibernate的延迟加载:延迟加载也叫懒加载,是提高程序执行效率的一种机制,即只有真正使用该对象的数据时才会创建。
十、exeuteupdate()和executequery()区别:前者用于修改已有数据,比如增删改。后者用于查询数据,需返回查询结果。
十一、单例模式
package SingletonDemo;//单例设计模式 public class Singleton {
/** * 实际开发中,我们通常会将饿汉模式和懒汉模式结合在一起来书写单例设计模式。//这个成员变量就是用来返回记录当前对外提供的那个对象。private static Singleton singleton;static{//在static初始化块中初始化,饿汉模式。确保成员变量仅仅被初始化一次。
} //构造方法私有化 private Singleton(){}
} //定义一个对外的方法,能够让用户调用该方法来获取一个属于该类的实例方法。//不管是哪个用户来调用这个方法都需要注意这个方法的返回对象永远是同一个。public static Singleton getInstance(){
} //懒汉模式
if(singleton==null){//第一次初始化。
} singleton=new Singleton();
singleton=new Singleton();return singleton;*/
十二、不用stop()的原因:因为它不安全。它会解除由线程获取的所有锁定。
不用suspend()的原因:suspend()方法容易发生死锁。调用 suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。挂起:wait()重写启动线程:notify()线程有四种状态分别是:运行、就绪、挂起、结束。
十三、什么时候使用同步和异步
如果数据将在线程间共享,必须进行同步存取。
同步 的实现方法有两种,分别是 synchronized, wait
与 notify。
第二篇:Java程序员必须掌握的开发工具
Java程序员必须掌握的开发工具
以下的开发工具,能帮助你成为一名高级java程序开发人员。
1.Eclipse
尽管IntelliJ IDEA、NetBeans和一些其他的IDE正在日益普及,但是有调查表明,Eclipse仍然是几乎半数Java开发人员首选的开发环境。Eclipse是IDE领域的瑞士军刀,有着大量定制的接口和无数的插件。它无处不在,后面本文将推荐的其他所有工具都提供Eclipse插件。这也是八维必讲的开发工具。
Eclipse的工作流程可分为三个方面:工作台,工作空间和视角。工作台作为到IDE的出发点。工作空间将项目、文件和配置设置组合在一个单独的 目录下。视角定义工具、视图和有效设置。虽然新手开发人员可能会觉得相比Netbeans和IntelliJ IDEA,Eclipse使用起来更难,但Eclipse的灵活性,使其成为企业开发的首选IDE。
Luna,Eclipse的最新版本,支持Java
8、分屏编辑、新的黑色主题,以及一个功能齐全的命令行终端。
2.Gradle
Gradle是一个自动化项目工具,建立在Apache Maven和Apache Ant的功能上。虽然Gradle并不是最流行的构建工具(最流行的是Maven,64%的Java开发人员会选择它),但它的普及速度很快。它也可作为默认的Android构建工具。
Gradle引以为傲的是它的简单。Gradle使用Groovy编程语言,与Maven和Ant使用XML语法截然相反。
3.Javadoc
Javadoc是Oracle提供的文档生成器。它可以将特殊格式的注释解析为HTML文档。
Javadoc注释使用开放标签、关闭标签,以及一个或多个描述性标签的格式。开放式标签类似于标准Java多行注释标记,使用两个星号的除外。Javadoc也解析普通的HTML标签。
Javadoc自动格式化标签和关键字,除非另有规定。Javadoc广泛使用超链接,允许你参考和链接到代码的不同区域。许多IDE--包括 Eclipse--可以自动添加Javadoc注释模块到变量、类和方法中。支持Maven、Gradle和Ant的插件在编译代码的同时也可以构建 Javadoc HTML。
4.JUnit
JUnit是用于编写和运行单元测试的开源框架。一个基本的JUnit测试包括测试类、测试方法、以及执行测试的功能。JUnit使用标注来确定测试如何构造和运行。例如,如果你的程序有一个类叫做MathClass,具有乘法和除法的方法,你可以创建JUnit测试来检 查不符合预期的值。输入数字2和5到乘法方法,你希望得到的结果为10。当输入0作为除法方法的第二个参数时,你会期望给出一个数字计算异常的警告因为除 数不能为0:
@Test标注规定,MathClass方法是一个测试用例。在JUnit提供额外的标注,比如@Before,这样你就可以在测试运行之前设置环境。JUnit还可以设置规则用于定义测试方法的行为。例如,TemporaryFolder规则使得一旦测试完成,由测试创建的文件或文件夹就会被删除。
5.Cobertura
Cobertura可用于分析Java代码的测试覆盖率。Cobertura根据没有被测试覆盖的代码生成基于HTML的报告。
Cobertura提供可用于插装、检查和测试代码的工具。通过监控可测试的代码,Cobertura允许你使用你选择的测试框架,甚至不需要测试框架就可以运行程序。
Cobertura根据行、分支和程序包三个方面给出代码覆盖报告。每个类别都有一个可自定义的阈值,如果覆盖面低于阈值,就会触发警告。Cobertura还集成了Maven和Gradle 的自动检测功能。
6.FindBugs
FindBugs是一个匹配编译代码模式,而非使用bug数据库的工具。当提供源代码时,FindBugs还可高亮显示检测出bug的代码行。
在它的3.0.1版本中,FindBugs继续保持着数以百计的bug描述。根据bug的严重程度,FindBugs将bug分为四个水平:相关 的,令人困扰的,可怕的,以及最可怕的。除了图形用户界面,FindBugs还提供一个命令行界面,Ant任务,以及Eclipse插件。
7.VisualVM
包含在JDK中的VisualVM是监控和审查Java应用程序性能的工具。VisualVM检测并重视活跃的JVM实例来检索有关进程的诊断信息。
VisualVM可以很容易地实时诊断性能问题。它提供了全套的分析工具,包括JConsole、jstack、jmap、jinfo和jstat等。此外,你还可以对JVM做一个快照,这样以后在任何时都能审查。
8.Groovy
Groovy是一种编程语言,通过添加新的关键字,自动导入常用的类,以及可选类型变量声明,既简化又扩展了Java。
Groovy的核心优势之一是它的脚本功能。类可以被编译为Java字节码或使用Groovy Shell动态执行。Groovy的Java基础使得它相较于Jython和JRuby更容易为Java开发人员所接受。
第三篇:Java程序员入行需要做哪些准备工作
千锋教育-中国IT职业教育领先品牌
Java程序员入行需要做哪些准备工作
随着IT从业人员的分工会越来越细,要求也会越来越专业,很多想要入行的人士不知道做何种准备才能更好适应此行业,为此千锋老师依据相关招聘信息分析得出所有公司招聘Java程序员的三类基本要求:
一、入行的两个基本要求
(1)学历:大学本科及以上学历(能力优秀的专科也考虑),计算机及其相关专业;
(2)经验:一年以上Java开发工作经验;
这两个要求,可以说,是目前大多数开发类技术岗位上,一定都会有的要求。
(一)学历问题的门槛分析
学历方面,文凭都只是“沉没成本”!只是证明了你在过去的时间段内有学好某个方面知识的能力!具体到某个时间段的某个特定的人来说,就不一定了,但没办法,HR们也看不到你的未来,只能看到你的过去,所以,也就只能通过“过去和现在,从概率上排除你了”!
越来越多的公司开始限定最低本科学历,除了上面的学习能力之外,还有一个更重要的原因,HR部门年终的时候都要给老总出一张图表,其上显示“985院校招了多少,普通本科招了多少,专科招了多少”,以显示公司人员的“综合学历”越来越高,人力资源部的工作越做越出色,这就是“形式决定内容!”
(二)如何跨越学历门槛
虽说学历绝大多数时候都只是个敲门砖,但是基本的要求还是要达到的,当然,如果你的要求不太合适,可以强调你的技术实力!人力资源部门在学历方面会设置门槛,而技术部门却对你的“功力”更看重,有个能立即上手干活的下属
千锋教育www.xiexiebang.com
比一张文凭更重要,毕竟你“干多了,干好了”,功劳全是领导的,“领导功不可没呀!呵呵!”
在绝大多数公司中,技术部门的权限要比人力资源部的权限大多了,所以,如何绕过HR们,找到直接的“未来上级”就显得格外重要了!
(三)经验问题的门槛分析
经验方面,很多大学生会说:“我如何能具备工作经验啊?”,“那我就没办法找到工作了?”……
没办法,这个社会就是这么残酷!企业是盈利为目的的!大多数公司,都不想花培养人的成本,都希望用熟手,所以,你的工资高低是由“利润贡献度”决定的!而不是公司的规模,不一定大公司的工资就比小公司高!;但从另一方面来说,具有一定的项目开发经验,工作起点就会高很多,不管是收入,还是发展,你都会站在一个比较有利的位置上。
实际上,大学生也可以通过一定的训练,积累很多的项目开发经验,达到工作1-2年程序员的水平,这个我们下次再讨论。
二、入行的三个软实力要求
(1)良好的职业素养,有较强的学习能力,能不断提升自我能力;
(2)具有良好的表达,较强的沟通能力,富有进取心,能承受一定的工作压力;
(3)具有阅读相关技术需求文档能力;具有一定的软件设计及文档编写能力;
这三个要求,也是对当今IT技术人员的基本要求了:学习能力关系到你是否具有可持续的职场发展能力;沟通能力关系到你能否在团队中愉快地工作,同时也保证项目的顺利进行;阅读和写作能力,这差不多是中国理工科学生的软肋,千锋教育-中国IT职业教育领先品牌
千锋教育www.xiexiebang.com
所以招聘方,一般都着力强调。
不过这些方面的能力,在工作中适当训练,即可提高,毕竟也是软实力,面试不太好考核,关键是以下的硬性技术指标要求。
千锋教育-中国IT职业教育领先品牌
三、入行的Java硬性技术要求
(1)精通Java开发语言、熟练掌握Eclipse开发工具;
(2)熟悉HTML、精通Apache、JSP、Servlet3.x等Web开发相关技术;
(3)熟悉主流数据库Oracle、MySQL、MS-SQL Server,熟练掌握SQL。
(4)熟悉使用Struts2.x、Spring4.x、Hibernate5等常用开发框架;
(5)熟练使用JavaScript、Ajax技术及AngularJS等前端MVC框架;
(6)具有一年及以上相关开发经验;
除此之外,还有一些特色要求:
(1)精通J2EE,熟悉主流应用服务器如JBOSS(WildFly)、WebLogic、WebSphere中至少一种;
(2)熟悉J2EE平台部署配置及性能调试(WebLogic和WebSphere);
(3)熟悉web service 开发,精通一种大型数据库开发和调试;
(4)精通Transaction、Security、Persistence等机制及实现,IOC、AOP、SOA
千锋教育www.xiexiebang.com
等理念及实现;
千锋教育-中国IT职业教育领先品牌
(5)熟练掌握面向对象的分析设计技术和工具,包括UML等;
(6)了解Web应用的性能瓶颈和调优方式;
(7)了解软件测试、软件工程、SOA、设计模式等相关知识;
(8)应用过UML、重构、软件设计模式,Ruby技术者优先;
当然,这些技术要求,并不特别要求你一定会掌握,有些可以通过快速的学习掌握,有些需要长时间的积累。
HR们自己也明白,这些要求属于人力资源储备式样的要求,如果你具备,可以在面试中加分,不具备,关系也不大。
四、如何成为一名合格的Java程序员?
有了上面的分析,我们可以看出,要成为一个合格的Java程序员,必须具备过硬的技术本领,集中在三个方面:
(1)精通Java面向对象基本语法,能完成Java Web开发;
(2)熟练SSH三大开发框架,能用它们完成一些项目;
(3)掌握主流数据库Oracle、MySQL、MS-SQL Server,熟练掌握SQL;
千锋教育www.xiexiebang.com
仔细分析一下,要达到上述三个基本要求,也不是那么的难,你只需要花上4-6个月的时间,找齐备资料,自己开发一些小程序,再参加一些项目的开发,如果你感觉你的自学能力还不够,可以去参加一些培训,和一些同学,一起学习。
千锋教育-中国IT职业教育领先品牌
千锋教育www.xiexiebang.com
第四篇:熟练的Java程序员应该掌握哪些技术?
熟练的Java程序员应该掌握哪些技术?
Java程序员应该掌握哪些技术才能算是脱离菜鸟达到熟练的程度?
1、语法:Java程序员必须比较熟悉语法,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息 知道是什么样的语法错误并且知道任何修正。
2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、HtmlConverter、jar、、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java 实际上还很不了解。
3、工具 :必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。
4、API:Java的核心API是非常庞大的,但是有一些内容笔者认为是Java程序员必须熟悉的,否则不可能熟练的运用Java,包括:
java.lang包下的80%以上的类的功能的灵活运用。
java.util包下的80%以上的类的灵活运用,特别是集合类体系、规则 表达式、zip、以及时间、随机数、属性、资源和Timer.java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
java.math包下的100%的内容。
java.net包下的60%以上的内容,对各个类的功能比较熟悉。
java.text包下的60%以上的内容,特别是各种格式化类。
熟练运用JDBC.8)、java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java.AWT的基本内容,包括各种组件事件、监听器、布局管理器、常用组件、打印。Swing的基本内容,和AWT的要求类似。
XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
5、测试 :必须熟悉使用junit编写测试用例完成代码的自动测试。
6、管理:Java程序员必须熟悉使用ant完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。
7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
8、思想:必须掌握OOP的主要要求,这样使用Java开发的系统才能是真正的Java系统。
9、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。
10、博学:Java程序员除了精通Java意外,还要掌握J2EE、Oracle、WebLogic、Jboss、Spring、Struts、Hibernate 等流行技术,掌握软件架构设计思想、搜索 引擎优化、缓存系统设计、网站负载均衡、系统性能调优等。
第五篇:JAVA程序员应该掌握的10项技能
www.xiexiebang.com JAVA程序员应该掌握的10项技能
作为一个Java程序员,应该掌握的一些技能:
1、语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正。
2、命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:appletviewer、HtmlConverter、jar、java、javac、javadoc、javap、javaw、native2ascii、serialver,如果这些命令你没有全部使用过,那么你对java实际上还很不了解。
3、工具:必须至少熟练使用一种IDE的开发工具,例如Eclipse、Netbeans、JBuilder、Jdeveloper、IDEA、JCreator或者Workshop,包括进行工程管理、常用选项的设置、插件的安装配置以及进行调试。
4、API:Java的核心API是非常庞大的,但是有一些内容笔者认为是必须熟悉的,否则不可能熟练的运用Java,包括:
◆java.lang包下的80%以上的类的功能的灵活运用。
◆java.util包下的80%以上的类的灵活运用,特别是集合类体系、规则表达式、zip、以及时间、随机数、属性、资源和Timer.◆java.io包下的60%以上的类的使用,理解IO体系的基于管道模型的设计思路以及常用IO类的特性和使用场合。
◆java.math包下的100%的内容。
◆java.net包下的60%以上的内容,对各个类的功能比较熟悉。
◆java.text包下的60%以上的内容,特别是各种格式化类。
◆熟练运用JDBC.8)、java.security包下40%以上的内容,如果对于安全没有接触的话根本就不可能掌握java.◆AWT的基本内容,包括各种组件事件、监 听器、布局管理器、常用组件、打印。
◆Swing的基本内容,和AWT的要求类似。
◆XML处理,熟悉SAX、DOM以及JDOM的优缺点并且能够使用其中的一种完成XML的解析及内容处理。
www.xiexiebang.com
5、测试:必须熟悉使用junit编写测试用例完成代码的自动测试。
6、管理:必须熟悉使用ant完成工程管理的常用任务,例如工程编译、生成javadoc、生成jar、版本控制、自动测试。
7、排错:应该可以根据异常信息比较快速的定位问题的原因和大致位置。
8、思想:必须掌握OOP的主要要求,这样使用Java开发的系统才能是真正的Java系统。
9、规范:编写的代码必须符合流行的编码规范,例如类名首字母大写,成员和方法名首字母小写,方法名的第一个单词一般是动词,包名全部小写等,这样程序的可读性才比较好。
(ps:本文章由北大青鸟广安门校区搜集自互联网)