- c++手撕协程库,实现生成器与自定义可等待对象
飞鼠_
C++c++开发语言
今天我们来从零实现一个非对称协程库,这个库是使用汇编实现上下文切换,实现了生成器与自定义可等待对象协程是用户态的线程,它需要由程序来进行调度,如上下文切换与调度设计都需要程序来设计,并且协程运行在单个线程中,这就成就了线程的低成本,简单讲协程就是一种可以被挂起与恢复的特殊函数看之前建议先看看详解c++20的协程,自定义可等待对象,生成器详解-CSDN博客上下文切换实际上就是保存现在的寄存器状态,恢
- 【深度C++】之“lambda表达式”
Jinxk8
面向对象C++c++编程语言
0.什么是lambda表达式《C++Primer(第5版)》对lambda表达式(lambdaexpression)的定义为:一个lambda表达式表示一个可调用的代码单元。我们可以将其理解为一个未命名的内联函数。lambda表达式的形式如下:[capturelist](parameterlist)->returntype{functionbody}捕获列表,capturelist参数列表,par
- 一般c++项目的目录结构
wishfly
c++c++开发语言
C++项目的目录结构通常遵循一定的组织方式,以保持代码的清晰性和可维护性。以下是一个常见的C++项目目录结构示例:MyProject/│──CMakeLists.txt#CMake构建配置文件(如果使用CMake)│──Makefile#Makefile(如果使用make构建)│──README.md#项目说明文件│──docs/#文档目录│──include/#头文件目录│├──myheader
- C++ 字面量深度解析:从基础到实战进阶
belien
C++c++开发语言C++11C++14
在C++开发中,字面量(Literal)不仅是基础语法的一部分,更是提升代码可读性、安全性和性能的关键工具。本文将深入探讨C++字面量的高级特性、最新标准支持(C++11/14/17/20)以及实际开发中的应用技巧,助你写出更专业、更高效的代码。1.C++11及后续标准中的字面量增强1.1二进制字面量标准化(C++14)C++14将二进制字面量(0b或0B前缀)纳入标准,简化二进制数据的表达:in
- 02 构造与析构函数
喜欢理工科
C++java开发语言c++构造函数析构函数
构造与析构函数构造函数创建一个对象时,常常需要做某些初始化的工作,例如对数据成员赋初值。为了解决这个问题,C++提供了构造函数(constructor)来处理对象的初始化。构造函数是一种特殊的成员函数,与其他成员函数不同,不需要用户来调用它,而是在建立对象时自动执行。特点:构造函数名和类名相同构造函数可以重载构造函数没有返回类型声明调用:自动调用(隐式)一般情况下C++编译器会自动调用构造函数(无
- 【C++】C++中的find与find_if函数
Mr_Dwj
C++c++算法c语言开发语言
目录一、find1.1在vector中查询1.2在string中查询二、find_if在C++编程语言中,find()和find_if()函数都可以用来在容器中查找指定元素,但它们有一些区别一、findfind函数用于查找容器中第一个等于指定值的元素,并返回指向该元素的迭代器。如果在容器中找不到指定值,则返回指向容器末尾的迭代器。1.1在vector中查询例如,下面的代码使用find函数在vect
- 【C++】C++中的reverse函数
Mr_Dwj
C++c++开发语言
目录介绍示例底层日志介绍背景:标准C中是没有recerse()函数的,这是C++的一个新增函数,使用需要包含头文件#include功能:reverse函数用于反转在[first,last)中的内容,reverse函数没有返回值示例交换vector容器中元素的顺序vectorv={5,4,3,2,1};reverse(v.begin(),v.end());//v的值为1,2,3,4,5交换strin
- 数组名就是指针?
__舒佳瑞__
c++开发语言c语言
在学习C/C++的过程中相信有很多同学都听过这句话,“数组名本质上就是指针”,可是你仔细想想不觉得奇怪吗?用一个概念去指另一个概念,那我为什么还需要引入这两个概念?一、让我门来分析一下为什么会有人这样认为#includeintmain(){intarr[5]={0};std::cout#includeintmain(){intarr[5]={0};usingT=decltype(arr);std:
- C++学习:六个月从基础到就业——C++基础语法回顾:指针与引用基础
superior tigre
C++学习:六个月从基础到就业c++学习
C++学习:六个月从基础到就业——C++基础语法回顾:指针与引用基础本文是我C++学习之旅系列的第六篇技术文章,主要回顾C++中的指针与引用基础,包括内存模型、指针操作、引用特性以及它们的区别与应用场景。查看完整系列目录了解更多内容。引言指针和引用是C++中最强大也最具挑战性的特性之一,它们提供了对内存的直接访问和操作能力,使C++在系统编程、高性能计算等领域具有显著优势。同时,不正确地使用指针也
- Qt内存管理机制,信号与槽,元对象系统---------华清远见
m0_63189507
qt开发语言
1.内存管理是指程序对计算机内存资源的分配和使用内存管理的目的是高效、快速分配内存资源并在适当的时候释放和回收内存资源。 常见的内存管理机制:垃圾回收机制(.Net/Java),手动(C/C++),对象树(QT) 简而言之: 所有继承自QOBJECT类的类,如果在new的时候指定了父亲,那么它的清理时在父亲被delete的时候delete,所以如果一个程序中,所有的QOBJECT类都指定了父
- c++基础:37.单例模式
m0_49024067
c++基础c++
#includeclassDemo{public:Demo(constDemo&)=delete;staticDemo&Get(){staticDemodemo;returndemo;}private:Demo(){}};写一个生成随机数的单例类//Random.h#pragmaonce#includeclassRandom{public:Random(constRandom&)=delete;s
- c++基础:7.类与static
m0_49024067
c++基础c++
class与struct的区别,class默认成员是私有的,struct默认成员的公共的。在只包含一些变量的情况下,尽量使用struct。如果有很多功能尽量使用class。static静态类外使用static修饰的符号,在链接(link)阶段是局部的,只对定义它的编译单元(.obj)可见。类内部使用static,表示这部分内存是这个类的所有实例所共享的。也就是不管实例化多少类对象,static修饰
- 第二十章:类型属性的重载_《C++ Templates》notes
郭涤生
c/c++c++开发语言笔记
类型属性的重载核心知识点测试用例与编译验证多选题设计题测试用例说明关键总结核心知识点基于类型属性的函数重载通过type_traits和SFINAE实现条件编译,选择不同函数实现:#include#include//基础模板:处理非指针类型template,int>=0>voidprocess(constT&value){std::cout,int>=0>voidprocess(Tptr){std:
- 第二十一章:模板与继承_《C++ Templates》notes
郭涤生
c/c++c++笔记开发语言
模板与继承重点和难点编译与测试说明第一部分:多选题(10题)第二部分:设计题(5题)答案与详解多选题答案:设计题参考答案测试说明重点和难点21.1空基类优化(EBCO)知识点空基类优化(EmptyBaseClassOptimization)允许编译器在派生类中优化空基类的存储空间。若基类没有非静态成员变量、虚函数或虚基类,其大小可被优化为0字节,避免空间浪费。代码示例#include//空基类cl
- Chapter 26:Discriminated Unions_《C++ Templates》notes
郭涤生
c/c++c++笔记开发语言
DiscriminatedUnions1.KeyConcepts&Implementation2.VisitorPatternImplementation3.Copy/MoveSemantics4.ExceptionSafetyMultiple-ChoiceQuestionsDesignQuestionsCodeTesting5.KeyChallenges1.KeyConcepts&Impleme
- 第十九章:实现 Traits_《C++ Templates》notes
郭涤生
c/c++c++服务器开发语言
实现Traits1.Traits概念2.示例:累加序列(AccumulatingaSequence)3.固定特性(FixedTraits)4.值特性(ValueTraits)5.参数化特性(ParameterizedTraits)6.SFINAE-basedTraits多选题(附答案与详解)设计题(附答案与详解)总结1.Traits概念Traits(特性类)是用于在编译期提取或推断类型信息的模板类
- chapter 4: Smart Pointers_《Effective Modern C++》notes
郭涤生
c/c++c++开发语言笔记
SmartPointersItem18:`std::unique_ptr`forExclusiveOwnershipItem19:`std::shared_ptr`forSharedOwnershipItem20:`std::weak_ptr`forNon-OwningReferencesItem21:`make_unique`and`make_shared`Item22:PimplIdiomwi
- 第十四章:模板实例化_《C++ Templates》notes
郭涤生
c/c++c++开发语言笔记
模板实例化核心知识点解析多选题设计题关键点总结核心知识点解析两阶段查找(Two-PhaseLookup)原理:模板在编译时分两个阶段处理:第一阶段(定义时):检查模板语法和非依赖名称(Non-dependentNames),此时不依赖模板参数。第二阶段(实例化时):检查依赖名称(DependentNames),并绑定到具体类型。代码示例:#includetemplatevoidfoo(Tt){//
- 空类型指针
逆旅可好
c#
“空类型指针”一般是指void*指针,在C/C++语言中非常常见。什么是void*指针?void*是一种通用指针类型,也叫做“无类型指针”或“空类型指针”,它可以指向任何类型的数据,但不能直接解引用。示例:inta=10;void*p=&a;//p是void指针,指向int类型数据//不能直接*p,因为它不知道p指向的是什么类型//要使用时,需要强制类型转换printf("%d\n",*(int*
- 【C++】 —— 笔试刷题day_7
迟来的grown
笔试刷题48天c++开发语言
刷题day_7,继续加油啊!!!一、字符串中找出连续最长的数字串题目链接:字符串中找出连续最长的数字串题目解析这道题可以说非常简单了,我们只需要在给定的字符串中找到最长的数字串即可。算法分析这道题很简单,就直接来看解题思路:定义i,遍历给定的字符串str遇到数字字符,定义j记录当前位置,i再从当前位置开始向后遍历直到遍历结束或者遇到的字符不是数字字符;如果当前遍历到的是最长的就更新结果,记录当前位
- 每日一题洛谷P10899 [蓝桥杯 2024 省 C] 劲舞团c++
wen__xvn
蓝桥杯洛谷c++开发语言蓝桥杯
https://www.luogu.com.cn/fe/api/problem/downloadAttachment/jhqdki17#include#includeusingnamespacestd;intmain(){charS,A;unsignedlonglongT;vectors;vectora;vectort;while(cin>>S>>A>>T){s.push_back(S);a.pu
- 源码角度分析下ConcurrentHashMap是如何实现线程安全的?
搞不懂语言的程序员
重拾javajava基础知识安全哈希算法算法
ConcurrentHashMap是Java并发包(java.util.concurrent)中提供的一个线程安全的哈希表实现。它通过多种并发控制机制来实现高效的线程安全操作。以下从源码角度分析ConcurrentHashMap如何实现线程安全。1.数据结构ConcurrentHashMap的底层数据结构是一个数组+链表+红黑树的组合。与HashMap类似,但在并发控制上做了优化。核心数据结构:N
- python 调用 ctp_CTP Python API(利用Swig 封装)Windows版(traderapi)
boss he
python调用ctp
前言:目前上期技术CTP系统提供的API版本是C++版本,本文主要介绍Windows32位平台下利用Swig工具将CTPC++接口traderAPI转换为python可调用的接口。1.准备工作从CTP官网上下载CTPAPI点击下载。32位的API文件包清单如下:error.dtderror.xmlThostFtdcMdApi.hThostFtdcTraderApi.hThostFtdcUserAp
- C++使用QtHttpServer开发服务端Server的Http POST接口和客户端Client示例
BigBookX
Qtc++qthttp
ClientHTTPPOST假设http://127.0.0.1:8888/post/是一个能够接受POST请求的路径,我们想要向它提交一段json数据,用Qt可以这样实现:SupposewewanttomakeanHTTPPOSTwithjsonbodytohttp://127.0.0.1:8888/post/.QCoreApplicationapp(argc,argv);QNetworkAcc
- C++ 仿函数
azaz_plus
C++c++开发语言仿函数
1.仿函数的基本用法仿函数是一个类或结构体对象,它通过重载函数调用运算符operator(),使得该对象可以像普通函数一样被调用。示例1:实现一个加法器classAdder{public:Adder(intnum):num_(num){}//构造函数保存状态(加数)//重载operator(),执行加法intoperator()(intx)const{returnx+num_;}private:i
- 【C++】深入理解类与对象:面向对象编程的核心
Yui_
C++c++开发语言笔记学习
个人主页:Yui_Linux专栏:LinuxC语言笔记专栏:C语言笔记数据结构专栏:数据结构C++专栏:C++文章目录1.面向过程和面向对象的初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1访问限定符4.2封装5.类的作用域6.类的实例化7.类的空间大小7.1内存对齐规则8.this指针8.1this指针的特性9.总结1.面向过程和面向对象的初步认识C语言是面向过程的,关注的过程,分
- CTP Python API 利用Swig 封装Windows版(traderapi)
墨籽迦
程序员人生pythonwindowsc++swigctp
前言目前上期技术CTP系统提供的API版本是C++版本,本文主要介绍Windows64位平台下利用Swig工具将CTPC++接口traderAPI转换为Python可调用的接口文件。1.准备工作从CTP官网上下载CTPAPI点击下载,注意非交易时间段网站不能访问。这里用的CTP版本是v6.7.8_20240918(写这篇文章时官网目前最新的CTP版本),64位的API文件包解压后清单如下:erro
- 代码随想录算法训练营第7天 | 454.四数相加II 383. 赎金信 15. 三数之和 18. 四数之和
Lchiyu
算法
目录454.四数相加II思路暴力解【超时】字典类哈希表383.赎金信思路哈希表Counter类15.三数之和思路暴力解【超时】遍历+左右指针进一步优化18.四数之和思路方法454.四数相加II题目链接:454.四数相加II-力扣(LeetCode)文章讲解:代码随想录视频讲解:学透哈希表,map使用有技巧!LeetCode:454.四数相加II思路暴力解,超时,时间复杂度为n^4利用字典类哈希表优
- 深入理解现代C++在IT行业中的核心地位与应用实践
六七_Shmily
#C++c++java开发语言
深入理解现代C++在IT行业中的核心地位与应用实践一、C++在IT行业中的不可替代性现代IT行业中,C++凭借其零成本抽象和系统级控制能力,在以下关键领域保持不可替代地位:应用领域C++优势体现典型应用案例高性能计算直接内存管理,SIMD指令优化科学计算、金融建模游戏开发实时渲染,物理引擎UnrealEngine、Unity底层嵌入式系统资源受限环境下的高效控制自动驾驶ECU、IoT设备基础设施软
- 图论 | 98. 所有可达路径
Lchiyu
图论
98.所有可达路径题目链接:98.所有可达路径思路先创建邻接矩阵,再深搜写代码是需要注意的是acm格式,输入的格式要转化为int,输出要转化为str,用map()实现。dfsdefdfs(grid,node,n,path,res):ifnode==n:res.append(path[:])returnforjinrange(len(grid[0])):ifgrid[node-1][j]==1:pa
- 基本数据类型和引用类型的初始值
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