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

Math工具类全面指南

Math工具类全面指南

  • 前言
  • 一、Math 类的基础特性
    • 1.1 类的声明与常量
    • 1.2 数据类型支持
  • 二、基础算术运算
    • 2.1 绝对值运算
    • 2.2 取整运算
      • 2.2.1 `floor()`:向下取整
      • 2.2.2 `ceil()`:向上取整
      • 2.2.3 `round()`:四舍五入取整
    • 2.3 最大值与最小值
  • 三、三角函数与几何运算
    • 3.1 角度与弧度转换
    • 3.2 三角函数
      • 3.2.1 正弦、余弦、正切
      • 3.2.2 反三角函数
    • 3.3 双曲函数
  • 四、指数与对数运算
    • 4.1 指数运算
      • 4.1.1 `pow(double a, double b)`
      • 4.1.2 `exp(double a)`
    • 4.2 对数运算
      • 4.2.1 `log(double a)`
      • 4.2.2 `log10(double a)`
      • 4.2.3 `log2(double a)`
  • 五、随机数生成
    • 5.1 `random()`方法
    • 5.2 生成指定范围的随机数
  • 六、高级数学运算
    • 6.1 取模运算
    • 6.2 符号函数
    • 6.3 平方根与立方根
  • 七、性能优化与注意事项
    • 7.1 浮点数精度问题
    • 7.2 避免溢出
    • 7.3 伪随机数的局限性
  • 八、实战案例
    • 8.1 计算圆的面积与周长
    • 8.2 实现线性同余随机数生成器(LCRG)
  • 总结

前言

在 Java 开发中,无论是简单的数值计算、复杂的几何运算,还是加密算法、机器学习中的数学建模,都离不开高效的数学工具支持。Java 提供的Math工具类,作为java.lang包中的核心类之一,封装了大量用于数学计算的静态方法和常量,涵盖了基础算术运算、三角函数、指数对数运算、随机数生成等多个领域。本文我将带你深入Math类的常用方法与高级应用,结合丰富示例,帮助你全面掌握这一强大的数学工具。

一、Math 类的基础特性

1.1 类的声明与常量

Math类是一个final 类,无法被继承,且其构造方法被私有化(private Math()),因此无法实例化,所有方法和常量均为静态的,可直接通过类名调用。Math类包含以下常用静态常量:

PI:表示圆周率 π,近似值为 3.141592653589793。

E:表示自然对数的底数 e,近似值为 2.718281828459045。

System.out.println("π的值:" + Math.PI);  // 输出:3.141592653589793
System.out.println("e的值:" + Math.E);  // 输出:2.718281828459045

1.2 数据类型支持

Math类的方法主要支持doubleint两种数据类型,部分方法也适用于floatlong等类型。由于浮点数在计算机中的存储精度问题,涉及高精度计算时需结合BigDecimal类(本文不展开讨论)。

二、基础算术运算

2.1 绝对值运算

abs()方法用于获取数值的绝对值,支持intlongfloatdouble四种类型。

System.out.println(Math.abs(-5));        // 输出:5(int类型)
System.out.println(Math.abs(-3.14));     // 输出:3.14(double类型)
System.out.println(Math.abs(-10L));      // 输出:10(long类型)

2.2 取整运算

2.2.1 floor():向下取整

返回小于或等于参数的最大整数,结果为double类型。

System.out.println(Math.floor(3.9));  // 输出:3.0
System.out.println(Math.floor(-3.1)); // 输出:-4.0(注意:向下取整对负数的影响)

2.2.2 ceil():向上取整

返回大于或等于参数的最小整数,结果为double类型。

System.out.println(Math.ceil(3.1));   // 输出:4.0
System.out.println(Math.ceil(-3.9));  // 输出:-3.0

2.2.3 round():四舍五入取整

根据小数部分判断是否进位,返回int(参数为float)或long(参数为double)类型。

