- vue2 中 watch 监听属性
Hopebearer_
Vue2vue.jsjavascript前端vue2前端框架
文章目录vue2中watch监听属性1.简介2.基本语法1.函数式写法2.对象式写法3.示例1.基础用法2.深度监听对象属性3.立即执行watcher4.性能优化5.实际应用场景1.数据变化时执行异步操作2.复杂计算和数据同步3.监听对象或数组的变化4.执行副作用操作5.表单验证6.数据缓存和更新7.与第三方库集成8.路由变化监听6.总结vue2中watch监听属性1.简介watch是Vue2中的
- 在Vue中如何高效管理组件状态?
几何心凉
前端小常识vue.js前端javascript
在Vue中如何高效管理组件状态?文章目录在Vue中如何高效管理组件状态?1.引言2.局部状态管理2.1组件内部的data2.2计算属性与Watcher3.父子组件状态传递3.1通过Props与$emit3.2双向绑定(v-model)4.全局状态管理4.1使用Vuex4.2使用Pinia5.组合式API中的响应式状态管理6.最佳实践7.总结1.引言在现代前端开发中,随着应用复杂度的不断提升,组件状
- Spark数据倾斜的问题
冰火同学
Sparkspark大数据分布式
Spark数据倾斜业务背景Spark数据倾斜表现Spark的数据倾斜,包括SparkStreaming和SparkSQL,表现主要有下面几种:1、Excutorlost,OOM,Shuffle过程出错2、DriverOOM3、单个Excutor执行器一直在运行,整体任务卡在某个阶段不能结束4、正常运行的任务突然失败数据倾斜产生的原因以Spark使用场景为例,我们再做数据计算的时候会涉及类似coun
- Golang实现一个事务型内存数据库
qingwave
Code数据库golangredis
内存数据库经我们经常用到,例如Redis,那么如何从零实现一个内存数据库呢,本文旨在介绍如何使用Golang编写一个KV内存数据库MossDB。特性MossDB是一个纯Golang编写、可嵌入的、键值型内存数据库,包含以下特性可持久化,类似RedisAOF(AppendonlyLog)支持事务支持近实时的TTL(TimetoLive),可以实现毫秒级的过期删除前缀搜索Watch接口,可以监听某个键
- uniapp uview u-textarea maxlength无效问题
尤小白
uview组件库uni-app前端
watch:{'dataModel.question':{handler(val){if(val.length>=200){this.dataModel.question=val.substr(0,200)}},immediate:true,deep:true,},},
- Java开发高级工程师面试,etcd:一款比Redis更骚的分布式锁的实现方式
m0_60732427
程序员面试java后端
Watch机制支持Watch某个固定的key,也支持Watch一个范围(前缀机制)。当被Watch的key或范围发生变化,客户端将收到通知;在实现分布式锁时,如果抢锁失败,可通过Prefix机制返回的Key-Value列表获得Revision比自己小且相差最小的key(称为pre-key),对pre-key进行监听,因为只有它释放锁,自己才能获得锁,如果Watch到pre-key的DELETE事件
- qt中常见的类
kamisama_zhu
qt开发语言
Qt常见类的继承关系图以下是Qt框架中常见类的继承关系及其功能简述。QObject├──QCoreApplication│├──QGuiApplication││└──QApplication│││├──QTimer│├──QThread│├──QEventLoop│└──QFileSystemWatcher│├──QPaintDevice│└──QWidget│├──QMainWindow│├─
- antd Form 监听数据变化的2种方式比较。onValuesChange vs Form.useWatch
这个昵称也不能用吗?
前端javascript开发语言
1、onValuesChangeconstonValuesChange=(changedValue:any)=>{console.log('changedValues',changedValue);//此处只会展示,form里发生变更的属性};2、Form.useWatch此方式类似于使用useState包裹的数据。是可以实时更新的。参考官网使用方式constlanguage=Form.useWa
- Transformer 工作原理图文详解和实践:在生成式对话系统中的核心技术剖析
AI天才研究院
ChatGPT计算科学神经计算深度学习神经网络大数据人工智能大型语言模型AIAGILLMJavaPython架构设计AgentRPA
https://www.youtube.com/watch?v=wjZofJX0v4M&t=33sTransformer在生成式对话系统中的核心技术剖析作者:禅与计算机程序设计艺术文章目录Transformer在生成式对话系统中的核心技术剖析1.背景介绍2.核心概念与联系2.1生成式对话系统2.2Transformer模型3.核心算法原理和具体操作步骤3.1Transformer编码器3.2Tra
- Vue3+ts实现一个颜色选择器(可以自定义)
伊泽瑞尔.
前端开发实践vue.jsjavascript前端
Vue3+ts实现一个颜色选择器最近需求需要用到颜色选择器,但是选用的ant-design-vue种并没有颜色选择器这个组件,所以就想着自己实现以下效果图vue代码//ColorPicker.vueHEX-->RGB清空确认//ColorPicker.vueimport{ref,reactive,computed,nextTick,onMounted,watch}from'vue'import{r
- macOS 版本对应的 Xcode 版本,以及 Xcode 历史版本下载
dr李四维
笔记macosxcodeideappleXcode下载
注:当前页面的所有Xcode下载链接均为苹果官方下载链接,点击将直接转至苹果官网下载。Xcode版本Xcode发布时间对应macOS版本macOSSDKsiOSSDKswatchOSSDKstvOSSDKs下载Xcode发布日志Xcode15.413May2024macOS14.0+14.5(23F73)17.5(21F77)10.5(21T569)17.5(21L566)下载Xcode发布日志X
- ZooKeeper的初识(Zookeeper基本知识,ZooKeeper shell,ZooKeeper数据模型 ,ZooKeeper Watcher 监听机制,ZooKeeper选举机制)
kismetG
AzkabanZookeeper基本知识ZooKeepershellZooKeeper数据模型ZooKeeperWatcher监听机制ZooKeeper选举机制
Zookeeper基本知识Zookeeper集群搭建Zookeeper集群搭建指的是ZooKeeper分布式模式安装。通常由2n+1台servers组成。这是因为为了保证Leader选举(基于Paxos算法的实现)能过得到多数的支持,所以ZooKeeper集群的数量一般为奇数。Zookeeper运行需要java环境,所以需要提前安装jdk。对于安装leader+follower模式的集群,大致过程
- Vue3中 watch监听方式 (学习笔记)
小陆不会敲代码
Vue学习笔记vue.js
文章目录前言一、watch监听器二、watch监听的几种方式方式1:监视ref定义的基本数据类型方式2:监视ref定义的【对象类型】方式3:监视reactive定义的【对象类型】数据方式4:监视ref或reactive定义的【对象类型】数据中的某个属性总结前言Vue3监听器一、watch监听器作用:监视数据的变化。二、watch监听的几种方式方式1:监视ref定义的基本数据类型情况一:监视【ref
- ZooKeeper 的 Watch 机制是什么?
Shockang
大数据技术体系大数据zookeeper
前言本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!本专栏目录结构和参考文献请见1000个问题搞定大数据技术体系正文Watch机制的简介ZooKeeper提供了分布式数据发布/订阅功能,一个典型的发布/订阅模型系统定义了一种一对多的订阅关系,能让多个订阅者同时监听某一个主题对象,当这个主题对象自身状态变化时,会通知所有订
- Zookeeper 的 Node(Znode) 是什么?Zookeeper 监听机制的特点是什么?
忍者算法
zookeeper分布式云原生
Zookeeper提供了一种发布-订阅(Pub-Sub)机制,不过它更常被称为Watch机制。核心思想是:客户端可以对某个Zookeeper节点(Node)设置Watch,当这个节点发生变化时,Zookeeper会主动通知客户端。Zookeeper的Node(Znode)是什么?在Zookeeper里,所有数据都是以树状结构存储的,每一个数据单元叫做Znode(ZookeeperNode)。你可以
- 2018 react 大会_React Conf 2018的经验教训
cumichun6193
javajavascriptpython编程语言vueViewUI
2018react大会byYangshunTay阳顺泰ReactConf2018的经验教训(LessonsLearnedatReactConf2018)IwasfortunatetohaveattendedReactConf2018thankstomymanagers—itwasanawesomeevent.IhavebeenwatchingpastReactConfvideosonlineand
- vue基本功
码林鼠
vue.js
watchEffect和watchwatchEffect默认immdiate是true,而且自动收集依赖watch需要手动写依赖,immdiate默认是falsetoRef和toRefstoRef:复制reactive里的单个属性并转成reftoRefs:复制reactive里的所有属性并转成refvue3中使用vueximport{useStore}from‘vuex’;通过useStore获取
- vue计算属性源码解读
新茶十九
#vue3学习路程vue.js前端javascript
在Vue.js中,计算属性是一个非常实用的特性,它允许你根据其他数据动态计算出新的值,并且会缓存计算结果,只有当依赖的数据发生变化时才会重新计算。下面我们来深入解读Vue计算属性的源码实现。整体思路Vue的计算属性实现主要涉及到以下几个关键步骤:初始化计算属性:在Vue实例初始化过程中,对计算属性进行配置和初始化。创建计算属性的watcher:为每个计算属性创建一个Watcher实例,用于监听依赖
- 查看归档日志及rman备份文件
大叶梧桐
LINUX归档日志man备份
[root@his1/]#ls----查看**/**根目录下的文件archivebootdevhomelib64mediamntoptrmansbinsrvtmpusrbincgroupetcliblost+foundmiscnetprocrootselinuxsysu01var[root@his1/]#cdarchive/------进入archive/[root@his1archive]#ls
- 基于springboot+ollama实现大模型接入项目的小白笔记
河禾合和
springboot笔记后端llama
org.springframework.ai无法被maven加载的问题问题原因:阿里镜像没有这个库共用库中只保存了0.8.1的测试版本解决方法:参考了这个视频https://www.youtube.com/watch?v=dffEF9ORVUg学习视频中方法使用springinitializr这个工具进行项目的生成具体参数如下图在右边依赖中搜索ollama加载ai依赖,以及springweb依赖,
- 自己的网页加一个搜索框,调用deepseek的API
Lkkkkkkkcy
javavue
一切源于一个学习黑马程序员视频的突发奇想在网页悬浮一个搜索按钮,点击可以实现调用deepseek文本模型回答你的问题前端实现前端使用vue实现的首先是整体页面:AIWidget.vue搜索{{item}}暂无搜索结果import{ref,watch}from"vue";import{Search}from"@element-plus/icons-vue";import{ElMessage}from
- vue3与react、 react hooks
caihuayuan5
面试题汇总与解析springbootjava后端大数据课程设计
一、Vue3新特性:setup、ref、reactive、computed、watch、watchEffect函数、生命周期钩子、自定义hooks函数、toRef和toRefs、shallowReactive与shallowRef、readonly与shallowReadonly、toRaw与markRaw、customRef、provide与inject、Fragment、Teleport、Su
- Redis篇:事务和lua脚本的使用
2301_82242844
程序员redisluajunit
QUEUEDredis>HGETmap“csc”QUEUEDredis>EXECOK“lwl”复制代码lua实现redis事务除了MULTI、WATCH、EXEC命令,还有其他的方式可做到redis原子性和隔离性吗?有的,lua脚本;redis内置了lua的执行环境,并自带了一些lua函数库。redis执行lua时,会启动一个伪客户端去执行脚本里的redis命令一致性,原子性,持久性和MULTI,
- 手机重启问题 Log 抓取方法
bobuddy
移动开发
本篇文章主要介绍展讯平台手机开发中的部分重启问题知识点,通过阅读本篇文章,您将收获以下内容:一、User版本默认开启sysdump方法二、插入SD卡抓取Sysdumplog三、sysdumplog分析四、展讯平台抓取重启串口log的方案五、展讯平台判断重启类型六、展讯平台关闭sysdump与watchdog关联七、展讯平台手动触发sysdump方法一、User版本默认开启sysdump方法首先,为
- Vue 监听器的魔法之旅:@Watch(‘form.productId’) vs @Watch(‘value’) 大揭秘!✨
小丁学Java
产品资质管理系统vue.js前端javascriptvue2
以下是一篇技术博客,主题围绕@Watch('form.productId')和@Watch('value')这两个watcher的功能、区别及使用场景,基于compare-form.vue的代码。准备好一起探索Vue监听器的魔法了吗?Vue监听器的魔法之旅:@Watch(‘form.productId’)vs@Watch(‘value’)大揭秘!✨嘿,Vue开发者们!你有没有在项目中遇到过“数据变
- 说一下redis事务底层原理
LUCIAZZZ
redis数据库java缓存网络计算机网络acid
Redis事务1.事务的基本流程Redis事务通过MULTI、EXEC、WATCH等命令实现,底层原理可以分为以下几个步骤:(1)MULTI命令当客户端发送MULTI命令时,Redis会将客户端标记为“事务模式”。在事务模式下,客户端发送的所有命令不会立即执行,而是被放入一个队列(命令队列)中。(2)命令入队在MULTI和EXEC之间,客户端发送的所有命令都会被追加到事务队列中。这些命令不会立即执
- 谈谈 Node.js 中的文件系统(fs)模块,如何进行文件读写操作?
程序员黄同学
node.js前端开发JavaScriptnode.js
Node.js文件系统(fs)模块深度解析与实践指南一、模块基础与核心能力Node.js的fs模块提供了完整的文件系统操作能力,涵盖50+个方法,主要分为以下类型:文件读写:基础CRUD操作目录操作:创建/删除/遍历目录文件监控:watch/watchFile方法文件信息:stat/access等方法流式处理:createReadStream/createWriteStream//基础引入方式co
- 探秘BirdWatch:实时推文可视化利器
宋韵庚
探秘BirdWatch:实时推文可视化利器BirdWatchTweetstreamanalysisandvisualizationwithreal-timeupdates.项目地址:https://gitcode.com/gh_mirrors/bi/BirdWatchBirdWatch是一款基于Web的响应式应用,专为实时展示和分析推文流而设计。它最初是一个实验平台,用于探索解决同一问题的不同方法
- MySQLvs Redis 事务:核心差异详解(简单易懂)
以恒1
redis数据库缓存
MySQLvsRedis事务:核心差异详解(简单易懂)一、事务定义对比特性MySQL事务Redis事务事务模型符合ACID(原子性、一致性、隔离性、持久性)非严格ACID,更接近“命令批处理”核心命令BEGIN,COMMIT,ROLLBACKMULTI,EXEC,DISCARD,WATCH设计目标保证数据强一致性实现命令批量执行的原子性底层实现基于日志(Redo/UndoLog)和锁机制基于命令队
- Redis存储⑮Redis的应用_分布式锁_Lua脚本/Redlock算法
GR鲸鱼
Redis存储分布式redis缓存数据库
目录1.分布式锁的概念2.分布式锁的实现3.过期时间4.校验id5.Lua脚本6.watchdog(看门狗)7.Redlock算法8.其他功能1.分布式锁的概念在一个分布式的系统中,也会涉及到多个节点访问同一个公共资源的情况,此时就需要通过锁来做互斥控制,避免出现类似于“线程安全”的问题。而Java的synchronized或者C++的std::mutex,这样的锁都是只能在当前进程中生效,在分布
- 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