当前位置: 首页 > news >正文

HTML5:网页开发的新纪元

文章目录

    • 前言
    • 一、HTML5技术概述
    • 二、主要特点及优势
      • 1. 多媒体支持
      • 2. 图形绘制
      • 3. 离线存储
      • 4. 表单控件增强
      • 5. 响应式设计
    • 三、应用场景
      • 1. 游戏开发
      • 2. 在线教育
      • 3. 电子商务
    • 四、面临的挑战
    • 结语


前言

在互联网技术快速发展的今天,H5(HTML5的简称)作为第五代超文本标记语言,已经成为构建现代网页应用的核心技术之一。它不仅继承了前几代HTML的优点,还加入了许多新特性,极大地丰富了网页的表现力和交互性。本文将从几个方面探讨H5技术的特点及其对现代网络应用的影响。


一、HTML5技术概述

HTML5是HyperText Markup Language的第五次重大更新,由W3C(World Wide Web Consortium)和WHATWG(Web Hypertext Application Technology Working Group)共同制定。相比于之前的版本,HTML5不仅简化了语法,增加了许多新的标签和API,还特别强调了多媒体支持、图形绘制、离线存储等功能,使得网页应用的开发变得更加高效和灵活。

二、主要特点及优势

1. 多媒体支持

  • Audio 和 Video 标签:HTML5直接支持音频和视频文件的嵌入,无需额外安装任何插件。这大大降低了用户的使用门槛,提高了多媒体内容的可访问性。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTML5 Audio and Video</title>
    </head><body><h1>HTML5 Audio Example</h1><audio controls><source src="music/example.mp3" type="audio/mpeg">Your browser does not support the audio element.</audio><h1>HTML5 Video Example</h1><video width="320" height="240" controls><source src="video/example.mp4" type="video/mp4">Your browser does not support the video tag.</video>
    </body></html>
    

2. 图形绘制

  • Canvas 元素:允许开发者在网页上绘制图形,包括线条、形状、图像等。结合JavaScript,可以实现动态效果和交互式图表。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTML5 Canvas Example</title>
    </head><body><canvas id="myCanvas" width="500" height="500" style="border:1px solid #000000;"></canvas><script>var canvas = document.getElementById('myCanvas')var ctx = canvas.getContext('2d')// 绘制矩形ctx.fillStyle = "#FF0000"ctx.fillRect(0, 0, 150, 75)// 绘制圆形ctx.beginPath()ctx.arc(240, 180, 50, 0, Math.PI * 2, false)ctx.fillStyle = 'green'ctx.fill()ctx.closePath()// 绘制文字ctx.font = "30px Arial"ctx.fillText("Hello World", 10, 50)</script>
    </body></html>
    
  • SVG (Scalable Vector Graphics):用于描述二维矢量图形,适合制作图标、logo等需要保持清晰度的图形。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTML5 SVG Example</title>
    </head><body><svg width="100" height="100"><circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" /></svg>
    </body></html>
    

