- python实现leetcode_Python爬取 LeetCode 题目及 AC 代码
eternal?
前言最近在刷算法题,想要整理一下做个总结,发现每道题都要复制粘贴题目和解法实在太浪费时间了。本着解放劳动力的思维研究了下LeetCode爬虫,把题目和代码爬取自动生成Markdown文档。我已经把项目提交到了github上了,欢迎大家star、fork。在这里贴的代码为了方便理解,在源码上做了些改动。模拟登陆LeetCdoe页面分析要做一个爬虫,先得了解页面逻辑。如果有现成的接口可以直接调用,获取
- LeetCode_Python(2)_两数相加
惑也
需求给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字0之外,这两个数都不会以0开头。示例:输入:(2->4->3)+(5->6->4)输出:7->0->8原因:342+465=807解决思路获取2个链表,分别进行遍历,通过借位(个十百千万)进
- 模拟卷Leetcode 题解汇总
邂逅模拟卷
#leetcodeleetcode算法
目录【剑指Offer】【简单】【普通】utils做题脚本各种import各种Node其他:PAT乙级-【题目+解答】汇总PAT甲级-【题目+解答】汇总PTA-浙大版《Python程序设计》AC解答汇总GitHub:https://github.com/monijuan/leetcode_python【剑指Offer】【剑指Offer】03.数组中重复的数字【剑指Offer】04.二维数组中的查找【
- 贪心算法及Jump Game系列题详解
从流域到海域
数据结构与算法分析LeetCode刷题总结贪心算法动态规划算法
本博文所有的代码均可在https://github.com/Hongze-Wang/LeetCode_Javahttps://github.com/Hongze-Wang/LeetCode_Python中找到,欢迎star。贪心算法属于比较难的算法,一般用于求解最优解或者极限情况下判断可能性。贪心和动态规划的区别在于,贪心算法的解题过程中会展现出最优子结构,子问题的最优解组合构成了全局的最优解,而
- 测试&测开面试要知道的那些事--算法篇(LeetCode_Python)
小胖虎*
面试算法leetcode面试python
LeetCode.两数之和题目给定一个整数数组nums和一个目标值target在该数组中找出和为目标值的那两个整数,并返回他们的数组下标不能重复利用这个数组中同样的元素。示例:给定nums=[2,7,11,15],target=9因为nums[0]+nums[1]=2+7=9所以返回[0,1]解题思路:创建空字典,将目标值与nums列表中的数值之差存储在字典中,同时与其他数值进行比对。字典中的键(
- LeetCode_Python(11)_盛最多水的容器
惑也
需求给定n个非负整数a1,a2,...,an,每个数代表坐标中的一个点(i,ai)。在坐标内画n条垂直线,垂直线i的两个端点分别为(i,ai)和(i,0)。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且n的值至少为2。图中垂直线代表输入数组[1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为49。示例输入:[1,8
- LeetCode_Python(19)_删除链表的倒数第N个节点
惑也
需求给定一个链表,删除链表的倒数第n个节点,并且返回链表的头结点。示例给定一个链表:1->2->3->4->5n=2当删除了倒数第二个节点后,链表变为1->2->3->5说明给定的n保证是有效的。解决思路已知n是有效的,不用对n进行判断,遍历链表添加到list中;对list长度进行判断,返回不同的情况。参考代码classListNode:def__init__(self,x):self.val=x
- python 字符串查找子串 leetcode_python入门,包含27个leetcode代码
weixin_39663360
python字符串查找子串leetcode
在leetcode学习过程中,发现leetcode(力扣(LeetCode))中,代码没有输入和输出部分,为了更好的理解python语言,将leetcode中的代码进行了补充,由于本人通过刷27个代码,感觉对python语言已理解差不多,因此没有继续。给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。给出两个非空的链表用来表示两个非负
- LeetCode_Python刷题:7.整数反转
Zhu_w
Python编程练习
LeetCode:7.整数反转题目:给出一个32位的有符号整数,你需要将这个整数中每位上的数字反转。示例1:输入:123输出:321示例2:输入:-123输出:-321示例3:输入:120输出:21示例4:输入:8463847412输出:溢出:0输入:7463847412输出:2147483647代码:Num=list(input("输入一个整数:"))whileNum[-1]=='0':#注意这
- LeetCode_Python刷题:9.回文数
Zhu_w
Python编程练习
LeetCode:9.回文数题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例1:输入:121输出:true示例2:输入:-121输出:false示例3:输入:10输出:false代码:defisPalindrome(x):falseFlag=0Num=list(str(x))#不能写成Num=[str(x)]reverseNum=list(Num)
- LeetCode_Python(15)_三数之和
惑也
需求给定一个包含n个整数的数组nums,判断nums中是否存在三个元素a,b,c,使得a+b+c=0?找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。例如:给定数组nums=[-1,0,1,2,-1,-4]输出:[[-1,0,1],[-1,-1,2]]方法一:排序+双指针通常地,遇到似乎无从下手的问题时,不妨尝试去寻找或制造一种规律,排序是常用的手段之一,排序可以让元素之间呈
- Leetcode_Python 48 旋转图像
安静到无声
LeetCodeleetcode数组_二维数组变换
解题思路本题思路就是,先将二维数组左右对调,再沿着反对角线对调。代码classSolution(object):defrotate(self,matrix):""":typematrix:List[List[int]]:rtype:NoneDonotreturnanything,modifymatrixin-placeinstead."""N=len(matrix)#列数==列数foriinran
- Leetcode_Python 566 重塑矩阵
安静到无声
LeetCode数组_二维数组变换leetcode数据结构与算法
解题思路本题主要考查二维数组的遍历,我们首先将二维数据降为一维,在进行行列的遍历赋值。代码classSolution(object):defmatrixReshape(self,nums,r,c):""":typenums:List[List[int]]:typer:int:typec:int:rtype:List[List[int]]"""mask=[[0]*cforiinrange(r)]M=
- Leetcode_Python 54 螺旋矩阵
安静到无声
LeetCode
解题思路以每层圈为单位,遍历矩阵矩阵层数计算方式为:lay_num=(min(width,length)+1)//2每层分为从左到右、从上到下、从右到左、从下到上四个循环注意每一层循环的开始位置和结束位置是解决本问题的关键当某一层只有一行或者一列的时候(有可能都满足,即只有一个元素)就不需要再执行第三个或者第四个和循环,否则会被重复输出。代码classSolution(object):defspi
- Leetcode_Python 59 螺旋矩阵 II
安静到无声
LeetCode
解题思路本题目的思路与54题的思想相似,套用即可。代码classSolution(object):defgenerateMatrix(self,n):""":typen:int:rtype:List[List[int]]"""matrix=[[0]*nfor_inrange(n)]rounds=(n+1)//2t=1wide=high=nforiinrange(rounds):#轮次逐层计算for
- Leetcode_Python 396 旋转函数
安静到无声
LeetCodeleetcode数组_数组的旋转数据结构与算法
解题思路当本题的len(A)1时,我们可以得到递推公式即F(k)=F(k-1)+len(A)*A[len(A)-k]+sum(A)。其中最大的值,即为所求。代码classSolution(object):defmaxRotateFunction(self,A):""":typeA:List[int]:rtype:int"""long=len(A)sum_1=sum(A)print(sum_1)if
- Leetcode_Python 697 数组的度
安静到无声
LeetCode数组_统计数组中元素
思考:本题目主要是找出数组的度,然后根据度对应的数值找到最短的子数列(度相同),以[2,3,4,3,6,7,7]为例。第一步我们就找到数组的度,由题意的得,数组的度就是数组中最高频数字出现的个数。我们可以组成一个字典,键值为nums中的数,我们统计每个数出现的个数{2:1,3:2,4:1,6:1,7:2}。找出数组的度du=2,并反求出数值对应具体集合jihe={3,7}。通过数值集合组成一个空的
- LeetCode_Python(10)_正则表达式匹配
惑也
需求给定一个字符串(s)和一个字符模式(p)。实现支持.和*的正则表达式匹配。.匹配任意单个字符。*匹配零个或多个前面的元素。说明匹配应该覆盖整个字符串(s),而不是部分字符串。s可能为空,且只包含从a-z的小写字母。p可能为空,且只包含从a-z的小写字母,以及字符.和*。示例1输入:s="aa"p="a"输出:false解释:"a"无法匹配"aa"整个字符串。示例2输入:s="aa"p="a"输
- LeetCode_Python(1)_两数之和
惑也
需求给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定nums=[4,11,4,15,4],target=8因为nums[0]+nums[2]=4+4=8,所以返回[0,2]解决方案方法一不重复利用同样的元素,即不能自己加自己,同一个元素也不能使用
- LeetCode_Python(4)_寻找两个有序数组的中位数
惑也
需求给定两个大小为m和n的有序数组nums1和nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m+n))。你可以假设nums1和nums2不会同时为空。示例1:nums1=[1,3]nums2=[2]则中位数是2.0示例2:nums1=[1,2]nums2=[3,4]则中位数是(2+3)/2=2.5解决思路合并2个列表,并排序(升序);如果合并后的列表元素个数为奇
- LeetCode_Python(12)_整数转罗马数字
惑也
需求罗马数字包含以下七种字符:I,V,X,L,C,D和M。罗马字符对应数值I1V5X10L50C100D500M1000例如,罗马数字2写做II,即为两个并列的1。12写做XII,即为X+II。27写做XXVII,即为XX+V+II。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如4不写做IIII,而是IV。数字1在数字5的左边,所表示的数等于大数5减小数1得到的数值4。同样地,
- LeetCode_Python(13)_罗马数字转整数
惑也
需求罗马数字包含以下七种字符:I,V,X,L,C,D和M。罗马字符对应数值I1V5X10L50C100D500M1000例如,罗马数字2写做II,即为两个并列的1。12写做XII,即为X+II。27写做XXVII,即为XX+V+II。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如4不写做IIII,而是IV。数字1在数字5的左边,所表示的数等于大数5减小数1得到的数值4。同样地,
- LeetCode_Python(17)_电话号码的字母组合
惑也
需求给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。数字到字母的映射,与电话按键相同。注意1不对应任何字母。示例输入:"23"输出:["ad","ae","af","bd","be","bf","cd","ce","cf"].说明:尽管上面的答案是按字典序排列的,但是你可以任意选择答案输出的顺序。方法一:遍历上次的组合结果,逐个合并首先判断特殊情况,数字长度为0或数字为空时,直接返回
- LeetCode_Python(7)_整数反转
惑也
需求给出一个32位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入:123输出:321示例2:输入:-123输出:-321示例3:输入:120输出:21注意:假设我们的环境只能存储得下32位的有符号整数,则其数值范围为[−231,231−1]。请根据这个假设,如果反转后整数溢出那么就返回0。解决思路将整数转换为字符串,如果长度为1,则直接返回;通过三元表达式判断,如果字符串首字符
- LeetCode_Python(14)_最长公共前缀
惑也
需求编写一个函数来查找字符串数组中的最长公共前缀。说明所有输入只包含小写字母a-z。如果不存在公共前缀,返回空字符串""。示例1输入:["flower","flow","flight"]输出:"fl"示例2输入:["dog","racecar","car"]输出:""解释:输入不存在公共前缀。解决思路查找数组中最短的元素;对最短元素进行遍历,与数组中元素的组成字母进行对比,直到不相等时,返回当前最
- LeetCode_Python(20)_有效的括号
惑也
需求给定一个只包括'('、')'、'{'、'}'、'['、']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意:空字符串可被认为是有效字符串。示例1输入:"()"输出:true示例2输入:"()[]{}"输出:true示例3输入:"(]"输出:false示例4输入:"([)]"输出:false示例5输入:"{[]}"输出:true
- LeetCode_Python(8)_字符串转换整数
惑也
需求请实现一个函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该
- LeetCode_Python(6)_Z 字形变换
惑也
需求将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z字形排列。比如输入字符串为"LEETCODEISHIRING"行数为3时,排列如下:LCIRETOESIIGEDHN输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。示例1:输入:s="LEETCODEISHIRING",numRows=3输出:"LCIRETOESIIGEDHN"示例2:输入:
- LeetCode_Python(5)_最长回文子串
惑也
需求给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为1000。示例1:输入:"babad"输出:"bab"注意:"aba"也是一个有效答案。示例2:输入:"cbbd"输出:"bb"解决方法:滑动循环回文字符:正读和反读都一样的字符串。当不存在时,返回字符串的最后一个字符;根据字符串的长度,利用滑动窗口,每循环一次减少1位,得到所有的子串,且从最长子串开始,逐个进行反转对比,如果相
- LeetCode_Python(3)_无重复字符的最长子串
惑也
需求给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例1:输入:"abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为3。示例2:输入:"bbbbb"输出:1解释:因为无重复字符的最长子串是"b",所以其长度为1。示例3:输入:"pwwkew"输出:3解释:因为无重复字符的最长子串是"wke",所以其长度为3。请注意,你的答案必须是子串的长度,"pwke
- 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