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

12_HTML5 Video(视频) --[HTML5 API 学习之旅]

HTML5 引入了 <video> 标签,使得在网页中嵌入和控制视频变得非常简单。<video> 元素允许你直接在 HTML 中指定视频文件,并提供了多种属性和方法来控制视频的播放、暂停、音量等。

基本用法

HTML5 的 <video> 标签让嵌入和控制视频变得非常简单。以下是关于 HTML5 视频的基本用法的详细介绍,包括如何嵌入视频、设置属性以及提供多个源文件以确保跨浏览器兼容性。

1. 基本语法

最简单的使用方法是直接在 HTML 中插入 <video> 标签,并通过 src 属性指定视频文件的位置。为了方便用户操作,通常会添加 controls 属性来显示默认的播放控件(如播放、暂停、音量控制等)。

<video src="movie.mp4" controls>Your browser does not support the video tag.
</video>
  • src:指定视频文件的 URL。
  • controls:显示视频控件。

2. 提供多个源文件

为了确保不同浏览器都能正确播放视频,最好为同一个视频提供多种编码格式的源文件。可以使用 <source> 元素来实现这一点。浏览器会根据支持情况选择最合适的格式进行播放。

<video controls><source src="movie.mp4" type="video/mp4"><source src="movie.ogg" type="video/ogg"><source src="movie.webm" type="video/webm">Your browser does not support the video tag.
</video>
  • type:指定视频的 MIME 类型,帮助浏览器更快地选择正确的源文件。

3. 常用属性

以下是一些常用的 <video> 标签属性:

  • autoplay:页面加载完成后自动播放视频。
  • controls:显示视频控件(如播放、暂停按钮等)。
  • loop:视频播放完毕后重新开始播放。
  • muted:静音播放视频。
  • poster:指定视频未播放时显示的图片。
  • preload:指定视频预加载行为(autometadatanone)。
  • widthheight:设置视频播放器的宽度和高度。
<video width="640" height="360" controls autoplay loop muted poster="poster.jpg"><source src="movie.mp4" type="video/mp4"><source src="movie.ogg" type="video/ogg">Your browser does not support the video tag.
</video>

4. 基本示例

这里是一个包含所有上述元素的完整示例:

<!DOCTYPE html>
<html>
<head><title>HTML5 Video Example</title>
</head>
<body><h2>HTML5 Video Basic Usage</h2><video width="640" height="360" controls autoplay loop muted poster="poster.png"><source src="movie.mp4" type="video/mp4"><source src="movie.ogg" type="video/ogg"><source src="movie.webm" type="video/webm">Your browser does not support the video tag.</video><p>Note: The video will play automatically, loop indefinitely, and be muted. A poster image will be shown until the video starts playing.</p>
</body>
</html>

在这里插入图片描述

5. 浏览器支持

尽管大多数现代浏览器都支持 HTML5 视频,但不同浏览器对视频编码格式的支持有所不同。常见的编码格式包括:

  • MP4 (H.264):广泛支持,适合大多数浏览器。
  • WebM:由 Google 推广,主要用于 Chrome 和 Firefox。
  • Ogg/Theora:用于 Firefox 和 Opera。

因此,建议至少提供 MP4 和 WebM 两种格式,以确保最佳兼容性。

方法和事件

HTML5 <video> 元素不仅提供了简单的标记来嵌入视频,还支持丰富的 JavaScript API,允许开发者通过代码控制视频的播放、暂停、音量等。以下是一些常用的方法和事件,它们可以帮助你创建更加互动和功能强大的视频播放体验。

方法

以下是你可以用于控制 <video> 元素的一些常见方法:

  • play():开始或继续播放视频。

    videoElement.play();
    
  • pause():暂停视频。

    videoElement.pause();
    
  • load():重新加载视频资源。这将重置视频并准备播放新的源文件(如果已更改)。

    videoElement.load();
    
  • canPlayType(type):检查浏览器是否支持特定类型的视频格式。返回 'probably''maybe' 或空字符串。

    const canPlayMp4 = videoElement.canPlayType('video/mp4');
    console.log(canPlayMp4); // 可能输出 "probably" 或 "maybe"
    
  • requestFullscreen():请求全屏模式(需要用户交互触发)。

    videoElement.requestFullscreen();
    
  • enterPictureInPicture():进入画中画模式(仅适用于支持此功能的浏览器)。

    videoElement.enterPictureInPicture().catch(error => {console.error("Error attempting to enter PiP mode:", error);
    });
    

