uniapp -- 验证码倒计时按钮组件
jia-countdown-verify 验证码倒计时按钮组件
一个用于发送短信验证码的倒计时按钮组件,支持自定义样式、倒计时时间和文本内容。适用于各种需要验证码功能的表单场景。
代码已经 发布到插件市场 可以自行下载 下载地址
特性
- 支持自定义按钮样式(颜色、大小、圆角等)
- 支持自定义倒计时时间
- 支持自定义按钮文本
- 支持手动触发和自动开始倒计时
- 支持重置倒计时状态
- 提供多种事件回调(发送、倒计时变化、结束)
- 支持传递参数到事件回调中
安装方法
在 uni-app 插件市场中搜索 jia-countdown-verify
并导入到项目中。
基础用法
<template><view><jia-countdown-verify ref="countdownBtn" @send="onSend" /></view>
</template><script>
export default {methods: {onSend() {// 发送验证码逻辑// 成功后调用组件的 success 方法开始倒计时this.$refs.countdownBtn.success();}}
}
</script>
高级用法
使用 successVal 和 resetVal 控制倒计时
<template><view><input type="text" v-model="phone" placeholder="请输入手机号" /><jia-countdown-verify@send="sendCode":successVal="successCount":resetVal="resetCount"/></view>
</template><script>
export default {data() {return {phone: "",successCount: 0, // 成功计数器resetCount: 0, // 重置计数器};},methods: {sendCode() {// 验证手机号if (!/^1\d{10}$/.test(this.phone)) {uni.showToast({title: "请输入正确的手机号",icon: "none",});// 增加重置计数器触发重置this.resetCount++;return;}// 模拟API请求setTimeout(() => {// 发送成功,增加成功计数器触发倒计时this.successCount++;}, 1000);}}
}
</script>
API
Props
属性名 | 类型 | 默认值 | 说明 |
---|---|---|---|
text | String | “发送验证码” | 按钮默认文本 |
sendText | String | “请稍候…” | 发送中的按钮文本 |
countdownText | String | “s后获取” | 倒计时文本后缀 |
seconds | Number | 60 | 倒计时秒数 |
width | String | “182rpx” | 按钮宽度 |
height | String | “56rpx” | 按钮高度 |
padding | String | “0” | 按钮内边距 |
margin | String | “0” | 按钮外边距 |
radius | String | “6rpx” | 按钮圆角 |
size | Number | 24 | 字体大小(rpx) |
color | String | “#5677fc” | 字体颜色 |
background | String | “transparent” | 背景颜色 |
borderWidth | String | “1px” | 边框宽度 |
borderColor | String | “#5677fc” | 边框颜色 |
isOpacity | Boolean | true | 倒计时状态是否透明 |
hover | Boolean | true | 是否有点击效果 |
successVal | Number/String | 0 | 触发倒计时的值,值变化时开始倒计时 |
resetVal | Number/String | 0 | 重置倒计时的值,值变化时重置倒计时 |
start | Boolean | false | 是否自动开始倒计时 |
params | Number/String | 0 | 传递给事件的参数 |
disabledColor | String | “” | 禁用状态的背景颜色 |
Events
事件名 | 说明 | 回调参数 |
---|---|---|
send | 点击发送按钮时触发 | { params: 传入的params值 } |
countdown | 倒计时变化时触发 | { seconds: 剩余秒数, params: 传入的params值 } |
end | 倒计时结束时触发 | { params: 传入的params值 } |
Methods
方法名 | 说明 | 参数 |
---|---|---|
success | 开始倒计时 | - |
reset | 重置倒计时状态 | - |
使用示例
默认使用
<jia-countdown-verify ref="sms1" @send="onSend" />
默认为倒计时状态
<jia-countdown-verify :start="true" @send="onSend" />
设置圆角
<jia-countdown-verify :radius="'20rpx'" @send="onSend" />
设置颜色
<jia-countdown-verifycolor="#fff"background="#000"borderWidth="0"@send="onSend"
/>
设置大小
<jia-countdown-verify:width="'300rpx'":height="'60rpx'"@send="onSend"
/>
设置秒数
<jia-countdown-verify :seconds="120" @send="onSend" />
改变倒计时状态下颜色
<jia-countdown-verifybackground="#02B653"borderWidth="0"color="#fff"@send="onSend"disabledColor="#999"
/>
设置文本
<jia-countdown-verifytext="发送验证码短信"countdownText="秒后可重发"@send="onSend"
/>
注意事项
- 当使用
ref
手动控制倒计时时,需要在发送验证码成功后调用success()
方法开始倒计时 - 当使用
successVal
和resetVal
控制倒计时时,只需改变这两个值即可触发相应操作 - 组件内部会在销毁时自动清除定时器,无需手动处理
- 倒计时过程中按钮会自动禁用,防止重复点击
组件封装中细节点总结
- 微信小程序兼容:style=“[styleObj]” 需要 统一使用数组包裹样式对象
- 慎用 upx 单位:仅在维护老项目或已有组件库时,才需继续使用 upx;新开发应尽量避免使用 upx,并可逐步将 upx 单位改为 rpx,如果确实需要动态计算 upx 值,可调用 uni.upx2px()。
- 在 Vue3 中为所有自定义事件声明 emits,避免与原生事件冲突
- 生命周期兼容处理 vue2 beforeDestroy vue3 unmounted 使用注释做环境区分 // #ifdef VUE2, // #endif
完整代码
建议通过插件市场下载小编持续维护
<template><!-- 验证码倒计时按钮 --><buttonclass="sms-btn":disabled="isDisabled":hover-class="hover ? 'button-hover' : 'none'"@click="handleClick":style="[buttonStyle]">{{ buttonText }}</button>
</template><script>
/*** 验证码倒计时按钮组件* @description 用于发送短信验证码的倒计时按钮,支持自定义样式和倒计时时间* @property {String} text - 按钮默认文本* @property {String} sendText - 发送中的按钮文本* @property {String} countdownText - 倒计时文本后缀* @property {Number} seconds - 倒计时秒数* @property {String} width - 按钮宽度* @property {String} height - 按钮高度* @property {String} padding - 按钮内边距* @property {String} margin - 按钮外边距* @property {String} radius - 按钮圆角* @property {Number} size - 字体大小* @property {String} color - 字体颜色* @property {String} background - 背景颜色* @property {String} borderWidth - 边框宽度* @property {String} borderColor - 边框颜色* @property {Boolean} isOpacity - 倒计时状态是否透明* @property {Boolean} hover - 是否有点击效果* @property {Number/String} successVal - 触发倒计时的值,值变化时开始倒计时* @property {Number/String} resetVal - 重置倒计时的值,值变化时重置倒计时* @property {Boolean} start - 是否自动开始倒计时* @property {Number/String} params - 传递给事件的参数* @event {Function} send - 点击发送按钮时触发* @event {Function} countdown - 倒计时变化时触发* @event {Function} end - 倒计时结束时触发*/
export default {name: "SmsCountdownButton",/*** Vue3 现在提供了一个emits选项,类似于现有props选项。此选项可用于定义组件可以向其父对象发出的事件强烈建议使用emits记录每个组件发出的所有事件。这一点特别重要,因为去除了.native修饰符。emits 现在在未使用声明的事件的所有侦听器都将包含在组件的中$attrs,默认情况下,该侦听器将绑定到组件的根节点。*/emits: ["countdown", "send", "end"], // 显式声明自定义事件props: {text: { type: String, default: "发送验证码" }, // 按钮默认文本sendText: { type: String, default: "请稍候..." }, // 发送中的按钮文本countdownText: { type: String, default: "s后获取" }, // 倒计时文本后缀seconds: { type: Number, default: 60 }, // 倒计时秒数width: { type: String, default: "182rpx" }, // 按钮宽度height: { type: String, default: "56rpx" }, // 按钮高度padding: { type: String, default: "0" }, // 按钮内边距margin: { type: String, default: "0" }, // 按钮外边距radius: { type: String, default: "6rpx" }, // 按钮圆角size: { type: Number, default: 24 }, // 字体大小color: { type: String, default: "#5677fc" }, // 字体颜色background: { type: String, default: "transparent" }, // 背景颜色borderWidth: { type: String, default: "1px" }, // 边框宽度borderColor: { type: String, default: "#5677fc" }, // 边框颜色isOpacity: { type: Boolean, default: true }, // 倒计时状态是否透明hover: { type: Boolean, default: true }, // 是否有点击效果successVal: { type: [Number, String], default: 0 }, // 触发倒计时的值resetVal: { type: [Number, String], default: 0 }, // 重置倒计时的值start: { type: Boolean, default: false }, // 是否自动开始倒计时params: { type: [Number, String], default: 0 }, // 传递给事件的参数disabledColor: { type: String, default: "" }, // 禁用状态的字体颜色},data() {return {state: "idle", // 按钮状态:idle(空闲)、pending(发送中)、countdown(倒计时)remaining: this.seconds, // 剩余秒数timer: null, // 定时器};},computed: {/*** 按钮是否禁用* @return {Boolean} 非空闲状态时禁用按钮*/isDisabled() {return this.state !== "idle";},/*** 按钮文本* @return {String} 根据状态返回不同的按钮文本*/buttonText() {// 空闲状态if (this.state === "idle") {return this.text;// 发送状态} else if (this.state === "pending") {return this.sendText;// 倒计时状态} else if (this.state === "countdown") {return `${this.remaining}${this.countdownText}`;}},/*** 按钮样式* @return {Object} 样式对象*/buttonStyle() {const style = {width: this.width,height: this.height,padding: this.padding,margin: this.margin,color: this.color,background: this.background,borderWidth: this.borderWidth,borderColor: this.borderColor,borderRadius: this.radius,fontSize: this.size + "rpx",borderStyle: "solid",textAlign: "center",};// 倒计时状态且需要透明时设置透明度if (this.state === "countdown" && this.isOpacity) {style.opacity = 0.5;}// 倒计时状态且需要禁用时设置背景颜色if (this.disabledColor && this.state === "countdown") {style.background = this.disabledColor;}return style;},},watch: {/*** 监听成功值变化,触发倒计时*/successVal(newVal, oldVal) {if (newVal !== oldVal) {this.success();}},/*** 监听重置值变化,重置倒计时*/resetVal(newVal, oldVal) {if (newVal !== oldVal) {this.reset();}},},mounted() {// 如果设置了自动开始,则立即开始倒计时if (this.start) {this.success();}},// 在 Vue3 中组件卸载的生命周期被重新命名 destroyed 修改为 unmounted// #ifdef VUE2beforeDestroy() {// 组件销毁前清除定时器if (this.timer) {clearInterval(this.timer);this.timer = null;}},// #endif// #ifdef VUE3unmounted() {// 组件销毁前清除定时器if (this.timer) {clearInterval(this.timer);this.timer = null;}},// #endifmethods: {/*** 开始倒计时*/startCountdown() {// 清除可能存在的定时器if (this.timer) {clearInterval(this.timer);}// 设置状态为倒计时this.state = "countdown";this.remaining = this.seconds;// 触发倒计时事件 {因为倒计时事件是每秒触发一次,最开始要触发一次}this.$emit("countdown", { seconds: this.remaining, params: this.params });// 设置定时器this.timer = setInterval(() => {// 倒计时this.remaining--;if (this.remaining > 0) {// 每秒触发倒计时事件this.$emit("countdown", {seconds: this.remaining,params: this.params,});} else {// 倒计时结束,清除定时器clearInterval(this.timer);this.timer = null;// 设置状态为空闲this.state = "idle";// 触发结束事件this.$emit("end", { params: this.params });}}, 1000);},/*** 成功发送验证码,开始倒计时*/success() {// 如果按钮状态不为倒计时,则开始倒计时 [空闲状态|发送中状态都可以进入]// 自动开始时是空闲,手动点击时是发送中if (this.state !== "countdown") {this.startCountdown();}},/*** 重置按钮状态*/reset() {// 清除定时器if (this.timer) {clearInterval(this.timer);this.timer = null;}// 重置状态this.state = "idle";// 重置剩余秒数this.remaining = this.seconds;},/*** 按钮点击处理*/handleClick() {// 如果按钮状态为空闲,则设置状态为发送中,并触发发送事件if (this.state === "idle") {// 设置状态为发送中this.state = "pending";// 触发发送事件this.$emit("send", { params: this.params });}},},
};
</script><style scoped>
/* 按钮基本样式 */
.sms-btn {display: inline-block; /* 内联块级元素 */text-align: center; /* 文本居中 */cursor: pointer; /* 鼠标样式 */
}
/* 禁用状态样式 */
.sms-btn:disabled {cursor: not-allowed; /* 禁用状态的鼠标样式 */
}
.button-hover {transform: scale(0.98); /* 按钮悬停时的缩放 */box-shadow: 0 2px 5px rgba(0,0,0,0.2); /* 按钮悬停时的阴影 */
}</style>
相关文章:
uniapp -- 验证码倒计时按钮组件
jia-countdown-verify 验证码倒计时按钮组件 一个用于发送短信验证码的倒计时按钮组件,支持自定义样式、倒计时时间和文本内容。适用于各种需要验证码功能的表单场景。 代码已经 发布到插件市场 可以自行下载 下载地址 特性 支持自定义按钮样式(颜色、…...
e.g. ‘django.db.models.BigAutoField‘.
在Django框架中,django.db.models.BigAutoField 是一个用于数据库模型的字段类型,它用于自动增长的ID字段。这个字段类型特别适用于需要处理大量数据的应用,比如在大型网站或应用中,普通的 AutoField 可能不足以存储增长的ID值&am…...
【HTTPS基础概念与原理】对称加密与非对称加密在HTTPS中的协作
在HTTPS通信中,对称加密和非对称加密协同工作,共同保障数据的机密性和密钥交换的安全性。以下是两者的协作机制及RSA、ECDHE等算法的核心作用: 一、对称加密与非对称加密的分工 1. 对称加密(如AES、ChaCha20) • 作用&…...
ESP系列单片机选择指南:结合实际场景的最优选择方案
前言 在物联网(IoT)快速发展的今天,ESP系列单片机凭借其优异的无线连接能力和丰富的功能特性,已成为智能家居、智慧农业、工业自动化等领域的首选方案。本文将深入分析各款ESP芯片的特点,结合典型应用场景,帮助开发者做出最优选择…...
使用Thrust库实现异步操作与回调函数
使用Thrust库实现异步操作与回调函数 在Thrust库中,你可以通过CUDA流(stream)来实现异步操作,并在适当的位置插入回调函数。以下是如何实现的详细说明: 基本异步操作 Thrust本身并不直接暴露CUDA流接口,但你可以通过以下方式使…...
【Python 异常处理】
Python 的异常处理机制是构建健壮程序的核心工具,通过 try-except 结构实现优雅的错误管理。以下是系统化指南: 一、基础异常处理结构 try:# 可能出错的代码result 10 / 0 except ZeroDivisionError:# 异常处理逻辑print("错误:除数不…...
40:相机与镜头选型
第一章 相机 1.1 理论基础 1.1.1 相机分类 1 )按照芯片类型: CCD 相机、 CMOS 相机 2 )按照传感器的结构特性:线阵相机、面阵相机 3 )按照扫描方式:隔行扫描相机、逐行扫描相机 4 )按…...
【ESP32-S3】Guru Meditation Error 崩溃分析实战:使用 addr2line 工具 + bat 脚本自动解析 Backtrace
【ESP32-S3】Guru Meditation Error 崩溃分析实战:使用 addr2line 工具 bat 脚本自动解析 Backtrace 在使用 ESP32-S3 进行开发时,我们常常遇到串口报错,例如: Guru Meditation Error: Core 1 paniced (LoadProhibited). Exce…...
win11 VSCode 强制弹窗微软登录
今天在一台新电脑上配置VSCode同步的时候,用了微软账号,因为这台电脑比较特殊,不方便科学上网,所以一开始用的微软账户登录,导致和GitHub账号登录的配置、扩展等等不同步。 后面准备改用GitHub账号登录发现不行&#…...
Thrust库中的Gather和Scatter操作
Thrust库中的Gather和Scatter操作 Thrust是CUDA提供的一个类似于C STL的并行算法库,其中包含两个重要的数据操作:gather(聚集)和scatter(散开)。 Gather操作 Gather操作从一个源数组中按照指定的索引收集元素到目标数组中。 函数原型: t…...
springboot + mysql8降低版本到 mysql5.7
springboot mysql8降低版本到 mysql5.7 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.49</version></dependency>spring:datasource:driverClassName: com.mysql.jdbc.D…...
在 Windows 中配置使用 WSL 来运行 Linux 环境,主要有以下步骤:
一、安装 WSL 方法一:使用 wsl --install 命令 :以管理员身份运行 PowerShell 或 Windows 命令提示符,输入 wsl --install 命令,该命令将自动启用运行 WSL 所需的功能,并安装默认的 Linux 发行版 Ubuntu。 方法二&…...
TypeScript泛型:从入门到精通的全方位指南
TypeScript泛型:从入门到精通的全方位指南 前言 最近在社区看到很多小伙伴对TypeScript的泛型概念感到困惑。作为一名从Java转战前端的老兵,我想用最接地气的方式,带大家彻底搞懂这个看似高深实则简单的重要特性。 一、什么是泛型…...
DA14531如何在固件中生成与时间相关的mac和版本号
一. 蓝牙device information service显示固件编译时间 这里我是用序列号的characteristic来显示。 只需要把序列号的characteristic value用宏的方式: #define APP_DIS_SERIAL_NB_STR (__DATE__" "__TIME__) #define APP_DIS_SERIAL_NB_STR…...
内存安全设计方案
内存安全设计方案 1. 内存问题分析 1.1 常见内存问题 内存泄漏: 单例对象持有过多引用缓存未及时清理线程池资源未释放内存溢出: 大对象频繁创建队列积压并发处理不当GC频繁: 对象创建过多内存碎片化大对象分配1.2 问题场景 #mermaid-svg-uPgkoDPv6GNGT28v {font-family:&…...
免费Ollama大模型集成系统——Golang
Ollama Free V2 Web 功能实现:界面交互与后端逻辑 一、Web 界面概述 Ollama Free V2 的 Web 界面提供了丰富的交互功能,包括模型选择、图片上传、历史记录查看等。界面使用 Bootstrap 进行布局,结合 JavaScript 实现动态交互。 二、前端界…...
工具学习_模糊测试
定义:模糊测试(fuzz testing, fuzzing)是一种软件测试技术。其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程序异常,如崩溃、断言失败,以发现可能的程序错误,比如内存泄漏。…...
AI智能分析网关V4周界入侵检测算法精准监测与智能分析,筑牢周界安全防线
一、方案背景 随着安全防范需求的不断提升,传统周界安防系统存在误报率高、响应迟缓、智能化程度低等问题,难以满足现代化安全管理的要求。AI智能分析网关V4集成先进的人工智能算法与高性能计算能力,能够实现对周界区域的精准监测与智能分…...
ubuntu20.04系统搭建k8s1.28集群-docker作为容器运行时
ubuntu系统搭建 ubuntu-22.04.5-desktop-amd64.iso映像文件--->实际却是20.4focal版本。 【安装过程没有特别指出的默认回车下一步】 【用户和密码设置】 【网络连接】 【在vmware上安装的话,网络配置如下】【在vm里配置选择nat或者桥接即可】 【国内源配置】&…...
安全合规检查开源项目ComplianceAsCode/content详解及操作系统新产品开发适配指南
I. ComplianceAsCode/content简介 A. 项目使命及其在自动化合规中的重要性 ComplianceAsCode/content项目致力于为各类操作系统发行版和产品提供安全与合规内容。该项目的核心目标是促进自动化安全扫描和配置验证,从而取代传统的手动审计方法,这与日益增长的“合规即代码”…...
Jmeter -- JDBC驱动连接数据库超详细指南
数据库性能决定应用成败!高峰期,慢查询拖垮系统?并发用户激增导致连接超时?这些问题让开发者头疼不已。Apache JMeter作为性能测试神器,不仅能测试Web应用,还能直连数据库,模拟多用户负载&#…...
R利用spaa包计算植物/微生物的生态位宽度和重叠指数
一、生态位宽度 生态位宽度指数包括shannon生态位指数和levins生态位指数。下面是采用levins方法计算生态位宽度。method也可以选择“shannon”。 二、生态位重叠指数 生态位重叠指数,包括levins生态位重叠指数、schoener生态位重叠指数、petrai…...
《AI大模型应知应会100篇》第62篇:TypeChat——类型安全的大模型编程框架
第62篇:TypeChat——类型安全的大模型编程框架 摘要 在构建 AI 应用时,一个常见的痛点是大语言模型(LLM)输出的不确定性与格式不一致问题。开发者往往需要手动解析、校验和处理模型返回的内容,这不仅增加了开发成本&a…...
STM32 片上资源之串口
STM32 片上资源之串口 1 串口介绍1.1 初步介绍1.2 主要特性1.2.1 USART特性1.2.2 UART特性 1.3 主要寄存器1.4 波特率计算1.5 常用工作模式1.5.1 轮询模式:1.5.2 中断模式:1.5.3 DMA模式: 1.6 常见应用1.7 注意事项 2 软件层面协议2.1 基本概…...
全球首个投影机息屏显示专利授权:九天画芯重新定义设备交互与节能显示新范式
一、从 “功能闲置” 到 “持续交互”—— 投影机专利授权开启显示技术新纪元 在智能设备高速发展的今天,投影机作为重要的显示终端,长期面临 “非观影时段功能闲置” 的行业痛点。2025 年,一项名为 “投影机息屏显示” 的核心基础专利获得授…...
音频分类的学习
1.深度学习PyTorch入门-语音分类 https://blog.csdn.net/sinat_41787040/article/details/129795496 https://github.com/musikalkemist/pytorchforaudio https://github1s.com/musikalkemist/pytorchforaudio/blob/main/04%20Creating%20a%20custom%20dataset/urbansoundda…...
Java—— 可变参数、集合工具类、集合嵌套
可变参数 说明 1. 可变参数本质上就是一个数组 2. 作用:在形参中接收多个数据 3. 格式:数据类型...参数名称 举例:int...a 4. 注意事项: 形参列表中可变参数只能有一个 可变参数必须放在形参列表的最后面 案例演示 …...
AGI大模型(15):向量检索之调用ollama向量数据库
这里介绍将向量模型下载到本地,这里使用ollama,现在本地安装ollama,这里就不过多结束了。直接从下载开始。 1 下载模型 首先搜索模型,这里使用bge-large模型,你可以根据自己的需要修改。 点击进入,复制命令到命令行工具中执行。 安装后查看: 2 代码实现 先下载ollama…...
“强强联手,智启未来”凯创未来与绿算技术共筑高端智能家居及智能照明领域新生态
近日,北京凯创未来科技有限公司总经理赵健凯先生莅临广东省绿算技术有限公司北京运营中心,双方正式签订战略合作协议,标志着绿算技术在高端智能家居及智能照明领域的技术实力与产业布局获得智能家居行业认可,同时也为凯创未来在高…...
【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权
【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权 文章目录 【内网渗透】——S4u2扩展协议提权以及KDC欺骗提权[toc]一:Kerberos 委派攻击原理之 S4U2利用1.1原理1.2两种扩展协议**S4U2Self (Service for User to Self)****S4U2Proxy (Service for User to Proxy)*…...
Linux grep -r 查找依赖包是否存在依赖类 Class
方法一:通过 Linux ,grep -r ClassPath 命令 grep -f org.apache.kafka.connect.source.SourceRecord在 jar 包所在 lib 或者 lib/plugins 目录下执行,grep -r, flink-sql-connector-sqlserver-cdc-3.3.0.jar 中此 kafka Source…...
Qt笔记---》.pro中配置
文章目录 1、概要1.1、修改qt项目的中间文件输出路径和部署路径1.2、Qt 项目模块配置1.3、外部库文件引用配置 1、概要 1.1、修改qt项目的中间文件输出路径和部署路径 (1)、为解决 “ 输出文件 ” 和 “ 中间输出文件 ”全部在同一个文件夹下的问题&am…...
D. Eating【Codeforces Round 1005 (Div. 2)】
D. Eating 题意 有 n n n 个史莱姆排成一行,第 i i i 个史莱姆的权重为 w i w_i wi。若史莱姆 i i i 的权重满足 w i ≥ w j w_i \geq w_j wi≥wj,则它可以吃掉史莱姆 j j j;之后,史莱姆 j j j 会消失,…...
猫眼浏览器:简约安全,极速浏览
猫眼浏览器是一款以简约安全为目标的Chrome内核增强版浏览器,基于最新的Chromium开源内核进行二次优化开发。它不仅继承了Chrome浏览器的高速浏览体验,还通过增强的隐私保护设置,让用户远离被追踪和广告的烦恼。无论是日常浏览、信息查询还是…...
安全扫描之 Linux 杀毒软件 Clamav 安装
文章目录 背景Clamav 简介安装使用1、安装epel-release2、Clamav安装3、成功安装4、更新病毒库5、执行扫描6、结果分析7、常见问题 背景 最近在做HVV准备工作,应要求需要在 Linux 服务器上安装杀毒软件,以此文记录下Clamav 安装过程。 Clamav 简介 Cl…...
排序算法详解
排序算法全面解析 排序算法是计算机科学中最基础也最重要的算法之一。它将一组数据(例如数字列表、字符串集合)按照特定的顺序(升序或降序)重新排列。高效的排序算法对于优化其他算法(如搜索和合并算法)的…...
[特殊字符] GSG 插件 + 渲染 101:C4D 渲染效率革命!
一、GSG 插件:C4D 创作的「超级加速器」 灰猩猩(GSG)插件是 C4D 设计师的刚需工具: Light Kit Pro:1 分钟生成专业灯光预设,告别手动布光烦恼GorillaCam:自动添加电影级相机运动,镜…...
centos中postfix的作用
/usr/libexec/postfix/master 是 Postfix 邮件服务器的主进程,qmgr 和 pickup 是 Postfix 的子进程。这些进程本身是正常的,但如果你怀疑服务器被用于钓鱼活动,需要进一步检查 Postfix 的配置和日志,确保它没有被滥用。 1. 检查 P…...
tocmat 启动怎么设置 jvm和gc
在生产环境中部署 Java Web 应用时,我们经常需要给 Tomcat 设置 JVM 参数和 GC 策略,以提高性能、稳定性和可观察性。以下是完整教程: 一、Tomcat 设置 JVM 启动参数的方式 1. 修改 startup 脚本(推荐) 以 Linux 系统…...
【工奥阀门科技有限公司】签约智橙PLM
近日,工奥阀门科技有限公司正式签约了智橙泵阀行业版PLM。 忠于质量,臻于服务,精于研发 工奥阀门科技有限公司(以下简称工奥阀门)坐落于浙江永嘉,是一家集设计、开发、生产、销售、安装、服务为一体的阀门…...
Axure设计之轮播图——案例“一图一轮播”
轮播图是一种常见且实用的组件,用于展示多张图片或内容,同时节省页面空间。在Axure中,通过动态面板和交互设置,我们可以轻松实现一个“一图一轮播”的效果,即每次只展示一张图片,并通过按钮或自动切换来浏览…...
可视化图解算法39: 输出二叉树的右视图
1. 题目 描述 请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图 数据范围: 0≤n≤10000 要求: 空间复杂度 O(n),时间复杂度 O(n) 如输入[1,2,4,5,3],[4,2,5,1,3]时,通过前序遍历的结…...
数据库基础复习笔记
数据库 相关概念 名称全称检查数据库存储数据的仓库,数据是有组织的进行存储DataBase(DB)数据库管理系统操作和管理数据库的大型软件DataBase Management System(DBMS)SQL操作关系型数据库的编程语言,定义了一套操作关系型数据库…...
鸿蒙OSUniApp 实现一个精致的日历组件#三方框架 #Uniapp
使用 UniApp 实现一个精致的日历组件 前言 最近在开发一个约会小程序时,需要实现一个既美观又实用的日历组件。市面上虽然有不少现成的组件库,但都不太符合我们的设计需求。于是,我决定从零开始,基于 UniApp 自己实现一个功能完…...
Kotlin 协程实战:实现异步值加载委托,对值进行异步懒初始化
在实际开发中,我们经常遇到这样的场景。 需要立即初始化但计算成本高昂的值 val expensiveValue calculateExpensiveValue() 可能引发阻塞的初始化操作 val resource loadResourceFromNetwork()这些场景通常需要满足以下需求: 异步加载:…...
MySQL增删查改进阶
文章目录 一、数据库备份二、数据库约束2.1 NOT NULL2.2 UNIQUE:唯一约束2.3 DEFAULT:默认值约束 一、数据库备份 在MySQL当中,数据库是如何备份的呢?主要通过三种方式进行备份: 数据库最终都是存储在硬盘上…...
Tensorflow2保存和加载模型
1、model.save() and model.load() 此种方法可保存模型的结构、参数等内容。加载模型后无需设置即可使用! 保存模型: model.save(my_model.h5) 加载模型: # 加载整个模型 loaded_model tf.keras.models.load_model(my_model.h5) 注意&…...
通过泛域名解析把二级域名批量绑定到wordpress的指定页面
通过泛域名解析将二级域名批量绑定到WordPress的指定页面,需要完成两个主要步骤:一是设置泛域名解析,二是配置服务器和WordPress以实现二级域名到指定页面的映射。以下是详细的操作方法: 1. 设置泛域名解析 在域名注册商的管理后…...
BGP联邦+反射器实验
一、实验拓扑 二、IP规划 骨干: 172.16.0.0/30 ---- R2-R3 172.16.0.4/30 ---- R3-R4 172.16.0.8/30 ---- R4-R7 172.16.0.12/30 ---- R6-R7 172.16.0.16/30 ---- R5-R6 172.16.0.20/30 ---- R2-R5 非骨干: 172.16.2.0/24 ---- R2的环回 2.2.2.2/32 17…...
3天云南旅游规划
云南的主要旅游城市和景点。昆明作为云南的省会,拥有丰富的自然景观和适合短途游玩的地方。 第一天可以安排在昆明市内和周边,方便游玩。 第二天,可以考虑去大理,这是云南的著名旅游城市,距离昆明大约2小时的车程。大理…...