- Android Profiler 卡顿分析教程及案例
summerkissyou1987
android
以下是AndroidProfiler卡顿分析的完整教程及实战案例,结合最新工具操作流程与优化策略:一、卡顿分析操作教程1.环境配置开启GPU调试:设备设置→开发者选项→启用GPU渲染分析和GPUProfiler(需Android5.0+真机)。启动Profiler:AndroidStudio→View→ToolWindows→Profiler→选择目标设备与进程2.核心指标监控指标作用查看位置主线
- android 卡顿和丢帧区别
summerkissyou1987
android
以下是Android卡顿(Jank)与丢帧(FrameDrop)的核心区别详解,结合技术原理与用户感知进行对比:一、本质差异维度卡顿(Jank)丢帧(FrameDrop)定义界面长时间无响应(如点击延迟>200ms)动画/滚动不连贯(如帧率从60fps突降至40fps)触发根源主线程阻塞(耗时计算、I/O、锁竞争)GPU渲染超时或错过垂直同步(VSync)信号关键指标单帧渲染时间>16.6ms(6
- Android Profiler 丢帧分析教程及案例
summerkissyou1987
android
以下为基于最新实践的AndroidProfiler丢帧分析全流程指南及实战案例,结合权威技术文档与优化经验(2025年更新):一、Profiler丢帧分析核心流程环境配置与数据抓取bashCopyCode启用GPU渲染分析(开发者选项)adbshellsettingsputglobalgpu_debug_layers1adbshellsettingsputglobalgpu_debug_ap
- android-性能分析
以下是Android性能分析的完整指南,涵盖核心工具、优化方向及实操方法,适用于2025年开发环境:⚙️一、性能分析工具分类1.官方工具链工具用途关键能力版本适配AndroidProfiler实时监测CPU/内存/网络/能耗火焰图分析、内存泄漏检测(支持Activity/Fragment自动检测)AndroidStudio3.6+Perfetto系统级追踪(替代Systrace)线程调度、GPU渲
- android 各版本特性详情
summerkissyou1987
android
以下是Android主要版本的核心特性与关键技术变更详解,按版本演进顺序整合最新信息(截至2025年):架构与性能演进Android5.0(Lollipop)ART虚拟机:取代Dalvik,预编译优化显著提升应用启动速度,支持64位处理器架构。MaterialDesign:统一视觉语言,引入RecyclerView、CardView等组件。Android8.0(Oreo)后台限制:禁止隐式广播,强
- ReentrantLock-signal()唤醒失败原因
summerkissyou1987
java
以下是Java中signal()唤醒失败的常见原因及解决方案分析:一、核心原因锁未正确持有调用signal()的线程必须持有与Condition关联的锁,否则抛出IllegalMonitorStateException错误示例:未调用lock()直接执行condition.signal()等待线程未进入等待状态目标线程未执行await()时调用signal()会导致信号丢失时序问题:signal(
- 网络故障排查:BGP故障排查
小小小糖果人
网络小知识网络
1、为确保BGP路由争取加入到全局路由表中,首先需要确保BGP路由有效,其次要确保能够在和通过其他路由协议学到的路由比较中优选。2、查看BGP邻居状态2.1如果没有BGP路由表中,未能查询到相匹配的路由信息,需要查看BGP邻居状态是否正常#查看对等体的信息。displaybgppeerStatuscodes:*-DynamicBGPLocalrouterID:10.2.3.4localASnumb
- 网络故障排查:Ping和Tracert命令
小小小糖果人
网络小知识网络
1、Ping和Tracert的用途1.1Ping和Tracert命令检查网络连接是否可达以及分析网络发生故障的位置。其中,Ping用于检查网络连接及主机是否可达;Tracert命令用于测试数据报文从发送主机到目的地所经过的网关。2、Ping命令简介2.1Ping命令主要用于检查网络连接及主机是否可达。Ping功能是基于ICMP协议来实现的:源端向目的端发送ICMP请求(ECHO-REQUEST)报
- vue入门学习时,按照官方的教程生成的vue3项目后,命令行运行npm install出现一堆warn,然后运行npm run dev报错,项目启动失败
67号人生
vue小白学习vue.js学习npmcrypto.hashvue官方示例项目失败
日期:2025年6月27日星期五农历六月初三VUE版本:vue3IDE:vscodevue入门学习时,按照官方的教程生成的vue3项目后,命令行运行npminstall出现一堆warn,然后运行npmrundev报错,项目启动失败运行npminstall出现一堆warn运行npmrundev报错解决办法通过nvm安装较高版本的nodejs,或者手动冲nodejs官网下载。虽然vue官方推荐node
- 活体检测api集成方案-炫彩活体检测助力身份核验
wt_cs
发票识别科技ocr报关单识别接口数据库
现如今,随着人脸伪造技术的不断升级,传统身份核验方式面临严峻挑战,视频中的虚假人脸攻击防不胜防,用户隐私泄露、资金损失等风险如影随形。如何在便捷服务与安全防护之间找到平衡?视频活体检测接口给出了答案。视频活体检测接口,就像一位火眼金睛的安全卫士,能够对上传的视频进行精准检测,瞬间判断视频中的人物是否为真人。它有效抵御了视频中伪造的人脸攻击,一旦检测为真人,便会立即返回一张清晰的人脸照片,为下一步的
- 【CVPR2025】计算机视觉|Salience DETR:显著性目标检测,精度暴涨!
论文地址:http://arxiv.org/pdf/2403.16131v1代码地址:https://github.com/xiuqhou/Salience-DETR关注UPCV缝合怪,分享最计算机视觉新即插即用模块,并提供配套的论文资料与代码。https://space.bilibili.com/473764881摘要本研究旨在解决类DETR方法中存在的计算负担重和对稳定查询选择依赖性高的问题。
- 人脸识别接口&sdk,两张人脸相似度比对
人工智能时代,人脸识别技术正在被广泛应用于金融支付、安防监控、身份验证等多个领域,基于深度学习算法于海量样本训练,人脸识别接口以高精度、低延迟的特性出现在大众视野,成为开发者和企业用户集成人脸识别功能的首要选择之一。人脸识别接口技术服务原理:格式转换:支持BMP、JPG、PNG、TIF等多种常见图像格式;尺寸调整与压缩:建议图像大小控制在200KB左右,确保传输效率与识别质量;图像增强:自动旋转、
- RT-DETR改进|爆改模型|涨点|使用VMamba作为骨干网络(附代码+修改教程)
爆改模型
网络深度学习人工智能计算机视觉
一、文本介绍本文修改的模型是RT-DETR,在原本的RT-DETR中,使用ResNet作为骨干网络,本文使用最新的VMamba(VisualStateSpaceModel)替换ResNet作为RT-DETR的骨干网络。VMamba是一种全新的视觉框架,VMamba结合了CNNs和ViTs的优势,同时优化了计算效率,能够在保持全局感受野的情况下实现线性复杂度。为了解决方向敏感性问题,VMamba引入
- 家用充电桩远程监控安全管理系统解决方案
蓝蜂物联网
物联网远程监控边缘计算物联网
家用充电桩远程监控安全管理系统解决方案在当今电动汽车日益普及的背景下,家用充电桩的安全管理成为了广大车主关注的重点问题。为了实现对充电桩的高效、精准、远程监控,一套完善的家用充电桩远程监控安全管理系统解决方案应运而生。本方案旨在通过先进的物联网技术、云计算、大数据分析以及人工智能等科技手段,构建一个集实时监测、异常预警、故障诊断、数据统计、远程控制于一体的智能化平台,确保充电桩的安全运行及用户充电
- 多模态AI Agent技术栈解析:视觉-语言-决策融合的算法原理与实践
多模态AIAgent技术栈解析:视觉-语言-决策融合的算法原理与实践嗨,我是IRpickstars!总有一行代码,能点亮万千星辰。在技术的宇宙中,我愿做永不停歇的探索者。✨用代码丈量世界,用算法解码未来。我是摘星人,也是造梦者。每一次编译都是新的征程,每一个bug都是未解的谜题。让我们携手,在0和1的星河中,书写属于开发者的浪漫诗篇。目录编辑多模态AIAgent技术栈解析:视觉-语言-决策融合的算
- Android Studio在移动开发中的性能优化案例分析
移动开发前沿
androidstudio性能优化androidai
AndroidStudio在移动开发中的性能优化案例分析关键词:AndroidStudio、移动开发、性能优化、内存管理、CPU优化、APK大小优化、工具链摘要:本文深入解析AndroidStudio在移动开发中的核心性能优化能力,通过内存管理、CPU调度、APK体积优化等典型场景的实战案例,系统讲解Profiler、Lint、Gradle等工具链的深度应用。结合具体代码示例和数学模型,分析内存泄
- 【合集】Qt Widgets Designer 手册(中译版)
LSssT.
QtWidgetsDesigner手册【中译版】qt开发语言
官网链接:https://doc.qt.io/qt-6/qtdesigner-manual.htmlQtWidgetsDesigner手册QtWidgetsDesigner是使用QtWidgets设计和构建图形用户界面(GUI)的Qt工具。有关使用QtQuick的用户界面设计,请参阅QtDesignStudio。您可以采用所见即所得(W-Y-S-I-W-Y-G,whatyouseeiswhatyo
- Android Profiler 功耗分析教程及案例
summerkissyou1987
android
以下是基于最新AndroidStudio工具链的EnergyProfiler功耗分析完整指南及实战案例,结合行业最佳实践和深度优化策略:⚙️一、环境配置与核心功能启用EnergyProfilerAndroidStudio→Profiler图标→连接设备(Android8.0+)→选择目标进程→点击Energy模块关键要求:测试设备需支持batteryhistorian数据采集(推荐Android1
- Kotlin 函数与 Lambda 表达式
Devil枫
安卓kotlin开发语言android
今天继续分享Kotlin学习内容。目标:掌握函数定义、调用、参数传递,以及Lambda表达式的基础用法1.函数:Kotlin的代码模块化工具定义:函数是可重复调用的代码块,用于封装逻辑。语法:fun函数名(参数列表):返回类型{//函数体return结果//可省略(若表达式函数或返回类型可推断)}示例1:基础函数fungreet(name:String):String{return"Hello,$
- 【公司环境下发布个人NPM包完整教程】
公司环境下发布个人NPM包完整教程创建时间:2025年7月2日适用场景:公司电脑,需要临时切换个人账户发布npm包教程概述场景说明环境:公司电脑,已配置公司npm账户目标:临时使用个人账户发布npm包,发布后恢复公司环境关键:确保不影响公司日常工作,保护隐私信息前置条件拥有个人npm账户公司允许临时切换npm账户具备基本命令行操作能力第一步:环境准备和信息收集1.1检查当前npm状态#查看当前登录
- 利器:NPM和YARN及其他
百锦再@新空间
包罗万象npm前端node.jsYARNinstallvue.net
文章目录**1.安装Yarn(推荐方法)****2.验证安装****3.常见问题及解决方法****①权限不足(Error:EPERM)****②网络问题(连接超时或下载失败)****③环境变量未正确配置****4.替代安装方法(如果npm安装失败)****①使用Chocolatey(Windows包管理器)****②使用Scoop****③直接下载安装包****5.卸载Yarn****一、核心特性
- 为什么 Python 是 AI 的首选语言?
文章目录一、简洁优雅,易于上手二、丰富的库和框架1.数据处理与分析2.数据可视化3.机器学习与深度学习框架三、强大的社区支持四、跨平台性和可移植性五、与其他语言的互操作性文章配套代码已上传,点击查看:https://download.csdn.net/download/2501_92578370/91180848在人工智能(AI)技术飞速发展的今天,编程语言的选择对AI开发者来说至关重要。当你翻开
- Unity学习(C#)——字符串的方法
concamy
c#
例1:创建字符串,求字符串长度,判断字符串是否为,取字符串中的字母,字符串相加。namespace_622字符串string{classProgram{staticvoidMain(string[]args){strings="sfdkgnd";
- TypeScript基本类型
一、前言TypeScript是JavaScript的一个超集,它通过添加静态类型系统帮助开发者写出更健壮、可维护性更强的代码。而理解TypeScript的基本类型是学习TypeScript的第一步。本文将带你全面了解TypeScript中的常用基本类型,包括:✅数值类型✅字符串类型✅布尔类型✅null与undefined✅any与unknown✅never与void✅数组类型✅元组类型并通过大量代
- TypeScript编译选项
一、前言在开发TypeScript项目时,一个非常关键的文件就是tsconfig.json。它不仅定义了项目的根目录、模块解析方式,还控制着TypeScript编译器的行为。本文将带你全面了解:✅tsconfig.json的作用✅常用编译选项(compilerOptions)详解✅不同环境下的配置建议(开发/生产)✅配置继承与共享设置✅实际开发中的常见问题与解决方法并通过完整的代码示例帮助你掌握如
- 【C语言小游戏】贪吃蛇
鱼弦
游戏开发c语言数学建模开发语言
鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)贪吃蛇是一个经典的小游戏,以下是贪吃蛇的原理详细解释、使用场景解释,以及一些相关的文献材料链接和当前使用贪吃蛇的产品。原理详细解释:贪吃蛇游戏的原理是在一个有边界的游戏界面上控制一条蛇移动,蛇会不断吃
- HTTP 协议深入理解
大曰编程
java面试http网络协议网络
在Web服务与API设计中,HTTP协议是客户端与服务器通信的基石。本文从协议演进、核心机制、缓存策略、安全特性及面试高频问题五个维度,系统解析HTTP的底层原理与工程实践。一、HTTP协议演进与版本差异1.1版本特性对比版本发布年份核心改进局限性HTTP1.01996基础请求-响应模型,支持GETPOSTHEAD方法无持久连接,每次请求需建立TCP连接HTTP1.11999持久连接(Connec
- RocketMQ 5.x 架构与端口差异、Java客户端代码示例及修改 RocketMQ Proxy 默认端口
RocketMQ5.x端口差异及代码解释端口差异的原因在RocketMQ5.x版本中,端口使用与之前版本不同,主要原因如下:架构变化:RocketMQ5.x引入了新的Proxy模块,作为客户端与Broker之间的中间层默认端口:4.x版本:NameServer默认端口9876,Broker默认端口109115.x版本:Proxy默认端口8080/8081分离设计:5.x将路由发现与消息传输分离,客
- Hadoop入门案例WordCount
码喵喵
hadoopmapreduce大数据
wordcount可以说是hadoop的入门案例,也是基础案例主要体现思想就是mapreduce核心思想原始文件为hadoop.txt,内容如下:hello,javahello,java,linux,hadoophadoop,java,linuxhello,java,linuxlinux,c,javac,php,java在整个文件中单词所出现的次数Hadoop思维:Mapreduce-----》M
- 【设计模式08】桥接器
鼠鼠我呀2
设计模式设计模式java开发语言
前言适用于同业务域下多个维度,每个维度多个方法的情况。比如点咖啡业务域,咖啡有容量和风味两个维度,容量分为大中小,风味有拿铁,卡布奇诺。普通写法会写大杯拿铁,大杯卡布奇诺,。。。,总共要写nxm个类,类爆炸了桥接器将两个维度解耦,通过关联来桥接,类的数量可以将为n+m个UML类图代码示例取数场景,维度一:对象类型,用户维度、订单维度、稿件维度维度二:指标类型,访问量,点击率packagecom.s
- 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