属性

这些属性可以用来获取或设置视频的状态和配置:

  • currentTime:获取或设置当前播放位置(以秒为单位)。

    console.log(videoElement.currentTime); // 获取当前时间
    videoElement.currentTime = 10; // 设置当前时间为第10秒
    
  • duration:获取视频的总时长(以秒为单位)。在视频元数据加载之前,这个值可能为 NaN

    console.log(videoElement.duration);
    
  • volume:获取或设置视频的音量(范围从 0 到 1)。

    console.log(videoElement.volume); // 获取当前音量
    videoElement.volume = 0.5; // 设置音量为50%
    
  • muted:获取或设置视频是否静音(布尔值)。

    console.log(videoElement.muted); // 检查是否静音
    videoElement.muted = true; // 设置为静音
    
  • paused:检查视频是否处于暂停状态(布尔值)。

    console.log(videoElement.paused); // 检查是否暂停
    
  • ended:检查视频是否已经播放完毕(布尔值)。

    console.log(videoElement.ended); // 检查是否结束
    

事件

以下是一些常用的与视频播放相关的事件:

  • loadstart:当浏览器开始查找视频时触发。

    videoElement.addEventListener('loadstart', () => {console.log('Starting to load the video.');
    });
    
  • loadedmetadata:当视频的元数据(如时长、尺寸)加载完成后触发。

    videoElement.addEventListener('loadedmetadata', () => {console.log(`Video duration: ${videoElement.duration} seconds`);
    });
    
  • loadeddata:当浏览器已加载当前播放位置的数据时触发。

    videoElement.addEventListener('loadeddata', () => {console.log('Data for current playback position is loaded.');
    });
    
  • progress:当浏览器正在下载视频时定期触发。

    videoElement.addEventListener('progress', () => {console.log('Downloading...');
    });
    
  • canplay:当浏览器可以在不缓冲的情况下播放视频时触发。

    videoElement.addEventListener('canplay', () => {console.log('Can play without buffering.');
    });
    
  • canplaythrough:当浏览器可以在不因缓冲而停止的情况下播放整个视频时触发。

    videoElement.addEventListener('canplaythrough', () => {console.log('Can play through without stopping for buffering.');
    });
    
  • playing:当视频已经开始播放或不再因为缓冲而暂停时触发。

    videoElement.addEventListener('playing', () => {console.log('Video is playing.');
    });
    
  • pause:当视频暂停时触发。

    videoElement.addEventListener('pause', () => {console.log('Video paused.');
    });
    
  • ended:当视频播放结束时触发。

    videoElement.addEventListener('ended', () => {console.log('Video ended.');
    });
    
  • timeupdate:当视频的当前播放位置发生变化时触发(通常每秒多次)。

    videoElement.addEventListener('timeupdate', () => {console.log(`Current time: ${videoElement.currentTime}`);
    });
    
  • volumechange:当音量发生变化时触发。

    videoElement.addEventListener('volumechange', () => {console.log(`Volume changed to: ${videoElement.volume}`);
    });
    
  • waiting:当播放器因为需要缓冲更多数据而暂停时触发。

    videoElement.addEventListener('waiting', () => {console.log('Waiting for more data.');
    });
    
  • seeking:当用户开始快进或快退时触发。

    videoElement.addEventListener('seeking', () => {console.log('Seeking...');
    });
    
  • seeked:当用户完成快进或快退后触发。

    videoElement.addEventListener('seeked', () => {console.log('Seek completed.');
    });
    
  • ratechange:当播放速率发生变化时触发。

    videoElement.addEventListener('ratechange', () => {console.log(`Playback rate changed to: ${videoElement.playbackRate}`);
    });
    
  • error:当发生错误时触发。可以通过 videoElement.error 查看具体的错误信息。

    videoElement.addEventListener('error', (event) => {console.error('An error occurred:', event.target.error);
    });
    

实例:使用 JavaScript 控制视频播放

下面是一个简单的例子,展示了如何使用 JavaScript 来控制视频播放:

