- 高并发系统三大利器之缓存(原理到应用场景)
小飞飞的技术笔记
架构RedisSpring缓存redis数据库eureka
目录一、高并发系统三大利器二、缓存的使用场景2.1减轻DB压力2.2提高系统响应2.3session分离2.4分布式锁三、缓存的分类3.1客户端缓存3.2网络端缓存3.3服务端缓存四、缓存的优势和代价4.1优势4.2代价五、缓存的读写模式5.1CacheAsidePattern(旁路模式)高并发情况下出现的数据不一致(脏读)问题5.2Read/WriteThrough(读写穿透)5.3WriteB
- OverTheWire的natas游戏(21-34)
小莫神和他的的
OverTheWire
natassolution(21-34)NatasLevel20→Level21Username:natas21URL:http://natas21.natas.labs.overthewire.org这一关涉及到一个共享session的知识点,算是本关的收获吧。进入页面后看到提示Note:thiswebsiteiscolocatedwithhttp://natas21-experimenter.
- MyBatis SqlSessionFactory 批量执行实战
dazhong2012
springbootmybatis
在MyBatis中,批量操作是处理高并发数据写入的核心场景之一。通过SqlSessionFactory配置批处理执行器(ExecutorType.BATCH),可以显著提升数据库操作的效率。本文将结合Spring框架,深入解析如何高效配置和使用MyBatis的批量执行功能,并提供性能优化策略。一、SqlSessionFactory基础配置1.添加依赖在pom.xml中引入MyBatis-Sprin
- 【软考 系统架构设计师】案例分析⑥ Web应用系统架构设计
万猫学社
软考系统架构设计师简明教程软考系统架构设计师架构师系统架构
>>回到总目录2)2^n(n>2)2n(n>2)时,订阅价格将会上涨10元。所以,当下即是最便宜的价格。文章目录Web应用系统的发展历程负载均衡应用层负载均衡HTTP重定向反向代理服务器传输层负载均衡DNS负载均衡NAT的负载均衡负载均衡算法静态算法动态算法常见负载均衡工具Session共享机制无状态服务有状态服务练习题ORM数据库读写分离化缓存技术MemCacheRedisMemCache和Re
- Oracle测试题目及笔记(多选)
千羽星弦
oracle笔记数据库
所有题目来自于互联网搜索在以下概要文件的陈述中,哪两个是正确的?(D和E)A.概要文件不能被用来为账户加锁B.概要文件不能被用来控制资源使用C.数据库管理员可以使用概要文件更改用户密码D.数据库管理员可以使用概要文件来使口令衰老和过期E.不能删除默认的概要文件在一个新的数据库中,如果要限制一个用户的并行会话(同时连接)数,需要使用以下哪3个步骤?(C、D和F)A.使用SESSION_PER_USE
- 对一个 Web 登录页面进行安全测试
胆大的
安全测试安全性测试测试工具
示例:对一个Web登录页面进行安全测试假设你要测试一个常见的登录页:diff网址:https://example.com/login页面包含字段:-用户名:username-密码:password-登录按钮安全测试流程+示例操作1️⃣需求分析测试目标:登录功能是否安全。关注点:Listitem是否防SQL注入?是否有暴力破解防护?登录后是否存在越权问题?是否使用HTTPS?Session是否安全?
- Pytest学习(二)——fixture的详细使用
欲游山河十万里
#测试开发pytest学习
目录前言Fixture定义fixture的优势fixture参数列表1.function(默认)2.class每个测试类调用一次fixture,所有测试方法共享同一个fixture实例。3.module每个测试模块调用一次fixture,模块内的所有测试方法共享同一个fixture实例。4.session:在整个测试会话期间只调用一次fixture,适合用于全局资源配置。fixure常用用法参考文
- LabVIEW 调用 Python 函数
LabVIEW开发
LabVIEW知识labviewpython开发语言
此程序是LabVIEW调用Python函数实现双精度数相加的典型示例。通过LabVIEW搭建交互框架,借助“OpenPythonSession”创建Python代码运行环境,定位Python模块路径后调用“Add”函数,最终实现数据处理并关闭会话。整个流程展现了LabVIEW与Python跨语言协作的基础逻辑,是混合编程实现功能扩展的缩影。程序调用详细说明版本识别:通过“ToPythonVersi
- 技术干货实战(4)- 分布式集群部署模式下Nginx如何实现用户登录Session共享(含详细配置与代码实战)
修罗debug
《Java面试指南》
原文链接:技术干货实战(4)-分布式集群部署模式下Nginx如何实现用户登录Session共享(含详细配置与代码实战)最近有小伙伴催更,让debug多写点技术干货,以便多学习、巩固一些技能;没办法,debug也只好应承下来,再忙也要挤出时间撸一撸,以对得起时常关注debug的那些看官老爷们!本文将重点介绍:Nginx如何进行配置从而实现用户登录成功后Session共享的功能,其中我们将以“企业权限
- Nginx负载均衡配置、限流配置、Https配置详解
Linux服务器开发
后端开发Linux服务器开发Nginxnginx负载均衡https后端开发中间件
一.负载均衡1.用法通过proxy_pass可以把请求代理至后端服务,但是为了实现更高的负载及性能,我们的后端服务通常是多个,这个是时候可以通过upstream模块实现负载均衡。使用的模块为:【ngx_http_upstream_module】,具体配置可以根据模块名去查找文档。负载均衡的算法有:ll:轮询ll+weight:轮询加权重ip_hash:基于Hash计算,用于保持session一至性
- 实现通用密钥管理功能鸿蒙示例代码
本文原创发布在华为开发者社区。介绍本示例展示了密钥管理,包括:密钥生成/销毁、密钥导入、密钥证明、密钥协商、密钥派生相关功能。以及秘钥使用,包括:加解密、签名/验签、访问控制相关功能。实现通用密钥管理功能源码链接效果预览使用说明点击对应模式按钮即可展示结果。实现思路模拟加密场景,首先获取密钥别名、待加密的数据与加密算法参数配置,后调用initSession获取handle,调用finishSess
- django报错 AttributeError: ‘SessionStore‘ object has no attribute ‘_session_cache‘
milamimei
Djangodjango
1、之前一直正常运行,忽然就不能用了,报下图错误解决:在浏览器上删除cookie后,刷新网页即可2、使用SQLserver时报下边的错:django.core.exceptions.ImproperlyConfigured:‘sql_server.pyodbc’isn’tanavailabledatabasebackend.解决:更新了下django的版本,之前安装其他包时被修改成了更低的版本pi
- Node.js 中的 Session 原理与 Session 中间件的使用
人才程序员
杂谈node.js中间件css前端html5javascriptfirefox
文章目录Node.js中的Session原理与Session中间件的使用1.什么是Session?1.1Session的基本原理2.为什么使用Session?3.在Node.js中使用Session3.1安装`express-session`3.2配置和使用`express-session`3.3代码解析3.4会话数据的使用4.Session存储方式️4.1使用Redis存储Session4.2
- Python爬虫第三战(使用session登录小说网获取书单)
小小福仔
Pythonpython爬虫开发语言sessioncookie
本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习。登录小说网获取书单信息前言前言今天学习的主要是关于使用session获取网页数据知识的理解和应用以下第一种方法现在在登录时就已经被阿里云防火墙拦了,虽然被拦了但是还是有学习意义的,但是第二种方法是可以直接获取到的,需要你提前登录网址获取cookie#1.登录网站,获取cookie
- 【Python库详解】 Requests
满怀1015
Python入门学习python开发语言
目录简介一、安装与导入安装导入二、发送HTTP请求1.GET请求基本请求URL参数2.POST请求表单数据提交JSON数据提交文件上传3.其他方法PUT请求示例DELETE请求示例三、处理响应1.响应内容解析文本内容处理二进制内容处理JSON数据处理2.响应状态与头信息状态码检查异常处理响应头解析四、高级功能1.会话(Session)管理2.代理设置3.超时控制4.SSL验证禁用验证(测试环境使用
- oracle临时表实际应用,oracle 临时表 应用场景
love彤彤
oracle临时表实际应用
ORACLE数据库除了可以保存永久表外,还可以建立临时表temporarytables。这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,但临时表的结构以及元数据还存储在用户的数据字典中。1.会话级临时表会话级临时表是指临时表中的数据只在会话生命周期之中存在,当会话结束的时候,O
- oracle 多个临时表,oracle 临时表 应用场景
热云数据
oracle多个临时表
ORACLE数据库除了可以保存永久表外,还可以建立临时表temporarytables。这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,但临时表的结构以及元数据还存储在用户的数据字典中。1.会话级临时表会话级临时表是指临时表中的数据只在会话生命周期之中存在,当会话结束的时候,O
- oracle大数据临时表,oracle 临时表 应用场景
狐狸君raphael
oracle大数据临时表
oracle临时表应用场景发布时间:2020-04-0123:57:07来源:51CTO阅读:2666作者:lych528ORACLE数据库除了可以保存永久表外,还可以建立临时表temporarytables。这些临时表用来保存一个会话SESSION的数据,或者保存在一个事务中需要的数据。当会话退出或者用户提交commit和回滚rollback事务的时候,临时表的数据自动清空,但临时表的结构以及元
- 服务器及链路负载均衡详解(RADWARE/F5)
ITPhenix
网络技术数据中心网络信息与通信网络协议tcp/ip负载均衡服务器
目录RADWARE服务器负载均衡GTM/LTM会话保持基于四层的会话保持基于七层的会话保持存会话的会话保持负载均衡算法常用术语负载均衡session机制Alteon软件系统RADWARE链路负载均衡RADWARE服务器负载均衡部署案例网络配置服务器负载均衡配置配置真实服务器服务器组Group配置配置虚拟服务器virtualservice物理服务器和逻辑服务器配置案例配置源地址翻译会话保持两种模式S
- tip:vue中路由跳转,返回是还想保留原来的搜索条件
嬉牛
vue.jsjavascript前端
新写的一个项目,使用后发现,点“详细”跳转到详情页面。返回时,原来的筛条件没了,又把全部的数据都查询出来,还需要重新筛选一下,使用起来很不友好。解决办法:浏览器本地存储(LocalStorage或SessionStorage)处理多个搜索条件初始页面有一个筛选条件对象:QInstrumentQuery:{}页面跳转前将这个对象存储到本地存储。因为只能存储字符串,所以可以将多个搜索条件组合成一个JS
- Node.js 中的 session 中间件使用简单介绍(附完整代码)
还是鼠鼠
node.jsnode.js中间件expressjavascriptvscode
目录✅什么是express-session?示例项目:简单登录系统文件结构如下:app.js(JavaScript)index.html(HTML)▶️程序运行说明✅小结在Node.js的Web开发中,常见需求之一就是保存用户的登录状态,比如用户登录后访问其他页面时还能被识别身份。这就需要用到Session,而在Express中,我们常用express-session中间件来管理Session。✅
- xshell中途断网——tmux解决方法
A1_abc
tmuxxshell
$tmux1启动之后,可以看到命令行最底部多了一条绿色的状态条,上面显示了一些信息,比如计算机名和时间等。要退出tmux,可以输入exit回车或者按下组合键[Ctrl+d]。其实刚才我们启动tmux之后,它已经自动创建了一个会话(Session),会话是tmux的最主要的功能,接下来我们将介绍会话的一些功能。新建会话启动tmux会自动创建会话,但并没有为会话命名。为了以后使用方便,我们来创建一个自
- SQLAlchemy 核心概念与同步引擎配置详解
title:SQLAlchemy核心概念与同步引擎配置详解date:2025/04/1400:28:46updated:2025/04/1400:28:46author:cmdragonexcerpt:SQLAlchemy的核心概念包括ORM、Engine、Connection和Session。ORM将数据库表映射为Python类,行记录转为对象实例。Engine管理数据库连接池,Connecti
- module软件管理工具的使用
moyu5021
linux服务器运维
module软件管理工具的使用1.简介Typicallyusersinitializetheirenvironmentwhentheyloginbysettingenvironmentinformationforeveryapplicationtheywillreferenceduringthesession.TheEnvironmentModulespackageisatoolthatsimpl
- Python 模拟登录和抓取文章
flsmgf
python
1.模拟登录需要拿到登录的url,headers,抓取登录表单所需要的信息。抓取表单信息代码如下:def_prepare_login_form_data(self,username,password):"""Getdataforloginsubmission"""response=self._session.get(CsdnHelper.csdn_login_url)login_page=Beau
- Jmeter中如何实现关联?
海姐软件测试
Jmeterjmeter
在JMeter中实现关联(Correlation)是性能测试中处理动态数据(如SessionID、Token、动态参数等)的核心技能。以下是详细操作指南,涵盖原理、工具和实战示例:一、关联的本质与场景作用:从服务器响应中提取动态数据,供后续请求复用(如登录Token、订单ID、验证码等)。典型场景:会话保持、CSRF防护、动态资源加载、分页查询等。二、JMeter关联的4大核心组件1.正则表达式提
- 京东 E卡 绑定 滑块 分析
2766958292
javapython京东京东E卡京东E卡绑定jd京东滑块
声明本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!逆向过程部分python代码url="/app"params={"source":"JDAP"}response=session.post(url,headers=headers,params=params)sid=response
- asp python 定时任务,django-crontab实现服务端的定时任务的示例代码
某一个吃货
asppython定时任务
安装pipinstalldjango-crontab在Django项目中使用settings.pyINSTALLED_APPS=('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.
- 如何在 Postman(测试工具) 中实现 Cookie 持久化并保持同一会话
来自星星的坤
开发语言springboot后端java
在开发基于SpringBoot的Web应用时,使用Session存储验证码等敏感信息是常见的做法。然而,在调试接口时,你可能会遇到这样一个问题:第一次请求接口时存入的验证码在第二次请求时无法获取,原因往往是两个请求所使用的SessionID不一致。本文将详细介绍如何在Postman中捕获和传递Cookie,并一步步排查Session不一致的问题。一、问题背景假设你有两个接口:/email接口:用于
- 如何在 Spring Boot 项目中使用 MyBatis 进行批量操作以提升性能?
冰糖心书房
微服务实战系列springbootmybatis后端性能提升
MyBatis提供了ExecutorType.BATCH类型,允许将多个SQL语句进行组合,最后统一执行,从而减少数据库的访问频率,提升性能。以下是如何在SpringBoot项目中使用MyBatis进行批量操作的关键点:1.配置MyBatis使用ExecutorType.BATCH主要有两种方式可以来配置MyBatis使用BATCH执行器类型:a)在SqlSessionFactoryBean中配置
- 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