文章目录什么是this指针?什么是虚函数指针?this指针和虚函数指针的关系总结什么是this指针?this指针:this指针表示对象的地址起始内存地址。即this指针的值,指向了对象起始内存。this指针的值和类第一个成员变量的地址一样。来看一个例子:classbase{public:base(){std::cout<<"this:"<
使用DuiLib进行UI开发的虚函数解析及控件绑定、响应与消息处理
吃面不喝汤66
Duilibuic++xmlmicrosoft
DuiLib是一个开源的基于DirectUI思想的Windows界面库,提供了灵活且易用的UI界面开发能力。在使用DuiLib进行开发时,我们常常会遇到一些虚函数,它们在不同的阶段被调用,以完成各种初始化和消息处理工作。本文将详细介绍DuiLib中的一些关键虚函数的作用,并讲解如何通过XML定义控件、进行控件绑定和响应,以及处理消息。一、DuiLib中的关键虚函数GetSkinFile作用:返回应
虚函数和纯虚函数
走别人不走的路
C++c++开发语言
在C++中,虚函数和纯虚函数是面向对象编程中用于实现多态性的重要概念。下面是对这两个概念的详细讲解:1.虚函数(VirtualFunction)虚函数是指在基类中声明为virtual的成员函数,目的是允许在派生类中对该函数进行重写(也称为覆盖),并通过基类的指针或引用来调用派生类的实现。这种机制使得函数调用能够在运行时决定(即动态绑定或运行时多态),而不是在编译时决定(即静态绑定)。示例代码:#i
C++第八章:多态性
Yao_xiiiin.
c++开发语言
一、多态性概述面向对象的多态性可以分为4类:重载多态、强制多态、包含多态和参数多态。前面两种统称为专用多态,而后面两种称为通用多态。包含多态是类族中定义于不同类中的同名成员函数的多态行为,主要是通过虚函数来实现。多态的实现多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。绑定是指计算机程序自身彼此关联的过程,就是把一条消息和一个对象的方法相结合的过程。绑定工作在编译连接阶段完成的情况
文章的目录
TrustZone_Hcoco
ARM/Linux嵌入式面试java开发语言
C++基础知识汇总C++基础知识30问题1.new、delete、malloc、free关系2.delete与delete[]区别3.C++有哪些性质(面向对象特点)4.子类析构时要调用父类的析构函数吗?5.多态,虚函数,纯虚函数6.求下面函数的返回值(微软)7.什么是“引用”?8.将“引用”作为函数参数有哪些特点?9.在什么时候需要使用“常引用”?10.将“引用”作为函数返回值类型的格式、好处和
C++设计模式---原型模式
xinruoqianqiu
设计模式c++设计模式原型模式
1、介绍原型模式(PrototypePattern)是一种创建型设计模式,它利用已有对象作为原型,通过复制原型对象来创建新的对象。在这个过程中,不需要重新初始化新对象,而是直接复制原型对象的数据和结构,因此可以显著提高性能。原型模式特别适用于需要创建大量相似对象的情况,或者对象的创建过程非常耗时和资源密集。需要满足以下条件:(1)定义一个基类,其中包含一个clone纯虚函数,用于复制当前对象并返回
浅谈C# 虚函数
CN.LG
C#c#开发语言
一、基本介绍虚函数是一种在基类中声明并在派生类中重写的方法。通过使用关键字virtual,可以定义虚函数。派生类可以根据需要重写虚函数,以提供不同的实现。虚函数的主要目的是实现多态性。在程序运行时,通过基类的引用或指针调用虚函数时,将根据实际对象类型执行相应的派生类方法。定义虚函数在C#中,你可以通过使用virtual关键字来定义一个虚函数。这意味着该方法可以在派生类中被重写。publicclas
0828,虚拟继承,欠(C++ primer 15.9中的文本查询扩展的作业
qq_51583806 彩雷王
我爱学习c++开发语言
011_multiderivedwithVir.cc#includeusingstd::cout;usingstd::endl;//------------------------------//classA{public:virtualvoida(){couta();//C::a()动态多态pa->b();//A::b()没有覆盖,会通过虚函数表pa->c();//C::c()动态多态/*pa-
浅谈C# 虚函数和重写
CN.LG
C#c#开发语言
一、基本介绍虚函数(VirtualFunction)和重写(Override)是面向对象编程中多态性的重要概念。它们允许子类改变继承自父类的行为。虚函数虚函数是可以在派生类中被重写的函数。在基类中声明虚函数时,使用关键字virtual。这样,派生类可以使用override关键字来提供新的实现。虚函数的声明publicclassAnimal{publicvirtualvoidMakeSound(){
c++对象调用函数的流程
edcsonzz
c++!c++
日常学习中的发现:C++中调用虚成员函数的流程是:调用对象obj中的vptr,获取指针指向的虚函数表,再通过位移操作找到虚函数表中特定函数的地址调用。这个obj必须被初始化,因为调用该对象内部的vptr的时候发现为初始化是会报错的`c++中调用非静态成员函数的流程是:在编译时期,编译器就完成对函数代码的解析,并获取到相应的函数代码,再通过一定的命名规则(namemangling)保存。所以对象在调
ARM/Linux嵌入式面经(三十):腾讯 C++开发工程师
TrustZone_Hcoco
ARM/Linux嵌入式面试arm开发linuxc++芯片嵌入式硬件单片机
文章目录自我介绍:首先让我做了一个简短的自我介绍。volatile关键字:解释了volatile关键字的作用和使用场景。回答volatile关键字的作用和使用场景追问几个有深度的技术问题malloc底层:详细描述了malloc函数的底层实现机制。malloc函数的底层实现机制概述深度技术追问及答案虚函数:讲解了虚函数的概念和用途。回答虚函数的概念和用途追问有深度的技术问题及答案内联函数:解释了内联
C++避坑小知识
creative_mind
c++开发语言经验分享
引子:本文仅仅用作检查小错误,可以是一篇专辑一,C++11中已经去除了auto声明自动类型变量的功能,只可以用来进行变量类型推导二,对于STL提供的所有容器,均可以使用for依次访问器元素三,final修饰类时,表示该类不能被继承,修饰派生类的虚函数时,表示该虚函数不能被子类继承,另外,继承的虚函数地址没有改变,重写的虚函数地址改变,四,多态是指允许不同类的对象对同一消息做出响应的能力,即同一个接
Java 虚方法表(虚函数)
南极Ou
#OOPjava开发语言
虚方法表Java中的虚方法表(VirtualMethodTable,VMT)是实现动态方法分派和多态的重要机制。它帮助Java运行时系统(JVM)决定在继承体系中调用哪一个方法的具体实现。什么是虚方法表?虚方法表是一个类的内部数据结构,用于支持方法的动态绑定(即运行时多态)。每个类在加载时会生成一个虚方法表,其中包含了类中所有虚方法的地址。方法地址的存储:虚方法表存储了类的所有方法(包括继承自父类
C++中隐藏和重写的区别
嘻嘻嘻Mr.Huang
c++开发语言学习
1、定义和目的隐藏:在继承过程中,子类(派生类)的同名函数屏蔽了基类(父类)中的同名函数。这种机制使得通过子类对象调用该函数时,默认调用的是子类的函数,而基类的同名函数被隐藏。隐藏的目的并非出于设计上的直接需求,而是继承关系带来的自然结果,但可能会导致一些非预期的行为。重写:在继承关系中,子类重新定义了基类中的虚函数。这要求函数名、参数列表和返回类型都与基类中的虚函数完全一致,只有函数体(实现)不
go编程中接口(interface)用法
编程砖家
golanggolanggo接口interface多态
1、编程中多态的概念如果熟悉C++编程,就会知道C++中可以通过虚函数来实现多态,Java等面向对象的语言也有类似的特性。那么是多态呢?多态是面向对象编程中的一个基本概念,允许不同的类通过相同的接口实现不同的功能。简而言之,多态使得一个接口可以有多个实现,从而可以处理不同类型的对象,而无需知道它们的具体类型。在Go语言中,多态主要通过接口实现。接口定义了一组方法,而不同的类型可以实现这些方法,从而
设计模式22-迭代器模式
郑同学zxc
设计模式设计模式迭代器模式
设计模式22-迭代器模式迭代器模式(IteratorPattern)动机定义结构定义结构结构图解释注意事项C++代码推导多态属性(虚函数)实现迭代器1.**返回值问题**2.**对象切割问题**3.**内存管理问题**4.**迭代器生命周期问题**5.**接口设计问题**6.**接口返回值的问题**模版形式实现迭代器为什么以模版形式实现迭代器而不使用多态性来实现迭代器1.**性能考虑**2.**灵
C++中,虚函数的作用详解
草原上唱山歌
C++c++java数据结构
我个人认为虚函数的作用有两个:增加安全性;提醒子类去做该做的事情。提高效率;不是指程序执行效率,而是编码效率。首先我这里要纠正一下:一个函数被定义为虚函数,不代表这个函数未被实现;定义函数为虚函数,表示允许基类使用指针去调用子类实现的这个函数;当你将函数定义为纯虚函数时,才表示函数未被实现。纯虚函数相当于一个接口,主要作用是为了规范,程序员必须实现这个继承类的函数。接下来我们看一个虚函数的经典应用
浅谈面向对象三大特性(着重介绍虚函数实现的多态)
LuukkaToT
c++开发语言
写在前面:文章内容分享为主,如有不当之处,恳请批评指正。今天在使用C++的工厂模式的时候,突然发下有些生疏,就想着发一篇博客,巩固一下,但突然想到工厂模式中设计的继承以及多态的特性,决定先发一篇有关于C++多态的文章,其他的就丢给明天吧!一、面向对象三大特性:首先说一下面向对象的三大特性:继承、封装、多态。其实这三种特性的思想在我们日常生活中也很常见,很多地方都有这三种思想的运用,不一定是在编程的
动态多态的注意事项
Austin_1024
动态多态静态多态虚函数子类重写父类虚函数实现动态多态
大家好:衷心希望各位点赞。您的问题请留在评论区,我会及时回答。多态的基本概念多态是C++面向对象三大特性之一(多态、继承、封装)多态分为两类:静态多态:函数重载和运算符重载属于静态多态,复用函数名。动态多态:通过派生类和虚函数实现运行时多态。静态多态和动态多态的区别:静态多态的函数地址早绑定——编译阶段确定函数地址。动态多态的函数地址晚绑定——运行阶段确定函数地址。下面通过案例讲解多态:#incl
游戏客户客户端面经
Unity游戏开发
游戏游戏开发求职程序员
C#和C++的类的区别C#List添加100个Obj和100int内存是怎么变化的重载和重写的区别,重载是怎么实现的重写是怎么实现的?虚函数表是类的还是对象的用过哪些C++的STLVector底层是怎么实现的Vector添加一百次数据内存是怎么变化Map的底层,红黑树的查询和插入的时间复杂程度,Unordermap的底层实现是什么List的底层是怎么实现的场景里面有6个玩家扮演贪吃蛇进行3v3,场
C++经验(四)-- 基类构造函数和析构函数中调用virtual虚函数?
slowlytalk
C/C++c++开发语言构造函数调用虚函数析构函数调用虚函数
classBase{public:Base();virtualvoidoneFunction()=0;...};Base::Base(){...oneFunction();}classDerived:publicBase{public:Derived(){};virtualvoidoneFunction(){std::cout#includeclassBase{public:Base(consts
虚函数和纯虚函数
计算机内卷的N天
C++基础笔记c++
在C++中,虚函数(VirtualFunction)和纯虚函数(PureVirtualFunction)是面向对象编程中的重要概念,用于实现多态性和抽象类。1.虚函数:-虚函数是在基类中声明为虚拟的成员函数,可以被子类重写。通过使用虚函数,可以实现运行时多态性。-在基类中通过将函数声明为虚函数,可以使子类对该函数进行覆盖(Override)。在运行时,根据对象的实际类型来调用相应的函数。-声明虚函
设计模式-桥接模式(C++)
逆风了我
设计模式设计模式
C++中可以通过使用抽象类和接口来实现桥接模式。桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。在C++中实现桥接模式的步骤如下:1.定义抽象类(或接口):首先,定义一个抽象类(或接口),该类将定义抽象部分的接口。这个抽象类可以包含一些纯虚函数,用于定义抽象部分的操作。2.定义实现类(或具体类):然后,定义一个实现类(或具体类),该类将实现抽象部分的接口。这个实现类
【Go语言如何用 interface 实现多态】
GOLANG ROADMAP
golang
Go语言并没有设计诸如虚函数、纯虚函数、继承、多重继承等概念,但它通过接口却非常优雅地支持了面向对象的特性。多态是一种运行期的行为,它有以下几个特点:1.一种类型具有多种类型的能力2.允许不同的对象对同一消息做出灵活的反应3.以一种通用的方式对待个使用的对象4.非动态语言必须通过继承和接口的方式来实现看一个实现了多态的代码例子:packagemainimport"fmt"funcmain(){qc
inline内联函数为什么不能是虚函数?
九五一
C++知识c++开发语言面试
1.inline内联函数为什么不能是虚函数?虚函数可以是内联函数,内联是可以修饰虚函数的,但是当虚函数表现多态性的时候不能内联。理由如下:内联是在发生在编译期间,编译器会自主选择内联,而虚函数的多态性在运行期,编译器无法知道运行期调用哪个代码,因此虚函数表现为多态性时(运行期)不可以内联。inlinevirtual唯一可以内联的时候是:编译器知道所调用的对象是哪个类(如Base::who()),这
深入理解C++ 虚函数
十启树
C++技术c++javajvm
C++中的虚函数(virtualfunction)是面向对象编程中的一个重要概念,它允许子类重新定义从父类继承的方法。当子类对象被当作父类对象使用时,可以通过子类的方法实现来调用子类的方法,而不是父类的方法。这就是多态(polymorphism)的一种表现。深入理解C++虚函数,我们需要掌握以下几个关键点:虚函数的声明和定义:在父类中,使用virtual关键字声明一个函数为虚函数。在子类中,可以重
【Qt】图形视图框架 之 坐标
Htht111
qt开发语言
QGraphicsView移动图元/场景以及坐标转换QGraphicsView图形视图框架使用(一)坐标变换1.继承QGraphicsProxyWidget类虚函数mousePressEvent、mouseReleaseEvent的参数QGraphicsSceneMouseEventevent->pos()是item坐标系*下的坐标,不是scene场景坐标系下的坐标。:Returnsthemous
c++ 可调用对象的绑定器和包装器
yb0os1
C++c++开发语言
文章目录可调用对象普通函数类的静态成员函数仿函数lambda函数类的非静态成员函数最重要的可被转换为函数指针的类对象包装器function适配器bind可变函数和参数实现回调函数实现替代虚函数可调用对象在C++中,可以像函数一样调用的有:普通函数、类的静态成员函数、仿函数、lambda函数、类的成员函数、可被转换为函数的类的对象,统称可调用对象或函数对象。可调用对象有类型,可以用指针存储他们的地址
94 C++对象模型探索。对象构造语义学 - 继承体系下的对象构造步骤
hunandede
c++开发语言
一.对象的构造顺序二.虚函数的继续观察这个结论是早都知道的:父类的构造函数--->子类的构造函数调用这里使用三个类在vs2017中观察,构造顺序,这里主要是学习方法,有了方法后,在遇见后面复杂的case下可以自己debug//通过反汇编观察classTeacher28grandpa{public:Teacher28grandpa(){coutvirfunc();}结果:Teacher28grand
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