3. 离线存储

  • LocalStorage:提供了一种持久化的数据存储方式,数据保存在用户的浏览器中,即使关闭浏览器后再次打开,数据仍然存在。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTML5 LocalStorage Example</title>
    </head><body><input type="text" id="nameInput" placeholder="Enter your name"><button onclick="saveName()">Save Name</button><button onclick="loadName()">Load Name</button><script>function saveName() {var name = document.getElementById('nameInput').valuelocalStorage.setItem('userName', name)}function loadName() {var name = localStorage.getItem('userName')alert('Your name is: ' + name)}</script>
    </body></html>
    
  • SessionStorage:类似于Local Storage,但数据仅在当前会话期间有效,关闭页面或浏览器后数据会被清除。
    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTML5 SessionStorage Example</title>
    </head><body><input type="text" id="sessionInput" placeholder="Enter your session data"><button onclick="saveSessionData()">Save Data</button><button onclick="loadSessionData()">Load Data</button><script>function saveSessionData() {var data = document.getElementById('sessionInput').valuesessionStorage.setItem('sessionData', data)}function loadSessionData() {var data = sessionStorage.getItem('sessionData')alert('Your session data is: ' + data)}  </script>
    </body></html>
    
  • IndexedDB:一种面向对象的键值存储系统,适用于存储大量结构化数据。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTML5 IndexedDB Example</title>
    </head><body><input type="text" id="indexedDBInput" placeholder="Enter your data"><button onclick="saveIndexedDBData()">Save Data</button><button onclick="loadIndexedDBData()">Load Data</button><script>var db;var request = indexedDB.open('myDatabase', 1)request.onerror = function (event) {console.log('Error opening database.')}request.onsuccess = function (event) {db = event.target.result}request.onupgradeneeded = function (event) {var db = event.target.resultvar objectStore = db.createObjectStore('dataStore', { keyPath: 'id' })objectStore.createIndex('name', 'name', { unique: false })}function saveIndexedDBData() {var data = document.getElementById('indexedDBInput').valuevar transaction = db.transaction(['dataStore'], 'readwrite')var store = transaction.objectStore('dataStore')var newItem = { id: Date.now(), name: data }store.add(newItem)}function loadIndexedDBData() {var transaction = db.transaction(['dataStore'], 'readonly')var store = transaction.objectStore('dataStore')var cursor = store.openCursor();cursor.onsuccess = function (event) {var cursor = event.target.resultif (cursor) {console.log('Key: ' + cursor.key + ', Value: ' + cursor.value.name)cursor.continue()} else {console.log('No more entries')}}}</script>
    </body></html>
    

4. 表单控件增强

  • 新输入类型:如<input type="date"><input type="color">等,提供了更多样化的输入方式。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTML5 Form Controls Example</title>
    </head><body><form><label for="date">Date:</label><input type="date" id="date" name="date"><br><br><label for="color">Color:</label><input type="color" id="color" name="color"><br><br><label for="range">Range:</label><input type="range" id="range" name="range" min="0" max="100"><br><br><input type="submit" value="Submit"></form>
    </body></html>
    
  • 表单验证:通过内置的验证机制,可以自动检查用户输入是否符合要求,减少服务器端的压力。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>HTML5 Form Validation Exampl</title>
    </head><body><form><label for="email">Email:</label><input type="email" id="email" name="email" required><br><br><label for="password">Password:</label><input type="password" id="password" name="password" minlength="8" required><br><br><input type="submit" value="Submit"></form>
    </body></html>
    

