- 前端领域的前端可视化设计案例解析
前端视界
前端艺匠馆前端ai
前端可视化设计案例解析:从技术实现到用户体验的全链路剖析关键词:前端可视化、数据可视化、设计案例、D3.js、ECharts、可视化框架、用户体验摘要:本文通过深度解析多个典型前端可视化案例,系统阐述数据可视化的核心技术原理、设计方法论及工程实践经验。从基础概念到复杂场景应用,结合D3.js、ECharts、AntV等主流框架的实战案例,详细讲解数据映射、视觉编码、交互设计的实现细节,分析不同业务
- 深度剖析 LNK 参数隐藏攻击 (ZDI-CAN-25373)
1、漏洞描述ZDI-CAN-25373是一个Windows快捷方式文件(.LNK)漏洞,它允许攻击者通过精心制作的恶意快捷方式文件来执行隐藏的恶意命令。攻击者通过在.LNK文件的COMMAND_LINE_ARGUMENTS结构中填充大量空白字符(如空格、水平制表符、换行符等)来隐藏恶意命令。这些填充字符使得恶意负载在WindowsUI中不可见,从而规避了检测。2.LNK文件格式结构详解Window
- 服务导向架构:SOA深入指南与实践
夏勇兴
本文还有配套的精品资源,点击获取简介:服务导向架构(SOA)是一种面向服务的分布式系统设计方法论。本书深入剖析了SOA的核心概念、设计原则、实现技术和面临的挑战。涵盖服务、接口、注册、通信协议和治理机制,同时讨论了设计时需遵循的松耦合、自治性、可重用、互操作性和业务驱动原则。实现技术包含Web服务、ESB、消息队列、微服务架构、API管理和服务编排等。本书也探索了SOA带来的灵活性、集成性、重用性
- .NET MAUI跨平台串口通讯方案
冰茶_
C#通讯编程#串口通讯.netIOTMAUI串口通讯
文章目录MAUI项目架构设计平台特定实现接口定义Windows平台实现Android平台实现MAUI主界面实现依赖注入配置相关学习资源.NETMAUI开发移动端开发平台特定实现依赖注入与架构移动应用发布跨平台开发最佳实践性能优化测试与调试开源项目参考MAUI项目架构设计MAUIApp共享业务逻辑串口服务接口Windows实现Android实现iOS实现macOS实现System.IO.PortsA
- LeetCode 热题 100 - 贪心算法 - 买卖股票的最佳时机 - javascript
Jxxli
LeetCodehot100leetcode算法贪心算法javascript
题目给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。示例1:输入:[7,1,5,3,6,4]输出:5解释:在第2天(股票价格=1)的时候买入,在第5天(股票价格=6)的时候卖出,
- 阿里云一句话语音识别
前端:阿里云语音识别应用(一句话语音识别){{isRecording?'停止录音':'开始录音'}}识别结果:{{recognitionResult}}WebSocket状态:{{websocketStatus}}使用的音频格式:{{usedMimeType}}import{ref,onMounted,onUnmounted}from'vue'//状态管理constisRecording=ref(
- react 自定义状态管理库
stoneSkySpace
react.js前端前端框架
核心实现原理:全局状态容器:维护单一状态源订阅机制:组件订阅状态变化状态更新调度:通过Hooks触发组件重渲染基础版实现–核心代码//1.创建全局状态存储constcreateStore=(initialState)=>{letstate=initialStateconstlisteners=newSet()return{getState:()=>state,setState:(newState)
- MySQL server version for the right syntax to use near ''
KENYCHEN奉孝
1.配置不对,一直提示''com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear''atline1atsun.refle
- 如何用postman进行自动化测试?
AIZHINAN
postman测试工具自动化测试
使用Postman进行自动化测试的完整指南Postman不仅可以用于手动API测试,还提供了强大的自动化测试功能。以下是详细的使用方法:B站讲的最好的Postman接口自动化测试教程,只需一小时自学入门,学会直接上手项目实战!一、基础自动化测试设置1.编写测试脚本在Postman请求的"Tests"标签页中,你可以用JavaScript编写测试脚本:javascript//检查状态码是否为200p
- ESP32S3接入讯飞在线语音识别教程及配套源代码
2401_88800025
高级技术笔记高级笔记语音识别人工智能音视频嵌入式硬件单片机
1.准备工作1.1硬件准备ESP32-S3开发板(推荐ESP32-S3-WROOM-1)麦克风模块(如SPH0645LM4H或WM8978)MicroSD卡模块(可选,用于存储语音文件)扬声器模块(可选,用于播放识别结果)1.2软件准备安装ArduinoIDE(推荐2.0版本以上)安装ESP32-S3开发支持注册讯飞开放平台账号并创建应用获取讯飞语音识别API的AppID、APIKey和APISe
- Python 爬虫实战:微博用户数据爬取
Python核芯
Python爬虫实战项目python爬虫开发语言
一、前言微博作为国内最大的社交媒体平台之一,蕴含着大量有价值的公开数据。本文将详细介绍如何使用Python爬取微博数据,包括环境搭建、登录模拟、数据抓取、反爬应对、数据存储等完整流程。二、准备工作1.环境准备与工具选择1.1必需工具包安装爬虫所需的库:pipinstallrequestspandasbeautifulsoup4requests:发送HTTP请求。pandas:数据处理和分析。bea
- 买卖股票的最佳时机--js 算法
stoneSkySpace
算法javascript数据结构
一、买卖股票的最佳时机给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0;贪心算法:每次发现更低价格立即更新买入点(minPrice)每次发现更高利润立即更新卖出收益(maxProf
- Python爬虫实战:研究urllib 库相关技术
ylfhpy
爬虫项目实战python爬虫开发语言urllib
1.引言1.1研究背景与意义互联网每天产生海量数据,如何高效获取和利用这些数据成为重要研究方向。网页爬虫作为自动获取网络信息的核心技术,在市场调研、舆情分析、学术研究等领域具有广泛应用。Python凭借其简洁语法和丰富库支持,成为爬虫开发的首选语言。1.2相关技术概述Python爬虫技术栈主要包括:标准库:urllib、re、csv等第三方库:Requests、BeautifulSoup、Scra
- C实现RGBA转NV12
静止了 所有的花开
c语言算法rgbanv12yuv
staticinlineuint8_tclip(intv){returnv255?255:v;}//计算alpha混合后的rgbstaticinlinevoidget_rgba_blend(constuint8_t*rgba,intidx,uint8_tbg_r,uint8_tbg_g,uint8_tbg_b,intsrc_w,intsrc_h,inti,intj,uint8_t*r,uint8_
- 【安卓Sensor框架-2】应用注册Sensor 流程
蜘蛛侠不会飞
安卓源码解析android安卓源码frameworksensorsensorservice
注册传感器的核心流程为如下:应用层调用SensorManager注册传感器,framework层创建SensorEventQueue对象(事件队列),通过JNI调用Native方法nativeEnableSensor();SensorService服务端createEventQueue()创建SensorEventConnection对象,然后enable使能sensor。这里以监听光传感器的流程
- 基于Live555实现RTSP服务器来推送H264实时码流
静止了 所有的花开
音视频h.264
实现了一个单播的rtsp服务器来推送实时的h264码流,参考了官方的testProgs目录下的testOnDemandRTSPServer例程和liveMedia目录下的DeviceSource.cpp文件。我这边是把编码出来的h264码流放入了一个缓冲队列,然后从缓冲队列里取出来进行推流。rtsp.h:#ifndef_RTSP_H_#define_RTSP_H_#include"liveMedi
- Linux c/c++ 串口编程
静止了 所有的花开
linuxc++物联网
封装了一下Linux下的串口操作serial.h:#ifndef_SERIAL_H_#define_SERIAL_H_#include#includeclassSerial{public:Serial();intopenPort(constchar*path);intset(speed_tspeed);intsend(constvoid*buf,size_tsize,intsec,intmsec,
- CppCon 2018 学习:A Semi Compile/Run-time Map with (Nearly) Zero Overhead Looup
虾球xz
CppCon学习开发语言c++
介绍一个C++和Java之间桥接(Bridge)系统的示例代码,它说明了如何在C++中调用Java类(如java.io.InputStream)的方法。下面是详细解读:一、内容来源说明《C++↔JavaBridge》目的:演示如何通过桥接层让C++直接调用Java方法(JNI背后封装)二、代码结构解读classInputStream//java.io.InputStream{public:inli
- Vue 图片加载失败显示默认图片
数字浪儿
vuevue.js前端javascript
方法一:通过onerror属性加载默认图片exportdefault{data(){return{img:'',//访问图片的ip地址defaultImg:`this.src='${require('@/assets/images/right/default-person.png')}'`,};},}方法二:通过@error方法加载默认图片exportdefault{data(){return{i
- vue使用scrollreveal库
数字浪儿
vuevue.js前端javascript
vue项目安装scrollrevealnpminstallscrollreveal推荐使用cnpminstallscrollreveal代码展示如下:HelloWorldHelloWorldHelloWorldHelloWorldHelloWorldHelloWorldimportScrollRevealfrom"scrollreveal";exportdefault{name:"App",dat
- 【Java面试】RocketMQ的设计原理
用心分享技术
Java面试题java面试rocketmq
一、核心架构设计原因NameServer轻量级无状态问题:传统注册中心(如ZooKeeper)强一致性(CP)设计复杂,且在高并发场景下性能瓶颈明显。解决:NameServer采用无状态+最终一致性(AP),节点间不通信,仅通过Broker心跳(30s/次)更新路由,降低复杂度并提升吞吐量。容忍分钟级不一致(如Broker宕机需120s剔除),适合消息路由这种非强一致场景。Broker主从架构与文
- py每日spider案例之某website之古籍搜索
我不是程序员~~~~
爬虫项目实战py
importrequestsheaders={"accept":"application/json,text/plain,*/*","accept-language":"zh-CN,zh;q=0.9","cache-control":"no-cache","cont
- Spring boot 加载和注册 BeanDefinition (三)
一个憨憨coder
springbootspringboot
上一篇讲到Springboot的常见容器,大部分Springboot运用都没有启用AOT模式,现在看一下没有启用AOT模式的条件下如何加载和注册Spring内部的BeanDefinition,主配置类的加载和注册已经在这篇提到1、BeanDefinitionRegistry接口作用BeanDefinitionRegistry是Spring框架中用于管理Bean定义(BeanDefinition)的
- 欧盟AI法案、中国《生成式AI管理办法》规范数据隐私与算法歧视
DK_Allen
大模型人工智能算法
一、全球AI治理框架:双轨并行1.欧盟《AI法案》(2025全面生效)风险等级监管要求典型场景不可接受风险全面禁止社会评分系统、实时生物识别(公共场所)高风险强制注册+第三方评估+人工监督医疗诊断、关键基础设施管理有限风险透明度披露(AI生成内容标注)聊天机器人、深度伪造最小风险无限制垃圾邮件过滤、游戏AI处罚机制:最高罚金≈全球营收6%(或3000万欧元,取较高者)典型判例:ClearviewA
- 用Ruby脚本抓取百度MP3新歌Top 100发布到闲聊
iteye_8302
Ruby百度脚本RubyPHPrubygems
昨天和ouspec闲聊谈到可以用[url=http://www.iteye.com/wiki/JavaEye/1499-javaeye-api-help]JavaEye的闲聊api[/url]做些什么:[url]http://quake.iteye.com/blog/chat/1766[/url][quote]用JavaEye的闲聊API可以做什么?举例子:你可以注册一个账号,写个小程序从某个"专
- 【ARM】解决ArmDS的工程没有生成Map文件的问题
亿道电子Emdoor
ARMARMarm开发
1、文档目标在嵌入式开发过程中,使用ArmDevelopmentStudio(简称ArmDS)进行项目构建时,Map文件的生成是调试和分析代码的重要环节。Map文件不仅记录了程序中各个段(sections)的内存分布情况,还提供了符号地址、函数调用关系等关键信息,对优化代码性能、排查问题具有不可替代的作用。然而,在某些情况下,开发者可能会发现ArmDS工程并未如预期生成Map文件。这一问题可能源于
- 使用Python爬虫抓取免费音乐下载网站:从数据抓取到下载
Python爬虫项目
2025年爬虫实战项目python爬虫开发语言
目录:前言爬虫基础知识什么是Web爬虫爬虫的工作原理抓取音乐下载网站的目标目标网站分析确定抓取数据的元素爬虫技术栈介绍Python爬虫的常用库requests库BeautifulSoup库Selenium库aiohttp和异步抓取抓取音乐下载网站的步骤选择目标网站并分析页面结构使用requests获取网页内容使用BeautifulSoup解析HTML解析音频文件下载链接使用Selenium抓取动态
- Disruptor 介绍
三石成山
java
Disruptor是由LMAX(一个金融交易平台)开发的一种高性能、低延迟的消息队列框架。它专为高吞吐量、低延迟的并发处理设计,能够极大地提升事件驱动架构的性能。Disruptor在许多实时系统中被广泛使用,尤其是在金融、游戏、日志处理等领域,具有与传统消息队列(如Kafka、RabbitMQ)不同的设计哲学和实现方式。链接LMAX-Exchange/disruptor:HighPerforman
- MYOJ_5078:(洛谷P5662)[CSP-J2019] 纪念品(完全背包提高)
Jayfeather松鸦羽_sch
NOIP+CSP系列题解背包DP(不同于动规)算法动态规划c++
题目描述小伟突然获得一种超能力,他知道未来T天N种纪念品每天的价格。某个纪念品的价格是指购买一个该纪念品所需的金币数量,以及卖出一个该纪念品换回的金币数量。每天,小伟可以进行以下两种交易无限次:任选一个纪念品,若手上有足够金币,以当日价格购买该纪念品;卖出持有的任意一个纪念品,以当日价格换回金币。每天卖出纪念品换回的金币可以立即用于购买纪念品,当日购买的纪念品也可以当日卖出换回金币。当然,一直持有
- 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ThemeClock(主题时钟)
sunbyte
TailiwindCSS实战指南vue.js前端javascripttailwindcsscss前端框架
我们继续50个小项目挑战!——ThemeClock组件仓库地址:https://github.com/SunACong/50-vue-projects项目预览地址:https://50-vue-projects.vercel.app/使用Vue3的CompositionAPI和语法结合TailwindCSS构建一个能够动态切换主题(深色与浅色)的时钟组件。该组件不仅显示当前时间(包括小时、分钟和秒
- 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