System.out.println(Math.round(3.4));  // 输出:3(3.4的小数部分<0.5,舍去)
System.out.println(Math.round(3.6));  // 输出:4(3.6的小数部分≥0.5,进位)
System.out.println(Math.round(-3.4)); // 输出:-3(-3.4的小数部分>-0.5,舍去)
System.out.println(Math.round(-3.6)); // 输出:-4(-3.6的小数部分≤-0.5,进位)

2.3 最大值与最小值

max()min()方法用于比较两个数值的大小,支持相同类型的参数,返回较大值或较小值。

int a = 5, b = 10;
System.out.println(Math.max(a, b));  // 输出:10
System.out.println(Math.min(a, b));  // 输出:5double x = 3.14, y = 2.71;
System.out.println(Math.max(x, y));  // 输出:3.14

三、三角函数与几何运算

3.1 角度与弧度转换

在数学运算中,三角函数通常以弧度为单位。Math类提供了角度与弧度的转换方法:

toRadians(double degrees):将角度转换为弧度。

toDegrees(double radians):将弧度转换为角度。

double degrees = 90;
double radians = Math.toRadians(degrees); // 转换为π/2弧度
System.out.println(radians); // 输出:1.5707963267948966double rad = Math.PI / 2;
double deg = Math.toDegrees(rad); // 转换为90度
System.out.println(deg); // 输出:90.0

3.2 三角函数

3.2.1 正弦、余弦、正切

sin(double a):返回角度a(弧度)的正弦值。

cos(double a):返回角度a(弧度)的余弦值。

tan(double a):返回角度a(弧度)的正切值。

double sinValue = Math.sin(Math.PI / 2); // sin(90°)=1
System.out.println(sinValue); // 输出:1.0double cosValue = Math.cos(Math.PI); // cos(180°)=-1
System.out.println(cosValue); // 输出:-1.0

3.2.2 反三角函数

asin(double a):返回正弦值为a的角度(弧度),范围在[-π/2, π/2]

acos(double a):返回余弦值为a的角度(弧度),范围在[0, π]

atan(double a):返回正切值为a的角度(弧度),范围在[-π/2, π/2]

double angle = Math.asin(0.5); // 返回π/6弧度(30°)
System.out.println(Math.toDegrees(angle)); // 输出:30.0

3.3 双曲函数

Math类还提供了双曲正弦(sinh)、双曲余弦(cosh)、双曲正切(tanh)等方法,用于复杂的数学和物理计算。

double sinhValue = Math.sinh(1); // 双曲正弦值
System.out.println(sinhValue); // 输出:1.1752011936438077

四、指数与对数运算

4.1 指数运算

4.1.1 pow(double a, double b)

计算ab次幂,返回double类型结果。

System.out.println(Math.pow(2, 3));   // 2³=8.0
System.out.println(Math.pow(3, 0.5)); // √3≈1.7320508075688772

4.1.2 exp(double a)

计算自然指数e^a,等价于pow(Math.E, a)

System.out.println(Math.exp(1)); // e¹≈2.718281828459045

4.2 对数运算

4.2.1 log(double a)

计算以e为底的自然对数ln(a),要求a > 0

System.out.println(Math.log(Math.E)); // ln(e)=1.0

4.2.2 log10(double a)

计算以 10 为底的对数log₁₀(a),要求a > 0

System.out.println(Math.log10(100)); // log₁₀(100)=2.0

4.2.3 log2(double a)

计算以 2 为底的对数log₂(a),Java 8 引入,要求a > 0

System.out.println(Math.log2(8)); // log₂(8)=3.0

五、随机数生成

5.1 random()方法

