目录

一、基本数据类型

二、包装类

三、精确计算:BigDecimal

四、大整数:BigInteger

五、实际应用示例:RSA 加密算法核心计算


一、基本数据类型

这是进行数字计算最高效的方式,直接在栈上分配内存。它们分为整数型和浮点型。

类型大小取值范围默认值使用场景
byte8位 (1字节)-128 ~ 1270节省空间,如处理二进制数据、文件流
short16位 (2字节)-32,768 ~ 32,7670较少使用,可用于兼容C语言short等特定场景
int32位 (4字节)-2³¹ ~ 2³¹-1 (约 -21亿 ~ 21亿)0最常用,一般整数计算的首选
long64位 (8字节)-2⁶³ ~ 2⁶³-10L需要表示非常大整数时,如时间戳、全球唯一ID
类型大小取值范围默认值精度使用场景
float32位 (4字节)≈ ±3.4e+38F0.0f约 6-7 位有效小数图形处理、科学计算(对内存敏感时)
double64位 (8字节)≈ ±1.7e+3080.0约 15-16 位有效小数最常用,默认的浮点类型
import java.util.Scanner;public class PrimitiveMathOperations {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("Java基本数据类型数学计算示例");System.out.println("==============================");// 整数类型计算示例integerOperations();// 浮点数类型计算示例floatingPointOperations();// 类型转换示例typeConversionExamples();// 使用Math类进行高级计算mathClassExamples();scanner.close();}// 整数类型操作示例public static void integerOperations() {System.out.println("\n1. 整数类型操作示例:");int a = 15;int b = 4;System.out.println("a = " + a + ", b = " + b);System.out.println("加法: a + b = " + (a + b));System.out.println("减法: a - b = " + (a - b));System.out.println("乘法: a * b = " + (a * b));System.out.println("除法: a / b = " + (a / b));System.out.println("取余: a % b = " + (a % b));// 整数溢出示例System.out.println("\n整数溢出示例:");int maxInt = Integer.MAX_VALUE;System.out.println("MAX_INT = " + maxInt);System.out.println("MAX_INT + 1 = " + (maxInt + 1)); // 溢出为最小值// 位运算System.out.println("\n位运算示例:");System.out.println("a & b (AND) = " + (a & b));System.out.println("a | b (OR) = " + (a | b));System.out.println("a ^ b (XOR) = " + (a ^ b));System.out.println("~a (NOT) = " + (~a));System.out.println("a << 2 (左移) = " + (a << 2));System.out.println("a >> 2 (右移) = " + (a >> 2));}// 浮点数类型操作示例public static void floatingPointOperations() {System.out.println("\n2. 浮点数类型操作示例:");double x = 10.5;double y = 3.2;System.out.println("x = " + x + ", y = " + y);System.out.println("加法: x + y = " + (x + y));System.out.println("减法: x - y = " + (x - y));System.out.println("乘法: x * y = " + (x * y));System.out.println("除法: x / y = " + (x / y));// 浮点数精度问题示例System.out.println("\n浮点数精度问题示例:");double d1 = 0.1;double d2 = 0.2;System.out.println("0.1 + 0.2 = " + (d1 + d2));System.out.println("0.1 + 0.2 == 0.3? " + ((d1 + d2) == 0.3));// 正确的浮点数比较方式double epsilon = 0.000001; // 定义一个很小的误差范围System.out.println("使用误差范围比较: " + (Math.abs((d1 + d2) - 0.3) < epsilon));}// 类型转换示例public static void typeConversionExamples() {System.out.println("\n3. 类型转换示例:");// 隐式转换(自动类型提升)int i = 10;double d = i; // int自动转换为doubleSystem.out.println("int " + i + " 隐式转换为 double: " + d);// 显式转换(强制类型转换)double pi = 3.14159;int intPi = (int) pi; // double强制转换为int,会丢失小数部分System.out.println("double " + pi + " 强制转换为 int: " + intPi);// 表达式中的类型提升System.out.println("\n表达式中的类型提升:");int a = 10;double b = 3.0;System.out.println("a / b = " + (a / b) + " (int被提升为double)");// 注意:整数除法会截断小数部分System.out.println("10 / 4 = " + (10 / 4) + " (整数除法)");System.out.println("10.0 / 4 = " + (10.0 / 4) + " (浮点数除法)");}// 使用Math类进行高级计算public static void mathClassExamples() {System.out.println("\n4. Math类高级计算示例:");System.out.println("Math.sqrt(25) = " + Math.sqrt(25)); // 平方根System.out.println("Math.pow(2, 5) = " + Math.pow(2, 5)); // 幂运算System.out.println("Math.abs(-10.5) = " + Math.abs(-10.5)); // 绝对值System.out.println("Math.max(10, 20) = " + Math.max(10, 20)); // 最大值System.out.println("Math.min(10, 20) = " + Math.min(10, 20)); // 最小值System.out.println("Math.round(3.6) = " + Math.round(3.6)); // 四舍五入System.out.println("Math.ceil(3.2) = " + Math.ceil(3.2)); // 向上取整System.out.println("Math.floor(3.8) = " + Math.floor(3.8)); // 向下取整// 三角函数System.out.println("\n三角函数示例:");System.out.println("Math.sin(Math.PI/2) = " + Math.sin(Math.PI/2));System.out.println("Math.cos(0) = " + Math.cos(0));System.out.println("Math.tan(Math.PI/4) = " + Math.tan(Math.PI/4));// 随机数System.out.println("\n随机数示例:");System.out.println("Math.random() = " + Math.random()); // 0.0到1.0之间的随机数System.out.println("随机整数(1-100): " + (int)(Math.random() * 100 + 1));}
}