<!DOCTYPE html>
<html>
<head><title>Controlling Video with JavaScript</title>
</head>
<body><h2>Control Video Playback</h2><video id="myVideo" width="640" height="360" controls><source src="movie.mp4" type="video/mp4">Your browser does not support the video tag.</video><br><button onclick="playPause()">Play/Pause</button><button onclick="makeBig()">Big</button><button onclick="makeSmall()">Small</button><button onclick="makeNormal()">Normal</button><button onclick="muteUnmute()">Mute/Unmute</button><script>const video = document.getElementById('myVideo');function playPause() {if (video.paused || video.ended) {video.play();} else {video.pause();}}function makeBig() {video.width = 960;}function makeSmall() {video.width = 320;}function makeNormal() {video.width = 640;}function muteUnmute() {video.muted = !video.muted;}</script>
</body>
</html>

在这里插入图片描述

通过上述方法和事件,你可以对 HTML5 视频进行精细控制,从而创建出更加动态和响应式的用户体验。

实例:带自定义控件的视频播放器

下面是一个带有自定义控件的视频播放器示例:

<!DOCTYPE html>
<html>
<head><title>Custom Video Player</title><style>#video-container {position: relative;width: 640px;height: 360px;}#video {width: 100%;height: 100%;}#controls {display: flex;justify-content: space-between;background-color: rgba(0, 0, 0, 0.5);color: white;padding: 5px;position: absolute;bottom: 0;width: 100%;}#controls button {background-color: transparent;border: none;color: white;font-size: 16px;cursor: pointer;}</style>
</head>
<body><div id="video-container"><video id="video" controls><source src="movie.mp4" type="video/mp4"><source src="movie.ogg" type="video/ogg">Your browser does not support the video tag.</video><div id="controls"><button id="play-pause">Play</button><input type="range" id="volume" min="0" max="1" step="0.1" value="1"></div></div><script>const video = document.getElementById('video');const playPauseButton = document.getElementById('play-pause');const volumeControl = document.getElementById('volume');playPauseButton.addEventListener('click', function() {if (video.paused || video.ended) {video.play();this.textContent = 'Pause';} else {video.pause();this.textContent = 'Play';}});volumeControl.addEventListener('input', function() {video.volume = this.value;});</script>
</body>
</html>

在这里插入图片描述

注意事项

  • 浏览器兼容性:虽然大多数现代浏览器都支持 HTML5 视频,但不同浏览器对视频编码格式的支持有所不同。因此,建议提供多种格式的视频文件以确保最佳兼容性。
  • 性能优化:对于大文件,考虑使用流媒体技术或分段加载来提高用户体验。
  • 可访问性:确保视频有适当的字幕或音频描述,以便所有用户都能访问内容。

通过这些基础知识和实例,你可以创建功能丰富且用户体验良好的视频播放器。

相关文章:

12_HTML5 Video(视频) --[HTML5 API 学习之旅]

HTML5 引入了 <video> 标签&#xff0c;使得在网页中嵌入和控制视频变得非常简单。<video> 元素允许你直接在 HTML 中指定视频文件&#xff0c;并提供了多种属性和方法来控制视频的播放、暂停、音量等。 基本用法 HTML5 的 <video> 标签让嵌入和控制视频变…...

JaxaFx学习(三)

目录&#xff1a; &#xff08;1&#xff09;JavaFx MVVM架构实现 &#xff08;2&#xff09;javaFX知识点 &#xff08;3&#xff09;JavaFx的MVC架构 &#xff08;4&#xff09;JavaFx事件处理机制 &#xff08;5&#xff09;多窗体编程 &#xff08;6&#xff09;数据…...

视频点播系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️&#xff1a;架构: B/S、MVC 2⃣️&#xff1a;系统环境&#xff1a;Windowsh/Mac 3⃣️&#xff1a;开发环境&#xff1a;IDEA、JDK1.8、Maven、Mysql5.7 4⃣️&#xff1a;技术栈&#xff1a;Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…...

Springboot 学习 之 logback-spring.xml 日志压缩 .tmp 临时文件问题

文章目录 前言功能简述1. 自定义日志文件名2. 归档规则 && 压缩2.1. 归档配置2.2. 归档压缩2.3. 日志格式 && 编码 现象原因解决办法 前言 在 Springboot 应用中&#xff0c;默认使用 logback-spring.xml 配置日志相关 功能简述 1. 自定义日志文件名 <fi…...

智慧工地整体解决方案

智慧工地背景与需求 智慧工地解决方案的提出&#xff0c;源于建筑行业面临的诸多挑战。安全事故频发、环保体系不健全、建筑信息化水平低以及施工现场管理难度大等问题&#xff0c;迫切需要通过智能化手段来提升工地管理的效率与安全性。智慧工地利用现代信息技术&#xff0c…...

