Java常用API详解
本文将系统讲解Java开发中高频使用的工具类API,涵盖数学计算、系统操作、对象处理和大数运算等场景。ps:本文是免费的,如果被csdn锁了,请联系我.如果需要查看更详细的说明,可以查阅javaAPI帮助文档.我本来想直接把API文档整合到文章中方便大家下载,结果csdn这货直接给锁了,真是
目录
一、Math类:数学工具集
作用:提供基础数学运算的静态方法
特点
常用方法
使用示例
特别说明
二、System类:系统级操作
作用:访问系统资源与控制程序行为
特点
常用方法
使用示例
特别说明
三、Runtime类:运行时环境
作用:与JVM运行时交互
构造实例
常用方法
使用示例
特别说明
四、Object类:所有类的超类
作用:定义对象基础行为
常用方法
使用示例
特别说明
五、Objects工具类:对象操作增强
作用:空安全的对象操作工具
特点
常用方法
使用示例
特别说明
六、BigInteger:超大整数运算
作用:处理超过long范围的整数
构造方法
常用方法
使用示例
特点说明
七、BigDecimal:高精度浮点运算
作用:解决double精度丢失问题
构造方法
常用方法
使用示例
特别说明
一、Math类:数学工具集
作用:提供基础数学运算的静态方法
特点
- 无构造方法(私有化构造,禁止实例化)
- 所有方法均为
static
调用
常用方法
方法签名 | 作用说明 |
---|---|
public static int abs(int a) | 获取参数绝对值 |
public static double ceil(double a) | 向上取整(返回≥参数的最小整数) |
public static double floor(double a) | 向下取整(返回≤参数的最大整数) |
public static int round(float a) | 四舍五入取整 |
public static int max(int a, int b) | 获取两个int值的较大值 |
public static double pow(double a, double b) | 计算a的b次幂 |
public static double random() | 生成[0.0,1.0)随机值 |
使用示例
1. 绝对值计算
// 方法签名
public static int abs(int a)// 使用示例
int result = Math.abs(-15);
System.out.println(result); // 输出: 15double dResult = Math.abs(-3.14);
System.out.println(dResult); // 输出: 3.14
2. 向上取整
// 方法签名
public static double ceil(double a)// 使用示例
double val1 = Math.ceil(3.2);
System.out.println(val1); // 输出: 4.0double val2 = Math.ceil(-2.7);
System.out.println(val2); // 输出: -2.0
3. 向下取整
// 方法签名
public static double floor(double a)// 使用示例
double val1 = Math.floor(3.8);
System.out.println(val1); // 输出: 3.0double val2 = Math.floor(-2.3);
System.out.println(val2); // 输出: -3.0
4. 四舍五入
// 方法签名
public static int round(float a)// 使用示例
int r1 = Math.round(3.5f);
System.out.println(r1); // 输出: 4int r2 = Math.round(-2.4f);
System.out.println(r2); // 输出: -2
5. 最大值比较
// 方法签名
public static int max(int a, int b)// 使用示例
int maxVal = Math.max(25, 30);
System.out.println(maxVal); // 输出: 30double dMax = Math.max(3.14, 2.71);
System.out.println(dMax); // 输出: 3.14
6. 幂运算
// 方法签名
public static double pow(double a, double b)// 使用示例
double power = Math.pow(2, 5);
System.out.println(power); // 输出: 32.0double root = Math.pow(27, 1.0/3);
System.out.println(root); // 输出: 3.0
7. 随机数生成
// 方法签名
public static double random()// 使用示例
double rand = Math.random();
System.out.println(rand); // 输出: 如0.7312// 生成1-100随机整数
int dice = (int)(Math.random()*100) + 1;
System.out.println(dice); // 输出: 如57
特别说明
- 所有方法均为静态方法,直接通过
Math.方法名()
调用 ceil()
对负数处理时:Math.ceil(-2.7)→-2.0
round()
对.5
小数统一向上取整:3.5→4
,-3.5→-3
random()
实际使用建议结合范围计算:
// 生成10-99随机数
int num = (int)(Math.random()*90) + 10;
二、System类:系统级操作
作用:访问系统资源与控制程序行为
特点
- 无构造方法(私有化构造,禁止实例化)
- 所有方法均为
static
调用
常用方法
方法签名 | 作用说明 |
---|---|
public static void exit(int status) | 终止JVM运行 |
public static long currentTimeMillis() | 获取当前时间戳(毫秒值) |
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) | 数组拷贝 |
使用示例
1. 终止虚拟机
// 方法签名
public static void exit(int status)// 使用示例
System.out.println("程序开始执行");
System.exit(0); // 0表示正常退出
System.out.println("这行代码不会执行"); // 非零状态码表示异常终止
System.exit(1);
2. 获取时间戳
// 方法签名
public static long currentTimeMillis()// 使用示例
// 计算代码执行时间
long start = System.currentTimeMillis();// 模拟耗时操作
for(int i=0; i<100000; i++){}long end = System.currentTimeMillis();
System.out.println("耗时:" + (end - start) + "ms");// 生成唯一时间戳
String timestamp = String.valueOf(System.currentTimeMillis());
3. 数组拷贝
// 方法签名
public static void arraycopy(Object src, // 源数组int srcPos, // 源数组起始位置Object dest, // 目标数组int destPos, // 目标数组起始位置int length // 拷贝元素个数
)// 使用示例
int[] srcArr = {1,2,3,4,5};
int[] destArr = new int[5];// 拷贝前3个元素到目标数组
System.arraycopy(srcArr, 0, destArr, 0, 3);
System.out.println(Arrays.toString(destArr));
// 输出: [1, 2, 3, 0, 0]// 部分覆盖拷贝
System.arraycopy(srcArr, 2, destArr, 1, 2);
System.out.println(Arrays.toString(destArr));
// 输出: [1, 3, 4, 0, 0]
特别说明
exit方法状态码
- 0:正常终止
- 非0:异常终止(可自定义错误类型)
arraycopy注意事项
// 需保证目标数组容量充足
int[] smallArr = new int[2];
// 以下代码会抛出ArrayIndexOutOfBoundsException
System.arraycopy(srcArr, 0, smallArr, 0, 3);
时间戳精度
currentTimeMillis()
精度为毫秒级,
如需更高精度使用System.nanoTime()
三、Runtime类:运行时环境
作用:与JVM运行时交互
构造实例
// 唯一合法的实例获取方式
Runtime runtime = Runtime.getRuntime();
常用方法
方法签名 | 核心作用 | 返回值说明 |
---|---|---|
availableProcessors() | 获取CPU可用线程数 | int(如8核16线程返回16) |
maxMemory() | JVM最大可申请内存总量 | long(单位:字节) |
totalMemory() | JVM当前已分配内存大小 | long(单位:字节) |
freeMemory() | JVM剩余可用内存量 | long(单位:字节) |
exec(String command) | 执行操作系统命令 | Process进程对象 |
exit(int status) | 终止JVM运行 | void(0=正常终止) |
使用示例
1. 获取系统资源信息
// 获取CPU线程数
int processors = runtime.availableProcessors();
System.out.println("CPU线程数: " + processors); // 如输出: CPU线程数: 16// 内存换算为MB
long maxMem = runtime.maxMemory() / 1024 / 1024;
long totalMem = runtime.totalMemory() / 1024 / 1024;
long freeMem = runtime.freeMemory() / 1024 / 1024;System.out.println(String.format("最大内存: %dMB 已分配: %dMB 剩余内存: %dMB",maxMem, totalMem, freeMem
));
// 输出示例: 最大内存: 3641MB 已分配: 245MB 剩余内存: 234MB
2. 执行系统命令
// 启动记事本程序(Windows系统)
Process process = runtime.exec("notepad.exe");// 等待进程结束(最多等10秒)
boolean exitStatus = process.waitFor(10, TimeUnit.SECONDS);
System.out.println("程序是否正常退出: " + exitStatus);
3. 强制终止JVM
// 保存重要数据逻辑
saveCriticalData();// 立即终止程序(状态码0表示正常)
runtime.exit(0); // 后续代码不会执行
System.out.println("此消息不会显示");
特别说明
内存单位换算
建议将byte转换为MB提升可读性:
long memoryMB = runtime.maxMemory() / (1024 * 1024);
exec()方法安全风险
// 禁止执行用户输入的命令(存在注入风险)
String userInput = "rm -rf /"; // 恶意命令示例
runtime.exec(userInput); // 将导致灾难性后果
跨平台命令差异
// Linux/Mac执行命令
Process lsProcess = runtime.exec("ls -l"); // Windows执行命令
Process dirProcess = runtime.exec("cmd /c dir");
异常处理规范
try {Process p = runtime.exec("invalid_command");
} catch (IOException e) {System.err.println("命令执行失败: " + e.getMessage());
}
ps:有意思的是System中的exit方法调用的就是Runtime中的exit方法
四、Object类:所有类的超类
作用:定义对象基础行为
java.lang.Object
类位于金字塔的最顶端,它是所有Java类的终极父类
在Java中,并非所有Object
类的方法都需要重写。是否需要重写取决于具体需求
常用方法
方法签名 | 图示说明 | 标准实现说明 |
---|---|---|
public String toString() | 返回对象的字符串表示形式 | ✅ 默认返回类名@哈希值,建议重写 |
public boolean equals(Object obj) | 比较两个对象是否相等 | ✅ 默认比较内存地址,需重写逻辑 |
protected Object clone() | 对象克隆(图示参数错误) | ✅ 无参数,需实现Cloneable接口 |
使用示例
toString()
作用:定义对象的字符串描述
正确实现:
@Override
public String toString() {return "User{name='" + name + "', age=" + age + "}";
}
调用示例:
User user = new User("Alice", 25);
System.out.println(user);
// 输出: User{name='Alice', age=25}
equals()
作用:自定义对象等价性判断
正确实现:
@Override
public boolean equals(Object o) {// 1. 地址相同直接返回trueif (this == o) return true;// 2. 类型检查if (o == null || getClass() != o.getClass()) return false;// 3. 字段比较User user = (User) o;return age == user.age && Objects.equals(name, user.name);
}
配套重写hashCode():
@Override
public int hashCode() {return Objects.hash(name, age);
}
clone()
作用:创建对象的副本
正确实现步骤:
- 实现
Cloneable
接口(标记接口) - 重写
clone
方法
public class User implements Cloneable {@Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();}
}
使用示例:
User original = new User("Bob", 30);
User copy = (User) original.clone();
特别说明
深拷贝与浅拷贝
默认clone()
为浅拷贝,需手动实现深拷贝:
@Override
protected Object clone() throws CloneNotSupportedException {User cloned = (User) super.clone();cloned.details = this.details.clone(); // 引用类型字段单独处理return cloned;
}
equals()与hashCode()必须同步重写
确保在HashMap/HashSet等集合中正常工作
慎用clone()
推荐使用拷贝构造器或工厂方法代替
关于标记接口,是一种不包含任何方法的特殊接口,它通过类型信息向JVM或框架传递特定语义。这种设计模式的核心作用是通过类型检查而非方法调用来实现功能控制。比如Cloneable接口,是一个空接口,没有实现任何方法,仅作为类型标识,告知JVM允许对象克隆,不强制实现任何方法,但会改变Object.clone()的行为,通俗点说只有实现了这个接口,当前类的对象才会被允许克隆
关于浅克隆和深克隆,
浅克隆:
仅复制对象本身及基本类型字段,引用类型字段共享原对象地址。修改克隆对象的引用字段会影响原对象,适用于简单对象或不可变对象组合。深克隆:
递归复制对象及其所有引用对象,创建完全独立的副本。克隆对象与原对象完全隔离,适用于复杂对象或需要数据隔离的场景通俗点说就是浅克隆是不管你是基本数据类型还是引用数据类型直接一股脑全拷贝过来,而深克隆是基本数据类型拷贝,字符串复用,引用数据类型就直接创建新的
五、Objects工具类:对象操作增强
作用:空安全的对象操作工具
特点
- 无构造方法(私有化构造,禁止实例化)
- 所有方法均为
static
调用
常用方法
方法签名 | 图示说明 | 正确实现说明 |
---|---|---|
public static boolean equals(Object a, Object b) | 空安全对象比较(图示参数错误) | ✅ 实际为两个参数,空指针安全 |
public static boolean isNull(Object obj) | null值判断 | ✅ 等价于obj == null |
public static boolean nonNull(Object obj) | 非null判断 | ✅ 等价于obj != null |
使用示例
空安全对象比较
作用:避免空指针异常的等价性判断
示例:
String str1 = null;
String str2 = "hello";// 传统equals会抛出NullPointerException
// boolean unsafe = str1.equals(str2); // 安全比较方式
boolean safeCompare = Objects.equals(str1, str2);
System.out.println(safeCompare); // 输出: false
null判断
// 方法实现源码
public static boolean isNull(Object obj) {return obj == null;
}// 使用场景:验证无效参数
public void process(Object param) {if (Objects.isNull(param)) {throw new IllegalArgumentException("参数不能为null");}// ...业务逻辑
}
非null判断
// 方法实现源码
public static boolean nonNull(Object obj) {return obj != null;
}// 使用场景:流式过滤
List<String> list = Arrays.asList("a", null, "c");
List<String> validList = list.stream().filter(Objects::nonNull).collect(Collectors.toList());
// 结果: ["a", "c"]
特别说明
优先使用Objects.equals
替代传统a.equals(b)
,避免空指针异常:
// 传统危险写法
if (user.getName().equals("admin")) {...}// 安全写法
if (Objects.equals(user.getName(), "admin")) {...}
参数校验组合技
// 同时验证null和空字符串
if (Objects.isNull(input) || input.isEmpty()) {throw new IllegalArgumentException("非法输入");
}
Lambda表达式配合
// 过滤null值集合
List<Object> data = Arrays.asList("a", null, 123);
data.removeIf(Objects::isNull); // 结果: ["a", 123]
六、BigInteger:超大整数运算
作用:处理超过long范围的整数
构造方法
方法签名 | 作用说明 | 使用场景 |
---|---|---|
new BigInteger(String val) | 十进制字符串构造 | 处理超过Long范围的大数 |
new BigInteger(String val, int radix) | 指定进制字符串构造 | 二进制/十六进制数据转换 |
BigInteger.valueOf(long val) | long类型转换构造 | 处理常规整数 |
实例化代码示例
字符串构造
// 处理10^30级别大数
BigInteger big1 = new BigInteger("123456789012345678901234567890");// 二进制数据转换(radix=2)
BigInteger binary = new BigInteger("1100001101010000111111010011000", 2);
System.out.println(binary); // 输出十进制值:1048575999992// 十六进制构造(radix=16)
BigInteger hex = new BigInteger("1a3f", 16);
System.out.println(hex); // 输出十进制值:6719
数值转换构造
// long类型安全转换
BigInteger num = BigInteger.valueOf(999999999L);// 注意:valueOf不能超过Long范围
// BigInteger error = BigInteger.valueOf(9223372036854775808L); // 越界报错
常用方法
方法签名 | 说明 | 注意事项 |
---|---|---|
public BigInteger add(BigInteger val) | 加法运算 | 返回新对象,原值不变 |
public BigInteger subtract(BigInteger val) | 减法运算 | 被减数需大于减数否则结果为负 |
public BigInteger multiply(BigInteger val) | 乘法运算 | 支持任意位数的整数相乘 |
public BigInteger divide(BigInteger val) | 除法获取商 | 除数为零会抛出ArithmeticException |
public BigInteger[] divideAndRemainder(BigInteger val) | 同时获取商和余数 | 返回长度为2的数组(商,余数) |
public boolean equals(Object x) | 比较数值相等性 | 类型不同直接返回false |
public BigInteger pow(int exponent) | 幂运算 | 指数必须为非负数 |
public BigInteger max/min(BigInteger val) | 比较返回较大/较小值 | 空参数会抛NullPointerException |
public int intValue() | 转换为int类型 | 超出int范围会产生数据错误 |
使用示例
基础四则运算
BigInteger a = new BigInteger("1000000000000");
BigInteger b = new BigInteger("999999999999");// 加法
BigInteger sum = a.add(b); // → 1999999999999// 减法
BigInteger diff = a.subtract(b); // → 1// 乘法
BigInteger product = a.multiply(new BigInteger("2")); // → 2000000000000// 除法
BigInteger quotient = a.divide(new BigInteger("3")); // → 333333333333
商余运算
BigInteger num = new BigInteger("100");
BigInteger divisor = new BigInteger("7");BigInteger[] result = num.divideAndRemainder(divisor);
System.out.println("商:" + result[0] + " 余数:" + result[1]);
// 输出:商:14 余数:2
幂运算
BigInteger base = new BigInteger("5");
BigInteger power = base.pow(20);
// → 95367431640625
极值比较
BigInteger x = new BigInteger("123456");
BigInteger y = new BigInteger("654321");BigInteger maxVal = x.max(y); // → 654321
BigInteger minVal = x.min(y); // → 123456
类型转换
BigInteger hugeNum = new BigInteger("2147483648"); // 超过int最大值int unsafe = hugeNum.intValue(); // → -2147483648(溢出错误)
int safe = hugeNum.min(BigInteger.valueOf(Integer.MAX_VALUE)).intValue(); // → 2147483647
数值比较
BigInteger num1 = new BigInteger("100");
BigInteger num2 = new BigInteger("100");boolean eq1 = num1.equals(num2); // → true
boolean eq2 = num1.equals("100"); // → false(类型不同)
特点说明
不可变性原则
所有运算都返回新对象,原对象不变:
BigInteger origin = new BigInteger("10");
origin.add(new BigInteger("5")); // origin仍然为10
安全转换策略
数值转换前进行范围检查:
if(bigNum.compareTo(BigInteger.valueOf(Integer.MAX_VALUE)) > 0) {throw new ArithmeticException("超出int范围");
}
精确计算替代方案
替代浮点运算实现精确计算:
// 计算(10^15 + 5)/3
BigInteger result = new BigInteger("1000000000000005").divide(new BigInteger("3")); // → 333333333333335
七、BigDecimal:高精度浮点运算
作用:解决double精度丢失问题
构造方法
方法签名 | 作用说明 | 使用场景 | 注意事项 |
---|---|---|---|
new BigDecimal(String val) | 字符串构造(推荐方式) | 精确表示小数 | 禁止使用非数字字符 |
new BigDecimal(double val) | 双精度浮点数构造(不推荐) | 快速转换已有double值 | 存在精度丢失风险 |
BigDecimal.valueOf(double val) | 工厂方法构造 | 替代new BigDecimal(double) | 部分数值有缓存优化 |
new BigDecimal(int val) | 整数构造 | 处理整型数据 | 等价于valueOf(int) |
new BigDecimal(long val) | 长整型构造 | 处理大整数 | 超过Long范围需用字符串构造 |
具体使用示例
字符串构造
// 精确表示0.1(推荐)
BigDecimal d1 = new BigDecimal("0.1"); // 科学计数法支持
BigDecimal d2 = new BigDecimal("2.5e3"); // → 2500// 错误示例(包含非数字字符)
BigDecimal error = new BigDecimal("12a.34"); // 抛出NumberFormatException
数值构造
// int构造(适用于整数)
BigDecimal intVal = new BigDecimal(100); // long构造(最大支持到Long.MAX_VALUE)
BigDecimal longVal = new BigDecimal(9223372036854775807L);// 超过Long范围必须用字符串
BigDecimal hugeNum = new BigDecimal("9223372036854775808"); // → 比Long.MAX大1
double相关构造
// 危险方式(精度丢失)
BigDecimal bad = new BigDecimal(0.1);
System.out.println(bad); // → 0.100000000000000005551115...// 改进方式(仍不推荐)
BigDecimal better = BigDecimal.valueOf(0.1);
System.out.println(better); // → 0.1(内部使用Double.toString转换)// 最佳实践:所有double转换都先用字符串包装
double temp = 0.1;
BigDecimal best = new BigDecimal(Double.toString(temp));
常用方法
方法签名 | 作用说明 | 参数说明 |
---|---|---|
public static BigDecimal valueOf(double val) | 双精度浮点数转BigDecimal | 存在精度损失风险,推荐字符串构造 |
public BigDecimal add(BigDecimal val) | 精确加法 | 返回新对象,原值不变 |
public BigDecimal subtract(BigDecimal val) | 精确减法 | 被减数需大于减数可返回负值 |
public BigDecimal multiply(BigDecimal val) | 精确乘法 | 支持任意位数计算 |
public BigDecimal divide(BigDecimal val) | 基础除法(需指定舍入模式) | 可能抛出ArithmeticException |
public BigDecimal divide(BigDecimal val, int scale, RoundingMode mode) | 安全除法 | scale指定小数位数,mode定义舍入规则 |
使用示例
四则运算
BigDecimal a = new BigDecimal("10.5");
BigDecimal b = new BigDecimal("3");// 加法
BigDecimal sum = a.add(b); // → 13.5// 减法(修正图示中的matrix错误)
BigDecimal diff = a.subtract(b); // → 7.5// 乘法
BigDecimal product = a.multiply(new BigDecimal("2.5")); // → 26.25
安全除法
// 基础除法(无限小数会报错)
// BigDecimal error = new BigDecimal("10").divide(new BigDecimal("3")); // 抛出ArithmeticException// 正确做法:指定精度和舍入模式
BigDecimal quotient = new BigDecimal("10").divide(new BigDecimal("3"), 4, // 保留4位小数RoundingMode.HALF_UP // 四舍五入
); // → 3.3333
特别说明
构造方法选择
优先使用字符串构造:
// 错误示例(精度丢失)
BigDecimal bad = new BigDecimal(0.1); // 实际值≠0.1// 正确示例
BigDecimal good = new BigDecimal("0.1");
舍入模式必选
所有除法操作必须指定舍入模式:
// 正确做法(商业计算常用银行家舍入法)
BigDecimal result = a.divide(b, 2, RoundingMode.HALF_EVEN);
不可变性原则
所有运算返回新对象:
BigDecimal origin = new BigDecimal("100");
origin.add(new BigDecimal("50")); // origin仍为100
BigDecimal newVal = origin.add(new BigDecimal("50")); // → 150
等值比较规范
使用compareTo()
代替equals()
:
BigDecimal x = new BigDecimal("2.0");
BigDecimal y = new BigDecimal("2.00");x.equals(y); // → false(精度不同)
x.compareTo(y); // → 0(数值相等)
相关文章:
Java常用API详解
本文将系统讲解Java开发中高频使用的工具类API,涵盖数学计算、系统操作、对象处理和大数运算等场景。ps:本文是免费的,如果被csdn锁了,请联系我.如果需要查看更详细的说明,可以查阅javaAPI帮助文档.我本来想直接把API文档整合到文章中方便大家下载,结果csdn这货直接…...
jdk-8u202-linux-x64.tar.gz官方下载地址
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html 点击下载,需要先注册oracle账号,很好注册随便写,注册完登录就可以下载了。目前就Oracle JDK 8u201/202 是最后两个可免费用于商业用途的公开版本...
内联函数(c++)
预处理:优点:内嵌到目标代码,减少函数的调用。 缺点:在预处理阶段完成替换,避免了语义上的差错。 egg: #define SQR(X) ((X)*(X)) 函数:优点:完成了某一类操作的抽象,…...
Python 基础语法与数据类型(四) - 布尔类型 (bool) 与逻辑运算符 (and, or, not) 和类型转换
文章目录 布尔类型 (bool)逻辑运算符 (and, or, not)布尔值的“真值”判断 (Truthiness / Falsiness)类型转换 (Type Casting)总结 在前面的文章中,我们学习了数字类型(整型、浮点型)和字符串。今天,我们要介绍另一种非常基础且极…...
WebUI可视化:第7章:系统优化与部署实战
第7章:系统优化与部署实战 学习目标 ✅ 掌握Web应用的性能优化技巧 ✅ 实现安全可靠的线上部署 ✅ 配置监控与日志系统 ✅ 了解云服务成本控制方法 7.1 性能优化策略 7.1.1 前端优化 python # 示例:Gradio异步处理 demo.queue(concurrency_count=5) # 控制并发数 de…...
79. 单词搜索
题目 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或…...
Spring @Transactional 自调用问题深度解析
Spring Transactional 自调用问题深度解析 问题本质:自调用事务失效 当类内部的方法A调用同一个类的另一个带有Transactional注解的方法B时,事务注解不会生效。这是因为Spring的事务管理是基于AOP代理实现的,而自调用会绕过代理机制。 原理…...
支付宝小程序组件与页面构造器使用指南:从页面到组件的正确迁移
引言 在支付宝小程序开发中,我们经常会遇到需要将页面组件化的情况。本文将通过一个实际案例(将 /pages/plugin/device 从页面迁移到组件),深入分析支付宝小程序中页面和组件的区别,以及正确的迁移方式。我们将从问题…...
version `GLIBCXX_3.4.32‘ not found 解决方法
环境:Ubuntu 24.04 报错:ImportError: /home/ge/opt/anaconda3/envs/roboTwin/bin/../lib/libstdc.so.6: version GLIBCXX_3.4.32 not found (required by /home/ge/Desktop/RoboTwin/third_party/pytorch3d_simplified/pytorch3d/_C.cpython-310-x86_6…...
vue3中nextTick的作用及示例
在Vue 3中,nextTick是一个用于处理DOM异步更新的工具函数,确保在数据变化后操作最新的DOM。以下是其作用的详细解析: 核心作用 延迟回调到DOM更新后:Vue的响应式系统会将数据变更批量处理,异步更新DOM。nextTick允许你…...
WHAT - 《成为技术领导者》思考题(第一章)
文章目录 思考题思路与示例框架1. 观察一位你心目中的领导者2. 若要提升自己的领导技能,你期望哪些方面得到提高?3. 如果领导技能提高,哪些生活层面可能恶化?值得吗?如何缓解?4. 列“提升他人生产效率” vs…...
今日行情明日机会——20250425
指数依然在震荡,等待方向选择,整体量能不搞但个股红多绿少。 2025年4月25日涨停板行业方向分析如下: 一、核心行业方向及驱动逻辑 一季报增长(17家涨停) 核心个股:惠而浦、鸿博股份、卫星化学驱动逻辑&am…...
数据库-子查询、关联查询 和 TCL 语言
标题目录 子查询使用场景子查询分类在 DQL 中使用子查询单行单列子查询多行单列子查询 在 DML 中使用子查询在 DDL 中使用子查询视图 关联查询关联关系的分类连接条件主外键关联N 表关联查询关联查询中使用聚合函数 TCL 语言事务的特性(ACID)在事务中控制…...
精华贴分享|【牛马课题】可转债多策略研究-1【基础篇】
本文来源于量化小论坛策略分享会板块精华帖,作者为Mc,发布于2025年3月19日。 以下为精华帖正文: 01 背景 本次牛马主题是可转债的多策略研究。在第一次牛马线上会议讨论时,我曾表达对今年转债市场的看好。 原因在于:…...
精读27页健康医疗大数据安全管控分类分级实施指南
这篇文档是一份关于健康医疗大数据安全管控分类分级实施指南的文档。该指南的主要内容包括数据分类、数据分级、数据开放形式、数据对外开放分级管控、数据模糊化与标签化、数据对外开放典型场景、数据内部分级安全管控和IS&ITS管理手册等内容。 具体来说,该指南…...
Spring MVC 数据绑定利器:深入理解 @InitBinder
在使用 Spring MVC 开发 Web 应用时,我们经常需要处理从 HTTP 请求(如 URL 参数、表单数据)到 Controller 方法参数的自动转换。这就是 Spring 的数据绑定 (Data Binding) 机制。虽然 Spring 提供了很多默认的类型转换器(比如字符…...
【HTTP/2:信息高速公路的革命】
HTTP/2:信息高速公路的革命 想象一下,如果说HTTP/1.1是一条繁忙的双向马路,那么HTTP/2就是一座现代化的高速公路网络系统,彻底改变了数据传输的方式。让我们通过生动的比喻和图表,深入了解这场网络通信的革命。 HTTP…...
PMIC PCA9450 硬件原理全解析:为 i.MX 8M 平台供电的“大脑”
在嵌入式 Linux 系统中,电源设计是构建稳定系统的基础。PCA9450 是 NXP 推出的一款高度集成的 电源管理芯片(PMIC),专为 i.MX 8M 系列处理器设计。它不仅提供多路电压输出,还具备可编程启动顺序、动态电压调节、低功耗…...
【计算机视觉】CV实战项目 - 深入解析基于HOG+SVM的行人检测系统:Pedestrian Detection
深入解析基于HOGSVM的行人检测系统:从理论到实践 技术核心:HOGSVM检测框架HOG特征原理SVM分类器 项目架构与数据准备INRIA Person数据集目录结构 实战指南:从零构建检测系统环境配置完整训练流程检测应用 关键技术问题与解决方案1. 难例挖掘不…...
巴西kwai短视频推广旅游广告获客营销策略
巴西kwai短视频平台作为一种新兴的推广渠道,可以为旅游广告带来新的营销机遇。以下是一些针对利用kwai短视频平台推广旅游广告的获客营销策略: 制作吸引人的内容:在kwai平台上发布具有吸引力的短视频内容,包括美丽的风景、当地文化…...
智慧医疗领域TMI期刊2025年3月研究热点解析
本推文对2025年3月《IEEE Transactions on Medical Imaging》(TMI)期刊论文的研究热点进行了深入分析。本期TMI涵盖了多模态图像融合、深度学习在医学诊断中的应用、三维重建与分割、图像引导治疗等关键方向,呈现出智慧医疗与人工智能深度融合…...
系统思考:看清问题背后的结构
组织的挑战,往往不是因为不努力,而是“看不清” 结束了为期两天系统思考课程的第一天,被学员的全情投入深深打动。我们用系统结构图,一步步揭示那些表面看起来“习以为常”的问题: 什么原因跨部门协作总是磕磕绊绊&am…...
计算机组成原理实验(1) 算术逻辑运算单元实验
实验一 算术逻辑运算单元实验 一、实验目的 1、掌握简单运算器的数据传输方式 2、掌握74LS181的功能和应用 二、实验内容 1、不带进位位逻辑或运算实验 2、不带进位位加法运算实验 3、实验指导书2.15实验思考 三、实验步骤和结果 实验内容一:不带进位…...
网络安全概述:定义、重要性与发展历程
网络安全概述:定义、重要性与发展历程 在互联网深度融入生活与工作的今天,网络安全已成为不可忽视的关键领域。从个人隐私泄露到企业数据失窃,再到国家关键基础设施遭受攻击,网络安全事件频发,深刻影响着个人、组织乃…...
应力腐蚀环功能及指标
西安力创(LETRY)应力腐蚀环广泛应用于高品质材料的生产检测和研究中。在H2S 作用下准确运用应力环测试可获取石油勘探,航天航空,焊接密封,海运船舶,食品加工等各类材料在各种酸,碱腐蚀环境的腐蚀…...
【多目标进化算法】常见多目标进化算法一览
算法全称核心特点备注NSGA-IINon-dominated Sorting Genetic Algorithm II非支配排序 拥挤度最经典,应用最广NSGA-IIINon-dominated Sorting Genetic Algorithm III支撑向量引导,适合高维(3目标以上)NSGA-II 的高维扩展版MOEA/DM…...
【2025 最新前沿 MCP 教程 01】模型上下文协议:AI 领域的 USB-C
文章目录 1. MCP 来了2. 什么是 MCP?为何它是颠覆性创新?M N 问题:解开 AI 集成乱麻 3. 采用 MCP 的核心优势:普适性价值MCP 与传统 API 集成的对比概览 4. 未来的路 1. MCP 来了 没想到,2025 年的每一天都在上演 「…...
抖音集团电商流量实时数仓建设实践
摘要:本文整理自抖音集团电商数据工程师姚遥老师在 Flink Forward Asia 2024 分论坛中的分享。内容主要分为五个部分: 1、业务和挑战 2、电商流量建模架构 3、电商流量流批一体 4、大流量任务调优 5、总结和展望 01.业务和挑战 第一部分给大家介绍一下流…...
redis客户端库redis++在嵌入式Linux下的交叉编译及使用
在开发过程中,我们经常会遇到需要在嵌入式Linux系统上与Redis进行交互的需求。因此选择一个适合的Redis客户端库就显得尤为重要。下面介绍下c中有名的redis-plus-plus(redis)三方库在嵌入式linux下的交叉编译及使用。该库底层是基于hiredis的…...
5.3 Dify:低代码平台,适用于企业快速部署合规AI应用
Dify作为一款开源低代码平台,已成为企业快速构建和部署合规AI应用的首选工具。Dify通过整合后端即服务(Backend-as-a-Service, BaaS)、大型语言模型操作(LLMOps)以及直观的视觉化界面,显著降低了AI应用开发…...
什么是可重入锁ReentrantLock?
大家好,我是锋哥。今天分享关于【什么是可重入锁ReentrantLock?】面试题。希望对大家有帮助; 什么是可重入锁ReentrantLock? ReentrantLock 是 Java 中的一个锁实现,它是 java.util.concurrent.locks 包中的一部分,主要用于提供…...
【Java学习日记26】:方法的重载
一、方法重载核心概念 方法重载(Overload):指在同一个类中定义多个同名方法,但这些方法的参数列表必须不同。重载的目的是让同一功能的方法能处理不同类型或数量的参数,提高代码复用性。 二、判断是否构成重载的规则 …...
分层设计数据仓库的架构和设计高效数据库系统的方法
结合你所有的知识和技术,设计一套高效的数据仓库的分层架构说明每一层分层的用途以及为什么要这么设计,有什么优势?再从数据建模和其它的角度详细论述如何设计出一个高性能的数据仓库系统? 高效数据仓库分层架构设计 分层架构及…...
铃木一郎女儿是奥运会选手吗·棒球1号位
铃木一朗(Ichiro Suzuki) 铃木一朗职业生涯时间线 1973年出生于日本爱知县名古屋市。1992年以选秀第四顺位加入日本职棒(NPB)欧力士蓝浪队,开启职业棒球生涯。 1994-2000年 连续7年获得NPB太平洋联盟打击王ÿ…...
ORB-SLAM3核心模块、数据结构和线程交互方面解析
ORB-SLAM3作为当前最先进的视觉SLAM系统之一,其代码架构设计体现了高度模块化和多线程协同的特点。以下结合代码实现和系统原理,从核心模块、数据结构和线程交互三个维度展开详细解析: 一、核心架构模块 1. 线程划分 ORB-SLAM3采用多线程架构,主要包含以下核心线程: Tra…...
小刚说C语言刷题——1565成绩(score)
1.题目描述 牛牛最近学习了 C 入门课程,这门课程的总成绩计算方法是: 总成绩作业成绩 20% 小测成绩 30% 期末考试成绩 50%。 牛牛想知道,这门课程自己最终能得到多少分。 输入 三个非负整数 A、B、C ,分别表示牛牛的作业成…...
查找函数【C++】
二分查找函数 lower_bound(起始地址, 末尾地址, target):查找第一个大于等于target目标值的位置 upper_bound(起始地址, 末尾地址, target):查找第一个大于target目标值的位置 binary_search(起始地址, 末尾地址, target):查找target是否存在…...
利用车联网中的 V2V 通信技术传播公平的紧急信息
与移动自组织网络 (MANET) 相比,车载自组织网络 (VANET) 的节点移动速度更快。网络连接的节点可以在自身内部或其他基础设施之间交换安全或非安全消息,例如车对车 (V2V) 或车对万物 (V2X)。在车载通信中,紧急消息对于安全至关重要,必须分发给所有节点,以提醒它们注意潜在问…...
Semantic Kernel也能充当MCP Client
背景 笔者之前,分别写过两篇关于Semantic Kernel(下简称SK)相关的博客,最近模型上下文协议(下称MCP)大火,实际上了解过SK的小伙伴,一看到 MCP的一些具体呈现,会发现&…...
assertEquals()
assertEquals() 是 JUnit 框架中用于进行断言操作的一个非常常用的方法,其主要目的是验证两个值是否相等。如果两个值不相等,测试就会失败,JUnit 会给出相应的错误信息,提示开发者测试未通过。下面为你详细介绍: 方法…...
【ESP32S3】 下载时遇到 libusb_open() failed 解决方案
之前写过一篇 《VSCode 开发环境搭建》 的文章,很多小伙伴反馈说在下载固件或者配置的时候会报错,提示大多是 libusb_open() failed ...... : 这其实是由于 USB 驱动不正确导致的,准确来说应该是与 ESP-IDF 中内置的 OpenOCD 需要…...
【Pandas】pandas DataFrame rsub
Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象(如 DataFrame、Series 或标量)的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...
[C]基础13.深入理解指针(5)
博客主页:向不悔本篇专栏:[C]您的支持,是我的创作动力。 文章目录 0、总结1、sizeof和strlen的对比1.1 sizeof1.2 strlen1.3 sizeof和strlen的对比 2、数组和指针笔试题解析2.1 一维数组2.2 字符数组2.2.1 代码12.2.2 代码22.2.3 代码32.2.4 …...
巧记英语四级单词 Unit5-上【晓艳老师版】
count 数, counter n.计算器,柜台 a.相反的 数数的东西就是计算器,在哪数,在柜台里面数;你和售货员的关系就是相反的(一个买货,一个卖货account n.账户,账号 一再的数accountant n.会计 一再的…...
Linux系统中命令设定临时IP
1.查看ip ---ifconfig 进入指定的网络接口 ifconfig ens160 建立服务器临时IP ifconfig ens160 ip地址 network 系统进行重启后,临时IP将会消失 ip address add ip地址 dev 服务器 ---添加临时ip ip address delete ip地址 dev 服务器 ---删除临时ip 设置ip&a…...
13.ArkUI Navigation的介绍和使用
ArkUI Navigation 组件介绍与使用指南 什么是 Navigation 组件? Navigation 是 ArkUI 中的导航组件,用于管理页面间的导航和路由。它提供了页面栈管理、导航栏定制、页面切换动画等功能,是构建多页面应用的核心组件。 Navigation 的核心概…...
MYSQL 常用数值函数 和 条件函数 详解
一、数值函数 1、ROUND(num, decimals) 四舍五入到指定小数位。 SELECT ROUND(3.1415, 2); -- 输出 3.142、ABS(num) 取绝对值 SELECT ABS(-10); -- 输出 103、CEIL(num) / FLOOR(num) 向上/向下取整 SELECT CEIL(3.2), FLOOR(3.7); -- 输出 4 和 34、MOD(num1, num2) 取…...
CuML + Cudf (RAPIDS) 加速python数据分析脚本
如果有人在用Nvidia RAPIDS加速pandas和sklearn等库,请看我这个小示例,可以节省你大量时间。 1. 创建环境 请使用uv,而非conda/mamba。 # install uv if not yetcurl -LsSf https://astral.sh/uv/install.sh | shuv init data_gpucd data_g…...
c#操作excel表格
c#操作excel表格有很多方法,本文介绍的是基于Interop.Excel方式。该方式并不是winform操作excel的最好方法,本文介绍该方法主要是为一些仍有需求的小伙伴。建议有兴趣的小伙伴可以看一下miniexcel,该方法更简洁高效。 一、首先需要下载inter…...
【uniapp】vue2 搜索文字高亮显示
【uniapp】vue2 搜索文字高亮显示 我这里是把方法放在公共组件中使用 props: {// 帖子listpostList: {type: Array,required: true},// 搜索文本字体高亮highLightSearch: {type: String,required: false} }, watch: {// 监听 props 的变化postList: {immediate: true,handle…...