【day16】Java开发常用API

模块15回顾

在深入探讨模块16之前,让我们回顾一下【day15】中的重点内容:

  1. String类

    • 构造方法:String(), String(String s), String(char[] chars), String(byte[] bytes), String(char[] chars, int offset, int count), String(byte[] chars, int offset, int count)
    • 判断方法:equals, equalsIgnoreCase
    • 获取方法:length(), concat(String s), charAt(int index), indexOf(String s), substring(开始索引), substring(开始索引, 结束索引)
    • 转换方法:toCharArray(), getBytes(), getBytes(String charsetName), replace(c1, c2)
    • 分割方法:split(String regex)
    • 其他方法:contains(String s), endsWith(String s), startsWith(String s), toLowerCase(), toUpperCase(), trim()
  2. StringBuilder类

    • append(任意类型数据):字符串拼接。
    • reverse():字符串反转。
    • toString():将StringBuilder转换为String。

模块十六重点

本模块将重点介绍以下几个常用的Java API:

  1. BigInteger和BigDecimal操作
  2. Date和SimpleDateFormat的操作
  3. System中的常用方法,主要是数组复制。
  4. Arrays中的常用方法
  5. 利用包装类定义一个标准的JavaBean
  6. 包装类和String之间的转换

第一章:Math类

1. Math类介绍

Math类是一个数学工具类,主要用于数学运算,其特点如下:

  • 构造方法私有,不能实例化。
  • 方法都是静态的,可以直接通过类名调用。

2.Math类方法

以下是Math类的一些常用方法:

  • static int abs(int a):求参数的绝对值。
  • static double ceil(double a):向上取整。
  • static double floor(double a):向下取整。
  • static long round(double a):四舍五入。
  • static int max(int a, int b):求两个数之间的较大值。
  • static int min(int a, int b):求两个数之间的较小值。
public class Demo01Math {public static void main(String[] args) {System.out.println(Math.abs(-10));System.out.println(Math.ceil(3.6));System.out.println(Math.floor(3.6));System.out.println(Math.round(3.6));System.out.println(Math.round(-2.8));System.out.println(Math.max(10, 20));System.out.println(Math.min(10, 20));}
}

第二章:BigInteger

1.BigInteger介绍

BigInteger类用于处理超出long范围的超大整数。以下是其构造方法和常用操作:

  • BigInteger(String val):参数必须是数字形式的字符串。
  • BigInteger add(BigInteger val):返回两数之和。
  • BigInteger subtract(BigInteger val):返回两数之差。
  • BigInteger multiply(BigInteger val):返回两数之积。
  • BigInteger divide(BigInteger val):返回两数之商。
public class Demo02BigInteger {public static void main(String[] args) {BigInteger b1 = new BigInteger("121212121212121212121212121212121212121");BigInteger b2 = new BigInteger("121212121212121212121212121212121212121");System.out.println(b1.add(b2));System.out.println(b1.subtract(b2));System.out.println(b1.multiply(b2));System.out.println(b1.divide(b2));}
}

第三章:BigDecimal类

1.BigDecimal介绍

BigDecimal类用于解决floatdouble运算中的精度损失问题。以下是其构造方法和常用操作:

  • BigDecimal(String val):参数必须是数字形式的字符串。
  • static BigDecimal valueOf(double val):初始化小数时可以传入double型数据。
  • BigDecimal add(BigDecimal val):返回两数之和。
  • BigDecimal subtract(BigDecimal val):返回两数之差。
  • BigDecimal multiply(BigDecimal val):返回两数之积。
  • BigDecimal divide(BigDecimal val):返回两数之商。
  • BigDecimal divide(BigDecimal divisor, int scale, int roundingMode):指定保留小数位数和取舍方式的除法。
public class Demo03BigDecimal {public static void main(String[] args) {BigDecimal b1 = new BigDecimal("3.55");BigDecimal b2 = new BigDecimal("2.12");BigDecimal divide = b1.divide(b2, 2, BigDecimal.ROUND_UP);System.out.println("divide = " + divide);double v = divide.doubleValue();System.out.println("v = " + v);}
}

第四章:Date日期类

1.Date类的介绍

Date类用于表示特定的瞬间,精确到毫秒。以下是其构造方法和常用方法:

  • Date():获取当前系统时间。
  • Date(long time):获取指定时间,传递毫秒值。
