- 软件测试常问面试题【三】
小0同学睡得好
软件测试IT测试tcp/ip网络协议网络
软件测试面试常问问题【三】1、APP无响应是有哪些问题引起的(闪退、崩溃的原因有哪些)版本不兼容,版本没有及时更新分辨率不兼容运行内存不足依赖包没有安装接口的返回值错误导致前端处理不了崩溃响应超时(尤其是启动、退出APP时没有响应会导致超时)网络方面(网络切换,或者网络不佳导致无法做出响应崩溃)2、当客户端(手机)发送一个请求后,出现无影响ANR(空白)可能是网络访问超时。弱网情况、网络差、信号不
- Android 数据库查询对比(APN案例)
Dic-
#AndroidAPPAOSP#DataNetwork(APN)android数据库数据库开发Telephony
功能背景APN数据通常存储在数据库中,由TelephonyProvider提供。当用户进入APN设置界面时,Activity会启动,AOSP源码通过ContentResolver查询APN数据。关键分析点在于这个查询操作是否在主线程执行,因为主线程上的耗时操作会导致ANR。技术演进补充自Android9(API28)起,系统对Telephony.Carriers表的访问增加了权限限制:需要Carr
- Android性能测试总结
软件测试android
1.性能测试目的优化应用程序,提高用户使用体验2.性能测试指标CPU主要关注CPU使用率,CPU使用率过高会导致ANR、Crash、设备发热等问题长时间情况下,CPU占有率应≤85%GPU主要关注GPU是否过度绘制,通常有如下情况:一个像素点绘制了多次,过度绘制会影响动画性能,使其不流畅主线程中执行了太多任务,UI渲染跟不上Sync信号而导致掉帧、卡顿App响应时间常见指标如下:优秀:0~0.4s
- Android异步任务与多线程
2401_89224638
android
ANR的根本原因是:应用未在规定的时间内处理AMS指定的任务才会ANR。另外,人眼可以分辨的时间的160毫秒,超过这个时间就可以感到卡顿,所以要控制好这个时间。1.2.3、事件处理原则事件处理的原则:所有可能耗时的操作都放到其他线程去处理。Android中的main线程的事件处理不能太耗时,否则后续的事件无法在5秒内得到响应,就会弹出ANR对话框。那么哪些方法会在main线程执行呢?1)Activ
- ANR小记
knookda
安卓android
anr的分类当前的事件没有机会得到处理(即主线程正在处理前一个事件,没有及时的完成或者looper被某种原因阻塞住了)。当前的事件正在处理,但没有及时完成.ANR的全称是ApplicationNoResponding,即应用程序无响应,具体是一些特定的Message(KeyDispatch、Broadcast、Service)在应用的UI线程(主线程)没有在规定的时间内处理完,进而触发ANR异常。
- Android研发去美团面试,被面试官用各种原理蹂躏,所幸最终拿到Offer
2401_87029500
android面试职场和发展
一个线程是否只有一个Looper?如何保证一个线程只有一个Looper?多线程的方式有哪些?生产者消费者模式wait和sleep的区别String、StringBuffer、StringBuilder的区别ANR异常发生条件如何分析ANR自定义View和ViewGroup事件处理分发,拦截,处理。GC算法四大引用强,软,弱,虚,并说明下合适GC动画View动画,属性动画,帧动画。再说下View和属
- 【安卓面试】
木啊木啊木
android面试职场和发展
百度-APP相关安卓开发数组排序view流程和surfaceViewrecycleViewview绘制流程停止一个线程停止线程的场景输入一个url观察者模式观察者模式的基本流程:安卓内存共享JNISQLkotlin与java混用的问题Linux命令及原理app启动流程小程序原理加密算法对称加密非对称加密安卓持久化存储方式启动模式和场景ANR以及如何避免数组排序八大排序-及复杂度viewView是用
- 华为APP UI自动化测试岗面试真题,真实面试经历。
自动化测试君
自动化测试接口测试软件测试ui面试职场和发展经验分享软件测试
1.AndroidAPP内存不足时,如何获得内存?系统优先结束被挂起(暂停)的进程,释放内存。2.APP测试常见问题有哪些?原因有哪些?常见的有crash、ANR(应用无响应、卡死),一般由设备碎片化、网络波动大、内存泄漏、代码编写错误。3.APP自动化测试工具开放性问题,带点主观意见:对比其他熟悉的自动化工具的优缺点;自动化的简要方案(简要的同时关键内容请具体)。4.Android与web测试区
- Android-性能优化-ANR-的原因和解决方案
2401_84538474
程序员android性能优化vscode
BroadcastReceiver的事件(onRecieve()方法)在规定时间内没处理完(前台广播为10s,后台广播为60s);Service前台20s后台200s未完成启动;ContentProvider的publish()在10s内没进行完。通常情况下就是主线程被阻塞造成的。2、ANR的实现原理以输入无响应的过程为例(基于9.0代码):最终弹出ANR对话框的位置是与AMS同目录的类AppEr
- 为什么主线程这个死循环不会造成ANR异常呢?
cc_And
原文链接:https://www.imooc.com/article/45165?tdsourcetag=s_pcqq_aiomsgAndroid是由事件驱动的,Looper.loop()不断地接收事件、处理事件,每一个点击触摸或者说Activity的生命周期都是运行在Looper.loop()的控制之下,如果它停止了,应用也就停止了。只能是某一个消息或者说对消息的处理阻塞了Looper.loop
- Android 子线程为什么不能更新UI?
原来是图哥
android线程handler
Android应用的UI是在主线程上进行绘制和更新的。当我们在子线程中直接进行UI更新时,会导致以下问题:1.线程安全问题:多个线程同时操作UI,可能导致UI组件的状态不一致或者出现竞争条件。2.卡顿和ANR:如果在主线程中执行耗时操作,会导致主线程被阻塞,用户界面无法响应用户的输入,甚至可能发生ANR(ApplicationNotResponding)错误。移步:子线程怎么切换主线程?(一)现象
- monkey日志分析
隔壁laowang
上文说到执行命令:adbshellmonkey-pcom.hijingxi--ignore-crashes--ignore-timeouts--throttle1000--ignore-native-crashes-s100-v-v-v50>>D:\0606.txt找到所在目录打开文件:分析log日志开头日志结尾l日志内容分析一般测试结果分析-搜索关键字:1.程序无响应,ANR问题:在日志中搜索“
- ANR问题定位及优化
Chin_style
开发要求-线程ANRANR优化ANR定位
一、前期基础知识储备(1)ANR错误定义:在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作“应用程序无响应”(ANR:ApplicationNotResponding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。因此,在程序里对响应性能的设计很重要,这样,系统不会显示ANR给用户。默认情况下,在Android中Acti
- Android---ANR问题分析
别偷我的猪_09
#性能优化androidandroidstudioide
目录ANR概念超时检测机制如何避免ANR问题?ANR分析ANR问题线上监控ANR概念ANR(ApplicationNotResponse),是指应用程序未响应,Android系统对于一些事情需要在一定时间范围内完成,如果超过预定时间未能得到有效响应或者响应时间过长,都会造成ANR。在Android里,应用程序的响应是由ActivtyManager和WindowManager系统服务监视的。当它监测
- Android 性能优化-ANR 的原因和解决方案
chuhe1989
Android开发android
1、出现ANR的情况满足下面的一种情况系统就会弹出ANR提示输入事件(按键和触摸事件)5s内没被处理;BroadcastReceiver的事件(onRecieve()方法)在规定时间内没处理完(前台广播为10s,后台广播为60s);Service前台20s后台200s未完成启动;ContentProvider的publish()在10s内没进行完。通常情况下就是主线程被阻塞造成的。2、ANR的实现
- APP专项测试方法总结
shanmao001
软件测试自动化测试职场和发展测试用例功能测试测试工具appium
APP专项测试1、网络测试可使用抓包工具辅助网格测试推荐:fiddler,Charles网络切换:2G-3G-4G-wifi-网络信号差–无网网络信号弱:关注是否出现ANR、crash2、中断测试意外中断:来电;短信;闹铃;断网;断电;视频聊天;语音聊天;无响应;系统更新提醒;内存不足提醒;其他app的消息通知任务切换:锁屏;切换到其他应用3、兼容测试不同的机型;不同的操作系统版本;注意:app兼
- Android ANR:Application Not Responding详解
多仔百事宅
一、ANR概述ANR,全称为ApplicationNotResponding,也就是应用程序无响应。如果Android应用的界面线程处于阻塞状态的时间过长,就会触发“应用无响应”(ANR)的错误。此时系统会向用户显示一个对话框,ANR对话框会为用户提供强行退出应用的选项。二、ANR的四种类型在Android系统中,应用程序的响应由ActivityManager及WindowManager两个系统服
- ANR 出现的场景以及解决方案
我看Android
applicationnotresponse简称ANR,应用程序无响应。当应用在5秒内对用户输入或点击等事件无响应时,Android便会认为应用无响应,弹出ANR提示窗1.产生场景activity内对事件5秒无法完成处理BroadcastReceiver内对事件10秒无法完成处理Service的各个生命周期函数在特定时间(20秒)内无法完成处理2.原理Android应用在启动时会创建一个UI线程,
- Android 系统播放器的一些使用注意事项
DON_1007
公司做投屏项目的,需要播放各种客户端推送的直播点播视频,根据做播放器的一些经验,这里总结一些在应用层使用播放器的注意事项和一些优化方法。PS:个人经验之谈,不具备权威性播放器的使用过程中常能见到以下的几种问题:黑屏有声音播放失败播控状态保护ANR倍速播放的问题一、黑屏有声音黑屏有声音是一种见的比较多的问题,能导致这种问题的原因很多。大致有以下几类:播放器调用异常播放器抢占播放器底层创建或解码异常播
- ANR 出现的场景,定位办法以及解决方案
Joseph_L
ANR出现的场景,定位办法以及解决方案1.定义Applicationnotresponse,简称ANR,即应用程序无响应。当应用在5秒内对用户输入或点击等事件无响应时,Android便会认为应用无响应,弹出ANR提示窗。2.原因Android应用在启动时会创建一个UI线程,该线程只负责UI界面更新,在该线程中进行耗时操作会导致线程阻塞,可能引起ANR。3.产生场景Activity内对事件5秒无法完
- Android ANR问题基本分析方法
汤圆拓海
androidjava
对于ANR问题的介绍,首先可以参考google的官方文档ANR一、ANR的种类ANR的问题表现为以下4种:输入调度超时:如果您的应用在5秒内未响应输入事件(例如按键或屏幕触摸)。日志的标志性打印为://输入事件未响应的日志打印Reason:Inputdispatchingtimedout([GestureMonitor]edge-swipe(server)isnotresponding.Waite
- Android&iOS崩溃情况总结
a653202
客户端测试androidiosjava
掌握了崩溃的情况,不至于盲目测试,也能给开发带来有利信息,便于开发排查定位问题。因此,作为测试工程师,很有必要掌握该项技能。1.Android崩溃1.1ANR(ApplicationNotResponse)发生场景:应用发生ANR崩溃症状:系统弹出窗口询问用户选择“ForceClose”或者“Wait”。“ForceClose”将杀掉发生ANR的应用进程。“Wait”将会等待系统择机恢复此应用进程
- 记一次 Android CPU高使用率排查
Gerry_Liang
性能优化CPU性能优化
文章目录背景排查高占用的进程adbshelltoptop-b-H-n1|grep29337(打印各线程cpu使用详情)kill-329337(生成trace文件)adbpull/data/anr/Users/gerry.liang/Desktop定位问题补充说明:背景测试同学反馈我们的AppCPU使用率90%居高不下,经过一番艰难的排查后定位到了问题,为了记录此次过程于是有了此博客的构思,但为了避
- getContentProviderImpl占满binder导致应用anr的案例分析
lynn_doo
背景:bug#813706日志路径:Z:\stability_doc\case\binderfull_getcontentprovidersystemui,settings等一直anr导致系统无法正常运行。通过查看trace确定systemuianr的直接原因是由于SS的binder线程被占满且都在getContentProviderImpl时wait,无法及时响应-----pid1863at20
- Android进阶知识:ANR的定位与解决
hudawei996
android
1、前言ANR对于Android开发者来说一定不会陌生,从刚开始学习Android时的一不注意就ANR,到后来知道主线程不能进行耗时操作注意到这点后,程序出现ANR的情况就大大减少了,甚至于消失了。那么真的是只要在主线程做耗时操作就会产生ANR吗?为什么在有时候明明觉得自己没在主线程做耗时操作也出现了ANR呢?一旦出现莫名其妙的ANR,怎么定位导致ANR的产生的位置和解决问题呢?那么接下来就来一个
- HarmonyOS 线程讲解(任务分发、线程通信)
OpenHarmony_小贾
移动开发HarmonyOSOpenHarmonyharmonyos华为架构移动开发鸿蒙开发
一、简单说明说起鸿蒙的线程就不得不说Android的线程,相信都知道在Android中,每一个应用都会有自己的主线程和其他的子线程,主线程负责处理大部分业务,负责UI的显示和更新等操作,所以又称之为UI线程,同时,我们还知道不能够在UI线程中进行一些耗时操作,比如网络访问、数据读写等一些功能会启动一个子线程,或者异步线程来进行,这样做可以避免出现程序无法响应这样的情况,也就是ANR(Android
- [小折腾] SharedPreferenceImpl$EditorImpl#apply引发的ANR场景
newmandirl
androidandroidanr
书本《Android工程化最佳实践》(作者金凯)中谈到SharedPreference会有ANR的可能,以及贴出关键源码(api19)和相关的log日志,读者可以先行看看。目前可以确定的是,若写文件真的耗时,不管在哪个线程执行apply,都有可能引发ANR。来个时序图,基于androidapi26可以看到,如果work耗时长,UI线程必定会阻塞等待,越长越容易引发ANR想要折腾验证,本人是通过一些
- 解决使用SharedPreferences 造成的卡顿、ANR问题
锐湃
优化系统层面内容android
背景在上线ANR监控平台后,线上收集到了较多的ANR日志,从火焰图信息上看,函数阻塞在了QueuedWork相关函数上,本文主要介绍的这一现象的原因以及如何解决这一问题。本文介绍的解决方案,已放到github上https://github.com/Knight-ZXW/SpWaitKiller,供参考实现SP任务阻塞主线程导致ANR的原理首先简单介绍下QueuedWork这个类,QueuedWor
- EventBus 3.0 线程模式说明
半截铅笔
ThreadMode:POSTING默认的线程模式,如果使用事件处理函数指定了线程模型为POSTING,那么该事件在哪个线程发布出来的,事件处理函数就会在这个线程中运行,也就是说发布事件和接收事件在同一个线程。此外,在线程模型为POSTING的事件处理函数中尽量避免执行耗时操作,因为它会阻塞事件的传递,甚至有可能会引起ANR。ThreadMode:MAIN事件的处理会在UI线程中执行。此外也不能在
- android ANR异常定位分析
微罗妮卡
一.问题定位1.发生anr异常会在data/anr目录下存在异常记录微信图片_20230328095414.png微信图片_20230328095420.png使用adbpulldata/anr因为没有权限会获取失败更换命令使用adbbugreport打包anr信息成功后会告知存放位置。解压后文件目录:1679968766837.png文件夹中两处都有相关错误信息(1)FS/data/anr下这个
- 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