【读书打卡版】【读书笔记】半小时漫画中国地理3

一 如果全中国是个班级&#xff0c;江南五省各不同 继续跟随长江的脚步&#xff0c;认识坐在长江中下游平原上的省份&#xff1a;安徽、江苏、江西、浙江、上海。他们同属于一个美丽又富饶的大区——江南。 那么问题来了&#xff0c;一提到江南&#xff0c;你会想到什么&#…...

harmony UI组件学习(1)

Image 图片组件 string格式&#xff0c;通常用来加载网络图片&#xff0c;需要申请网络访问权限:ohos.permission.INTERNET Image(https://xxx.png) PixelMap格式&#xff0c;可以加载像素图&#xff0c;常用在图片编辑中 Image(pixelMapobject) Resource格式&#xff0c;加…...

ECharts热力图-笛卡尔坐标系上的热力图,附视频讲解与代码下载

引言&#xff1a; 热力图&#xff08;Heatmap&#xff09;是一种数据可视化技术&#xff0c;它通过颜色的深浅变化来表示数据在不同区域的分布密集程度。在二维平面上&#xff0c;热力图将数据值映射为颜色&#xff0c;通常颜色越深表示数据值越大&#xff0c;颜色越浅表示数…...

React状态管理常见面试题目(一)

1. Redux 如何实现多个组件之间的通信?多个组件使用相同状态时如何进行管理? Redux 实现组件通信 Redux 是一个集中式的状态管理工具&#xff0c;通过共享一个全局 store 来实现多个组件之间的通信。 通信机制&#xff1a; 所有状态保存在 Redux 的全局 store 中。使用 ma…...

.NET周刊【12月第2期 2024-12-08】

国内文章 终于解决了.net在线客服系统总是被360误报的问题&#xff08;对软件进行数字签名&#xff09; https://www.cnblogs.com/sheng_chao/p/18581139 升讯威在线客服与营销系统由.net core和WPF开发&#xff0c;旨在开放、开源、共享。开发者为解决360与其他国产管家的误…...

YOLOv8目标检测(七)_AB压力测试

YOLOv8目标检测(一)_检测流程梳理&#xff1a;YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客 YOLOv8目标检测(二)_准备数据集&#xff1a;YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客 YOLOv8目标检测(三)_训练模型&#xff1a;YOLOv8目标检测(三)_训…...

多个图片转换为PDF文件

将多个图片转换为PDF文件在Python中可以通过多个库来实现&#xff0c;其中最常用的库之一是Pillow&#xff08;用于图像处理&#xff09;和reportlab&#xff08;用于生成PDF&#xff09;。不过&#xff0c;对于直接图片转PDF的操作&#xff0c;更推荐使用Pillow配合PyMuPDF&am…...

【递归,搜索与回溯算法 综合练习】深入理解暴搜决策树:递归,搜索与回溯算法综合小专题(一)

找出所有子集的异或总和再求和 题目解析 算法原理 解法 决策树 这种决策使得每一次递归都是有效的递归&#xff0c;每一个节点都是最终的结果&#xff0c;所以这棵决策树是不用剪枝的&#xff0c;也没有递归出口的&#xff1b; 注意 决策树执行添加元素…...

对 MYSQL 架构的了解

MySQL 是一种广泛使用的关系型数据库管理系统&#xff0c;其架构主要包括以下几个关键部分&#xff1a; 一、连接层 客户端连接管理&#xff1a;MySQL 服务器可以同时处理多个客户端的连接请求。当客户端应用程序&#xff08;如使用 Java、Python 等语言编写的程序&#xff09;…...

深入解析 StarRocks 物化视图:全方位的查询改写机制

小编导读&#xff1a; 本文将重点介绍如何利用物化视图进行查询改写。文章将全面介绍物化视图的基本原理、关键特性、应用案例、使用场景、代码细节以及主流大数据产品的物化视图改写能力对比。 物化视图在 StarRocks 中扮演着至关重要的角色&#xff0c;它是进行数据建模和加速…...

k8s常见问题及debug

ERROR1 ErrImagePull pod pending 外网无法方位集群服务 kubectl 命令失败 Pod Error 进入容器失败 pod重启 Running not ready CrashLoopBackOff PV/PVC helm install...

Winnows基础(2)