private static void date01() {Date date1 = new Date();System.out.println("date1 = " + date1);Date date2 = new Date(1000L);System.out.println("date2 = " + date2);
}

第五章:Calendar日历类

1.Calendar介绍

Calendar是一个抽象类,用于操作日历相关的操作。以下是其常用方法:

  • static Calendar getInstance():获取Calendar实例。
  • int get(int field):返回给定日历字段的值。
  • void set(int field, int value):将给定的日历字段设置为指定的值。
  • void add(int field, int amount):根据日历的规则,为给定的日历字段添加或减去指定的时间量。
  • Date getTime():将Calendar转换为Date对象。
private static void calendar02() {Calendar calendar = Calendar.getInstance();int year = calendar.get(Calendar.YEAR);System.out.println("year = " + year);calendar.add(Calendar.YEAR, -1);System.out.println(calendar.get(Calendar.YEAR));Date date = calendar.getTime();System.out.println("date = " + date);
}

需求: 键盘录入一个年份,判断这一年是闰年,还是平年

  1. 创建Calendar对象
  2. 创建Scanner对象,键盘录入一个年份
  3. 调用set方法,传递年,月,日,set(年,2,1) -> 国外是0-11,所以设置成2月就是代表3月
  4. 将day减1天(3月1日减1天,就是2月最后一天,知道2月最后一天了,就知道是平年还是闰年了)
  5. 获取day判断平年还是闰年,输出结果
