02Cesium中常用的鼠标事件

文章目录

  • 02Cesium中常用的鼠标事件
    • 1、左键单击事件
    • 2、左键双击事件
    • 3、左键按下事件
    • 4、左键弹起事件
    • 5、中键按下事件
    • 6、中键弹起事件
    • 7、鼠标移动事件
    • 8、右键单击事件
    • 9、右键按下事件
    • 10、右键弹起事件
    • 11、鼠标滚轮事件
    • 具体在代码中的应用如下所示

02Cesium中常用的鼠标事件

Cesium中常用的鼠标事件有左键单击事件、左键双击事件、左键按下事件、左键弹起事件、中键按下事件、中键弹起事件、鼠标移动事件、右键单击事件、右键按下事件、右键弹起事件、鼠标滚轮事件。注意:是没有鼠标右键双击事件的说法的。这里只是涉及到鼠标对应事件的API用法,记录一下常用的鼠标事件,至于具体在场景中的应用,如屏幕坐标与经纬度的转换,鼠标点击获取经纬度等,看后续文章。

1、左键单击事件

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(click){console.log('左键单击事件:',click.position);   
},Cesium.ScreenSpaceEventType.LEFT_CLICK);// 移除鼠标事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK);

2、左键双击事件

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(click){console.log('左键双击事件:',click.position);   
},Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);// 移除鼠标事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);

3、左键按下事件

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(click){console.log('左键按下事件:',click.position);   
},Cesium.ScreenSpaceEventType.LEFT_DOWN);// 移除鼠标事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOWN);

4、左键弹起事件

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(click){console.log('左键弹起事件:',click.position);   
},Cesium.ScreenSpaceEventType.LEFT_UP);// 移除鼠标事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP);

5、中键按下事件

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(click){console.log('中键按下事件:',click.position);   
},Cesium.ScreenSpaceEventType.MIDDLE_DOWN);// 移除鼠标事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.MIDDLE_DOWN);

6、中键弹起事件

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(click){console.log('中键弹起事件:',click.position);   
},Cesium.ScreenSpaceEventType.MIDDLE_UP);// 移除鼠标事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.MIDDLE_UP);

7、鼠标移动事件

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(movement){console.log('移动事件:',movement.endPosition);   
},Cesium.ScreenSpaceEventType.MOUSE_MOVE);// 移除鼠标事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE);

8、右键单击事件

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(click){console.log('右键单击事件',click.position);   
},Cesium.ScreenSpaceEventType.RIGHT_CLICK);// 移除鼠标事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK);

9、右键按下事件

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(click){console.log('右键按下事件',click.position);   
},Cesium.ScreenSpaceEventType.RIGHT_DOWN);// 移除鼠标事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_DOWN);

10、右键弹起事件

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(click){console.log('右键弹起事件',click.position);   
},Cesium.ScreenSpaceEventType.RIGHT_UP);// 移除鼠标事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_UP);

11、鼠标滚轮事件

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
handler.setInputAction(function(wheelment){console.log('滚轮事件:',wheelment);   
},Cesium.ScreenSpaceEventType.WHEEL);// 移除鼠标事件
handler.removeInputAction(Cesium.ScreenSpaceEventType.WHEEL);

具体在代码中的应用如下所示

在对应vue中的代码如下所示,可以先看后面的截图,然后结合截图看代码相关的内容。对应的项目地址:https://gitee.com/the-world-keeps-blooming/my-vite-vue-cesium