Java基本数据类型数学计算示例
==============================1. 整数类型操作示例:
a = 15, b = 4
加法: a + b = 19
减法: a - b = 11
乘法: a * b = 60
除法: a / b = 3
取余: a % b = 3整数溢出示例:
MAX_INT = 2147483647
MAX_INT + 1 = -2147483648位运算示例:
a & b (AND) = 4
a | b (OR) = 15
a ^ b (XOR) = 11
~a (NOT) = -16
a << 2 (左移) = 60
a >> 2 (右移) = 32. 浮点数类型操作示例:
x = 10.5, y = 3.2
加法: x + y = 13.7
减法: x - y = 7.3
乘法: x * y = 33.6
除法: x / y = 3.28125浮点数精度问题示例:
0.1 + 0.2 = 0.30000000000000004
0.1 + 0.2 == 0.3? false
使用误差范围比较: true3. 类型转换示例:
int 10 隐式转换为 double: 10.0
double 3.14159 强制转换为 int: 3表达式中的类型提升:
a / b = 3.3333333333333335 (int被提升为double)
10 / 4 = 2 (整数除法)
10.0 / 4 = 2.5 (浮点数除法)4. Math类高级计算示例:
Math.sqrt(25) = 5.0
Math.pow(2, 5) = 32.0
Math.abs(-10.5) = 10.5
Math.max(10, 20) = 20
Math.min(10, 20) = 10
Math.round(3.6) = 4
Math.ceil(3.2) = 4.0
Math.floor(3.8) = 3.0三角函数示例:
Math.sin(Math.PI/2) = 1.0
Math.cos(0) = 1.0
Math.tan(Math.PI/4) = 0.9999999999999999随机数示例:
Math.random() = 0.123456789
随机整数(1-100): 42

二、包装类

基本类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

包装类的必要性:

  • 用于泛型:泛型不能使用基本类型,例如 List<Integer>

  • null 值:包装类对象可以为 null,可以表示缺失值。

  • 提供工具方法:例如 Integer.parseInt(String s)

