- STM32-PWM驱动无源蜂鸣器播放周杰伦的《发如雪》
七点半.
stm32嵌入式硬件单片机
C调音符与频率对照表://音符频率对照表(单位:Hz)#defineL1262//低音1#defineL1_277#defineL2294#defineL2_311#defineL3300#defineL4349#defineL4_370#defineL5392#defineL5_415#defineL6440#defineL6_466#defineL7494#defineN1523//中音1#d
- 位运算详解之与或非的巧妙运用
GG不是gg
#算法分析与设计leetcode算法
位运算详解之与或非&|~的巧妙运用一、位运算基础概念1.1位运算的定义与本质1.2与(&)运算1.3或(|)运算1.4非(~)运算二、与运算的巧妙运用2.1提取二进制位2.2判断奇偶性2.3关闭某些位三、或运算的巧妙运用3.1设置二进制位3.2合并二进制数3.3初始化变量四、非运算的巧妙运用4.1生成反码4.2切换状态4.3按位取反实现特定逻辑五、运用实例5.1状态压缩5.2数据加密与校验与(&)
- 提炼总结—ROS2机器人开发(第9章)(下)
写在最前面的话为什么做该博客?该博客的特点是什么?随着DeepSeek、ChatGPT等AI技术的崛起,促使机器人技术发展到了新的高度,诞生了宇树科技、特斯拉为代表的人形机器人,四足机器人等等,越来越多的科技巨头涌入机器人赛道,行业对于相关人才的需求也随之达到了顶峰。本博客的内容是替你阅读所有关于机器人的经典书籍,采用书籍瘦身计划,帮你提炼出核心内容,采用最通俗易懂的语言来解释原理,将书读薄。大大
- 数据处理与统计分析——03-Numpy的np.dot()方法&点积与矩阵乘法
零光速
数据分析numpy矩阵python开发语言数据结构
np.dot()np.dot()在NumPy中既可以用于向量的点积,也可以用于矩阵乘法,这两种运算的本质不同,取决于输入是向量还是矩阵。1.点积(DotProduct)定义当np.dot()的输入是两个一维向量时,计算的是点积,即两个向量的对应元素相乘并求和,结果是一个标量。公式对于两个n维向量a=[a1,a2,…,an]和b=[b1,b2,…,bn]点积的计算公式为:a⋅b=a1*b1+a2*b
- Linux系统下nvm工具的安装与基本使用
江湖有缘
Linux技术学习linuxvim运维
Linux系统下nvm工具的安装与基本使用引言一、NVM介绍1.1nvm简介1.2主要特点1.3使用场景二、本地环境介绍3.1本地环境规划3.2本次实践介绍三、检查本地环境3.1检查本地操作系统版本3.2检查系统内核版本四、安装node.js4.1安装nvm4.2查看nvm版本4.3安装node.js4.4查看当前node版本五、nvm管理5.1安装Node.js指定版本5.2切换Node.js版
- STM32F1 基于普通定时器TIM3--PWM输出驱动无源蜂鸣器。(HAL库)
学海无涯_come on
单片机ARM开发
STM32F1基于普通定时器TIM3–PWM输出驱动无源蜂鸣器。(HAL库)这里的话重点是是将PWM输出模式驱动蜂鸣器,至于PWM是什么和有源and无源蜂鸣器的区别,CSDN上有许多将的很好的文章,这里不重复了。无源蜂鸣器的驱动接上VCC和GND,外加一个驱动的IO口即可。这个IO口负责输出的相对应的频率(即你输入1000hz频率的信号它就发出对应1000hz频率的声音),所以现在的目标是用stm
- Python——进程与线程
TY-2025
pythonlinux网络
进程与线程1.进程进程是指启动后的程序,系统会为进程分配内存空间1.1创建进程的方式(1)使用Process子类语法结构class子进程(Process):pass(2)使用multiprocessing模块语法结构Process(group=None,target,name,args,kwargs)参数说明group:表示分组,实际上不使用,值默认为Nonetarget:表示子进程要执行的任务,
- Linux基本操作——端口占用查看和进程查询
TY-2025
Linuxlinux运维服务器
7.端口占用查看和进程查询(1)端口a.基本概念概念:端口是设备与外界通讯交流的出入口,可以分为物理端口和虚拟端口物理端口:又称接口,是可见的硬件端口,如USB接口、RJ45网口、HDMI端口等虚拟端口:计算机内部不可见的逻辑端口,用于操作系统与外部交互,如SSH服务的22端口功能类比:IP地址相当于小区地址,端口相当于门牌号,通过端口可以锁定计算机上的具体程序通信原理:计算机A通过IP地址找到计
- Docker学习笔记:Docker网络
大苏打seven
Dockerdocker学习笔记
本文是自己的学习笔记1、Linux中的namespace1.1、创建namespace1.2、两个namespace互相通信2、Docker中的namespace2.1容器中的默认Bridge3、容器的三种网络模式1、Linux中的namespaceDocker中使用了虚拟网络技术,让各个容器的网络隔离。好像每个容器从网卡到端口都有自己独立的一套网络架构。namespace是实现网络虚拟化的重要功
- Windows 11 24H2 专业版/家庭版安装教程(2025年6月更新版)- U盘启动盘制作+详细步骤
准备U盘启动盘下载个叫「Rufus」的免费小工具(百度搜就行)。插入一个至少8GB的空U盘(U盘会被清空,提前备份资料!)。打开Rufus,选你的U盘,ISO文件选你下载的那个zh-cn_windows_11...ISO,其他设置默认,点「开始」等它做完。Win11msdn官方原版iso镜像下载(2025年6月17日更新)网盘下载地址:https://pan.quark.cn/s/13b260e1
- R语言 绘制上下双向分布柱状图
话不多说,直接上干货library(ggplot2)library(tidyr)set.seed(123)#设置随机种子保证可重现df<-data.frame(Type=rep(letters[1:5],each=5),Sample=paste("sample",rep(1:5,times=5),sep=""),Up=round(runif(25,min=0,max=100),1),Down=ro
- 微信助手插件功能六十二:自动下载原图
杨利杰YJlio
#微信助手微信
微信助手插件功能六十二:自动下载原图微信助手插件功能六十二:自动下载原图功能介绍:功能优势:注意事项:微信助手插件功能六十二:自动下载原图⚠️免责声明:本插件仅供学习与研究用途,不用于商业或非法用途。使用插件可能导致微信账号被封,相关后果需由使用者自行承担。插件下载后请在24小时内删除!今天为大家介绍微信助手的第62个实用功能——自动下载原图。功能介绍:在默认微信环境中,当我们接收到一张高清图片时
- (信息安全概论实验)扫描技术的原理与应用—zenmap基本扫描方法—wireshark抓包
拉进人山人海
信息安全概论#实验wiresharkc语言
目录一、实验目的二、实验原理1.Nmap介绍2.Nmap常用命令选项三、实验预习四、实验设备:五、实验内容:六、实验过程:(一)电脑端启动Zenmap,如下图所示;(二)TCPconnect扫描1.对路由器的80号端口使用TCPconnect扫描方式进行端口扫描2.对路由器的53号端口使用TCPconnect扫描方式进行端口扫描3.对路由器的(学号后两位)~(学号后两位+10)端口使用TCPcon
- NeighborGeo:基于邻居的IP地理定位(一)
路由跳变
IPgeolocationtcp/ip网络协议网络
NeighborGeo:基于neighbors的IP地理定位X.Wang,D.Zhao,X.Liu,Z.Zhang,T.Zhao,NeighborGeo:IPgeolocationbasedonneighbors,Comput.Netw.257(2025)110896,AbstractIP地址定位在网络安全、电子商务、社交媒体等领域至关重要。当前主流的图神经网络方法通过将IP定位任务重构为属性图中
- 129、Rust实战:提升开发技能与问题解决能力
Rust实战项目:通过开源项目、个人项目或实习经历锻炼自己的开发能力和解决问题的能力本文将为大家介绍如何通过参与开源项目、开发个人项目或实习经历来锻炼自己的开发能力和解决问题的能力。我们将以Rust语言为例,讲解在实际项目中如何运用Rust以及Rust的优势。1.Rust语言简介Rust是一种系统编程语言,其设计目标是解决内存安全问题,同时保持性能。Rust的核心特性是所有权(Ownership)
- 2105、给植物浇水II
椎名ひる
leetcode#相向双指针算法leetcode数据结构
题目:解答:这题有一个前提:每一株植物都是可以用对应的装满水的水壶完成浇水的。不然会陷入死循环(也就是不存在比如a需要浇水10,但是水壶容量只有8)思路:遇到植物先判断是否浇水,不够就灌水然后ans++,两边同时判断当left=right意味着二人相遇了,要浇水的植物一共为奇数个。这里不需要判断谁浇水,只要判断水最多的人够不够浇水即可。如果不够,直接ans++然后return。如果植物是偶数个,那
- 力扣 hot100 Day32
19.删除链表的倒数第N个结点给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。//自己写的classSolution{public:ListNode*removeNthFromEnd(ListNode*head,intn){ListNode*cur=head;intlen=0;while(cur!=nullptr){len++;cur=cur->next;}inttmp=0;if(t
- 力扣 hot100 Day33
qq_51397044
Hot100leetcode算法
24.两两交换链表中的节点给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。//抄的classSolution{public:ListNode*swapPairs(ListNode*head){ListNode*dummy=newListNode(0);dummy->next=head;ListNode*prev=d
- 力扣 hot100 Day31
2.两数相加给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0开头。//抄的classSolution{public:ListNode*addTwoNumbers(ListNode*l1,ListNode*l2){ListNode*dummy=n
- 力扣 hot100 Day24
240.搜索二维矩阵II编写一个高效的算法来搜索mxn矩阵matrix中的一个目标值target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。//看提示写的classSolution{public:boolsearchMatrix(vector>&matrix,inttarget){intm=matrix.size(),n=matrix[0].size();intr
- 力扣 hot100 Day18
238.除自身以外数组的乘积给你一个整数数组nums,返回数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积。题目数据保证数组nums之中任意元素的全部前缀元素和后缀的乘积都在32位整数范围内。请不要使用除法,且在O(n)时间复杂度内完成此题。//自己写的classSolution{public:vectorproductExceptSelf(vector&
- 力扣 hot100 Day5
qq_51397044
Hot100leetcode算法
11.盛最多水的容器给定一个长度为n的整数数组height。有n条垂线,第i条线的两个端点是(i,0)和(i,height[i])。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。//自己写的classSolution{public:intmaxArea(vector&height){intresult=0,water=0;intn
- Class5多层感知机的从零开始实现
Morning的呀
深度学习深度学习机器学习pytorch
Class5多层感知机的从零开始实现importtorchfromtorchimportnnfromd2limporttorchasd2l#设置批量大小为256batch_size=256#初始化训练集和测试集迭代器,每次训练一个批量train_iter,test_iter=d2l.load_data_fashion_mnist(batch_size)#构建一个单隐藏层的前馈神经网络(MLP)#n
- 深度探索:机器学习中的 条件生成对抗网络(Conditional GAN, CGAN)算法原理及其应用
目录1.引言与背景2.CGAN定理3.算法原理4.算法实现5.优缺点分析优点:缺点:6.案例应用7.对比与其他算法8.结论与展望1.引言与背景生成对抗网络(GenerativeAdversarialNetworks,GANs)作为一种深度学习框架,在无监督学习领域展现出强大的能力,特别在图像、音频、文本等复杂数据的生成任务中取得了显著成果。然而,原始GAN模型在生成过程中缺乏对生成样本特定属性的直
- 1990-2024年上市公司市场获利能力数据+stata代码
经管数据库
大数据数据分析
企业市场获利能力是指企业在特定市场环境中,通过一系列经营活动获取利润的能力,它反映了企业在市场竞争中实现盈利的效率和水平,是企业综合竞争力的重要体现。获利能力是投资者评估企业风险的重要指标。盈利能力稳定的企业通常具有更强的抗风险能力,能够在市场波动和经济衰退时保持相对稳定的经营状况。本数据包含原始数据、参考文献、代码do文件(参考陶锋《数量经济技术经济研究》的计算过程)、最终结果数据名称:企业市场
- docker常用命令详解
欢喜躲在眉梢里-柚子
云原生dockereureka容器运维云原生云服务linux
docker常用命令详解一、docker概念复习二、docker中常用命令1、docker相关命令查看docker的版本查看docker系统的相关信息重启Docker服务的命令2、容器相关命令查看容器启动的进程启动容器停止(关闭)容器删除容器---未启动进入容器内部修改信息查看容器内部的进程查看容器的网络类型查看容器资源的消耗查看容器日志3、镜像相关命令创建镜像删除镜像导出镜像导入镜像到另外一台机
- 查询时候,用case when生成新列,可在end 后为该列取别名
m0_46093829
学习mysqlmysql数据库
查询时候,用casewhen生成新列,可在end后为该列取别名写一段SQL来找到表中每个国家在2019年11月的天气类型。天气类型的定义如下:当weather_state的平均值小于或等于15返回Cold,当weather_state的平均值大于或等于25返回Hot,否则返回Warm。你可以以任意顺序返回你的查询结果。查询结果格式如下所示:来源:力扣(LeetCode)链接:https://lee
- Robyn高性能Web框架系列07:多进程、性能调优
多进程、性能调优Robyn的环境变量1、可配置项说明2、配置环境变量的方法Robyn的性能调优1、Python-Rust混合设计2、服务器进程模型3、请求的处理流程4、const请求5、多进程、多线程性能监控中间件在前面的内容中,我们讲解了Robyn框架的请求-响应过程、依赖注入、中间件、WebSocket等内容,同时通过用户权限、产品智能助理两个小应用进行了综合实践。总的来说,在Robynv0.
- [C++] # 深入理解C++继承:从原理到实现
深入理解C++继承:从原理到实现文章目录深入理解C++继承:从原理到实现引言一、继承的基本概念1.1什么是继承?1.2继承的语法1.3继承类型二、继承的内存模型2.1对象的内存布局2.2内存布局分析三、构造函数与析构函数的执行顺序3.1构造顺序3.2析构顺序四、函数重写与虚函数4.1函数重写(覆盖)4.2虚函数与多态五、虚函数表(vtable)原理5.1vtable结构5.2单继承vtable示例
- Rust 闭包
在Rust中,闭包(closures)是强大的匿名函数,可以捕获其环境中的变量。以下是Rust闭包的全面解析:一、基础闭包语法//无参数闭包letgreet=||println!("Hello!");greet();//带参数闭包letadd=|a:i32,b:i32|->i32{a+b};println!("Sum:{}",add(3,5));//类型可省略(编译器推断)letmultiply=
- 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