Target 了解常见端口及服务&#xff0c;熟练cmd命令&#xff0c;编写简单的 .bat 病毒程序。 Trail 常见服务及端口 80 web 80-89 可能是web 443 ssl心脏滴血漏洞以及一些web漏洞测试 445 smb 1433 mssql 1521 oracle 2082/2083 cpanel主机管理系统登陆&#xff08;国外用的…...

(14)D-FINE网络,爆锤yolo系列

yolo过时了&#xff1f;传统的yolo算法在小目标检测方面总是不行&#xff0c;最新算法DEIM爆锤yolo&#xff0c;已经替yolo解决。 一、创新点 ​ 这个算法名为DEIM&#xff0c;全称是DETR with Improved Matching for Fast Convergence&#xff0c;其主要创新点在于提出了一…...

关于数据流图绘制和使用上的一些个人经验

假设我们需要开发一个项目进度管理系统&#xff0c;在这个项目进度管理系统之中&#xff0c;我们需要开发一个功能&#xff1a;项目成员的列表。我们具有这样的业务需求&#xff1a; 在项目进度管理系统中&#xff0c;我们需要知道参与项目的人员到底有哪些&#xff0c;并且项目…...

Leetcode Hot 100 【二叉树】104. 二叉树的最大深度

104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3…...

雅思真题短语梳理(八)

126员工流动率高 high staff turnover 127(多)负担一些工作任务 cover some duties / an increased workload 128不满 feel upset and resentful 129偏向性待遇 preferential treatment 130介入帮忙 step in and help 131切实的好处 tangible benefits 132挽留 staff retention…...

Codeforces Round 993 (Div. 4)个人训练记录

Codeforces Round 993 (Div. 4) 只选择对我有价值的题目记录 E. Insane Problem 题目描述 给定五个整数 k k k&#xff0c; l 1 l_1 l1​&#xff0c; r 1 r_1 r1​&#xff0c; l 2 l_2 l2​ 和 r 2 r_2 r2​&#xff0c;Wave 希望你帮助她计算满足以下所有条件的有序对 …...

java-io流

根据流的方向&#xff1a; 输入流&#xff08;InputStream/Reader&#xff09;&#xff1a;从数据源读取数据到程序中。输出流&#xff08;OutputStream/Writer&#xff09;&#xff1a;将数据从程序写入到目的地。 根据流处理信息的大小&#xff1a; 字节流&#xff08;Byte S…...

数据可视化

数据可视化 数据可视化 数据可视化主要目的&#xff1a;借助于图形化手段&#xff0c;清晰有效地传达与沟通信息。数据可视化可以把冰冷的数字转换成图形&#xff0c;揭示蕴含在数据中的规律和道理。 常用的数据可视化库&#xff1a; D3.js 目前 Web 端评价最高的 Javascri…...

CompletableFuture使用详解

一、 CompletableFuture介绍 平时多线程开发一般就是使用Runnable&#xff0c;Callable&#xff0c;Thread&#xff0c;FutureTask&#xff0c;ThreadPoolExecutor这些内容和并发编程息息相关。相对来对来说成本都不高&#xff0c;多多使用是可以熟悉这些内容。这些内容组合在…...

【长期有效】短链接生成-短链接-短网址-短链接生成接口-短链接转换接口-短网址URL生成-短链接-短网址-短域名-短链接

短链接API接口的作用主要体现在以下几个方面&#xff1a; 一、链接缩短与分享优化 短链接API接口的主要功能是将长链接转换为短链接。这种转换使得链接更加简洁、易读和易分享&#xff0c;尤其在社交媒体、电子邮件、短信等字符受限或按字符计费的场合中&#xff0c;短链接能…...

使用Idea自带的git功能进行分支合并

文章目录 1.背景描述2.分支切换3.分支合并的具体操作4.将在local环境下&#xff0c;从dev合并到qas分支上的代码&#xff0c;推送到远端 1.背景描述 目前在开发的当前项目有四个分支&#xff0c;master(主分支)、pre(预生产分支)、qas(测试分支)、dev(开发分支)&#xff1b; …...

工业摄像机基于电荷耦合器件的相机

工业摄像机系列产品及其识别技术的详细介绍&#xff1a; 一、工业摄像机概述 工业摄像机是利用光学成像技术获取视觉信息&#xff0c;并通过图像处理算法分析这些信息的设备。它通常具有高图像稳定性、高传输能力和高抗干扰能力等特性&#xff0c;适用于各种复杂的工业环境。 …...

