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

Java入门( 日期类与 BigDecimal 工具类 )

目录一、日期时间处理类从 Date 到 LocalDateTime 的升级1.1 老牌 Date 类了解即可慎用为主实战示例Date 类基础使用1.2 LocalDateTime 类Java8 日期处理首选1.2.1 创建 LocalDateTime 对象1.2.2 获取日期时间字段1.2.3 日期时间运算增减时间1.2.4 日期时间调整获取特殊时间二、BigDecimal 类高精度数值运算的救星2.1 核心注意点创建 BigDecimal 对象的正确方式2.2 基础运算加、减、乘2.3 除法运算解决无限循环小数问题2.3.1 舍入模式8 种核心规则2.3.2 除法实战指定精度 舍入模式三、核心总结在 Java 日常开发中处理日期时间和高精度数值运算是高频需求早期的Date类存在方法过时、设计不友好等问题而浮点型double/float的精度丢失问题更是让财务、金融等场景的运算避之不及。本文将详细讲解 Java 中日期时间处理Date类、LocalDateTime类和高精度数值运算BigDecimal类的核心用法结合实战示例拆解关键知识点帮你彻底掌握这两个开发必备工具类。一、日期时间处理类从 Date 到 LocalDateTime 的升级日期时间处理是开发中不可或缺的部分Java 从最初的Date类到 Java 8 引入的java.time包下的LocalDateTime类实现了从 “简陋” 到 “优雅” 的跨越。LocalDateTime解决了Date类线程不安全、方法过时、时区处理繁琐等问题成为目前主流的日期时间处理方案。1.1 老牌 Date 类了解即可慎用为主Date类位于java.util包用于表示精确到毫秒的日期时间但其大部分构造方法和成员方法已被标记为过时仅作兼容旧代码使用核心特点和注意事项如下无参构造方法new Date()获取当前系统时间带年 / 月 / 日参数的构造方法存在偏移问题年份从 1900 开始计算月份 0 代表 1 月、1 代表 2 月以此类推多数获取时间字段的方法如getHours()、getMonth()已被Calendar类替代仅保留after()、before()、compareTo()等少数比较方法。实战示例Date 类基础使用import java.util.Date; public class DateDemo { public static void main(String[] args) { // 1. 获取当前系统时间精确到毫秒 Date nowDate new Date(); System.out.println(当前系统时间 nowDate); // 2. 构造指定时间注意偏移1242024-190012月1010日 Date specifyDate new Date(124, 1, 10, 15, 30, 20); System.out.println(指定时间2024-02-10 15:30:20 specifyDate); // 3. 日期比较after/before/compareTo boolean isAfter nowDate.after(specifyDate); boolean isBefore nowDate.before(specifyDate); int compare nowDate.compareTo(specifyDate); System.out.println(当前时间是否在指定时间之后 isAfter); System.out.println(当前时间是否在指定时间之前 isBefore); System.out.println(日期比较结果0相等1大于-1小于 compare); } }输出结果随系统时间变化当前系统时间Sat Mar 21 16:00:00 CST 2026 指定时间2024-02-10 15:30:20Sat Feb 10 15:30:20 CST 2024 当前时间是否在指定时间之后true 当前时间是否在指定时间之前false 日期比较结果0相等1大于-1小于11.2 LocalDateTime 类Java8 日期处理首选LocalDateTime位于java.time包是不可变、线程安全的日期时间类整合了LocalDate日期和LocalTime时间支持日期时间的创建、解析、字段获取、运算、调整等所有常用操作是目前 Java 开发中日期时间处理的核心类。1.2.1 创建 LocalDateTime 对象LocalDateTime的构造方法为私有无法直接new需通过静态方法创建核心方式有 3 种获取当前时间、指定日期时间、从字符串解析其中字符串解析需配合DateTimeFormatter指定格式注意大小写yyyy 年MM 月dd 日HH24 小时制hh12 小时制。实战示例创建 LocalDateTime 对象import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class LocalDateTimeCreate { public static void main(String[] args) { // 方式1获取当前系统日期时间最常用 LocalDateTime now LocalDateTime.now(); System.out.println(当前日期时间 now); // 方式2指定年/月/日/时/分/秒创建 LocalDateTime specifyTime LocalDateTime.of(2026, 3, 21, 16, 0, 0); System.out.println(指定日期时间 specifyTime); // 方式3从自定义格式的字符串解析需指定DateTimeFormatter String timeStr 2026-03-21 16:05:30; DateTimeFormatter formatter DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss); LocalDateTime parseTime LocalDateTime.parse(timeStr, formatter); System.out.println(字符串解析的日期时间 parseTime); } }输出结果当前日期时间2026-03-21T16:00:00.123456789 指定日期时间2026-03-21T16:00 字符串解析的日期时间2026-03-21T16:05:301.2.2 获取日期时间字段通过getXxx()系列方法可直接获取年、月、日、时、分、秒、星期、年内天数等字段无偏移问题比Date类更直观。实战示例获取日期时间字段import java.time.LocalDateTime; public class LocalDateTimeGet { public static void main(String[] args) { LocalDateTime now LocalDateTime.now(); // 基础字段年、月、日、时、分、秒 int year now.getYear(); int month now.getMonthValue(); // 获取数字月份1-12 int day now.getDayOfMonth(); int hour now.getHour(); int minute now.getMinute(); int second now.getSecond(); // 扩展字段星期、本月天数、年内天数 int week now.getDayOfWeek().getValue(); // 星期1周一7周日 int dayOfYear now.getDayOfYear(); // 打印结果 System.out.println(年 year 月 month 日 day); System.out.println(时 hour 分 minute 秒 second); System.out.println(本周星期 week 当年第 dayOfYear 天); } }输出结果年2026 月3 日21 时16 分10 秒25 本周星期6 当年第80天1.2.3 日期时间运算增减时间LocalDateTime提供plusXxx()增加时间和minusXxx()减少时间方法支持天、周、月、年、时、分、秒等维度的运算方法返回新对象原对象不可变使用时需接收返回值。实战示例日期时间增减运算import java.time.LocalDateTime; public class LocalDateTimeCalculate { public static void main(String[] args) { LocalDateTime now LocalDateTime.now(); System.out.println(原始时间 now); // 增加时间1天、2周、3个月、1年、2小时 LocalDateTime plusTime now.plusDays(1).plusWeeks(2).plusMonths(3).plusYears(1).plusHours(2); System.out.println(增加后时间 plusTime); // 减少时间3天、1周、2个月、10小时 LocalDateTime minusTime now.minusDays(3).minusWeeks(1).minusMonths(2).minusHours(10); System.out.println(减少后时间 minusTime); } }输出结果原始时间2026-03-21T16:15:30.123 增加后时间2027-06-05T18:15:30.123 减少后时间2026-01-15T06:15:30.1231.2.4 日期时间调整获取特殊时间通过TemporalAdjusters工具类配合with()方法可快速获取本周周一 / 周日、本月第一天 / 最后一天、本年第一天 / 最后一天等特殊时间无需手动计算简化开发。实战示例获取特殊日期时间import java.time.LocalDateTime; import java.time.DayOfWeek; import java.time.temporal.TemporalAdjusters; public class LocalDateTimeAdjust { public static void main(String[] args) { LocalDateTime now LocalDateTime.now(); System.out.println(当前时间 now); // 1. 本周周一和周日previousOrSame/nextOrSame当前或最近的指定星期 LocalDateTime monday now.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)); LocalDateTime sunday now.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); // 2. 本月第一天和最后一天 LocalDateTime firstDayOfMonth now.with(TemporalAdjusters.firstDayOfMonth()); LocalDateTime lastDayOfMonth now.with(TemporalAdjusters.lastDayOfMonth()); // 3. 本年第一天和最后一天 LocalDateTime firstDayOfYear now.with(TemporalAdjusters.firstDayOfYear()); LocalDateTime lastDayOfYear now.with(TemporalAdjusters.lastDayOfYear()); // 打印结果 System.out.println(本周周一 monday); System.out.println(本周周日 sunday); System.out.println(本月第一天 firstDayOfMonth); System.out.println(本月最后一天 lastDayOfMonth); System.out.println(本年第一天 firstDayOfYear); System.out.println(本年最后一天 lastDayOfYear); } }输出结果当前时间2026-03-21T16:20:00.123 本周周一2026-03-17T16:20:00.123 本周周日2026-03-23T16:20:00.123 本月第一天2026-03-01T16:20:00.123 本月最后一天2026-03-31T16:20:00.123 本年第一天2026-01-01T16:20:00.123 本年最后一天2026-12-31T16:20:00.123二、BigDecimal 类高精度数值运算的救星在处理金额、税率、汇率等高精度数值运算时double和float会因二进制存储的精度丢失问题导致计算结果错误例如0.10.20.30000000000000004。BigDecimal类位于java.math包是不可变、线程安全的高精度数值类支持任意精度的小数运算完美解决浮点型精度问题。2.1 核心注意点创建 BigDecimal 对象的正确方式BigDecimal提供了多种构造方法其中 **double构造方法存在精度丢失风险 **字符串构造方法是推荐方式可精确表示数值。如果必须使用double创建可通过BigDecimal.valueOf(double val)静态方法内部将double转为字符串避免精度丢失。实战示例不同构造方法的对比import java.math.BigDecimal; public class BigDecimalCreate { public static void main(String[] args) { // 错误方式double构造方法精度丢失 BigDecimal bigDecimalDouble new BigDecimal(0.1); // 正确方式1字符串构造方法精确表示 BigDecimal bigDecimalStr new BigDecimal(0.1); // 正确方式2valueOf静态方法处理double类型 BigDecimal bigDecimalValueOf BigDecimal.valueOf(0.1); // 打印结果对比 System.out.println(double构造方法 bigDecimalDouble); System.out.println(字符串构造方法 bigDecimalStr); System.out.println(valueOf静态方法 bigDecimalValueOf); } }输出结果double构造方法0.1000000000000000055511151231257827021181583404541015625 字符串构造方法0.1 valueOf静态方法0.12.2 基础运算加、减、乘BigDecimal的加减乘运算通过add()、subtract()、multiply()方法实现所有方法均返回新的 BigDecimal 对象原对象不可变运算时需保证操作数均为BigDecimal类型且通过字符串构造创建。实战示例BigDecimal 加减乘运算import java.math.BigDecimal; public class BigDecimalAddSubMul { public static void main(String[] args) { // 初始化两个高精度数值金额100.50 元和 25.30 元 BigDecimal num1 new BigDecimal(100.50); BigDecimal num2 new BigDecimal(25.30); // 加法100.50 25.30 BigDecimal addResult num1.add(num2); // 减法100.50 - 25.30 BigDecimal subResult num1.subtract(num2); // 乘法100.50 * 25.30 BigDecimal mulResult num1.multiply(num2); // 打印结果 System.out.println(加法结果 addResult 元); System.out.println(减法结果 subResult 元); System.out.println(乘法结果 mulResult 元); } }输出结果加法结果125.80 元 减法结果75.20 元 乘法结果2542.6500 元2.3 除法运算解决无限循环小数问题BigDecimal的除法运算通过divide()方法实现如果运算结果为无限循环小数直接调用无参 divide () 会抛出 ArithmeticException 异常因此实际开发中必须指定精度和舍入模式或通过MathContext指定运算规则。2.3.1 舍入模式8 种核心规则Java 提供RoundingMode枚举类定义了 8 种舍入模式开发中最常用的是 **HALF_UP四舍五入**其他模式可根据业务场景选择如财务结算的HALF_EVEN银行家舍入法核心模式说明如下舍入模式核心规则示例UP远离零舍入1.234→1.24-1.234→-1.24DOWN接近零舍入1.236→1.23-1.236→-1.23HALF_UP四舍五入1.235→1.24-1.235→-1.24HALF_EVEN银行家舍入奇数进偶数舍1.235→1.241.245→1.24UNNECESSARY断言精确结果否则抛异常10/25正常1/3抛异常2.3.2 除法实战指定精度 舍入模式推荐方式divide(BigDecimal divisor, int scale, RoundingMode roundingMode)其中scale为保留的小数位数roundingMode为舍入模式。实战示例BigDecimal 除法运算import java.math.BigDecimal; import java.math.RoundingMode; public class BigDecimalDivide { public static void main(String[] args) { // 初始化数值10.0 除以 3.0无限循环小数 BigDecimal num1 new BigDecimal(10.0); BigDecimal num2 new BigDecimal(3.0); // 方式1指定精度保留2位小数 四舍五入模式最常用 BigDecimal divide1 num1.divide(num2, 2, RoundingMode.HALF_UP); // 方式2指定精度保留3位小数 银行家舍入法 BigDecimal divide2 num1.divide(num2, 3, RoundingMode.HALF_EVEN); // 方式3通过MathContext指定精度和模式总精度4位四舍五入 BigDecimal divide3 num1.divide(num2, new java.math.MathContext(4, RoundingMode.HALF_UP)); // 打印结果 System.out.println(10.0/3.0保留2位四舍五入 divide1); System.out.println(10.0/3.0保留3位银行家舍入 divide2); System.out.println(10.0/3.0总精度4位四舍五入 divide3); } }输出结果10.0/3.0保留2位四舍五入3.33 10.0/3.0保留3位银行家舍入3.333 10.0/3.0总精度4位四舍五入3.333三、核心总结日期时间处理优先使用 Java8 的LocalDateTime摒弃过时的Date类LocalDateTime支持创建、解析、字段获取、运算、调整等所有操作线程安全且无偏移问题配合DateTimeFormatter处理字符串解析TemporalAdjusters处理特殊时间。高精度数值运算使用BigDecimal替代double/float避免精度丢失必须通过字符串构造方法或valueOf()创建对象运算后接收新返回对象除法运算需指定精度和舍入模式常用HALF_UP四舍五入。共性特点LocalDateTime和BigDecimal均为不可变类所有修改 / 运算方法均返回新对象原对象保持不变天生线程安全适合高并发场景。这两个工具类是 Java 开发的基础且核心的工具掌握其正确用法能有效避免开发中的常见坑如日期偏移、精度丢失提升代码的健壮性和可维护性。

相关文章:

Java入门( 日期类与 BigDecimal 工具类 )

目录 一、日期时间处理类:从 Date 到 LocalDateTime 的升级 1.1 老牌 Date 类:了解即可,慎用为主 实战示例:Date 类基础使用 1.2 LocalDateTime 类:Java8 日期处理首选 1.2.1 创建 LocalDateTime 对象 1.2.2 获…...

会议记录神器!FireRedASR-AED-L本地语音识别,保护隐私更安全

会议记录神器!FireRedASR-AED-L本地语音识别,保护隐私更安全 1. 为什么选择本地语音识别 在数字化办公时代,会议记录是每个职场人绕不开的工作内容。传统的人工记录方式效率低下,而云端语音识别服务又存在隐私泄露风险。FireRed…...

5.3LLM建模的基本流程

大语言模型(Large Language Model, LLM)本质上是规模化的Transformer模型,也是decoder-only架构。从Transformer到LLM的演进,不仅仅是参数规模的增长,更重要的是训练范式的系统化。一.LLM建模的三阶段范式当前主流的LLM建模遵循“…...

Qwen3.5-9B API服务封装:从Gradio到FastAPI的生产级接口转换指南

Qwen3.5-9B API服务封装:从Gradio到FastAPI的生产级接口转换指南 1. 项目背景与价值 Qwen3.5-9B作为新一代多模态大模型,在多个技术维度实现了显著突破。本文将详细介绍如何将这个强大的模型从Gradio演示界面转换为生产级FastAPI服务,让开发…...

SVC对500kv系统的电压调节功能及无功功率调节特性仿真模拟

静态无功补偿器(SVC)仿真模型 采用静态无功补偿器(SVC)对一个500kv, 3000mva的系统进行电压调节。 (1)当系统电压较低时,SVC产生无功功率(SVC电容性)。 (2)当系统电压较高时,吸收无功功率(SVC感应)。 SVC的额定电容值为200 Mvar,电感值为100 …...

Nanbeige 4.1-3B完整指南:适配移动端触控的像素界面响应式改造

Nanbeige 4.1-3B完整指南:适配移动端触控的像素界面响应式改造 1. 项目概述 Nanbeige 4.1-3B像素冒险聊天终端是一款专为移动设备优化的AI对话界面,将传统聊天机器人交互转化为沉浸式像素游戏体验。这套前端解决方案完美适配了Nanbeige 4.1-3B大语言模…...

ESP32多通道数字I/O抽象库Mlt_DIO设计与应用

1. Mlt_DIO 库概述Mlt_DIO(Multi-Channel Digital Input/Output)是一个专为 ESP 系列微控制器(ESP32、ESP32-S2/S3/C3/C6)设计的轻量级、线程安全、可配置的数字 I/O 抽象库。其核心目标并非替代 ESP-IDF 自带的gpio_set_level()或…...

ADB命令实战:手机蓝牙与热点控制的自动化技巧

1. ADB命令入门:手机控制的瑞士军刀 第一次接触ADB命令时,我正被几十台测试手机折磨得焦头烂额。每次手动开关蓝牙和热点要花费半小时,直到发现这个藏在Android SDK里的神器。ADB(Android Debug Bridge)就像连接电脑和…...

Chainguard:编程安全领域的新变革

2026 年 Chainguard Assemble 活动上,编程安全公司 Chainguard 推出以安全为先的程序员服务。其 Chainguard Factory 2.0 由人工智能驱动,能消除大量漏洞,还带来多项新服务。AI 驱动的 Factory 2.0Chainguard 将构建方法转变为 Factory 2.0&a…...

UVCAndroid开发实战:从零构建多摄像头安卓监控应用

1. 为什么选择UVCAndroid开发多摄像头应用 第一次接触UVC摄像头开发时,我踩过不少坑。市面上常见的安卓摄像头开发方案要么兼容性差,要么功能受限,直到发现了UVCAndroid这个宝藏库。它完美解决了USB摄像头在安卓设备上的通用接入问题&#x…...

DevOps与ITIL水火不容?25位专家给出惊人答案

"你们用DevOps还是ITIL?"这个问题在IT圈里问出来,往往能引发一场"宗教战争"。一方是标榜"敏捷、自动化、持续交付"的DevOps新贵,一方是拥有40年历史、ITIL认证遍布全球的传统霸主。它们真的只能二选一吗&#…...

深入Geant4事件循环:从Run、Event到Step的完整数据流分析与调试技巧

深入Geant4事件循环:从Run、Event到Step的完整数据流分析与调试技巧 Geant4作为高能物理模拟的黄金标准工具包,其核心价值在于对粒子输运过程的精确建模。但当你从基础示例转向复杂场景时,是否遇到过这些困扰:模拟结果出现无法解释…...

MCP 2.0安全规范升级倒计时:2025年Q1起强制启用PQ-Signature混合模式——现有架构迁移路线图与性能衰减基准测试报告

第一章:MCP 2.0安全规范升级背景与强制实施时间线随着云原生架构深度普及与跨域服务调用日益频繁,原有MCP(Microservice Communication Protocol)1.x系列规范在传输加密粒度、身份上下文传递、敏感字段动态脱敏等方面已难以满足等…...

Rect嵌入式框架:ESP32的MQTT设备管理与OTA实战

1. Rect嵌入式物联网平台:面向ESP32的MQTT设备控制框架深度解析1.1 项目定位与工程价值Rect并非一个通用型嵌入式库,而是一个面向生产级IoT设备管理闭环的垂直化固件开发框架。其核心价值在于将ESP32从“单点传感器节点”升级为“可被云平台统一纳管的智…...

AnythingtoRealCharacters2511入门:上传图片点运行,轻松生成真人效果

AnythingtoRealCharacters2511入门:上传图片点运行,轻松生成真人效果 你是否曾看着喜欢的动漫角色,想象过他们如果生活在现实世界中会是什么模样?是像邻家女孩一样亲切,还是像电影明星一样光彩照人?过去&a…...

Cursor+QGIS-MCP:AI代码编辑器下的插件复现实战

1. 从零开始:Cursor编辑器与QGIS-MCP插件复现指南 最近在折腾QGIS的MCP插件时,发现很多朋友卡在了环境配置这一步。传统的Claude方案在国内确实不太友好,我摸索出一套用Cursor编辑器完整复现的流程,实测下来比原方案更稳定。下面就…...

折腾Rsoft能带图的三两事

Rsoft能带绘制最近在实验室被光子晶体能带仿真搞得头大,发现这玩意儿的能带图绘制简直是个玄学现场。官方教程看着挺美好,实操起来分分钟教你做人。特别是那个BandSOLVE模块,每次手动调参数都能让我怀疑自己是不是色盲——毕竟红橙黄绿青蓝紫…...

NAS新手教程:D-Link DNS-320与Time Machine的完美搭配(避坑指南)

NAS新手教程:D-Link DNS-320与Time Machine的完美搭配(避坑指南) 作为一名长期使用MacOS的创意工作者,数据备份一直是我最关心的问题之一。外置硬盘虽然速度快,但频繁插拔不仅麻烦,还存在遗忘备份的风险。直…...

Flutter气泡框进阶:动态调整与圆角优化

1. 气泡框基础与动态调整需求 在Flutter开发中,气泡框是常见的UI元素,尤其在聊天应用、工具提示等场景中广泛应用。传统实现方式往往采用固定尺寸的图片作为背景,但这种方式存在明显局限:当内容长度变化时,要么需要准备…...

N5110驱动库实现像素级坐标文本渲染

1. 项目概述N5110 是一款针对 Philips PCD8544 LCD 控制器的轻量级嵌入式驱动库,专为 Nokia 5110/3310 单色图形液晶模块设计。该库在原始 N5110 驱动基础上进行了关键性重构与增强,核心突破在于彻底摆脱了传统“行-列”字符网格(bank-based&…...

Qwen3-32B-Chat RTX4090D部署教程:模型加载时OOM错误定位与修复

Qwen3-32B-Chat RTX4090D部署教程:模型加载时OOM错误定位与修复 1. 环境准备与快速部署 在开始部署Qwen3-32B-Chat模型前,请确保您的硬件配置满足以下要求: 显卡:RTX 4090D 24GB显存(必须)内存&#xff…...

Flutter和Webview抓包实战:用Frida-Analykit解密TLS流量的5个关键步骤

Flutter与Webview应用TLS流量解密实战指南 1. 移动应用安全分析的必要性 在当今移动应用生态中,Flutter和Webview技术栈因其跨平台特性被广泛应用。作为安全研究人员或开发者,理解应用网络通信机制至关重要。TLS加密虽然保障了数据传输安全,但…...

新《网络安全法》下,2026年最确定的黄金赛道!零基础入行,年薪轻松翻番

新《网络安全法》下,2026年最确定的黄金赛道!零基础入行,年薪轻松翻番 2026年已经到来,数字化浪潮席卷各行各业,网络安全行业也随之迎来前所未有的发展机遇。作为数字经济的“守门人”,网络安全工程师正成为…...

Linux系统下快速识别CPU架构的3种实用方法

1. 为什么需要识别CPU架构? 在Linux系统管理中,CPU架构就像电脑的"身份证号码"。你可能遇到过这种情况:下载软件包时,网页上会列出amd64、arm64、i386等不同版本。选错了版本轻则安装失败,重则导致系统崩溃。…...

5个实用案例展示梦幻动漫魔法工坊的强大生成能力

5个实用案例展示梦幻动漫魔法工坊的强大生成能力 1. 工具介绍与核心能力 梦幻动漫魔法工坊是一款基于Diffusion模型和LoRA微调技术的动漫图像生成工具。它能将文字描述转化为精美的二次元风格图像,特别适合创作可爱梦幻的动漫角色和场景。 这个工具的核心优势在于…...

2026,聊聊计算机专业所有退路

2026,聊聊计算机专业所有退路 计算机专业,2026年到底还有多少条退路? 说实话,现在一提计算机,一半人说凉透了,一半人还在吹年薪百万,搞得不管是在读的、刚毕业的,还是干了几年的程序…...

SlickEdit 2022破解版在Ubuntu上的替代方案:合法免费编辑器推荐

Ubuntu开发者必备:5款媲美SlickEdit的合法代码编辑器深度评测 在Linux开发环境中,代码编辑器如同工匠的凿刀,直接影响着开发效率和体验。SlickEdit以其强大的跨平台支持和专业级功能著称,但商业授权费用让不少独立开发者和初创团队…...

OpenBMC系统服务开发避坑指南:如何正确配置systemd单元文件与日志输出

OpenBMC系统服务开发避坑指南:如何正确配置systemd单元文件与日志输出 在OpenBMC开发中,systemd服务配置是每个开发者必须掌握的技能。不同于常规Linux发行版,OpenBMC对systemd的使用有其特殊性,尤其是在日志输出、权限控制和自启…...

AI净界RMBG-1.4实战案例:一张图搞定电商、设计、教学三种需求

AI净界RMBG-1.4实战案例:一张图搞定电商、设计、教学三种需求 1. 从PS到AI:抠图技术的革命性突破 传统抠图工具如Photoshop需要复杂的操作流程:钢笔工具绘制路径、魔棒工具调整选区、边缘羽化处理...整个过程不仅耗时耗力,而且对…...

NEC红外接收模块软硬件设计与解码实现

1. 红外接收模块技术实现详解红外遥控技术作为最成熟、成本最低的短距离无线通信方案之一,在消费电子领域已应用数十年。其核心优势在于器件成本极低、电路设计简单、协议标准化程度高,且无需射频认证即可部署。本模块基于通用红外接收头(如V…...