JavaScript 时间转换:从 HH:mm:ss 到十进制小时及反向转换
关键点
- JavaScript 可以轻松实现时间格式(HH:mm:ss 或 HH:mm)与十进制小时(如 17.5)的相互转换。
- 两个函数分别处理时间字符串到十进制小时,以及十进制小时到时间字符串的转换,支持灵活的输入和输出格式。
- 这些函数适用于时间跟踪、工资计算和数据可视化等场景,代码简单且健壮。
时间字符串到十进制小时
以下函数将 17:00:00 或 17:00 转换为十进制小时(如 17.0 或 17.5):
function timeToDecimal(timeStr) {const parts = timeStr.split(':');if (parts.length < 2 || parts.length > 3) {throw new Error('Invalid time format. Expected HH:mm or HH:mm:ss');}const [hours, minutes, seconds = 0] = parts.map(Number);if (isNaN(hours) || isNaN(minutes) || isNaN(seconds)) {throw new Error('Invalid time values');}if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59 || seconds < 0 || seconds > 59) {throw new Error('Time values out of range');}const decimalTime = hours + (minutes / 60) + (seconds / 3600);return parseFloat(decimalTime.toFixed(2));
}
示例:
- timeToDecimal('17:00:00') 返回 17.0
- timeToDecimal('17:30') 返回 17.5
十进制小时到时间字符串
以下函数将十进制小时(如 17.5)转换为 HH:mm:ss 或 HH:mm 格式:
function decimalToTime(decimalHours, format = 'HH:mm:ss') {if (typeof decimalHours !== 'number' || isNaN(decimalHours) || decimalHours < 0) {throw new Error('Invalid decimal hours');}let hours = Math.floor(decimalHours);let minutesDecimal = (decimalHours - hours) * 60;let minutes = Math.floor(minutesDecimal);let secondsDecimal = (minutesDecimal - minutes) * 60;let seconds = Math.round(secondsDecimal);if (seconds >= 60) {minutes += 1;seconds -= 60;}if (minutes >= 60) {hours += 1;minutes -= 60;}const pad = num => num.toString().padStart(2, '0');if (format === 'HH:mm:ss') {return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;} else if (format === 'HH:mm') {const totalMinutes = Math.round(minutes + seconds / 60);let finalHours = hours;let finalMinutes = totalMinutes;if (totalMinutes >= 60) {finalHours += 1;finalMinutes = 0;}return `${pad(finalHours)}:${pad(finalMinutes)}`;} else {throw new Error('Invalid format. Expected "HH:mm:ss" or "HH:mm"');}
}
示例:
- decimalToTime(17.5, 'HH:mm:ss') 返回 17:30:00
- decimalToTime(17.75, 'HH:mm') 返回 17:45
实际应用
这些函数可用于计算工作时长、生成时间报告或在日程系统中处理时间数据。例如,将员工的上下班时间转换为十进制小时以计算工资。
JavaScript 时间转换:从 HH:mm:ss 到十进制小时及反向转换
在许多 Web 应用中,处理时间数据是一项常见任务。例如,你可能需要将员工的上下班时间(如 17:00:00 或 17:30)转换为十进制小时(如 17.5)以计算工作时长,或者将十进制小时转换回标准时间格式以显示在界面上。本文将一步步教你如何使用 JavaScript 实现两个函数:一个将 HH:mm:ss 或 HH:mm 格式的时间字符串转换为十进制小时,另一个将十进制小时转换回时间字符串。我们还将探讨这些函数的实际应用场景,并提供健壮的代码实现。
什么是时间转换?
时间转换是指在不同时间表示形式之间切换。HH:mm:ss(小时:分钟:秒)和 HH:mm(小时:分钟)是常见的时间字符串格式,而十进制小时(如 17.5 表示 17 小时 30 分钟)则便于数学计算。例如:
- 17:30:00 转换为十进制为 17.5(30 分钟 = 0.5 小时)。
- 17.75 转换回时间为 17:45:00(0.75 小时 = 45 分钟)。
这些转换在时间跟踪、工资计算和数据可视化中非常有用。
函数 1:时间字符串到十进制小时
我们首先实现 timeToDecimal 函数,将时间字符串转换为十进制小时,支持 HH:mm:ss 和 HH:mm 格式。
步骤
- 解析时间字符串:
- 使用 split(':') 将字符串分割为小时、分钟和秒(若有)。
- 检查分割结果的长度:2 表示 HH:mm,3 表示 HH:mm:ss。
- 转换为数字:
- 使用 map(Number) 将字符串数组转换为数字数组。
- 若为 HH:mm,秒默认为 0。
- 验证输入:
- 使用正则表达式 /^\d{2}:\d{2}(:\d{2})?$/ 确保格式正确。
- 检查小时(0-23)、分钟(0-59)、秒(0-59)是否有效。
- 计算十进制小时:
- 公式:hours + (minutes / 60) + (seconds / 3600)。
- 分钟除以 60 转换为小时小数,秒除以 3600 转换为小时小数。
- 格式化输出:
- 使用 toFixed(2) 保留 2 位小数,parseFloat 转换为数字。
代码实现
以下是完整的 timeToDecimal 函数:
function timeToDecimal(timeStr) {if (!/^\d{2}:\d{2}(:\d{2})?$/.test(timeStr)) {throw new Error('Invalid time format. Expected HH:mm or HH:mm:ss');}const [hours, minutes, seconds = 0] = timeStr.split(':').map(Number);if (isNaN(hours) || isNaN(minutes) || isNaN(seconds)) {throw new Error('Invalid time values');}if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59 || seconds < 0 || seconds > 59) {throw new Error('Time values out of range');}const decimalTime = hours + (minutes / 60) + (seconds / 3600);return parseFloat(decimalTime.toFixed(2));
}
示例
console.log(timeToDecimal('17:00:00')); // 17.00
console.log(timeToDecimal('17:30:00')); // 17.50
console.log(timeToDecimal('17:45:00')); // 17.75
console.log(timeToDecimal('17:00')); // 17.00
console.log(timeToDecimal('17:30')); // 17.50
错误处理
- 输入 25:00 会抛出错误:Time values out of range。
- 输入 17:00:00:00 会抛出错误:Invalid time format。
函数 2:十进制小时到时间字符串
接下来,我们实现 decimalToTime 函数,将十进制小时转换回 HH:mm:ss 或 HH:mm 格式,允许用户通过参数选择输出格式。
步骤
- 验证输入:
- 确保输入是正数且非 NaN。
- 提取小时:
- 使用 Math.floor 获取整数部分作为小时。
- 计算分钟:
- 将小数部分乘以 60 得到分钟。
- 计算秒(若需要):
- 将分钟的小数部分乘以 60 得到秒,Math.round 四舍五入。
- 处理进位:
- 若秒 ≥ 60,分钟加 1,秒减 60。
- 若分钟 ≥ 60,小时加 1,分钟减 60。
- 格式化输出:
- 使用 padStart(2, '0') 确保小时、分钟、秒为两位数。
- 根据 format 参数返回 HH:mm:ss 或 HH:mm。
- 对于 HH:mm,将秒转换为分钟并四舍五入。
代码实现
以下是完整的 decimalToTime 函数:
function decimalToTime(decimalHours, format = 'HH:mm:ss') {if (typeof decimalHours !== 'number' || isNaN(decimalHours) || decimalHours < 0) {throw new Error('Invalid decimal hours');}let hours = Math.floor(decimalHours);let minutesDecimal = (decimalHours - hours) * 60;let minutes = Math.floor(minutesDecimal);let secondsDecimal = (minutesDecimal - minutes) * 60;let seconds = Math.round(secondsDecimal);if (seconds >= 60) {minutes += 1;seconds -= 60;}if (minutes >= 60) {hours += 1;minutes -= 60;}const pad = num => num.toString().padStart(2, '0');if (format === 'HH:mm:ss') {return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;} else if (format === 'HH:mm') {const totalMinutes = Math.round(minutes + seconds / 60);let finalHours = hours;let finalMinutes = totalMinutes;if (totalMinutes >= 60) {finalHours += 1;finalMinutes = 0;}return `${pad(finalHours)}:${pad(finalMinutes)}`;} else {throw new Error('Invalid format. Expected "HH:mm:ss" or "HH:mm"');}
}
示例
console.log(decimalToTime(17.00, 'HH:mm:ss')); // 17:00:00
console.log(decimalToTime(17.50, 'HH:mm:ss')); // 17:30:00
console.log(decimalToTime(17.75, 'HH:mm:ss')); // 17:45:00
console.log(decimalToTime(17.00, 'HH:mm')); // 17:00
console.log(decimalToTime(17.50, 'HH:mm')); // 17:30
console.log(decimalToTime(17.752, 'HH:mm')); // 17:45
错误处理
- 输入 -1 会抛出错误:Invalid decimal hours。
- 输入无效格式(如 'HH:mm:xx')会抛出错误:Invalid format。
实际应用场景
这些函数在多种场景中非常实用,以下是一些具体应用:
- 时间跟踪与工资计算
- 场景:员工从 09:00 到 17:30 工作,需计算总工作时长。
- 示例:
const start = timeToDecimal('09:00'); // 9.0 const end = timeToDecimal('17:30'); // 17.5 const hoursWorked = end - start; // 8.5 console.log(`工作时长: ${hoursWorked} 小时`); // 8.5 小时
-
用途:将小时数乘以小时工资率,计算员工薪资。
-
项目管理
-
场景:跟踪任务时长,生成报告。
- 示例:将任务时长 7.75 小时转换为 07:45:00 显示在报告中。
console.log(decimalToTime(7.75, 'HH:mm:ss')); // 07:45:00
-
- 日程系统
- 场景:检查会议时间是否重叠。
- 示例:将会议时间转换为十进制小时,比较时间段。
- 数据可视化
- 场景:将时间数据转换为十进制小时,绘制时间轴或柱状图。
- 示例:使用 Chart.js
绘制工作时长图表,输入十进制小时数据。
- 跨系统集成
- 场景:某些系统(如 Excel 或数据库)要求十进制小时格式。
- 示例:将用户输入的 17:30 转换为 17.5 存储到数据库。
性能与注意事项
- 性能:两个函数计算量小,适合高频调用。对于大批量数据,可缓存解析结果以优化性能。
- 时区:函数假设输入为本地时间。若需处理多时区,可结合 Date 对象。
- 精度:toFixed(2) 提供 2 位小数精度,适合大多数场景。若需更高精度,可调整参数。
- 输入灵活性:函数支持 HH:mm 和 HH:mm:ss,但不支持其他格式(如 5:30 PM)。若需扩展,可添加解析逻辑。
2025 年趋势
截至 2025 年 5 月,JavaScript 仍是前端开发的支柱,时间处理在日程管理、直播系统和数据分析中需求旺盛。这些函数轻量、无需外部依赖,适合直接嵌入项目。若需复杂时间操作,可考虑 day.js 或 date-fns 库,但本实现已足够应对大多数场景。
对比分析
以下表格总结两个函数的特点:
特性 | timeToDecimal | decimalToTime |
---|---|---|
输入 | 时间字符串(HH:mm:ss 或 HH:mm) | 十进制小时(如 17.5),可选格式参数 |
输出 | 十进制小时(如 17.5) | 时间字符串(如 17:30:00 或 17:30) |
验证 | 正则表达式、范围检查 | 数字类型、有效性检查 |
错误处理 | 抛出格式或数值错误 | 抛出无效输入或格式错误 |
主要用途 | 计算时长、数据转换 | 显示时间、生成报告 |
结论
通过 timeToDecimal 和 decimalToTime 函数,可以轻松实现时间字符串与十进制小时的相互转换。这些函数支持 HH:mm:ss 和 HH:mm 格式,包含健壮的验证和错误处理,适用于时间跟踪、项目管理和数据可视化等场景。希望本文能帮助你快速掌握这些技术,并在实际项目中应用它们。
相关文章:
JavaScript 时间转换:从 HH:mm:ss 到十进制小时及反向转换
关键点 JavaScript 可以轻松实现时间格式(HH:mm:ss 或 HH:mm)与十进制小时(如 17.5)的相互转换。两个函数分别处理时间字符串到十进制小时,以及十进制小时到时间字符串的转换,支持灵活的输入和输出格式。这…...
前端面经 手写Promise
核心功能 仿Promise对象需要接收包含两个变量的回调函数 构造函数 <script>class myPromise {constructor(func){const resolve (result)>{console.log(resolve执行了)}const reject (result)>{console.log(reject执行了)}func(resolve,reject)}}// Promise的…...
JavaSE基础语法之方法
方法 一、方法入门 1.方法定义 方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用。 2.方法的格式 修饰符 返回值类型 方法名( 形参列表 ){方法体代码(需要执行的功能代码) }示例: public static int sum ( int a ,…...
在 Neo4j 中实现向量化存储:从文本到高效语义搜索
在当今数据驱动的时代,图数据库因其强大的关系表达能力和高效的查询性能,逐渐成为处理复杂数据结构的首选工具之一。Neo4j 作为领先的图数据库,不仅支持传统的图数据存储和查询,还通过向量化存储功能,为语义搜索和推荐…...
三格电子上新了——IO-Link系列集线器
一、产品概述 1.1产品用途 IO-Link系列集线器是一系列数字量输入输出I/O设备,可以将标准开关量信号接入到此设备。通过此集线器方便的将大量的I/O点位接入到IO-Link主站,进而接入到PLC控制系统。 IO-Link通信接口和8个I/O接口(16个IO点位)均采用M12规…...
记一次从windows连接远程Linux系统来控制设备采集数据方法
文章目录 0 引入1、方法2、优化Process使用 3、引用 0 引入 最近使用的探测器是老外的,老外的探测器需要在centos系统上,在这系统上有相应的指令或者软件控制,但是我们的软件在windwons上,所以目前的困难是:如何在Win…...
鸿蒙 ArkTS 常用的数组和字符串 操作方法
数组的常用方法 方法名功能描述concat(value0, ?value1, /* … ,*/ ?valueN)合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组copyWithin(target, ?start, ?end)浅复制数组的一部分到同一数组中的另一个位置,并返回它,不…...
Web性能优化的未来:边缘计算、AI与新型渲染架构
一、边缘计算与性能优化深度整合 1.1 边缘节点计算卸载策略 • 智能任务分割:将非关键路径计算卸载到边缘节点 // 客户端代码 const edgeTask = new EdgeTask(image-processing); edgeTask.postMessage(imageData, {transfer...
Python字符串常用内置函数详解
文章目录 Python字符串常用内置函数详解一、基础字符串函数1. len() - 获取字符串长度2. ord() - 获取字符的Unicode码点3. chr() - 通过Unicode码点获取字符4. ascii() - 获取字符的ASCII表示 二、类型转换函数1. str() - 将对象转为字符串2. repr() - 获取对象的官方字符串表…...
2025程序设计天梯赛补题报告
2025程序设计天梯赛补题报告 仅包含L1 L2 L1-6 这不是字符串题 题目描述 因为每年天梯赛字符串题的解答率都不尽如人意,因此出题组从几年前开始决定:每年的天梯赛的 15 分一定会有一道字符串题,另外一道则一定不是字符串题。 小特现在有…...
【GNN笔记】Signed Graph Convolutional Network(12)【未完】
视频链接:《图神经网络》 Signed Graph Convolutional Network 之前介绍的GNN模型主要集中在无符号的网络(或仅由正链接组成的图)上,符号 图带来的挑战,主要集中在于 否定链接,与正链接相比,它不…...
CSR、SSR与ISR的奇妙之旅
网页渲染三剑客:CSR、SSR与ISR的奇妙之旅 三种渲染方式的核心本质 CSR(客户端渲染)让浏览器成为"厨师",SSR(服务器端渲染)让服务器担任"厨师",而ISR(增量静态再生)则是一位兼具"提前备餐"和"即时烹饪"能力的"超级厨师"…...
YOLO+UI(C#)开发
接Windows目标检测程序开发(YOLO(python推理)界面开发(C#)) C#作为软件界面,推理、前处理、后处理逻辑全部python,接任何功能定制...
生产级JVM参数优化
Spring Boot 应用性能提升 300% 当你的 Spring Boot 应用响应迟缓,且已采用缓存、数据库索引和异步处理优化后,下一个优化方向在哪里?我的答案是 JVM 本身。 经过性能分析和深入研究,我发现合理配置 JVM 参数可以带来显著的性能…...
什么是SMBus
一、SMBus的定义与背景 基本概念 SMBus(System Management Bus,系统管理总线) 是一种基于IC(Inter-Integrated Circuit)协议的轻量级两线制串行通信总线,由Intel于1995年提出,主要用于低带宽系统…...
[Unity]AstarPathfindingProject动态烘焙场景
需求 项目是MMO大场景,按地块划分了10x10的大格子。角色移动时动态更新周边场景,且角色还有传送功能。 项目中寻路用了AstarPathfindingProject的Grid。因此需要动态烘焙寻路信息。 核心代码 private void bakeAStarPath(){AstarPath astarPath Astar…...
Go语言处理HTTP下载中EOFFailed
在 Go 语言中使用 HTTP 下载文件时遇到 EOF 或 Failed 错误,通常是由于网络连接问题、服务器中断、未正确处理响应体或并发写入冲突等原因导致的。以下是详细的解决方案: 1. 检查错误类型并重试 io.EOF 错误可能表示连接被服务器关闭,而 Fai…...
React学习(一)
React 基础概念 组件:React 应用的基本构建块,可以是类组件或函数组件。JSX:JavaScript 的语法扩展,允许在 JavaScript 中写 HTML 结构。Props:组件的输入参数,用于父组件向子组件传递数据。State…...
QML 属性动画、行为动画与预定义动画
目录 引言相关阅读本文使用的动画属性工程结构示例解析示例1:属性动画应用示例2:行为动画实现示例3:预定义动画 总结工程下载 引言 QML动画系统为界面元素提供了流畅的过渡效果。本文通过三个示例,结合属性动画(PropertyAnimatio…...
UML活动图零基础入门:1 分钟掌握核心逻辑(附实战模板)
想快速搞懂UML活动图怎么用?别担心!作为软件开发和业务流程设计的动态流程图,UML活动图能直观展现系统操作步骤、决策逻辑和并行流程,是团队协作中沟通需求、优化流程的必备工具。无论是产品经理梳理业务流程,还是开发…...
临床决策支持系统的提示工程优化路径深度解析
引言 随着人工智能技术在医疗领域的迅猛发展,临床决策支持系统(CDSS)正经历从传统规则引擎向智能提示工程的范式转变。在这一背景下,如何构建既符合循证医学原则又能适应个体化医疗需求的CDSS成为医学人工智能领域的核心挑战。本报告深入剖析了临床决策支持系统中提示工程的…...
[模型部署] 3. 性能优化
👋 你好!这里有实用干货与深度分享✨✨ 若有帮助,欢迎: 👍 点赞 | ⭐ 收藏 | 💬 评论 | ➕ 关注 ,解锁更多精彩! 📁 收藏专栏即可第一时间获取最新推送🔔…...
使用 LSTM/GRU 预测设备异常的模型
LSTM(Long Short-Term Memory) 是一种特殊的循环神经网络(RNN)架构,旨在解决传统 RNN 在处理长序列数据时的梯度消失和梯度爆炸问题。它通过引入门控机制和单元状态来更好地控制信息的流动,使得网络能够学习到长期依赖关系。以下是其主要特点: 门控机制:包括遗忘门、输…...
八股文--JVM(1)
⭐️⭐️JVM内存模型 程序计数器:可以看作是当前线程所执行的字节码的行号指示器,用于存储当前线程正在执行的 Java 方法的 JVM 指令地址。如果线程执行的是 Native 方法,计数器值为 null。是唯一一个在 Java 虚拟机规范中没有规定任何 OutOf…...
BM25 算法与关键词提取在向量数据库中的实践优化
BM25 算法与关键词提取在向量数据库中的实践优化 在实际构建问答系统或语义检索场景中,向量数据库(如 Weaviate)提供了基于语义匹配的检索能力,然而我们发现 BM25 关键词检索效果不理想,甚至出现了召回率过低、查询必…...
济南超算研究所面试问题
1.自我介绍 2.java抽象类与接口的区别 3.抽象类能否实例化 4.在项目中用的抽象类偏多还是接口偏多 5.抽象类用的场景介绍一下 6.java中数据结构有哪些 7.数据的基本类型 8.引用类型,包装类型 9.是一个场景题,在查询数据库中的数据时,…...
“多维像素”可赋能具身智能非凡感知力——昱感微参加2025松山湖中国IC创新高峰论坛
5月13日,由中国半导体行业协会集成电路设计分会、芯原微电子(上海)股份有限公司联合主办的第十五届松山湖中国IC创新高峰论坛在东莞松山湖举行。本届松山湖论坛以“面向‘具身智慧机器人’的创新IC新品推介”为主题,吸引了许多知名…...
解决CLion控制台不能及时显示输出的问题
CLion 2025版本可以免费用于非商业用途了,下载来试用了一下,与JB的其它 IDE一样的资源占用比较大,流畅度不及VSCode。 在Windows下创建了一个简单的控制台应用程序,使用printf和std::cout输出字符串,发现CLion的控制台…...
多尺度对比度调整
一、背景介绍 受到了前面锐化算法实现的启发,对高频层做增强是锐化,那么对中低频一起做增强,就应该能有局域对比度增强效果。 直接暴力实现了个基本版本,确实有对比度增强效果。然后搜了下关键字,还真找到了已经有人这…...
虹桥前湾印象城MEGA品牌大会灵感迸发,共绘湾系生活新章
前言:当千年水韵流淌至上海前湾,当苏州河的生态肌理转化为商业空间的呼吸脉络……上海虹桥前湾印象城MEGA“漫漫而来”。 5月15-16日,以“灵感新章 Wave of Megagination”为主题的虹桥前湾印象城MEGA品牌大会成功举办,正式掀开长…...
新京东,正在成为一种生活方式
出品|何玺排版|叶媛 一个新京东,正在从“心”诞生。 2025年2月11日之前,如果问京东是做什么的,相信大多数人会回答京东是电商平台,卖家电数码日用百货的。现在,如果问京东是做什么的,相信大家的回答不在是…...
读论文alexnet:ImageNet Classification with Deep Convolutional Neural Networks
https://zhuanlan.zhihu.com/p/13694329885 1, 公式 卷积层输出尺寸: o ⌊(i 2p - k) / s⌋ 1 式中,i:输入尺寸;o:输出尺寸;p:padding;k: kernel_size;s: stride。⌊…⌋表示向下取整。 2, 推导过程 …...
操作系统|| 虚拟内存页置换算法
题目 写一个程序来实现 FIFO 和 LRU 页置换算法。首先,产生一个随机的页面引用序列,页面数从 0~9。将这个序列应用到每个算法并记录发生的页错误的次数。实现这个算法时要将页帧的数量设为可变。假设使用请求调页。可以参考所示的抽象类。 抽象类&…...
AGI大模型(19):下载模型到本地之ModelScope(魔搭社区)
1 安装模块 魔塔社区提供了下载的模块,如下: pip install modelscope -i https://pypi.tuna.tsinghua.edu.cn/simple 2 模型下载 from modelscope import snapshot_download model_dirsnapshot_download(LLM-Research/Meta-Llama-3-8B,cache_dirrD:\…...
常见面试题
1.stringbuffer和stringbuilder的区别,stringbuffer是通过什么实现线程安全的? StringBuffer 和 StringBuilder 都是用于处理可变字符串的类,但它们的主要区别在于 线程安全性。 StringBuffer 的线程安全是通过方法加锁(synchronized&…...
【视觉任务】深度估计(Depth Estimation)介绍(2025年更新)
文章目录 1. 任务定义与意义2. 按输入类型的分类2.1 单目深度估计(Monocular Depth Estimation)2.2 双目与多视图深度估计(Stereo / Multi-view)2.3 深度相机输入(RGB-D)2.4 主动与被动方法 3. 核心方法概述…...
Python 在Excel单元格中应用多种字体样式
文在数据处理和报表生成场景中,Excel 文件的格式设置至关重要。合理的字体格式不仅能提升表格的可读性,还能突出关键数据。本文将详细介绍如何使用免费库Free Spire.XLS for Python,在 Excel 单元格中灵活应用多种字体格式,包括字…...
C++:字符串操作函数
strcpy() 功能:把一个字符串复制到另一个字符串。 #include <iostream> #include <cstring> using namespace std;int main() {char src[] "Hello";char dest[10];strcpy(dest, src);cout << "Copied string: " << …...
Spark,SparkSQL操作Mysql, 创建数据库和表
SparkSQL操作Mysql 1.查看系统内是否有mysql [roothadoop100 ~]# rpm -aq | grep mariadb mariadb-libs-5.5.68-1.el7.x86_64 2.想我上面输出了有结果的即证明有,使用下列命令删除即可 [roothadoop100 ~]# rpm -e --nodeps mariadb-libs 3.进入我们常用存放压缩包…...
降低学习成本,1 天掌握 Java 开发核心技能
在当今数字化浪潮中,Java 编程语言凭借其卓越的跨平台性与稳定性,在企业级系统搭建、移动端应用开发以及大数据处理等领域占据着举足轻重的地位。但不可忽视的是,Java 开发链条冗长,从需求剖析到代码落地的全流程充满挑战…...
类模板的简单实例
author: hjjdebug date: 2025年 05月 16日 星期五 15:06:00 CST description: 类模板的简单实例 文章目录 1.实例代码:2. 模板类写法2.1 模板类的构造函数.2.2 模板类中的语句 3. 模板类的实例化过程.3.1 实例化的进一步试验. 4. 怎样调试constexpr 修饰的函数? 类模…...
描述性统计图表
一、核心图表类型与用途 1、直方图(Histogram) (1)定义:用连续矩形表示数据分布,横轴为数据区间,纵轴为频数或频率。 (2)用途:展示数据分布形态(对称、偏态)、识别离群值。 (3)适用场景:分析连续型变量的分布特征,如收入分布、考试成绩分布。 2、箱线图(Box P…...
【Golang笔记01】Goland基础语法规则
Golang笔记:快速学习Golang基础语法规则 一、基础语法 1.1、环境安装 第一步需要安装go的运行环境,从官网下载安装包:https://golang.google.cn/dl/。 第二步需要安装go的开发工具,可以使用vscode、goland。这里推荐使用golan…...
STM32 ADC+DMA+TIM触发采样实战:避坑指南与源码解析
知识点1【TRGO的介绍】 1、TRGO的概述 TRGO:Trigger Output(触发输出),是定时器的一种功能。 它可以作为外设的启动信号,比如ADC转换,DAC输出,DMA请求等。 对于ADC来说,可以通过…...
Gmsh 读取自定义轮廓并划分网格:深入解析与实践指南
一、Gmsh 简介 (一)Gmsh 是什么 Gmsh 是一款功能强大的开源有限元网格生成器,广泛应用于工程仿真、数值模拟以及计算机图形学等领域。它为用户提供了从几何建模到网格划分的一整套解决方案,能够有效处理复杂几何形状,生成高质量的二维和三维网格,满足多种数值方法的需求…...
Elasticsearch/OpenSearch 中doc_values的作用
目录 1. 核心作用 2. 适用场景 3. 与 index 参数的对比 4. 典型配置示例 场景 1:仅用于聚合,禁止搜索 场景 2:优化大字段存储 5. 性能调优建议 6. 底层原理 doc_values 是 Elasticsearch/OpenSearch 中用于优化查询和聚合的列式存储结…...
如何在 Windows 10 或 11 上使用命令提示符安装 PHP
我们可以在 Windows 上从其官方网站下载并安装 PHP 的可执行文件,但使用命令提示符或 PowerShell 更方便。 PHP 并不是一种新的或不为人知的脚本语言,它已经存在并被全球数千名网络开发人员使用。它以开源许可并分发,广泛用于 LAMP 堆栈中。然而,与 Linux 相比,它在 Wind…...
SZU 编译原理
总结自 深圳大学《编译原理》课程所学相关知识。 文章目录 文法语法分析自顶向下的语法分析递归下降分析LL(1) 预测分析法FIRST 集合FOLLOW 集合 文法 乔姆斯基形式语言理论: 表达能力:0型文法 > 1型文法 > 2型文法 > 3型文法。 0 型文法&am…...
灌区量测水自动化监测解决方案
一、方案背景 随着社会发展和人口增长,水资源需求不断增大。我国水资源总量虽然丰富,但时空分布不均,加之农业用水占比大且效率偏低,使得水资源短缺问题日益凸显。农业用水一直是我国的耗水大户,占全部耗水总量的60%以…...
CVE-2017-8046 漏洞深度分析
漏洞概述 CVE-2017-8046 是 Spring Data REST 框架中的一个高危远程代码执行漏洞,影响版本包括 Spring Data REST < 2.5.12、2.6.7、3.0 RC3 及关联的 Spring Boot 和 Spring Data 旧版本。攻击者通过构造包含恶意 SpEL(Spring Expression Language&…...