<template><div style="width: 100%; height: 100%; position: relative;"><div id="cesiumContainer"></div><div class="cesium-viewer-toolbar"><el-row><div style="font-size: 16px;">Cesium中常用的鼠标事件</div></el-row><el-row style="margin-top: 16px;"><el-form label-width="auto" style="max-width: 600px"><el-form-item label="左键单击事件:"><el-button type="primary" @click="LEFT_CLICK">左键单击</el-button><el-button type="primary" @click="REMOVE_LEFT_CLICK">移除左键单击</el-button></el-form-item><el-form-item label="左键双击事件:"><el-button type="primary" @click="LEFT_DOUBLE_CLICK">左键双击</el-button><el-button type="primary" @click="REMOVE_LEFT_DOUBLE_CLICK">移除左键双击</el-button></el-form-item><el-form-item label="左键按下事件:"><el-button type="primary" @click="LEFT_DOWN">左键按下</el-button><el-button type="primary" @click="REMOVE_LEFT_DOWN">移除左键按下</el-button></el-form-item><el-form-item label="左键弹起事件:"><el-button type="primary" @click="LEFT_UP">左键弹起</el-button><el-button type="primary" @click="REMOVE_LEFT_UP">移除左键弹起</el-button></el-form-item><el-form-item label="中键按下事件:"><el-button type="primary" @click="MIDDLE_DOWN">中键按下</el-button><el-button type="primary" @click="REMOVE_MIDDLE_DOWN">移除中键按下</el-button></el-form-item><el-form-item label="中键弹起事件:"><el-button type="primary" @click="MIDDLE_UP">中键弹起</el-button><el-button type="primary" @click="REMOVE_MIDDLE_UP">移除中键弹起</el-button></el-form-item><el-form-item label="鼠标移动事件:"><el-button type="primary" @click="MOUSE_MOVE">鼠标移动</el-button><el-button type="primary" @click="REMOVE_MOUSE_MOVE">移除鼠标移动</el-button></el-form-item><el-form-item label="右键单击事件:"><el-button type="primary" @click="RIGHT_CLICK">右键单击</el-button><el-button type="primary" @click="REMOVE_RIGHT_CLICK">移除右键单击</el-button></el-form-item><el-form-item label="右键弹起事件:"><el-button type="primary" @click="RIGHT_UP">右键弹起</el-button><el-button type="primary" @click="REMOVE_RIGHT_UP">移除右键弹起</el-button></el-form-item><el-form-item label="滚轮事件:"><el-button type="primary" @click="WHEEL">滚轮事件</el-button><el-button type="primary" @click="REMOVE_WHEEL">移除滚轮事件</el-button></el-form-item><el-form-item label="多个事件结合:"><el-button type="primary" @click="MORE_EVENTS">多个事件</el-button><el-button type="primary" @click="REMOVE_MORE_EVENTS">移除多个事件</el-button></el-form-item></el-form></el-row><el-row><div style="font-size: 16px;">确保鼠标在地球上点击有效,这里以鼠标左键点击为例,其他以此类推</div></el-row><el-row style="margin-top: 16px;"><el-form label-width="auto" style="max-width: 600px"><el-form-item label="左键单击事件:"><el-button type="primary" @click="LEFT_CLICK_IN_EARTH">左键单击</el-button><el-button type="primary" @click="REMOVE_LEFT_CLICK_IN_EARTH">移除左键单击</el-button></el-form-item></el-form></el-row></div></div>
</template><script setup>
import { onMounted, onUnmounted } from 'vue';
import * as Cesium from 'cesium';let viewer = null;
// const viewer = reactive(null)// 开启鼠标监听事件
let handler = null;/*** 左键单击事件*/
const LEFT_CLICK = () => {handler.setInputAction(function (click) {// 这里的Click.position指的是屏幕坐标console.log('左键单击事件:', click.position);}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
}/*** 移除左键单击事件*/
const REMOVE_LEFT_CLICK = () => {handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)
}/*** 左键双击事件*/
const LEFT_DOUBLE_CLICK = () => {handler.setInputAction(function (click) {// 这里的Click.position指的是屏幕坐标console.log('左键双击事件:', click.position);}, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);
}/*** 移除左键双击事件*/
const REMOVE_LEFT_DOUBLE_CLICK = () => {handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK)
}/*** 左键按下事件*/
const LEFT_DOWN = () => {handler.setInputAction(function (click) {// 这里的Click.position指的是屏幕坐标console.log('左键按下事件:', click.position);}, Cesium.ScreenSpaceEventType.LEFT_DOWN);
}/*** 移除左键按下事件*/
const REMOVE_LEFT_DOWN = () => {handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOWN)
}/*** 左键弹起事件*/
const LEFT_UP = () => {handler.setInputAction(function (click) {// 这里的Click.position指的是屏幕坐标console.log('左键弹起事件:', click.position);}, Cesium.ScreenSpaceEventType.LEFT_UP);
}/*** 移除左键弹起事件*/
const REMOVE_LEFT_UP = () => {handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP)
}/*** 中键按下事件*/
const MIDDLE_DOWN = () => {handler.setInputAction(function (click) {// 这里的Click.position指的是屏幕坐标console.log('中键按下事件:', click.position);}, Cesium.ScreenSpaceEventType.MIDDLE_DOWN);
}/*** 移除中键弹起事件*/
const REMOVE_MIDDLE_DOWN = () => {handler.removeInputAction(Cesium.ScreenSpaceEventType.MIDDLE_DOWN)
}/*** 中键弹起事件*/
const MIDDLE_UP = () => {handler.setInputAction(function (click) {// 这里的Click.position指的是屏幕坐标console.log('中键弹起事件:', click.position);}, Cesium.ScreenSpaceEventType.MIDDLE_UP);
}/*** 移除中键弹起事件*/
const REMOVE_MIDDLE_UP = () => {handler.removeInputAction(Cesium.ScreenSpaceEventType.MIDDLE_UP)
}/*** 鼠标移动事件*/
const MOUSE_MOVE = () => {handler.setInputAction(function (movement) {// 这里的movement.endPosition指的是屏幕坐标console.log('鼠标移动事件:', movement.endPosition);}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);
}/*** 移除鼠标移动事件*/
const REMOVE_MOUSE_MOVE = () => {handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE)
}/*** 右键单击事件*/
const RIGHT_CLICK = () => {handler.setInputAction(function (click) {// 这里的Click.position指的是屏幕坐标console.log('右键单击事件:', click.position);}, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
}/*** 移除右键单击事件*/
const REMOVE_RIGHT_CLICK = () => {handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK)
}/*** 右键弹起事件*/
const RIGHT_UP = () => {handler.setInputAction(function (click) {// 这里的Click.position指的是屏幕坐标console.log('右键弹起事件:', click.position);}, Cesium.ScreenSpaceEventType.RIGHT_UP);
}/*** 移除右键弹起事件*/
const REMOVE_RIGHT_UP = () => {handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_UP)
}/*** 滚轮事件*/
const WHEEL = () => {handler.setInputAction(function (movement) {console.log('滚轮事件:', movement.endPosition);}, Cesium.ScreenSpaceEventType.WHEEL);
}/*** 移除滚轮事件*/
const REMOVE_WHEEL = () => {handler.removeInputAction(Cesium.ScreenSpaceEventType.WHEEL)
}/*** 多个事件结合使用*/
const MORE_EVENTS = () => {// 为了防止其他事件影响,先移除所有事件handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK)handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOWN)handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP)handler.removeInputAction(Cesium.ScreenSpaceEventType.MIDDLE_DOWN)handler.removeInputAction(Cesium.ScreenSpaceEventType.MIDDLE_UP)handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE)handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK)handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_UP)handler.removeInputAction(Cesium.ScreenSpaceEventType.WHEEL)// 以下三个方法在绘制的时候通常都是需要结合一起使用的。// 鼠标左键击事件handler.setInputAction(function (click) {// 这里的Click.position指的是屏幕坐标console.log('左键单击事件:', click.position);}, Cesium.ScreenSpaceEventType.LEFT_CLICK);// 鼠标移动事件handler.setInputAction(function (movement) {// 这里的movement.endPosition指的是屏幕坐标console.log('鼠标移动事件:', movement.endPosition);}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);// 鼠标右键事件handler.setInputAction(function (click) {// 这里的Click.position指的是屏幕坐标console.log('右键单击事件:', click.position);}, Cesium.ScreenSpaceEventType.RIGHT_CLICK);
}/*** 移除多个事件结合*/
const REMOVE_MORE_EVENTS = () => {// 移除:鼠标左键击事件、鼠标移动事件、鼠标右键事件handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE)handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK)}/*** 确保鼠标在地球上点击有效,这里以鼠标左键点击为例,其他以此类推,左键单击事件*/
const LEFT_CLICK_IN_EARTH = () => {// 为了防止其他事件影响,先移除所有事件handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK)handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOWN)handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_UP)handler.removeInputAction(Cesium.ScreenSpaceEventType.MIDDLE_DOWN)handler.removeInputAction(Cesium.ScreenSpaceEventType.MIDDLE_UP)handler.removeInputAction(Cesium.ScreenSpaceEventType.MOUSE_MOVE)handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_CLICK)handler.removeInputAction(Cesium.ScreenSpaceEventType.RIGHT_UP)handler.removeInputAction(Cesium.ScreenSpaceEventType.WHEEL)handler.setInputAction(function (click) {// 这里的Click.position指的是屏幕坐标// 保证鼠标在地球上var ray = viewer.camera.getPickRay(click.position)var position = viewer.scene.globe.pick(ray, viewer.scene)if (position) {console.log("点击了地球,鼠标在地球上,焦点坐标:", position)} else {console.log('左键单击事件,鼠标不在地球上:', click.position);}}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
}const REMOVE_LEFT_CLICK_IN_EARTH = () => {// 这里也可以移除对应的所有事件,但是如果没有绑定其他事件的话就没必要了移除了,其实移除其他的也不影响,还能保证不受到其他事件的影响handler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_CLICK)
}onMounted(() => {// 对应的Cesium的tokenlet token = '你的token'Cesium.Ion.defaultAccessToken = tokenviewer = new Cesium.Viewer('cesiumContainer', {// 搜索框geocoder: false,// home键homeButton: false,// 全屏按钮fullscreenButton: false,// 动画控件animation: false,// 场景模式选择器,就是控制二三维的那个sceneModePicker: false,// 时间轴timeline: false,// 导航帮助提示按钮navigationHelpButton: false,// 地图选择器baseLayerPicker: false,});handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);
})onUnmounted(() => {// 这个要不要都可以if (handler) {handler.destroy();}})</script><style scoped>
#cesiumContainer {width: 100%;height: 100%;margin: 0;padding: 0;overflow: hidden;
}/* 隐藏底部 */
:deep(.cesium-viewer-bottom) {display: none !important;
}.cesium-viewer-toolbar {position: absolute;background-color: #FFFFFF;width: 400px;height: 800px;top: 16px;left: 16px;padding: 16px;
}
</style>

结果如下图所示,点击的时候,F12打开浏览器的控制台,看着点击就可以了。
在这里插入图片描述

代码中还有确保鼠标在地球上点击有效,从而实现拿到的点位可以保证在地球上,这里以鼠标左键点击为例,其他以此类推。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/435549.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

yolov8/9/10模型在垃圾分类检测中的应用【代码+数据集+python环境+GUI系统】

yolov8/9/10模型在垃圾分类检测中的应用【代码数据集python环境GUI系统】 yolov8/9/10模型在垃圾分类检测中的应用【代码数据集python环境GUI系统】 背景意义 随着计算机视觉技术和深度学习算法的快速发展&#xff0c;图像识别、对象检测、图像分割等技术在各个领域得到了广泛…

本省第一所!新大学,揭牌!

9月26日&#xff0c;海南艺术职业学院举行揭牌仪式&#xff0c;标志着海南省第一所公办艺术类高等职业院校正式揭牌成立。海南省旅文厅党组成员、副厅长刘成出席揭牌仪式&#xff0c;省教育厅党组成员、副厅长邢孔政在揭牌仪式上宣读省人民政府同意设立海南艺术职业学院的批复。…

Hive数仓操作(五)

一、Hive 信息查看 Hive的元数据管理&#xff1a; Hive 将表的元数据&#xff08;如表名、列名、类型等&#xff09;存储在关系型数据库中&#xff0c;通常是 MySQL。元数据的主要表包括&#xff1a; TBLS&#xff1a;存储表的信息&#xff08;表名、类型、ID 等&#xff09;。…

性能调优知识点(mysql)三

SQL底层执行原理 MySQL的内部组件结构&#xff1a;大体来说&#xff0c;MySQL 可以分为 Server 层和存储引擎层store两部分 Server层:主要包括连接器、查询缓存、分析器、优化器、执行器等&#xff0c;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数&#xf…

【STM32开发环境搭建】-3-STM32CubeMX Project Manager配置-自动生成一个Keil(MDK-ARM) 5的工程

目录 1 KEIL(MDK-ARM) 5 Project工程设置 2 MCU和嵌入式软件包的选择 3 Code Generator 3.1 STM32Cube Firmware Library Package 3.2 Generated files 3.3 HAL Settings 3.4 Template Settings 4 Advanced Settings 5 自动生成的KEIL(MDK-ARM) 5 Project工程目录 结…

springboot+养老院管理系统—计算机毕业设计源码36270

摘 要 随着我国老年人口数量的逐年增加&#xff0c;人口抚养比也在迅速攀升&#xff0c;越来越多的老年人将走出家门进入养老院安度自己的晚年。同时国家和地方也相继出台了加快发展老龄事业的政策方针&#xff0c;作为机构养老主要组成部分的养老院将迅猛发展。在养老院规模扩…

时间安全精细化管理平台/iapp/mobile/facereg/facereg.html接口存在未授权访问漏洞

漏洞描述 登录--时间&安全精细化管理平台/iapp/mobile/facereg/facereg.html接口存在未授权访问漏洞&#xff0c;黑客可以未授权等级员工信息对平台造成影响 FOFA&#xff1a; body"登录--时间&amp;安全精细化管理平台" 漏洞复现 IP/iapp/mobile/facereg…

学习docker第二弹------基本命令[帮助启动类命令、镜像命令、容器命令]

docker目录 前言基本命令帮助启动类命令停止docker服务查看docker状态启动docker重启docker开机启动docker查看概要信息查看总体帮助文档查看命令帮助文档 镜像命令查看所有的镜像 -a查看镜像ID -q在仓库里面查找redis拉取镜像查看容器/镜像/数据卷所占内存删除一个镜像删除多个…

828华为云征文 | 华为云Flexus云服务器X实例搭建Zabbix网络设备监视系统(Ubuntu服务器运维)

前言 Flexus X实例内嵌智能应用调优算法&#xff0c;性能强悍&#xff0c;基础模式GeekBench单核及多核跑分可达同规格独享型实例的1.6倍&#xff0c;性能模式更是超越多系列旗舰型云主机&#xff0c;为企业业务提供强劲动力。 &#x1f4bc; Flexus X Zabbix&#xff1a;打造…

RTX 5090/5080详细规格曝光 显存喜人 600W功耗没跑

目前&#xff0c;各家AIC厂商已经陆续收到NVIDIA的相关资料&#xff0c;RTX 5090、RTX 5080已经正式进入开案阶段&#xff0c;也就是厂商们开始设计各自的产品方案了。如无意外&#xff0c;RTX 5090/5080都将在明年初的CES 2025上正式发布&#xff0c;届时还会看到RTX 50系列移…

如何在算家云搭建text-generation-webui(文本生成)

一、text-generation-webui 简介 text-generation-webui 是一个流行的用于文本生成的 Gradio Web UI。支持 transformers、GPTQ、AWQ、EXL2、llama.cpp (GGUF)、Llama 模型。 它的特点如下&#xff0c; 3 种界面模式&#xff1a;default (two columns), notebook, chat支持多…

828华为云征文|部署去中心化网络的 AI 照片管理应用 PhotoPrism

828华为云征文&#xff5c;部署去中心化网络的 AI 照片管理应用 PhotoPrism 一、Flexus云服务器X实例介绍二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置2.4 Docker 环境搭建 三、Flexus云服务器X实例部署 PhotoPrism3.1 PhotoPrism 介绍3.2 PhotoPrism…

SpringBoot集成阿里easyexcel(一)基础导入导出

easyexcel主要用于excel文件的读写&#xff0c;可使用model实体类来定义文件读写的模板&#xff0c;对开发人员来说实现简单Excel文件的读写很便捷。可参考官方文档 https://github.com/alibaba/easyexcel 一、引入依赖 <!-- 阿里开源EXCEL --><dependency><gr…

8638 直接插入排序

### 思路 1. **直接插入排序**&#xff1a;从第二个元素开始&#xff0c;将每个元素插入到前面已经排好序的子序列中。 2. **输出每趟排序结果**&#xff1a;在每次插入操作后&#xff0c;输出当前数组的状态。 ### 伪代码 1. **直接插入排序** function insertion_sor…

区块链媒体推广:15个数字解读未来-华媒舍

区块链技术性作为一种区块链技术和加密的数据帐簿技术性&#xff0c;正在逐步引起广泛关注。伴随着新闻媒体市场的发展&#xff0c;区块链媒体推广也成为了新的发展趋势。下面我们就带大家探寻15个数字&#xff0c;揭露将来区块链媒体推广的新方向。 1、网络传播年增长率 数字…

STM32编码器接口笔记

1. 引言 在现代控制系统中&#xff0c;编码器扮演着非常重要的角色。它就像一个精密的测量工具&#xff0c;可以告诉我们机械部件的位置和运动状态。在STM32微控制器中&#xff0c;编码器接口可以轻松地与各种编码器连接&#xff0c;实现精确的控制。我将在这里探讨STM32编码器…

Redis面试笔记

1.什么是Redis 简单来说 redis 就是一个数据库&#xff0c;不过与传统数据库不同的是 redis 的数据是存在内存中的&#xff0c;所以读写速度非常快&#xff0c;因此 redis 被广泛应用于缓存方向。另外&#xff0c;redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持…

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大

LiveQing视频点播流媒体RTMP推流服务功能-支持电子放大拉框放大直播视频拉框放大录像视频流拉框放大电子放大 1、鉴权直播2、视频点播3、RTMP推流视频直播和点播流媒体服务 1、鉴权直播 鉴权直播-》播放 &#xff0c;左键单击可以拉取矩形框&#xff0c;放大选中的范围&#x…

群晖安装Audiobookshelf(有声书)

一、Audiobookshelf是什么&#xff1f; Audiobookshelf是一款自托管的有声读物和播客服务器&#xff0c;用于管理和播放您的有声读物。为用户提供便捷、个性化的音频书籍管理与播放体验 支持网页端、安卓端、IOS端三端同步,支持对有声书进行不同分类。 二、安装教程 通过群晖…

关于HTML 案例_个人简历展示02

展示效果 用table进行布局label 标签进行关联 例如&#xff1a;点姓名就可以到text中去填写内容 input的使用 text 文本框radio 单选框select与option 选择框checkbox 复选框 textareaul与li 无序列表文中图片是本地的 链接: 图片下载地址 代码 <!DOCTYPE html> <…