- Python 中 PIL 构建图片裁剪工具
winfredzhang
pythoncrop
概述这篇博客将为您展示如何使用wxPython和PIL库开发一个图片裁剪工具。本工具能够加载图片,允许用户通过拖拽选择框裁剪图片,并保存裁剪后的结果。以下是完整代码和实现步骤。C:\pythoncode\new\cropimageandsave.py功能特性图片加载:支持加载JPG和PNG格式的图片。动态裁剪:通过鼠标绘制矩形选择框进行裁剪。缩放适配:图片会根据面板大小自动缩放显示。保存裁剪结果:
- Python3.13来了!编程爱好者必看
Python之栈
人工智能python开发语言
Python3.13于近期发布,其中包含大量重要更新。Python作为机器学习、数据科学和人工智能领域使用最广泛的编程语言,一直在不断发展,以满足这些领域日益增长的需求。最新发布的Python3.13提供了多项具有影响力的改进,旨在提高性能和生产力,对于从事ML和AI项目的开发人员来说是一个重要的里程碑。Python在ML和AI领域的主导地位主要归功于它的简单性、广泛的库支持和庞大的社区。然而,随
- python读取路径只能是双左斜杠、双右斜杠、左斜杠,不能是右斜杠吗?
神笔馬良
人工智能
问题描述:python读取路径只能是双左斜杠、双右斜杠、左斜杠,不能是右斜杠吗?问题解答:在Python中,读取文件路径时,可以使用双左斜杠(\),也可以使用双右斜杠(//),或者使用单左斜杠(/)。事实上,Python中的路径处理函数通常会接受和处理这三种形式的路径分隔符。但是,在Windows操作系统中,路径中的分隔符通常是反斜杠(\),而在Linux和Unix系统中通常是正斜杠(/)。因此,
- Python 操作 Elasticsearch 全指南:从连接到数据查询与处理
XMYX-0
pythonelasticsearchjenkins
文章目录Python操作Elasticsearch全指南:从连接到数据查询与处理引言安装`elasticsearch-py`连接到Elasticsearch创建索引插入数据查询数据1.简单查询2.布尔查询更新文档删除文档和索引删除文档删除索引批量插入数据处理分页结果总结Python操作Elasticsearch全指南:从连接到数据查询与处理引言在大数据分析与搜索应用中,Elasticsearch是
- Python(四)——SVG 图坐标轴数字和其他文本设置总结
八年。。
python开发语言笔记
在学术论文中,图像的质量和规范性直接影响文章的专业性和表达效果。尤其是在使用Python绘制SVG图时,图像的字体选择、大小设置、以及整体样式需要符合期刊或会议的要求。这不仅能提升视觉呈现的清晰度,还能增强论文内容的可读性和说服力。因此,合理设置坐标轴字体(如数字使用“TimesNewRoman”、文字使用“宋体”)和调整图像细节是学术制图中不可忽视的重要环节。1.设置全局字体frommatplo
- 【Es】python es操作
小毛驴吃梨子
elasticsearchpython大数据
表因为es是集群所以es_hosts是列表fromelasticsearchimportElasticsearchES_HOSTS=["127.0.0.1:9200"]ES_HTTP_AUTH="******************"#连接Eses=Elasticsearch(hosts=ES_HOSTS,http_auth=ES_HTTP_AUTH,maxsize=60,timeout=30,m
- Python中Cache的使用
爬虫俗手小马达
python开发语言缓存
文章目录一、缓存的基础概念二、基础使用三、进阶使用四、外部缓存工具五、缓存的注意事项一、缓存的基础概念缓存(Cache)是一种在应用程序中提升性能的技术,它通过将一些数据临时存储在快速访问的存储介质(如内存)中,以减少数据的重复计算或重复读取。通常,缓存用于存储一些昂贵计算或IO密集型操作的结果,从而加快程序的执行速度。在Python中,缓存通常用于函数的输出、API请求的结果、数据库查询、文件读
- Python学习:Pandas库使用(二)之读写Excel文件——read_excel()和to_excel()函数及其参数详解
爬虫俗手小马达
python学习pandas
在Python的Pandas库中,读取和写入Excel文件主要使用read_excel和to_excel函数。以下是详细用法和示例:1.读取Excel文件:pd.read_excel()importpandasaspd#读取Excel文件df=pd.read_excel('文件路径.xlsx',sheet_name='Sheet1',header=0,usecols='A:C',skiprows=
- Python学习——装饰器(一):两个简单例子
爬虫俗手小马达
python学习开发语言
例一计时器#创建一个装饰器,用于计算函数执行时间importtimedeftime_this(func):defwrapper(*args,**kwargs):start_time=time.time()result=func(*args,**kwargs)end_time=time.time()execution_time=end_time-start_timeprint(f"Execution
- PyInstaller 打包 exe 文件
cliffordl
python综合python开发语言
PyInstaller是一个第三方库,它能够在Windows、Linux、MacOSX等操作系统下将Python源文件打包。通过对源文件打包,Python程序可以在没有安装Python的环境中运行,也可以作为一个独立文件方便传递和管理。PyInstaller支持Python2.7和Python3.3+。可以在Windows、MacOSX和Linux上使用,但是并不是跨平台的,而是说你要是希望打包成
- Ruby Web开发框架的介绍及示例代码
YurwRuby
ruby前端开发语言
Ruby是一种简洁而强大的编程语言,广泛用于Web开发。在Ruby生态系统中,有几种实用型的Web开发框架,它们提供了丰富的功能和工具,帮助开发者快速构建可靠的Web应用程序。下面将介绍几种常用的RubyWeb开发框架,并提供相应的示例代码。RubyonRails(Rails)RubyonRails,简称Rails,是Ruby最知名的Web开发框架之一。Rails采用了MVC(Model-View
- OpenCV: 深入理解OpenCV中CV_WRAP_AS宏及其作用
湫兮之风
opencvopencv人工智能计算机视觉
在OpenCV中,CV_WRAP_AS是一个宏,主要用于为C++函数或运算符定义别名,以便在生成语言绑定时使用。这对于在不同的编程语言(如Python)中使用OpenCV库时提供更友好的接口非常有用。尽管它在C++代码中不会改变函数的行为,但它在OpenCV的语言绑定系统中起到了重要作用,特别是当OpenCV要为多个语言(如Python)提供接口时。1.CV_WRAP_AS宏的基本用途CV_WRA
- python连接elasticsearch实战(附完整代码)
当初
pythonelasticsearch
python连接elasticsearchfromelasticsearchimportElasticsearchfromelasticsearch.helpersimportscanES_HOSTS=[{'host':'','port':9200,'scheme':'http'}]es=Elasticsearch(hosts=ES_HOSTS,basic_auth=('账号','密码'))#检查
- mongodb清理删除历史数据
程序员
批量清理mongodb历史数据清理程序的原来目前项目组上很多平台上线历史数据积压,导致入库查询数据缓慢,历史数据有些已经归档,进行历史数据清理删除。之前临时写shell脚本,太简陋,重新使用Python进行改造,新增备份功能,和配置文件删除指定字段和时间范围内数据。代码篇#!/usr/local/python3/bin/python3importconfigparser,logging.confi
- Ruby转Go语言:实现高效后端开发
BugTO
rubygolang前端后端
在现代软件开发中,选择合适的编程语言对于构建高效的后端系统至关重要。Ruby和Go语言都是备受开发者青睐的语言之一。然而,随着项目的发展和规模的增长,将Ruby代码迁移到Go语言成为了一个常见的需求。本文将探讨从Ruby迁移到Go语言的过程,并提供一些实用的源代码示例。了解Go语言Go语言是由Google开发的一种静态类型、编译型语言。它具有简洁、高效和并发性强的特点,适合构建高性能的后端系统。在
- Swift语言的函数实现
2501_90183952
包罗万象golang开发语言后端
Swift语言函数实现详解引言Swift是一种强类型、泛型编程的现代编程语言,广泛应用于iOS和macOS开发。函数是Swift编程中的基本构建块之一,通过函数可以将代码进行模块化,实现重用性和可读性。本篇文章将系统地介绍Swift中的函数,包括其定义、参数、返回值、闭包和高阶函数等,实现一些实用的示例,帮助读者更好地理解和掌握Swift的函数特性。一、函数的基本概念函数是执行特定任务的一段代码,
- Python 3.13性能大提升:免费多线程时代来临
敖行客 Allthinker
pythonjava开发语言爬虫
在编程的世界里,Python一直以其简洁、易读和强大的功能而备受青睐。随着技术的不断进步,Python的每一个新版本都带来了新的惊喜和改进。而Python3.13无疑是其中的一颗璀璨明星。在一个数据驱动的世界里,Python已经成为了一种无处不在的编程语言,它的性能和功能的提升始终是开发者们关注的热点。随着大数据、人工智能、云计算等技术的飞速发展,对编程语言性能的要求也在不断提高。在这样的背景下,
- 用goto语句写关机程序
三叶草.
c语言
“goto”语句是一种编程语言中的控制语句。它的主要作用是将程序的执行流程无条件地转移到同一函数内的另一个标记位置。不过,“goto”语句会使程序的控制流程变得复杂混乱,难以理解和维护,所以在很多的编程规范中被谨慎使用。以代码为例:
- 使用Python开发PPT文本提取工具
winfredzhang
pythonpowerpoint提取文字
在日常工作中,我们经常需要从PowerPoint文档中提取文本内容进行处理。本文将详细介绍如何使用Python开发一个带图形界面的PPT文本提取工具,该工具可以轻松地从PPTX文件中提取所有文本内容,并按页码显示。C:\pythoncode\new\GetContentOFPPT.py全部代码importwximportosfrompptximportPresentationclassPPTExt
- Python(二)——设置文件路径:反斜杠 \ 、双反斜杠 \\和正斜杠 /的区别
八年。。
python开发语言学习
在Python中设置文件路径时,不清楚是用双反斜杠\\、反斜杠\还是正斜杠/时,一句话,使用正斜杠/!!!!下面对这三者进行详细介绍及区分:1.双反斜杠\\含义:在编程语言(如Python、C++等)中,反斜杠\是转义字符,用来表示特殊字符(如\n表示换行,\t表示制表符)。为了表示真正的反斜杠,必须使用双反斜杠\\。其实在Python中,第一个\用于转义,告诉Python后面的\是普通的反斜杠字
- Python googletrans库使用
爬虫俗手小马达
python前端
googletrans是一个用于翻译文本的Python库,使用谷歌翻译的API。它可以将文本从一种语言翻译为另一种语言,支持多种语言自动检测。以下是基本的用法示例:安装googletrans库在终端或命令行中执行以下命令安装:pipinstallgoogletrans==4.0.0-rc1使用示例fromgoogletransimportTranslator#初始化翻译器translator=Tr
- python中常用排序操作——sort方法和sorted函数的使用,超详细,内置模板代码!!!
盲敲代码的阿豪
python实用知识点pythonsortedsort排序
文章目录前言1、sort()方法的使用1.1基础操作1.2操作进阶(自定义排序的对象)2、sorted()函数的使用2.1基础操作2.2操作进行(自定义排序的对象)3、扩展:排序案例模板代码前言在Python中,排序的方法有多种,其中最常用的是使用内置的sort()方法和sorted()函数,接下来我将通过各种案例带领大家轻松学会这两种方法,同时还会扩展一些实用的排序案例模板代码。1、sort()
- Ruby语言的软件开发工具
2501_90183952
包罗万象golang开发语言后端
Ruby语言的软件开发工具概述引言Ruby是一种高效、灵活的动态编程语言,因其简洁的语法和强大的功能而受到开发者的欢迎。在软件开发过程中,使用合适的开发工具可以大幅提高工作效率,提升代码质量。本文将详细介绍一些常用的Ruby开发工具,从代码编辑器到版本控制,再到测试工具,深入探讨它们的功能及使用方法。1.Ruby语言简介Ruby语言由松本行弘(YukihiroMatsumoto)于1995年首次发
- 成功解决error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No su
哎呦,帅小伙哦
安装
安装了python2.7,第一次执行时报错:errorwhileloadingsharedlibraries:libpython2.7.so.1.0:cannotopensharedobjectfile:Nosuchfileordirectory解决方法如下:1.编辑vi/etc/ld.so.conf如果是非root权限帐号登录,使用sudovi/etc/ld.so.conf添加上python2.
- python爬虫——pandas的简单使用
张謹礧
python爬虫+可视化python网络爬虫pythonpandas爬虫
pandas作为爬虫中最重要的包之一,我们要想学好爬虫,就必须要深入了解pandas直接上代码importpandasaspdimportnumpyasnpdata=pd.DataFrame(np.arange(16).reshape((4,4)),index=['a','b','c','d'],#如果不写列索引默认为0,1,2,3columns=['a','b','c','d'])print(d
- Redis实战之Jedis使用技巧详解
小马不敲代码
实战redis缓存
一、前言基于redis开放的通信协议,大神们纷纷开发了各种语言的redis客户端,有c、c++、java、python、php、nodeJs等等开发语言的客户端,准确来说其实这些客户端都是基于redis命令做了一层封装,然后打包成工具以便大家更佳方便的操作redis,以Java项目为例,使用最广的就是以下三种客户端:JedisLettuceRedisson二、JedisJedis是老牌的Redis
- python venv文件夹_Python虚拟环境Venv
weixin_39640911
pythonvenv文件夹
当你的项目比较复杂,对模块版本要求不一时,不需要安装多个Python,只需要配置虚拟环境即可。提起虚拟环境,很多人都会想到Virtualenv,实际上从Python3.3版本开始内置了Venv模块用以建立轻量级的虚拟环境。Venv的用法和机制和Virtualenv非常相似,当你的项目只需要Python3.4或以上版本时,Venv完全可以替代Virtualenv。我这里的演示环境为Win10,使用的
- python selenium安装步骤_Python:Selenium+Webdriver安装
weixin_39619893
pythonselenium安装步骤
本人小白一枚,今天在使用selenium+webdriver的时候遇到了一个小问题:WebDriverException:'chromedriver'executableneedstobeinPATH.Pleaseseehttps://sites.google.com/a/chromium.org/chromedriver/home在debug过程中,也去baidu上查询了,很多说法,但是有些是行
- python selenium canvas_selenium webdriver 实现Canvas画布自动化测试
我不勇敢
pythonseleniumcanvas
https://blog.csdn.net/xiaoguanyusb/article/details/80324210由借鉴意义,转过来canvas是一个画布,定位元素时只能定位到画布上,如下乳所示,网页上有一张类似于下图的eChart报表图片。selenium的基本定位方式只能定位到该画布上,画布上的子元素通过selenium的基础定位方式是定位不到的,此时就需要使用selenium的js注入的
- 深度学习理论基础(七)Transformer编码器和解码器
小仇学长
深度学习深度学习transformer人工智能编码器解码器
学习目录:深度学习理论基础(一)Python及Torch基础篇深度学习理论基础(二)深度神经网络DNN深度学习理论基础(三)封装数据集及手写数字识别深度学习理论基础(四)Parser命令行参数模块深度学习理论基础(五)卷积神经网络CNN深度学习理论基础(六)Transformer多头自注意力机制深度学习理论基础(七)Transformer编码器和解码器本文目录学习目录:前述:Transformer
- 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