java面试
随缘121
这个作者很懒,什么都没留下…
展开
-
response.setContentType与 request.setCharacterEncoding 区别
1、request.setCharacterEncoding()是设置从request中取得的值或从数据库中取出的值 指定后可以通过getParameter()则直接获得正确的字符串,如果不指定,则默认使用iso8859-1编码。值得注意的是在执行setCharacterEncoding()之前,不能执行任何getParameter()。而且,该指定只对POST方法有效,对GE转载 2017-06-20 13:27:36 · 406 阅读 · 0 评论 -
漂亮回答面试官struts2的原理
众所周知,Struts2是个非常优秀的开源框架,我们能用Struts2框架进行开发,同时能快速搭建好一个Struts2框架,但我们是否能把Struts2框架的工作原理用语言表达清楚,你表达的原理不需要说出底层是怎么实现的,我估计大多数的人也听不懂。当面试官问到我们Struts2的工作原理时,我们该怎么回答这个问题呢?回答什么才能让自己说的与众不同,先看看其他朋友总结的注:参考文转载 2016-05-28 11:01:43 · 3337 阅读 · 1 评论 -
Java并发编程:线程池的使用
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任转载 2016-05-27 20:14:32 · 1030 阅读 · 0 评论 -
Hibernate n+1问题
在Session的缓存中存放的是相互关联的对象图。默认情况下,当Hibernate从数据库中加载Customer对象时,会同时加载所有关联的 Order对象。以Customer和Order类为例,假定ORDERS表的CUSTOMER_ID外键允许为null以下Session的find()方法用于到数据库中检索所有的Customer对象: List customerLists=ses转载 2016-05-27 19:43:11 · 377 阅读 · 0 评论 -
hibernate缓存:一级缓存和二级缓存
1.什么是缓存? 缓存是介于物理数据源与应用程序之间,是对数据库中的数据复制一份临时放在内存中的容器,其作用是为了减少应用程序对物理数据源访问的次数,从而提高了应用程序的运行性能。Hibernate在进行读取数据的时候,根据缓存机制在相应的缓存中查询,如果在缓存中找到了需要的数据(我们把这称做“缓存命 中"),则就直接把命中的数据作为结果加以利用,避免了大量发送SQL语句到数据库查询的性能转载 2016-05-27 19:11:43 · 399 阅读 · 0 评论 -
hibernate一级缓存和二级缓存的区别
缓存是介于应用程序和物理数据源之间,其作用是为了降低应用程序对物理数据源访问的频次,从而提高了应用的运行性能。缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。 缓存的介质一般是内存,所以读写速度很快。但如果缓存中存放的数据量非常大时,也会用硬盘作为缓存介质。缓存的实现不仅仅要考虑存储的介质,还要考虑到管理缓存的并发转载 2016-05-27 18:49:02 · 384 阅读 · 0 评论 -
Hibernate中一级缓存和二级缓存使用详解
一、一级缓存二级缓存的概念解释(1)一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个session(一定要同一个session)又做了同一个操作,那么hibernate直接从一级缓存中拿,而不会再去连数据库,取数据;(2)二级缓存就是SessionFactory级别的缓存,顾名思义,就是查询的时候转载 2016-05-27 18:13:35 · 330 阅读 · 0 评论 -
spring MVC原理
Spring MVC工作流程图 图一 图二 Spring工作流程描述 1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获; 2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用转载 2016-05-26 19:49:02 · 786 阅读 · 0 评论 -
spring中的BeanFactory与ApplicationContext的作用和区别?
BeanFactory类关系继承图1. BeanFactory类结构体系:BeanFactory接口及其子类定义了Spring IoC容器体系结构,由于BeanFactory体系非常的庞大和复杂,因此要理解Spring IoC,需要先理清BeanFactory的继承机构。 2. ApplicationContext的结构体系:ApplicationC转载 2016-05-26 17:39:23 · 16540 阅读 · 5 评论 -
Java过滤器与SpringMVC拦截器之间的关系与区别
今天学习和认识了一下,过滤器和SpringMVC的拦截器的区别,学到了不少的东西,以前一直以为拦截器就是过滤器实现的,现在想想还真是一种错误啊,而且看的比较粗浅,没有一个全局而又细致的认识,由于已至深夜,时间原因,我就把一些网友的观点重点摘录下来,大家仔细看后也一定会有一个比较新的认识(在此非常感谢那些大牛们的无私奉献,分享他们的经验与心得,才能让像我这样的小白有机会站一下你们这些巨人的肩膀,才能转载 2016-05-26 16:50:47 · 713 阅读 · 0 评论 -
一分钟教你知道乐观锁和悲观锁的区别
悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人转载 2016-05-28 12:41:51 · 1204 阅读 · 0 评论 -
HashMap与ConcurrentHashMap的区别
从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是线程安全的,因此多线程操作时需要格外小心。在JDK1.5中,伟大的Doug Lea给我们带来了concurrent包,从此Map也有安全的了。ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchronized,那样就变成了HashTable转载 2016-05-29 14:03:04 · 825 阅读 · 0 评论 -
Java 理论与实践: 正确使用 Volatile 变量
在 IBM Bluemix 云平台上开发并部署您的下一个应用。开始您的试用Java 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是synchronized 的一部分。本文介绍了几种有效使用 volati转载 2016-05-29 17:26:30 · 484 阅读 · 0 评论 -
HashMap的工作原理
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入转载 2017-04-22 15:02:28 · 436 阅读 · 0 评论 -
Java:单例模式的七种写法
第一种(懒汉,线程不安全): 1 public class Singleton { 2 private static Singleton instance; 3 private Singleton (){} 4 public static Singleton getInstance() { 5 if (instance ==转载 2016-06-12 16:32:10 · 828 阅读 · 0 评论 -
一、Spring单例模式与线程安全
Spring框架里的bean,或者说组件,获取实例的时候都是默认的单例模式,这是在多线程开发的时候要尤其注意的地方。 单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行该请求多对应的业务逻辑(成员方法),此时就要注意了,转载 2016-06-04 20:13:35 · 1498 阅读 · 0 评论 -
Spring框架中的单例Beans是线程安全的么
看到这样一个问题:Spring框架中的单例Beans是线程安全的么?Spring框架并没有对单例bean进行任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者自行去搞定。但实际上,大部分的Spring bean并没有可变的状态(比如Serview类和DAO类),所以在某种程度上说Spring的单例bean是线程安全的。如果你的bean有多种状态的话(比如 View Model转载 2016-06-04 18:53:51 · 15290 阅读 · 3 评论 -
springMVC学习笔记(一)-----springMVC原理
一、什么是springmvc二、mvc在b/s系统下的应用三、SpringMVC框架介绍回到顶部一、什么是springmvc springMVC是spring框架的一个模块,springMVC和spring无需通过中间整合层进行开发。 springMVC是一个基于mvc的web框架。 Spring web mvc和Struts2都属于转载 2016-06-03 19:26:58 · 996 阅读 · 0 评论 -
java中list、set和map 的区别
List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序–否则应该使用List)。Map同样对每个元素保存一份,但这是基于”键”的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashMap. List的转载 2016-06-03 15:45:59 · 615 阅读 · 0 评论 -
SpringMVC工作原理
上面的是springMVC的工作原理图:1、客户端发出一个http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(在web.xml中指定),web容器将请求转交给DispatcherServlet.2、DipatcherServlet接收到这个请求之后将根据请求的信息(包括URL、Http方法、请求报文头和请求参数C转载 2016-06-02 19:12:49 · 577 阅读 · 0 评论 -
抽象类和接口的区别——从java的设计意图说起
abstract class和interface可谓是java中的双骄,既相辅相成又各司其职,相信一部分从业人员在没有掌握其中奥妙之前用的也就比较随意,java中为什么会出现这么模糊不清的一对呢?就从java的设计意图谈谈抽象类和接口的区别 平常我们总是说抽象类(abstract class)里可以写实现方法而接口(interface)中却不可以,无论面试或是新手询问转载 2016-06-02 13:32:50 · 1115 阅读 · 0 评论 -
深入理解Java的接口和抽象类
深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口转载 2016-06-02 13:32:21 · 602 阅读 · 0 评论 -
《深入理解mybatis原理》 Mybatis数据源与连接池
对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题。本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池。 本文首先会讲述MyBatis的数据源的分类,然后会介绍数据源是如何加载和使用的。紧接着将分类介绍UNPOOLED、POOLED和JNDI类型的数据源组织;期间我们会重点讲解POOLED类型的数据源和其实现的转载 2016-05-26 12:58:52 · 2042 阅读 · 0 评论 -
读完这个我懂了JNDI
NDI 是什么JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的意义和作用,就没有真正掌握J2EE特别是EJB的知识。那么,JNDI到底起什么作用?要了解JNDI的作用,我们可以从“如果不用JNDI我们怎样做?用了JNDI后我们又将怎样做?”这转载 2016-05-26 11:01:37 · 480 阅读 · 0 评论 -
两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?
对。 如果对象要保存在HashSet或HashMap中,它们的equals相等,那么,它们的hashcode值就必须相等。 如果不是要保存在HashSet或HashMap,则与hashcode没有什么关系了,这时候hashcode不等是可以的,例如arrayList存储的对象就不用实现hashcode,当然,我们没有理由不实现,通常都会去实现的。对。 如果对象要保存在转载 2015-06-15 21:08:26 · 5590 阅读 · 0 评论 -
java作用域public ,private ,protected 及不写时的区别
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用,私有财产神圣不可侵犯嘛,即便是子女,朋友,都不可以使用。3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对转载 2015-06-15 21:10:32 · 6536 阅读 · 0 评论 -
this和super的区别
3.7.2、this和super的区别No.区别thissuper1操作属性this.属性:表示调用本类中的属性,如果本类中的属性不存在,则从父类查找super.属性:表示调用父类中的属性2操作方法t转载 2015-06-15 21:02:08 · 365 阅读 · 0 评论 -
ArrayList和Linkedlist的区别
1.ArrayList是基于数组,LinkedList基于链表实现。对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对 ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。2.对于随机访问get和set,ArrayList觉转载 2015-06-15 21:00:48 · 343 阅读 · 0 评论 -
构造器Constructor是否可被override?
一、构造器是干什么用的?(what) 构造器是用来生成一个类的实例是用来初始化这个实例用的 二、构造器如何工作?(how) Java在构造实例时的顺序是这样的: 1、分配对象空间,并将对象中成员初始化为0或者空,java不允许用户操纵一个不定值的对象。 2、执行属性值的显式初始化 3、执行构造器转载 2015-06-15 21:09:10 · 6078 阅读 · 0 评论 -
Error与Exception有什么区别
Error类和Exception类都继承自Throwable类。Error的继承关系:java.lang.Object java.lang.Throwable java.lang.Error Exception的继承关系:java.lang.Objectjava.lang.Throwable java.lang.Excep转载 2015-06-15 21:03:21 · 1831 阅读 · 0 评论 -
Java中的异常处理机制的简单原理和应用
(1)当JAVA 程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况:(a)一种是JAVA类库内置的语义检查。(b)另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。(2)所有的异常都是 java.lang.Thowable的子类。转载 2015-06-15 21:04:16 · 406 阅读 · 0 评论 -
入门程序员在开发过程中遇到的困难
(1). 需求理解不足,沟通不畅,往往是入门程序员遇到的最大障碍,导致后期不断返工(2). 对框架,技术实现的理解不足,尤其是对一些基础知识的掌握不足,容易导致开发过程中不顺畅,对心理产生负担的同时,更影响开发效率和程序质量(3). 由于经验不足,导致对复杂功能的实现无思路,耗费时间(4). 由于以上两点对时间的消耗,在完成功能的同时,无转载 2015-06-15 20:45:04 · 2600 阅读 · 0 评论 -
[尚硅谷] 尚硅谷技术文档——Struts2 面试题分析
Struts2 面试题分析1. 简述 Struts2 的工作流程:①. 请求发送给StrutsPrepareAndExecuteFilter②. StrutsPrepareAndExecuteFilter 判定该请求是否是一个 Struts2 请求③. 若该请求是一个Struts2 请求,则 StrutsPrepareAndExecuteFilter转载 2015-06-16 21:14:00 · 604 阅读 · 0 评论 -
阿里面试重点总结
1.Java基础 ArrayList,HashMap等集合框架类,重要基础类String等的处理。HashMap的底层存储结构等。 (也可以顺带考察下对接口,继承,重载重写的基本理解;以及异常处理的注意事项)。 2. 数据结构与算法 常见的查找算法及时间复杂度。 常见的排序算法及时间复杂度。 比较重要的数据结构,如链表,队列,栈的基本理解及大致实转载 2016-03-18 15:46:20 · 700 阅读 · 0 评论 -
hash算法 (hashmap 实现原理) Java实现的散列表
1.HashMap的数据结构 数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法—— 拉链法,我们可以理解为“链表的数组” ,如图: 从上图我们可以发现哈希表是由数组转载 2016-05-25 10:12:49 · 5572 阅读 · 2 评论 -
HashMap的实现原理和底层数据结构
看了下JAVA里面有HashMap、Hashtable、HashSet三种hash集合的实现源码,这里总结下,理解错误的地方还望指正HashMap和Hashtable的区别HashSet和HashMap、Hashtable的区别HashMap和Hashtable的实现原理HashMap的简化实现MyHashMap HashMap和Hashtable的转载 2016-05-25 10:25:19 · 59814 阅读 · 2 评论 -
几种session存储方式比较
原文地址:几种session存储方式比较(转载)作者:jimy集群中session安全和同步是个最大的问题,下面是我收集到的几种session同步的方案,希望能通过分析其各自的优劣找出其适应的场景。1. 客户端cookie加密这是我以前采用的方式,简单,高效。比较好的方法是自己采用cookie机制来实现一个session,在应用中使用此session实现。问题:se转载 2016-05-25 20:18:00 · 3117 阅读 · 0 评论 -
分布式session
实现分布式session最大的挑战莫过于如何实现session在分布式系统之间的共享。在分布式环境下,每个子系统都是跨网络的独立JVM,在这些JVM之间实现共享数据的方式无非就是TCP/IP通讯。但也面临不少挑战: 1) Session ID的共享 Session ID是一个实例化Session对象的唯一标识,也是它在Web容器中可以被识别的唯一身份标签。Jetty和T转载 2016-05-25 19:22:20 · 331 阅读 · 0 评论 -
HashMap解决hash冲突的方法
在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap也一样。当程序试图将多个 key-value 放入 HashMap 中时,以如下代码片段为例:HashMap m=new HashMap(); m.put("a", "rrr1"); m.put("b", "tt9"); m.put("转载 2016-05-25 15:33:46 · 2426 阅读 · 0 评论 -
java中四种引用类型
今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混。后来在网上查资料,感觉收获颇多,现记录如下。 对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachabl转载 2016-05-25 14:58:47 · 209 阅读 · 0 评论