- Linux设备驱动程序第八章——分配内存
感觉画质不如…原神
Linux驱动linuxlinux驱动linux内核开发
kmalloc函数内幕kmalloc是一个分配内存的函数,功能类似于malloc。其函数原型如下:/***kmalloc-allocatememory*@size:howmanybytesofmemoryarerequired.*@flags:thetypeofmemorytoallocate.**kmallocisthenormalmethodofallocatingmemory*forobje
- Linux设备驱动程序第九章——与硬件通信
感觉画质不如…原神
Linux驱动linuxLinux驱动设备IO
IO端口和IO内存几乎每种外设都通过读写寄存器来对它进行控制。大部分外设都有几个寄存器,无论是在内存地址空间还是在IO地址空间,这些寄存器的访问地址都是连续的。Linux在所有的计算机平台上都实现了IO端口。一般ISA设备通常使用IO端口,而大多数PCI设备则把寄存器映射到谋个内存地址区段。这种IO内存的方式才是首选的方案,因为不需要特殊的处理器指令;而且CPU访问内存更有效率,同时在访问内存的时
- QEMU 模拟 ARM 环境
MAYBETTY
QEMUarm开发
环境及工具准备环境:centos.8.4内核:linux-5.10.0交叉编译器:gcc-linaro-7.5.0-2019.2-x86_64_arm-linux-gnueabi根文件系统:busybox-1.31.1QEMU:qemu-7.0.0一、交叉编译工具安装安装:tar-xjvfgcc-linaro-7.5.0-2019.2-x86_64_arm-linux-gnueabi.tar.gz
- Linux 部署 rocketmq centos7
A初夏1
rocketmq
mq部署方案1、rocketmq顺序消费记录一个master,一个brocker,多个group,多个topic,采用集群消费模式。注意一个group对应一个topic。生产者和消费者可以有多个,但是主题和分组都是一对一的。这样保证了消息在集群模式下的顺序存储和消费。Linux部署rocketmqcentos7参考资料:https://blog.csdn.net/YuanFudao/article
- 配置OPENAI_API_KEY环境变量
jianbiao1483
人工智能chatgpt
2、上述修改后,若虚拟环境下OPENAI_API_KEY未发生变化bash下执行以下代码(临时有效)测试:importopenaiimportosopenai.api_key=os.environ["OPENAI_API_KEY"]print(openai.api_key)3、把key配置到环境变量中!!!(长期有效)将OpenAIkey添加到环境变量并调用-知乎
- V4L2&&Gstreamer媒体控制工具(五)
Android系统攻城狮
Camera系统实战系列媒体linux网络
简介:CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!优质专栏:Audio工程师进阶系列【原创干货持续更新中……】人生格言:
- linux配置IP、子网掩码、网关
悄悄打坐修个仙
Linuxlinux
linux虚拟机配置IP、子网掩码、网关本方法适用于Ubuntu18.04之后的版本。例1:配置信息:IP:10.100.100.23子网掩码:255.255.255.240网关:10.100.100.561、打开网络配置文件01-network-manager-all.yamlsudovi/etc/netplan/01-network-manager-all.yaml2、编辑网络配置文件01-n
- Linux:环境变量
繁华的梦境
Linuxlinuxbash1024程序员节c++
基本概念环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。环境变量通常具有某些特殊用途,通常具有全局特性,可以被子进程继承下去常见的环境变量PATH:指定命令的搜索路径HOME:指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)SHELL:当前Shell,它的值通常是/bin/bash。环境变量的相关命令echo:显示某个环境变量值export:设置一个新的环境变量e
- 安装Windows/Ubuntu双系统找不到磁盘分区解决办法
DemonHunter211
服务器
电脑换了一块大一点的固态,准备装双系统,发现安装Linux时识别不了系统硬盘,现将场景以及解决办法记录如下。安装环境介绍:*Windows10*Ubuntu18.04LTS*DellXPS13,UEFI启动安装步骤:先安装好Windows后,用UltraISO制作Ubuntu启动镜像。在BIOS中关闭电脑的安全启动选项,并且在Windows电源选项中中将快速启动关闭。通过更改启动选项,可以正常使用
- Linux下安装AnythingLLM
猿来是你呀&
linuxjava运维
官方方法下载后,启动不了1、镜像下载使用dockerimagepusher项目将镜像转到自己阿里云免费仓库后pull到本地dockerpullregistry.cn-hangzhou.aliyuncs.com/c_c_c/anythingllm:latest配置运行需要注意:-root账号直接执行会因为文件权限问题执行失败,需要切到普通用户-普通用户在执行时,需要加sudo以确保能运行do
- qemu安装,busybox最简根文件系统制作,ubuntu上模拟arm64运行linux
nb的码农
linux杂项linuxubuntu运维
1.qemu安装https://www.qemu.org/download/下载最新的稳定版本qemu-6.2.0-rc2.tar.xz//注:下载,用在板子上直接下载太慢了wgethttps://download.qemu.org/qemu-6.2.0-rc2.tar.xzscpqemu-6.2.0-rc2.tar.xzyhbd@192.168.10.237:/home/yhbd/bsp$cd~
- (转)Linux音频分析(现有的几种架构)
iteye_4528
Linux前端后端操作系统ViewUI
Linux音频系统存在一个问题,这不仅仅是偶尔无法工作而已。真正的问题在于它过于繁杂了。如果你坐下来在一张纸上试着画出那些在从一个音乐文件中读取音频信息,再从你的扬声器中播放出来这一过程中所用到的技术之间的关系的话,你就会很清楚地看到它就像打结的意大利面一样乱了。这个问题的原因在于音频处理从本质上就要比其他的技术更复杂。声音从某个地方输入你的Linux电脑,又从另一个地方输出。如果我们画出一个用来
- 【Linux】远程登录时,使用图形界面报错:MoTTY X11 proxy: Unsupported authorisation protocol
郭老二
linuxlinux
1、问题描述使用MobaXterm远程登录Ubuntu后,使用sudo权限运行图形界面程序报错:MoTTYX11proxy:Unsupportedauthorisationprotocol(gpartedbin:10518):Gtk-WARNING**:22:01:34.377:cannotopendisplay:localhost:10.02、查看SSH配置修改SSH服务端配置,在Ubuntu服
- 线性规划工具推荐篇 开源+商用 按需取用
技术与健康
开源
一、开源免费工具1.GLPK(GNULinearProgrammingKit)特点:支持线性规划(LP)、混合整数规划(MIP)使用MathProg语言建模,可通过glpsol命令行求解适合中小规模问题,性能低于商业求解器适用场景:学术研究、小规模优化问题安装:Linux(sudoyuminstallglpk),Windows需手动安装示例:varx1>=0;varx2>=0;maximizeob
- 从零实现Json-Rpc框架】- 项目实现 - 服务端主题实现及整体封装
JhonKI
jsonrpcqt
博客主页:https://blog.csdn.net/2301_779549673博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson欢迎点赞收藏⭐留言如有错误敬请指正!本文由JohnKi原创,首发于CSDN未来很长,值得我们全力奔赴更美好的生活✨文章目录前言️一、服务端主题管理模块1.1核心功能1.2核心设计思路1.3主题
- 清晰易懂的 Flutter 开发环境搭建教程
Tee xm
windowslinuxmacosflutter安装
Flutter是Google推出的跨平台应用开发框架,支持iOS/Android/Web/桌面应用开发。本教程将手把手教你完成Windows/macOS/Linux环境下的Flutter安装与配置,从零到运行第一个应用,全程避坑指南!一、安装FlutterSDK1.下载FlutterSDK访问官网下载页面:https://flutter.dev/docs/get-started/install根据
- Linux文件和目录操作函数
贪心的鬼
Linux基本操作linux
Linux文件和目录操作函数1.文件操作1.1stat/lstat函数1.1.1描述1.1.2获取文件大小1.1.3判断文件类型1.1.4lstat函数1.2access函数1.3chmod函数和chown函数1.4truncate函数2.目录操作2.1目录属性相关的函数2.2目录遍历相关的函数3.dup、dup2和fcntl函数2021年5月22日,袁老、吴老走了,愿他们在下一个轮回里平安幸福。
- linux常用文件函数,Linux文件操作的常用系统函数说明
weixin_39747293
linux常用文件函数
intopen(constchar*pathname,intflags,mode_tmode);//该函数一般用于创建新文件,flags添加O_CREAT,比如:O_RDWR|O_CREATintcreat(constchar*pathname,mode_tmode);//创建新文件,mode权限说明,比如0644(八进制,取反后和umask做与运算得到真正结果)返回值:成功返回文件描述符fd,失
- LINUX命令基础记录七(系统API和库函数:stat、access、truncate、link、symlink、readlink、unlink)
chexitianxia
C语言LIUNX
1、系统能同时打开最大的文件数[root@VM_0_5_centostest2]#moreopenmax.c#include#include#include#include#includeintmain(){intnum=3;charfilename[128]={0};while(1){sprintf(filename,"temp_%04d",num++);if(open(filename,O_R
- 如何提高linux环境下服务器并发连接数
alive903
服务器linuxgithubc++后端单一职责原则tcp/ip
前言最近学习在linux环境下跑高并发服务器去测试服务器并发连接数量偶遇众多问题,拼尽全力无法战胜。因此决定好好研究一番,下面通过一些我遇到的问题分享一下我是如何解决这些错误让服务器并发连接数量从一两万达到几十万的。只想修改配置提高并发量的可以直接下方或右侧目录跳到问题1,问题2。对了,我的语雀文档更新了嵌入式系列相关的系统学习笔记,详细且图文并茂,希望能帮到你alive的语雀文档嵌入式方向系列笔
- Vim操作指令全解析
linux
Vim是我们在Linux日常工作中不可或缺的文本编辑器。它强大的功能和高效的编辑方式可以极大提升工作效率。本文将全面解析Vim的各种操作指令,从基础操作到高级技巧。一、Vim模式解析Vim是一个模式化编辑器,理解不同模式是掌握Vim的关键:普通模式(Normalmode):默认模式,用于导航和操作文本插入模式(Insertmode):用于输入文本(按i进入)可视模式(Visualmode):用于选
- Linux 查看当前目录磁盘空间的命令
十方来财
linuxlinux运维服务器
Linux查看当前目录磁盘空间的命令在Linux系统中,有几个常用命令可以帮助您查看当前目录的磁盘空间使用情况:1.df命令-查看文件系统磁盘空间使用情况df-h.-h参数以人类可读的格式显示(KB,MB,GB).表示当前目录所在的文件系统这个命令会显示当前目录所在分区的总空间、已用空间、可用空间和使用百分比。2.du命令-查看目录及其子目录的磁盘使用情况查看当前目录总大小:du-sh.-s表示汇
- ntop监控Linux流量
linux
ntop功能✅实时流量监控(支持按端口、IP、协议分类)✅分时统计(小时/天/周/月视图)✅可视化仪表盘(地图、流量趋势图、TOPNIP)✅支持导出报表1.添加ntop官方仓库添加ntop官方仓库官网找:https://packages.ntop.orgRockyLinux9示例:Inordertoaddtheofficialntoppackagerepositorydo(asroot):curl
- Linux多线程编程的艺术:封装线程、锁、条件变量和信号量的工程实践
敲上瘾
linux系统linux算法c++线程服务器
目录这篇博客能带给你什么?为什么需要封装这些组件?一、线程封装框架设计构造与析构1.线程创建2.线程分离3.线程取消4.线程等待二、锁封装框架设计构造与析构1.加锁2.解锁3.RAII模式三、条件变量封装框架设计编辑构造与析构1.线程等待2.唤醒一个线程3.唤醒所有线程四、信号量的封装五、源码这篇博客能带给你什么?告别原生API的繁琐:用简洁优雅的C++类封装POSIX线程操作,让多线程开发效率提
- Vim操作指令全解析
linux
Vim是我们在Linux日常工作中不可或缺的文本编辑器。它强大的功能和高效的编辑方式可以极大提升工作效率。本文将全面解析Vim的各种操作指令,从基础操作到高级技巧。一、Vim模式解析Vim是一个模式化编辑器,理解不同模式是掌握Vim的关键:普通模式(Normalmode):默认模式,用于导航和操作文本插入模式(Insertmode):用于输入文本(按i进入)可视模式(Visualmode):用于选
- 常见操作系统特点及区别对比
真相很简单
个人杂谈编程环境鸿蒙系统操作系统OS
操作系统名称类型特点主要用途许可证类型内核类型Windows桌面/服务器图形界面友好,软件生态丰富,闭源个人电脑、企业办公专有商业许可混合内核macOS桌面(Unix-like)高度优化的硬件整合,Unix基础,闭源创意设计、开发专有商业许可混合内核(XNU)Ubuntu桌面/服务器(Linux)用户友好的Linux发行版,定期更新,社区支持强大开发、云计算、日常使用开源(GPL)宏内核(Linu
- 突破关系型边界:PostgreSQL 的 JSON 如何重新定义数据敏捷性
数据库
前言在本文中,我们将讨论PostgreSQL如何实现和处理JSON对象。读者需要具备一定的Linux、Postgres和JSON的基础知识,因为我们不仅会介绍这些新特性,还会讲解如何实现它们。本文是基于运行在Ubuntu23.04上的PostgreSQL16(开发版本)撰写的。首先,我将简要回顾一下JSON的背景,然后讲解如何在Postgres中使用JSON,最后介绍一些可以用来与JSON对象交互
- 网络接口是计算机与其他设备通信的桥梁,在 Linux 中通常以文件形式存在于 /sys/class/net 或 /proc/net 目录下
Bol5261
Linux(POSIXUNIX)Ubuntu(Ubuntu18.04LTS)RedHat(RedHatLinux)算法
在Linux系统中,网络接口是计算机与其他设备通信的桥梁,它通常以文件形式存在于/sys/class/net或/proc/net目录下。以下是关于这些目录的详细说明以及如何查看和管理网络接口的方法:1.网络接口在Linux中的表示在Linux中,网络接口(如eth0、wlan0等)是内核与外部网络通信的抽象。它们通常以文件形式存在于以下目录中:/sys/class/net:包含系统中所有网络接口的
- uv 管理 Python 项目
pinshig
uvpython开发语言
下面是一个详细的使用说明,介绍如何使用uv管理Python项目,包括安装、初始化项目、管理依赖与虚拟环境等方面:1.安装uvuv是由Astral推出的基于Rust编写的Python包和项目管理工具,号称“Python的Cargo”。你可以通过多种方式安装uv,例如:macOS/Linux:curl-LsSfhttps://astral.sh/uv/install.sh|shWindows:powe
- conda activate激活环境失败问题
THe CHallEnge of THe BrAve
conda
出现CondaError:Run'condainit'before'condaactivate'的错误,通常是因为Conda没有正确初始化当前的命令行环境。以下是解决方法:1.初始化Conda运行以下命令以初始化Conda:condainit解释:condainit会修改当前Shell的配置文件(例如cmd.exe、PowerShell或Bash的配置文件),以便正确加载Conda环境。执行后:如
- 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