- Android研发去美团面试,被面试官用各种原理蹂躏,所幸最终拿到Offer
2401_87029500
android面试职场和发展
一个线程是否只有一个Looper?如何保证一个线程只有一个Looper?多线程的方式有哪些?生产者消费者模式wait和sleep的区别String、StringBuffer、StringBuilder的区别ANR异常发生条件如何分析ANR自定义View和ViewGroup事件处理分发,拦截,处理。GC算法四大引用强,软,弱,虚,并说明下合适GC动画View动画,属性动画,帧动画。再说下View和属
- Android开发实战讲解!Android开发者跳槽面试,真香!_关于布局优化的思想很简单,就是尽量减少布局文件的层级。这个道理很浅显,布局中的
2401_87029500
android跳槽面试
下面我们具体来介绍关于以上这几个方面优化的具体思路及解决方案。二、布局优化关于布局优化的思想很简单,就是尽量减少布局文件的层级。这个道理很浅显,布局中的层级少了,就意味着Android绘制时的工作量少了,那么程序的性能自然就提高了。如何进行布局优化?①删除布局中无用的控件和层次,其次有选择地使用性能比较低的ViewGroup。关于有选择地使用性能比较低的ViewGroup,这就需要我们开发就实际灵
- Shell基础:中括号的使用
vortex5
bashshelllinux运维
在Shell脚本中,中括号([...]和[[...]])是一种常见的条件测试结构。它们用于进行文件类型检查、值比较以及逻辑判断。通过了解它们的不同特点和用法,能够帮助你编写更加高效、安全且易读的脚本。本文将详细介绍Shell中单中括号和双中括号的区别、语法、常见用法及一些注意事项。单中括号单中括号([...])也叫做test命令,它是Shell中最基本的条件判断工具之一。这个结构用于测试文件属性、
- SQLite 语句详解
曦德1
android_sqliteSQLite
SQLiteOpenHelper几个重要方法:onCreate(SQLiteDatabasedb);用于初次使用软件时生成数据库表当调用SQLiteOpenHelper的getWritableDatabase()或者getReadableDatabase()方法获取用于操作数据库的SQLiteDatabase实例的时候,如果数据库不存在,Android系统会自动生成一个数据库,接着调用onCrea
- Go+gRPC-Gateway(V2) 微服务实战,小程序登录鉴权服务(四):客户端强类型约束,自动生成 API TS 类型定义...
为为少
gopythongolangjwt小程序
系列云原生API网关,gRPC-GatewayV2初探Go+gRPC-Gateway(V2)构建微服务实战系列,小程序登录鉴权服务:第一篇Go+gRPC-Gateway(V2)构建微服务实战系列,小程序登录鉴权服务:第二篇Go+gRPC-Gateway(V2)构建微服务实战系列,小程序登录鉴权服务(三):RSA(RS512)签名JWT客户端强类型约束,自动生成APITS类型定义protobufjs
- 【Logrus】以go代码实现的结构化日志记录为例,进行讲解,日志级别,不同日志输出位置,hook
{⌐■_■}
golang驱动开发开发语言
file.gopackagelogsimport"os"/*实现了标准文件日志写入器。---将日志写到文件*/constLOGPATH="runtime/logs/myLogs.log"typefileWriterstruct{*os.File}func(s*fileWriter)Flush(){s.Sync()}//文件日志写入器,并在包初始化时注册为"file"类型。funcnewFileWr
- Android——SQLite数据库使用详解
2401_89760782
数据库androidsqlite
登录后的页面activity_index.xml,这个页面就显示了一个用户的姓名(开始还有几个测试按钮,之后感觉不好看删除了O(∩_∩)O哈哈~,你们可以自己加几个按钮测试)页面,样式代码都在这里了,还一张背景图片,可以到网上随便找一张。下面来看看数据库操作的代码。TUser.java相当于实体类。packagecom.example.androiddemo01.model;publicclass
- 基于STM32的智能婴儿床控制系统设计(手机APP+蓝牙无线控制)(210)
DS小龙哥
智能家居与物联网项目实战stm32智能手机嵌入式硬件智能婴儿床
文章目录一、前言1.1项目介绍【1】项目功能介绍【2】设计实现的功能【3】项目硬件模块组成1.2设计思路【1】整体设计思路【2】HC05工作模式配置1.3项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】项目背景【5】摘要1.4开发工具的选择【1】设备端开发【2】上位机开发1.5系统框架图1.6系统功能总结1.7系统原理图1.8硬件实物图二、硬件选型2.1STM32开发板2.2PCB
- STM32中的DMA数据转运——下篇
sewinger
stm32学习笔记stm32嵌入式硬件单片机
STM32中的DMA数据转运——上篇-CSDN博客在上篇文章中,我们讨论了STM32中的DMA(直接存储器访问)及其工作原理、存储器类型和总线设计。接下来,我们将更深入地探讨DMA的具体配置方法、常见应用场景以及一些实际设计中的注意事项。五、DMA的具体配置方法DMA的配置通常包括选择通道、设置数据方向、配置传输大小、设置地址模式等步骤。以下是配置DMA的一般步骤:选择DMA通道STM32的DMA
- STM32中的DMA数据转运——上篇
sewinger
stm32学习笔记stm32嵌入式硬件单片机
STM32中的DMA数据转运——下篇(扩展版)-CSDN博客DMA(DirectMemoryAccess,直接存储器访问)是STM32中的一个重要功能,允许外设与存储器之间直接传输数据,而不需要通过CPU参与。这不仅减轻了CPU的负担,还提高了数据传输的效率。本文将详细介绍STM32中的各种存储器地址与类型、DMA框图与总线设计、DMA的基本结构及其工作原理,包括一些常见的使用场景。一、STM32
- 手机上运行AI大模型(Deepseek等)
zd200572
智能手机人工智能deepseek
最近deepseek的大火,让大家掀起新一波的本地部署运行大模型的热潮,特别是deepseek有蒸馏的小参数量版本,电脑上就相当方便了,直接ollama+open-webui这种类似的组合就可以轻松地实现,只要硬件,如显存,RAM足够,参数量合适,速度还可以接受。本地部署的意义在于,一是可以数据不上网,让一些私密的数据有所保障,二是可以实现一些在线限制的功能。在手机上运行的意义,其实更多可能是玩玩
- 在C++中,成员变量必须在对象构造完成前初始化,但初始化的方式有多种...
昊虹AI笔记
C/C++基础c++
在C++中,成员变量必须在对象构造完成前初始化,但初始化的方式可以有多种,具体取决于成员变量的类型和设计需求。以下是C++中成员变量初始化的规则和相关机制:1.成员变量必须初始化如果成员变量是基本类型(如int、double等)或类类型,未显式初始化时,它们的值是未定义的(除非是全局或静态变量,会被默认初始化为零值)。如果成员变量是引用类型或常量成员(const),则必须在成员初始化列表中被显式初
- 玩转Gin框架:Golang使用Gin完成登录流程
至尊丨楷君
gingolang开发语言
文章目录背景基于Token认证机制简介常见的Token类型Token的生成和验证在项目工程里创建jwt.go文件根目录新建.env文件创建登录接口/loginToken认证机制的优点背景登录流程,相信大家都很熟悉的。传统网站采用session后端验证登录状态,大致流程如下:用户输入用户名和密码/手机号和验证码点击登录按钮提交表单。后端校验前端传递过来的信息,验证通过在缓存中存储用户信息。后续每次请
- android room
freshfox
android
注意点:1.gradle中加入'kotlin-kapt'插件,依赖加入implementation"androidx.work:work-runtime:2.2.0"kapt"androidx.room:room-compiler:2.1.0"2.主activity中用thread执行。packagecom.example.testroomimportandroid.content.Context
- 悬浮按钮和可交互提示的使用
字节全栈_BjO
交互
xmlns:app=“http://schemas.android.com/apk/res-auto”xmlns:tools=“http://schemas.android.com/tools”android:id=“@+id/drawerLayout”android:layout_width=“match_parent”android:layout_height=“match_parent”to
- 【项目实战】Android应用程序架构,MVC、MVP、MVVM三种模式介绍
本本本添哥
011-物联网车联网与车载系统开发android架构mvc
一、Android应用程序架构汇总简单的Android应用程序架构,包括MVC、MVP和MVVM模式。二、MVC模式介绍MVC(Model-View-Controller)模式2.1MVC模式组成部分MVC模式将应用程序分为三个主要组成部分:Model、View和Controller。Model:负责处理应用程序的数据和业务逻辑。它与数据库进行交互,获取数据并处理数据。View:负责呈现用户界面。
- MOE模型入门
云帆@
AI人工智能
一、目录定义:MOE架构代表类型如何解决expert平衡的?而不是集中到某一专家。如何训练、微调MOE模型?基础架构优缺点不同MOE模型实现方式、训练方法二、实现定义:MOE架构MOE:混合专家模型,多个专家共同决策的模型。实现:将transformer模型中的每个前馈网络(FFN)层替换为MoE层,其中MoE层由两个核心部分组成:一个路由器(或者叫门控网络)和若干数量的专家。代表类型谷歌MOE,
- 基于深度学习的物体分割技术:从理论到实践
人工智能_SYBH
深度学习人工智能神经网络机器学习lstm
1.引言物体分割(ObjectSegmentation)是计算机视觉中的一项核心任务,其目标是将图像中的不同物体或区域分离出来,通常分为语义分割和实例分割两种类型。随着深度学习的迅猛发展,尤其是卷积神经网络(CNN)的应用,物体分割技术已取得了显著的进展。它被广泛应用于医学影像分析、自动驾驶、视频监控、机器人感知等领域。在本篇博客中,我们将深入探讨基于深度学习的物体分割技术,介绍其发展历程、核心原
- 鸿蒙系统未来发展方向
月栖梧_teachjunkie
harmonyos华为职场发展
鸿蒙系统未来有以下几大发展方向:技术深化与优化内核性能提升:持续优化鸿蒙内核,进一步提高系统的运行速度、稳定性和资源利用率,降低功耗,以满足不断增长的多设备互联和复杂应用场景的需求24.分布式技术拓展:深化分布式软总线、分布式数据管理、分布式设备虚拟化等分布式技术,加强设备间的协同能力,实现更高效、更智能的设备互联和资源共享,使不同类型的设备能够无缝协作,为用户提供更加连贯一致的体验4.安全隐私保
- JavaScript 对象object this 构造函数
澄清石灰水t
JavaScript#JS基础javascript
一、基本数据类型的不足:基本数据类型都是单一的值"hello"123true,值与值之间没有任何联系。exp:用基本数据类型创建一个人的信息(namegenderage)varname="邹邹";vargender="女";varage=18;虽然用基本数据类型创建出了人的相关信息,但是所创建的所有变量都是独立的,不能成为一个整体。二、什么是对象对象是一种复合数据类型,在对象中可以保存多个不同数据
- UE学习日志#18 C++笔记#4 基础复习4 指派初始化器和指针
学游戏开发的
UE学习日志C++学习c++笔记
1指派初始化器C++20引入了指派初始化器,以使用他们的名称初始化所谓聚合的数据成员。聚合类型是满足以下限制的数组类型的对象或结构或类的对象:1.仅public数据成员,2.无用户声明或继承的构造函数,3.无虚函数和无虚基类、private或protected的基类指派初始化的顺序必须与声明顺序相同,不允许混合使用指派初始化器和非指派初始化器。未使用指派初始化器初始化的任何数据成员都将使用其默认值
- Anaconda使用教程 如何conda配置多版本Python环境
广药门徒
pythonconda开发语言
配置anaconda参考anaconda的安装和使用(管理python环境看这一篇就够了)-CSDN博客Anaconda使用教程主要用的两个为AnacondaPrompt和AnacondaNavigator打开cmd第一次安装配置好conda的得先执行condainit才能用以后的创建环境和环境切换,和pip安装各种包全在这里,介绍几个常用的快捷键:1.condainfo查看当前环境的信息2.co
- Android 音视频 --- EGL介绍和使用
消失的旧时光-1943
音视频音视频android视频编解码
EGL的功能EGLAPI作为一套与OpenGLES各个版本相互独立的API,其作用主要是管理绘图表面。EGL提供以下机制:与设备的原生窗口系统通信查询绘图表面的可用类型和配置创建绘图表面在OpenGLES3.0或其他渲染API之间同步渲染管理纹理贴图等渲染资源
- Android 进程间通信
消失的旧时光-1943
android
Android进程间通信(IPC,Inter-ProcessCommunication)是Android操作系统中不同进程间交换数据和资源的一种机制。由于Android是多任务操作系统,每个应用通常运行在自己的进程中,以提高安全性和资源管理的效率。因此,当两个或多个应用需要共享数据时,就需要通过IPC机制来实现。常见的AndroidIPC机制包括:Intent通过发送Intent对象在不同组件间传
- 使用doris过程中总结的与mysql中语法差异
数据游戏
数仓mysql数据库database
1.mysql中的varchar()长度与doris中长度不一致,导致导入失败2.doris中where后面时间与字符串比较需转化类型#当create_time为datetime类型,mysql中使用concat()函数可直接比较,doris则不行,需进行类型转化wheredate_format(create_time,'%Y-%m-%d%H:%i:%s')0
- Doris使用手册以及与Mysql差异整理
Jet-W
mysql数据库doris大数据后端
目录数据类型Doris数据类型数值类型日期类型字符串类型半结构类型聚合类型IP类型MySQL到Doris类型映射数据模型Doris的数据模型Aggregate模型示例一:导入数据聚合建表插入数据查看表示例二:保留明细数据示例三:导入数据与已有数据聚合Uniq模型建表插入数据查询表使用注意Duplicate模型建表插入数据查看表数据模型的选择建议与mysql差异语法DDLCreate-TableDo
- python:函数提高
muxue178
python开发语言
1.变量的作用域与变量修改局部变量:定义在函数内部,生存范围在函数内部。全局变量:在函数内部外部都可生效的变量。一.局部变量:deftest1():a=100print(a)test1()print(a)运行结果100Traceback(mostrecentcalllast):File"D:/pycharm项目/数值类型.py",line5,inprint(a)NameError:name'a'i
- DorisSQL与MySQL函数与语法对照差异篇
小晨说数据
字符串mysqljava数据库sql
1.日期函数时区.mysql -> convert_tz(dt,from_tz,to_tz)doris -> CONVERT_TZ(DATETIME dt, VARCHAR from_tz, VARCHAR to_tz)获取当前的日期,以DATE类型返回.mysql -> CURDATE()doris -> CURDATE()获得当前的时间,返回datatime类型.mysql -> NOW()d
- Unity打包报错 SDK Tools version 0.0.0 < 26.1.1
iDaDi
AndroidUnityunityAndorid
从官网下载Unity2018.4版本,打包时报错。Unity的SDK环境配置也是对的。但是就是不行。发现使用AndroidSDKManager下载SDK。Unity不支持。只能去AndroidStudio编辑器中的SDKManager下载的SDK。Unity打包才支持。下图是使用AndroidSDKManager下载的SDK。下图时AndroidStudio的SDKManager。重新配置Unit
- 我的创作纪念日
所谓远行Misnearch
人工智能
机缘也是想和大家一起进步,记录下自己遇到的问题和学习进程收获发现好记性不如烂笔头,多记一点是没有坏处的憧憬当然新的一年希望自己可以多创作一些质量更好的文章出来和大家一起分享Tips您发布的文章将会展示至里程碑专区,您也可以在专区内查看其他创作者的纪念日文章优质的纪念文章将会获得神秘打赏哦
- 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