- Janino 不思进取了?Java 动态编译 的新神器 Liquor v1.3.10 发布
组合缺一
SolonJavaFrameworkjava开发语言solonliquor动态编译器
Liquor是一个开源的轻量级Java动态编译器(零依赖,40KB),基于javac构建,可在运行时编译Java(支持java8到java23语法)字符串代码片段、类、方法等。源码地址:https://gitee.com/noear/liquor基础编译特性:可以单个类编译可以多个类同时编译可以增量编译增值特性:java表达式引擎java脚本引擎(支持java8到java23语法)本次更新添加Sc
- 文件上传绕过
clown_YZ
网络安全
1.准备upload-labs靶场(此篇文章仅针对pass-20)2.打开pass-20并查看上传代码3.对上传代码进行分析$is_upload=false;$msg=null;if(!empty($_FILES['upload_file'])){//检查MIME$allow_type=array('image/jpeg','image/png','image/gif');if(!in_array
- CVPR‘24 | 百度开源DETRs在实时目标检测中胜过YOLOs
3D视觉工坊
3D视觉从入门到精通百度目标检测人工智能计算机视觉
点击下方卡片,关注「3D视觉工坊」公众号选择星标,干货第一时间送达来源:3D视觉工坊添加小助理:dddvision,备注:目标检测,拉你入群。文末附行业细分群论文题目:DETRsBeatYOLOsonReal-timeObjectDetection作者:WenyuLv,YianZhao等作者机构:BaiduInc.论文链接:https://arxiv.org/pdf/2304.08069.pdf代
- 栈(Stack)教学资料
羊儿~
python开发语言数据结构线性回归
目录1.栈的基本概念2.栈的操作3.栈的实现4.C++实现栈1.使用C++STL实现栈2.手动实现栈(基于数组)5.栈的复杂度分析6.栈的扩展7.练习题练习1.练习2.练习3.8.总结1.栈的基本概念栈(Stack)是一种常见的数据结构,它遵循后进先出(LIFO,LastInFirstOut)的原则。这意味着最后进入栈的元素会最先被取出。栈的操作主要发生在栈的顶部。2.栈的操作栈的基本操作包括:P
- 2025 年微信小程序毕业设计大全,400 道微信小程序毕业设计题目推荐
Java徐师兄
小程序毕业设计Java大学生实战项目微信小程序课程设计小程序毕业设计题目大全小程序毕业设计推荐
博主介绍:✌Java徐师兄、7年大厂程序员经历。全网粉丝13w+、csdn博客专家、掘金/华为云等平台优质作者、专注于Java技术领域和毕业项目实战✌文末获取源码联系精彩专栏推荐订阅不然下次找不到哟2022-2024年最全的计算机软件毕业设计选题大全:1000个热门选题推荐✅Java项目精品实战案例《100套》Java微信小程序项目实战《100套》感兴趣的可以先收藏起来,还有大家在毕设选题,项目以
- 如何提高网站在百度中的权重?
网硕互联的小客服
安全windowslinux运维服务器
要提高网站在百度搜索引擎中的权重,您可以考虑以下方法来优化网站:###提高网站在百度中的权重方法:1.**优化网站内容**:-提供高质量、有价值的内容,确保内容原创、相关性强,能够吸引用户访问并提供有用信息。2.**关键词优化**:-在网站内容中合理使用关键词,包括在标题、META标签、内容中等位置使用关键词,但避免过度堆砌关键词。3.**网站结构优化**:-确保网站结构清晰、易于导航,有良好的内
- CentOS7 源码安装python3
Jerion929
centoslinuxpython
一、安装依赖包首先,确保系统中安装了编译Python所需的依赖包。可以通过以下命令安装:yumgroupinstall-y"DevelopmentTools"#CentOS8用此命令yuminstall-y\openssl-devel\bzip2-devel\libffi-devel\zlib-devel\readline-devel\sqlite-devel\wget\gcc"Developme
- JAVA数组笔记
@未来可期
计算机java开发语言
数组1.定义:存放相同数据类型的集合2.创建数组的两种方式静态初始化:int[]arr={1,2,3,4,5};动态初始化:int[]arr=newint[]{1,2,3,4,5};需要注意的是,在经过编译后,编译器会自动将静态初始化转变为动态初始化。3,数组的访问和长度在JAVA中,取得数组的长度只需要数组名.length即可取得某个数组元素则需要arr[index]数组下标为0~length-
- CentOS 7 系统为 python3 安装 sqlite3
中兔西维亚
pythonLinuxcentossqlite服务器
故事背景pythontest2.pyTraceback(mostrecentcalllast):File"test2.py",line4,inimportsqlite3File"/home/dongxw/usr/lib/python3.6/sqlite3/__init__.py",line23,infromsqlite3.dbapi2import*File"/home/dongxw/usr/lib
- c#l联合halcon3D程序
圣诞老人实习生
c#计算机视觉
可以读取halcon3d的om3格式,以及比较通用的ply格式disptext函数报错,所以字都去掉了,各位看官凑合看吧接下来准备看下3D匹配以及无序抓取
- helm部署jenkins及使用pipeline流水线
意海还念か
devopskubernetes容器云原生
helm部署jenkins及使用pipeline流水线1.安装helm略,请参考本专栏helm文档2.创建存储类storageClass请参考《helm搭建NFS的StorageClass》,本专栏可以查看到3.helm添加jenkins官方仓库#helmrepoaddjenkinscihttps://charts.jenkins.io#helmrepoupdate4.helm去pull下载jen
- python输出值保留两位小数
Xi Zi
numpy
可以使用python的格式化字符串功能来输出保留两位小数的值。例如:value=3.1415926print(f'{value:.2f}')这将会输出3.14。也可以使用format()函数来输出保留两位小数的值,例如:value=3.1415926print('{:.2f}'.format(value))这也会输出3.14。还有一种方法是使用Python的内置函数round(),例如:value
- NoSQL数据库介绍与分类
码农老起
nosql数据库
目录一.NoSQL数据库的定义及其特点二.NoSQL的四种主要类型2.1文档型数据库(Document-BasedDatabase)2.2键值型数据库(Key-ValueStore)2.3列族型数据库(Column-FamilyStore)2.4图数据库(GraphDatabase)三.主要的NoSQL数据库3.1MongoDB3.2Redis3.3Cassandra3.4Neo4j四.使用NoS
- 算法-队列-买票需要的时间
程序员南飞
算法数据结构java职场和发展leetcode
力扣题目:2073.买票需要的时间-力扣(LeetCode)有n个人前来排队买票,其中第0人站在队伍最前方,第(n-1)人站在队伍最后方。给你一个下标从0开始的整数数组tickets,数组长度为n,其中第i人想要购买的票数为tickets[i]。每个人买票都需要用掉恰好1秒。一个人一次只能买一张票,如果需要购买更多票,他必须走到队尾重新排队(瞬间发生,不计时间)。如果一个人没有剩下需要买的票,那他
- CPP集群聊天服务器开发实践(七):Github上传项目
杨枝甘露小码
CPP集群聊天服务器开发服务器github
github链接:GitHub-arduino-ctrl/ClusterServer:基于json+muduo+mysql+nginx+redis的集群服务器与客户端通信源码步骤如下:1.github新建代码仓库,复制url2.gitclonehttps://github.com/arduino-ctrl/ClusterServer.git3.将项目文件移动到ClusterServer文件夹里面m
- CPP集群聊天服务器开发实践(一):用户注册与登录
杨枝甘露小码
CPP集群聊天服务器开发服务器c++数据库单例模式
目录1客户端用户注册与登录1.1主要思想1.2网络层1.3业务层1.4数据层1.5测试结果1客户端用户注册与登录1.1主要思想实现网络层、业务层、数据层的解耦,提高系统的可维护性。网络层:主要实现对客户端连接、客户端读写请求的捕获与回调,将其分发到多个线程中执行。业务层:主要实现客户端读写请求回调的具体操作,当前阶段主要包含:登录业务、注册业务、用户异常退出业务数据层:主要实现数据库中表的CUAD
- #Java笔记 #程序实现:数组的操作——创建、插入、裁剪、扩展、翻转、排序
Mr_yuanh
Java初学笔记java
刚开始学JAVA,从笔记做起!program1数组的操作目的书上说,数组[...]的长度一经初始化就不能改变;但是对数组的一些操作(插入、裁剪、扩展等)又要求改变数组的长度。《第一行代码JAVA》一书的4.3继承案例中讲道:“数组的缺陷就在于长度固定,而这个问题的解决可以利用第3章的链表解决……”(p220)于是,在对继承的下一步学习之前,我先用链表的方法来尝试解决。作为自己的笔记,也请诸君不吝赐
- Python语言保留两位小数常用的方法!
老男孩IT教育
网络安全
很多小伙伴在刚学习Python的时候,可能会遇到需要对数据进行格式化输出的需求,其中最常见的的要求就是保留X位小数,今天本篇文章将为大家介绍一下Python数据格式化输出的方法,以下是详细的内容:1、使用字符串格式化大部分语言都可以使用字符串格式化的方法来实现保留两位小数的效果,python也不例外:a=12.345print("%.2f"%a)#%代表格式化输出,.2代表小数点后保留两位,f代表
- 智能化工具软件在教育领域的革命性应用:InsCode AI IDE引领编程教育新时代
InsCode AI IDE
inscode人工智能ide
智能化工具软件在教育领域的革命性应用:InsCodeAIIDE引领编程教育新时代最新接入DeepSeek-V3模型,点击下载最新版本InsCodeAIIDE引言随着信息技术的飞速发展,编程技能已经成为现代社会不可或缺的一部分。无论是计算机科学专业的学生,还是希望掌握编程技能以提升就业竞争力的职场人士,编程教育的重要性日益凸显。然而,对于许多初学者来说,编程学习往往充满了挑战和困惑。如何让编程变得更
- JAVA从零开始:数组
heiheitong
java数据结构开发语言
目录数组1.数组的基本概念2.数组的声明与创建3.数组的使用for-each循环:数组在方法中的使用:Arrays类中的常用方法:4.多维数组5.稀疏数组数组1.数组的基本概念数组是一种数据结构,是同一类型数据的有序集合。每一个数据称作一个数组元素,每个数组元素可以通过一个整型下标来访问它们。2.数组的声明与创建首先必须声明数组变量,才能在程序中使用数组。java中有两种方法声明数组变量: int
- 深入解析 NoSQL 数据库的分类与特点
一休哥助手
数据库数据库nosql
目录NoSQL数据库概述NoSQL数据库的主要分类2.1键值存储2.2文档存储2.3列族存储2.4图数据库NoSQL数据库的特点
- AI大模型学习之白话笔记(一)-- GPT和LLM
Langchain
人工智能学习笔记langchainpython机器人大模型
前言2022年底第一次听说chatGPT,从最初的对话,到如今的文生视频Sora,带来的效果,越来越超出我们的想象。在2023年,我尝试去了解GPT可以干什么,有什么作用,该怎么用,不过变化太快,最终也没有找到一个好的方式干进去。为什么变化这么快,说到底,是AI大模型带来的巨变。现在很多大厂都在降薪裁员,也有不少公司在AllinAI,我们都有一个预感,要变天了。你想想,如果有一天,一款游戏的所有美
- CentOS7安装Python3.9(已装python2.6)
Arvin627
pythonlinux开发语言
Python下载地址:Indexof/ftp/python/下载并解压#安装wgetyum-yinstallwget#下载wgethttps://www.python.org/ftp/python/3.9.0/Python-3.9.0.tgz#解压tarzxvfPython-3.9.0.tgz#切换目录cdPython-3.9.0编译并安装#编译./configure--prefix=/usr/l
- CE339 “Pacman” video game
后端
CE339Assignment2:“Pacman”videogameAssignmentobjectivesThisdocumentspecifiesthesecondcourseworkassignmenttobesubmittedbystudentstakingCE339.Thisassignmentismorechallengingthanthefirstoneanditismeanttop
- YashanDB表介绍
数据库
本文内容来自YashanDB官网,原文内容请见https://doc.yashandb.com/yashandb/23.3/zh/%E6%A6%82%E5%BF%B5%...在关系型数据库中一个表就是一个关系(Relation),一个关系数据库可以包含多个表。表是一种按行、列排列的具有相关信息的逻辑结构,是关系数据库中组织数据的基本单元。表的元素列数据库中表包含若干个列(或字段),列表示关系模型的
- 【机器学习】半监督和无监督极限学习机SS-US-ELM附Matlab代码
默默科研仔
粉丝福利机器学习人工智能
标题:【机器学习】半监督和无监督极限学习机SS-US-ELM附Matlab代码一、引言1.1研究背景和意义概述研究的背景以及该研究在领域内的重要性。1.2研究现状分析当前领域的研究进展和存在的问题。二、极限学习机(ELM)基本原理2.1ELM的基本模型描述ELM的基本模型结构和工作原理。2.2ELM的学习过程介绍ELM的学习算法和训练过程。三、半监督极限学习机(SS-ELM)3.1SS-ELM的提
- 2025私有化部署工具推荐:企业数据安全的最佳选择
mariadblinux程序员
2025年项目管理软件私有化部署全解析:数据安全与效率的终极平衡术从成本控制到合规管理,一文讲透企业为何必须拥有“专属数字化引擎”[]()【热点引入:数据主权时代,私有化部署成刚需】2025年,全球数据泄露事件同比增长42%,。与此同时,欧盟《数字主权法案》、中国《数据安全法》等法规的落地,将数据合规门槛提升至新高度。在这一背景下,项目管理软件私有化部署的搜索量同比激增183%。企业不再满足于“租
- CVE-2024-34527 D-Link DSL-3782命令注入漏洞复现_dsl-3782_a1_eu_1(1)
2401_84009698
程序员嵌入式
一、漏洞描述CVE-2022-34527D-LinkDSL-3782v1.03及以下版本被发现包含通过函数byte_4C0160的命令注入漏洞,根据已知公开在cfg_manger文件的代码sub_474c78函数中,byte_4C0160作为system的参数执行。固件地址:https://media.dlink.eu/support/products/dsl/dsl-3782/driver_so
- Redis:深入理解阻塞列表弹出与消息发布订阅机制_brpop原理
高级工程师2024
2024年程序员学习redisbootstrap数据库
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶
- 307 跳转 getshell
饮长安千年月
WEB安全网络安全网络安全
307跳转getshell前言没事网上乱翻阅,看到了p神的一个文章,通过307去getshell,说实话,真的是觉得思路很妙,特别是利用的过程,这里属实是学习了。怎么说心里面的感觉呢,就是关关难过,但是关关过前面是用的靶场环境,然后因为一直要开启的原因,后面自己搭建了一个环境搭建首先开启docker的api下面会讲的,就不说了首先我们可以自己搭建环境,需要开启docker的api接口然后安装min
- 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