- iOS:精致雕琢的移动操作系统
ios
在移动操作系统的领域中,iOS以其独特的设计理念、出色的用户体验和强大的生态系统脱颖而出,成为了众多用户追捧的对象。自2007年第一代iPhone发布,搭载iOS操作系统惊艳亮相,它便开启了移动设备的新时代,持续引领着行业的发展潮流。iOS系统的设计理念,始终秉持着简洁与优雅的原则。从系统界面到交互方式,都体现了对简约美学的极致追求。主屏幕上,图标排列整齐有序,采用简洁明了的设计风格,色彩搭配和谐
- Vue 开发者的 React 实战指南:状态管理篇
对于Vue开发者来说,React的状态管理可能是最需要转变思维方式的部分之一。本文将从Vue开发者熟悉的角度出发,详细介绍React的状态管理方案,并通过实战示例帮助你快速掌握。本地状态管理对比Vue的响应式系统在Vue中,我们习惯使用data选项来定义组件的本地状态:{{count}}+1exportdefault{data(){return{count:0}},methods:{increme
- VMware ESXi 8.0U3c macOS Unlocker & OEM BIOS ConnectX-3 网卡定制版
esxi
VMwareESXi8.0U3cmacOSUnlocker&OEMBIOSConnectX-3网卡定制版(集成驱动版)VMwareESXi8.0U3cmacOSUnlocker&OEMBIOS集成网卡驱动和NVMe驱动(集成驱动版)发布ESXi8.0U3c集成驱动版,在个人电脑上运行企业级工作负载请访问原文链接:https://sysin.org/blog/vmware-esxi-8-u3-sys
- Python 潮流周刊#72:Python 3.13.0 最终版已发布!(摘要)
python
本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。分享了14篇文章,12个开源项目,4则音视频,全文2300字。以下是本期摘要:文章&教程①Python3.13.0最终版已发布!②关于Python3.13,了解这些信息就够了③Python3.13
- vue 前端优化性能优化方法
lfl18326162160
vue.js前端javascript
1.列表使用唯一keyv-for="iteminactiveList":key="item.id"原因是不使用key或者列表的index作为key的时候,每个元素对应的位置关系都是index,直接导致我们插入的元素到后面的全部元素,对应的位置关系都发生了变更,所以在patch过程中会将它们全都执行更新操作,再重新渲染。这可不是我们想要的,我们希望的是渲染添加的那一个元素,其他四个元素不做任何变更,
- 快手不发作品ip地址会变吗
hgdlip
快手iptcp/ip快手
在数字时代,我们每个人的在线行为都留下了独特的痕迹。这些痕迹不仅仅是我们的言论或行为,还包括我们的IP地址——一个在网络世界中标识我们位置的数字标签。近年来,随着短视频平台的兴起,如快手这样的应用已经深入人们的日常生活。那么,当我们在快手这样的平台上不发布作品时,我们的IP地址是否会发生变化呢?本文将探讨这一问题,并深入分析IP地址在数字时代的重要性和影响。首先,我们需要了解IP地址的基本概念。I
- 探索装饰器的奥秘:Python里的超级英雄披风
大梦百万秋
知识学爆python开发语言
引言:每一行代码都可以是一件披风有没有想过,代码写得再帅气,读起来再优雅,它始终是千篇一律的套路?有时候,代码中的函数就像是穿着普通衣服的路人,默默地完成任务。而这时候,你可能会想:“嘿,我要给它们一点魔法,让它们更具超能力!”别担心,Python里的装饰器正是你需要的神秘工具,它能给你的函数加上一件“超级英雄披风”,让它们瞬间拥有更多的功能,且不改变它们原本的外貌。今天我们就来一起揭开装饰器的面
- Spark 源码分析(一) SparkRpc中序列化与反序列化Serializer的抽象类解读 (java序列化部分完结,正在更新RpcEnv部分~)
小白的大数据历程
Spark源码解析sparkjavapython
目录(3)JavaSerializerInstance定义了一个Java序列化实例(1)构造方法参数(2)方法1:serializeStream(3)方法2:deserializeStreamdefaultClassLoader(4)方法3:deserializeStreamloader(5)方法4:serialize(6)方法5:deserializeloader(7)方法6:deseriali
- 2024-12-01百度TTS语音
坐吃山猪
AI训练AI编程
百度TTS语音个人尝试代码仓库:https://gitee.com/enzoism/chrome_tampermonkey鸣谢:感谢每一位无私奉献的传道者,在此不一一具名!1-学习目标1)了解百度TTS语音2)使用百度TTS语音2-参考网址个人尝试代码仓库:https://gitee.com/enzoism/chrome_tampermonkey1-应用列表查看地址:https://console
- 麒麟操作系统服务架构保姆级教程(十一)https配置
小屁不止是运维
系统架构架构https网络协议linux运维LNMP服务器
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情在运维工作中,加密和安全的作用是十分重要的,如果仅仅用http协议来对外展示我们的网站,过一段时间就会发现网站首页被人奇奇怪怪的篡改了,本来好好的博客论坛,被人篡改的五毒俱全,这个时候我们的网站就需要加密访问了,这个加密不是说要密码才可以查看网站,而是通过https协议进行加密访问,客户端进行访问的时候会进行加密和解密,防止我们的web
- 麒麟操作系统搭建本地yum源(_x86架构麒麟v10sp3)
小屁不止是运维
系统安装架构linux运维
文章开始先附上自己最喜欢的一段话如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情有些公司的工作环境是内网环境,无法链接互联网,那么这个时候就需要一套本地的yum源来下载一些服务一、准备好自己的操作系统对应的镜像根据自己服务器的操作系统类型准备好对应版本的镜像,我的操作系统是_x86架构的麒麟v10sp3的操作系统。可以去官网下载你的镜像下载地址为:https://www.kylino
- html5贪吃蛇特点,简易html5贪吃蛇
雪小梨
html5贪吃蛇特点
1.[图片]E6~0%QPA46ER843UQJ$0Z`H.jpg2.[文件]snake.htmlThesnakegamefunctionlog(msg){console.log(msg);}Yourbrowsercannotsupporthtml5.this.onkeydown=function(e){varcode=e.keyCode;if(code==37)changeMove(3);if(
- ReactNative0.75版本发布,一文快速了解
wayne214
ReactNativereactnative
ReactNative0.75版本的更新包含了多个方面的内容,以下是一些详细信息:亮点Yoga3.1和布局改进:支持%值在布局中的应用,如gap、translation等属性,但仅适用于新架构。新架构稳定化:修复了一些Bug,提高了稳定性,并在ReactNativeDirectory中添加了新架构支持信息,还发布了关于支持新架构中UIManager的文章。使用框架:推荐通过框架(如Expo)构建R
- 如何在服务器同一个端口下根据路径区分不同的应用
三爷麋了鹿
服务器运维
通常我们使用域名直接访问网站时,使用的是80或者443端口。但一个主站下面可能有好几个子网站,我们如何通过路径来挂载子网站呢?nginx.conf配置使用nginx代理能够实现根据不同的路径,访问同一端口下的子网站。root配置网站的默认根目录,alias指定子网站路径。server{listen80default_server;charsetutf-8;#默认访问路径location/{root
- C++11特性简述
因特麦克斯
c++开发语言
Lambda表达式捕获列表+参数列表(没有参数可以省略)+返回值+函数体类成员函数中定义lambda表达式可以捕获this指针,但是没有捕获函数参数的时候捕获this也不能访问函数参数自动推导返回值:必须是唯一形式的返回值类型才能推导出来,也就是不能出现二义性,比如返回列表时,由于数组和链表都可以以列表的形式返回,所以无法自动推导出返回值类型,这时就需要自己手动声明一下返回值类型"->返回值类型"
- Android 如何debug aar
perfectnihil
安卓
进入新公司之后,发现项目中引用了另外一个项目,并且是以aar的方式引入的如果这个aar不需要修改也就算了,关键这个aar需要频繁的修改,这样调试的时候就极其麻烦---------------------------------------------------------------------------------当然,可以通过打log的方式来进行调试,但是毕竟不够直观,那么,aar能不能d
- 随机应变:网站的可扩展性架构
迈克雷(MichaelRay)
架构之美
国内某大型互联网企业经常因为对同行的产品进行微创新,然后推出自己的产品而遭人诟病,不讨论这种做法是否合适,我们分析这些产品,发现大多数都比原创产品有更好的用户体验。这些产品常常后来居上,更速度地推出新功能,吸引用户注意,进而占据市场。微信从发布到拥有1亿用户,仅仅用了一年的时间。而据说摇一摇这个功能是两个实习生用一个星期就开发完成上线的。使用TOP(TaobaoOpenAPI),一个技术熟练的淘宝
- grafana数据库从sqlit3迁移至mysql(tidb)
mark.meng
监控系统数据库grafanamysql
背景grafana默认采用的是sqlite3,由于sqlite3不支持同时写,sqlite的锁是文件锁,作用的是整个DB文件,同一时间可以有多个读事务,但是同一时间最多只能有一个写事务。容易锁库导致grafana报错,现决定将grafana默认sqlite3db文件迁移至mysql(tidb)中。报错信息:Error:databaseislocked迁移步骤1.下载迁移工具镜像dockerpull
- 【大模型】Spring AI Alibaba 对接百炼平台大模型使用详解
小码农叔叔
AI大模型实战与应用微服务治理与实战springaiSpringAI详解百炼大模型
目录一、前言二、SpringAI概述2.1springai是什么2.2SpringAI核心能力2.3SpringAI应用场景三、SpringAIAlibaba介绍3.1SpringAIAlibaba是什么3.2SpringAIAlibaba核心特点3.3SpringAIAlibaba应用场景四、SpringBoot对接SpringAIAlibaba过程4.1前置准备4.1.1获取apikey4.1
- pyinstaller 打包生成.exe 可执行文件报错 “IndexError: tuple index out of range”
静妍
PythonPythonpyqtguiPyinstaller.exe
想把pyqt写的GUI程序打包成.exe文件,以便在Windows下运行,不想因为使用Python3.6,出现兼容问题:IndexError:tupleindexoutofrangePyinstaller官网目前的版本是3.2.1只支持到Python2.7,Python3.3~Python3.5需自己在官网源码里
- 使用java代码消费kafka数据
二进制_博客
大数据javakafka
首先创建maven项目,导入jar包org.apache.kafkakafka-clients3.0.0org.slf4jslf4j-log4j121.7.25示例一:使用java代码消费kafka所有数据packagecom.bigdata.day03;importorg.apache.kafka.clients.consumer.ConsumerConfig;importorg.apache.
- elasticsearch8.0+ 创建APIkey
petunsecn
devops运维elasticsearch
客户端连接ES,除了“用户名+密码”外,Elasticsearch也提供了APIkeys的访问方式。使用APIkey,也可方便的配置其不同的访问权限,用户,过期等。创建APIkey的方式:1.登录kibana,在Management--APIKey,点击【CrateAPIkey】具体参考:APIKeys|KibanaGuide[8.11]|Elastic2使用RESTAPIs创建POST/_sec
- SSH连接提示“Permission denied (publickey,password)”
petunsecn
devopsssh运维
问题:使用Jenkins,ssh到指定服务器执行脚本时,当SSH连接提示“Permissiondenied(publickey,password)”时,通常是因为远程服务器未能验证提供的公钥,可能是因为公钥没有被正确添加到远程服务器的~/.ssh/authorized_keys文件中。步骤:将公钥添加到远程服务器1.获取公钥:在Jenkins中,user对应的证书包含私钥(id_rsa)和公钥(i
- 腾讯cos云存储
雄安白
pythondjango腾讯云
cos云存储授权问题报错callback内原本是SecurityToken修改为下方的XCosSecurityToken即可正确授权上传文件*腾讯cos存储官方varcos=newCOS({//getAuthorization必选参数getAuthorization:function(options,callback){//初始化时不会调用,只有调用cos方法(例如cos.putObject)时才
- 融云 IM 干货丨获取会话列表或者历史消息报 25101 的错误?
融云im即时通讯
出现获取会话列表或者历史消息报25101错误,主要有以下几种原因及解决方法:融云平台1、SDK版本过低:如果未执行撤回动作却出现25101报错,这是低版本SDK的已知问题,建议升级至最新SDK。2、未开通单群聊云存储服务:出现25101报错还可能是由于未开通单群聊云存储服务。可到开发者后台-IM商用版开通该服务,服务开通后30分钟左右生效。其他平台若以上平台的解决方法均不适用,建议检查以下通用方面
- Docker入门系列——常见问题
前端
虽然Docker简化了部署发布流程,但在使用过程中,依然存在很多坑点。这些问题虽不复杂,但却常常让人头疼,存在隐患,这里我们列举一些常见的问题处理方式。1.不必要地使用大型基础镜像问题:像ubuntu或centos这样的大型基础镜像因其灵活性而诱人,但可能导致容器膨胀。这会减慢镜像拉取和部署时间,并增加攻击面。解决方案:选择像alpine这样的轻量级镜像,或者如果它们满足您的需求,选择无发行版镜像
- Azure Synapse Dedicated SQL Pool通过配置选项和参数优化性能
weixin_30777913
云计算azure
配置选项与参数分布键(DistributionKey):•选择:在大数据量表中,选择经常用于JOIN、WHERE条件中的列作为分布键,如Date、ID等。•策略:对于范围查询,使用HASH分布避免数据倾斜;对于维度表,通常选择ROUND-ROBIN分布。索引:•类型:聚集列存储索引(CCI)针对大型数据扫描和聚合进行了优化。•策略:始终对大型事实表使用CCI,避免在大型表上使用传统的行存储索引。分
- eBPF 底层结构剖析
linuxebpf
寄存器:CPU不断读写内存是并不很快的,这个速度好像还取决与对应的总线长度,因此我们需要一个中间变量来帮助我们来快速访问对应的内存,这个时候我们就需要使用到栈。所以我们的寄存器,通常分为下面几种:数据寄存器,一般用于存储数据地址寄存器,用于存储地址,常见的有段指针在eBPF中常见的寄存器有下面这几种:R0,这个寄存器一般用于存储对应函数返回值R1-R5,这几个寄存器用于存储函数的参数值R10,这个
- Linux性能优化CPU篇之平均负载
linux
首先使用uptime命令查看对应平均负载.平均负载是指单位时间内,系统处于可运行状态和不可中断状态进程数所谓的可运行状态的进程是指,正在使用CPU或者正在等待的CPU进程数量,也就是我们常用的ps命令,处于R状态。不可中断状态的进程是正在处于内核关键流程中的进程,注意这些进程不可以被打断的,当我们向一个磁盘写入一个文件的时候,它是不可以被打断的。那么平均复杂怎么样才算好呢?平均负载最理想的情况是等
- 如何使用Visual Studio Code调试PHP CLI应用和Web应用
Python中的class体内定义方法时,如果没有显式地包含self参数,有时候依然可以被调用。这是一个非常有趣的话题,因为它涉及到对Python中类与对象之间关系的更深理解。要理解为什么这种情况下方法依然能够被调用,我们需要逐步拆解Python类的构造方式以及方法绑定的原理。
- 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