[转]Java常用概念解答

1. 事务是什么?

事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、

一致性、隔离性和持久性)属性,只有这样才能成为一个事务:

原子性

事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

一致性

事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改

,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正

确的。

隔离性

由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么

是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。

这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事

务执行的状态相同。

持久性

事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

2. 在数据库中条件查询速度很慢的时候,如何优化?

1.建索引
2.减少表之间的关联
3.优化sql,尽量让sql很快定位数据,不要让sql做全表查询,应该走索引,把数据量大的表排在前面
4.简化查询字段,没用的字段不要,已经对返回结果的控制,尽量返回少量数据

3.  session.load()和session.get()区别

Session.load/get方法均可以根据指定的实体类和id从数据库读取记录,并返回与之对应的实体对象。其区别在于:
1) 如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。
2) Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。
3 ) load方法可以充分利用内部缓存和二级缓存中的现有数据,而get方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用SQL完成数据读取。

4.  说一下Servlet的生命周期

A:定位:用户根据地址请求指定的servlet,web.xml根据用户输入的地址,定位到具体的servlet。
B:加载:将找到的servlet类加载到web容器中(servlet容器)。
C:实例化:调用默认无参构造函数,实现servlet的实例化。
D:初始化:调用Init方法,实现成员变量的初始化。
E:服务处理:servlet的service方法接收用户请求,根据当前用户请求的方式是get还是post,service自动将用户请求传递到doGet和doPost方法中进行处理。处理完成后,产生响应结果。
F:销毁:调用destroy方法,实现servlet的释放工作。
服务器关闭时进行释放。或者是servlet产生改变重新加载前进行释放原来的servlet。

注意:在servlet容器中,一个servlet只会产生一个一个实例对象进行工作。

5.  谈谈final, finally, finalize的区别。

final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父

类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,

可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以后的引用中只能

读取,不可修改。被声明为final的方法也同样只能使用,不能重载。

finally?再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的

catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。

finalize?方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前

做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在

Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其

他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

6.  为什么使用Hibernate,Hibernate执行流程。

1. 封装了jdbc,简化了很多重复性代码。
2. 简化了DAO层编码工作,使开发更对象化了。
3. 移植性好,支持各种数据库,如果换个数据库只要在配置文件中变换配置就可以了,不用改变hibernate代码。
4. 支持透明持久化,因为hibernate操作的是纯粹的(pojo)java类,没有实现任何接口,没有侵入性。所以说它是一个轻量级框架。

Hibernate执行流程:

1. 通过Configuration().configure();读取并解析hibernate.cfg.xml配置文件。
2. 由hibernate.cfg.xml中的读取解析映射信息。
3. 通过config.buildSessionFactory();//得到sessionFactory。
4. sessionFactory.openSession();//得到session。
5. session.beginTransaction();//开启事务。
6. persistent operate;
7. session.getTransaction().commit();//提交事务
8. 关闭session;
9. 关闭sessionFactory;

二 手写编程题

1. 请用C++、Java、C#或VB.NET 任意一种面向对象的语言实现一个计算器控制台程序,要求输入输入两个数 和 运算符,得到结果。

2. 写一段代码验证StringBuffer ,String 字符串连接性能差别

String tempstr = “abcdefghijklmnopqrstuvwxyz”;

int times=5000;

long here1= System.currentTimeMillis();

String str = “”;

for (int i = 0; i < times;i++) {

str =str+ tempstr;

}

long here2= System.currentTimeMillis();

long time = (here2 - here1);

System.out.println(“以上代码执行需要”+time+”毫秒”);

long here1= System.currentTimeMillis();

StringBuffer sb = new StringBuffer();

for (int i = 0; i < times; i++) {

sb.append(tempstr);

}

long here2= System.currentTimeMillis();

long time = (here2 - here1);

System.out.println(“以上代码执行需要”+time+”毫秒”);

 

 

