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

vue中验证码的实现方式

在写登录页的时候有的系统会让你也进行一下验证码绘制,那么验证码如何实现的呢?我在写登录页的时候通过将登录框,验证码分开页面来写,最后将它们变成标签来导入到我的样式页面中,这样写不仅方便,更容易修改代码,很便捷。

也就是说我登录页的样式,输入框,验证码是分别写了三个页面。 

然后将验证码绘制的图形,通过组件的形式放入输入框的页面中。

import Identify from '../component/code.vue'; //引用验证码组件
<!-- 验证码组件 --><el-col :span="8"><div class="change-email"><Identify :identifyCode="identifyCode" :changeCode="changeCode"></Identify><!-- 引用验证码组件 --></div></el-col>

然后下面这里是验证码的逻辑,比如验证码的初始值或者它的生成范围,可以只生成数字或者字母

// 验证码逻辑
const identifyCode = ref('1234'); // 验证码的初始值
const identifyCodes = '1234567890abcdefghijklmnopqrstuvwxyz'; // 验证码生成范围
// 生成验证码的方法
const changeCode = () => {identifyCode.value = ''; // 清空当前验证码makeCode(identifyCodes, 4); // 重新生成新的验证码
};
// 生成随机数字
const randomNum = (min: any, max: any) => {max = max + 1; // 最大值加1,使得能够取到最大值return Math.floor(Math.random() * (max - min) + min); // 返回一个在[min, max]范围内的随机数
};
// 根据给定的字符集和长度生成验证码
const makeCode = (data: any, len: any) => {for (let i = 0; i < len; i++) {identifyCode.value += data[randomNum(0, data.length - 1)]; // 从字符集中随机取字符拼接成验证码}
};
onMounted(() => {changeCode(); // 组件挂载时,生成验证码
});

然后changeCode就是每次触发验证码的事件,它都会重新生成一个新的验证码,当然如果在输入验证码错误的时候就需要调用这个验证码重新生成。

最主要的就是这一生成验证码的部分,直接复制就可以,它是通过canvas来进行绘制的

<template><!-- 二维码识别组件容器,包含一个 canvas 元素用于绘制验证码 --><div class="s-canvas"><!-- canvas 元素,用于绘制验证码图案 --><canvas @click="changeCode" class="s-canvas" :width="contentWidth" :height="contentHeight"></canvas></div>
</template>
<script>
export default {name: 'Identify',  // 组件名称props: {identifyCode: {  // 验证码内容type: String,default: '1234'},fontSizeMin: {  // 最小字体大小type: Number,default: 20},fontSizeMax: {  // 最大字体大小type: Number,default: 35},backgroundColorMin: {  // 背景颜色最小值(用于生成干扰背景颜色)type: Number,default: 180},backgroundColorMax: {  // 背景颜色最大值type: Number,default: 240},colorMin: {  // 字体颜色最小值(用于生成干扰字体颜色)type: Number,default: 50},colorMax: {  // 字体颜色最大值type: Number,default: 160},lineColorMin: {  // 干扰线颜色最小值type: Number,default: 40},lineColorMax: {  // 干扰线颜色最大值type: Number,default: 180},dotColorMin: {  // 干扰点颜色最小值type: Number,default: 0},dotColorMax: {  // 干扰点颜色最大值type: Number,default: 255},contentWidth: {  // 验证码画布宽度type: Number,default: 100},contentHeight: {  // 验证码画布高度type: Number,default: 40},changeCode: {  // 切换验证码的事件函数type: Function}},methods: {// 生成一个指定范围内的随机数randomNum(min, max) {return Math.floor(Math.random() * (max - min) + min)},// 生成一个随机的颜色randomColor(min, max) {let r = this.randomNum(min, max)let g = this.randomNum(min, max)let b = this.randomNum(min, max)return 'rgb(' + r + ',' + g + ',' + b + ')'},// 绘制验证码图案drawPic() {let canvas = document.getElementsByClassName('s-canvas');  // 获取所有 canvas 元素let ctx = canvas[1].getContext('2d');  // 获取第一个 canvas 的上下文ctx.textBaseline = 'bottom'  // 设置文字的基准线为底部// 绘制背景ctx.fillStyle = this.randomColor(this.backgroundColorMin, this.backgroundColorMax)ctx.fillRect(0, 0, this.contentWidth, this.contentHeight)  // 绘制背景矩形// 绘制验证码文字for (let i = 0; i < this.identifyCode.length; i++) {this.drawText(ctx, this.identifyCode[i], i)  // 绘制每个字符}// 绘制干扰线this.drawLine(ctx)// 绘制干扰点this.drawDot(ctx)// 为其他 canvas 元素绘制同样的验证码图案(如果存在的话)if (canvas[3]) {let ctx1 = canvas[3].getContext('2d');ctx1.textBaseline = 'bottom'ctx1.fillStyle = this.randomColor(this.backgroundColorMin, this.backgroundColorMax)ctx1.fillRect(0, 0, this.contentWidth, this.contentHeight)for (let i = 0; i < this.identifyCode.length; i++) {this.drawText(ctx1, this.identifyCode[i], i)}this.drawLine(ctx1)this.drawDot(ctx1)}if (canvas[5]) {let ctx2 = canvas[5].getContext('2d');ctx2.textBaseline = 'bottom'ctx2.fillStyle = this.randomColor(this.backgroundColorMin, this.backgroundColorMax)ctx2.fillRect(0, 0, this.contentWidth, this.contentHeight)for (let i = 0; i < this.identifyCode.length; i++) {this.drawText(ctx2, this.identifyCode[i], i)}this.drawLine(ctx2)this.drawDot(ctx2)}},// 绘制文字drawText(ctx, txt, i) {ctx.fillStyle = this.randomColor(this.colorMin, this.colorMax)  // 随机字体颜色ctx.font = this.randomNum(this.fontSizeMin, this.fontSizeMax) + 'px SimHei'  // 随机字体大小let x = (i + 1) * (this.contentWidth / (this.identifyCode.length + 1))  // 计算字符的 x 坐标let y = this.randomNum(this.fontSizeMax, this.contentHeight - 5)  // 计算字符的 y 坐标var deg = this.randomNum(-45, 45)  // 随机旋转角度// 修改坐标原点和旋转角度ctx.translate(x, y)ctx.rotate(deg * Math.PI / 180)ctx.fillText(txt, 0, 0)  // 绘制文字// 恢复坐标原点和旋转角度ctx.rotate(-deg * Math.PI / 180)ctx.translate(-x, -y)},// 绘制干扰线drawLine(ctx) {for (let i = 0; i < 3; i++) {ctx.strokeStyle = this.randomColor(this.lineColorMin, this.lineColorMax)  // 随机线条颜色ctx.beginPath()ctx.moveTo(this.randomNum(0, this.contentWidth), this.randomNum(0, this.contentHeight))  // 起点ctx.lineTo(this.randomNum(0, this.contentWidth), this.randomNum(0, this.contentHeight))  // 终点ctx.stroke()  // 绘制线条}},// 绘制干扰点drawDot(ctx) {for (let i = 0; i < 30; i++) {ctx.fillStyle = this.randomColor(0, 255)  // 随机点的颜色ctx.beginPath()ctx.arc(this.randomNum(0, this.contentWidth), this.randomNum(0, this.contentHeight), 1, 0, 2 * Math.PI)  // 绘制圆形ctx.fill()  // 填充圆形}}},watch: {// 监视验证码内容变化时,重新绘制验证码图案identifyCode() {this.drawPic()}},mounted() {// 页面加载时绘制验证码图案this.drawPic()}
}
</script>
<style scoped>
/* canvas 容器样式 */
.s-canvas {margin-left: 10px;  /* 设置左边距 */display: flex;  /* 使用 flex 布局 */align-items: center;  /* 垂直居中对齐 */cursor: pointer;  /* 鼠标悬浮时显示为可点击 */
}
/* 可选的验证码提示文字样式 */
.s-canvas-tip {color: #5C7099;  /* 设置提示文字的颜色 */font-size: 14px;  /* 设置字体大小 */margin-left: 14px;  /* 设置左边距 */cursor: pointer;  /* 鼠标悬浮时显示为可点击 */
}
</style>

但是生成验证码的书写格式并不是vue3中的,因为我不是通过setup直接写,是通过export来进行导出。

相关文章:

vue中验证码的实现方式

在写登录页的时候有的系统会让你也进行一下验证码绘制&#xff0c;那么验证码如何实现的呢&#xff1f;我在写登录页的时候通过将登录框&#xff0c;验证码分开页面来写&#xff0c;最后将它们变成标签来导入到我的样式页面中&#xff0c;这样写不仅方便&#xff0c;更容易修改…...

从零开始学习18串锂电池BMS保护板

18串锂电池BMS保护板实物开源资料&#xff01; BMS系统ADBMS1818/LTC6813凌力尔特主从一体机采集板&#xff1a;STM32F103LTC6813/ADBMS1818程序已调通: 1:18串电池电压&#xff08;采集精度1.2mV/3mV&#xff09; 2:8通道温度采集 3:一通道电流采集 4:RS485通信&#xff08;楼…...

最左侧1问题的一种二分法解法

背景 最近看TI的C6000系列DSP文档时了解到Leftmost 1 or 0 counting功能&#xff0c; 网上搜索到这篇相关博客&#xff08;最左侧1问题&#xff09;&#xff0c;发现里面的二分法代码自己看不懂&#xff0c;于是尝试用更容易看懂的方式重写一下。 思路 假设输入数据不超过3…...

HarmonyOS-中级(四)

文章目录 Native适配开发三方库的基本使用 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;HarmonyOS专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月09日11点12分 Native适配开发 Node-API HarmonyOS Node-API 是 HarmonyOS 提供的…...

rust中self、self、self区别

self的类型&#xff0c;在给出调用者和方法名的前提下&#xff0c;Rust可以准确地推导出方法是否是只读的&#xff08;&self&#xff09;&#xff0c;是否需要修改数据&#xff08;&mut self&#xff09;&#xff0c;是否会获取数据的所有权&#xff08;self&#xff0…...

种子流和花粉流怎么理解它们之间的大小关系

种子流和花粉流是植物繁殖和遗传多样性研究中的两个重要概念&#xff0c;它们分别描述了种子和花粉在空间上的传播过程。理解它们之间的大小关系&#xff0c;即传播距离和对遗传结构的影响&#xff0c;对于生态学和保护生物学具有重要意义。 种子流&#xff08;Seed Dispersal&…...

Mybatis-plus 源码解读

简述 本篇主要针对MybatisPlus源码进行解读。 案例 上一篇已经讲了Springboot如何集成MybatisPlus&#xff1a; springboot-mybatis-plus集成篇 源码解析 和Springboot集成Mybatis一样&#xff0c; 依赖了mybatis-plus-spring-boot3-starter&#xff0c;其中主要关注spri…...

web 期末作业简单设计网页——“我的家乡”网站简单设计

1、网页效果 首页 七彩云南页 旅游攻略页 用户页面 2、源代码 首页 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>首页</title><link rel"stylesheet" href"out.css&quo…...

Redis篇-3--原理篇2--Redis事务

1、概述 Redis 提供了简单的事务机制&#xff0c;Redis 事务的本质是一组命令的集合。当执行redis事务时&#xff0c;即一次性按照添加顺序依次执行这些命令&#xff0c;中间不会被打断或者干扰。 Redis 的事务机制并不像关系型数据库中的事务那样提供完整的ACID特性&#xf…...

GEE:CCDC 分类组件,对每个分段进行分类

作者:CSDN @ _养乐多_ 连续变化检测与分类(Continuous Change Detection and Classification, CCDC) 利用了时间序列拟合来对影像中的像素值随时间的变化趋势建模。每一段模型代表一个时间段内的地表覆盖类型和状态。 本文将解释如何在谷歌地球引擎(Google Earth Engine,…...

常见排序算法总结 (四) - 快速排序与随机选择

快速排序 算法思想 每一轮在数组相应的范围上随机找一个元素进行划分&#xff0c;将不大于它的所有元素都放到左边&#xff0c;将大于它的元素都放到右边。在左右两个子数组上不断地递归&#xff0c;直到整个数组上有序。 注意&#xff1a;实现时选择的时参考荷兰国旗问题优化…...

[创业之路-187]:《华为战略管理法-DSTE实战体系》-1-从UTStarcom的发展历程,如何辩证的看企业初期发展太顺利中的危机

目录 一、UTStarcom&#xff08;UT斯达康&#xff09;的发展历程 1、创立与初期发展 2、快速成长与上市 3、技术创新与业务拓展 4、战略调整与持续发展 二、从UTStarcom的发展历程&#xff0c;如何辩证的看企业初期发展太顺利中的危机 1、企业初期发展的顺利表现 2、顺…...

C缺陷与陷阱 — 3 深入理解表达式

目录 1 表达式的运算次序 1.1 自增或自减操作符 1.2 函数参数 1.3 函数指针 1.4 函数调用 1.5 嵌套赋值语句 2 函数调用不作为函数参数 3 赋值语句的谨慎使用 1 表达式的运算次序 除了少数操作符&#xff08;函数调用操作符 ( )、&&、| |、? : 和 ,&#xff…...

Next.js 系统性教学:中间件与国际化功能深入剖析

更多有关Next.js教程&#xff0c;请查阅&#xff1a; 【目录】Next.js 独立开发系列教程-CSDN博客 目录 一、Next.js 中间件 (Middleware) 功能解析 1.1 什么是中间件&#xff1f; 1.2 Next.js 中间件的工作机制 1.3 中间件的功能应用 身份验证与授权 请求重定向 修改请…...

openWebUI+ollamawindows+不用docker+webLite本地安装

openWebUI & ollama & windows & 不用docker & webLite 本地安装 总结一下安装教程 10核CPU16G内存 两个web框架都可以&#xff0c;先说简单的 ollama-webui-lite(https://github.com/ollama-webui/ollama-webui-lite) 轻量级&#xff0c;只使用nodejs 先装…...

动态规划——机器分配、01背包问题

一、机器分配 题目名称&#xff1a;机器分配 题目描述&#xff1a; 总公司拥有高效设备M台&#xff0c;准备分给下属的N个分公司。 各分公司若获得这些设备&#xff0c;可以为国家提供一定的盈利。 问&#xff1a;如何分配这M台设备才能使国家得到的盈利最大&#xff1f;求出最…...

leetcode——哈希表1

242.有效的字母异位词 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的 字母异位词 。 示例 1: 输入: s "anagram", t "nagaram" 输出: true示例 2: 输入: s "rat", t "car" 输出: false 提示: 1 < s.le…...

STM32+模拟或硬件IIC+SHT20驱动问题:接上拉电阻、BUSY死锁?

主要问题&#xff1a; 1&#xff0c;使用STM32F103C8T6&#xff0c;模拟IIC&#xff0c;SCL和SDA口配置为推挽输出上拉&#xff0c;主要是SDA脚&#xff0c;每次都要输出输入模式重新配置&#xff0c;虽然也能通信&#xff0c;但不稳定&#xff0c;出错率大&#xff1b; 2&…...

Android四大组件——Activity(二)

一、Activity之间传递消息 在&#xff08;一&#xff09;中&#xff0c;我们把数据作为独立的键值对进行传递&#xff0c;那么现在把多条数据打包成一个对象进行传递&#xff1a; 1.假设有一个User类的对象&#xff0c;我们先使用putExtra进行传递 activity_demo06.xml <…...

PHP实现华为OBS存储

一&#xff1a;华为OBS存储文档地址 官方文档&#xff1a;https://support.huaweicloud.com/obs/index.html github地址&#xff1a;https://github.com/huaweicloud/huaweicloud-sdk-php-obs 二&#xff1a;安装华为OBS拓展 composer require obs/esdk-obs-php 三&#x…...

SQL连续登录问题(详细案例分析)

如果要统计用户活跃度&#xff0c;那就涉及连续登录问题&#xff0c;接下来将举一个简单的例子来详细说明这个问题&#xff1a; 一、创建一些模拟数据 一些测试数据如下&#xff1a; deviceid1,2022-10-26,2022-10-26,2022-11-01 deviceid1,2022-10-26,2022-11-03,2022-11-0…...

OpenCV相机标定与3D重建(9)相机标定函数calibrateCameraRO()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::calibrateCameraRO 是 OpenCV 中用于相机标定的函数&#xff0c;它允许固定某些点来进行更精确的标定。 函数原型 double cv::calibrateCa…...

【一本通】农场派对

【一本通】农场派对 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; N头牛要去参加一场在编号为x(1≤x≤n)的牛的农场举行的派对(1≤N≤1000)&#xff0c;有M(1≤m≤100000)条有向道路&#xff0c;每条路长ti(1≤ti≤100)&#xff1b;每头牛…...

uniapp中父组件传参到子组件页面渲染不生效问题处理实战记录

上篇文件介绍了,父组件数据更新正常但是页面渲染不生效的问题,详情可以看下:uniapp中父组件数组更新后与页面渲染数组不一致实战记录 本文在此基础上由于新增需求衍生出新的问题.本文只记录一下解决思路. 下面说下新增需求方便理解场景: 商品信息设置中添加抽奖概率设置…...

基础暴力算法

线性枚举 线性枚举&#xff08;Linear Enumeration&#xff09;是一种暴力枚举的方法&#xff0c;它逐一检查每个可能的解&#xff0c;适用于搜索和枚举问题。 其核心思路是&#xff1a;对问题的所有可能情况逐一进行遍历&#xff0c;并针对每种情况判断是否满足条件&#xf…...

【复变函数】三、复变函数的积分

目录 1. 复变函数积分1.1. 复积分1.2. 存在性与计算1.2.1 第二类曲线积分与格林公式1.2.2 第一类曲线积分与参数式 1.3. 性质1.4. 圆径积分 2. 柯西积分定理2.1. 柯西&#xff08;Cauchy&#xff09;基本定理与莫雷拉&#xff08;Morrera&#xff09;定理2.2. 复合闭路定理2.3.…...

ChatGPT Pro是什么

ChatGPT Pro 和 ChatGPT Plus 的区别主要体现在功能范围、适用场景和目标用户上。 ChatGPT Plus 功能 • 价格&#xff1a;20美元/月。 • 目标用户&#xff1a;针对个人用户设计。 • 主要特点&#xff1a; • 在高峰期响应速度更快。 • 使用高级模型&#xff08;如 GPT-4…...

React - echarts 世界地图,中国地图绘制

中国地图 首先需要一个包含中国所有省份名称的 json&#xff0c;这个好多网站都能找到。 我传到资源里了&#xff0c;放百度网盘怕太长时间不登录给我删掉了。 中国地图中文版json 我把地图抽出来单独做成了组件&#xff0c;这样用的时候比较方便. 使用的时候&#xff1a; …...

knife4j-openapi3 4.5 最基本的使用 openAPI

最基本的使用&#xff0c;配置太多懒得研究 SpringBoot 整合 knfe4j &#xff0c;使用 OpenAPI3 规范&#xff0c;这个兄弟写的挺好 环境&#xff1a; spring-boot-starter-parent&#xff1a;3.4.0 1. 依赖 <dependency><groupId>com.github.xiaoymin</gr…...

如何在 Ubuntu 22.04 上安装和使用 Apache Kafka

简介 Apache Kafka是一个高性能、低延迟的分布式流处理平台&#xff0c;广泛用于构建实时数据管道和流式应用。本文将指导你如何在Ubuntu 22.04系统上快速部署Apache Kafka&#xff0c;让你体验到Kafka在处理大规模实时数据流方面的强大能力。通过本教程&#xff0c;你将学会如…...

Linux:network:添加ip的时候自动添加一个本地路由

文章目录 问题问题 最近在看一个路由的问题,顺便看内核代码,发现在添加IP的时候,内核会自动添加一个local route。 net/ipv4/devinet.c inet_rtm_newaddr->__inet_insert_ifa /* Send message first, then call notifier.Notifier will trigger FIB update, so thatlis…...

Android 10、11、12存储适配相关

AndroidQ(10)分区存储完美适配 - 简书前言 最近时间在做AndroidQ的适配&#xff0c;截止到今天AndroidQ分区存储适配完成&#xff0c;期间出现很多坑&#xff0c;目前网上的帖子大部分都是概述变更内容&#xff0c;接下来的几篇帖子都是对分区存储实际...https://www.jianshu.c…...

如何将视频转化为音频?五个方法策略

在日常生活中&#xff0c;我们经常需要将视频中的音频提取出来&#xff0c;以便在特定的场合使用。无论是为了制作铃声、背景音乐&#xff0c;还是为了进行语音转文字处理&#xff0c;视频转音频的需求都非常普遍。如何将视频转化为音频&#xff1f;本文将详细介绍多种将视频转…...

ecovadis评估最新标准

EcoVadis评估的最新标准主要包括奖牌评估规则和新增的徽章规则&#xff0c;以下是对这两方面的详细阐述&#xff1a; 一、奖牌评估规则 评估范围&#xff1a;EcoVadis的评估总分为100分&#xff0c;评估内容涵盖环境、劳工与人权、商业道德、可持续采购等四大主题。 奖牌等级…...

Java版-图论-最小生成树-Kruskal算法

实现描述 为了造出一棵最小生成树&#xff0c;我们从最小边权的边开始&#xff0c;按边权从小到大依次加入&#xff0c;如果某次加边产生了环&#xff0c;就扔掉这条边&#xff0c;直到加入了 n-1 条边&#xff0c;即形成了一棵树。 实现代码 首选我们对所有的边&#xff0c…...

【单片机开发】MCU三种启动方式(Boot选择)[主Flash/系统存储器(BootLoader)/嵌入式SRAM]

目录 参考资料&#xff1a; 利用 Boot 选择不同的启动方式&#xff1a; 单片机的存储结构(主 FLASH/系统存储器/嵌入式 SRAM)&#xff1a; 1. Cortex-M 内核芯片——启动原理&#xff1a; 1.1. 启动流程&#xff1a; 1.2. 根据单片机的存储器映射和架构图&#xff1a;启动…...

实验15 验证LSTM模型的长程依赖

本次实验依托上个实验 一 模型构建 创建LSTM模型&#xff0c;里面包括初始化init函数、初始化权重函数_init_weights、初始化状态函数init_state、前向传播函数forward。 init函数&#xff1a;虽然每个时间的输入和隐层都是一样的&#xff0c;但是他们会有四组不同的权重&am…...

Charles功能说明

1.扫把(clear the current Session) (前头方向) 作用:清除所有抓取的包(正方形框) 2.中心圈-未启用显示(Star Recording)点击启动 -启动之后显示(Stop Recording)点击停止 作用:启动之后开始抓取包(刷新一次页面或跳转抓取内容) 3.锁-未启动显示(Star SSL Proxying)点击启动 -启…...

自动秒收录程序与自动秒收录网站源码论坛版本下载

自动秒收录程序与自动秒收录网站源码论坛版本下载 随着互联网的快速发展&#xff0c;网站优化已成为众多企业和个人博主提升在线影响力的关键手段。其中&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;作为提升网站排名的核心策略&#xff0c;备受关注。而SEO优化的一个…...

HTML颜色-HTML脚本

HTML脚本 js使得HTML页面具有更强的动态和交互性 HTML<script>标签 标签用于定义客户端脚本&#xff0c;比如javascript 可包含脚本语句&#xff0c;也可以通过src属性指向外部的脚本文件 JavaScript最常用于图片操作&#xff0c;表单验证以及动态的内容更新 HTML<n…...

【WRF理论第十三期】详细介绍 Registry 的作用、结构和内容

目录 1. Introduction&#xff1a;介绍 Registry 的作用和功能。2. Registry Contents&#xff1a;详细描述 Registry 的结构和内容&#xff0c;包括各个部分的条目类型。2.1. DIMSPEC ENTRIES&#xff08;维度规格条目&#xff09;2.2. STATE ENTRIES&#xff08;状态变量条目…...

使用Kimi开发自己的问答应用

概述 Kimi是大家常用的一个人工智能助手&#xff0c;本文使用Kimi开发文档&#xff0c;以node作为后端&#xff0c;开发与一个问答系统 实现效果 Kimi简介 Kimi是由Moonshot AI开发的人工智能助手&#xff0c;擅长中文和英文对话。目标是帮助用户解决问题、提供信息和执行任…...

Vue前端开发-路由其他配置

在路由文件中&#xff0c;除了跳转配置外&#xff0c;还可以进行路径重定向配置&#xff0c;如果没有找到对应的地址&#xff0c;还可以实现404的配置&#xff0c;同时&#xff0c;如果某个页面需要权限登录&#xff0c;还可以进行路由守卫配置&#xff0c;接下来&#xff0c;分…...

AI与遥感的融合:构建新一代智能监测作业平台

在测绘地理信息与遥感领域&#xff0c;人工智能&#xff08;AI&#xff09;技术的融合正推动着一场监测作业模式的革命。AI不仅提升了数据处理的效率&#xff0c;还极大地扩展了遥感技术的应用范围和深度。 遥感监测的智能化趋势 随着遥感数据量的激增&#xff0c;传统的人工…...

3D 视觉定位技术:汽车零部件制造的智能变革引擎

在汽车零部件制造领域&#xff0c;传统工艺正面临着前所未有的挑战。市场对于零部件精度与生产效率近乎苛刻的要求&#xff0c;促使企业寻求突破之道。而 3D 视觉定位技术&#xff0c;为汽车零部件制造开启了精准定位与智能化生产的新纪元。 3D 视觉定位系统的核心技术原理 3…...

git提交时出现merge branch main of xxx

git提交时出现merge branch main of xxx 原因&#xff1a; 1、同事commit了一个修改A&#xff0c;push到remote 2、我把这个修改直接pull了下来&#xff08;pull是fetchmerge的操作&#xff0c;自动合并到本地workspace&#xff09; 3、同事因为后续的commit有冲突&#xff0c…...

重生之我在异世界学编程之C语言:深入结构体篇(上)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文《1》 结构体的两种声明一、结构…...

到达率和服务率在python中实现

到达率和服务率在python中实现 概念理解 到达率(Arrival Rate):是指顾客(或任务、事件等)到达服务系统的平均速率,通常用单位时间内到达的数量来表示。例如,在一个客服中心,每小时平均有10个客户来电咨询,这里的每小时10个客户就是到达率。服务率(Service Rate):是…...

重视猫艾滋:宠物健康的隐秘挑战

猫艾滋&#xff0c;全称为猫获得性免疫缺陷综合征&#xff08;Feline Acquired Immunodeficiency Syndrome&#xff09;&#xff0c;是由猫免疫缺陷病毒&#xff08;FIV&#xff09;感染引起的一种严重危害猫类健康的疾病。虽然其名称与人类艾滋病相似&#xff0c;但猫艾滋仅在…...

使用长轮询解决某些场景的实时消息推送需求

需求来源 最近做一个需求实现在移动端通过按钮&#xff0c;远程控制大屏幕上展示的资源进行实时切换&#xff0c;可以展示一个大屏页面&#xff0c;可以展示一段视频&#xff0c;也可以展示一张图片。 解决思路 大屏幕上打开一个游览器&#xff0c;访问指定动态资源展示页面…...