- OPPO Android面试题及参考答案 (下)
大模型大数据攻城狮
安卓面试android面经kotlinflutter面试okhttpART垃圾回收
讲一下TCP每接收多少数据包进行一次处理(结合项目)?在不同的TCP应用项目中,每接收多少数据包进行一次处理并没有一个固定的统一标准,它会受到多种因素的影响,以下从常见的项目场景来分析。在网络文件传输项目中,接收方一般不会严格按照固定数量的数据包来进行处理。通常是一边接收数据包,一边将接收到的数据按照文件的格式规则进行组装。比如要接收一个大的视频文件,TCP将视频文件分割成多个报文段(数据包)进行
- 安卓之ANR
巨蟹座的爱情
安卓
ANR是什么?怎么样避免ANR?安卓中,如果你的应用有一段时间响应不灵敏,系统会向用户显示一个对话框这个对话框称作应用程序无响应(Applicationnotresponding)对话框,用户可以选择让程序继续进行,但是,他们在使用你的程序时并不是每次都处理这个对话框。因此,在程序里对响应性能的设计很重要,这样,系统不会显示ARN给用户。Activity5秒broadc10秒耗时的操作workth
- Android性能优化(Memory)
weixin_33901641
uishell操作系统
性能相关:UI卡顿/ANR/内存泄漏——>OOM内存泄漏的本质:较长生命周期对象持有较短生命周期的引用导致,较短引用没法释放内存。GcRoots:GarbageCollector的对象,收集非GCRoots的引用对象,通常的GCRoot有哪些?www.jianshu.com/p/dcfe84c50…通过SystemClassLoader或者BootClassLoader加载的class对象,通过自
- Android ANR分析总结
峥嵘life
androidandroidjava
AndroidANR分析总结文章目录AndroidANR分析总结一、前言1、什么是ANR?为什么会发生ANR?2、系统对ANR的检测机制二、ANR分析思路1、看logcat日志2、查看ANR堆栈日志(需要root权限)3、查看CPU使用率三、真机模拟ANR产生并对比看看日志情况1、Activity主线程Sleep6秒(1)产生的logcat主要日志:(2)ANR堆栈文件:2、Activity主线程
- ARTHook卡顿检测:原理剖析与Kotlin实战指南
时小雨
性能优化kotlinandroid
本文深入解析ARTHook卡顿检测核心原理,提供完整Kotlin实现方案,助你精准定位性能瓶颈一、卡顿检测核心原理Android系统通过消息循环机制驱动UI更新,主线程卡顿本质上是单条消息处理超时。ARTHook通过监控消息处理时长来检测卡顿:LooperMessageQueueHandlerDetectorStackSamplerloop()next()dispatchMessage()埋点记录
- Android面试准备之Android基础
北诺南兮
androidjava面试
一、Handler机制创建一个Handler//提示已过时Handlerhandler=newHandler();Handlerhandler=newHandler(Looper.myLooper());隐式指定Looper的Handler初始化方法已被Android11报过时,根据注释,是由于不指定Looper在一些场景下会导致任务丢失或程序崩溃,比如没有Looper的线程。publicstat
- Android 内存优化实战指南
找藉口是失败者的习惯
Android优化篇android
文章目录前言1.什么是内存优化2.常见内存优化实战案例与原理分析2.1优化图片加载2.1.1解决方案2.2解决内存泄漏问题2.3优化数据结构常见数据结构优化原则具体优化方案与实战案例前言在移动应用开发中,内存优化一直是提升性能、避免崩溃、改善用户体验的重要任务。尤其在内存有限的Android设备上,优化内存使用能有效避免ANR(应用无响应)和OOM(内存溢出)问题。本文将结合常见场景和实际案例,带
- Android中的anr定位指导与建议
StramChen
androidjava
1.背景8月份安卓出现了一次直播间卡死(ANR)问题,且由于排查难度较大,持续了较长时间。本文针对如何快速定位安卓端出现ANR问题进行总结和探讨.这里大致补充一下当时的情况,当时看到情景的是从某一个特定的场景下进入直播间后整个直播间界面立刻就卡住了,由于进入直播间后并没有做额外的操作就卡住,这给排查带来了非常大的困难.2.相关排查方法我们就以本次直播间卡住问题为例,逐一分析整个问题的排查方法和步骤
- CVTE Android面试题及参考答案(100道题)
大模型大数据攻城狮
android大厂面试android面试移动开发安卓面试大厂春招大厂校招
目录插件化组件化合并相似接口抽象通用方法使用接口代理引入设计模式编写源代码资源文件准备编译资源文件编译源代码生成dex文件打包APK文件技术能力提升项目经验积累职业发展知识分享与团队协作建立良好的沟通机制明确团队目标和职责尊重和理解团队成员采用合适的解决方法建立团队凝聚力性能优化兼容性问题帧动画属性动画转场动画动画集合基于物理的动画内存管理优化代码优化资源管理优化多线程优化虚拟机参数调整内存优化性
- 招商银行Android面试题及参考答案
大模型大数据攻城狮
androidandroid面试安卓面经MVP模式MVC模式ANRLooper
目录AndroidActivity的生命周期Fragment的生命周期Activity四大启动模式Android中的四大组件Android的线程通信方式Android中的布局类型、布局优化方法及常用标签Android中解决多线程冲突的方法Android图片缓存与加载的实现方式Collection和Collections的使用区别HashMap的底层结构实现ConcurrentHashMap的底层结
- GridView性能优化笔记
hubinjisu
最近项目中的一个复杂的GridView在测试们的狂轰滥炸下,不堪重负,频频出现ANR,这不得不让我重新审视自己原创的引以为傲的ViewItem布局,结合一些网上的优化方案,大概有如下几个优化方式:1.使用viewHolder来减少刷新压力(目前早已被潜规则)2.布局内部尽量减少层级,主要考虑使用RelativeLayout替代部分LinearLayout进行此优化3.布局控件位置尽量事先定好,避免
- Android13 应用被冻结导致ANR问题处理
五八哥
AndroidFramework
问题描述Android13项目,应用一段时间无操作后再点击操作会报ANR异常导致应用崩溃。原因分析:Android11QPR3或更高版本支持AndroidFreezer。此功能用于停止执行缓存的进程,并通过让可能会试图在缓存期间运行的应用执行不当行为来减少资源用量。框架通过将进程迁移到冻结的cgroup来冻结缓存的应用;这可以减少活跃缓存应用存在的活跃和空闲CPU消耗)由于应用无操作,系统将应用冻
- EventBus 3.0 使用讲解
_Anonymous_.
AndroidEventBus事件总线EventBus3.0EventBus3.0使用
相关引用:https://www.jianshu.com/p/a040955194fc《Android进阶之光》第七章EventBus出现的原因EventBus是一款针对Android优化的事件发布/订阅框架,为了简化并且高质量地在Activity、Fragment、Thread和Service之间通信,同时解决各组件之间高耦合的问题,同时仍能高效地通信。传统的事件传递方式包括:Handler、B
- 【无标题】Android消息机制
Frank_HarmonyOS
android
消息机制是指Android系统中的线程间通信机制,该机制负责处理事件的分发和处理。在Android开发中,消息机制通过几个核心组件协作完成任务:Looper、Handler、Message和MessageQueue。一、UI线程Android应用启动时会创建一个主线程,也就是UI线程。UI线程是应用程序的入口,并且是唯一的,负责管理UI界面和分发用户事件。由于UI操作涉及到界面更新,这些操作必须在
- Android面试问答题总结
qq_孤小狼
android面试
1.什么是Activity?四大组件之一,一般的,一个用户交互界面对应一个activitysetContentView(),//要显示的布局button.setOnclickLinstener{},activity是Context的子类,同时实现了window.callback和keyevent.callback,可以处理与窗体用户交互的事件.我开发常用的的有FragmentActivitiy,L
- JSON解析性能优化全攻略:协程调度器选择与线程池饥饿解决方案
Android洋芋
json性能优化CPU密集型任务线程池饥饿Kotlin协程内存优化Kotlin协程
简介JSON解析是现代应用开发中的基础操作,但在使用协程处理时,若调度器选择不当,会导致性能严重下降。特别是当使用Dispatchers.IO处理JSON解析时,可能触发线程池饥饿,进而引发ANR或系统卡顿。本文将深入剖析这一问题的技术原理,提供全面的性能检测方法,并给出多种优化解决方案,帮助开发者在复杂JSON解析场景下获得最佳性能表现。JSON作为一种轻量级的数据交换格式,在前后端通信、数据存
- Android进阶之路 - 网络请求中user-agent的使用
远方那座山
Android进阶之路#项目开发知识点归纳Androiduser-agentUA
首次听到user-agent的概念,及时来恶补一下~关联篇-网络请求OkHttp的入门使用适用于我的OkHttpUtils网络请求中user-agent的使用如使用场景在WebView内,即可关注下那些关于WebView的回忆~整合了入门使用、监听加载状态、优化加载样式、多场景后退键处理、双端交互流程、交互常见问题、header、user-agent传值、API概述等Baby当你老了,我们都在干嘛
- android进阶篇09、电量与网络优化简述
ZFDS1188
android网络
2、电量优化我们的应用可以从以下三个方面增加电池续航减少操作是否存在多余操作,例如缓存已下载的数据,而不是每次都重新下载推迟操作可以将某些不紧急的操作在设备充电或者wifi连接的时候再执行合并操作服务器请求不同的接口,是否可以进行合并等操作3、电量消耗分析工具Androidstudio自带的profiler分析工具就有电量的分析首先在真机或者模拟器中启动应用打开profiler界面,选中应用进程,
- 得物Android面试题及参考答案
大模型大数据攻城狮
android面经安卓面试双亲委托kotlinokhttp双重检验设计模式
简单介绍一下HashMap的原理(包括存储结构、哈希函数、碰撞处理等)HashMap是Java中常用的哈希表实现,基于哈希原理存储键值对。其核心原理涉及存储结构、哈希函数和碰撞处理三个关键部分。存储结构:HashMap采用数组+链表+红黑树的复合结构。数组是HashMap的主体,每个元素称为桶(Bucket)。当发生哈希冲突时,相同哈希值的元素会以链表形式存储在桶中。当链表长度超过阈值(默认8)且
- Android 的事件分发机制
zhifanxu
android
参考文章:Android面试题精选:讲一讲Android的事件分发机制-腾讯云开发者社区-腾讯云
- Kotlin协程优化Android ANR问题
时小雨
kotlinandroid
引言在Android开发中,ANR(ApplicationNotResponding)是用户体验的致命杀手。当主线程被耗时操作阻塞超过阈值(5秒前台/10秒后台),系统会直接弹窗提示应用无响应。本文将深入剖析如何通过Kotlin协程将耗时操作移出主线程,并结合完整代码示例,覆盖网络请求、数据库操作、文件读写等高频场景,助你彻底解决ANR问题。一、ANR的核心原因与协程优势1.1ANR触发场景场景类
- Android内存调优学习总结(OOM与ANR)
每次的天空
面试学习总结三合一专栏android学习
OOM面试官:"请谈谈你对Android中OOM的理解。"你:"OOM,即OutofMemoryError,指的是当应用程序向系统申请内存,而系统无法分配足够的可用内存时抛出的错误,这通常会导致应用崩溃。发生机制:Android系统为每个应用分配了有限的堆内存(HeapSize)。当应用占用的内存(包括Java对象、Bitmap、Native内存等)持续增长,超出了这个限制,并且垃圾回收器(GC)
- Android第六次面试总结之Java设计模式篇(一)
每次的天空
Java设计模式专栏android面试java
一、单例模式在Android面试中的核心考点1.Android中如何安全实现单例?需注意哪些坑?(字节跳动、美团面试真题)解答:Android中实现单例需重点关注Context泄漏、线程安全和反射/序列化攻击。推荐实现:静态内部类(线程安全+避免内存泄漏)publicclassAppManager{privateContextcontext;//静态内部类持有实例(类加载时初始化,线程安全)pri
- Android 性能优化入门(一)—— 数据结构优化
tmacfrank
Androidandroid性能优化数据结构
1、概述一款app除了要有令人惊叹的功能和令人发指交互之外,在性能上也应该追求丝滑的要求,这样才能更好地提高用户体验:优化目的性能指标优化的方向更快流畅性启动速度页面显示速度(显示和切换)响应速度更稳定稳定性避免出现应用崩溃(Crash)避免出现应用无响应(ANR)更省资源节省性内存大小安装包大小耗电量网络流量响应速度一项就主要取决于数据结构和算法。2、ArrayList与LinkedListAr
- Android卡顿检测与修复
斗锋在干嘛
android
一、基础检测层在基础卡顿检测方面,我主要关注:使用系统工具:开发者选项中的GPU呈现模式分析Systrace抓取关键帧耗时ProfileGPURendering工具简单代码检测:Choreographer.FrameCallback监控帧耗时主线程耗时方法定位(Looper日志)二、自动化监控层在自动化监控方面,我会实施:基于消息队列的监控方案:通过Looper.setMessageLogging
- Android性能优化-检测App卡顿
augfun
简书转载
在移动APP性能评测-流畅度评测中,我们介绍了如何准确客观评价APP的流畅度,最终采用SM指标来评价应用的流畅度,在知道如何评价流畅度之后,我们应该如何来检测出APP中的UI卡顿就是我们面临的一个新的问题;在Android性能优化-App卡顿中介绍了Google官方提供的检测卡顿的方法,除此之外还有那边比较好的方法来检测应用卡顿?目前主流的方法主要有:1.利用UI线程Looper打印的日志,典型代
- 卡顿检测与 Choreographer 原理
_龙小鱼_
androidkotlin
一、卡顿检测的原理卡顿的本质是主线程(UI线程)未能及时完成某帧的渲染任务(超过16.6ms,以60Hz屏幕为例),导致丢帧(FrameDrop)。检测卡顿的核心思路是监控主线程任务的执行时间。常见检测方法:主线程监控(LooperPrinter)原理:利用Looper的Printer机制,在每条消息处理前后打印日志,统计消息执行时间。代码示例:Looper.getMainLooper().set
- (面试)Handler消息处理机制原理
夜晚&星光
Android面试总结面试职场和发展
Handler是用于实现线程间通信和任务调度的一种机(Handler、Looper、MessageQueue、Message)。Handler允许线程间发送Message或Runnable对象进行通信。在Android中UI修改只能通过UIThread,子线程不能更新UI。如果子线程想更新UI,需要通过Handler发送消息给主线程,进而达到更新UI的目的。先创建一个与一个线程相关联Handler
- Android面试总结之Glide源码级理解
每次的天空
Android学习知识总结glide
当你的图片列表在低端机上白屏3秒、高端机因内存浪费导致FPS腰斩时,根源往往藏在Glide的内存分配僵化、磁盘混存、网络加载无优先级三大致命缺陷中。本文从阿里P8级缓存改造方案出发,结合Glide源码实现动态内存扩容、磁盘冷热分区、智能预加载等黑科技,彻底解决万级图片加载场景下的性能灾难一、Glide默认缓存架构的四大缺陷(源码级剖析)1.内存分配僵化:固定比例引发高低端机两难默认内存缓存为APP
- Android系统架构开篇(深度好文,值得收藏,2019-2021历年阿里Android面试真题
m0_64604636
程序员面试移动开发android
SystemServer进程,是由Zygote进程fork而来,SystemServer是Zygote孵化的第一个进程,SystemServer负责启动和管理整个Javaframework,包含ActivityManager,WindowManager,PackageManager,PowerManager等服务。MediaServer进程,是由init进程fork而来,负责启动和管理整个C++f
- 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