#includeusingnamespacestd;intmain(){//if语句intscore=0;cout>score;cout=90&&score=80&&score=70&&score=60&&score<70){cout<<"D"<
批量请求微信小程序封禁状态的C++代码示例
小程序
标题:批量请求微信小程序封禁状态的C++代码示例概述:此C++代码示例将展示如何批量请求指定API接口,检查微信小程序是否被封禁。根据返回的code值,我们可以判断小程序是否被封禁,code为0时表示小程序被封禁,code为1表示正常。代码介绍:目标:通过C++编写批量请求的代码,检查多个小程序的封禁状态。使用的库:使用libcurl库来发送HTTP请求。libcurl是一个强大的库,广泛用于在C
【go从入门到精通】探秘struct结构体转json为什么需要首字母大写?
前网易架构师-高司机
golang从入门到精通golangjsongo结构体首字母大写golang从入门到精通go从入门到精通
目录作者简介:问题抛出分析结论作者简介:高科,先后在IBMPlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C++,go等语言开发经验,mysql,mongo,redis等数据库,设计模式和网络库开发经验,对战棋类,回合制,moba类页游,手游有丰富的架构设计和开发经验。并且深耕深度学习和数据集训练,提供商业化的视觉人工智能检测和预警系统(煤矿,工厂,制造业
【C++语言】特殊类设计
加油,旭杏
c++开发语言
一、请设计一个类,不能被拷贝拷贝只会发生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。C++98将拷贝构造函数与赋值运算符重载只声明不定义,并且将其访问权限设置为私有即可。原因:设置成私有:如果只声明没有设置成private,用户自己如果在类外定义了,就介意不能禁止拷贝了只声明不定义:不定义是因为该函数根本不会调用,定
【C++游戏开发】零基础手写完整飞机大战游戏(基于EasyX图形库/详细注释/源码分享)
小乌龟登顶记
stm32单片机嵌入式硬件
一、开发环境与资源准备1.1环境要求VisualStudio2019+(推荐2022)EasyX图形库(官网下载适配VS版本)WindowsSDK(安装VS时勾选)1.2资源文件在项目目录创建res文件夹,存放以下素材(素材自备):plane.png玩家飞机(50x50)enemy.png敌机(50x50)bullet.png子弹(10x20)bg.jpg滚动背景(600x700)boom.wav
C++闪电侠:快速幂算法终极指南
三流搬砖艺术家
算法算法深度优先c++
目录快速幂核心思想快速幂模板代码快速幂取模模板(大数必备)实战演练(LeetCode真题)快速幂核心思想二进制分解+分治思想:a^13=a^(8+4+1)=a^8*a^4*a^1通过不断平方分解指数:a→a²→a⁴→a⁸→...动态演示:指数b=13的二进制:1101计算路径:a^1→(a^1)²→a^2→(a^2)²→a^4→(a^4)²→a^8最终结果=a^8*a^4*a^1快速幂模板代码ll
打卡信奥刷题(775)用C++信奥P9945[普及组/提高] [USACO21FEB] Clockwise Fence B
Loge编程生活
C++c++算法开发语言数据结构青少年编程
P9945[USACO21FEB]ClockwiseFenceB题目描述围绕FarmerJohn最大的草地的栅栏已经损坏了,如今他终于决定要换一个新的栅栏。不幸的是,当FarmerJohn在铺设新栅栏时,一只巨大的蜜蜂突然出现,在他的草地上追着他跑,导致最后栅栏被沿着一条相当不规则的路径铺设。栅栏可以用一个字符串表示,每个字符为N(north,北)、E(east,东)、S(south,南)、W(w
打卡信奥刷题(641)用C++信奥P8267[普及组/提高] [USACO22OPEN] Counting Liars B
Loge编程生活
C++c++开发语言算法青少年编程数据结构
[USACO22OPEN]CountingLiarsB题目描述奶牛Bessie躲在数轴上的某处。FarmerJohn的NNN头奶牛(1≤N≤10001\leN\le10001≤N≤1000)中的每头奶牛都有一条信息要分享:第iii头奶牛说Bessie躲在小于或等于pip_ipi的某个位置,或者说Bessie躲在大于或等于pip_ipi的某个位置(0≤pi≤1090\lep_i\le10^90≤pi
打卡信奥刷题(036)用C++信奥P9950[普及组/提高] [USACO20FEB] Mad Scientist B
Loge编程生活
C++c++开发语言算法青少年编程数据结构
[USACO20FEB]MadScientistB题目描述FarmerJohn的远房亲戚Ben是一个疯狂的科学家。通常这会在家庭聚会时造成不小的摩擦,但这偶尔也会带来些好处,尤其是当FarmerJohn发现他正面对一些有关他的奶牛们的独特而不寻常的问题时。FarmerJohn当前正面对一个有关她的奶牛们的独特而不寻常的问题。他最近订购了NNN头奶牛(1≤N≤10001\leN\le10001≤N≤
Python(1)Python全方位指南:定义、应用与零基础入门实战
一个天蝎座 白勺 程序猿
Python入门到精通python开发语言
背景:为什么Python成为开发者必备技能?Python自1991年发布以来,凭借“简单高效”的设计理念,成为全球增长最快的编程语言。根据TIOBE2023年榜单,Python稳居前三,其核心竞争力包括:开发效率高:代码量仅为Java的1/5,C++的1/10。跨领域通吃:从Web开发到AI训练,覆盖90%以上技术场景。企业级应用:YouTube用Python处理视频推荐,NAS
python缩进几个空格-解析Python的缩进规则的使用
weixin_39962675
Python中的缩进(Indentation)决定了代码的作用域范围。这一点和传统的c/c++有很大的不同(传统的c/c++使用花括号{}符,python使用缩进空格)。每行代码中开头的空格数(whitespace)用于计算该行代码的缩进级别(Indentationlevel),注意一个Tab等于8个空格(Space),缩进级别为0表示无缩进空格。Python中的每一条语句都有一个缩进级别,并且缩
【C++修炼之路】C++动态内存管理
f狐0狸x
【c++修炼之路】c++开发语言c语言数据结构
️专栏:【C++修炼之路】主页:f狐o狸x“于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡”目录一、C++内存管理方式1.1new/delete处理内置类型1.2new/delete处理自定义类型二、operatornew与operatordelete函数三、new和delete的实现原理3.1内置类型3.2自定义类型new的原理delete的原理newT[N]的原理delete[]的原理C
批量检查QQ域名是否被封的C++代码示例
qq
概述:此C++代码示例展示了如何批量请求指定的API接口,检查QQ域名的状态。根据API返回的status值,status为1表示域名正常,status为0表示域名被封禁。我们将使用libcurl来进行HTTP请求,使用jsoncpp解析返回的JSON数据。目标:通过C++编写代码,批量请求https://api.52an.fun/qq/api.php?url=接口,检查多个QQ域名的封禁状态,并
C++和C语言的区别有哪些
残余的记忆
c++c语言数据结构开发语言
C++和C语言是两种不同的编程语言,虽然它们有许多相似之处,但是它们之间也存在着很多区别。本文将介绍C++和C语言之间的一些主要区别。1.面向对象编程C++是一种面向对象编程语言,相较于C语言,其具有更多的特性。面向对象编程(OOP)作为一种编程方法论,通过对数据进行封装、继承、多态等操作,来实现程序的灵活性和可维护性。C++提供了很多面向对象编程的特性,例如类、继承、多态等。这些特性能够让程序员
c++与c语言的区别是什么?
pythoncainiao221
c++c语言开发语言
1、类型不同C语言是面向过程的,而C++是面向对象的。2、函数库不同C语言的标准的函数库很松散,而C++对于大多数的函数都是集成的很紧密。3、结构不同C语言中结构只有成员变量,而在C++中结构中,可以有成员变量和成员函数。它们的区别是c++是在C语言基础上发展起来的,根据开发过程中遇到的需求,它引入了很多新的特性。如果你不走C/C++方向,直接学习Java就可以了,相同的待遇下,选择简单的更好。当
构造函数的分类
cuikebinpau
c++开发语言
C++构造函数的分类与调用方式详解在C++中,构造函数(Constructor)是类的特殊成员函数,在对象创建时自动调用,用于对对象进行初始化。根据使用场景和实现方式,构造函数可以分为不同的类型,且调用方式也各有不同。本文将详细介绍C++构造函数的分类及其调用方式。1.1默认构造函数(无参构造函数)定义:默认构造函数是不带参数的构造函数,在创建对象时会自动调用。如果程序员没有定义任何构造函数,编译
C++前缀和神技:区间问题瞬杀模板
三流搬砖艺术家
算法算法数据结构c++
目录前缀和核心价值一维前缀和模板1.预处理公式2.代码实现3.动态图示二维前缀和模板1.预处理公式2.代码实现3.二维示意图六大避坑指南复杂度分析LeetCode实战前缀和核心价值暴力法的痛点://计算区间和,时间复杂度O(n)intsum=0;for(inti=l;iarr={3,1,4,2,5};intn=arr.size();//前缀和数组(从1开始存储)vectorprefix(n+1,0
C++ Primer Plus:第八章 - 函数探幽
我是一片小树叶
C++基础构建函数探幽
0、本章内容:内联函数。引用变量。如何按引用传递函数参数。默认参数。函数重载。函数模板。函数模板具体化。1、C++内联函数:为提高程序运行速度所做的一项改进。在函数声明前加上关键字inline,在函数定义前加上关键字inline。不能使用递归。2、引用变量:2.1创建引用变量指向相同的值和内存单元,会一起变换。引用在声明的时候必须初始化。使用指针也不能修改引用的指向。2.2将引用作为函数参数2.3
在Python中如何检测和解决内存泄漏问题
python资深爱好者
pythonjvm
在Python中,内存泄漏通常不是像在一些低级语言(如C或C++)中那样常见,因为Python的内存管理(包括自动垃圾回收)相对高级且自动化。然而,在长时间运行的应用程序中,特别是在使用大量循环、大型数据结构或外部库时,仍然可能出现内存泄漏。以下是在Python中检测和解决内存泄漏的一些方法:1.使用内存分析工具a.objgraphobjgraph是一个用于分析Python对象图的库,可以帮助你识
C++ list
azaz_plus
C++c++STLlist
1.std::list基本概念定义:std::list是C++标准库提供的带头(哨兵位)双向循环链表容器,支持高效的元素插入和删除。头文件:#include2.构造函数(1)默认构造函数listlist1;//创建一个空list,size=0(2)指定初始大小和默认值listlist2(5);//5个元素,默认初始化(int为0)listlist3(5,3.14);//5个元素,每个值为3.14(
设计模式——装饰器模式
zzzhpzhpzzz
设计模式装饰器模式
一、定义与概念定义C++装饰器模式(DecoratorPattern)是一种结构型设计模式,它允许在运行时动态地给对象添加额外的功能,而无需修改对象的原始类结构。该模式通过创建一个装饰类,包装原始对象,并在保持原始对象接口不变的情况下,扩展其功能。核心思想把对象的功能扩展从类的继承关系转变为对象之间的组合关系。通过装饰器类对原始对象进行包装,装饰器类和原始对象实现相同的接口,这样在客户端看来,装饰
Flutter设计模式全面解析:单例模式
那年星空
flutter设计模式单例模式
谈到设计模式这个“古老”的话题,大家先别急着划走哈,虽然对它再熟悉不过,几乎是最初开始学习编程到现在伴随着我们整个编程生涯,最早Java、C++语言实现的各种设计模式到现在还会经常有所接触,面试中也是必问的环节,在开发Flutter项目的时候,也会多少借鉴了其它语言设计模式的实现,但始终觉得dart语言实现的设计模式理解不够系统,有的实现还缺点儿dart语言本身的语法特性。加上最近在看一些Flut
PyQt6嵌入HTML5内容教程
mosquito_lover1
pythonpyqthtml5
在PyQt6中嵌入HTML5内容可以通过QWebEngineView实现。QWebEngineView是一个基于Chromium的浏览器引擎,能够渲染HTML5内容。以下是一个简单的示例,展示如何在PyQt6中嵌入HTML5页面:1.安装PyQt6和PyQt6-WebEnginepipinstallPyQt6PyQt6-WebEngine2.创建PyQt6应用程序并嵌入HTML5内容imports
C++耦合:代码设计的“黏合剂”与模块化架构的解耦艺术
福鸦
c++c++架构开发语言
C++耦合:代码设计的“黏合剂”与模块化架构的解耦艺术开篇故事:乐高城堡的“模块化危机”想象你正在用乐高积木搭建一座宏伟的城堡:高耦合设计:所有积木用强力胶水粘死,一旦想更换一扇窗户,必须拆毁整面墙。低耦合设计:积木通过标准接口拼接,可随时替换任意部件,甚至将城堡改装成太空站。软件工程中的**耦合(Coupling)**正如同这些积木的连接方式——它决定了代码模块之间的依赖程度。本文将深入探讨耦合
【深度C++】之“运行时类型识别RTTI”
Jinxk8
面向对象C++c++编程语言
0.什么是RTTI运行时类型识别(run-timetypeidentification,RTTI)功能可以获得某类型在运行时的具体动态类型,进而使用该类型的功能。动态类型指的是程序在运行时才可知的类型,与静态类型相对应。静态类型指的是编译时已知的类型。出现静态类型和动态类型定义的原因主要是面向对象的多态。当我们使用父类的指针或引用指向或引用子类对象时,表面上看使用的都是父类的函数,实际上在程序运行
关于py不能导入pyw文件内的class的问题
Auspemak-Derafru
python
我有一个window类,调了另外一个py文件里面自己写的class有一天去朋友家玩,顺便想跑一下那个代码,由于他没有编译器,我也没有打包成可执行程序,就安了一个idle。由于我的window类是用qt写的,懒得再pip下载了,就直接在原文件后面加了个main函数,改后缀名为pyw直接跑了回去之后用我的pycham打开,window类直接跑不了了,提示导包错误看了一下竟然是我之前改了的那个文件的问题
使用Ubuntu编译和安装QT源码
程序逐梦人
ubuntuqtlinuxC/C++
使用Ubuntu编译和安装QT源码在Linux开发中,QT是非常受欢迎的跨平台应用程序开发框架。它提供了丰富的GUI组件库和工具,使开发人员能够轻松创建功能强大的图形用户界面。然而,有时候我们可能需要从源代码编译和安装QT,以便进行定制化的开发。本文将介绍在Ubuntu上编译和安装QT源码的过程。步骤1:准备环境首先,我们需要确保系统中已经安装了一些必要的软件包和工具。打开终端,并执行以下命令来安
RTTI(Run-Time Type Identification,通过运行时类型识别)
Erlei_n
c++基础
参考一:RTTI(Run-TimeTypeIdentification,通过运行时类型识别)程序能够使用基类的指针或引用来检查这些指针或引用所指的对象的实际派生类型。RTTI提供了以下两个非常有用的操作符:(1)typeid操作符,返回指针和引用所指的实际类型;(2)dynamic_cast操作符,将基类类型的指针或引用安全地转换为派生类型的指针或引用。面向对象的编程语言,象C++,Java,de
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