- Java 二叉树非递归遍历核心实现
xiaolingting
算法java二叉树非递归遍历栈
非递归遍历的核心是用栈模拟递归的调用过程,通过手动维护栈来替代系统栈,实现前序、中序和后序遍历。以下是三种遍历的代码实现与关键逻辑分析:一、二叉树遍历1.1、前序遍历(根→左→右)核心逻辑:访问根节点后,先压右子节点再压左子节点(利用栈的LIFO特性)。步骤:根节点入栈。循环弹出栈顶元素并访问。若存在右子节点,入栈;若存在左子节点,入栈。publicListpreorderTraversal(Tr
- C#枚举类型携带额外数据的方法
woshihedayu
c#开发语言
Java里面的枚举类型可以定义很多属性,携带各种数据,然而C#里面的枚举类型只能代表数字,不能在枚举类型里面定义各种属性,导致某些应用场景使用起来不方便,但是可以利用C#里面的Attribute来解决这个问题。例如,我要给以下这个枚举类型添加中文描述publicenumItemType{[Description("武器")]Weapon,[Description("可消耗品")]Consumabl
- 掌握 JSON 到表格转换:全面指南
高效地转换数据格式对于现代数据处理至关重要。JSON(JavaScript对象表示法)因其灵活性而广受欢迎,而CSV或Excel等表格格式则更适用于数据分析和可视化。本文将介绍多种JSON转换为表格格式的方法,帮助您提升数据处理和可视化的效率。理解JSON和表格格式在介绍转换方法之前,先了解JSON和表格格式的基本区别。JSON格式JSON是一种轻量级的、基于文本的格式,易于人类和机器读取和编写。
- 网络空间安全(50)JavaScript基础语法
IT 青年
网安知识库javascript网络空间安全
一、变量声明①var:早期的变量声明方式,函数作用域。②let:块级作用域,推荐在现代JavaScript中使用。③const:块级作用域,用于声明常量,值不可变。varname="Alice";letage=30;constPI=3.14159;二、数据类型①原始类型(PrimitiveTypes):string(字符串)number(数字)boolean(布尔值)nullundefinedsy
- 练习-Java类和对象之对象组合之求圆锥体表面积
小悬风
java开发语言后端
**任务:已知圆锥的母线为15,底面半径为8,求圆锥的表面积。*///请在下面的Begin-End之间按照注释中给出的提示编写正确的代码/**********Begin**********///定义一个圆类,类名为CircleclassCircle{//定义两个量,分别为半径和π值doubler;doublepi=Math.PI;Conecon;//有参构造器publicCircle(double
- java之类的定义和对象的创建
baby的我
java面向对象类
类的基本结构如果一切都是对象,那么是什么决定某一类对象的行为与外观呢?答案时“类”。类是构造对象的模板或蓝图。就像建筑物与设计图纸,通过一份设计图纸,可以构造处建筑物,而Java开发人员在编写代码时,实际上是编写类代码,对象只有程序运行时才存在。当用户创建一个Java程序时,可以通过类声明来定义类。通常,这些类里没有main方法,只有一些属性和方法。一个完整的程序,应该由若干个类组成,其中一般只有
- Eclipse Leshan 使用教程
任玫椒Fleming
EclipseLeshan使用教程leshanJavaLibraryforLWM2M项目地址:https://gitcode.com/gh_mirrors/le/leshan1.项目介绍EclipseLeshan是一个用于开发轻量级M2M(机器对机器)和物联网(IoT)设备管理的开源项目。它基于OMA(OpenMobileAlliance)的LightweightM2M协议,提供了Java库来帮助
- 如何免费获取股票数据,实例代码演示用python、JavaScript 、JAVA等(实时数据、历史数据、MACD、KDJ、BOLL等指标数据)配有股票数据API接口说明文档详解参数说明
无名的小码农
pythonjava股票api股票数据开发语言股票数据接口
在近一至两年期间,股票量化分析逐步成为备受关注的热门议题。对于投身于该领域工作而言,首要步骤便是获取全面且精准的股票数据。无论是实时交易数据、历史交易记录、财务数据,亦或是基本面信息,这些数据均是开展量化分析过程中不可或缺的宝贵资源。我们的核心任务在于从这些数据中提炼出具有价值的信息,从而为投资策略提供坚实有力的指导。在数据探索进程中,我尝试运用了多种方法,涵盖自编网易股票页面爬虫程序、申万行业数
- 《Think in Java》深入理解编程指南
虾仁芝麻卷
本文还有配套的精品资源,点击获取简介:《ThinkinJava》是由BruceEckel编写的Java编程经典教程,为初学者和经验丰富的程序员提供全面的Java语言理解。本书以详尽的解释、丰富的示例和深入的概念分析著称,涵盖了Java基础语法、面向对象编程概念、异常处理、集合框架、泛型、IO流、多线程和网络编程等。同时,书中还强调了在线资源和社区的重要性,提供额外的学习指导和帮助读者更好地应用所学
- Java后端面试场景题汇总
沙滩de流沙
JVM&多线程技术面试
设计参考信息:单个MySQL每秒写入在4000QPS左右,超过这个数字,I/O时延会剧量增长,读的话一般在几千到一万QPS。MySQL单表记录到达了千万级别,查询效率会大大降低,过亿的话,查询会成为问题。Redis单分片的写入瓶颈在2w左右,读瓶颈在10w左右。关于吞吐量、QPS、响应时间:深入理解QPS、TPS、RT和吞吐量的关系与应用_tps和qps的区别和联系-CSDN博客TPS(Trans
- Java解析XML文件解决方案
JKIT沐枫
javaservlet前端
1.DOM解析器特点:将整个XML文档加载到内存中形成树状结构,适合小型XML文件javaimportjavax.xml.parsers.DocumentBuilder;importjavax.xml.parsers.DocumentBuilderFactory;importorg.w3c.dom.Document;importorg.w3c.dom.NodeList;importorg.w3c.
- java 面试题记录
万变不离其宗_8
笔记javaspringboot开发语言
1.Redis的持久化机制RDB和AOF的优缺点分别是什么?对比项RDB(快照持久化)AOF(日志追加持久化)持久化机制定时生成内存数据的二进制压缩快照(全量数据)。记录所有写操作命令(文本格式),重启时重放命令恢复数据。文件格式紧凑的二进制文件(dump.rdb)。文本文件(appendonly.aof),可读性强。优点✅恢复速度快(直接加载二进制文件)。✅文件体积小,适合备份。✅对性能影响较小
- Java中的Apache POI库:Excel操作从未如此简单
墨瑾轩
一起学学Java【一】javaapacheexcel
关注墨瑾轩,带你探索编程的奥秘!超萌技术攻略,轻松晋级编程高手技术宝库已备好,就等你来挖掘订阅墨瑾轩,智趣学习不孤单即刻启航,编程之旅更有趣❓引言嗨,小伙伴们!今天我们要聊的是一个非常实用的Java库——ApachePOI。如果你经常需要处理Excel文件,那么这个库绝对是你的好帮手。ApachePOI可以让你轻松地读取、写入、甚至编辑Excel文件,而且这一切都不需要安装MicrosoftOff
- java上传实现 spring boot +element ui
&波吉&
Springspringspringbootjava
先从elementuiel-upload组件开始介绍。重新上传//这里需要一个点击控件即可,el-button也行关于headers在return里写,这个即可获得headersheaders:{Authorization:"Bearer"+getToken(),},目录1、得到文件上传路径,getUploadPath方法2、FileUploadUtils里的upload方法,返回一个新的文件名3
- java操作html和word生成pdf,可生成目录和表格
云锦の
java功能word目录word表格html转pdf页脚页眉
一:html转pdf通过继承改写ITextRenderer使itextpdf支持html转pdf时添加页脚页眉功能点一:1,通过freemarker读取html模板,将html转为pdf2,支持配置页脚页眉logo3,支持html中直接引入css样式文件4,解决img标签的图片不能写在src中的问题5,支持汉字功能点二:支持检索pdf包含的文字并替换,可做目录定位不足:1,html标签需要严格书写
- java.math.BigDecimal cannot be cast to java.lang.String 报错
ZhangChuChu_9248
java开发语言
“java.math.BigDecimalcannotbecasttojava.lang.String”错误信息表示您正在尝试将BigDecimal对象转换为String。但是,BigDecimal和String是两个不同的类型,它们不能直接相互转换。BigDecimal是Java“math”包中的一个类,用于进行精确的小数运算。它可以处理任意位数的小数,包括小数部分。相比之下,String是Ja
- java.lang.NoSuchMethodError: org.mozilla.javascript.ContextFactory.enterContext()Lorg/mozilla/javasc
程序猿熊跃晖
IDEAKettleIDEAKettle
报错提示:ERROR(version5.4.1.8-209,build1from2016-10-2207.42.42bybuildguy):java.lang.NoSuchMethodError:org.mozilla.javascript.ContextFactory.enterContext()Lorg/mozilla/javascript/Context;pentaho-kettlekett
- Excel生成Sql工具.java
JokerPan12
javaexcelsql
今天分享一个使用excel表格一键生成建表语句sql工具1.前置所需依赖cn.hutoolhutool-all5.1.0org.apache.poipoi-ooxml4.1.2org.projectlomboklombokprovided2.新建Excel文件并设计表结构ps:字段属性值0为非空1为主键3.新建工具类packagecom.ruoyi.generator.util;importcn.
- 【HTML】验证与调试工具
Guiat
HTMLCSSJavaScripthtml前端
个人主页:Guiat归属专栏:HTMLCSSJavaScript文章目录1.HTML验证工具概述1.1验证的重要性1.2常见HTML错误类型2.W3C验证服务2.1W3CMarkupValidationService2.2使用W3C验证器2.3验证结果解读3.浏览器开发者工具3.1ChromeDevTools3.1.1打开ChromeDevTools3.1.2主要功能3.1.3Elements面板
- 【CSS】CSS3进阶
Guiat
HTMLCSSJavaScriptcsscss3前端
个人主页:Guiat归属专栏:HTMLCSSJavaScript文章目录1.CSS基础概念1.1CSS语法结构1.2CSS引入方式1.2.1内联样式1.2.2内部样式表1.2.3外部样式表2.CSS选择器2.1基本选择器2.2组合选择器3.盒模型3.1标准盒模型与IE盒模型3.2margin和padding4.布局技术4.1Flexbox布局4.1.1Flex属性示例4.2Grid布局4.2.1G
- 学习笔记——Vue的组件化开发
Nhuanuary
vue.js学习笔记
文章目录一、什么是组件化开发1.定义2.好处3.组件的基本结构二、普通组件的注册和使用1.局部注册(1)特点(2)步骤(3)使用方式:(4)注意:(5)语法(6)示例代码2.全局注册(1)特点(2)步骤(3)使用方式:(4)注意:(5)语法(6)示例代码一、什么是组件化开发1.定义Vue的组件化开发允许开发者将页面拆分成可重用、独立的组件,每个组件包含自己的HTML、CSS和JavaScript逻
- SpringBoot 3 集成 Sa-Token 实现权限相关功能
韶君
SpringBoot3Sa-Tokenspringboot后端java
1、Sa-Token介绍1.1Sa-Token开发文档:https://sa-token.cc1.2Sa-Token是一个轻量级Java权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权等一系列权限相关问题。1.3功能结构图2、SpringBoot3集成Sa-Token2.1Mavencn.dev33sa-token-spring-boot3-starter1.38
- SpringBoot3整合elasticsearch8
天空飘来五行码
WEB相关elasticsearch
版本SpringBoot==3.0Elasticsearch==8.12.1依赖我使用的org.springframework.bootspring-boot-starter-data-elasticsearch还可以用,但我没用的。1,2一起用会报下面第一个错co.elastic.clientselasticsearch-java8.12.1注意:elasticsearch7.17版本之前使用的
- app前端处理PHP空对象为[]问题
昵称:大漠沙
dartdartjavaphp[]正则
app前端处理PHP空对象为[]问题众所周知,PHP是一门非弱类型的语言,空对象转成json的时候会默认转为[],这让强类型语言,比如JAVA就很受伤,原本定义的一个对象,为空的时候居然传来一个空数组。php大佬又惹不起,只能自己想办法了。解决方案只要我们针对服务返回的数据做个简单的正则过滤就可以了,代码也比较简单,下面是Dart版本的代码:String_handleBracketByPhp(St
- Java Selenium WebDriver 常用方法
疯-子
WebUI自动化(Java版)selenium
一、创建浏览器对象//谷歌为例System.setProperty("webdriver.chrome.driver","src\\drivers\\chromedriver.exe");WebDriverdriver=newChromeDriver();二、设置窗口位置、大小//设置浏览器窗口位置,相对于屏幕左上角(0,0)的位置Pointpoint=newPoint(100,100);driv
- ai说js的instanceof是什么怎么用
2301_78916954
javascriptjavascript开发语言ecmascript
instanceof是一个用于检测对象是否是某个构造函数的实例的操作符(1)检测内置类型对于JavaScript的内置类型,instanceof可以用来检测对象是否是某种内置类型的实例。letarr=[1,2,3];console.log(arrinstanceofArray);//true(2)检测自定义类型instanceof也可以用来检测自定义类型。functionPerson(name){
- Redis 02
Java_半岛铁盒
javaspringeclipsemavenspringcloudintellij-ideamybatis
今天是2025/04/0120:13day16总路线请移步主页Java大纲相关文章今天进行Redis3,4,5个模块的归纳首先是Redis的相关内容概括的思维导图3.持久化机制(深度解析)3.1RDB(快照)核心机制:触发条件:手动触发:SAVE(阻塞主线程)或BGSAVE(后台fork子进程生成快照)。自动触发:根据配置规则(如save9001表示900秒内至少1次修改)。文件生成:生成二进制文
- Redis 01
Java_半岛铁盒
redis数据库缓存
今天是2025/03/3020:57day15总路线请移步主页Java大纲相关文章今天进行Redis1,2个模块的归纳首先是Redis的相关内容概括的思维导图1.核心特性(深度解析)1.1内存存储原理:所有数据存储在内存中,通过异步持久化(RDB/AOF)将数据写入磁盘。优势:读写性能极高(10万+QPS)。支持复杂数据结构直接操作,无需序列化。挑战:内存成本高,需合理设置淘汰策略(如maxmem
- Java基础01
Java_半岛铁盒
java开发语言
今天是2025/03/0914:36day01总路线请移步主页Java大纲相关文章今天进行Java基础前三个模块的归纳首先是Java基础的相关内容概括的思维导图三个模块均非常重要,需系统学习Java基础前三大模块一、基础语法1.1数据类型基本类型整数:byte(1字节)/short(2)/int(4)/long(8)→longnum=100L浮点:float(4)/double(8)→floatf
- JUC 01
Java_半岛铁盒
开发语言javaeclipsespringtomcatjvm
今天是2025/03/2617:01day12总路线请移步主页Java大纲相关文章今天进行JUC1,2个模块的归纳首先是JUC的相关内容概括的思维导图由于内容比较多且重要,个人还整理了一份详细JUC的思维导图,需要的请评论。是xmind文件JUC即Javautilconcurrent,关于Java并发的核心概念和使用一、基础组件1.线程管理核心类与功能ThreadFactory作用:自定义线程的创
- 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