1.servlet的生命周期? 
答:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。   这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。    web容器加载servlet,生命周期开始。
  通过调用servlet的init()方法进行servlet的初始化。
  通过调用service()方法实现,根据请求的不同调用不同的do***()方法。   结束服务,web容器调用servlet的destroy()方法。 2、Servlet执行时一般实现哪几个方法? 答:public void init(ServletConfig config) public ServletConfig getServletConfig() public String getServletInfo()
public void service(ServletRequest request,ServletResponse response) public void destroy()
3.说出Servlet的生命周期,并说出Servlet和CGI的区别。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。
2.简述jsp和servlet的联系。 Java Servlet是JSP技术的基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。现在许多Web服务器都支持Servlet,即使不直接支持Servlet的Web服务器,也可以通过附件的应用服务器和模块来支持Servlet,这得益于Java的跨平台特性。另外,由于Servlet内部以线程方式提供提供服务,不必对于每个请求都启动一个进程,并且利用多线程机制可以同时为多个请求服务,因此Servlet的效率非常高。
4、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?  JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以
组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。 5、MVC的各个部分都有那些技术来实现?如何实现? 
答:MVC是Model-View- Controller的简写。"Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应用的表示面(由JSP页面产生),"Controller" 是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重 用。 
6. jsp有哪些内置对象?作用分别是什么? 
答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应): (1 request)HttpServletRequest类的Request对象.
    作用:代表请求对象,此请求会包含来自GET/POST请求的参数。主要用于接受客户端通过HTTP协议连接传输到服务器端的数据。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。 
(2 response)HttpServletResponse类的Respone对象.
    作用:代表响应对象,主要用于向客户端发送数据。网页传回用户端的回应,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等) (3 out)   JspWriter类的out对象.     作用:主要用于向客户端输出数据(用来传送回应的输出 );  Out的基类是JspWriter,并提供了几个方法使你能用于向浏览器回送输出结果。 (4 session)HttpSession类的session对象.
    作用:主要用于来分别保存每个用户信息,与请求关联的会话;会话状态维持是Web应用开发者必须面对的问题。
(5 applicaton)   ServletContex类的application对象
    作用:主要用于保存用户信息,代码片段的运行环境;它是一个共享的内置对象,即一个容器中的多个用户共享一个application对象,故其保存的信息被所有用户所共享.这有助于查找有关servlet引擎和servlet环境的信息.
(6 pageContext)PageContext类的PageContext对象
    作用:管理网页属性,为JSP页面包装页面的上下文,管理对属于JSP中特殊可见部分中已命名对象的访问,它的创建和初始化都是由容器来完成的。 (7 config)   ServletConfig类的Config对象.
   作用:代码片段配置对象,表示Servlet的配置。该对象用于存取servlet实例的初始化参数。

(8 page)Object类的Page(相当于this)对象.
    作用:处理JSP网页(JSP网页本身),是Object类的一个实例,指的是JSP实现类的实例(表示从该页面产生的一个servlet实例),即它也是JSP本身,只有在JSP页面范围之内才是合法的。 (9 Exception)作用:处理JSP文件执行时发生的错误和异常,针对错误网页,未捕捉的例外  7.JSP的内置对象及方法。
   request request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。 
   response response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等)    
 out 对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。     pageContext pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间,
servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 
   session session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息     application applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息 
   config config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。     page page表示从该页面产生的一个servlet实例 8、jsp有哪些动作?作用分别是什么?  答:JSP共有以下6种基本动作 
  jsp:include:在页面被请求的时候引入一个文件。    jsp:useBean:寻找或者实例化一个JavaBean。    jsp:setProperty:设置JavaBean的属性。 
  jsp:getProperty:输出某个JavaBean的属性。    jsp:forward:把请求转到一个新的页面。 
  jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记  9、Request对象的主要方法:
setAttribute(String name,Object):设置名字为name的request的参数值 getAttribute(String name):返回由name指定的属性值
getAttributeNames():返回request对象所有属性的名字集合,结果是一个枚举的实例

 