private static void calendar03() {//1.创建Calendar对象Calendar calendar = Calendar.getInstance();//2.创建Scanner对象,键盘录入一个年份Scanner sc = new Scanner(System.in);int year = sc.nextInt();//3.调用set方法,传递年,月,日//set(年,2,1) -> 国外是0-11,所以设置成2月就是代表3月calendar.set(year,2,1);//4.将day减1天(3月1日减1天,就是2月最后一天,知道2月最后一天了,就知道是平年还是闰年了)calendar.add(Calendar.DATE,-1);int day = calendar.get(Calendar.DATE);//5.获取day判断平年还是闰年,输出结果if (day==29){System.out.println("闰年");}else{System.out.println("平年");}}

第六章:SimpleDateFormat日期格式化类

1.SimpleDateFormat介绍

SimpleDateFormat类用于格式化和解析日期。以下是其构造方法和常用方法:

  • SimpleDateFormat(String pattern):指定日期格式。
  • String format(Date date):将Date对象按照指定的格式转换为字符串。
  • Date parse(String source):将符合日期格式的字符串转换为Date对象。
时间字母表示说明
y
M
d
H
m
s
public class Demo03SimpleDateFormat {public static void main(String[] args) throws ParseException {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String time1 = sdf.format(new Date()); // 将Date对象按照指定的格式转成StringSystem.out.println("time1 = " + time1);String time2 = "2000-10-10 10:10:10";Date date = sdf.parse(time2); // 将符合日期格式的字符串转成Date对象System.out.println("date = " + date);}
}

第七章:JDK8新日期类

1.LocalDate本地日期

LocalDate是一个不可变的日期时间对象,表示日期,通常被视为年月日。以下是其常用方法:

  • static LocalDate now():创建LocalDate对象。
  • static LocalDate of(int year, int month, int dayOfMonth):创建LocalDate对象,设置年月日。
public class Demo04LocalDate {public static void main(String[] args) {LocalDate localDate = LocalDate.now();System.out.println("localDate = " + localDate);// //static LocalDate of(int year, int month, int dayOfMonth)  -> 创建LocalDate对象,设置年月日LocalDate localDate1 = LocalDate.of(2000, 10, 10);System.out.println("localDate1 = " + localDate1);}
}

1.2.LocalDateTime对象

LocalDateTime是一个不可变的日期时间对象,代表日期时间,通常被视为年-月-日-时-分-秒。以下是其常用方法:

  • static LocalDateTime now():创建LocalDateTime对象。
  • static LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second):创建LocalDateTime对象,设置年月日时分秒。
public class Demo05LocalDateTime {public static void main(String[] args) {LocalDateTimelocalDateTime = LocalDateTime.now();System.out.println("localDateTime = " + localDateTime);// //static LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second) 创建LocalDateTime对象,设置年月日时分秒LocalDateTime localDateTime1 = LocalDateTime.of(2000, 10, 10, 10, 10, 10);System.out.println("localDateTime1 = " + localDateTime1);}
}

1.3.获取日期字段的方法

以下是获取日期字段的常用方法:

  • int getYear():获取年份。
  • int getMonthValue():获取月份。
  • int getDayOfMonth():获取月中的第几天。
private static void get() {LocalDate localDate = LocalDate.now();// //int getYear()->获取年份System.out.println(localDate.getYear());// //int getMonthValue()->获取月份System.out.println(localDate.getMonthValue());//int getDayOfMonth()->获取月中的第几天System.out.println(localDate.getDayOfMonth());
}

1.4.设置日期字段的方法

以下是设置日期字段的常用方法:名字是with开头

  • LocalDate withYear(int year):设置年份。
  • LocalDate withMonth(int month):设置月份。
  • LocalDate withDayOfMonth(int day):设置月中的天数。
    private static void with() {LocalDate localDate = LocalDate.now();//LocalDate withYear(int year):设置年份//LocalDate localDate1 = localDate.withYear(2000);//System.out.println(localDate1);//LocalDate withMonth(int month):设置月份//LocalDate localDate2 = localDate1.withMonth(10);//System.out.println("localDate2 = " + localDate2);//LocalDate withDayOfMonth(int day):设置月中的天数//LocalDate localDate3 = localDate2.withDayOfMonth(10);//System.out.println("localDate3 = " + localDate3);LocalDate localDate1 = localDate.withYear(2000).withMonth(10).withDayOfMonth(10);System.out.println("localDate1 = " + localDate1);}

1.5.日期字段偏移

以下是日期字段偏移的常用方法:

  • plus开头的方法:向后偏移。
  • minus开头的方法:向前偏移。
    /*向后偏移 -> plus开头方法向前偏移 -> minus开头方法*/private static void plusAndMinus() {LocalDate localDate = LocalDate.now();// LocalDate localDate1 = localDate.plusYears(1L);// System.out.println("localDate1 = " + localDate1);LocalDate localDate1 = localDate.minusYears(1L);System.out.println("localDate1 = " + localDate1);}

2.Period和Duration类

2.1 Period计算日期之间的偏差

以下是Period类的常用方法:

  • static Period between(LocalDate d1, LocalDate d2):计算两个日期之间的差值。
  • getYears():获取相差的年。
  • getMonths():获取相差的月。
  • getDays():获取相差的天。
private static void period() {LocalDate local1 = LocalDate.of(2022, 12, 12);LocalDate local2 = LocalDate.of(2021, 11, 11);Period period = Period.between(local2, local1);System.out.println(period.getYears());System.out.println(period.getMonths());System.out.println(period.getDays());
}
2.2 Duration计算时间之间的偏差

以下是Duration类的常用方法:

  • static Duration between(Temporal startInclusive, Temporal endExclusive):计算时间差。
  • toDays():获取相差天数。
  • toHours():获取相差小时。
  • toMinutes():获取相差分钟。
  • toMillis():获取相差秒(毫秒)。

参数需要传递 Temporal 的实现类对象, 注意要传递LocalDateTime,因为Duration计算精确时间偏差,所以需要传递能操作精确时间的 LocalDateTime

private static void duration() {LocalDateTime local1 = LocalDateTime.of(2022, 12, 12, 12, 12, 12);LocalDateTime local2 = LocalDateTime.of(2021, 11, 11, 11, 11, 11);Duration duration = Duration.between(local2, local1);System.out.println(duration.toDays());System.out.println(duration.toHours());System.out.println(duration.toMinutes());System.out.println(duration.toMillis());
}

如果计算年月日,就用Period

如果计算时分秒,就用Duration

3.DateTimeFormatter日期格式化类

DateTimeFormatter类用于格式化和解析日期。以下是其常用方法:

  • static DateTimeFormatter ofPattern(String pattern):获取DateTimeFormatter对象,指定格式。
  • String format(TemporalAccessor temporal):将日期对象按照指定的规则转换为字符串。
  • TemporalAccessor parse(CharSequence text):将符合规则的字符串转换为日期对象。
private static void parse() {DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");String time = "2000-10-10 10:10:10";TemporalAccessor temporalAccessor = dtf.parse(time);LocalDateTime localDateTime = LocalDateTime.from(temporalAccessor);System.out.println("localDateTime = " + localDateTime);
}

第八章:System类

System类是一个系统相关工具类,其特点如下:

  • 构造方法私有,不能实例化。
  • 方法都是静态的,可以直接通过类名调用。

以下是System类的常用方法:

  • static long currentTimeMillis():返回以毫秒为单位的当前时间,可用于测量效率。
  • static void exit(int status):终止当前正在运行的Java虚拟机。
  • static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):数组复制。
方法说明
static long currentTimeMillis()返回以毫秒为单位的当前时间,可以测效率
static void exit(int status)终止当前正在运行的 Java 虚拟机
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length数组复制
src:源数组
srcPos:从源数组的哪个索引开始复制
dest:目标数组
ldestPos:从目标数组哪个索引开始粘贴
length:复制多少个元素
public class Demo01System {public static void main(String[] args) {arraycopy();}private static void arraycopy() {int[] arr1 = {1, 2, 3, 4, 5};int[] arr2 = new int[10];System.arraycopy(arr1, 0, arr2, 0, 5);for (int i = 0; i < arr2.length; i++) {System.out.print(arr2[i] + " ");}}
}

第九章:Arrays数组工具类

Arrays类是一个数组工具类,其特点如下:

  • 构造方法私有,不能实例化。
  • 方法都是静态的,可以直接通过类名调用。

以下是Arrays类的常用方法:

  • static String toString(int[] a):按照格式打印数组元素。
  • static void sort(int[] a):升序排序。
  • static int binarySearch(int[] a, int key):二分查找(前提是升序)。
  • static int[] copyOf(int[] original, int newLength):数组扩容。
方法说明
static String toString(int[] a)按照格式打印数组元素
[元素1, 元素2, …]
static void sort(int[] a)升序排序
static int binarySearch(int[] a, int key)二分查找(前提是升序)
static int[] copyOf(int[] original, int newLength)数组扩容
public class Demo02Arrays {public static void main(String[] args) {int[] arr = {5, 3, 4, 6, 5, 4, 7};System.out.println(Arrays.toString(arr));Arrays.sort(arr);System.out.println(Arrays.toString(arr));int[] arr1 = {1, 2, 3, 4, 5, 6, 7};int index = Arrays.binarySearch(arr1, 3);System.out.println("index = " + index);int[] arr2 = {1, 2, 3, 4, 5};int[] newArr = Arrays.copyOf(arr2, 10);System.out.println(Arrays.toString(newArr));}
}

在这里插入图片描述

第十章:包装类

1.基本数据类型对应的引用数据类型(包装类)

包装类是基本数据类型对应的类,它们使得基本数据类型具有类的特性。以下是基本数据类型与其对应的包装类:

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

2.Integer的介绍及使用

2.1.Integer基本使用

Integerint的包装类,以下是其构造方法和基本使用:

  • Integer(int value):不推荐使用,但仍然可用。
  • Integer(String s)s必须是数字形式的字符串。
public class Demo01Integer {public static void main(String[] args) {Integer i1 = new Integer(10);System.out.println("i1 = " + i1);Integer i2 = new Integer("10");System.out.println("i2 = " + i2);}
}
2.2.自动拆箱装箱

Integer类提供了自动拆箱和装箱的功能,使得基本类型和Integer之间的转换更加方便。

public class Demo04Integer {public static void main(String[] args) {Integer i = 10; // 发生了自动装箱Integer sum = i + 10; // 发生了自动拆箱装箱System.out.println("sum = " + sum);}
}

在这里插入图片描述

public class Demo05Integer {public static void main(String[] args) {Integer i1 = 100;Integer i2 = 100;System.out.println(i1==i2);Integer i3 = 128;Integer i4 = 128;System.out.println(i3==i4);}
}

在这里插入图片描述
在这里插入图片描述

3.基本类型和String之间的转换

3.1 基本类型往String转

以下是将基本类型转换为String的常用方法:

  1. 使用+拼接。
  2. 使用String中的静态方法valueOf
private static void method01() {int i = 10;String s1 = i + "";System.out.println(s1 + 1);System.out.println("============");String s = String.valueOf(10);System.out.println(s + 1);
}
3.2 String转成基本数据类型

以下是将String转换为基本数据类型的常用方法:

每个包装类中都有一个类似的方法:parseXXX

位置方法说明
Bytestatic byte parseByte(String s)将String转byte类型
Shortstatic short parseShort(String s)将String转成short类型
Integerstatic int parseInt(String s)将String转成int类型
Longstatic long parseLong(String s)将String转成long类型
Floatstatic float parseFloat(String s)将String转成float类型
Doublestatic double parseDouble(String s)将String转成double类型
Booleanstatic boolean parseBoolean(String s)将String转成boolean类型
private static void method02() {int number = Integer.parseInt("1111");System.out.println(number + 1);
}

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

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

相关文章

申请腾讯混元的API Key并且使用LobeChat调用混元AI

申请腾讯混元的API Key并且使用LobeChat调用混元AI 之前星哥写了一篇文章《手把手教拥有你自己的大模型ChatGPT和Gemini等应用-开源lobe-chat》搭建的开源项目&#xff0c;今天这篇文章教大家如何添加腾讯云的混元模型&#xff0c;并且使用LobeChat调用腾讯混元AI。 申请腾讯混…

3D几何建模引擎Parasolid功能解析

一、什么是Parasolid&#xff1f; Parasolid是由Siemens PLM Software开发的高精度精密几何建模引擎。它全面评估CAD&#xff08;计算机辅助设计&#xff09;、CAM&#xff08;计算机辅助制造&#xff09;、CAE&#xff08;计算机辅助工程&#xff09;、PLM&#xff08;产品生…

QT开发【常用控件1】-Layouts Spacers

在 Qt 中&#xff0c;布局&#xff08;Layouts&#xff09;和间距&#xff08;Spacers&#xff09;是创建用户界面的关键组成部分。它们帮助开发者在窗口或对话框中组织和排列控件&#xff0c;以实现灵活和美观的界面设计。 1. 布局&#xff08;Layouts&#xff09; 布局是 Q…

flink sink doris

接上文&#xff1a;一文说清flink从编码到部署上线 网上关于flink sink drois的例子较多&#xff0c;大部分不太全面&#xff0c;故本文详细说明&#xff0c;且提供完整代码。 flink doris版本对照表 1.添加依赖 <!--doris cdc--><!-- 参考&#xff1a;"https…

【EthIf-14】EthIfGeneral容器配置-02

1.实际EthIfGeneral的配置实例 关闭DET接口开启发送确认中断开启接收中断主周期接收timeout主周期 2. 代码实例参考 阅读此部分代码,搞清楚代码分为几个section,大概瞄一眼就好,不用深究其含义,只需有一个宏观的层次结构的映像即可。 //Appl/GenData/EthIf_Cfg.h #

修炼内功之函数栈帧的创建与销毁

修炼内功之函数栈帧的创建与销毁 一 前置知识&#xff08;1&#xff09;栈&#xff08;2&#xff09;相关寄存器和汇编指令 二 函数栈帧三 代码演示函数栈帧的创建&#xff08;1&#xff09;代码演示&#xff08;2&#xff09;函数栈帧逐帧分析 四 对开篇问题的解答 相信来CSDN…

QT用Enigmavb 打包成单独exe

QT用这个工具打包成单个exe&#xff0c;然后再用winrar打包成zip可以发给别人 在之前需要用QT的release打包 之前的文章QTrelease打包【非单个exe】 Enigmavb 打包流程&#xff1a; 安装过程&#xff1a; next-》i accept -》选择安装位置 -》next -》Create a desktop ic…

图的最短路径(C++实现图【4】)

目录 1. 最短路径 1.1单源最短路径--Dijkstra算法 代码实现 1.2 单源最短路径--Bellman-Ford算法 代码实现 1.3 多源最短路径--Floyd-Warshall算法 代码实现 1. 最短路径 最短路径问题&#xff1a;从在带权有向图G中的某一顶点出发&#xff0c;找出一条通往另一顶点的最短路径&…

udp tcp协议

文章目录 1. UDP协议1.1 端口号1.2 UDP协议格式1.3 UDP特性1.4 报文的封装 2. TCP协议2.1 TCP协议格式2.2 TCP策略2.2.1 确认应答机制(ACK)序号与确认序号6个标志位序号的理解 2.2.2 超时重传机制2.2.3 连接管理机制三次握手四次挥手理解三次握手理解四次挥手 2.2.4 流量控制2.…

提高保养效率:4S店预约系统的设计与开发

3.1可行性分析 开发者在进行开发系统之前&#xff0c;都需要进行可行性分析&#xff0c;保证该系统能够被成功开发出来。 3.1.1技术可行性 开发该4S店预约保养系统所采用的技术是vue和MYSQL数据库。计算机专业的学生在学校期间已经比较系统的学习了很多编程方面的知识&#xff…

支付域——支付路由设计

摘要 本文深入探讨了支付路由系统的背景、核心作用、设计原则以及业界常见形态。文章详细解析了支付方式咨询、渠道咨询和渠道路由的概念&#xff0c;并介绍了支付路由的规则种类、交易参数、通道属性和常见筛选规则。进一步讨论了基于规则的渠道路由设计、自动化开关的渠道路…

leetcode 面试经典 150 题:螺旋矩阵

链接螺旋矩阵题序号54题型二维数组&#xff08;矩阵&#xff09;解题方法模拟路径法难度中等熟练度✅✅✅ 题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3…

保护模式基本概念

CPU 架构 RISC&#xff08;Reduced Instruction Set Computer&#xff09; 中文即"精简指令集计算机”。RISC构架的指令格式和长度通常是固定的&#xff08;如ARM是32位的指令&#xff09;、且指令和寻址方式少而简单、大多数指令在一个周期内就可以执行完毕 CISC&…

突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除

GitLab停止为中国大陆、香港和澳门地区提供服务&#xff0c;要求用户在60天内迁移账号&#xff0c;否则将被删除。这一事件即将引起广泛的关注和讨论。以下是对该事件的扩展信息&#xff1a; 1. 背景介绍&#xff1a;GitLab是一家全球知名的软件开发平台&#xff0c;提供代码托…

git Force Push失败:unable to access解决方案

git Force Push失败&#xff1a;unable to access 项目场景&#xff1a;问题描述原因分析&#xff1a;解决方案&#xff1a;1、访问github远程仓库&#xff0c;更新推送规则1、打开代码库&#xff0c;点击settings2、在settings中下翻&#xff0c;在Danger Zone中将点击Disable…

工业相机镜头选型知识详解

工业相机在机器视觉、自动化生产和检测等领域扮演着重要角色&#xff0c;而镜头作为工业相机的关键组件&#xff0c;其选型直接影响到成像效果和系统的整体性能。在本篇博客中&#xff0c;我们将详细讲解工业相机镜头选型的相关知识&#xff0c;帮助您在实际应用中选择最合适的…

安装CPU版的torch(清华源)

1、安装指令&#xff1a; pip3 install torch torchvision torchaudio -i https://pypi.tuna.tsinghua.edu.cn/simple2、验证torch是否安装成功 // 使用python验证 import torch print(torch.__version__)能正常打印版本即表示安装成功&#xff0c;如下图

‘pnpm’ 不是内部或外部命令,也不是可运行的程序或批处理文件。

‘pnpm’ 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。 1.情况: npm -v 和 node -v的都正常就是 pnpm-v 无效 检查环境变量也没看出问题 2.分析 没有正确添加环境变量 3.解决 找到npm的全局安装目录 npm list -g --depth 0这里出现了npm的全局安装…

Java 日志类库

Java 日志库是最能体现 Java 库在进化中的渊源关系的&#xff0c;在理解时重点理解日志框架本身和日志门面&#xff0c;以及比较好的时间等。要关注其历史渊源和设计&#xff08;比如桥接&#xff09;&#xff0c;而具体在使用时查询接口即可&#xff0c;否则会陷入 JUL&#x…

聚类之轮廓系数

Silhouette Score&#xff08;轮廓系数&#xff09;是用于评估聚类质量的指标之一。它衡量了数据点与同簇内其他点的相似度以及与最近簇的相似度之间的对比。 公式 对于一个数据点 i&#xff1a; a(i): 数据点 i 到同簇内其他点的平均距离&#xff08;簇内不相似度&#xff…