- 最新版 !快速掌握 JDK17 + springboot3 + springcloud Alibaba :7、链路追踪 Micrometer Tracing&Zipkin
云上凯歌
springcloudAlibabaspringcloudspring后端
微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位。主要体现在,一个请求可能需要调用很多个服务,而内部服务的调用复杂性,决定了问题难以定位。所以微服务架构中,必须实现分布式链路追踪,去跟进一个请求到底有哪些服务参与,参与的顺序又是怎样的,从而达到每个请求的步骤清晰可见,出了问题,很快定位。分布式
- 《Spring微服务实战》读书笔记
johnny233
读书笔记Spring
福利置顶,PDF版本电子书下载地址:百度网盘,密码:e45d。还是比较习惯中文阅读,因为速度足够快,毕竟我这样的菜逼要看的书籍太多,啃英文不知道得啃到什么时候(读英文文档不是问题,毕竟小硕毕业)。百度下载的这个中译本是迷途书童翻译的,很感谢。但是,这翻译的水平明显有待提高啊,很多地方明显感觉就是机器翻译的结果。Areyoukiddingme?另:本书基于Camden.SR5版本,略显过时。第一章欢
- NLP 中文拼写检测纠正论文 Automatic-Corpus-Generation 代码
后端java
拼写纠正系列NLP中文拼写检测实现思路NLP中文拼写检测纠正算法整理NLP英文拼写算法,如果提升100W倍的性能?NLP中文拼写检测纠正Paperjava实现中英文拼写检查和错误纠正?可我只会写CRUD啊!一个提升英文单词拼写检测性能1000倍的算法?单词拼写纠正-03-leetcodeedit-distance72.力扣编辑距离NLP开源项目nlp-hanzi-similar汉字相似度word-
- SpringBoot实践设计模式———装饰者模式
spring设计装饰者模式
什么是装饰者模式?装饰者模式属于结构型设计模式之一,主要目的是通过包装对象而不是继承来扩展功能。这种模式允许用户动态地为对象添加新的行为而无需修改其源代码。这与继承相比提供了一种更为灵活的方式来扩展功能。装饰者模式的关键组成部分:抽象组件(Component):定义核心业务接口。具体组件(ConcreteComponent):核心业务实现类,实现了抽象组件接口。装饰器(Decorator):持有抽
- Java 8 新特性 Stream
javastream
什么是Stream?Stream(流)是一个来自数据源的元素队列并支持聚合操作元素队列数据是以一系列元素的形式存在的,按照某种顺序排列,形成一个队列。在流的概念中,这些元素通常是连续到达的,可以逐个处理,而不必一次性加载整个数据集到内存中。数据源流的来源。可以是集合,数组,I/Ochannel,产生器generator等。聚合操作对一系列元素执行计算以生成单个汇总值的过程。例如,计算流中所有元素的
- Springboot Redisson 分布式锁、缓存、消息队列、布隆过滤器
空灵宫(Ethereal Palace)
springbootJavajavaspringboot分布式
redisson-spring-boot-starter是Redisson提供的SpringBoot集成包,旨在简化与Redis的交互,包括分布式锁、缓存、消息队列、布隆过滤器等功能的实现。Maven依赖在SpringBoot项目中添加redisson-spring-boot-starter依赖:org.redissonredisson-spring-boot-starter3.22.0核心功能分
- 别再被坑了! JavaScript类型检测的最佳实践
别再被坑了!JavaScript类型检测的最佳实践在JavaScript中,我们经常需要判断一个变量的类型。这个需求在编程中非常常见,因为不同类型的数据会影响到我们的代码逻辑。JavaScript提供了几种方法来检测数据类型,每种方法都有自己的优缺点。Object.prototype.toString.call()这是最万能的方法。它可以准确识别所有的JavaScript内置类型,包括基本类型和复
- 你还在手动操作仓库?这款 CLI 工具让你效率飙升300%!
前言作为一名开发者,我经常会在GitHub和Gitee上fork各种项目。时间一长,这些仓库就会堆积如山,变成了“垃圾仓库”。每次打开代码托管平台,看到那些不再需要的仓库,我的强迫症就会发作。手动一个一个删除这些仓库不仅耗时耗力,还非常枯燥乏味。为了彻底解决这个问题,不如解放双手,开发一个工具,能够快速、批量地删除这些不再需要的仓库。于是,一个全新的开源工具del-repos诞生了!del-rep
- JavaScript 事件循环竟还能这样玩!
前端javascript
JavaScript是一种单线程的编程语言,这意味着它一次只能执行一个任务。为了能够处理异步操作,JavaScript使用了一种称为事件循环(EventLoop)的机制。本文将深入探讨事件循环的工作原理,并展示如何基于这一原理实现一个更为准确的setTimeout、setInterval什么是事件循环?事件循环是JavaScript运行时环境中处理异步操作的核心机制。它允许JavaScript在执
- 网上教务评教管理系统(教学评价系统)
QQ346127357
javawebjavamyeclipse开发语言
技术:Java、JSP等摘要:教学评价系统可以方便的和全面的网上教学资料的收集,为教师和学生提供在线教学评价得分结果,快速采集充分利用评价信息的各个方面,使管理者能够及时了解教育发展情况和教师教学情况,为学校的教师获取支持,很大程度上减轻管理者的工作量。系统的用户可以分为学生、教师和管理员。学生可以在网上选择课程和评分,给老师和教学信息,老师可以检查学生对其教学评价结果和信息,对同行的教学质量,管
- 图论DFS:黑红树
Python_enjoy
C++洛谷题解每周更新栏目深度优先图论算法
我的个人主页{\large\mathsf{{\color{Red}我的个人主页}}}我的个人主页往{\color{Red}{\Huge往}}往期{\color{Green}{\Huge期}}期文{\color{Blue}{\Huge文}}文章{\color{Orange}{\Huge章}}章DFS算法:记忆化搜索DFS算法:全排列问题DFS算法:洛谷B3625迷宫寻路此系列更新频繁,求各位读者点赞
- 在vmware esxi上安装openwrt
openwrtesxi
前面写过一篇在台式机上安装openwrt的文章,最近又有了在VMWwareesxi上安装openwrt的需求。回看了下历史的文章,发现思路虽然给出了,但由于没有给出具体的软件下的链接,所以可能起到的帮助作用不大。本文将在给出安装方法的基础上,在最后给出软件的下载地址:下载资源vmware直接安装的文件格式是vmdk,而openwrt官方给出的是dmg格式。所以我们除了需要下载官网对应的dmg格式的
- Leetcode高频 SQL 50 题(基础版)(一)
LiquoriceG
mysql
一、可回收且低脂的产品表:Products+-------------+---------+|ColumnName|Type|+-------------+---------+|product_id|int||low_fats|enum||recyclable|enum|+-------------+---------+product_id:是该表的主键(具有唯一值的列)。low_fats:
- Spring Boot 整合 Knife4j:打造更优雅的 API 文档
十二同学啊
SpringBootspringboot后端java
在现代Web应用开发中,API文档的重要性不言而喻。清晰、准确、易用的API文档不仅可以方便开发者理解和使用API,还能提高团队协作效率。Knife4j是一个基于Swagger的增强型API文档工具,它可以为SpringBoot项目生成美观、易于交互的API文档,本文将介绍如何在SpringBoot项目中整合Knife4j,并提供详细的代码示例和最佳实践。一、为什么选择Knife4j? Kn
- MyBatis学习笔记
繁星依月
开发技术学习笔记mybatis学习笔记
MyBatis学习笔记MyBatis绪论功能:访问数据库相当于增强版JDBC官网:mybatis–MyBatis3|简介MyBatis环境JDK1.8MySQL5.7/8.0(经典!)maven3.6+IDEAMyBatis前序JDBC、MySQL、Java基础、Maven、JunitMyBatis简介什么是MyBatisMyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映
- 【拒绝算法PUA】3065. 超过阈值的最少操作数 I
BigDark的笔记
#LEETCODE#每日一题算法
系列文章目录【拒绝算法PUA】0x00-位运算【拒绝算法PUA】0x01-区间比较技巧【拒绝算法PUA】0x02-区间合并技巧【拒绝算法PUA】0x03-LeetCode排序类型刷题【拒绝算法PUA】LeetCode每日一题系列刷题汇总-2025年持续刷新中C++刷题技巧总结:[温习C/C++]0x04刷题基础编码技巧文章目录系列文章目录LeetCode3065.超过阈值的最少操作数I链接题目解题
- 后悔呀,自从用了SkyWalking分布式链路追踪,现在睡得越来越香了
Bad_Ape
java编程语言程序人生经验分享架构
本篇文章介绍链路追踪的另外一种解决方案Skywalking,文章目录如下:什么是Skywalking?上一篇文章介绍了分布式链路追踪的一种方式:SpringCloudSleuth+ZipKin,这种方案目前也是有很多企业在用,但是作为程序员要的追逐一些新奇的技术,Skywalking作为后起之秀也是值得大家去学习的。skywalking是一个优秀的国产开源框架,2015年由个人吴晟(华为开发者)开
- 【SpringBoot】用一个常见错误说一下@RequestParam属性
后端springboot
问题复现在开发过程中,我们经常会用到@RequestParam,我们常常会遇到另外一个问题。当需要特别多的请求参数时,我们往往会忽略其中一些参数是否可选。例如存在类似这样的代码:@RequestMapping(path="/hi4",method=RequestMethod.GET)publicStringhi4(@RequestParam("name")Stringname,@RequestPa
- Gateway网关
胡尔摩斯.
后端springcloudjavagateway
GatewayGateway网关是微服务架构中的重要组件,作为所有微服务的统一入口,扮演着“门卫”的角色。它负责处理进入系统的所有请求,并根据预设的规则将请求路由到相应的微服务进行处理。(需要进行服务的注册与发现)官网地址:SpringCloudGatewayhttps://docs.spring.io/spring-cloud-gateway/docs/4.0.4/reference/html/
- Omnissa Secure Email Gateway 2.31 - 电子邮件网关
虚拟化
OmnissaSecureEmailGateway2.31-电子邮件网关OmnissaAccess,formerlyWorkspaceONEAccess请访问原文链接:https://sysin.org/blog/omnissa-secure-email-gateway/查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgOmnissaSecureEmailGateway安全电子邮件
- 职工管理系统c++
LE715
c++开发语言
职工管理系统一.头文件部分职工抽象类worker.h老板类boss.h普通员工类employee.h经理类manager.h职工管理类workerManager.h二.源文件部分老板类boss.cpp普通员工类employee.cpp经理类manager.cpp职工管理类workerManager.cpp职工管理系统.cpp三.系统运行界面职工管理系统职工管理系统可以用来管理公司内所有员工的信息本
- 【mybatis】基本操作:详解Spring通过注解和XML的方式来操作mybatis
m0_74824552
mybatisspringxml
mybatis的常用配置配置数据库连接#驱动类名称spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver#数据库连接的urlspring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_testcharacterEncoding=utf8&useSSL=false#连接数据库的名
- python取列表前3个元素_Python3基础 list pop(含参) 取出列表中的指定索引的元素
weixin_39848097
python取列表前3个元素
Python:3.7.0OS:Ubuntu18.04.1LTSIDE:PyCharm2018.2.4Conda:4.5.11typesetting:Markdowncode"""@Author:行初心@Date:18-9-23@Blog:www.cnblogs.com/xingchuxin@Gitee:gitee.com/zhichengjiu"""defmain():member=['黄帝内经'
- python获取字典第一个元素,从字典中获取第一个元素
CHM单
python获取字典第一个元素
Ihavethefollowingdeclaration:Dictionary>like=newDictionary>();Ineedtogetthefirstelementout,butdonotknowthekeyorvalue.What'sthebestwaytodothis?解决方案EditTosatisfythecommenters.NotethattocallFirsthereisac
- wpa_cli命令使用记录
大大菜鸟一枚
linux服务器运维
wpa_cli可以用于查询当前状态、更改配置、触发事件和请求交互式用户输入。具体来说,它可以显示当前的认证状态、选择的安全模式、dot11和dot1xMIB等,并可以配置一些变量,如EAPOL状态机参数。此外,wpa_cli还可以触发重新关联和IEEE802.1X注销/登录等事件。wpa_cli命令:命令命令缩写描述statusstat显示当前连接的状态信息ping测试指令,看service端是否
- 用java 实现 同意授权给公众号访问其信息。这通常通过将用户重定向到一个由微信提供的授权页面完成。
用心去追梦
java微信开发语言
在Java中实现微信公众号的OAuth2.0网页授权流程,主要涉及构建一个HTTP请求来重定向用户到微信提供的授权页面。以下是一个简单的示例,演示如何创建这个重定向链接并将其发送给客户端浏览器。步骤1:构建授权URL首先,你需要根据微信官方文档构造授权URL。这个URL将包含你的应用ID(appid)、回调地址(redirect_uri)、响应类型(response_type=code)、授权作用
- 用java 实现 Add Two Numbers 两数相加(LeetCode算法)
用心去追梦
算法javaleetcode
LeetCode上的“AddTwoNumbers”问题要求我们实现一个函数,该函数接收两个非空链表作为输入,每个链表表示一个非负整数的逆序表示(即个位在链表头),链表中的每个节点包含一个数字(0-9)。任务是将这两个数相加,并以同样的链表格式返回和。下面是用Java实现这个算法的方法:classListNode{intval;ListNodenext;ListNode(intx){val=x;}}
- LeetCode //SQL - 550. Game Play Analysis IV
Navigator_Z
LeetCodeleetcodesql数据库
550.GamePlayAnalysisIVTable:Activity±-------------±--------+|ColumnName|Type|±-------------±--------+|player_id|int||device_id|int||event_date|date||games_played|int|±-------------±--------+(player_id
- 华为OD机试E卷 - 数大雁(Java & Python& JS & C++ & C )
算法大师
最新华为OD机试华为odpythonjavac语言javascriptc++华为od机考e卷
最新华为OD机试真题目录:点击查看目录华为OD面试真题精选:点击立即查看题目描述一群大雁往南飞,给定一个字符串记录地面上的游客听到的大雁叫声,请给出叫声最少由几只大雁发出。具体的:1.大雁发出的完整叫声为”quack“,因为有多只大雁同一时间嘎嘎作响,所以字符串中可能会混合多个”quack”。2.大雁会依次完整发出”quack”,即字符串中’q’,‘u’,‘a’,‘c’,‘k’这5个字母按顺序完整
- 异步任务与定时任务
雷神乐乐
#SpringBootjavaspringboot异步任务定时任务
一、异步任务基于TaskExecutionAutoConfiguration配置类中,注册的ThreadPoolTaskExecutor线程池对象进行异步任务执行。(一)手动执行异步任务在yml中配置线程池参数spring:task:execution:pool:core-size:5#核心线程数max-size:20#最大线程数queue-capacity:1000#线程池使用的阻塞队列的最大容
- 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