转载于:https://www.cnblogs.com/ZhuRenWang/p/4743668.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea maven创建java项目_新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目(图文教程)...

之前都没试过用maven来管理过项目&#xff0c;但是手动找包导包确实不方便&#xff0c;于是今天用2016版的IDEA进行了maven的初尝试。打开IDEA&#xff0c;创建新项目&#xff1a;然后选择Maven&#xff0c;以及选择自己电脑的jdk&#xff1a;接下来自定义GroupId以及ArtifactI…

Linux 格式化磁盘命令mkfs

linux格式化磁盘命令mkfs指令&#xff1a;mkfs使用权限 : 超级使用者使用方式 : mkfs [-V] [-t fstype] [fs-options] filesys [blocks] [-L Lable]说明 &#xff1a; 建立 linux 档案系统在特定的 partition 上参数 &#xff1a;device &#xff1a; 预备检查的硬盘 partition…

servlet 返回可访问文件_JavaWeb技术(4):Servlet的理解(上)

我们在开发中无时无刻都在与Servlet进行接触&#xff0c;只是因为框架的封装性&#xff0c;我们很少直接地去操作servlet&#xff0c;但再怎么封装&#xff0c;基本的思路都不会变化&#xff0c;变得只是实现的方式&#xff0c;Servlet是什么&#xff1a;网上的回答基本是Servl…

java ldap 分页_具有从属引用的 LDAP 分页查询未正确处理

具有从属引用的 LDAP 分页查询未正确处理09/14/2020本文内容本文提供了一些方法来避免使用从属引用的 LDAP 分页查询未正确处理的问题。原始产品版本&#xff1a; Windows 8原始 KB 编号&#xff1a; 2561166症状你有一个应用程序&#xff0c;使用 ldap_search_ext 或 ldap…

js分家效应

&#xff08;原创文章&#xff0c;转载请注明出处&#xff09; 有继承&#xff0c;那么就有分家。让我们看以下例子。 var parents function(){}parents.prototype.money 200;var children function(){}children.prototype new parents();var parent new parents();var ch…

如何设置打印的时候不加上页面链接_excel表格的这10个打印小技巧,办公室财务人员记得收藏...

打印工作表是日常工作中最常见的一个工作&#xff0c;也是Excel在工作中最常用的一个地方&#xff0c;如何做到快速准确地打印文件呢。今天文理会计小编给大家从网上整理了几个打印文件的小技巧。1、打印标题打印的工作表的数据有好多页的时候&#xff0c;为了查看方便&#xf…

java sql objects_第十五章-简书.sql

-- ## 练习1-- 1. 创建一个视图&#xff0c;通过该视图可以查询到工资在2000-5000内并且姓名中包含有A的员工编号&#xff0c;姓名&#xff0c;工资。create or replace view viewSal2k_5kas select empno,ename,sal from empwhere sal between 2000 and 5000and ename like %A…

rabbitmq 拉取消息太慢_面试官:消息队列这些我都要问

作者&#xff1a;mousycodersegmentfault.com/a/1190000021054802消息队列连环炮项目里怎么样使用 MQ 的&#xff1f;为什么要使用消息队列&#xff1f;消息队列有什么优点和缺点&#xff1f;kafka,activemq,rabbitmq,rocketmq 都有什么去呗&#xff1f;如何保证消息队列高可用…

java 星期顺序_第8周 【项目3-顺序串算法】