import java.util.Arrays;
import java.util.List;public class WrapperClassMathExamples {public static void main(String[] args) {// 1. 基本转换和解析System.out.println("=== 基本转换和解析 ===");Integer num1 = Integer.valueOf("123"); // 字符串转IntegerDouble num2 = Double.parseDouble("3.14"); // 字符串转DoubleSystem.out.println("Integer值: " + num1);System.out.println("Double值: " + num2);// 2. 自动装箱和拆箱System.out.println("\n=== 自动装箱和拆箱 ===");Integer autoBoxed = 42; // 自动装箱int autoUnboxed = autoBoxed; // 自动拆箱System.out.println("自动装箱: " + autoBoxed);System.out.println("自动拆箱: " + autoUnboxed);// 3. 数值比较System.out.println("\n=== 数值比较 ===");Integer a = 100;Integer b = 200;System.out.println("较大值: " + Integer.max(a, b));System.out.println("较小值: " + Integer.min(a, b));System.out.println("比较结果: " + Integer.compare(a, b));// 4. 数学运算System.out.println("\n=== 数学运算 ===");System.out.println("求和: " + Integer.sum(10, 20));System.out.println("位反转: " + Integer.reverse(10));System.out.println("二进制表示: " + Integer.toBinaryString(10));// 5. 类型转换System.out.println("\n=== 类型转换 ===");Integer intVal = 255;System.out.println("转为double: " + intVal.doubleValue());System.out.println("转为float: " + intVal.floatValue());System.out.println("十六进制: " + Integer.toHexString(intVal));// 6. 常量值System.out.println("\n=== 常量值 ===");System.out.println("Integer最大值: " + Integer.MAX_VALUE);System.out.println("Integer最小值: " + Integer.MIN_VALUE);System.out.println("Double最大值: " + Double.MAX_VALUE);System.out.println("Double最小值: " + Double.MIN_VALUE);// 7. 特殊值处理System.out.println("\n=== 特殊值处理 ===");System.out.println("是否是NaN: " + Double.isNaN(Math.sqrt(-1)));System.out.println("是否是无限大: " + Double.isInfinite(1.0/0.0));// 8. 列表中的数值操作System.out.println("\n=== 列表中的数值操作 ===");List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);int sum = numbers.stream().mapToInt(Integer::intValue).sum();System.out.println("列表求和: " + sum);}
}
=== 基本转换和解析 ===
Integer值: 123
Double值: 3.14=== 自动装箱和拆箱 ===
自动装箱: 42
自动拆箱: 42=== 数值比较 ===
较大值: 200
较小值: 100
比较结果: -1=== 数学运算 ===
求和: 30
位反转: 1342177280
二进制表示: 1010=== 类型转换 ===
转为double: 255.0
转为float: 255.0
十六进制: ff=== 常量值 ===
Integer最大值: 2147483647
Integer最小值: -2147483648
Double最大值: 1.7976931348623157E308
Double最小值: 4.9E-324=== 特殊值处理 ===
是否是NaN: true
是否是无限大: true=== 列表中的数值操作 ===
列表求和: 15

三、精确计算:BigDecimal

核心特点:

  • 不可变对象:任何运算都会产生一个新的 BigDecimal 对象。

  • 任意精度:可以表示任意精度的十进制数。

  • 完全控制舍入行为:提供了多种舍入模式(RoundingMode)。

    • RoundingMode.HALF_UP - 四舍五入。

      • 对于金融计算,通常使用 2 位小数和 HALF_EVEN 舍入模式(银行家舍入法)

    • RoundingMode.CEILING - 向正无穷大舍入

    • RoundingMode.FLOOR - 向负无穷大舍入

    • RoundingMode.UP - 远离零方向舍入

    • RoundingMode.DOWN - 向零方向舍入

关键:永远使用 String 构造参数来创建 BigDecimal 对象!
如果使用 double 构造参数,会将固有的精度误差带进来。

import java.math.BigDecimal;
import java.math.RoundingMode;public class BigDecimalExamples {public static void main(String[] args) {// 1. 创建 BigDecimal 对象BigDecimal num1 = new BigDecimal("123.456");BigDecimal num2 = new BigDecimal("78.9");BigDecimal num3 = BigDecimal.valueOf(50.25); // 推荐使用valueOf避免精度问题System.out.println("数字1: " + num1);System.out.println("数字2: " + num2);System.out.println("数字3: " + num3);// 2. 基本算术运算System.out.println("\n--- 基本算术运算 ---");// 加法BigDecimal sum = num1.add(num2);System.out.println("加法: " + num1 + " + " + num2 + " = " + sum);// 减法BigDecimal difference = num1.subtract(num2);System.out.println("减法: " + num1 + " - " + num2 + " = " + difference);// 乘法BigDecimal product = num1.multiply(num2);System.out.println("乘法: " + num1 + " * " + num2 + " = " + product);// 除法(需要指定精度和舍入模式)BigDecimal quotient = num1.divide(num2, 4, RoundingMode.HALF_UP);System.out.println("除法: " + num1 + " / " + num2 + " = " + quotient);// 3. 比较操作System.out.println("\n--- 比较操作 ---"); // 使用 compareTo() 而不是 equals() 来比较数值,因为 equals() 还会比较精度System.out.println(num1 + " 比较 " + num2 + ": " + num1.compareTo(num2));System.out.println(num1 + " 等于 " + num2 + "? " + num1.equals(num2));// 4. 四舍五入和精度控制System.out.println("\n--- 精度控制 ---");BigDecimal pi = new BigDecimal("3.1415926535");BigDecimal roundedPi = pi.setScale(4, RoundingMode.HALF_UP);System.out.println("PI 四舍五入到4位小数: " + roundedPi);// 5. 取余操作System.out.println("\n--- 取余操作 ---");BigDecimal remainder = num1.remainder(num2);System.out.println(num1 + " % " + num2 + " = " + remainder);// 6. 最大值和最小值System.out.println("\n--- 最大值和最小值 ---");BigDecimal max = num1.max(num2);BigDecimal min = num1.min(num2);System.out.println("最大值: " + max);System.out.println("最小值: " + min);// 7. 幂运算System.out.println("\n--- 幂运算 ---");BigDecimal power = num2.pow(3);System.out.println(num2 + " 的3次方 = " + power);// 8. 绝对值System.out.println("\n--- 绝对值 ---");BigDecimal negative = new BigDecimal("-123.456");BigDecimal absolute = negative.abs();System.out.println(negative + " 的绝对值 = " + absolute);// 9. 科学计数法System.out.println("\n--- 科学计数法 ---");BigDecimal scientific = new BigDecimal("1.23456789e5");System.out.println("科学计数法 1.23456789e5 = " + scientific);// 10. 金融计算示例(复利计算)System.out.println("\n--- 复利计算示例 ---");BigDecimal principal = new BigDecimal("10000"); // 本金BigDecimal rate = new BigDecimal("0.05");      // 年利率 5%int years = 10;                                // 投资年限// 复利公式: A = P(1 + r)^nBigDecimal one = BigDecimal.ONE;BigDecimal factor = one.add(rate); // (1 + r)BigDecimal amount = principal.multiply(factor.pow(years));System.out.println("本金: ¥" + principal);System.out.println("年利率: " + rate.multiply(new BigDecimal("100")) + "%");System.out.println("投资年限: " + years + "年");System.out.println("最终金额: ¥" + amount.setScale(2, RoundingMode.HALF_UP));}
}

四、大整数:BigInteger

如果处理超过 long 类型范围的整数,可以使用 java.math.BigInteger。它用于表示不可变的任意精度的整数。

import java.math.BigInteger;
import java.util.Random;public class BigIntegerExamples {public static void main(String[] args) {// 1. 创建 BigInteger 对象BigInteger num1 = new BigInteger("12345678901234567890");BigInteger num2 = BigInteger.valueOf(9876543210L);BigInteger num3 = BigInteger.TEN; // 预定义常量// 从随机数创建Random random = new Random();BigInteger randomNum = new BigInteger(100, random); // 100位的随机数// 2. 基本算术运算BigInteger sum = num1.add(num2);BigInteger difference = num1.subtract(num2);BigInteger product = num1.multiply(num2);BigInteger quotient = num1.divide(num2);BigInteger remainder = num1.remainder(num2);// 3. 除法和余数组合操作BigInteger[] divAndRem = num1.divideAndRemainder(num2);System.out.println("商: " + divAndRem[0] + ", 余数: " + divAndRem[1]);// 4. 幂运算BigInteger power = num3.pow(20); // 10^20// 5. 最大公约数BigInteger gcd = num1.gcd(num2);// 6. 模运算BigInteger mod = num1.mod(num2);// 模逆元 (需要模数是质数)try {BigInteger modInverse = num1.modInverse(num2);} catch (ArithmeticException e) {System.out.println("模逆元不存在: " + e.getMessage());}// 7. 模幂运算BigInteger modPow = num1.modPow(BigInteger.valueOf(100), num2);// 8. 比较操作int comparison = num1.compareTo(num2);if (comparison == 0) {System.out.println("num1 等于 num2");} else if (comparison < 0) {System.out.println("num1 小于 num2");} else {System.out.println("num1 大于 num2");}// 9. 位操作BigInteger shiftedLeft = num1.shiftLeft(3); // 乘以 2^3BigInteger shiftedRight = num1.shiftRight(2); // 除以 2^2// 10. 素数测试 (概率性测试)boolean isPrime = num1.isProbablePrime(100); // 100是确定性参数System.out.println("可能是素数: " + isPrime);// 11. 下一个素数BigInteger nextPrime = num1.nextProbablePrime();// 12. 转换为其他类型long longValue = num2.longValue();int intValue = num2.intValue();String stringValue = num1.toString();// 13. 按不同进制输出String binaryString = num1.toString(2); // 二进制String hexString = num1.toString(16); // 十六进制// 14. 绝对值BigInteger negativeNum = new BigInteger("-1234567890");BigInteger absValue = negativeNum.abs();// 15. 符号检查int sign = num1.signum(); // -1, 0, 或 1// 16. 位长度计算int bitLength = num1.bitLength();// 17. 设置特定位BigInteger setBit = num1.setBit(5); // 设置第5位为1// 18. 清除特定位BigInteger clearBit = num1.clearBit(5); // 设置第5位为0// 19. 测试特定位boolean bitTest = num1.testBit(5);// 20. 位计数int bitCount = num1.bitCount(); // 值为1的位数System.out.println("所有操作完成!");}
}

五、实际应用示例:RSA 加密算法核心计算

import java.math.BigInteger;
import java.util.Random;public class RSAExample {public static void main(String[] args) {// 生成大素数 (简化示例,实际应用需要更大的素数)BigInteger p = BigInteger.probablePrime(512, new Random());BigInteger q = BigInteger.probablePrime(512, new Random());// 计算 n = p * qBigInteger n = p.multiply(q);// 计算欧拉函数 φ(n) = (p-1)(q-1)BigInteger phi = p.subtract(BigInteger.ONE).multiply(q.subtract(BigInteger.ONE));// 选择公钥指数 e (通常为65537)BigInteger e = BigInteger.valueOf(65537);// 计算私钥指数 d = e^(-1) mod φ(n)BigInteger d = e.modInverse(phi);// 要加密的消息BigInteger message = new BigInteger("123456789");// 加密: ciphertext = message^e mod nBigInteger ciphertext = message.modPow(e, n);// 解密: decrypted = ciphertext^d mod nBigInteger decrypted = ciphertext.modPow(d, n);System.out.println("原始消息: " + message);System.out.println("加密后: " + ciphertext);System.out.println("解密后: " + decrypted);System.out.println("解密成功: " + message.equals(decrypted));}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96704.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96704.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/96704.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手写MyBatis第32弹-设计模式实战:Builder模式在MyBatis框架中的精妙应用

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e;&#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论&#x1f525;&#x1f525;&am…

小白成长之路-k8s原理(一)

文章目录前言一、k8s组件1.1master部分1.2node节点二、网络2.1网络模型2.2CNI2.3流程2.4网络解决方案2.5网络模式三、资源清单3.1概述3.2常见的资源3.3资源清单的编写四、Pod4.1概念图4.2pause4.3概述4.4pod生命周期4.5pod探针4.6钩子4.7pod控制器1.RC 控制器2.RS控制器3.deplo…

木筏求生 PC/手机双端 单机+联机(Raft)免安装中文版

网盘链接&#xff1a; 木筏求生 免安装中文版 名称&#xff1a;木筏求生 PC/手机双端 单机联机&#xff08;Raft&#xff09;免安装中文版 描述&#xff1a; 无论是独自一人还是与朋友一起&#xff0c;你的任务是在危险的海洋中度过一场史诗般的海洋冒险 &#xff01;收集…

vue中v-show 和 v-if 指令的区别

v-show 和 v-if 是 Vue.js 中两个非常重要的指令&#xff0c;都用于条件性地显示或隐藏元素&#xff0c;但它们的实现方式和适用场景有本质区别。 简单来说&#xff0c;最核心的区别是&#xff1a; v-if 是 “真正的”条件渲染&#xff0c;它会确保在切换过程中条件块内的事件监…

Linux中iptables命令

iptables 命令详解iptables 是 Linux 系统内核级防火墙工具&#xff0c;用于配置、维护和检查 IPv4 数据包过滤规则&#xff08;IPv6 使用 ip6tables&#xff09;。以下是核心用法&#xff1a;一、基本概念表&#xff08;Tables&#xff09;filter&#xff1a;默认表&#xff0…

【springboot 技术代码】集成mongodb 详细步骤

SpringBoot 深度集成 MongoDB 详细步骤1. MongoDB 简介与 SpringBoot 集成概述1.1 SpringBoot 集成 MongoDB 的优势2. 环境准备与依赖配置2.1 版本兼容性矩阵2.2 详细依赖配置2.3 详细配置说明2.3.1 单节点配置2.3.2 集群配置3. 实体映射与集合管理3.1 详细实体类注解3.2 索引管…

云计算-K8s 运维:Python SDK 操作 Job/Deployment/Pod+RBAC 权限配置及自定义 Pod 调度器实战

简介 在 Kubernetes 运维中,自动化资源管理与定制化调度是提升效率的核心需求,而 Python SDK 是实现这一目标的关键工具。本次围绕 K8s Python SDK 展开全场景实战,以 “代码 + 效果” 双维度,覆盖 5 大核心运维场景,Job 自动化创建(先清理重名资源再部署计算任务)、De…

Excel 转化成JSON

Excel 转化成JSON import pandas as pd import json import osdef excel_to_json(excel_path, sheet_name0, orientrecords, save_pathNone):"""将Excel文件转换为JSON格式并可选择保存到文件参数:excel_path: Excel文件路径sheet_name: 工作表名称或索引&#…

Linux 进阶用法

一、系统性能调优系统性能调优是 Linux 管理中的关键技能&#xff0c;它能显著提升系统在不同应用场景下的表现。通过针对性的调优&#xff0c;可以解决资源瓶颈问题&#xff0c;提高服务响应速度&#xff0c;优化资源利用率。&#xff08;一&#xff09;CPU 性能调优知识点详解…

14.苹果ios逆向-app的调试方式

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1bb8NhJc9eTuLzQr39lF55Q?pwdzy89 提取码&#xff1…

深入理解 React useEffect

一、useEffect基础概念 1、什么是副作用&#xff08;Side Effects&#xff09;&#xff1f; 在React中&#xff0c;副作用是指那些与组件渲染结果无关的操作&#xff0c;例如&#xff1a; 数据获取&#xff08;API调用&#xff09;手动修改DOM设置订阅或定时器记录日志 2、useE…

Yapi中通过MongoDB修改管理员密码与新增管理员

如何在Docker部署的Yapi中通过MongoDB修改管理员密码与新增管理员便捷管理Yapi权限&#xff1a;无需前端重置&#xff0c;直接通过数据库操作修改密码及添加管理员一、进入MongoDB容器并连接数据库 首先&#xff0c;通过以下命令进入运行中的MongoDB容器&#xff1a; docker ex…

【EasyR1】GRPO训练

官方github&#xff1a;https://github.com/hiyouga/EasyR1 参考&#xff1a;https://opendeep.wiki/hiyouga/EasyR1/quickstart 代码和环境配置 github&#xff1a;https://github.com/hiyouga/EasyR1 新建一个虚拟环境&#xff1a; python -m venv easyr1 source easyr1/b…

2025年KBS SCI1区TOP,新颖奖励与ε-贪婪衰减Q-learning算法+局部移动机器人路径规划,深度解析+性能实测

目录1.摘要2.新颖奖励与ε-贪婪衰减Q-learning算法3.结果展示4.参考文献5.代码获取6.算法辅导应用定制读者交流1.摘要 路径规划是移动机器人的核心任务&#xff0c;需要在高效导航的同时规避障碍。本文提出了一种改进Q-learning算法——定制化奖励与ε-贪婪衰减Q-learning&…

运行npm run命令报错“error:0308010C:digital envelope routines::unsupported”

下载的前后端分离架构的开源项目&#xff0c;运行“npm run serve”命令启动前端服务时报错“error:0308010C:digital envelope routines::unsupported”&#xff0c;这个错误通常是由于Node.js版本与项目依赖不兼容导致的&#xff0c;特别是在Node.js v17版本中&#xff0c;百…

AI计算提效关键。自适应弹性加速,基于存算架构做浮点运算

一、自适应弹性加速是提升芯片能效比的有力手段自适应弹性加速技术是现代芯片设计中提升能效比的关键路径之一。它摒弃了传统芯片在设计时采用的静态、固化的资源分配与功能设定模式&#xff0c;通过引入动态调整机制&#xff0c;使得芯片能够根据实时的应用需求和负载变化&…

Spring Boot测试陷阱:失败测试为何“传染”其他用例?

一个测试失败&#xff0c;为何“传染”其他测试&#xff1f;——Spring Boot 单元测试独立性与泛型陷阱实战解析 &#x1f6a9; 问题背景 在日常开发中&#xff0c;我们常会遇到这样的场景&#xff1a; 正在开发新功能 A&#xff0c;写了一个 testFeatureA() 测试方法&#xff…

Web开发中的CGI:通用网关接口详解

一、CGI的设计意图&#xff1a;解决Web的"静态"困境 在CGI出现之前&#xff0c;Web服务器只能做一件事&#xff1a;返回预先写好的静态文件&#xff08;HTML、图片等&#xff09;。每个用户看到的内容都是一模一样的。 设计意图很简单但却革命性&#xff1a; 让Web服…

在 SSMS 中查找和打开已保存的查询文件

在 SSMS 中查找和打开已保存的查询文件 在 SQL Server Management Studio (SSMS) 中&#xff0c;您可以轻松地查找并打开已保存的查询文件&#xff08;通常以 .sql 扩展名保存&#xff09;。SSMS 提供了直观的界面支持直接打开这些文件&#xff0c;无需额外工具。以下是详细步骤…

Protues使用说明及Protues与Keil联合仿真实现点亮小灯和流水灯

目录 1Protues介绍及新建工程 1.1进入软件 1.2文件创建 1.3默认选项 1.5设计面板 1.6添加元器件 1.7终端模式 1.8激励源模式 1.9探针模式 1.10仪表 1.11二维直线 1.12字符 2 Protues电路原理图仿真 2.1 220V交流电转5V直流电稳压电路仿真原理图 2.1.1 仿真原理图…