5. 响应式设计

  • Media Queries:通过CSS3中的媒体查询,可以根据不同的设备和屏幕尺寸调整样式,实现响应式布局。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>body {font-family: Arial, sans-serif;}@media (max-width: 600px) {.container {flex-direction: column;}}.container {display: flex;justify-content: space-around;}.item {border: 1px solid #ccc;padding: 20px;margin: 10px;text-align: center;}</style>
    </head><body><div class="container"><div class="item">Item 1</div><div class="item">Item 2</div><div class="item">Item 3</div></div>
    </body></html>
    
  • Flexbox 和 Grid 布局:提供了更灵活、更强大的布局方式,简化了复杂页面的设计。
    • Flexbox 示例代码:

      <!DOCTYPE html>
      <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.container {display: flex;justify-content: space-between;}.item {border: 1px solid #ccc;padding: 20px;margin: 10px;flex: 1;}</style>
      </head><body><div class="container"><div class="item">Item 1</div><div class="item">Item 2</div><div class="item">Item 3</div></div>
      </body></html>
      
    • Grid 示例代码:

      <!DOCTYPE html>
      <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.container {display: grid;grid-template-columns: repeat(3, 1fr);gap: 10px;}.item {border: 1px solid #ccc;padding: 20px;}</style>
      </head><body><div class="container"><div class="item">Item 1</div><div class="item">Item 2</div><div class="item">Item 3</div><div class="item">Item 4</div><div class="item">Item 5</div><div class="item">Item 6</div></div>
      </body></html>
      

三、应用场景

1. 游戏开发

  • 案例:Canvas 游戏
    利用HTML5的Canvas元素,可以开发出各种2D游戏。例如,Phaser 是一个流行的HTML5游戏框架,支持物理引擎、动画、粒子效果等高级功能。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Canvas Game Example</title>
    </head><body><script src="https://cdn.jsdelivr.net/npm/phaser@3.55.2/dist/phaser.min.js"></script><script>var config = {type: Phaser.AUTO,width: 800,height: 600,scene: {preload: preload,create: create,update: update}}var game = new Phaser.Game(config)function preload() {this.load.image('sky', 'assets/sky.png')this.load.image('ground', 'assets/platform.png')this.load.image('star', 'assets/star.png')this.load.image('bomb', 'assets/bomb.png')this.load.spritesheet('dude', 'assets/dude.png', { frameWidth: 32, frameHeight: 48 })}function create() {this.add.image(400, 300, 'sky')platforms = this.physics.add.staticGroup()platforms.create(400, 568, 'ground').setScale(2).refreshBody()player = this.physics.add.sprite(100, 450, 'dude')player.setBounce(0.2)player.setCollideWorldBounds(true)cursors = this.input.keyboard.createCursorKeys()}function update() {if (cursors.left.isDown) {player.setVelocityX(-160)} else if (cursors.right.isDown) {player.setVelocityX(160)} else {player.setVelocityX(0)}if (cursors.up.isDown && player.body.touching.down) {player.setVelocityY(-330)}}</script>
    </body></html>
    

2. 在线教育

  • 案例:互动课程
    HTML5的多媒体支持和表单控件使得在线教育平台可以提供更加丰富和互动的学习体验。例如,Coursera和edX等平台就广泛使用HTML5技术来制作视频课程和练习题。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Interactive Course</title>
    </head><body><video controls><source src="video/lesson1.mp4" type="video/mp4">Your browser does not support the video tag.</video><form><label for="answer1">What is the capital of France?</label><input type="text" id="answer1" name="answer1"><button type="submit">Submit</button></form>
    </body></html>
    

3. 电子商务

  • 案例:响应式购物网站
    结合HTML5和CSS3的响应式设计,可以确保网站在不同设备上的良好展示。例如,Amazon和淘宝等大型电商平台都采用了响应式设计,以适应不同用户的需求。
    <!DOCTYPE html>
    <html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>@media (max-width: 600px) {.container {flex-direction: column;}}.container {display: flex;justify-content: space-around;}.product {border: 1px solid #ccc;padding: 10px;margin: 10px;}.product img {display: block;width: 200px;height: 100px;}</style>
    </head><body><div class="container"><div class="product"><img src="img/1.jpg" alt="Product 1"><p>Product 1</p><p>$19.99</p><button>Add to Cart</button></div><div class="product"><img src="img/2.jpg" alt="Product 2"><p>Product 2</p><p>$29.99</p><button>Add to Cart</button></div></div>
    </body></html>
    

四、面临的挑战

尽管HTML5带来了许多优势,但在实际应用中也面临一些挑战:

  • 兼容性问题:虽然大多数现代浏览器都支持HTML5,但对于老旧浏览器或特定设备,仍可能存在兼容性问题。
  • 安全性:随着Web应用变得越来越复杂,如何保障用户数据的安全性和隐私成为了一个重要课题。
  • 性能优化:对于大型或高负载的应用来说,如何有效地管理和优化资源是一个需要解决的问题。

结语

HTML5作为一种开放的标准和技术,正在推动着互联网向更加丰富多彩的方向前进。对于开发者而言,掌握HTML5不仅是跟上时代步伐的必要条件,也是创造更好用户体验的关键所在。通过本文的介绍和实践案例,希望能够帮助读者更好地理解和应用HTML5技术,为未来的开发工作打下坚实的基础。

相关文章:

HTML5:网页开发的新纪元

文章目录 前言一、HTML5技术概述二、主要特点及优势1. 多媒体支持2. 图形绘制3. 离线存储4. 表单控件增强5. 响应式设计 三、应用场景1. 游戏开发2. 在线教育3. 电子商务 四、面临的挑战结语 前言 在互联网技术快速发展的今天&#xff0c;H5&#xff08;HTML5的简称&#xff0…...

CKA认证 | Day2 K8s内部监控与日志

第三章 Kubernetes监控与日志 1、查看集群资源状态 在 Kubernetes 集群中&#xff0c;查看集群资源状态和组件状态是非常重要的操作。以下是一些常用的命令和解释&#xff0c;帮助你更好地管理和监控 Kubernetes 集群。 1.1 查看master组件状态 Kubernetes 的 Master 组件包…...

电信网关配置管理系统 upload_channels.php 文件上传致RCE漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。电信网关配置管理系统是一个用于管理和配置电信网络中网关设备的软件系统。它可以帮助网络管理员实现对网关设备的远…...

ubuntu更改max_map_count

在Ubuntu系统中&#xff0c;max_map_count是一个内核参数&#xff0c;用于限制每个进程可以拥有的内存段的数量。对于Elasticsearch等需要大量内存映射的应用&#xff0c;可能需要增加这个值。 执行以下步骤来更改max_map_count的值&#xff1a; 打开终端。 输入以下命令以编…...

《NPU、CPU、GPU 算力定义和计算方式》

一、引言 在人工智能时代&#xff0c;算力成为了推动技术发展的关键因素之一。不同类型的处理器&#xff0c;如中央处理器&#xff08;CPU&#xff09;、图形处理器&#xff08;GPU&#xff09;和神经网络处理器&#xff08;NPU&#xff09;&#xff0c;在算力方面有着各自的特…...

初级数据结构——顺序表

目录 前言一、定义与特点二、类型三、基本操作四、应用场景五、优缺点六、元素插入和删除动态图解插入删除 七、代码模板八、使用顺序表的经典例题1.求奇数的乘积代码题解 2.数值统计代码题解 九、总结结语 前言 顺序表示最基础的数据结构之一&#xff0c;它也是我们学习开始学…...

游戏引擎学习第五天

这节貌似没讲什么 视频参考:https://www.bilibili.com/video/BV1Gmm2Y5EwE/ uint8 *A somewhere in memory; uint8 *B somewhere in memory;//BEFORE WE GOT TO HERE int Y *B; // whatever was actually there before the 5 *A 5; int X *B; // 5 //Obviously! Y and …...

智能社区服务小程序+ssm

智能社区服务小程序 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了智能社区服务小程序的开发全过程。通过分析智能社区服务小程序管理的不足&#xff0c;创建了一个计算机管理智能社区服务小程序的方案。文…...

glide性能优化实战

glide性能优化实战 前言 项目使用glide加载图片之前也只是会基本api,这次项目有非常多的图片需要展示&#xff0c;而且设备是一个android12的版本&#xff0c;但是性能不太理想&#xff0c;分给APP的资源不太多&#xff0c;所以需要优化现有图片加载逻辑&#xff0c;读者可以…...

Python 环境搭建和安装(保姆级教程)

本章节我们将向大家介绍如何在本地搭建Python开发环境。 Python可应用于多平台包括 Linux 和 Mac OS X。 你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 Unix (Solaris, Linux, FreeBSD, AIX, HP/UX, SunOS, IRIX, 等…...

Java并发编程(二):同步机制与多线程是否矛盾

同步机制与多线程是否矛盾 0 纠正对异步和多选误解1 概述2 为什么要引入同步机制3 为什么多线程依然有意义3 总结 大家好&#xff0c;我是欧阳方超&#xff0c;可以关注我的公众号“欧阳方超”&#xff0c;后续内容将在公众号首发。 0 纠正对异步和多选误解 行文之前先纠正一下…...

golang分布式缓存项目 Day2 单机并发缓存

注&#xff1a;该项目原作者&#xff1a;https://geektutu.com/post/geecache-day1.html。本文旨在记录本人做该项目时的一些疑惑解答以及部分的测试样例以便于本人复习。 支持并发读写 接下来我们使用 sync.Mutex 封装 LRU 的几个方法&#xff0c;使之支持并发的读写。在这之…...

一个百度、必应搜索引擎图片获取下载的工具包

前言&#xff1a;前段时间需要一大批图片&#xff0c;跑去百度搜图下载&#xff0c;发现特别麻烦&#xff0c;于是用了一天时间写了一个工具库&#xff0c;方便后续使用&#xff0c;这里分享给大家 imagecapture 是一个用 Go 语言编写的库&#xff0c;旨在从百度和必应等搜索引…...

安全见闻(网络安全篇)

笔记仅供学习&#xff0c;切勿触碰法律红线&#xff01; 以下笔记学习来自B站泷羽Sec&#xff1a;https://space.bilibili.com/350329294?spm_id_from333.337.search-card.all.click 如涉及侵权马上删除文章 1.编程语言 C语言&#xff1a;一种通用的、面向过程的编程语言&am…...

手写一些方法

模拟new方法 function Otaku(name,age) {this.name name;this.age age; this.habit Games}Otaku.prototype.strength 60;Otaku.prototype.sayName function () {console.log("I am " this.name);};function myNew(fn, ...args) {const obj Object.create(f…...

仅需三步!用AI工具免费打造10w+抖音爆款烟火秀视频教程

抖音上的烟火秀视频总能唤起人们对节日的温馨回忆&#xff0c;它们不仅视觉效果震撼&#xff0c;还自带流量属性。我自己在刷到这类视频时&#xff0c;也不禁回想起童年放烟花的快乐时光&#xff0c;那种浓厚的年味让人怀念。这些视频通常伴随着合适的音乐&#xff0c;能够迅速…...

基于redis实现API接口访问次数限制

一&#xff0c;概述 日常开发中会有一个常见的需求&#xff0c;需要限制接口在单位时间内的访问次数&#xff0c;比如说某个免费的接口限制单个IP一分钟内只能访问5次。该怎么实现呢&#xff0c;通常大家都会想到用redis&#xff0c;确实通过redis可以实现这个功能&#xff0c…...

[ Linux 命令基础 3 ] Linux 命令详解-文件和目录管理命令

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…...

npm i 的时候报错: npm ERR! Error: EPERM: operation not permitted, rename

文章目录 噩梦解决办法总结 噩梦 最近改漏洞&#xff0c;这个项目删掉了 node_modules文件夹 重新安装依赖&#xff0c;结果安装一半的时候就一直报这个错。 然后查了很多方法&#xff0c;基本都是下面这些&#xff1a; 权限不够&#xff0c;以管理员运行cmd重新安装。清除 n…...

如何迁移剪映源文件

1、打开剪映&#xff0c;打开全局设置 2、查看草稿位置。把要迁移的文件拷贝到这个路径下面。 3、关闭文件&#xff0c;返回上一层界面&#xff0c;可以看到拷贝到目录下的文件。...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)

题目 做法 启动靶机&#xff0c;点进去 点进去 查看URL&#xff0c;有 ?fileflag.php说明存在文件包含&#xff0c;原理是php://filter 协议 当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执行。 用php://filter加编码&#xff0c;能让PHP把文件内容…...

数据结构:递归的种类(Types of Recursion)

目录 尾递归&#xff08;Tail Recursion&#xff09; 什么是 Loop&#xff08;循环&#xff09;&#xff1f; 复杂度分析 头递归&#xff08;Head Recursion&#xff09; 树形递归&#xff08;Tree Recursion&#xff09; 线性递归&#xff08;Linear Recursion&#xff09;…...