【期末大作业】使用Python熟练掌握面向对象

引言 在编程学习过程中&#xff0c;构建项目是一个非常有效的方式&#xff0c;不仅能巩固和应用所学的知识&#xff0c;还能通过实践来解决实际问题。本文将通过几个经典的项目示例来展示如何用面向对象的方式设计和实现一个完整的系统&#xff0c;包括学生成绩管理系统、图书…...

JAVA:代理模式(Proxy Pattern)的技术指南

1、简述 代理模式(Proxy Pattern)是一种结构型设计模式,用于为其他对象提供一种代理,以控制对这个对象的访问。通过代理模式,我们可以在不修改目标对象代码的情况下扩展功能,满足特定的需求。 设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git 2、什…...

【MAC】深入浅出 Homebrew 下 Nginx 的安装与配置指南

硬件&#xff1a;Apple M4 Pro 16寸 系统&#xff1a; macos Sonoma 15.1.1 Nginx 是一款高性能的 Web 服务器和反向代理服务器&#xff0c;广泛应用于全球各地的网站和企业应用中。本文将详细介绍如何在 macOS 环境下使用 Homebrew 安装、启动、管理以及优化配置 Nginx&#x…...

【华为OD-E卷-寻找关键钥匙 100分(python、java、c++、js、c)】

【华为OD-E卷-寻找关键钥匙 100分&#xff08;python、java、c、js、c&#xff09;】 题目 小强正在参加《密室逃生》游戏&#xff0c;当前关卡要求找到符合给定 密码K&#xff08;升序的不重复小写字母组成&#xff09; 的箱子&#xff0c;并给出箱子编号&#xff0c;箱子编…...

SQL MID()

SQL中的MID()函数是一个用于从指定位置开始截取字符串中指定长度的子串的函数。这个函数在数据库查询和数据处理中经常被使用&#xff0c;特别是在需要从较长的文本字段中提取特定信息时。 MID()函数的基本语法是&#xff1a;SELECT MID(column_name, start, length) FROM tab…...

Sui 基金会任命 Christian Thompson 为新任负责人

Sui 基金会是专注于推动 Sui 蓬勃发展的生态增长与采用的机构。近日&#xff0c;基金会宣布任命 Christian Thompson 为新任负责人。在 Sui 主网发布的开创性一年里&#xff0c;Sui 凭借其无与伦比的速度、可扩展性和效率&#xff0c;迅速崛起为领先的 Layer 1 区块链之一&…...

ViEW生命周期

Vue的生命周期是指Vue实例从创建到销毁的整个过程&#xff0c;包括多个阶段和对应的钩子函数。以下是Vue生命周期的详细说明&#xff1a; 1. **创建阶段**&#xff1a; - beforeCreate&#xff1a;在实例初始化之前调用&#xff0c;此时数据观测和事件配置尚未完成&#xff0c;…...

[蓝桥杯 2019 国 B] 排列数

目录 前言 题解 思路 疑问 解答 前言 对于本篇文章是站在别人的基础之上来写的&#xff0c;对于这道题作为2019年国赛B组的最难的一题&#xff0c;他的难度肯定是不小的&#xff0c;这道题我再一开始接触的时候连思路都没有&#xff0c;也是看了两三遍别人发的题解&#x…...

python 中执行from elasticsearch import Elasticsearch,AsyncElasticsearch 报错

在 Python 中执行 from elasticsearch import Elasticsearch, AsyncElasticsearch 时,如果提示 AsyncElasticsearch 不存在,可能是因为以下几个原因: 1. 安装的 elasticsearch 库版本不匹配 AsyncElasticsearch 是在 elasticsearch 库的较新版本中引入的。如果你安装的版本…...

git 删除鉴权缓存及账号信息

在Windows系统下 清除凭证管理器中的Git凭据 按下Win R键&#xff0c;打开“运行”对话框&#xff0c;输入control&#xff0c;然后回车&#xff0c;打开控制面板。在控制面板中找到“用户账户”&#xff0c;然后点击“凭据管理器”。在凭据管理器中&#xff0c;找到“Windows…...

浏览器要求用户确认 Cookies Privacy(隐私相关内容)是基于隐私法规的要求,VUE 实现,html 代码