Math.random()返回一个 **[0.0, 1.0)` 区间的伪随机双精度浮点数 **(包含 0.0,不包含 1.0)。

double randomNum = Math.random();
System.out.println(randomNum); // 示例输出:0.3456789...

5.2 生成指定范围的随机数

通过数学变换可以将random()的结果映射到任意区间:

生成[min, max)区间的整数(左闭右开):

int min = 1, max = 10;
int randomInt = min + (int) (Math.random() \* (max - min));
System.out.println(randomInt); // 输出1-9之间的整数

生成[min, max]区间的整数(包含两端点):

int randomIntInclusive = min + (int) (Math.random() \* (max - min + 1));

生成指定小数位数的随机数

double randomDecimal = Math.random() \* 100; // \[0, 100)
randomDecimal = Math.round(randomDecimal \* 100) / 100.0; // 保留两位小数
System.out.println(randomDecimal); // 示例输出:34.56

六、高级数学运算

6.1 取模运算

floorMod(int a, int b)方法用于计算地板取模,结果的符号与b一致,解决了传统取模(%运算符)结果符号与a一致的问题。

System.out.println(-5 % 3);        // 传统取模:-2(符号与a一致)
System.out.println(Math.floorMod(-5, 3)); // 地板取模:1(符号与b一致)

6.2 符号函数

signum()方法返回数值的符号:

若数值为正,返回1.0double类型)或1int类型);

若数值为 0,返回0

若数值为负,返回-1.0double类型)或-1int类型)。

System.out.println(Math.signum(-5));   // 输出:-1
System.out.println(Math.signum(3.14)); // 输出:1.0

6.3 平方根与立方根

sqrt(double a):计算平方根,要求a ≥ 0

System.out.println(Math.sqrt(25)); // 5.0

cbrt(double a):计算立方根,支持负数。

System.out.println(Math.cbrt(-8)); // -2.0

七、性能优化与注意事项

7.1 浮点数精度问题

由于二进制浮点数的存储限制,Math类的某些运算(如sqrtlog)可能存在精度误差。例如:

double x = Math.sqrt(2);
System.out.println(x \* x); // 输出:2.0000000000000004(而非精确的2)

对于金融计算、密码学等高精度场景,建议使用BigDecimal类进行运算。

7.2 避免溢出

在进行大数运算时(如pow(2, 100)),结果可能超出double的表示范围(约 ±1.7976931348623157×10³⁰⁸),导致结果为Infinity(无穷大)。此时需结合BigInteger类处理。

7.3 伪随机数的局限性

Math.random()生成的是伪随机数,其序列由种子(默认基于系统时间)决定,在需要高安全性的随机场景(如加密密钥生成)中,应使用SecureRandom类。

八、实战案例

8.1 计算圆的面积与周长

import static java.lang.Math.*; // 导入静态方法,简化代码public class CircleCalculator {public static void main(String[] args) {double radius = 5.0;double area = PI * pow(radius, 2);       // 面积=πr²double perimeter = 2 * PI * radius;      // 周长=2πrSystem.out.println("半径为" + radius + "的圆:");System.out.println("面积:" + area);System.out.println("周长:" + perimeter);}
}

8.2 实现线性同余随机数生成器(LCRG)

public class LinearCongruentialGenerator {private long seed;private static final long A = 1103515245L; // 乘数private static final long C = 12345L;      // 增量private static final long M = (1L << 31) - 1; // 模数(2³¹-1)public LinearCongruentialGenerator(long seed) {this.seed = seed;}public long nextInt() {seed = (A * seed + C) % M; // 线性同余公式return seed;}public static void main(String[] args) {LinearCongruentialGenerator lcrg = new LinearCongruentialGenerator(System.currentTimeMillis());for (int i = 0; i < 5; i++) {System.out.println(lcrg.nextInt()); // 生成伪随机整数}}
}

总结

Java 的Math工具类是开发者处理数学运算的 “瑞士军刀”,其丰富的方法覆盖了从基础算术到复杂函数的全场景需求。通过本文学习,你已掌握了Math类的核心用法,包括绝对值、取整、三角函数、指数对数、随机数等,并了解了性能优化与精度处理的注意事项。在实际开发中,建议结合以下原则:

对简单数值运算优先使用Math类,提升代码简洁性;

涉及高精度或大数运算时,搭配BigDecimal/BigInteger类;

在需要高安全性随机数的场景中,使用SecureRandom替代Math.random()

随着技术发展,Java 的数学工具也在不断演进(如 Java 17 引入的Math.signum(long)等方法),建议持续关注官方文档,以获取最新特性,通过灵活运用Math类,你将能够更高效地实现业务逻辑。

若这篇内容帮到你,动动手指支持下!关注不迷路,干货持续输出!
ヾ(´∀ ˋ)ノヾ(´∀ ˋ)ノヾ(´∀ ˋ)ノヾ(´∀ ˋ)ノヾ(´∀ ˋ)ノ

相关文章:

Math工具类全面指南

Math工具类全面指南 前言一、Math 类的基础特性1.1 类的声明与常量1.2 数据类型支持 二、基础算术运算2.1 绝对值运算2.2 取整运算2.2.1 floor()&#xff1a;向下取整2.2.2 ceil()&#xff1a;向上取整2.2.3 round()&#xff1a;四舍五入取整 2.3 最大值与最小值 三、三角函数与…...

为什么 Linux 上默认没有 host.docker.internal

在 Linux 环境中&#xff0c;host.docker.internal 是 Docker 为容器提供的一个特殊 DNS 名称&#xff0c;用于指向宿主机的 IP 地址&#xff08;类似 macOS/Windows 中的行为&#xff09;。但这个功能在 Linux 上默认不启用&#xff0c;需要手动配置才能使用。以下是详细解释和…...

HTML 颜色全解析:从命名规则到 RGBA/HSL 值,附透明度设置与场景应用指南

一、HTML 颜色系统详解 HTML 中的颜色可以通过多种方式定义&#xff0c;包括颜色名称、RGB 值、十六进制值、HSL 值等&#xff0c;同时支持透明度调整。以下是详细分类及应用场景&#xff1a; 1. 颜色名称&#xff08;预定义关键字&#xff09; HTML 预定义了 140 个标准颜色名…...

HTTP / HTTPS 协议

目录 一、前言&#xff1a; 二、Fiddler 抓包工具&#xff1a; 三、http 协议&#xff1a; 1、http 请求&#xff1a; 1.&#xff08;1&#xff09;请求行&#xff1a; 1、(2) 请求头&#xff1a; 1、(3) 请求正文: 2、http 响应&#xff1a; 2、(1) 状态码&#x…...

使用GRPO训练调度事件的语言模型!

参考&#xff1a;https://huggingface.co/blog/anakin87/qwen-scheduler-grpo 现在是2025年&#xff0c;在DeepSeek热潮之后&#xff0c;每个人都想使用GRPO训练自己的推理模型。 作为一名实践者&#xff0c;我也想这样做&#xff1a;仅使用提示和奖励来训练语言模型是一件非常…...

关于 js:9. Node.js 后端相关

一、Node 环境搭建与执行流程 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;它让 JS 不再局限于浏览器内&#xff0c;而是可以在服务器、终端、本地脚本中运行。 核心定位&#xff1a;让我们可以用 JS 写本地程序、脚本、爬虫、加密逻辑、hook 工具、…...

More Effective C++:改善编程与设计(上)

More Effective C&#xff1a; 目录 More Effective C&#xff1a; 条款1&#xff1a;仔细区别pointers和 references 条款2:最好使用C转型操作符 条款3:绝对不要以多态方式处理数组 条款4:非必要不要提供default constructor 条款5:对定制的“类型转换函数”保持警觉 …...

SCDN如何有效防护网站免受CC攻击?——安全加速网络的实战解析

在互联网安全威胁日益复杂化的今天&#xff0c;CC&#xff08;Challenge Collapsar&#xff09;攻击已成为网站运营者面临的主要挑战之一。这种攻击通过模拟大量合法用户请求&#xff0c;消耗服务器资源&#xff0c;导致正常用户无法访问。而**安全内容分发网络&#xff08;SCD…...

关于并发编程AQS的学习

目录 1. AQS的核心作用 2. AQS的核心结构 3. 关键方法 4. AQS的应用示例 4.1、ReentrantLock的实现 4.2、CountDownLatch的实现 5. AQS的优势 6. 对比其他同步机制 前言 AQS&#xff08;AbstractQueuedSynchronizer&#xff09; 是Java并发编程中一个核心的同步器框架…...

16S18S基础知识(1)

相关内容&#xff1a; https://blog.csdn.net/weixin_34315189/article/details/86397125?fromshareblogdetail&sharetypeblogdetail&sharerId86397125&sharereferPC&sharesource2302_80012625&sharefromfrom_link https://metagenome.blog.csdn.net/art…...

Java Spring Boot 控制器中处理用户数据详解

目录 一、获取请求参数1.1 获取查询参数1.2 获取路径参数 二、处理表单提交2.1 处理表单数据 三、处理 JSON 数据3.1 接收 JSON 数据 四、返回 JSON 数据五、处理文件上传5.1 单文件上传5.2 多文件上传 六、总结 在 Spring Boot 应用开发中&#xff0c;控制器&#xff08;Contr…...

AI产品上市前的“安全通行证“

首席数据官高鹏律师团队 如今AI 产品如雨后春笋般涌现&#xff0c;从智能音箱到自动驾驶汽车&#xff0c;从语音助手到医疗诊断软件&#xff0c;它们正全方位渗透进我们的生活。然而&#xff0c;在 AI 产品迈向市场、走进千家万户之前&#xff0c;有一系列强制性安全认证如同坚…...

sql server 2019 将单用户状态修改为多用户状态

记录两种将单用户状态修改为多用户状态&#xff0c;我曾经成功过的方法&#xff0c;供参考 第一种方法 USE master; GO -- 终止所有活动连接 DECLARE kill_connections NVARCHAR(MAX) ; SELECT kill_connections KILL CAST(session_id AS NVARCHAR(10)) ; FROM sys.dm_ex…...

[滑动窗口]越短越合法(可转化成越长越合法)

题目链接 题意 给你一个整数数组 nums 和一个整数 k &#xff0c;请你返回子数组内所有元素的乘积严格小于k 的连续子数组的数目。 首先当ans增加时 我们认为r固定 方法一、转化成越长越合法 思路 算出乘积 ≥ k \ge k ≥k的子数组数量 再用所有子数组数量减去上面算出来…...

idea中编写spark程序

### 在 IntelliJ IDEA 中配置和编写 Spark 程序 要在 IntelliJ IDEA 中高效地开发 Spark 程序&#xff0c;需要完成一系列必要的环境配置以及项目搭建工作。以下是详细的说明。 --- #### 1. 安装与配置 IntelliJ IDEA 为了确保 IDE 可以支持 Scala 开发&#xff0c;首先需要…...

机器学习入门(一)

机器学习入门&#xff08;一&#xff09; 文章目录 机器学习入门&#xff08;一&#xff09;一、机器学习分类1.1 监督学习1.2 半监督学习1.3 无监督学习1.4 强化学习 二、scikit-learn工具介绍scikit-learn安装 三、数据集3.1 sklearn玩具数据集介绍3.2 sklearn现实世界数据集…...

力扣每日一题之移动零

题目说明&#xff1a; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 思路分析&#xff1a;我们可以考虑使用双指针来解答该题。双指针分…...

GaiaEx 盖亚:从合规出发,一家新兴交易平台的全球化路径探索

在加密货币交易平台日益激烈的竞争中&#xff0c;监管趋严、安全要求提升、用户体验优化已成为行业发展的三大核心议题。2025年初正式上线的GaiaEx 盖亚交易所&#xff0c;正是在这一市场背景下&#xff0c;以“合规 产品 生态”的多维路径&#xff0c;逐步建立起自身的发展方…...

车载网关--- 职责边界划分与功能解耦设计

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

EasyRTC嵌入式音视频通信SDK打造带屏IPC全场景实时通信解决方案

一、方案概述​ 在智能安防与物联网快速发展的背景下&#xff0c;带屏IPC&#xff08;网络摄像机&#xff09;不仅承担着视频采集与监控的基础功能&#xff0c;还逐渐向多样化交互与智能化方向演进。EasyRTC作为一款强大的实时通信框架&#xff0c;具备低延迟、高稳定性、跨平…...

STM32入门笔记(05):内部高速8Mhz时钟最大时钟可以设置 64 Mhz?如何修改system_stm32f10x.c里面的代码?

6.2 Clocks 最大系统时钟频率 当 STM32F103 系列仅使用内部高速振荡器&#xff08;HSI&#xff0c;8 MHz&#xff09;作为时钟源&#xff0c;并通过 PLL 放大时&#xff0c;最大可达 64 MHz。([forum.mikroe.com][1], [keil.com][2]) HSI 被内部除以 2&#xff08;即 4 M…...

iOS 阅后即焚功能的实现

iOS阅后即焚功能实现步骤 一、功能设计要点 消息类型支持&#xff1a;文本、图片、视频、音频等。销毁触发条件&#xff1a; 接收方首次打开消息后启动倒计时。消息存活时间可配置&#xff08;如5秒、1分钟&#xff09;。 安全要求&#xff1a; 端到端加密&#xff08;E2EE&a…...

二叉树前中后序遍历统一迭代法详解:空标记法与栈操作的艺术

二叉树的 前序、中序、后序 遍历是算法中的经典问题。递归实现简单直观&#xff0c;而迭代法则能更好地理解栈的操作逻辑。前文中(中序&#xff0c;前序与后序&#xff09;所讲过传统的迭代法需要为每种遍历设计不同的入栈顺序&#xff0c;但 统一迭代法 通过引入 空标记节点&a…...

Spark 集群配置、启动与监控指南

Spark 集群的配置和启动需要几个关键步骤。以下是完整的操作流程&#xff0c;包含配置修改、集群启动、任务提交和常见错误排查方法。 1. 修改 Spark 配置文件 首先需要编辑 Spark 配置文件&#xff0c;设置集群参数&#xff1a; bash # 进入 Spark 配置目录 cd $SPARK_HOM…...

综述:拓扑材料的热磁性质

Adv. Funct. Mater. 2025, 2506631 https://doi.org/10.1002/adfm.202506631 近年来&#xff0c;越来越多的拓扑材料表现出优异的热磁&#xff08;TM&#xff09;性能&#xff0c;其显著的双极效应和线性能带带来的高载流子迁移率改善了这种性能。 本文综述了TM输运理论、基于…...

lanqiaoOJ 652:一步之遥 ← 扩展欧几里得定理

【题目来源】 https://www.lanqiao.cn/problems/652/learning/ 【题目背景】 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 【题目描述】 从昏迷中醒来&#xff0c;小明发现自己被关在X星球的废矿车里。矿车停在平直的废弃…...

双目云台摄像机:双摄安防功能全方位

双目云台摄像机是一种具有革命性设计的云台摄像机设备&#xff0c;其核心在于其独特的双摄像头配置。以下是对这种先进安防设备的详细介绍&#xff1a; 一、核心原理 双目云台摄像机的核心原理在于利用两个摄像头从不同角度捕捉同一场景&#xff0c;通过先进的算法计算两个图…...

Linux - 基础指令

目录 linux下基本指令 ls pwd cd touch mkdir rmdir rm man cp mv cat ​more less head tail | 匿名管道 find 指令 which alias grep zip/unzi rz/sz tar 重要的⼏个热键 学习linux操作系统&#xff0c;学习指令是必不可少的 尽管有图形化的linux操作系统供学者学习&am…...

深圳无人机展览即将开始,无人机舵机为什么选择伟创动力

深圳无人机展览即将开始&#xff0c;无人机舵机为什么选择伟创动力 2025年5月23日至25日&#xff0c;伟创动力(Kpower)将携旗下多款高性能舵机及微型驱动系统方案亮相2025国际低空经济与无人系统博览会&#xff08;深圳无人机展&#xff09;&#xff0c;全面展示其在无人机、机…...

ajax提交form表单数据举例

目录 一、HTML 表单准备二、JavaScript 文件(form.js)三、服务器端处理(Spring Boot 示例)四、运行和测试五、总结在现代 Web 开发中,为了提供更流畅、无需页面刷新的用户体验,AJAX(Asynchronous JavaScript and XML)技术被广泛应用于提交表单数据。本文将通过一个具体…...

IDEA 新建 SpringBoot 项目时,没有高版本 SpringBoot 可选

环境描述 IDEA 2025.1.1JDK17Maven 3.9.9 问题描述 IDEA 新建 SpringBoot 项目时&#xff0c;没有高版本 SpringBoot 可选&#xff0c;可以看到此时的最高版本为 3.0.2&#xff1a; 问题分析 返回上一步&#xff0c;可以发现 Spring Initializr 的服务地址为阿里云&#…...

下载的旧版的jenkins,为什么没有旧版的插件

下载的旧版的jenkins&#xff0c;为什么没有旧版的插件&#xff0c;别急 我的jenkins版本&#xff1a; 然后我去找对应的插件 https://updates.jenkins.io/download/plugins/ 1、Maven Integration plugin&#xff1a; Maven 集成管理插件。 然后点击及下载成功 然后 注意&…...

java连数据库

一、准备工作 ​​安装MySQL数据库​​ 确保已安装MySQL服务器并启动服务 ​​下载JDBC驱动​​ 官方驱动&#xff1a;MySQL Connector/JMaven依赖&#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactI…...

常见排序算法及其java实现

常见排序算法 一、冒泡排序&#xff08;Bubble Sort&#xff09;​二、选择排序&#xff08;Selection Sort&#xff09;​​ ​​三、插入排序&#xff08;Insertion Sort&#xff09;​​四、快速排序&#xff08;Quick Sort&#xff09;​​ ​​五、归并排序&#xff08;Me…...

【Python 算法零基础 2.模拟 ④ 基于矩阵】

目录 基于矩阵 Ⅰ、 2120. 执行所有后缀指令 思路与算法 ① 初始化结果列表 ② 方向映射 ③ 遍历每个起始位置 ④ 记录结果 Ⅱ、1252. 奇数值单元格的数目 思路与算法 ① 初始化矩阵 ② 处理每个操作 ③ 统计奇数元素 Ⅲ、 832. 翻转图像 思路与算法 ① 水平翻转图像 ② 像素值…...

2025年PMP 学习十三 第9章 项目资源管理(9.1,9.2)

2025年PMP 学习十三 第9章 项目资源管理&#xff08;9.1,9.2&#xff09; 序号过程过程组9.1规划资源管理规划9.2估算活动资源规划9.3获取资源执行9.4建设团队执行9.5管理团队执行9.6控制资源监控 文章目录 2025年PMP 学习十三 第9章 项目资源管理&#xff08;9.1,9.2&#xf…...

IEEE802.16 标准介绍

IEEE802.16 标准又称为IEEE Wireless MAN 空中接口标准&#xff0c;对工作于不同频带的无线接入系统空中接口进行了规范。由于它所规定的无线系统覆盖范围在公里量级&#xff0c;因此802.16 系统主要应用于城域网。 根据使用频带高低的不同&#xff0c;802.16 系统可分为应用于…...

Nginx配置与应用案例详解

Nginx 是一款高性能的 HTTP 服务器和反向代理服务器,广泛用于负载均衡、静态资源托管和动态内容转发。以下是对 Nginx 配置的详细解析及常见应用场景案例。 一、Nginx 配置文件结构 Nginx 的配置文件通常位于 /etc/nginx/nginx.conf,包含以下核心模块: 全局块 (Main Contex…...

Hadoop-HDFS-Packet含义及作用

在 HDFS&#xff08;Hadoop Distributed File System&#xff09;中&#xff0c;Packet 是数据读写过程中用于数据传输的基本单位。它是 HDFS 客户端与数据节点&#xff08;DataNode&#xff09;之间进行数据交互时的核心概念&#xff0c;尤其在写入和读取文件时&#xff0c;Pa…...

作业帮Android面试题及参考答案

简单描述 Java 类加载机制 Java 类加载机制是将类的字节码载入 JVM 并生成对应的 Class 对象的过程&#xff0c;主要包括以下几个阶段。 加载是类加载的第一个阶段&#xff0c;通过类的全限定名来获取其字节码流&#xff0c;然后将字节码流解析成方法区中的运行时数据结构&…...

分布式1(cap base理论 锁 事务 幂等性 rpc)

目录 分布式系统介绍 一、定义与概念 二、分布式系统的特点 三、分布式系统面临的挑战 四、分布式系统的常见应用场景 CAP 定理 BASE 理论 BASE理论是如何保证最终一致性的 分布式锁的常见使用场景有哪些&#xff1f; 1. 防止多节点重复操作 2. 资源互斥访问 3. 分…...

如何下载 MySQL 驱动 JAR 包

下载 MySQL 驱动 JAR 包的 4 种方式&#xff1a; 官网下载&#xff1a;从 MySQL 官网 下载对应版本的 ZIP 包Maven&#xff1a;在 pom.xml 添加 mysql-connector-java 依赖Gradle&#xff1a;在 build.gradle 使用 implementation mysql:mysql-connector-java:8.0.x直接下载&a…...

unordered_map和unordered的介绍和使用

目录 unordered系列关联式容器 unordered_map unordered_map的接口说明 unordered_map的定义方式 unordered_map接口的使用 unordered_map的容量 unordered_map的迭代器 unordered_map的元素访问 unordered_map的查询 unordered_map的修改操作 unordered_multimap u…...

【原创】使用阿里云存放一个临时共享的文件

在某些场合&#xff0c;需要临时将一个文件存储到一个可被公网访问的地方&#xff0c;某个服务需要访问一下这个文件。这个文件基本上就是一次寿命&#xff0c;也就是你上传一下&#xff0c;然后被访问一下&#xff0c;这个文件的寿命就结束了。 对于这种需求&#xff0c;自建…...

C++学习细节回顾(汇总二)

一.初始化列表相关 1.初始化顺序受申明顺序影响 2.在必要时可以部分不采用初始化列表&#xff0c;避免受特性1影响 二.非类型模板参数 template< class T , size_t N 10 > 三.特化–特殊化处理 template< class T > bool less(T left , T right) { return left&…...

【行为型之访问者模式】游戏开发实战——Unity灵活数据操作与跨系统交互的架构秘诀

文章目录 &#x1f9f3; 访问者模式&#xff08;Visitor Pattern&#xff09;深度解析一、模式本质与核心价值二、经典UML结构三、Unity实战代码&#xff08;游戏物品系统&#xff09;1. 定义元素与访问者接口2. 实现具体元素类3. 实现具体访问者4. 对象结构管理5. 客户端使用 …...

ubuntu系统安装配置adb工具

获取adb tools 1. 下载最新版&#xff08;替换链接中的版本号&#xff09; wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip2. 解压到当前目录 unzip platform-tools-latest-linux.zip3. 移动文件到系统目录 sudo mv platform-tools /usr/…...

基于Python的量化交易实盘部署与风险管理指南

基于Python的量化交易实盘部署与风险管理指南 一、模拟交易与参数优化 1.1 券商API接入与模拟交易 在量化交易落地前&#xff0c;模拟交易是策略验证的“安全沙箱”&#xff0c;其核心价值在于用零成本环境暴露策略缺陷。以股票市场为例&#xff0c;同花顺与通达信模拟盘接口…...

MySQL 入门大全:数据类型

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

WPF Datagrid 数据加载和性能

这篇文章并非讨论 WPF Datagrid 的性能数据&#xff0c;而只是简单介绍一下为了使其性能良好&#xff0c;你需要注意哪些方面。我不太想使用性能分析器来展示实际数据&#xff0c;而是尽可能地使用了 Stopwatch 类。这篇文章不会深入探讨处理海量数据的技术&#xff0c;例如分页…...