- ubuntu20 安装RabbitMq
帅的没朋友~
#LinuxSystemubunturabbitmq
一:安装erlang1.执行以下命令来确保所有系统软件包都是最新的sudoaptupdatesudoaptupgrade2.将存储库添加到您的Ubuntu系统echo"debhttps://packages.erlang-solutions.com/ubuntufocalcontrib"|sudotee/etc/apt/sources.list.d/erlang-solution.list3.使用
- 百问网imx6ullpro调试记录(linux+qt)
嵌入式修炼师
linux驱动linuxqt
调试记录文章目录调试记录进展1.开发板相关1.1百问网乌班图密码1.2换设备开发环境搭建串口调试网络互通nfs文件系统挂载1.3网络问题1.4系统启动1.5进程操作2.QT2.1tslib1.获取源码2.安装依赖文件3.编译2.2qt移植1.获取qt源码2.配置编译器3.编译2.3拷贝到开发板1.拷贝2.修改开发板配置文件qttslib3.验证是否生效2.4安装QtCreator1.获取安装包2.
- Markdown 到 PowerPoint 转换工具——md2pptx
伍盛普Silas
Markdown到PowerPoint转换工具——md2pptxmd2pptxMarkdownToPowerPointconverter项目地址:https://gitcode.com/gh_mirrors/md/md2pptxmd2pptx是一个开源项目,它可以将Markdown格式的文本转换为PowerPoint演示文稿。该项目主要使用Python编程语言实现。项目基础介绍md2pptx是一个
- 小白也能安装:Ubuntu20.04 安装 RabbitMQ
Valishment
RabbitMQubunturabbitmqlinux阿里云java
开始我使用的是阿里云的轻量级服务器Ubuntu20.04系统镜像作为平台因为要使用RabbitMQ,想着步骤有点繁琐,写篇记一记安装基本依赖项更新源sudoapt-getupdate-y下载签名密钥和软件包所需的先决条件sudoapt-getinstallcurlgnupgdebian-keyringdebian-archive-keyring-y添加存储库签名密钥(指示易于信任由该密钥签名的软件
- ubuntu 安装rabbitmq
Spmal
ubuntulinuxruby
1、更新系统包sudoapt-update2、安装sudoapt-getinstallrabbitmq-server3、启动sudosystemctlstartrabbitmq-server4、查看状态sudosystemctlstatusrabbitmq-server5、启动管理界面sudorabbitmq-pluginsenablerabbitmq_management6、创建用户sudora
- ubuntu安装rabbitmq
一个铲屎官
linux安装教程rabbitmqubuntulinux
1、安装erlang由于rabbitMq需要erlang语言的支持,在安装rabbitMq之前需要安装erlangsudoapt-getinstallerlang-nox2、安装Rabbitmq更新源sudoapt-getupdate安装sudoapt-getinstallrabbitmq-server启动、停止、重启、状态rabbitMq命令sudorabbitmq-serverstartsud
- JVM内存优化的秘密武器:压缩指针详解
墨瑾轩
一起学学Java【一】jvmjava开发语言
关注墨瑾轩,带你探索编程的奥秘!超萌技术攻略,轻松晋级编程高手技术宝库已备好,就等你来挖掘订阅墨瑾轩,智趣学习不孤单即刻启航,编程之旅更有趣引言嘿,小伙伴们,我是你们的技术领航员zq啦!今天,咱们要一起探讨一个超棒的话题——JVM中的压缩指针技术。压缩指针就像是魔法中的缩小药水,能让原本庞大的指针变得小巧玲珑,从而节省宝贵的内存空间。别急,让我们慢慢揭开它的神秘面纱!正文一、刨根问底:压缩指针是什
- 【数据结构】清华出版社-刘小晶、朱蓉《数据结构渐进实践指导》第一章(个人手打版)
shixiexunnie
立志从0到c++全栈志数据结构算法c++
文章目录1_1_SqList.cpp1_1_LinkList.cpp1_1_SqList.cpp#include#include#definesql_size100//线性表初始分配空间的容量#definekuo10//线性表扩展空间的量#defineERROR0#defineOK1#defineOVERFLOW-2typedefintElemType;//数据元素的抽象数据类型,一般为intty
- 微服务架构中的负载均衡与服务注册中心(Nacos)
ღ᭄ꦿ࿐Never say never꧂
微服务架构微服务负载均衡springcloudspringboot后端java
1.负载均衡:解决实际业务问题1.1业务场景思考想象一个电子商务平台的微服务架构。我们有一个订单服务和多个用户服务实例。当订单服务需要调用用户服务时,它如何选择具体调用哪一台用户服务器?这就是负载均衡要解决的核心问题。1.2常用负载均衡算法及其业务影响1.2.1轮询(RoundRobin)原理:请求依次分配给每个服务器。业务影响:优点:实现简单,在服务器性能相近的情况下能达到较好的负载平衡。缺点:
- Linux下JVM相关指令详解及案例介绍
码农阿豪@新空间
好“物”分享linuxjvm运维
个人名片作者简介:java领域优质创作者个人主页:码农阿豪工作室:新空间代码工作室(提供各种软件服务)个人邮箱:[
[email protected]]个人微信:15279484656个人导航网站:www.forff.top座右铭:总有人要赢。为什么不能是我呢?专栏导航:码农阿豪系列专栏导航面试专栏:收集了java相关高频面试题,面试实战总结️Spring5系列专栏:整理了Spring5重要知识点与
- mysql 记录客户端ip_MySQL查看所有连接的客户端ip
辉萱0623
mysql记录客户端ip
有时候我们需要查看当前的mysql数据库中,有哪些客户端保持了连接,每个客户端分别保持了多少连接,可以使用下面的语句查询结果,可以直观的看到连接数。SELECTsubstring_index(host,':',1)AShostname,state,count(*)FROMinformation_schema.processlistGROUPBYstate,hostname;输出结果:mysql>S
- [学习笔记-SLAM篇]Ubuntu16.04+ROS下配置ORB-SLAM3——后续
warningm_dm
SLAM篇
作为一篇后记,就主要做补充之用。索引1.编译不显示warning2.LocalMapping报错3.KannalaBrandt8报错4.RGB-D设置文件1.编译不显示warning编译的过程中有报错,但是一贯的,warning太多了,所以修改一下,便于找错。参考ubuntu18.04配置ORB-SLAM3。将ORB-SLAM3的CMakeLists.txt中的-Wall后面加上-w,可屏蔽编译的
- linux查找文件里面的内容,快捷键
德玛西亚没有明天
vimaa.php输入/keyword,keyword是需要查找的关键字,按Enter健,进行搜索关键字;按键n跳至下一个匹配
- rocketmq源码解析之NamesrvController启动②创建mqclient②
qq_23283355
mqrocketmqdubbospringboot消息队列
说在前面接上次,更多源码解析请关注“天河聊架构”微信公众号源码解析netty连接管理handlerclassNettyConnectManageHandlerextendsChannelDuplexHandler{@Overridepublicvoidconnect(ChannelHandlerContextctx,SocketAddressremoteAddress,SocketAddressl
- LVS 负载均衡-DR模式
敢敢936
lvs负载均衡服务器
一.DR模式直接路由:1.介绍:直接路由(DirectRouting):简称DR模式,采用半开放式的网络结构,与TUN模式的结构类似,但各节点并不是分散在各地,而是与调度器位于同一个物理网络。负载调度器与各节点服务器通过本地网络连接,不需要建立专用的IP隧道。直接路由,LVS默认模式,应用最广泛,通过请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的
- LeetCode 232: 用栈实现队列
Ning_.
LeeCodeleetcode算法数据结构
LeetCode232:用栈实现队列题目描述使用栈实现队列的操作。支持以下操作:MyQueue():初始化队列。push(x):将元素x推入队列。pop():从队列中移除元素。peek():返回队列头部的元素。empty():检查队列是否为空。队列的先进先出(FIFO)原则可以通过两个栈来模拟。栈A用于入队操作,栈B用于出队操作。C语言实现#include#include//定义栈结构体typed
- LeetCode解决方案集:编程与面试技能提升
徐子贡
本文还有配套的精品资源,点击获取简介:LeetCode是一个编程训练平台,提供了大量编程题目,用于提升开发者的算法技能和面试准备。本文将探讨名为"some-leetcode-solutions"的开源项目,其中包括LeetCode问题的多种编程语言解决方案。这些解决方案由社区成员贡献,可用于学习不同思路和比较语言实现。开源项目遵循开源协议,允许自由使用和修改代码,鼓励知识共享。本文还强调了学习算法
- Qt Creator用法详解
不如温暖过生活
C++界面开发框架Qt最新资讯Qtqtcreator
Qt自带集成开发环境(IDE),名为QtCreator。它可以在Linux、OSX和Windows上运行,并提供智能代码完成、语法高亮、集成帮助系统、调试器和剖析器集成,还集成了所有主要的版本控制系统(如git、Bazaar)。除了QtCreator外,Windows上的开发人员还可以使用Qt的VisualStudio插件。也可以使用其他的IDE(如KDE上的KDevelop)。但当然绝不是必须使
- Java每日精进·45天挑战·Day14
云朵大王
开发语言算法
第一部分:逆波兰表达式求值在编程中,逆波兰表达式(ReversePolishNotation,RPN)是一种后缀表达式,它的特点是将运算符写在操作数的后面。这种表达式形式在处理算术运算时具有许多优点,尤其是它非常适合使用栈数据结构来进行求值。今天,我们将通过Java代码来实现一个逆波兰表达式的求值器。逆波兰表达式的优点无括号表达式无歧义:在逆波兰表达式中,由于运算符始终写在操作数的后面,因此即使去
- Deepseek 组合落地都是王炸
qqxinxi
运维教学运维deepseekpython大数据
思维即资产,模型是股东。有了Deepseek模型,思维资产才能增值。Deepseek+kimi自动生成PPTDeepseek+ClineAI编程好帮手Deepseek+剪映一键生成短视频Deepseek+MJ设计师诞生Deepseek+Dify企业快速搭建本地知识库Deepseek+Notion文本知识库Deepseek+Otter一键转会议记录Deepseek+即梦+tripo3D模型分分钟De
- 流行编程语言全解析:优势、应用与短板
a小胡哦
pythonjavac++c语言javascriptswiftr语言
Python:优势Python以其简洁、易读的语法闻名,新手能快速上手。丰富的库和框架,能极大地提高开发效率。适用领域数据科学与分析:处理和分析大规模数据集,进行数据可视化。典型示例:Google用Python进行数据分析,处理海量数据以支持各种业务决策。机器学习与人工智能:构建和训练模型。典型示例:OpenAI在很多人工智能项目中广泛使用Python,如GPT系列模型的研发。网络爬虫:轻松从网页
- FunASR服务器部署(CPU+GPU)
之群害马
服务器eureka运维
自行下载funasr-cpu/gpu和asrmodel-deploy-cpu/gpu压缩包,官方都有cpu版运行:cd/home/user/data/AIModels/FunASR_docker/deploy_resourcessudodockerload-ifunasr-runtime-sdk-cpu-0.4.4_w_models_v0.2.1.tarcdasrmodel-deploy-cpus
- Spring Framework 7.0.0-M1 预发布版重磅更新!全面优化,性能与稳定性双提升!
在当今快速发展的技术领域中,SpringFramework作为Java生态系统中的核心框架之一,今天的内容是介绍v7.0.0-M1预发布版——一个旨在为开发者们带来前所未有的编程体验的里程碑版本。v7.0.0-M1预发布:spring-projects/spring-framework⭐新特性在ClassUtils.forName()中移除对二进制数组名称的处理。(#34291https://gi
- 在Linux(CentOS、Ubuntu等等)中安装Erlang和Elixir
检查旧版本$uname-aLinuxws-ersyia-05.4.241-1-tlinux4-0017.10#1SMPWedMay817:01:03CST2024x86_64x86_64x86_64GNU/Linux$elixir--versionErlang/OTP24[erts-12.3.2.17][source][64-bit][smp:8:2][ds:8:2:10][async-threa
- C语言【基础篇】之函数——开启模块化开发的钥匙
EnigmaCoder
cc语言开发语言学习
目录前言函数基础什么是函数?函数的语法结构函数的声明与定义头文件(.h)与源文件(.c)的分工为什么需要函数原型?️参数传递机制值传递vs.指针传递修改外部变量的方法返回值与void类型如何返回多个值无返回值函数的应用场景函数进阶⚙️递归函数递归原理与终止条件递归的优缺点✍️函数指针定义与赋值应用场景函数的作用域与生命周期变量的作用域规则static关键字的作用头文件与多文件编程#ifndef方
- FFmpeg 源码编译安装
coolhuhu~
语音linuxffmpeg
参考:https://trac.ffmpeg.org/wiki/CompilationGuide/UbuntuLinux(Ubuntu)下载FFmpeg源码,并将其解压,这里我将它放在~/ffmpeg_source目录下;cd~/ffmpeg_sourceswget-Offmpeg-snapshot.tar.bz2https://ffmpeg.org/releases/ffmpeg-snapsho
- 从入门到精通:Postman 实用指南
a小胡哦
postmanlua测试工具
Postman是一款超棒的API开发工具,能用来测试、调试和管理API,大大提升开发效率。下面就给大家详细讲讲它的安装、使用方法,再分享些实用技巧。一、安装Postman你能在Postman官网(https://www.postman.com)下载对应版本,它支持Windows、macOS和Linux系统。Windows系统安装:下载好安装包后,直接双击运行。安装向导出现,点击“Next”,阅读并
- C#编程的技术难点有什么
编程
在C#编程的过程中,开发者会面临许多技术难点,尤其是在深入理解和应用C#的高级特性时。C#编程的技术难点主要体现在内存管理、并发编程、反射机制、LINQ(语言集成查询)、以及异步编程等方面。这些难点往往需要开发者对C#的底层原理和高级功能有较为深入的理解,并且在实际项目中逐步积累经验。其中,异步编程与并发编程是C#开发中常见且具挑战性的难点,特别是在多线程和任务并行的处理上,需要合理运用相关的工具
- C# 反射与动态编程
萨达大
C#上位机开发c#开发语言反射动态编程
文章目录1.反射(Reflection)1.1什么是反射?1.2反射的基本操作1.2.1获取类型信息1.2.2获取成员信息1.3调用成员1.4实例化对象1.5常见应用场景2.动态编程2.1什么是动态编程?2.2dynamic关键字2.3动态对象和ExpandoObject2.4动态编程的应用场景3.反射与动态编程的对比4.反射与动态编程的综合应用示例示例1:反射实现对象的深拷贝示例2:动态对象作为
- 高通Linux安全指南(二)
weixin_38498942
linux安全Qualcomm
功能高通TEE增强了安全功能及其扩展。它提供了接口,允许通过受信任应用程序(TA)扩展安全功能集。某些功能集成在硬件支持的TZ架构中,提供了一种系统安全配置。这些功能可以进一步定制以满足特定需求。有关高通TEE和安全组件的信息,请参阅高通TEE和架构。在本全面教程中,解锁在高通设备上安全启动技术的全部潜力。从生成加密密钥到编程硬件熔断器和管理安全启动状态,本视频详细介绍了每个步骤。适合希望通过认证
- 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