Cookie Notices and Cookie Consent | Cookiepedia 1. 法律法规要求 许多国家和地区的隐私法律要求网站在存储或处理用户数据&#xff08;包括 Cookies&#xff09;之前必须获得用户的明确同意&#xff1a; GDPR&#xff08;欧盟通用数据保护条例&#xff09; 要求&#xff…...

数据结构:栈和队列的实现

栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO &#xff08; Last In First Out &#xff09;的原则。 压栈&#xff1a;栈…...

2024.12.21辩论赛感受

背景 今天辩论赛的双方论点是&#xff1a; 正方&#xff1a;寒假留在研发中心的收获大 反方&#xff1a;寒假去做其他事情的收获 辩论赛&#xff0c;为了锻炼自己&#xff0c;选择了不想选择以及相对不好辩论的反方。出现的状况有一下几点&#xff1a; 1.发现自己脑子完全跟不…...

JAVA:组合模式(Composite Pattern)的技术指南

1、简述 组合模式(Composite Pattern)是一种结构型设计模式,旨在将对象组合成树形结构以表示“部分-整体”的层次结构。它使客户端对单个对象和组合对象的使用具有一致性。 设计模式样例:https://gitee.com/lhdxhl/design-pattern-example.git 2、什么是组合模式 组合模式…...

圣诞快乐(h5 css js(圣诞树))

一&#xff0c;整体设计思路 圣诞树h5&#xff08;简易&#xff09; 1.页面布局与样式&#xff1a; 页面使用了全屏的黑色背景&#xff0c;中央显示圣诞树&#xff0c;树形由三层绿色的三角形组成&#xff0c;每一层的大小逐渐变小。树干是一个棕色的矩形&#xff0c;位于三角…...

移植 OLLVM 到 LLVM18,修复控制流平坦化报错

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 前言 把 OLLVM 移植到 LLVM18 后&#xff0c;发现 -fla&#xff08;控制流平坦化&#xff09;并不能正常使用。 关于移植过程可以参考这篇文章 【移植 OLLVM…...

MFC/C++学习系列之简单记录——序列化机制

MFC/C学习系列之简单记录——序列化机制 前言简述六大机制序列化机制使用反序列化总结 前言 MFC有六大机制&#xff0c;分别是程序启动机制、窗口创建机制、动态创建机制、运行时类信息机制、消息映射机制、序列化机制。 简述六大机制 程序启动机制&#xff1a;全局的应用程序…...

【网络云计算】2024第51周-每日【2024/12/17】小测-理论-解析

文章目录 1. 计算机网络有哪些分类2. 计算机网络中协议与标准的区别3. 计算机网络拓扑有哪些结构4. 常用的网络设备有哪些&#xff0c;分属于OSI的哪一层5. IEEE802局域网标准有哪些 【网络云计算】2024第51周-每日【2024/12/17】小测-理论-解析 1. 计算机网络有哪些分类 计算…...

Python中的上下文管理器:从资源管理到自定义实现

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 Python中的上下文管理器(Context Manager)为资源管理提供了强大的支持,尤其在处理文件、网络连接、数据库连接等需要精确控制生命周期的…...

STM32 高级 物联网通信之CAN通讯

目录 CAN通讯介绍 物理层 协议层 CAN的帧(报文)种类 1 数据帧(发送单元->接受单元) 2 远程帧(接受单元->发送单元) 3 错误帧(发送方发送数据错误会发送的状态帧) 4 过载帧(接收方放不下会发送到的状态帧) 5 帧间隔(状态) 数据帧介绍 远程帧介绍 C…...

如何求解小于等于x的正整数因子y的个数总和

G ( X , Y ) X 的因子 Y 个数 G(X,Y) X的因子Y个数 G(X,Y)X的因子Y个数 例如 G ( 8 , 2 ) 3 G(8,2)3 G(8,2)3 G ( 12 , 2 ) 2 G(12,2)2 G(12,2)2 F ( X , Y ) ∑ i 1 X G ( i ) F(X, Y) \sum_{i1}^{X} G(i) F(X,Y)i1∑X​G(i) 直接上结论 F ( X , Y ) X Y 1 ⋯ X…...

Epic游戏使用mod

以土豆兄弟为例&#xff1a; 第一步&#xff1a;获取 SteamCMD 下载官方 Steam 控制台客户端 (steamCMD) 1. 下载好后打开&#xff0c;是一个在 cmd 窗口的运行的命令行 2. 输入以下代码登录 login anonymous 第二步&#xff1a; 确认自己要下载的游戏 ID 和 mod ID 然后…...