/**Copyright (c)2017,烟台大学计算机与控制工程学院*All rights reservrd.*作者&#xff1a;李欣豪*完成时间&#xff1a;2017年12月14日*版本号&#xff1a;v1.0*问题描述&#xff1a;采用顺序存储方式存储串&#xff0c;实现下列算法并测试&#xff1a;(1)试编写算法实现将…

[ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify uniq

angularjs 使用ng-repeat报错 <div ng-init"words [高校,高校,高校]" ng-repeat"word in words">{{word}} </div> [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use track by expression to specify unique keys 发现是因为相…

java 并列排名,178. 分数排名

题目描述编写一个 SQL 查询来实现分数排名。如果两个分数相同&#xff0c;则两个分数排名(Rank)相同。请注意&#xff0c;平分后的下一个名次应该是下一个连续的整数值。换句话说&#xff0c;名次之间不应该有“间隔”。-----------| Id | Score |-----------| 1 | 3.50 || 2 |…

编写高质量代码改善C#程序的157个建议——建议130:以复数命名枚举类型,以单数命名枚举元素...

建议130&#xff1a;以复数命名枚举类型&#xff0c;以单数命名枚举元素 枚举类型应该具有负数形式&#xff0c;它表达的是将一组相关元素组合起来的语义。比如&#xff1a; enum Week{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday} 在这里&#xff0c;Week对于星…

python 定义变量_第三章(第2节):变量和常量

变量的概念基本上和初中代数的方程变量是一致的&#xff0c;只是在计算机程序中&#xff0c;变量不仅可以是数字&#xff0c;还可以是任意数据类型&#xff0c;比如我们上节课刚刚学过的基本数据类型或者我们后面要学的自定义数据类型。所谓常量就是不能改变的变量&#xff0c;…

OpenStack Weekly Rank 2015.08.24

Module  Reviews  Drafted Blueprints  Completed Blueprints  Filed Bugs  Resolved Bugs Cinder  5      1          1            6       13 Swift   10     N/A         N/A           8   …

php如何判断是否新数据类型,php中如何判断变量的数据类型呢?

摘要:下文讲述PHP中判断变量数据类型的方法分享&#xff0c;如下所示&#xff1b;实现思路:方式1&#xff1a;使用gettype函数返回变量的数据类型gettype函数可返回"boolean”、“integer”、“double”(float类型会返回“double”&#xff0c;而非“float”)、“string”…

pytorch卷积神经网络_资源|卷积神经网络迁移学习pytorch实战推荐

点击上方“AI遇见机器学习”&#xff0c;选择“星标”公众号重磅干货&#xff0c;第一时间送达一、资源简介这次给大家推荐一篇关于卷积神经网络迁移学习的实战资料&#xff0c;卷积神经网络迁移学习简单的讲就是将一个在数据集上训练好的卷积神经网络模型通过简单的调整快速移…

php 删除服务器上的文件,php如何删除服务器文件

在php中可以使用“ftp_delete”函数删除服务器文件&#xff0c;其语法是“ftp_delete(ftp_connection,file)”&#xff0c;参数“ftp_connection”表示要使用的FTP连接&#xff0c;参数“file”表示要删除的文件的路径。推荐&#xff1a;《PHP视频教程》PHP ftp_delete() 函数定…

企业生产环境下不同业务的linux分区建议

常规分区方案&#xff1a; /boot: 100M swap:内存的1至1.5倍 / : 剩余硬盘大小 DB及存储&#xff1a;有大量重要的数据 /boot : 100M swap: 内存的1至1.5倍&#xff0c;如果内存大于等于16G&#xff0c;分为8G至16G / &#xff1a;50-200G /data&#xff1a; 硬盘剩余所有大小…

python爬虫ip限制_简单爬虫,突破IP访问限制和复杂验证码,小总结

简单爬虫&#xff0c;突破复杂验证码和IP访问限制好吧&#xff0c;看题目就知道我是要写一个爬虫&#xff0c;这个爬虫的目标网站有一些反爬取意识&#xff0c;所以就有了本文了。我先说说场景吧&#xff1a;由于工作需要&#xff0c;平时有一大堆数据需要在网上查询&#xff0…

php使用双引号,PHP编程双引号怎么使用

PHP编程双引号怎么使用PHP用单引号代替双引号来包含字符串&#xff0c;这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量&#xff0c;单引号则 不会&#xff0c;注意&#xff1a;只有echo能这么做&#xff0c;它是一种可以把多个字符串当作参数的“函数”(译注&…