- python flask 蓝图(Blueprint)详解
ldq_sd
python
Blueprint模块化随着flask程序越来越复杂,我们需要对程序进行模块化的处理,针对一个简单的flask程序进行模块化处理举例来说:我们在一个py文件中写入了很多路由,fromflaskimportFlaskapp=Flask(__name__)@app.route('/')defindex():return'index'@app.route('/list')deflist():return
- Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection do
leaftong
java数据库mybatis
项目场景:背景:在练习mybatis的对象映射时,设置了一个嵌套查询
- 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.4 切片大师:高效操作多维数据的23个技巧
精通代码大仙
numpypythonnumpypythonandroid
1.4切片大师:高效操作多维数据的23个技巧基础切片start:end:step省略写法负索引多维切片高级技巧视图机制布尔索引花式索引动态切片对象1.4切片大师:高效操作多维数据的23个技巧1.4.1切片操作符的完整语法表NumPy数组的切片操作符与标准Python列表的切片操作符类似,但更加强大,支持多维数组的操作。以下是一个完整的切片操作符语法表,包括正负索引的示意图。1.4.1.1一维数组切
- 自定义HTTPS证书用于内网环境
小时候的阳光
运维https证书内网自定义nginx
自定义HTTPS证书用于内网环境,记录一下简单步骤,方便后面查看自定义HTTPS证书通常用于开发和测试环境,而不是生产环境,因为自签名证书不会被浏览器和操作系统默认信任,自签名证书主要用于内网加密。以下是创建自签名HTTPS证书的步骤:1.安装OpenSSL确保你的系统上安装了OpenSSL。大多数Linux发行版和macOS都预装了OpenSSL。对于Windows,你可能需要手动安装。2.生成
- 获取java类中的属性注释
小时候的阳光
javajava类注释属性注释tools.jar代码注释
一般我们的某个数据库表对象model,javabean对象如下:packagecom.xxx.message.model;importcom.middol.common.model.BaseModel;importlombok.Data;importlombok.EqualsAndHashCode;importjavax.persistence.Column;importjavax.persist
- USB-PD 3.0 协议规范文件
松京焕Max
USB-PD3.0协议规范文件USB-PD3.0协议规范文件USB-PD(USBPowerDelivery)是由USB-IF组织制定的一种快速充电规范,是目前主流的快充协议之一。USB-PD快充协议通过Type-C接口输出,但需要注意的是,并非所有Type-C接口都支持USB-PD协议快充。本资源文件包含了USB-PD3.0协议的详细规范文档,版本为V1.1。该文档详细介绍了USB-PD3.0协议
- 查看spring bean 注入来源
弹唱Tan
java语言
项目里注入了一个bean,到处搜索都不知道是哪里注入的,最后找到下面的方法来排查在注入处,打断点如图:要查看scheduler是哪里注入的,就在这里打断点。2.进入断点后,点击堆栈中的getBean方法,输入类名,获取beanName3.查看是哪里注入的
- Kafka 2.2.0 消息日志清理机制:日志删除 日志压缩
A__Plus
kafkaKafka消息队列
Kafka将消息持久化到磁盘中的Log中,为了控制日志文件的大小就需要对消息进行清理操作。每个Log对应一个分区副本,Log可以分为多个日志分段,便于日志的清理操作。在了解日志清理机制之前,请先了解日志存储方式Kafka有两种日志清理策略:日志删除:按照保留策略删除日志分段需要将Broker端参数log.cleanup.policy设置为delete(默认值)日志压缩:根据每个消息的key进行整合
- C++ 继承和多态
Tiantangbujimo7
基础c++开发语言
定义:继承是一种面向对象编程的重要特性,它允许你创建一个新的类,从一个或多个现有的类中继承属性的行为。这个新的类被称为派生类(DerivedClass),而被继承的类称之为基类(BaseClass)。继承所研究的是类与类之间的依赖关系,是多个类直接的共性与个性直接的代码表达。让代码结构更加合理,灵活,易于维护。继承单继承classBaseClass{};classDerive:publicBase
- 面向对象设计原则
Tiantangbujimo7
设计模式设计模式
面向对象最大的优势是抵御变化理解隔离变化:从宏观面来看,面向对象构建方式更能适应软件的变化,能将变化所带来的影响减为最少。各司其职:从微观层面来看,面向对象的方式更强调各个类的责任。由于需求变化导致的新增类型不应该影响原来类型的实现。对象是什么?从语言实现层面来看,对象封装了代码和数据。从规格层面来讲,对象是一系列可被使用的公共接口。从概念来讲,对象是某种拥有责任的抽象。面向对象设计原则依赖倒置原
- 编译器概述
Tiantangbujimo7
编译原理学习编程语言
什么是编译器:编译器是一个程序,核心功能是把源代码翻译成目标代码。源代码:c/c++,Java,c#,html,sql,…目标代码:x86,IA64,ARM,MIPS,…编译器的核心功能:源代码经过编译器的翻译,生成了目标代码,这里的静态计算意思是编译器在对目标程序进行编译的过程中并不去执行这个代码,而是尝试以静态的方式对目标程序进行理解,理解的原因是编译器所生成的目标程序和源程序必须语义相同。生
- pycharm+flask蓝图的创建
一颗大橘猫
flaskpython后端
一、蓝图的定义flask蓝图(blueprint):用于把app应用模块化,就是把各个模块的路由绑定到该模块蓝图上,然后再把蓝图加载到app应用中二、蓝图创建1.创建flask的文件(全展开,文件已提前设置好)注意:pycharm专业版自动创建flask文件,社区版需要手动添加文件夹(app、static、templates、app.py)其中app.py文件与其他文件夹同级。2.在apps文件夹
- CTF学习笔记——[ACTF2020 新生赛]BackupFile
Obs_cure
网络安全
一、[ACTF2020新生赛]BackupFile1.题目2.解题步骤看了一眼源码什么都没有。难道要暴力扫目录?先试试flag.php阿这还真有…但是还是什么都没有显示。再试试index.php的备份呢?备份有点东西。审计一下发现是弱类型。这段源码的大意就是输入一个key变量,如果key=str(123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3),那么打印fl
- 如何快速在linux服务器部署java运行环境(JDK+TomCat+Redis+Mysql+Nginx)
Noobwali
javatomcatlinux
一.jdk和Tomcat1.jdk安装tar-zxv-fjdk-8u231-linux-x64.tar.gz2.配置环境变量vim/etc/profileJAVA_HOME=/java_source/jdk1.8.0_231(这里填写你的路径,后面不变)PATH=JAVAHOME/bin:JAVA_HOME/bin:JAVAHOME/bin:PATHCLASSPATH=JAVAHOME/jre/l
- L8打卡学习笔记
无涯学徒1998
学习笔记支持向量机
本文为365天深度学习训练营中的学习记录博客原作者:K同学啊SVM与集成学习SVMSVM线性模型SVM非线性模型SVM常用参数集成学习随机森林导入数据查看数据信息数据分析随机森林模型预测结果结果分析个人总结SVM超平面:SVM在特征空间中寻找一个能够最大化类别间隔的超平面,称为最大间隔超平面。这个超平面就是将数据集分成不同类别的边界。支持向量:支持向量是离分隔超平面最近的样本点,它们决定了超平面的
- C语言动态分配内存的malloc()、calloc()、realloc()三者区别
Future_yzx
c语言java前端
前言malloc()、calloc()、realloc()都是C语言中的动态内存分配函数,它们的作用都是在堆上分配内存,但它们的行为和用途有所不同。下面详细介绍它们的区别。1.malloc()(MemoryAllocation内存分配)malloc()用于分配一块指定大小的内存区域。分配的内存内容是未初始化的,意味着它的内容是随机的(不确定的)。语法:void*malloc(size_tsize)
- 【学习笔记】昇思25天学习打卡(D14)CV05-SSD目标检测.ipynb
UnseenMe
昇思学习笔记目标检测
SSD目标检测模型简介SSD,全称SingleShotMultiBoxDetector,是WeiLiu在ECCV2016上提出的一种目标检测算法。使用NvidiaTitanX在VOC2007测试集上,SSD对于输入尺寸300x300的网络,达到74.3%mAP(meanAveragePrecision)以及59FPS;对于512x512的网络,达到了76.9%mAP,超越当时最强的FasterRC
- 每日一题洛谷P1420 最长连号c++
wen__xvn
洛谷c++算法数据结构
#includeusingnamespacestd;intmain(){intn;cin>>n;ints[1000]={0};for(inti=0;i>s[i];}intmax=1;intt=1;for(inti=0;imax){max=t;}}else{t=1;}}cout<<max<<endl;return0;}
- Spring Boot与H2数据库:快速搭建内存数据库应用
2501_90323865
数据库springbootoracle个人开发
在现代软件开发中,快速搭建和测试应用程序是提高开发效率的关键环节之一。SpringBoot作为一款强大的Java应用开发框架,结合H2内存数据库,能够帮助开发者迅速构建出功能完善的原型系统。本文将通过一个简单的实例,详细介绍如何在SpringBoot项目中集成H2数据库,并利用其浏览器控制台进行数据操作。一、项目搭建创建SpringBoot项目首先,我们需要创建一个SpringBoot项目。可以通
- 10.片元
无敌最俊朗@
渲染管线unity
**片元(Fragment)**是渲染管线中的一个重要概念,可以理解为“潜在的像素”。用通俗易懂的方式来解释:通俗解释:片元就像候选的颜料点想象你是一个画家,正在画一幅画:片元是候选的颜料点:你有一块画布(屏幕),上面有很多小格子(像素)。你在每个格子上尝试涂上不同的颜色(片元),但最终只有一种颜色会被保留。片元的生成:当你画一个三角形时,画布上会有很多小格子被覆盖。每个被覆盖的小格子都会生成一个
- 躺着敲代码第二天-----聊聊Spring的AOP(面向切面编程)
想躺着敲代码^^
springjava
AOP(Aspectorientedprogramming)什么是AOPAOP(AspectOrientedProgramming)即面向切面编程,AOP是OOP(面向对象编程)的一种延续,二者互补,并不对立。AOP的目的是将横切关注点(如日志记录、事务管理、权限控制、接口限流、接口幂等等)从核心业务逻辑中分离出来,通过动态代理、字节码操作等技术,实现代码的复用和解耦,提高代码的可维护性和可扩展性
- Shell脚本技巧:逐行读取文件与死循环的常用思路
vortex5
前端服务器运维
在日常的Shell脚本编写中,逐行读取文件和死循环是非常常见的两种操作。这篇文章将介绍逐行读取文件和编写死循环的几种常用技巧,并结合具体示例分析它们的优缺点,帮助你在实际脚本开发中灵活运用。一、逐行读取文件的常用思路逐行读取文件在处理配置文件、日志分析、批量任务等场景中十分重要。以下是几种常见的实现方法。使用whileread循环这是最经典的方式之一,适用于精确逐行读取文件的需求。whileIFS
- PD协议(Power Delivery)高效安全解决充电宝给笔记本供电
skywalk8163
软硬件调试电脑笔记本充电
曾经一度想使用充电宝5V升压到交流220V,然后输出给插线板,接笔记本电源供电。后来从网上一看,原来已经有了pd协议。刚开始看到pd,思路一度想到了pdd,后来才知道PD是一种协议:PD协议(PowerDelivery)是一种更为高效和安全的充电解决方案,它支持更高的电压和电流输出,能够满足笔记本电脑等设备的充电需求。与传统的5V升压到220V再供电的方式相比(对,说的就是我,我刚开始就想用传
- Arm64架构的Linux服务器安装jdk8
木枫Free
服务器架构linuxarm运维jdk
一、下载JDK8打开浏览器,访问oracle官网找到适用于自己服务器的arm64架构的JDK8安装包。二、安装JDK8将下载好的JDK压缩包上传到服务器上解压JDK压缩包:tar-zxvfjdk-8uXXX-linux-arm64.tar.gz选择安装目录,我将JDK安装到/usr/local/目录下:mvjdk1.8.0_XXX/usr/local/jdk8三、配置环境变量打开环境变量配置文件:
- Linux 部署 Java 项目:Tomcat、Redis、MySQL 教程
lingllllove
javalinuxtomcat
在Linux服务器上部署Java项目通常需要配置应用服务器(如Tomcat)、数据库(如MySQL)和缓存服务器(如Redis)。本文将详细介绍如何在Linux环境中部署一个Java项目,涵盖Tomcat、Redis和MySQL的安装与配置。一、准备工作在开始之前,确保你拥有以下条件:一台运行Linux的服务器(本文以Ubuntu为例)。具有sudo权限的用户。安装好Java环境(JDK)。安装J
- Windows 下安装 triton 教程
yyywxk
#Python模块有关问题windowstriton
目录背景解决方法方法一:(治标不治本)方法二:(triton-windows)-安装MSVC和WindowsSDK-vcredist安装-whl安装-验证背景triton目前官方只有Linux版本,若未安装,则会出现报错:ModuleNotFoundError:Nomodulenamed'triton'在Windows系统中,如果直接用pipinstalltriton来安装,则会报错:ERROR:
- mysql的单表数据导入到hive数据库中
熏陶
数据库mysqlhive
1、将mysql的数据导出借助dbeaver工具,将单表数据table1格式导出为csv文件2、将csv的后缀名手动改为txt后缀,为了让每行的的字段是以,分隔3、将得到的txt文件上传到hdfs文件系统中4、目标机创建和table1一样的表结构的表,创建过程中要加上这几句ROWFORMATDELIMITEDFIELDSTERMINATEDBY','STOREDASTEXTFILE;如:CREAT
- arm-linux平台、rk3288 SDL移植
雨中来客
arm开发linuxSDL移植
一、所需环境资源1、arm-linux交叉编译器,这里使用的是gcc-linaro-6.3.12、linux交叉编译环境,这里使用的是Ubuntu20.043、sdl2源码https://github.com/libsdl-org/SDL/archive/refs/tags/release-2.30.11.tar.gz二、代码编译1、解压sdl2源码,并且cd到源码目录tar-xvfSDL-rel
- OpenHarmony 5.0.2 Release来了!
MardaWang
版本概述OpenHarmony5.0.2Release版本对标准系统的能力进行持续完善,以快速迭代的方式推出API14,相比5.0.1Release版本,重点做出了如下特性新增或增强:进一步增强ArkUI、图形图像的能力,提供更多组件的高级属性设置,支持更多精致动效;进一步增强Web能力,满足更多应用诉求;针对2in1设备特点,新增一系列窗口管理和控制的能力及窗口生命周期行为管理;新增一批企业定制
- 快速入门使用Redis缓存
阳光宅男dh
进阶学习redis缓存数据库
Redis简介Redis是一个高性能的内存数据库,以key-value方式存储数据,可以作为缓存使用。为什么使用缓存?高并发MySQL的连接数存在瓶颈,连接过大可能导致MySQL宕机解决方法:部署多个MySQL服务,主从复制部署缓存,承担一部分的并发高性能基于内存,内存IO效率远远高于磁盘Redis的特点:性能高(读的速度是110000次/s,写的速度是81000次/s,单机redis支撑万级并发
- 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