- Redis原理:watch命令
csjane1079
redisredisjava
在前面的文章中有提到,在multi前可以通过watch来观察哪些key,被观察的这些key,会被redis服务器监控,涉及该key被修改时,则在exec命令执行过程中会被识别出来,exec就不会再执行命令。源码分析//监控对应的keyvoidwatchCommand(client*c){intj;if(c->flags&CLIENT_MULTI){addReplyError(c,"WATCHins
- Spring Boot 项目启动时在 prepareContext 阶段做了哪些事?
尚早立志
SpringBootspringbootjavaspring
概览如果你对SpringBoot启动流程还不甚了解,可阅读《SpringBoot启动流程详解》这篇文章。如果你已了解,那就让我们直接看看prepareContext()源码。privatevoidprepareContext(ConfigurableApplicationContextcontext,ConfigurableEnvironmentenvironment,SpringApplicat
- 【博客节选】再谈Unity 的 root motion
|Ringleader|
unityunityrootmotionbakeintopose
节选自【Unity实战笔记】第二十三·rootmotion变更方向攻击(OnStateMove+rootmotion+rigidbody使用的一些问题)小伙伴们应该对rootmotion非常困惑,包括那个bakeintopose。当xzbakeintopose后,角色攻击动画与父节点产生偏移,动画结束后,模型还会瞬移归位。如何理解?先看一下这位看过Mecanim源码的人的介绍:根节点运动(Root
- 40个Java课程设计/毕业设计选题项目(源码+运行步骤+开发文档)
冷琴1996
Java系统设计java课程设计开发语言
毕业设计/课程设计往往从大四开始准备,如果有考研或者考公需要,则没有太多时间,所以笔者准备了40个常见的java/springboot/vue毕业设计,可以用于课程作业或者毕业设计。1.基于java的家政预约网站系统平台采用B/S结构,后端采用主流的Springboot框架进行开发,前端采用主流的Vue.js进行开发。整个平台包括前台和后台两个部分。前台功能包括:首页、家政详情、家政入驻、用户中心
- 使用python numpy计算并显示音频数据的频谱信息
番茄老夫子
pythonnumpy开发语言
一概念最近需要用到这个数据。笔者需要,使用Python的numpy库结合scipy和matplotlib库来计算并显示音频数据频谱信息的示例代码。我们将使用scipy.io.wavfile来读取音频文件,numpy进行快速傅里叶变换(FFT)计算频谱,最后用matplotlib来绘制频谱图。二源码解析:importnumpyasnpimportmatplotlib.pyplotaspltfroms
- Vue.js 源码解析:响应式系统的依赖收集与触发机制
码上前端
vue.js前端框架前端javascriptwatchvue3.js
前言:家人们,大家好!今天分享一篇文章给大家!要是文章对你有帮助,激发了你的灵感,求个收藏+关注啦~后续还有超多惊喜,别错过!目录一、响应式系统核心概念二、依赖收集过程1.数据劫持实现2.依赖收集流程三、更新触发机制1.同步更新队列2.异步更新优化四、深度响应式实现五、循环引用处理六、性能优化策略七、与Vue2的对比优化八、实战应用建议九、未来发展方向一、响应式系统核心概念Vue.js的响应式系统
- 深度剖析 Spring 源码 & 性能优化:核心原理与最佳实践
工一木子
SpringFramework笔记spring性能优化java
深度剖析Spring源码&性能优化:核心原理与最佳实践Spring框架作为Java生态的核心技术,广泛应用于企业级开发。但很多开发者只会“用”Spring,而不深入其内部原理,导致无法高效排查问题&进行性能优化。本文将从Spring核心源码剖析、性能优化策略、实战案例三个方面,帮助你深入理解Spring,并掌握优化技巧,让你的Spring应用跑得更快、更稳!1.Spring核心源码剖析(What&
- Dubbo(18)Dubbo的SPI机制是什么?
辞暮尔尔-烟火年年
微服务dubbo
Dubbo的SPI(ServiceProviderInterface)机制是Dubbo框架的重要特性之一,用于实现服务的动态扩展和替换。通过SPI机制,开发者可以在不修改Dubbo源码的情况下,定制和扩展Dubbo的功能。SPI机制的核心思想是通过接口和配置文件的方式,在运行时动态加载和使用具体的实现类。Dubbo的SPI机制借鉴了Java的ServiceLoader机制,但在功能和灵活性上进行了
- java:实现图片浏览器(附带源码)
Katie。
Java实战项目java开发语言
Java实现图片浏览器项目详细介绍一、项目简介在现代应用中,图片浏览器是一种常见且实用的工具,能够帮助用户方便地浏览、预览和管理大量图片。无论是在桌面端还是嵌入到大型系统中,图片浏览器都能极大提升用户体验。本文将介绍如何使用Java语言(主要借助Swing框架)来实现一个简单的图片浏览器。项目包括如下主要功能:加载图片:从用户指定的文件夹中加载所有图片文件(常见格式如JPG、PNG、GIF等)。图
- 【C语言】C语言使用随机数srand,rand
秋风&萧瑟
C语言c语言
C语言使用随机数srand,rand可直接编译使用:#include#include#include#include/*c语言提供的跟随机数有关的函数:intrand(void);返回值:产生的随机数voidsrand(unsiqnedintseed);参数:seed-->随机数种子,rand函数的源码会利用srand提供的种子,配合算法产生随机数timettime(timet*tloc);返回值
- Android Compose 基础布局之 Box 和 Stack 源码深度剖析(九)
&有梦想的咸鱼&
Android开发大全AndroiodCompose原理android
AndroidCompose基础布局之Box和Stack源码深度剖析一、引言1.1Android开发中布局的重要性在Android应用开发里,布局是构建用户界面(UI)的关键环节。良好的布局设计能够提升用户体验,使应用界面更加美观、易用且具有一致性。早期的Android开发使用XML进行布局,这种方式虽然直观,但在处理复杂布局和动态变化时显得繁琐,代码的可读性和可维护性也较差。1.2Jetpack
- c语言贪吃蛇
꧁兰百犁迦꧂
c语言开发语言游戏
目录源码展示一、地图的绘制二、打印蛇三、打印食物四、移动蛇五、判断蛇死亡(吃到自己或者碰到墙)源码展示#include#include#include#include#include#defineSNAKE_HEAD●//蛇头#defineSNAKE_BODY○//蛇身#defineinitSIZE3//初始化蛇长#defineMAP_HEAD30//初始化地图高#defineMAP_WIDETH
- 医图论文 AAAI‘25 | FAMNet: 跨域少样本医学图像分割的频率感知匹配网络
小白学视觉
医学图像处理论文解读医学图像处理论文解读AAAI医学图像顶会深度学习
论文信息题目:FAMNet:Frequency-awareMatchingNetworkforCross-domainFew-shotMedicalImageSegmentationFAMNet:跨域少样本医学图像分割的频率感知匹配网络作者:YuntianBo,YazhouZhu,LunboLi,HaofengZhang源码:https://github.com/primebo1/FAMNet论文
- Spring Boot启动流程及源码实现深度解析
程序媛mylove
springboot后端java
SpringBoot启动流程及源码实现深度解析一、启动流程概述SpringBoot的启动流程围绕SpringApplication类展开,核心流程可分为以下几个阶段:初始化阶段:推断应用类型,加载ApplicationContextInitializer和ApplicationListener环境准备:加载配置文件和命令行参数上下文创建:实例化ApplicationContext上下文刷新:执行r
- LangChain开发(九)基于Rag实现文档问答
丶只有影子
#LangChainlangchainai
文章目录关联阅读Rag是什么?Rag工作流索引(Indexing)检索和生成(Retrievalandgeneration)文档问答实现流程代码实现源码地址参考资料关联阅读LangChain开发(一)LangChain介绍和对话demoLangChain开发(二)LangChain提示词模板Template使用LangChain开发(三)工作流编排(LCEL)LangChain开发(四)服务监控(
- 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
android
最近优化了一个ActiveMQ消费端应用消费速度慢的问题,原先采用Spring的@Scheduled定时每秒调用ActiveMQMessageConsumer.receive(2000)拉取消息并同步处理,简化后的代码如下:@Scheduled(cron="1/0?")publicvoidconsumer(){newThread(()->{try{logger.info("ActiveMQClie
- 【Opencv源码安装】Linux源码安装opencv
hengG_0
笔记opencvlinuxjava
本文主要说明Linux上如何从源码安装opencv库,并给出一个简单例子说明安装成功1.环境说明VMware下的Ubuntu22.04LTS2.安装步骤需要准备好java环境和opencv源码后,从源码cmake编译,并进行安装2.1.依赖安装sudoaptinstallopenjdk-8-jdkopenjdk-8-jre#验证安装java-version#应显示"1.8.x"javac-vers
- 《ESP32-S3使用指南—IDF版 V1.6》第二章 常用的C语言知识点
第二章常用的C语言知识点1)实验平台:正点原子DNESP32S3开发板2)章节摘自【正点原子】ESP32-S3使用指南—IDF版V1.63)购买链接:https://detail.tmall.com/item.htm?&id=7684993426594)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/esp32/ATK-DNESP32S3.h
- Postman:完整指南
学术Fun
postmanjava测试工具
Postman:完整指南PostmanAPI测试用于手动和自动测试。使用Newman、Jenkins或任何其他CI工具实现自动化课程英文名:PostmanTheCompleteGuide-RESTAPITestin此视频教程共5.5小时,中英双语字幕,画质清晰无水印,源码附件全下载地址百度网盘地址:https://pan.baidu.com/s/1ivLIGKt_3R0wncmCswMTRg?pw
- postgresql源码学习(59)—— 磁盘管理器 SMGR
Hehuyi_In
源码学习PostgreSQL内部存储postgresql磁盘管理SMGR源码VFD
一、定义及作用PostgreSQL的磁盘管理器(StorageManager,简称SMGR)是数据库系统中负责管理底层存储的核心模块。磁盘管理器并非直接操作磁盘上的文件,而是通过VFD(虚拟文件描述符,将在后续学习)实现。抽象存储层,解耦存储逻辑:SMGR提供了一层抽象接口,屏蔽了不同存储类型(如表、索引、TOAST表等)的底层细节,使上层模块(如执行器、缓冲池)无需关心具体的存储实现。管理文件操
- MySQL insert on duplicate 加锁分析(2)
mysql数据库
插入记录导致唯一索引冲突,onduplicatekeyupdate更新非索引字段值的加锁情况分析。作者:操盛春,爱可生技术专家,公众号『一树一溪』作者,专注于研究MySQL和OceanBase源码。爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文基于MySQL8.0.32源码,存储引擎为InnoDB。正文1.准备工作创建测试表:CREATETABLE`t4`(`id
- VC++时间函数的使用(附源码)
dvlinker
VC++常用功能代码封装c++时间函数GetLocalTimeGetTickCounttimeGetTime
VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排
- 第30周Java分布式入门 ThreadLocal
kill bert
java学习java分布式wpf
ThreadLocal课程笔记一、章节结构概述本章主要学习重要的工具类ThreadLocal。章节分为六大模块:ThreadLocal的两大使用场景ThreadLocal所带来的好处ThreadLocal的主要方法及使用顺序ThreadLocal原理源码分析使用ThreadLocal的注意点和使用规范从下一个小节开始,将逐一展开这六大模块的内容。二、两大使用场景场景一:每个线程需要一个独享的对象背
- vue2/3 - 基于element(ui/plus)实现el-table表格每行可拖动换位置排序,表格列(表头)可拖动交换位置功能效果(table表格可拖曳排序的行和列,用鼠标动态拖拽排序表格行列)
街尾杂货店&
前端组件与功能(开箱即用)elementuielementplusel-tableTable表格组件vue2vue3vue表格可拖动排序的行与列
效果图在vue2、vue3项目开发中,element饿了么组件库实现表格el-table组件支持【行和列可拖曳排序、换位置】功能,每行数据可拖拽进行排序调换位置,每列数据可以自由拖动进行调换位置。提供详细示例代码,复制源码换个数据就能用了。示例源码
- 设置github 代理
2301_79308687
github
场景:执行CI需要下载GitHub仓库源码。访问很慢,有时会被中断。因此需要配置github代理。代理网站更新频繁,可以在搜索引擎搜索关键词`github代理网站`,寻找最新可靠的代理网站。假设代理网站是:https://my-gh-proxy.top单次下载配置:`gitclonehttps://my-gh-proxy.top/https://github.com/https://github.
- Maven插件学习(二)——测试插件maven-surefire-pluigin
螺旋小蜗
Maven插件maven学习maven插件
1、插件简介maven-surefire-plugin测试运行器,能很好的兼容JUnit3Junit4以及TestNG,Maven在构件执行到特定生命周期阶段的时候,通过该插件来执行JUnit或者TestNG的测试用例,test阶段与该插件的test目标相绑定,是Maven内置的绑定,默认情况test目标会自动执行测试源码路径下所有符合一组命名模式的测试类。这组模式为:**/Test*.java:
- 基于python+django的二手商品交易平台-二手商品供需系统(课程作业)
冷琴1996
Python系统设计pythondjango开发语言
项目简介该项目是基于python的web类库django开发的一套web网站,二手商品交易平台,给师弟开发的课程作业。大家在学习过程中,遇到问题可以github咨询作者。共同学习技术。预览展示http://mask.gitapp.cn源码地址https://github.com/geeeeeeeek/mask开发步骤:启动项目django-adminstartprojectmask开发步骤:创建应
- 自动化漏洞扫描系统(源码、docker、虚拟机)
huan666*
漏洞扫描自动化漏洞扫描
项目地址:https://github.com/huan-cdm/info_scan/docker部署(beta版本):1.账号密码:nginx/web/mysql:admin/1234562.创建docker自定义网络,使容器间完成通信:dockernetworkcreateinfo_scan_network3.mysql环境:下载镜像:dockerpullregistry.cn-hangzho
- 技术迭代、流量困境与营销突破:基于开源AI大模型与S2B2C模式的创新路径研究
说私域
人工智能开源小程序零售
摘要:在技术指数级迭代与流量红利消退的双重背景下,营销领域面临边际效应递减与竞争升级的双重挑战。本文基于"开源AI大模型""AI智能名片""S2B2C商城""小程序源码"等创新工具,探讨营销范式转型的路径。通过解析技术驱动的流量重构逻辑,揭示精准营销、供应链优化与用户价值深挖的突破点,为后流量时代的企业提供战略升级框架。关键词:开源AI大模型;AI智能名片;S2B2C商城;小程序源码;流量困境;边
- java:实现MD5查看器(附带源码)
Katie。
Java实战项目java开发语言
Java实现MD5查看器项目详解目录项目概述1.1项目背景与意义1.2什么是MD51.3MD5查看器的应用场景相关知识与理论基础2.1哈希算法与消息摘要2.2MD5算法简介2.3Java中的MessageDigest类项目需求与分析3.1项目目标3.2功能需求分析3.3异常处理与鲁棒性要求系统设计与实现思路4.1整体架构设计4.2MD5查看器的核心实现方法4.3设计关键点与注意事项详细代码实现及注
- 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