- java深入理解动态绑定
QuinnNorris
java一周一篇Java概念java多态动态绑定
在面向对象的程序设计语言中,多态是继数据抽象和继承之后的第三种基本特性。多态通过分离做什么和怎么做,从另一个角度将接口和实现分离开来。在一开始接触多态这个词的时候,我们或许会因为这个词本身而感到困惑,如果我们把多态改称作“动态绑定”,相信很多人就能理解他的深层含义。通常的,我们把动态绑定也叫做后期绑定,运行时绑定。(一)方法调用绑定1.绑定概念通常,我们将一个方法调用同一个方法主体关联起来称作绑定
- Java深入理解线程的三大特性
赵广陆
javajava开发语言
目录1CPU缓存导致可见性问题2线程切换导致原子性问题3性能优化导致有序性问题4JMM(JavaMemoryModel)5volatile6synchronized1CPU缓存导致可见性问题线程的三大特性:可见性:Visibility有序性:Ordering原子性:Atomicity而这三个特性往往是并发编程bug的源头,而并发编程的bug往往也都是疑难杂症,如果想要快速定位这些问题的根源,我们就
- Java深入理解代码块的使用细节
目录1.基本介绍基本语法快速入门2.代码块细节类的调用顺序实例代码块细节2实例代码块细节2实例1.基本介绍代码块又称为初始化块,属于类中的成员(类的一部分),类似于方法,讲逻辑语句封装在方法体中,用{}抱起来;但和方法不同,没有方法名,没有返回,没有参数,只有方法体,而且不用通过对象或类显式调用。基本语法(修饰符)(可有可无){代码};注:1.修饰符可选,要写只能写static2.代码块可分为两类
- 学习计划
小坚强_Sophia
•极客时间【专栏】基础:趣谈linux计算机组成原理tomcat数学基础课编译原理之美数据结构与算法之美架构:从0开始学架构一一10.15全栈工程师修炼指南设计模式之美前端:重学前端透视HTTPFlutterJS核心原理数据库:mysql实战45讲SQL必知必会java:零基础学JAVA深入理解jvmjava核心技术36讲消息队列高手课java并发编程高并发40问java性能调优技术专题:分布式技
- 《Java深入理解虚拟机》笔记一
梅子酒z_Z
JVM中的老生代与新生代JVM示意图内存示意图堆=新生代+老生代,其中新生代等于1/3的堆空间大小,老生代等于2/3堆空间的大小新生代被细分为Eden和Survivor两个局域,由一个Eden和两个Survivor组成,这两个Survivor分别被命名为from和to,三块空间的比例为8:1:1。JVM每次只会使用Eden和其中一块Survivor来使用,还有一个Survivor是空闲的。因此,新
- 【Java深入理解】String、StringBuilder、StringBuffer的区别
广州Java劝退师
java字符串java字符串jvm
在我们学习String类的时候,也会学习到StringBuilder和StringBuffer,但是他们之间有什么区别呢?当然他们在具体的代码实现上、内存分配上以及效率上都有着不同(我这里以JDK8为例);它们之间的区别:一、代码实现StringStringBuilderStringBuffer二、性能效率StringStringBuilderStringBuffer三、内存分配StringStr
- java深入理解浅拷贝和深拷贝
李旭me
拷贝对象是java中经常会遇到的问题。java中存在两种类型,基础类型和引用类型。java的赋值都是传值的,对于基础类型来说,会拷贝具体的内容,但是对于引用对象来说,存储的这个值只是指向实际对象的地址,拷贝也只会拷贝引用地址。因为引用对象的存在,所以经常会出现和预期不一样的情况。本文将会深入的探讨一下在拷贝对象中会出现的浅拷贝和深拷贝的情况。拷贝接口java中所有的对象都是继承自java.lang
- Java深入理解集合框架Map
枫晚伴孤舟
Java
前言Java集合框架中Map接口主要包括HashMap、HashTable、TreeMap,下面依次介绍HashMap主要方法HashMap增加查询删除数据的方法为putgetremove构造方法staticfinalintDEFAULT_INITIAL_CAPACITY=1[]table;transientSet>entrySet;transientintsize;transientintmod
- Java深入理解集合框架Set
枫晚伴孤舟
JavaJavaSet
前言Java集合框架中Set接口主要包括HashSet、TreeSet,这里只介绍HashSetHashSet主要方法HashSet通过addremove添加和删除数据,通过迭代器查询数据构造方法privatetransientHashMapmap;//DummyvaluetoassociatewithanObjectinthebackingMapprivatestaticfinalObjectP
- Java深入理解集合框架List
枫晚伴孤舟
Java
前言Java集合框架主要包含Collection和Map两大类,其中Collection类包含List、Set、Queue,List接口包含ArrayList、LinkedList、Vector、Stack,Set接口包含HashSet、TreeSet、SortedSet,而Map接口则主要包括HashMap、HashTable、TreeMap,总结起来类似结构如下:CollectionListA
- Java深入理解volatile
十亿伏特皮卡丘
publicclassVolatileTest{/***volatile的实现原理*在生成汇编代码时,对于被volatile修饰的变量,进行写操作时会多出lock前缀的指令。*这个指令所带来的影响:*1.将当前处理器缓存行的数据写回主内存。*2.这个写回主内存的操作会是其他内存中改变量的内存地址失效。**如果对声明了volatile的变量进行写操作,jvm会向处理器发送一条lock前缀的指令,将这
- java深入理解AQS
辞旧阙思故人
java
一、AQS简介在同步组件的实现中,AQS是核心部分,同步组件的实现者通过使用AQS提供的模板方法实现同步组件语义,AQS则实现了对同步状态的管理,以及对阻塞线程进行排队,等待通知等等一些底层的实现处理。也包括了独占锁的获取与释放,共享锁的获取与释放,以及超时获取锁,中断获取锁等特性的实现。比如说有关独占锁的一些模板方法:1.voidacquire(intarg):独占式获取同步状态,如果获取失败则
- Java深入理解之反射
xiaoshengMr
JavaWeb开发
每一个类都有一个class对象,包含了与类有关的信息,当编译一个新类时,会产生一个同名的.class文件,该文件内容保持着class对象。简而言之,通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而Java反射机制可以动态地创建对象并调用其属性,这样的对象的类型在编译期是未知的。所以我们可以通过反射机制直接创建对象,即使这个
- Java深入理解之泛型
zy31584729
javajava深入理解泛型Java泛型
目录一、什么是泛型?二、为什么要使用泛型?三、泛型的规则三、泛型的使用场景四、泛型的使用方式五、泛型的通配符(边界)六、泛型的类型擦除七、泛型的阴暗角落八、总结一、什么是泛型?泛型是JavaSE1.5的新特性,《Java核心技术》中对泛型的定义是:“泛型”意味着编写的代码可以被不同类型的对象所重用。可见泛型的提出是为了编写重用性更好的代码。而泛型的本质是参数化类型,也就是说所操作的数据类型被指定为
- Java深入理解之转发与重定向
xiaoshengMr
JavaWeb开发
java请求重定向与请求转发##请求的转发和重定向的本质区别:在于我们当使用转发时,jsp容器将使用一个内部方法来调用我们想要转发的页面,新的页面处理另一个请求,全过程只有一个url而在此过程中Web浏览器是不清楚这个重新调用的过程。而重定向是一个页面通知浏览器发送一个新的页面请求,所以Web浏览器是发送了2次请求,浏览器中的url是会发生改变的,会变成新的URL。重定向–例子中重定向的过程:点击
- 【Java深入理解虚拟机】周志明 读书笔记
落落叶叶无声
JVM读书笔记
文章目录2.JVM内存管理2.2.Jvm运行时内存区域2-18程序计数器虚拟机栈Java堆运行时常量池2.3.虚拟机对象对象的创建3.2.对象存活判断方法7.虚拟机类加载机制什么是虚拟机类加载机制?类的生命周期包括多少个阶段,分别是什么?类加载包括哪5个阶段?连接包括哪3个阶段?哪5个生命周期阶段的顺序是确定的?为什么解析阶段的顺序是不确定的?虚拟机规定了哪5种情况必须立即对类进行“初始化”?类加
- Java深入理解设计模式 - 工厂模式
一世俗人
设计模式java设计模式工厂模式
设计模式(二)工厂模式1.概念在基类中定义创建对象的一个接口,让子类决定实例化哪个类。工厂方法让一个类的实例化延迟到子类中进行。1.1场景解耦:将对象的创建与使用分离。降低代码重复:如果创建某个对象的过程都很复杂,需要一定的代码量,而且很多地方都要用到,那么就会有很多的重复代码。降低维护成本:由于创建过程都由工厂统一管理,所以发生业务逻辑变化,不需要找到所有需要创建某个对象的地方去逐个修正,只需要
- 未来的路很长,我们踏踏实实走进BAT
伽娃程序猿
看书必不可少操作系统,计算机网络,常用数据结构与算法,数据库,这四大方向每个认真读过一本500页的外国人写的教材,并编写过一些玩具代码。Java相关的书也看个三四本:corejava深入理解java虚拟机jcipeffectivejava然后csapp有空的话也可以看一看至于项目,我想你总是参与过几个了,斟酌一下是否能写到简历上去。如果写上去,面试官会问什么。面试官不会在意你项目是什么流程,比较关
- 《Java深入理解虚拟机》笔记三
梅子酒z_Z
垃圾回收期与内存分配可达性分析算法在主流的商用程序语言的主流实现中,都是通过可达性分析来判定对象是否存活。这个算法的基本思路是通过一系列叫做“GCRoots”的对象作为起始点,从这些节点向下搜索。要是能够到达某个对象就说明该对象存活。要是不能,就说明该对象已经不可用,可以对其进行垃圾回收。生存还是死亡在可达性分析算法中判定为不可达的算法也不是立刻就会死亡,要真正宣告一个对象真正死亡,必须要经历两次
- java深入理解jvm内存结构,读完之后,或许会让你对以前的一些问题豁然开朗
ontalk.club
jvm内存结构
一、概念:参考图1(java的内存结构)1、Java堆(Heap)对于大多数应用来说,Java堆(JavaHeap)是Java虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。Java堆是垃圾收集器管理的主要区域,因此很多时候也被称做“GC堆”。如果从内存回收的角度看,由于现在收集
- Rxjava深入理解之自己动手编写Rxjava
JimmieYang
Demo的源码地址在mini-rxjava,有兴趣的可以下载源码来看.从观察者模式说起观察者模式,是我们在平时使用的比较多的一种设计模式.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己.它的特点是一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。本文的重点不是在
- java深入理解ArrayList
学无止境2018
Java
1、ArrayList基础:底层是数组实现的。其实它就是动态数组。当数组长度未知时使用它是较好的选择。实现了Collection和List接口。它的继承关系如下:实现的接口如下:内部的参数:privatestaticfinalintDEFAULT_CAPACITY=10;//默认容量大小privatestaticfinalObject[]EMPTY_ELEMENTDATA={};//用于空实例的共
- Java深入理解IO NIO在文件复制过程中的应用
闭门车
java
第一种,传统的IO模式privatestaticvoidcopyByIO(StringsrcPath,StringdstPath){byte[]buffer=newbyte[bufferSize];FileInputStreamfis=null;FileOutputStreamfos=null;try{fis=newFileInputStream(srcPath);fos=newFileOutpu
- Java 深入理解hashcode()方法——Boolean
github_38838414
javahashcode面试题解析
Java深入理解hashcode()方法——Boolean环境:jdk1.8publicstaticvoidmain(String[]args){Booleanb2=true;Booleanb3=false;System.out.println("ture的hash值:"+b2.hashCode());System.out.println("false的hash值:"+b3.hashCode())
- 2018年Android开发读书清单与学习计划
bruce_lv
规划Android开发书单
拖着一条伤腿于2017年年末(12.28)入职滴滴了,2018年要努力了,有好多事要做,要还房贷,要娶媳妇,要。。。所以做事要有条理,要有规划。17年是失败的一年,不提也罢。。。先列一下17年看过的书,需要18年再梳理。然后列一下18年要读的书,慢慢补充书目,慢慢充实自己。要做一个写代码的艺术家,哈哈哈。17年读书清单疯狂JavaHeadFirstJava深入理解Java虚拟机HeadFirst设
- 读书计划
LuckyBug
读书
=====Java=====Java编程思想Java核心技术I、IIJava8函数式编程EffectiveJava深入理解Java虚拟机Java并发编程实践重构:改善既有代码的设计=====Spring=====Spring实战Spring技术内幕=====设计模式=====大话设计模式设计模式:可复用面向对象软件的基础=====数据库=====高性能MySQL=====Web架构=====微服务
- Java深入理解嵌套类和内部类
yuantingjun
java
java]一、什么是嵌套类及内部类? 可以在一个类的内部定义另一个类,这种类称为嵌套类(nestedclasses),它有两种类型: 静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为 内部类(inner)。嵌套类从JDK1.1开始引入。其中inner类又可分为三种: 其一、在一个类(外部类)中直接定义的内部类; 其二、在一个方法(外部类的方法)中定义的内部类;
- Java深入理解嵌套类和内部类
java-mans
java
一、什么是嵌套类及内部类?
可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型:
静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为
内部类(inner)。嵌套类从JDK1.1开始引入。其中inner类又可分为三种:
其一、在一个类(外部类)中直接定义的内部类;
其二、在一个方法(外部类的方法)中
- Java深入理解嵌套类和内部类
a125138
一、什么是嵌套类及内部类?
可以在一个类的内部定义另一个类,这种类称为嵌套类(nestedclasses),它有两种类型:
静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为
内部类(inner)。嵌套类从JDK1.1开始引入。其中inner类又可分为三种:
其一、在一个类(外部类)中直接定义的内部类;
其二、在一个方法(外部类的方法)中定义的内部类;
其三、匿名
- 基本数据类型和引用类型的初始值
3213213333332132
java基础
package com.array;
/**
* @Description 测试初始值
* @author FuJianyong
* 2015-1-22上午10:31:53
*/
public class ArrayTest {
ArrayTest at;
String str;
byte bt;
short s;
int i;
long
- 摘抄笔记--《编写高质量代码:改善Java程序的151个建议》
白糖_
高质量代码
记得3年前刚到公司,同桌同事见我无事可做就借我看《编写高质量代码:改善Java程序的151个建议》这本书,当时看了几页没上心就没研究了。到上个月在公司偶然看到,于是乎又找来看看,我的天,真是非常多的干货,对于我这种静不下心的人真是帮助莫大呀。
看完整本书,也记了不少笔记
- 【备忘】Django 常用命令及最佳实践
dongwei_6688
django
注意:本文基于 Django 1.8.2 版本
生成数据库迁移脚本(python 脚本)
python manage.py makemigrations polls
说明:polls 是你的应用名字,运行该命令时需要根据你的应用名字进行调整
查看该次迁移需要执行的 SQL 语句(只查看语句,并不应用到数据库上):
python manage.p
- 阶乘算法之一N! 末尾有多少个零
周凡杨
java算法阶乘面试效率
&n
- spring注入servlet
g21121
Spring注入
传统的配置方法是无法将bean或属性直接注入到servlet中的,配置代理servlet亦比较麻烦,这里其实有比较简单的方法,其实就是在servlet的init()方法中加入要注入的内容:
ServletContext application = getServletContext();
WebApplicationContext wac = WebApplicationContextUtil
- Jenkins 命令行操作说明文档
510888780
centos
假设Jenkins的URL为http://22.11.140.38:9080/jenkins/
基本的格式为
java
基本的格式为
java -jar jenkins-cli.jar [-s JENKINS_URL] command [options][args]
下面具体介绍各个命令的作用及基本使用方法
1. &nb
- UnicodeBlock检测中文用法
布衣凌宇
UnicodeBlock
/** * 判断输入的是汉字 */ public static boolean isChinese(char c) { Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
- java下实现调用oracle的存储过程和函数
aijuans
javaorale
1.创建表:STOCK_PRICES
2.插入测试数据:
3.建立一个返回游标:
PKG_PUB_UTILS
4.创建和存储过程:P_GET_PRICE
5.创建函数:
6.JAVA调用存储过程返回结果集
JDBCoracle10G_INVO
- Velocity Toolbox
antlove
模板toolboxvelocity
velocity.VelocityUtil
package velocity;
import org.apache.velocity.Template;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.c
- JAVA正则表达式匹配基础
百合不是茶
java正则表达式的匹配
正则表达式;提高程序的性能,简化代码,提高代码的可读性,简化对字符串的操作
正则表达式的用途;
字符串的匹配
字符串的分割
字符串的查找
字符串的替换
正则表达式的验证语法
[a] //[]表示这个字符只出现一次 ,[a] 表示a只出现一
- 是否使用EL表达式的配置
bijian1013
jspweb.xmlELEasyTemplate
今天在开发过程中发现一个细节问题,由于前端采用EasyTemplate模板方法实现数据展示,但老是不能正常显示出来。后来发现竟是EL将我的EasyTemplate的${...}解释执行了,导致我的模板不能正常展示后台数据。
网
- 精通Oracle10编程SQL(1-3)PLSQL基础
bijian1013
oracle数据库plsql
--只包含执行部分的PL/SQL块
--set serveroutput off
begin
dbms_output.put_line('Hello,everyone!');
end;
select * from emp;
--包含定义部分和执行部分的PL/SQL块
declare
v_ename varchar2(5);
begin
select
- 【Nginx三】Nginx作为反向代理服务器
bit1129
nginx
Nginx一个常用的功能是作为代理服务器。代理服务器通常完成如下的功能:
接受客户端请求
将请求转发给被代理的服务器
从被代理的服务器获得响应结果
把响应结果返回给客户端
实例
本文把Nginx配置成一个简单的代理服务器
对于静态的html和图片,直接从Nginx获取
对于动态的页面,例如JSP或者Servlet,Nginx则将请求转发给Res
- Plugin execution not covered by lifecycle configuration: org.apache.maven.plugin
blackproof
maven报错
转:http://stackoverflow.com/questions/6352208/how-to-solve-plugin-execution-not-covered-by-lifecycle-configuration-for-sprin
maven报错:
Plugin execution not covered by lifecycle configuration:
- 发布docker程序到marathon
ronin47
docker 发布应用
1 发布docker程序到marathon 1.1 搭建私有docker registry 1.1.1 安装docker regisry
docker pull docker-registry
docker run -t -p 5000:5000 docker-registry
下载docker镜像并发布到私有registry
docker pull consol/tomcat-8.0
- java-57-用两个栈实现队列&&用两个队列实现一个栈
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
/*
* Q 57 用两个栈实现队列
*/
public class QueueImplementByTwoStacks {
private Stack<Integer> stack1;
pr
- Nginx配置性能优化
cfyme
nginx
转载地址:http://blog.csdn.net/xifeijian/article/details/20956605
大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了。而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能很好地工作了。然而,如果你真的想挤压出Nginx的性能,你必
- [JAVA图形图像]JAVA体系需要稳扎稳打,逐步推进图像图形处理技术
comsci
java
对图形图像进行精确处理,需要大量的数学工具,即使是从底层硬件模拟层开始设计,也离不开大量的数学工具包,因为我认为,JAVA语言体系在图形图像处理模块上面的研发工作,需要从开发一些基础的,类似实时数学函数构造器和解析器的软件包入手,而不是急于利用第三方代码工具来实现一个不严格的图形图像处理软件......
&nb
- MonkeyRunner的使用
dai_lm
androidMonkeyRunner
要使用MonkeyRunner,就要学习使用Python,哎
先抄一段官方doc里的代码
作用是启动一个程序(应该是启动程序默认的Activity),然后按MENU键,并截屏
# Imports the monkeyrunner modules used by this program
from com.android.monkeyrunner import MonkeyRun
- Hadoop-- 海量文件的分布式计算处理方案
datamachine
mapreducehadoop分布式计算
csdn的一个关于hadoop的分布式处理方案,存档。
原帖:http://blog.csdn.net/calvinxiu/article/details/1506112。
Hadoop 是Google MapReduce的一个Java实现。MapReduce是一种简化的分布式编程模式,让程序自动分布到一个由普通机器组成的超大集群上并发执行。就如同ja
- 以資料庫驗證登入
dcj3sjt126com
yii
以資料庫驗證登入
由於 Yii 內定的原始框架程式, 採用綁定在UserIdentity.php 的 demo 與 admin 帳號密碼: public function authenticate() { $users=array( &nbs
- github做webhooks:[2]php版本自动触发更新
dcj3sjt126com
githubgitwebhooks
上次已经说过了如何在github控制面板做查看url的返回信息了。这次就到了直接贴钩子代码的时候了。
工具/原料
git
github
方法/步骤
在github的setting里面的webhooks里把我们的url地址填进去。
钩子更新的代码如下: error_reportin
- Eos开发常用表达式
蕃薯耀
Eos开发Eos入门Eos开发常用表达式
Eos开发常用表达式
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2014年8月18日 15:03:35 星期一
&
- SpringSecurity3.X--SpEL 表达式
hanqunfeng
SpringSecurity
使用 Spring 表达式语言配置访问控制,要实现这一功能的直接方式是在<http>配置元素上添加 use-expressions 属性:
<http auto-config="true" use-expressions="true">
这样就会在投票器中自动增加一个投票器:org.springframework
- Redis vs Memcache
IXHONG
redis
1. Redis中,并不是所有的数据都一直存储在内存中的,这是和Memcached相比一个最大的区别。
2. Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储。
3. Redis支持数据的备份,即master-slave模式的数据备份。
4. Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Red
- Python - 装饰器使用过程中的误区解读
kvhur
JavaScriptjqueryhtml5css
大家都知道装饰器是一个很著名的设计模式,经常被用于AOP(面向切面编程)的场景,较为经典的有插入日志,性能测试,事务处理,Web权限校验, Cache等。
原文链接:http://www.gbtags.com/gb/share/5563.htm
Python语言本身提供了装饰器语法(@),典型的装饰器实现如下:
@function_wrapper
de
- 架构师之mybatis-----update 带case when 针对多种情况更新
nannan408
case when
1.前言.
如题.
2. 代码.
<update id="batchUpdate" parameterType="java.util.List">
<foreach collection="list" item="list" index=&
- Algorithm算法视频教程
栏目记者
Algorithm算法
课程:Algorithm算法视频教程
百度网盘下载地址: http://pan.baidu.com/s/1qWFjjQW 密码: 2mji
程序写的好不好,还得看算法屌不屌!Algorithm算法博大精深。
一、课程内容:
课时1、算法的基本概念 + Sequential search
课时2、Binary search
课时3、Hash table
课时4、Algor
- C语言算法之冒泡排序
qiufeihu
c算法
任意输入10个数字由小到大进行排序。
代码:
#include <stdio.h>
int main()
{
int i,j,t,a[11]; /*定义变量及数组为基本类型*/
for(i = 1;i < 11;i++){
scanf("%d",&a[i]); /*从键盘中输入10个数*/
}
for
- JSP异常处理
wyzuomumu
Webjsp
1.在可能发生异常的网页中通过指令将HTTP请求转发给另一个专门处理异常的网页中:
<%@ page errorPage="errors.jsp"%>
2.在处理异常的网页中做如下声明:
errors.jsp:
<%@ page isErrorPage="true"%>,这样设置完后就可以在网页中直接访问exc