- qt多线程使用方式及QMetaObject::invokemethod跨线程调用
从小就很火男
qt开发语言
使用qt官方推荐的多线程使用方式,编写工作线程类MyThread,继承QObject,创建QThread线程对象thread。MyThread调用movetothread(thread),这样子在MyThread里面声音的singal及槽函数都会在子线程中运行。直接在主线程调用QMetaObject::invokemethod,可以实现跨线程调用。工程线程类代码如下:##hpp#ifndefMYT
- QMetaObject::invokeMethod与QThreadPool线程池使用
0x7CF
QT事件循环和元对象系统qt
QMetaObject::invokeMethod:用于通过元对象系统调用对象的方法(元对象系统允许在运行时动态地调用方法、访问属性、连接信号和槽等)以下条件需要满足才能使用元对象系统类必须是QObject或其子类:只有继承自QObject或其子类的类才能使用元对象系统。QObject提供了元对象系统的支持。类需使用Q_OBJECT宏进行声明:在类的声明中,使用Q_OBJECT宏来告知元对象编译器
- [Qt5] QMetaObject::invokeMethod使用
丶布布
#GUI◎QT5qt开发语言
博客主页:https://loewen.blog.csdn.net欢迎点赞收藏⭐留言如有错误敬请指正!本文由丶布布原创,首发于CSDN,转载注明出处现在的付出,都会是一种沉淀,只为让你成为更好的人✨文章预览:一.前言二.作用三.使用场景一.前言QMetaObject::invokeMethod结合Qt::QueuedConnection的作用是实现跨线程安全调用或异步执行方法。其核心目的是确保方法
- 基于QT(C++)实现用户界面系统
神仙别闹
课程设计qtc++ui
用户界面系统本次作业实现了随机化芯片设计方法中芯片的手动设计与芯片流速与浓度的关联计算与图形化显示,基于Qt设计了一个MicrofluidicChipSimulation用户界面系统。具体功能用户可以通过工具栏上的Create新建所需芯片,可自定义的参数包括:芯片大小、输入输出管道的位置用户可以在芯片界面单击芯片内某根管道,切换管道的开闭,进行直观的修改用户可以通过工具栏上的Random随机生成芯
- 【QT】关于qcheckbox常用的三个信号,{sstateChanged(int) clicked() clicked(bool)}达成巧用
我不是程序猿儿
QT之路qt开发语言
在Qt中,QCheckBox是一个提供复选框功能的小部件,允许用户选择和取消选择一个或多个选项。QCheckBox提供了几种信号来响应用户的交互,其中stateChanged(int),clicked(),和clicked(bool)是常用的。下面解释这些信号的意义及其用法。1.stateChanged(intstate)这个信号在复选框的状态改变时发出。状态改变可以是用户交互(如点击复选框改变选
- Python + PyQt6 制作视频播放器(包含基本功能)
宠..
python开发语言qt
使用Python+PyQt6制作一个视频播放器,包含基本功能,可以自行拓展,界面风格类似于Windows10效果展示:首先需要导入所需的库importsys,base64fromPyQt6.QtCoreimportQt,QUrl,QSize,QPropertyAnimation,QTimer,QPoint,QByteArrayfromPyQt6.QtGuiimportQIcon,QFont,QMo
- 手搓全自动文章多平台发布系统:4、脚本方式加载不同的站点
PyAIGCMaster
自动化操作操作收费专栏python开发语言
前面,我们已经可以方便的读取站点,并完成了相关浏览器的测试,下面的重点是传入一个数字,让通过这个数字自动打开网页。然后我们会根据情况,进行是否已经登录账号的判断。main.py的代码如下:importsysfromPyQt6.QtWidgetsimportQApplicationfrommodules.ui_componentsimportTableManager#导入界面类if__name__=
- 军事级加密通信系统——自毁消息的TEE可信执行环境
闲人编程
网络动态安全管理隐私保护网络安全可信执行环境TEE自毁消息
目录自毁消息的TEE可信执行环境一、引言二、理论背景与安全意义2.1自毁消息技术概述2.2TEE可信执行环境2.3自毁消息与TEE的结合三、系统架构与流程设计3.1系统整体架构四、加密算法与安全性分析4.1会话密钥生成4.2对称加密与自毁机制4.3安全性分析五、基于PyQt5的GUI设计5.1设计要求六、完整代码实现七、案例展示与测试八、总结与自查九、参考资料结语自毁消息的TEE可信执行环境一、引
- Qt属性系统-Property
LoveXming
Qt技术qt数据库开发语言
Qt属性系统-Property1.Q_PROPERTY的概念 Q_PROPERTY是Qt中的一个宏,用于在类中声明属性,使这些属性可以在QML中使用。它基于Qt的元对象系统,提供了信号槽机制,用于对象间通信。Q_PROPERTY的主要作用是将类的成员变量或成员函数与属性关联起来,从而实现属性的自动化处理,如绑定、序列化和动态属性设置。(我们本次不讲QML,所以会忽略QML的使用部分)2.Q_PR
- python+PyQt5基础详细教程
酸奶的成长记
python基础
fromPyQt5.QtWidgetsimportQApplication,QWidgetimportsysif__name__=='__main__':app=QApplication(sys.argv)#每个PyQt5应用都必须创建一个应用对象。sys.argv是一组命令行参数的列表。Python可以在shell里运行,这个参数提供对脚本控制的功能。#QWidge控件是一个用户界面的基本控件,
- 使用Python+PyQt5编写图片(.ico)格式转换器
W金刚葫芦娃W
python开发语言
功能:使用Python将任意图片格式转换成.ico图标格式没错!!!就是看不惯某些资本,换个图片格式还收费!一、使用到的模块这里使用到两个模块:PyQt5和Image,前面这个需要手动安装,后面这个一般是自带得pipinstallImagepipinstallPyQt5二、python代码注意:这里做了一个PyQt5的可视化界面方便使用,如果不想用PyQt5,也可以根据我的代码提示,将图片转换的那
- 【CXX-Qt】5.2 Crate 组织
Source.Liu
CXX-Qt(完成)qtc++rust
CXX-Qt由crates/目录下的多个crate组成。本页概述了每个crate的目标以及它与其他crate的区别。⭐cxx-qt-主角cxx-qt-build-建筑工人cxx-qt-gen-CXX-Qt的核心cxx-qt-lib-“标准”库cxx-qt-lib-extras-书架cxx-qt-macro-cxx-qt-gen的前端qt-build-utils-使用Qt构建cxx-qt-cmake
- Qt Creator里面添加Python库
吃草的骆驼
C++QTlibrarypythonQtCreator
测试环境:Win7,QtCreator3.0,Python2.7在项目名称右键,点AddLibrary。直接上图,要特别注意的是,那个Add''d''suffixfordebugversion一定不能勾选!!最终你的.pro文件里面一定要是这样的(把Qt自动加的”CMD“删去):win32:LIBS+=-LD:/Python27/libs/-lpython27INCLUDEPATH+=D:/Pyt
- QT运行导入python(pytorch)程序进行深度学习(qmake)
憨猪在度假
c++python开发语言qtc++pyqt
这个问题困扰了四天,终于解决了,记录一下。1.需要一个完整的python能够运行pytorch环境,这里我已经搭建好了2.QT需要安装MCSV编译器(必须用这个,因为WINGW不支持.lib的python库)参考这个教程:Qt添加MSVC2017编译器(2022年保姆级教程,不安装完整VS)_qtmsvc2017-CSDN博客安装完之后,你的QT会多出几个kit,你需要使用64位的MSVC的编译器
- QT串口助手(五):文件操作
树 哥
QT应用笔记qt串口通信c++
作者:zzssdd2E-mail:zzssdd2@foxmail.com一、前言开发环境:Qt5.12.10+MinGW功能文件的发送数据的保存知识点QFile类的使用QTimer类的使用文本的转码与编码识别QPushButton、QProgressBar控件的使用二、功能实现本章功能主要包含两个方面,一是通过串口发送选定的文本文件,二是将接收的数据保存为本地文本文件。最后还有对《QT串口助手(三
- Qt编写简单Tcp通信server端
伏彦
Qt学习qttcp通信最简单
参考:http://www.cnblogs.com/findumars/p/5838531.html新建一个widgetapplication一路确定在新建的.pro文件中添加QT+=network在.h文件中添加头文件#include#include.h文件也不长直接贴上来算啦#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include#include#inclu
- Qt内存管理机制,信号与槽,元对象系统---------华清远见
m0_63189507
qt开发语言
1.内存管理是指程序对计算机内存资源的分配和使用内存管理的目的是高效、快速分配内存资源并在适当的时候释放和回收内存资源。 常见的内存管理机制:垃圾回收机制(.Net/Java),手动(C/C++),对象树(QT) 简而言之: 所有继承自QOBJECT类的类,如果在new的时候指定了父亲,那么它的清理时在父亲被delete的时候delete,所以如果一个程序中,所有的QOBJECT类都指定了父
- 【QT入门】 Qt内存管理机制详解
不吃~香菜
QT入门qt开发语言内存管理对象树智能指针
往期回顾:【QT入门】Qt槽函数五种常用写法介绍-CSDN博客【QT入门】Qt实现自定义信号-CSDN博客【QT入门】Qt自定义信号后跨线程发送信号-CSDN博客【QT入门】Qt内存管理机制详解Qt中的内存管理主要是通过对象树和智能指针来实现的,下面一一列举各类方法:一、对象树(ObjectTree):1、什么是对象数:Qt中的对象可以形成一个层次结构,其中一个对象可以拥有子对象。当父对象被销毁时
- Qt的内存管理机制
fengbingchun
QtQt
在Qt中,显式使用new创建的对象通常不需要显式调用delete来释放内存,这是因为Qt提供了一种基于对象树(ObjectTree)和父子关系(Parent-ChildRelationship)的内存管理机制。这种机制可以自动管理对象的生命周期,确保在适当的时候释放内存:在Qt中,每个QObject或其派生类(如QWidget、QPushButton)都可以有一个父对象(Parent)。当创建一个
- 重温Mqtt
Mr_Chenph
mqtt
几点说明MQTToverTCP:监听端口:1883用于传统的MQTT客户端,通过TCP进行通信。配置了基本的代理参数,如超时和缓冲区大小。MQTToverSSL/TLS:监听端口:8883用于需要加密通信的MQTT客户端。配置了SSL证书和私钥路径。MQTToverWebSocket:监听端口:80用于通过WebSocket进行通信的MQTT客户端,适用于需要穿越防火墙或在浏览器中使用的场景。配置
- linux arm64安装PYQT5
Xiangming Zhou
python
原链接:原文链接:https://blog.csdn.net/weixin_50005386/article/details/141460070此链接遇到点问题,给管理员权限就行1、安装依赖环境sudoapt-getinstallcmakegccg++pip3install--upgradepippip3installwheelsetuptoolssudoapt-updatesudoapt-get
- docker环境下arm平台安装qt笔记
边边复边边
ubuntudockerqt5
1、下载qt-everywhere-opensource-src-5.9.0.tar.xz2、拷贝到docker下arm平台上dockercpqt-everywhere-opensource-src-5.9.0.tar.xz容器id:/home/qt5.93、解压tar-Jxv-fqt-everywhere-opensource-src-5.9.0.tar.xz4、安装编译工具gcc,g++,ma
- Qt 5.15.1 Android开发环境搭建
Qt开发老杰
qtandroid开发语言c++
开发环境:Qt版本:Qt5.15.1环境:Windows101.Android构建工具环境安装JDK:首先自行安装jdk1.8并配置JAVA_HOME环境变量AndroidSDK:在"工具->选项->设备->Android"页面"SDKManager"中安装AndroidSDKNDK:同上,安装NDK注意:在5.15.1中默认SDK和NDK版本为{"common":{"sdk_tools_url"
- Docker下ARM64架构的源码编译Qt5.15.1,并移植到开发板上
Daydreamer .
Qt操作系统qtlinuxarm开发dockerNVIDIA
Docker下ARM64架构的源码编译Qt5.15.1,并移植到开发板上1、环境介绍QT版本:5.15.1待移植环境:jetsonnano系列开发板aarch64架构(arm64)编译环境:虚拟机Ubuntu18.04(x86_64)2、简介我们在Windows上完成Qt项目的开发后,一般来说需要将项目移到开发板中运行。但是开发板中没有安装或者安装QT的版本过低,所以需要我们进行重新安装。如果对Q
- C++使用QtHttpServer开发服务端Server的Http POST接口和客户端Client示例
BigBookX
Qtc++qthttp
ClientHTTPPOST假设http://127.0.0.1:8888/post/是一个能够接受POST请求的路径,我们想要向它提交一段json数据,用Qt可以这样实现:SupposewewanttomakeanHTTPPOSTwithjsonbodytohttp://127.0.0.1:8888/post/.QCoreApplicationapp(argc,argv);QNetworkAcc
- 【Q&A】组合模式在Qt有哪些应用?
浅慕Antonio
Q&A设计模式qt
在Qt框架里,组合模式的设计应用较为广泛,以下是一些具体的例子:1.QObject及其派生类体系QObject是Qt中绝大多数类的基类,它构建了一个树形的对象结构,这和组合模式的理念相契合。每个QObject对象都可以有父对象和子对象,借助setParent()方法能够构建对象树。当父对象被销毁时,其所有子对象也会被自动销毁。#include#include#includeintmain(inta
- C++QT复习
小徐的记事本
#QTqt开发语言
1.信号和槽class类名{ Q_OBJECT publicslots: 槽函数 signals: 信号函数};1.1通过SignalsAndSlotEdit进行连接只支持QT类提供的信号和槽函数1.2通过QT组件,右键转到槽要求信号函数是QT类提供,槽函数自定义1.3自定义的信号函数和槽函数emit信号函数名(实参表);需要手动的进行连接(connect)1.4信号和槽函数进行
- QT USB设备开发
QT性能优化QT原理源码QT界面美化
qtqt6.3qt5c++QT教程
QTUSB设备开发使用AI技术辅助生成QT界面美化视频课程QT性能优化视频课程QT原理与源码分析视频课程QTQMLC++扩展开发视频课程免费QT视频课程您可以看免费1000+个QT技术视频免费QT视频课程QT统计图和QT数据可视化视频免费看免费QT视频课程QT性能优化视频免费看免费QT视频课程QT界面美化视频免费看1QT_USB设备开发基础1.1USB设备基础概念1.1.1USB设备基础概念USB
- C++11&QT复习 (五)
嘤国大力士
QT_C++c++qt数据库
文章目录**Day6-2成员访问运算符重载(2025.03.25)****1.复习****2.成员访问运算符重载****2.1箭头运算符(`->`)重载****(1)语法****2.2解引用运算符(`*`)重载****(1)语法****3.代码分析****3.1代码结构****3.2代码解析****(1)`Data`类****(2)`SecondLayer`类****(3)`ThirdLayer`
- C++11&QT复习 (三)
嘤国大力士
QT_C++c++qt开发语言
文章目录@[toc]Day5-2文件IO(2025.03.24)1.缓冲区与刷新1.1常见的缓冲刷新方式2.文件读写操作2.1读取文件2.2写入文件2.3追加模式写入2.3完整代码3.文件定位操作4.字符串IO5.配置文件解析示例6.完整代码7.二进制文件操作总结Day5-2文件IO(2025.03.24)1.缓冲区与刷新在C++的标准输入输出流(iostream)中,I/O操作通常会涉及缓冲区,
- 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