- Spring 事务与 MySQL 事务:深度解析与实战指南
一叶飘零_sweeeet
果酱紫springmysqlspringmysqljava
一、引言在企业级应用开发中,事务处理是确保数据一致性和完整性的关键环节。Spring框架作为广泛应用的Java开发框架,提供了强大的事务管理功能。而MySQL作为流行的关系型数据库,也具备完善的事务支持。本文将深入探讨Spring事务与MySQL事务的原理、特性、使用方法以及在实际项目中的应用,帮助开发者更好地理解和运用事务处理机制,确保应用的可靠性和数据的准确性。二、事务的基本概念(一)什么是事
- 第06章 07 VTK体绘制中的2D纹理映射和3D纹理映射
捕鲸叉
VTK编程学习3dVTK信息可视化
在VTK(VisualizationToolkit)中,体绘制是一种将三维数据转换为二维图像的技术,VTK提供了多种方法来实现体绘制,其中2DTexture-Mapped和3DTexture-Mapped技术是两种常见且重要的技术。下面将分别介绍这两种技术的特点和应用场合,并提供C++示例代码。2DTexture-Mapped技术2DTexture-Mapped技术在VTK中通常用于切片渲染。在这
- python第六次课----异常处理
心之所向,随风依旧
python
1.异常简介异常即非正常状态,在Python中使用异常对象来表示异常。若程序在编译或运行过程中发生错误,程序的执行过程就会发生改变,抛出异常对象,程序流进入异常处理。如果异常对象没有被处理或捕捉,程序就会执行回溯(Traceback)来终止程序。异常信息:异常类型:异常类型异常消息NameError: name'num'isnotdefined.Didyoumean:'sum'?FileN
- 从0开始C语言(2)
岁ovo寒
c语言开发语言
宏定义众所周知,头文件是扩展名为.h的文件,包含了C函数声明和宏定义,被多个源文件中引用共享。那么什么是宏定义呢?宏定义是C语言中的一种预处理器功能,用于在代码编译之前进行文本替换和条件编译。以下是对宏定义的详细介绍:基本概念宏定义:宏定义通过#define指令实现,用于将一个标识符(宏名)定义为一个字符串或代码片段。在预处理阶段,所有出现的宏名都会被替换为定义的字符串。宏替换:预处理程序将所有出
- 潜水员 ← 二维费用的背包问题
hnjzsyjyj
信息学竞赛#动态规划二维费用的背包问题
【题目来源】https://www.acwing.com/problem/content/1022/【题目描述】潜水员为了潜水要使用特殊的装备。他有一个带2种气体的气缸:一个为氧气,一个为氮气。让潜水员下潜的深度需要各种数量的氧和氮。潜水员有一定数量的气缸。每个气缸都有重量和气体容量。潜水员为了完成他的工作需要特定数量的氧和氮。他完成工作所需气缸的总重的最低限度的是多少?例如:潜水员有5个气缸。每
- ssGSEA中GSVA调用报错的解决方法
影林握雪
生信R语言r语言大数据r语言-4.2.1chatgpt笔记经验分享AI编程
ssGSEA中GSVA调用报错问题expr是表达谱,表达数据矩阵,行是基因,列是样本。cellMarker是一个包含基因集的列表。在R中使用GSVA的2.0.2版本gsva_data<-gsva(expr,cellMarker,method="ssgsea")会报错:Callinggsva(expr=.,gset.idx.list=.,method=.,…)isdefunct;useamethod
- M|一一
影林握雪
其他
rating:9.0豆瓣:9.1M|一一2000/剧情家庭/中国台湾日/173m两个一,支棱起来是“人”,躺下去是“死”——从生到死。如果人只能看到事物的一半,那么出生的时候不就接近死亡了吗?小的时候我们以为长大了能看清事物的全貌,可历经沧桑我们才明白“人”的缺陷,接受人生的苦痛。诚如大田君,记下所有牌面才有了魔术。《这个杀手不太冷》里的台词很合适:Dialogue:人生总是这么痛苦吗?Islif
- M|完美的日子
影林握雪
其他
rating:9.5豆瓣:8.5上映时间:"2023""2024"类型:M剧情音乐导演:维姆·文德斯WimWenders主演:役所广司KôjiYakusho国家/地区:日本德国片长/分钟:125分钟M|完美的日子上善若水,佳人如木。物质是快乐下限,精神是幸福上限。文青男死前的幻想。原谅我给9.5吧,不过是一个死文青罢了,他还期望什么呢。音乐很喜欢。这个电影有两大争议点,主要的一点是一个东亚的厕所清
- 安心即美的生活方式
CIb0la
生活程序人生
如果你的心是安定的,那么,外界也就安静了。就像陶渊明说的:心远地自偏。不是走到偏远无人的边荒才能得到片刻清净,不需要使用洪荒之力去挣脱生活的枷锁,这是陶渊明式的中国知识分子的雅量。如果你自己是好的男人或女人,那么,你就会遇见好的女人或男人。如果你的心是喜乐的,那么,无论做什么,即使只是随便走一走,你也会变得很健康。如果你的心是美丽的,那么你只要做回你自己,做回上苍赋予你的那个样子,你就是美丽的。不
- 【数据结构与算法】力扣 5. 最长回文子串
秀秀_heo
数据结构与算法leetcode算法职场和发展
题目描述5.最长回文子串给你一个字符串s,找到s中最长的回文子串。示例1:输入:s="babad"输出:"bab"解释:"aba"同样是符合题意的答案。示例2:输入:s="cbbd"输出:"bb"提示:1=0&&rightmaxLen){start=oddStart;maxLen=oddLen;}//处理偶数长度回文let[evenStart,evenLen]=expandAroundCenter
- Docker 安装详细教程(适用于CentOS 7 系统)
Future_yzx
eureka云原生
目录步骤如下:1.卸载旧版Docker2.配置Docker的YUM仓库3.安装Docker4.启动Docker并验证安装5.配置Docker镜像加速总结前言Docker分为CE和EE两大版本。CE即社区版(免费,支持周期7个月);EE即企业版,强调安全,付费使用,支持周期24个月。DockerCE分为stabletest和nightly三个更新频道。官方网站上有各种环境下的安装指南,这里主要介绍D
- Android mvvm 之 LiveData 的原理
全栈_WtU
作者(vip1024c)面试android
booleanshouldBeActive(){returnmOwner.getLifecycle().getCurrentState().isAtLeast(STARTED);}这说明,只有当LifecycleOwner的状态至少是STARTED,LiveData才是处于激活状态的。再看Lifecycle.State的枚举顺序:publicenumState{DESTROYED,INITIALI
- Java基础:Collections
全栈_WtU
作者(vip1024c)面试javawindows开发语言
System.out.println(list);//排序方法Collections.sort(list);System.out.println(list);}}结果:[5,222,1,2][1,2,5,222]代码演示之后,集合按照顺序进行了排列,可是这样的顺序是采用默认的顺序,如果想要指定顺序那该怎么办呢?publicstaticvoidsort(Listlist,Comparator):将集
- 探索Web3世界:算法与挖矿详解
Java先进事迹
web3算法
哈希算法:区块链的“数字指纹”区块链的结构类似于链表,数据块一个连着一个,链接在一条或多条链上。每个数据块都至少记录着数据、自己的地址和前一个数据块的地址。每个数据块的“地址”的编码都是独一无二的,通过一种称为哈希算法的技术生成。哈希算法能够将任意长度的数据映射为一个固定长度的唯一编码(哈希值)。即使输入数据发生微小变化,生成的哈希值也会截然不同。我们可以将哈希算法比作一台神奇的调色机。无论你放入
- 全网最全JAVA面试八股文,终于整理完了
Java先进事迹
面试java职场和发展springbootspringjava-eemaven
前言又到一年金三银四面试跳槽季,你准备好了吗?今天为大家整理了目前互联网出现率最高的大厂面试题,所谓八股文也就是指文章的八个部分,文体有固定格式:由破题、承题、起讲、入题、起股、中股、后股、束股八部分组成,题目一律出自四书五经中的原文。而JAVA面试八股文也就是为了考验大家的JAVA基础功底,所以强烈建议背诵全文。1、并发编程三要素?(1)原子性原子性指的是一个或者多个操作,要么全部执行并且在执行
- c++ · binarySearch ( 二分法 )
Le_ee
c++算法蓝桥杯c语言
2025.2.3一:过程二分例1:查找有序数组中某个元素;intbinarySearch(vector&arr,inttarget){//接受有序数组arr和目标值targetintleft=0,right=arr.size()-1;//定义左指针指向数组起始位置(即0下标),右指针为数组最后一个元素的下标while(left&arr,inttarget){intleft=0,right=arr.
- 关于博弈论
总思霖
概率论论文笔记
最近看了一本书叫《消失的凶手》,里面的侦探邓教授在某一次探案中与未实施犯罪的凶手玩了读数游戏运用到博弈论,阻止了一场悲剧的发生,借此我了解了一些关于博弈论的知识。博弈论有许多种,如:零和博弈&非零和博弈:博弈双方的收益总和为零,一方的利益的增加就意味着另一方利益的减少;博弈双方的收益总和不为零,可以存在双赢的情况。顺序博弈&同时博弈:博弈双方的行动是依次进行的,每个人的行动都受之前人的行动所影响;
- Spring使用JdbcTemplate操作数据库附源码解释
2401_84009749
程序员数据库springoracle
配置xml配置文件=========在spring配置文件配置数据库连接池,配置JdbcTemplate对象,注入DataSource。配置时用的是引用外部配置文件,所以还需要引入外部的属性文件,同时创建对象时是基于注解的所以还要开启组件扫描。bean1.xml:jdbc.properties:jdbc.driverClass=com.mysql.jdbc.Driverjdbc.url=jdbc:
- 33.Context
我也念过晚霞
Android学习java开发语言
什么是ContextContext是一个抽象类,它提供了访问应用环境的接口。它常用于以下几种操作:访问资源:如字符串、图片、布局文件等。启动活动:如启动新的Activity、Service等。获取系统服务:如LayoutInflater、AlarmManager、NotificationManager等。访问数据库:如访问SharedPreferences和SQLite数据库。Context的类型
- 求一个数的数根(高精度)
甜甜的2013
算法c++
上一期我们讲的是求一个数的数根,和本期唯一不同的是,数据范围不同了,上一期这个数是小于等于10的18次方的,这一期是小于等于10的1000次方的,开一个变量?肯定不行,我们需要再开一个数组,而且是char数组,在代码中我们需要在后面把char转化成int,这就要涉及ASCII的知识了!如何把存在char的数字变成能计算的数字呢?只需要-48!好了,放代码!#includeusingnamespac
- javascrip基础语法
大道戏
前端前端javascript开发语言
为什么学习JavaScript?JavaScript是web开发人员必须学习的3门语言中的一门:HTML定义了网页的内容CSS描述了网页的布局JavaScript控制了网页的行为1.JavaScript输出1.1console.log():用于将信息输出到浏览器控制台,例如console.log("Hello,World!");,可以输出字符串、变量、表达式等。1.2console.error()
- java生成随机数的四种方法
大道戏
java入门java算法数据结构
方法一:Math.random()Math.random()方法返回的是一个介于0.0(包含)和1.0(不包含)之间的随机浮点数。1、生成0.0到1.0之间的浮点数:doublef=Math.random();2、生成0.0到50.0之间的双精度浮点数:doublerandomDouble=Math.random()*50;3、生成大写字母:charch=(char)(65+(Math.rando
- python 抽象类
学python的土豆
python开发语言
1.基本概念抽象类,顾名思义,是包含抽象方法(即没有具体实现的方法)的类。这些抽象方法必须在子类中得以具体实现。Python通过abc(AbstractBaseClasses)模块提供了对抽象类的支持。在Python3中,我们通常会从abc.ABC类继承来创建一个抽象类,并使用@abc.abstractmethod装饰器来标记抽象方法。2.定义抽象类fromabcimportABC,abstrac
- python中的时间模块--datetime模块、time模块
学python的土豆
python开发语言
python中的时间模块一.datetime模块二.time模块一.datetime模块引入时间模块fromdatetimeimportdatetime获取当前时间print(datetime.today())#前的日期和时间print(datetime.now())#当前的日期和时间print(datetime.now().year)#当前的年份print(datetime.now().mont
- python 函数基础
学python的土豆
python开发语言
python函数基础1.函数的目的2.函数的定义3.函数的声明与调用4.函数的形参与实参5.函数的返回值6.函数的参数类型6.1位置参数:6.2关键字参数:6.3默认参数:6.4可变参数:7.匿名函数8.函数的进阶应用 在编程的世界里,函数是构建程序大厦的基石。Python作为一种高级编程语言,提供了强大且灵活的函数定义和调用机制。本文将对python函数基础的相关知识进行讲解。1.函数的目的函
- python 函数进阶(迭代器和生成器)
学python的土豆
python开发语言
python函数进阶(迭代器和生成器)1.迭代器1.1迭代器的定义1.2迭代器的使用2.生成器2.1生成器的定义2.2生成器的优势2.3生成器的应用总结在Python的编程世界里,迭代器与生成器是两个很重要的概念,它们不仅简化了数据遍历与处理的过程,还极大地提升了代码的可读性与执行效率。这篇文章就来深入了解一下Python中的迭代器与生成器1.迭代器迭代器是Python中处理序列数据的一种重要方式
- DeepSeek-R1 论文. Reinforcement Learning 通过强化学习激励大型语言模型的推理能力
davenian
评论语言模型人工智能深度学习DeepSeek
论文链接:[2501.12948]DeepSeek-R1:IncentivizingReasoningCapabilityinLLMsviaReinforcementLearning实在太长,自行扔到Model里,去翻译去提问吧。工作原理:主要技术,就是训练出一些专有用途小模型,来帮助大模型训练。主要技术:1.强化学习(RL)核心是强化学习技术,像训练小狗一样,当模型做出正确的推理步骤或得到正确的
- python的异常处理--异常引入,异常处理,常见异常,断言,自定义异常
学python的土豆
python
python的异常处理一.异常引入二.异常处理三.常见异常四.断言五.自定义异常一.异常引入异常概念:程序在运行过程中发生不可预知的错误,程序员很难堵住所有的漏洞,就需要异常处理二.异常处理异常处理:捕获异常:try-except-else-finally将可能发生异常的代码,放入try-except中else:当代码没有异常就会执行else,如果代码块中有return,else将不执行final
- nginx源码解析-ngx_strerror()/ngx_strerror_init()
wenpeng_lu
nginxnginx
nginx源码解析-ngx_strerror()/ngx_strerror_init()将所有的错误码errno以及错误描述strerror(errno)提前存储到ngx_sys_errlist中,用于解决异步信号安全的问题。/**Copyright(C)IgorSysoev*Copyright(C)Nginx,Inc.*/#include#include/**Thestrerror()messa
- 初识C语言02
HIS~story @ 哲
c语言c++开发语言
今天博主来继续更新。我们知道在任何一门编程语言中都会涉及到常量和定义变量的问题。顾名思义,常量,也就是不变的值,变化的值用变量来表示。变量:局部变量和全局变量。我们现在看一段代码:#includeintb=20;intmain(){shorta=20;return0;}在C语言中,局部变量是在函数内部或代码块(用{}括起来的区域)中定义的变量。在函数内部定义的变量,其作用域仅限于该函数。全局变量的
- java杨辉三角
3213213333332132
java基础
package com.algorithm;
/**
* @Description 杨辉三角
* @author FuJianyong
* 2015-1-22上午10:10:59
*/
public class YangHui {
public static void main(String[] args) {
//初始化二维数组长度
int[][] y
- 《大话重构》之大布局的辛酸历史
白糖_
重构
《大话重构》中提到“大布局你伤不起”,如果企图重构一个陈旧的大型系统是有非常大的风险,重构不是想象中那么简单。我目前所在公司正好对产品做了一次“大布局重构”,下面我就分享这个“大布局”项目经验给大家。
背景
公司专注于企业级管理产品软件,企业有大中小之分,在2000年初公司用JSP/Servlet开发了一套针对中
- 电驴链接在线视频播放源码
dubinwei
源码电驴播放器视频ed2k
本项目是个搜索电驴(ed2k)链接的应用,借助于磁力视频播放器(官网:
http://loveandroid.duapp.com/ 开放平台),可以实现在线播放视频,也可以用迅雷或者其他下载工具下载。
项目源码:
http://git.oschina.net/svo/Emule,动态更新。也可从附件中下载。
项目源码依赖于两个库项目,库项目一链接:
http://git.oschina.
- Javascript中函数的toString()方法
周凡杨
JavaScriptjstoStringfunctionobject
简述
The toString() method returns a string representing the source code of the function.
简译之,Javascript的toString()方法返回一个代表函数源代码的字符串。
句法
function.
- struts处理自定义异常
g21121
struts
很多时候我们会用到自定义异常来表示特定的错误情况,自定义异常比较简单,只要分清是运行时异常还是非运行时异常即可,运行时异常不需要捕获,继承自RuntimeException,是由容器自己抛出,例如空指针异常。
非运行时异常继承自Exception,在抛出后需要捕获,例如文件未找到异常。
此处我们用的是非运行时异常,首先定义一个异常LoginException:
/**
* 类描述:登录相
- Linux中find常见用法示例
510888780
linux
Linux中find常见用法示例
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
- SpringMVC的各种参数绑定方式
Harry642
springMVC绑定表单
1. 基本数据类型(以int为例,其他类似):
Controller代码:
@RequestMapping("saysth.do")
public void test(int count) {
}
表单代码:
<form action="saysth.do" method="post&q
- Java 获取Oracle ROWID
aijuans
javaoracle
A ROWID is an identification tag unique for each row of an Oracle Database table. The ROWID can be thought of as a virtual column, containing the ID for each row.
The oracle.sql.ROWID class i
- java获取方法的参数名
antlove
javajdkparametermethodreflect
reflect.ClassInformationUtil.java
package reflect;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.Modifier;
import javassist.bytecode.CodeAtt
- JAVA正则表达式匹配 查找 替换 提取操作
百合不是茶
java正则表达式替换提取查找
正则表达式的查找;主要是用到String类中的split();
String str;
str.split();方法中传入按照什么规则截取,返回一个String数组
常见的截取规则:
str.split("\\.")按照.来截取
str.
- Java中equals()与hashCode()方法详解
bijian1013
javasetequals()hashCode()
一.equals()方法详解
equals()方法在object类中定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、I
- 精通Oracle10编程SQL(4)使用SQL语句
bijian1013
oracle数据库plsql
--工资级别表
create table SALGRADE
(
GRADE NUMBER(10),
LOSAL NUMBER(10,2),
HISAL NUMBER(10,2)
)
insert into SALGRADE values(1,0,100);
insert into SALGRADE values(2,100,200);
inser
- 【Nginx二】Nginx作为静态文件HTTP服务器
bit1129
HTTP服务器
Nginx作为静态文件HTTP服务器
在本地系统中创建/data/www目录,存放html文件(包括index.html)
创建/data/images目录,存放imags图片
在主配置文件中添加http指令
http {
server {
listen 80;
server_name
- kafka获得最新partition offset
blackproof
kafkapartitionoffset最新
kafka获得partition下标,需要用到kafka的simpleconsumer
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.
- centos 7安装docker两种方式
ronin47
第一种是采用yum 方式
yum install -y docker
 
- java-60-在O(1)时间删除链表结点
bylijinnan
java
public class DeleteNode_O1_Time {
/**
* Q 60 在O(1)时间删除链表结点
* 给定链表的头指针和一个结点指针(!!),在O(1)时间删除该结点
*
* Assume the list is:
* head->...->nodeToDelete->mNode->nNode->..
- nginx利用proxy_cache来缓存文件
cfyme
cache
user zhangy users;
worker_processes 10;
error_log /var/vlogs/nginx_error.log crit;
pid /var/vlogs/nginx.pid;
#Specifies the value for ma
- [JWFD开源工作流]JWFD嵌入式语法分析器负号的使用问题
comsci
嵌入式
假如我们需要用JWFD的语法分析模块定义一个带负号的方程式,直接在方程式之前添加负号是不正确的,而必须这样做:
string str01 = "a=3.14;b=2.71;c=0;c-((a*a)+(b*b))"
定义一个0整数c,然后用这个整数c去
- 如何集成支付宝官方文档
dai_lm
android
官方文档下载地址
https://b.alipay.com/order/productDetail.htm?productId=2012120700377310&tabId=4#ps-tabinfo-hash
集成的必要条件
1. 需要有自己的Server接收支付宝的消息
2. 需要先制作app,然后提交支付宝审核,通过后才能集成
调试的时候估计会真的扣款,请注意
- 应该在什么时候使用Hadoop
datamachine
hadoop
原帖地址:http://blog.chinaunix.net/uid-301743-id-3925358.html
存档,某些观点与我不谋而合,过度技术化不可取,且hadoop并非万能。
--------------------------------------------万能的分割线--------------------------------
有人问我,“你在大数据和Hado
- 在GridView中对于有外键的字段使用关联模型进行搜索和排序
dcj3sjt126com
yii
在GridView中使用关联模型进行搜索和排序
首先我们有两个模型它们直接有关联:
class Author extends CActiveRecord {
...
}
class Post extends CActiveRecord {
...
function relations() {
return array(
'
- 使用NSString 的格式化大全
dcj3sjt126com
Objective-C
格式定义The format specifiers supported by the NSString formatting methods and CFString formatting functions follow the IEEE printf specification; the specifiers are summarized in Table 1. Note that you c
- 使用activeX插件对象object滚动有重影
蕃薯耀
activeX插件滚动有重影
使用activeX插件对象object滚动有重影 <object style="width:0;" id="abc" classid="CLSID:D3E3970F-2927-9680-BBB4-5D0889909DF6" codebase="activex/OAX339.CAB#
- SpringMVC4零配置
hanqunfeng
springmvc4
基于Servlet3.0规范和SpringMVC4注解式配置方式,实现零xml配置,弄了个小demo,供交流讨论。
项目说明如下:
1.db.sql是项目中用到的表,数据库使用的是oracle11g
2.该项目使用mvn进行管理,私服为自搭建nexus,项目只用到一个第三方 jar,就是oracle的驱动;
3.默认项目为零配置启动,如果需要更改启动方式,请
- 《开源框架那点事儿16》:缓存相关代码的演变
j2eetop
开源框架
问题引入
上次我参与某个大型项目的优化工作,由于系统要求有比较高的TPS,因此就免不了要使用缓冲。
该项目中用的缓冲比较多,有MemCache,有Redis,有的还需要提供二级缓冲,也就是说应用服务器这层也可以设置一些缓冲。
当然去看相关实现代代码的时候,大致是下面的样子。
[java]
view plain
copy
print
?
public vo
- AngularJS浅析
kvhur
JavaScript
概念
AngularJS is a structural framework for dynamic web apps.
了解更多详情请见原文链接:http://www.gbtags.com/gb/share/5726.htm
Directive
扩展html,给html添加声明语句,以便实现自己的需求。对于页面中html元素以ng为前缀的属性名称,ng是angular的命名空间
- 架构师之jdk的bug排查(一)---------------split的点号陷阱
nannan408
split
1.前言.
jdk1.6的lang包的split方法是有bug的,它不能有效识别A.b.c这种类型,导致截取长度始终是0.而对于其他字符,则无此问题.不知道官方有没有修复这个bug.
2.代码
String[] paths = "object.object2.prop11".split("'");
System.ou
- 如何对10亿数据量级的mongoDB作高效的全表扫描
quentinXXZ
mongodb
本文链接:
http://quentinXXZ.iteye.com/blog/2149440
一、正常情况下,不应该有这种需求
首先,大家应该有个概念,标题中的这个问题,在大多情况下是一个伪命题,不应该被提出来。要知道,对于一般较大数据量的数据库,全表查询,这种操作一般情况下是不应该出现的,在做正常查询的时候,如果是范围查询,你至少应该要加上limit。
说一下,
- C语言算法之水仙花数
qiufeihu
c算法
/**
* 水仙花数
*/
#include <stdio.h>
#define N 10
int main()
{
int x,y,z;
for(x=1;x<=N;x++)
for(y=0;y<=N;y++)
for(z=0;z<=N;z++)
if(x*100+y*10+z == x*x*x
- JSP指令
wyzuomumu
jsp
jsp指令的一般语法格式: <%@ 指令名 属性 =”值 ” %>
常用的三种指令: page,include,taglib
page指令语法形式: <%@ page 属性 1=”值 1” 属性 2=”值 2”%>
include指令语法形式: <%@include file=”relative url”%> (jsp可以通过 include