- 在Excel中创建与使用自定义函数
VBAMatrix
excel
Excel内置了很多丰富的函数,大大方便我们进行数据处理等日常操作。但如果一个单元格内函数嵌套太多,不仅不直观,而且不易理解。同时,对于一些数据处理的需求,Excel内置函数或难以实现。此刻,我们可以自定义函数,方便自己调用。例如,我们可以编写自定义函数,根据填写的身份证号码,判断位数是否正确,或者提取出生日期,判断性别,获取籍贯信息等个人信息。再如,产品编号“P-11-305-22”这字符串,我
- 【bug】spacedesk Display Driver has expired!Please download the most recent driver version on https
Java手札
Java后端bug
#扩展屏软件出问题#场景:出现扩展屏黑屏解决:重新下载软件,清除设置,重启设备软件:https://allall02.baidupcs.com/file/9其他问题:在主控电脑安装的是控制台在扩展屏安装的是可视屏软件需要设置主屏幕和副屏幕:这个排列代表的是鼠标的移动方向,可以自定义更改。如果副屏幕的分辨率不够也需要更改。看自己使用的是啥。
- 【C++】STL之string类源码剖析
AllinTome
c++STL数据结构类与对象string
目录概述源码MyString.htest.cpp概述string是字符串类,出现早于STL,不过string完全符合STL标准库的语法规则,故将string类也归于STL中string类实现的功能有字符串元素的随机访问、迭代器遍历、字符串追加/删减/查找、字符串随机插入、字符串扩容与修改长度、重载输入/输出运算符算法设计:利用构造临时对象、自定义swap函数,完成string对象的拷贝、赋值构造,
- PVE 网络配置详解:双网卡聚合与 Linux 网络管理技巧
The god of big data
虚拟系统神器?三叉戟?教程网络linux运维
ProxmoxVE(PVE)作为基于Linux的虚拟化平台,其网络配置逻辑与Windows存在显著差异,尤其在多网卡管理、链路聚合(Bonding)等方面。本文将以双网卡聚合为核心,详解PVE的网络配置方法,并对比Windows帮助用户快速上手。一、Linux与Windows网络配置的核心区别1.网卡命名规则Windows:网卡名称为“以太网”“本地连接”等,可自定义。PVE(Linux):网卡默
- Redisson自定义序列化
兔子先生°
java
主要是解决LocalDateTime的序列化报错问题。com.fasterxml.jackson.databind.exc.InvalidDefinitionException:Java8date/timetype`java.time.LocalDateTime`notsupportedbydefault:addModule"com.fasterxml.jackson.datatype:jacks
- MyBatis 源码解析:动态 SQL 生成的基本原理
捕风捉你
MyBatis源码解读mybatistomcat
摘要MyBatis提供了灵活的动态SQL功能,使得开发者可以根据业务需求在运行时生成不同的SQL语句。动态SQL是MyBatis最具特色的功能之一,它允许我们通过条件拼接来生成复杂的查询语句。本文将通过自定义实现一个简化的动态SQL生成器,解析其工作原理,并结合MyBatis的源码进行深入讲解。前言传统的SQL查询往往需要开发者根据不同的业务逻辑手动拼接SQL语句,而这种方式不仅容易出错,也不够灵
- flutter 专题 五十三 Flutter 底部向上动画弹出菜单
leluckys
Flutter面试与实战flutter前端javascript
在移动应用开发中,我们经常会遇到弹出菜单的开发需求,对于下拉菜单可以参考Flutter自定义下拉菜单,而如果是向上的弹出菜单或者更加负责的扇形菜单,则需要开发者进行自定义开发。上面是自定义向上弹出菜单的示例,如果要实现上面的效果,需要开发者对动画(AnimationController、Animation)和Flow组件能够很熟练的进行使用。,为了方便大家快速的进行开发,现在我们将它封装城一个组件
- C++结构体
饼干帅成渣
算法
注:代码为测试代码,不可运行什么是结构体?在C++中,结构体(struct)是一种用户自定义的数据类型,它允许将不同类型的数据组合在一起形成一个整体。通过结构体,可以创建复杂的数据结构来表示现实世界中的对象或概念,这使得程序设计更加直观和易于理解。与类不同的是,结构体默认是公有继承(public),并且成员变量默认也是公开的(public),而类则默认为私有继承(private)。结构体的声明要定
- spring security 实现短信登录---若依RuoYi整合短信验证码登录
菜鸡且互啄69
springjava后端
背景:若依默认使用账号密码进行登录,但是咱们客户需要增加一个短信登录功能,即在不更改原有账号密码登录的基础上,整合短信验证码登录。本案例基于RuoYi-Vue版本实现,其他版本应该大同小异。本文参考http://t.csdnimg.cn/go78Z1自定义短信登录token验证仿照UsernamePasswordAuthenticationToken类,编写短信登录token验证。我们自己构造的这
- 【19. C++ 日期与时间的使用与深入解析】
涛ing
C++基础c++java算法c语言开发语言linux后端
本章目录:前言C++中的日期与时间重要类型与结构体常见日期和时间函数获取当前日期与时间示例:获取当前本地时间和UTC时间使用`tm`结构格式化时间示例:从`tm`结构中提取时间格式化输出日期与时间示例:自定义格式化日期输出总结前言在C++中,虽然没有内建的日期类型,但我们可以通过头文件使用一些与日期和时间相关的函数和结构。这些工具不仅继承自C语言,而且提供了处理时间和日期的强大能力。理解如何操作时
- C语言——结构体
格格Code
C语言c语言开发语言
前言:大家好,本篇主要介绍了C语言结构体部分的内容格格Code的C语言有关C语言的知识点都在这里,大家可以看看对自己有没有帮助一、结构体类型的声明1.1结构体的基础知识概念:结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量。结构体是用户自定义的一种数据类型,可以将不同类型的数据组合在一起,形成一个逻辑上的整体。数组是一组相同类型元素的集合类型:char,int,short
- 记录一次 vue3 + ele pls 改写 饿了么主题色实践
Ashy-
前端笔记前端vue.js
一、改写element主题色在main.ts中引入需要改写的scss文件main.ts:import'element-plus/dist/index.css'import'./styles/element-plus.scss'在自定义的element-plus.scss文件中改写elepls的变量element-plus.scss:/***更改主题色*/:root{--el-color-prima
- c++不使用MessageBox弹出弹窗,绘制图形
饼干帅成渣
c++开发语言
WinAPI创建窗口。步骤包括注册窗口类、创建窗口实例、显示窗口,并处理消息循环。可能需要编写窗口过程函数来处理消息,比如WM_PAINT来绘制窗口内容,WM_CLOSE来处理关闭事件。在C++中如果不使用MessageBox创建弹窗,可以使用WindowsAPI直接创建自定义窗口。以下是使用纯Win32API创建简单弹窗的示例:#include#include//声明全局字符串constwcha
- 微信小程序实现登录授权弹窗getUserProfile()
KristinKander
秋招准备前端微信小程序微信小程序
在uniapp和微信自带接口中,都有getUserProfile方法来实现,我们只需要在按钮上绑定一个自定义处理函数login,随后在login函数中调用getUserProfile()方法一键登录login(){uni.<
- WPF: 把引用的dll移动到自定义路径
zlcntt
UI编程(C#)dll
需求:有A.exe和B.exe,都引用了C.dll,output路径都是W:\Debug.A和B都添加了对C的引用,正常情况下C会被复制到output里面。C这样子的dll很多,不想把它们和exe放在同一级的目录,移动到子目录,如W:\Debug\3rdDll办法:1.首先设置C.dll打开ProjectA的References,选中C.dll,右键Properties,CopyLocal设为Fa
- SAP ABAP 自动批量开关账期程序 OB52和MMPV
IT 药师
SAP精品资源ABAP
SAPABAP自动批量开关账期程序OB52和MMPV文章目录SAPABAP自动批量开关账期程序OB52和MMPV前言会计凭证过账期间物料凭证过账期间完整代码主程序ZTOOLSR0001自定义开物料账期函数ZTOOLSFM04_MMPV_JOB自定义公司代码表ZMASTERT0001前言
- Spring Boot 整合 log4j2 日志配置教程
m0_74824517
面试学习路线阿里巴巴springbootlog4j单元测试
文章目录前言一、常用日志框架二、配置参数介绍1.日志级别2.输出形式3.日志格式3.1PatternLayout自定义日志布局三、Log4j2配置详解1.根节点Configuration2.Appenders节点2.1Console节点2.2File节点2.3RollingFile节点2.3.1ThresholdFilter节点2.3.2Policies节点2.3.3ThresholdFilter
- SAP_ABAP_MM_物料视图维护监控报表(自定义开发)
Terry谈企业数字化
Abap编程SAPABAP
SAPABAP顾问(开发工程师)能力模型_Terry谈企业数字化的博客-CSDN博客文章浏览阅读458次。目标:基于对SAPabap顾问能力模型的梳理,给一年左右经验的abaper快速成长为三年经验提供超级燃料!https://blog.csdn.net/java_zhong1990/article/details/1324699771应用场景,查询物料主数据维护情况,为物料维护及时性提供参考。2
- WPF创建自定义类和控件及打包成dll引用
weixin_46846685
WPFwpfdll.netcorenetframeworkC#XAML类库
WPF创建自定义类和控件及打包成dll引用一、前言二、创建自定义类和控件并生成dll文件2.1创建类库项目2.2创建自定义类和控件2.3生成dll文件三、在其他项目中引用3.1添加dll文件引用3.2cs文件中引用命名空间3.3XAML文件中引用命名空间一、前言出于一些代码复用的需求,会将一些常用的基础类及控件放在一个单独项目中,然后打包成dll文件,在其他项目中引用这个dll文件就可以使用这些类
- 分享一个用于免费取名chrome插件
blogcs
chrome前端
这是一个帮助父母为宝宝取名的Chrome扩展程序,基于八字命理为宝宝打造独特且富有寓意的名字。功能特点:-支持输入宝宝姓氏。-可选择宝宝性别(男宝宝/女宝宝)。-可选择名字长度(二字名/三字名)。-支持输入出生日期和时辰。-提供多种期望寓意选择。-支持自定义期望寓意。-完全简体中文界面。安装方式:**从Chrome网上应用店安装**:1.Chrome網上應用店頁面。2.点击“添加至Chrome”按
- vue-plugin-hiprint (vue2
_未知_开摆
vue.jsjavascriptecmascript
页面效果{{type}}自定义纸张宽X高(mm):x确定旋转纸张(宽高互换)清空纸张浏览器打印直接打印(需要连接客户端){{(scaleValue*100).toFixed(0)}}%默认样式自定义样式import{hiprint}from"vue-plugin-hiprint"import{provider1}from"./provider1"import{provider2}from"./pr
- Kubernetes 使用自定义资源(CRD)扩展API
zhangj1125
Gokubernetes容器go
K8sCRD即KubernetesCustomResourceDefinition,是Kubernetes提供的一种扩展机制,允许用户在Kubernetes集群中定义和使用自定义的资源类型。通过定义CRD,用户可以在Kubernetes集群中创建、读取、更新和删除自定义资源对象,就像使用原生的Pod、Service等资源一样。本文主要介绍如何使用kubebuilder快速创建自定义资源类型。完成g
- HarmonyOS应用开发者高级试题005
code36
鸿蒙证书试题库harmonyos华为
一、判断题1、合理的动效可以帮助引导、取悦用户,减少等待时间,更能增加产品识别度,让用户舒适的的使用产品。T2、每一个自定义组件都有自己的生命周期。T3、所有使用@Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide生命周期函数。F4、一个页面可以存在多个@Entry修饰的组件。F5、用户首选项preferences是以Key-Value形式存
- 文档比对工具/Word查重(基于python的本地word文档查重)二
筠贝
windowspython开发语言
本地文档查重一本地文档查重二代码思路使用第本地文档查重一的基本思路。根据自己的需求去自定义一些函数1.自定义一个读取对比word文件名的函数。2.自定义一个根据文件名读取word内容函数,并将内容转换为list.3.自定义对比的方法。4.主函数去调用上面的方法,并采用多进程方式。多进程/多线程本文章在测试下述代码时,也曾经采用多线程(threading.Thread)方式,但感觉未展现多线程的优势
- GO语言中的结构体struct
敖光 SRE
go基础知识golang开发语言后端
结构体结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体是由0个或多个任意类型的值聚合成的实体,每个值都可以被称为结构体的成员。特性结构体的成员也可以被称为"字段",具有以下特性:字段拥有自己的类型和值。字段名必须唯一。字段的类型也可以是结构体;甚至是字段所在结构体的类型的指针类型。字段的首字母决定其可访问性。自定义类型packagemainimport"fmt"typet1int
- React Hooks forwardRef useImperativeHandle TypeScript类型 最佳实践
m0_67265464
面试学习路线阿里巴巴javajava进阶后端
定义官网文档forwardRef:转发refuseImperativeHandle:用于自定义暴露给父组件的实例值版本"react":"^17.0.2""@types/react":"^17.0.44"代码父组件import{FC,useEffect,useRef}from'react';//导入子组件importChildComponent,{IRefProps}from'./ChildComp
- MybatisPlus + SpringBoot + Vue 实现自定义联表查询,返回 HashMap<String, Object> 条件,分页,模糊,total
沐沐uuu
springboot后端java
MybatisPlus+SpringBoot+Vue实现自定义联表查询,返回HashMap条件,分页,模糊,totalMybatisPlus极大的简化了单表查询的重复操作,但是在联表的时候,特别是在查询的结果集没有对应实体类的时候,就还要手写sql,手写分页和模糊,返回HashMap对象。这里我写一个Demo,以方便以后的开发中遇到这种情况。mapper.xmlSELECTa.APPLICATIO
- forwardRef
懒人村杂货铺
前端
`forwardRef`是React提供的一种高级API,用于在函数组件中转发(forward)`ref`到子组件的DOM元素或类组件。这对于需要直接操作子组件的DOM节点或获取子组件实例的情况非常有用。###如何使用`forwardRef`####示例假设我们有一个自定义的输入框组件`FancyInput`,我们希望通过父组件能够直接访问这个输入框的DOM节点,以便在父组件中调用焦点(focus
- 如何使用Django中间件
AI航海家(Ethan)
Djangopython后端框架django中间件python后端postgresql
如何使用Django中间件让访问更安全?嘿,朋友们!今天我们来聊聊如何在Django中使用自定义中间件保证某个文件夹的访问需要token验证。毕竟,有时候我们需要确保只有合法用户才能访问某些资源,对不对?什么是中间件?简单来说,中间件就是一种在Django应用请求和响应过程中拦截并处理请求的组件。它们在请求到达视图之前、在响应到达客户端之前能够进行各种操作。比如本次,我们将实现一个简单的token
- java接入豆包
一个处女座的暖男程序猿
java开发语言
packagecom.chart.web.controller.chart.dto;importlombok.Data;@DatapublicclassDoubaoAiDTO{privateStringimageUrl;privateStringdetail;}#自定义配置:豆包API相关参数doubao:api:url:https://ark.cn-beijing.volces.com/api/
- 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