ArrayList和Vector内部是使用可増长数组实现的,可以认为ArrayList或者Vector封装了对内部数组的操作,比如向数组中添加、删除、插入新的元素或者数据的扩展和重定向。所以使用get和set方法是花费常数时间的,但是如果插入或者删除元素,除非插入或者删除的位置都在表末尾,否则代码开销会很大,因为里面需要数组的移动。LinkedList使用了循环双向链表数据结构,所以get会非常消
Oracle中的表,除了我们建表时设计的各个字段,其实还有两个字段(此处只介绍2个),分别是ROWID(行标示符)和ROWNUM(行号)。即使我们使用DESCRIBE命令查看表的结构,也无法看到这两个列的描述,因为它们其实是只在数据库内部使用的,所以也通常称它们为伪列(pseudocolumn)。建一个只有两个字段(id,col)的表。使用describe命令查看表结构,可以看到确实只有建表时的两
final:修饰符(关键字)有三种用法:一、如果一个类被声明为final,意味着它不能再派生出新的子类,即不能被继承,因此它和abstract是反义词。当我们需要让一个类永远不被继承,此时就可以用final修饰,但要注意:final类中所有的成员方法都会隐式的定义为final方法。二、将变量声明为final,可以保证它们在使用中不被改变,被声明为final的变量必须在声明时给定初值,而在以后的引用
概述:不管有木有出现异常,finally块中代码都会执行;当try和catch中有return时,finally仍然会执行;finally是在return后面的表达式运算后执行的(此时并没有返回运算后的值,而是先把要返回的值保存起来,不管finally中的代码怎么样,返回的值都不会改变,仍然是之前保存的值),所以函数返回值是在finally执行前确定的;finally中最好不要包含return,否
publicstaticvoidmain(String[]args)throwsIOException{//目标路径StringfilePath="E:"+File.separator+"test"+File.separator;Filefile=newFile(filePath);//如果文件目录不存在,就执行创建if(!file.isDirectory()){file.mkdirs();}Si
jdk5以前,对象保存到集合中就会失去其特性,取出时通常要程序员手工进行类型的强制转换,这样不可避免就会引发程序的一些安全性问题。jdk5中的泛型允许程序员在编写集合代码时,就限制集合的处理类型,从而把原来程序运行时可能发生问题,转变为编译时的问题,以此提高程序的可读性和稳定性(尤其在大型程序中更为突出)。使用泛型时,泛型类型必须为引用类型,不能是基本数据类型。注意:泛型是提供给javac编译器使
一、#{}和${}的区别是什么?理解:二、怎么处理实体类中的属性名和表中的字段名不一致?三、模糊查询like语句该怎么写?四、通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗?Dao接口,就是人们常说的Mapper接口。接口的全限名,就是映射文件中的namespace的值;接口的方法名,就是映射文件中Mappe
MySQL和Oracle的区别:MySQL和Oracle都是流行的关系数据库管理系统(RDBMS),在世界各地广泛使用。大多数数据库以类似的方式工作。二者有何区别?两个数据库的特性是不同的,所以与Oracle相比,MySQL的使用方式不同;与MySQL相比,Oracle的使用情况有所不同。它们的特点也是不同的。1.本质的区别:Oracle数据库是一个对象关系数据库管理系统(ORDBMS)。它通常被
dos查看方法:1、Win+R调出运行窗口,输入cmd,调出dos;2、输入netshwlanshowprofiles,按"enter"键就可以看到当前已经保存的无线网络:3、以wifi名称为“就蹭蹭”的无线网为例,输入netshwlanshowprofilename=“就蹭蹭”key=clear,按下回车即可查看“就蹭蹭”的密码。如下图:常规查看方法:1、Win+R调出运行窗
String是Java中一个不可变的类,所以它一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不能被修改。不可变类有很多优势。本文总结了为什么字符串被设计成不可变的。将涉及到内存、同步和数据结构相关的知识。字符串池字符串池是Java运行环境方法区中的一部分特殊存储。当一个字符串被创建之时,首先会去这个字符串池中查找,如果找到直接返回对该字符串的引用。下面的代码只会在堆中创建一个字
什么是全局变量?全局变量就好比一个容器或者一个公用的东西一样,就类似外面公共场所的凳子一样,大家都可以使用这个凳子。Java程序中,不能在所有类之外定义全局变量,只能通过在一个类中定义公用、静态的变量来实现一个全局变量。什么是局部变量?局部变量就是局部的东西,如果全局变量是桌子,局部变量就类似于抽屉,只能在一小部分地方使用,很局限。全局是外面公共场所的凳子,则局部变量就像某个酒店的凳子一样,再酒店
通常我们会遇到一些需要做一系列条件处理的业务逻辑,并且它们每一个都需要不同的处理。为了演示,我们来看一下Calulator(计算器)类的一个例子。下面是带有两个数字类型参数,一个操作符参数以及基于操作的数值返回值的一个方法:publicintcalculate(inta,intb,Stringoperator){intresult=Integer.MIN_VALUE;if("add".equals
WAR包WAR(WebArchivefile)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。War专用于Web方面。大部分的JAVAWEB工程,都是打成WAR包进行发布的。War是一个web模块,其中需要包括WEB-INF,是可以直接运行的WEB模块。通常用于网站,打成包部署到容器中,以tomcat来说,将war文件包放置它的webapps目录下,启动Tomcat,
如何输出"ab"publicclassOutAB{publicstaticvoidmain(String[]args){if(){System.out.println("a");}else{System.out.println("b");}}}解法一思路一:脑筋急转弯——注入一段逻辑直接改变原if结构。填入内容true){System.out.print("a&quo
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Java可以用四种方式来创建线程,如下:1)继承Thread类创建线程;2)实现Runnable接口创建线程;3)实现Callable接口通过FutureTask包装器来创建Thread线程;4)使用ExecutorService、Callable、Future实现有返回结果的线程。其中前两种方式线程执行完后都
区别:isNotNull:表示参数不为NULL,返回TRUE反之则为FALSEisNull:表示参数为NULL,返回TRUE反之则为FALSEisNotEmpty:表示参数不为NULL也不为空,返回TRUE反之则返回FALSEisEmpty:表示参数为NULL或着为空,返回TRUE反之则为FALSE例:当xml代码中用isNotEmpty配置时<selectid="queryTable"re
Java中的map遍历有多种方法,如最早的Iterator,Java5支持的foreach,Java8Lambda。先初始化一个mappublicclassTestMap{publicstaticMap<String,String>map=newHashMap<String,String>();map.put("1","大象");map.put("2","猴子");map.
函数介绍:DECODE函数是ORACLEPL/SQL的功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能。DECODE有什么用途呢?先构造一个例子,假设我们想给这些职员加工资,其标准是:工资在8000元以下的加20%;工资在8000元或以上的加15%,通常的做法是,先选出记录中的工资字段值--->selectsalaryintovar-
一、比较大小函数sign函数语法:sign(n)函数说明:取数字n的符号,大于0返回1;小于0返回-1;等于0返回0示例:1、selectsign(2),sign(-2),sign(0)fromdual; SIGN(2)SIGN(-2)SIGN(0) ———-———-———- 1-102、a=100b=200 则sign(a-b)返回-1二、nvl(EXPR1,EXPR2)函数语法:NVL(
1.用途不同applicationContext.xml文件通常用于加载spring系统级别的组件,比如bean的初始化。spring-mvc.xml文件通常用于加载controller层需要的类,比如拦截器,mvc标签加载的类。2.加载位置不同applicationContext.xml加载在标签中,作为FrameworkServlet的参数属性。spring-mvc.xml文件当做Dispat
一、instr()函数的格式(俗称:字符查找函数)格式一:instr(string1,string2)/instr(源字符串,目标字符串)格式二:instr(string1,string2[,start_position[,nth_appearance]])/instr(源字符串,目标字符串,起始位置,匹配序号)解析:string2的值要在string1中查找,是从start_position给出
HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化。初始size为11,扩容:newsize=olesize*2+1计算index的方法:index=(hash&0x7FFFFFFF)%tab.lengthHashMap底层数组+链表实现
我们都经常使用一些循环耗时计算的操作,特别是for循环,它是一种重复计算的操作,如果处理不好,耗时就比较大,如果处理书写得当将大大提高效率,下面总结几条for循环的常见优化方式。方法一:消除循环终止判断时的方法调用优化前:for(inti=0;i<list.size();i++){System.out.println(list.get(i));}优点:较常见,易于理解缺点:每次都要计算lis
一、logback的介绍Logback是由log4j创始人设计的另一个开源日志组件,官方网站:http://logback.qos.ch。它当前分为下面几个模块:logback-core:其它两个模块的基础模块logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4jAPI使你可以很方便地更换成其它日志系统如log4j或JDK14Logginglogback-acce
数据准备:createtablezxtable(parentidvarchar2(10),subidvarchar2(10));insertintozxtablevalues('1','2');insertintozxtablevalues('1','3');insertintozxtablevalues('2',
一、DispatcherServlet处理流程在整个SpringMVC框架中,DispatcherServlet处于核心位置,它负责协调和组织不同组件完成请求处理并返回响应工作。DispatcherServlet是SpringMVC统一的入口,所有的请求都通过它。DispatcherServlet是前端控制器,配置在web.xml文件中,Servlet依自已定义的具体规则拦截匹配的请求,分发到目标
SpringMVC流程1、用户发送请求至前端控制器DispatcherServlet。2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4、DispatcherServlet调用HandlerAda
SpringMVC拦截器的原理图:preHandle在业务处理器处理请求之前被调用:如果返回false,从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链。如果返回true,执行下一个拦截器,直到所有的拦截器都执行完毕;再执行被拦截的Controller;然后进入拦截器链,从最后一个拦截器往回执行所有的postHandle(),接着再从最后一个拦截器往回执行所有的
过滤器,是在javaweb中将你传入的request、response提前过滤掉一些信息,或者提前设置一些参数。然后再传入Servlet或Struts2的action进行业务逻辑处理。比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入Servlet或Struts2的action前统一设置字符集,或者去除掉一些非法字符。拦截器,是面向切面编程(AOP,Asp
一、拦截机制的不同1、SpringMVC是基于类中的方法开发的,是方法级别的拦截。注解开发中使用@RequestMapping将url和方法进行映射,如果根据url找到controller类的方法生成一个handler处理器对象(只包括一个method)。一个方法对应一个Request上下文,所以方法直接基本上是独立的,独享request、response数据。每个方法同时又对应一个url。参数的
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号