常用API(三)
对于常见API的学习,主要学习了关于时间和日期的传统和新增APi
目录
1.Math
2.System
3.Runtime
4.日期和时间
(1)JDK8前传统时间API
[1] Date
[2] SimpledateFormat
[3]Calendar
(2)JDK8后新增时间API
[1]代替Calendar
[2]代替Date
[3]代替SimpleDateFormat
[4]其他补充
5.Arrays
6.*Lambda 表达式
7.方法引用(略)
1.Math
代表数学,一个工具类,提供一些对数据操作的静态方法
常用方法
方法名 | 说明 |
public static int abs(int a) | 获取参数绝对值 |
poublic 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() | 返回值为double的随机值,范围为[0.0.,1.0] |
package API_2;public class Text {public static void main(String[] args) {//目标:了解Math类的常见方法//1.public static int abs(int a) 获取参数绝对值(返回一定是正数)System.out.println(Math.abs(-12));System.out.println(Math.abs(-3.14));//2.public static double ceil(double a) 向上取整System.out.println(Math.ceil(4.00001));System.out.println(Math.ceil(4.0));//3.public static double floor(double a) 向下取整System.out.println(Math.floor(4.99999));//4.public static int round(float a) 四舍五入System.out.println(Math.round(3.4999));//5.public static int max(int a,int b) 获取两个int值中的较大值// public static int min(int a,int b)System.out.println(Math.max(10, 20));System.out.println(Math.min(10, 20));//6.public static double pow(double a,double b) 返回a 的b次幂的值System.out.println(Math.pow(2, 3));//7.public static double random() 返回值为double的随机值,范围为[0.0.,1.0]System.out.println(Math.random());}
}
2.System
代表系统所在的系统,也是一个工具类
常见方法
方法名 | 说明 |
public static void exit(int status) | 终止当前运行的java虚拟机 |
public static long currentTimeMillis() | 返回当前系统的时间毫秒形式 |
package API_2;public class Text1 {public static void main(String[] args) {//目标:了解System类的常见方法//1.public static void exit(int status) 终止当前运行的java虚拟机//该参数作用状态;按照惯例,非零状态码表示异常终止//System.exit(0); //一般不必使用System.out.println("---------");//2.public static long currentTimeMillis() 返回当前系统的时间毫秒形式long time = System.currentTimeMillis();//测试程序执行时间for (int i = 0; i < 1000000; i++) {System.out.println("输出了"+i);}long time1 = System.currentTimeMillis();System.out.println("运行时间:"+(time1-time)/1000.0+"S");}
}
3.Runtime
代表程序的运行环境,是一个单例类
package API_2;import java.io.IOException;public class Text2 {public static void main(String[] args) throws IOException, InterruptedException {//目标“了解Runtime的用法//1.返回与当前java应用程序关联的运行时对象Runtime r = Runtime.getRuntime();//2.终止当前运行的的虚拟机 exit() 终止异常//3.public int availableProcessors;获取虚拟机能够使用的处理器数System.out.println(r.availableProcessors());//4.public long totalMemory() 返回java虚拟机中的可用内存System.out.println(r.totalMemory() /1024.0/1024.0+"MB");//5.public long freeMemory()返回java虚拟机中的可用内存System.out.println(r.freeMemory()/1024.0/1024.0+"MB");//6.public Process exec(String command)启动某个程序 并返回代表该程序的对象// r.exec("C:\\Users\\22935\\AppData\\Local\\Programs\\Xmind\\Xmind.exe");Process p = r.exec("QQ");Thread.sleep(5000);p.destroy();}
}
4.BigDecimal
用于解决浮点型运算时,出现结果失真的问题
运算失真:
常用构造器
构造器 | 说明 |
public BigDecimal (double val)不推荐使用 | 将double转换为BigEecimal |
public BigDecimal (String val) | 将String转换为BigDecimal |
常用方法
方法名 | 说明 |
public static BigDecimal valueof(double val) | 转换一个double成BigDecimal |
public BigDecima add(BigDecima b) | 加法 |
public BigDecima subtract (BigDecima b) | 减法 |
public BigDecima multiply (BigDecima b) | 乘法 |
public BigDecima divde (BigDecima b) | 除法 |
public BigDecima divide (BigDecima b )(另一个BigDecimal对象,精确几位,舍入模式) | 除法 可以控制到小数点后几位 |
public double doubleValue() | 将BigDecimal转换为double |
package API_2;import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;public class Text3 {public static void main(String[] args) {double a= 0.1;double b= 0.2;double c= a+b;System.out.println(c);//1.把他变成字符串封装成BigDecimal的对象来运算//BigDecimal a1 = new BigDecimal(Double.toString(a));//BigDecimal b1 = new BigDecimal(Double.toString(b));//推荐以下方式 把小数转换为BigDecimal对象来使用BigDecimal a1 = BigDecimal.valueOf(a);BigDecimal b1 = BigDecimal.valueOf(b);BigDecimal c1 = a1.add(b1); //加法//BigDecimal c1 = a1.subtract(b1); //减法//BigDecimal c1 = a1.multiply(b1); //乘法//BigDecimal c1 = a1.divide(b1); //除法System.out.println(c1);BigDecimal i = BigDecimal.valueOf(0.1);BigDecimal j = BigDecimal.valueOf(0.3);BigDecimal k = i.divide(j,2, RoundingMode.HALF_UP);k.doubleValue(); //转换为double返回System.out.println(k);}
}
4.日期和时间
(1)JDK8前传统时间API
[1] Date
代表的是时间和日期
常用构造器
构造器 | 说明 |
public Date() | 创建一个Date对象,代表的是系统当前此刻日期时间 |
public Date(long time) | 把时间毫秒值转换为Date日期对象 |
常用方法
常见方法 | 说明 |
public long getTime() | 返回从1970年1月1日 00:00:00走到此刻的总毫秒数 |
public void setTime(long time) | 设置日期对象的时间为当前时间毫秒值对应的时间 |
package API_2;import java.util.Date;public class Time {public static void main(String[] args) {//目标:掌握Date日期类的使用//1.创建一个Date的对象,代表系统当前时间信息的Date d = new Date();System.out.println(d);//2.拿到时间毫秒值long time = d.getTime();//3.时间毫秒值转换为日期对象 2S后的时间是多久time += 2000;Date d2 = new Date(time);System.out.println(d2);//4.直接把日期对象的时间通过setTime方法进行修改Date d3 = new Date();d3.setTime(time);System.out.println(d3);}
}
[2] SimpledateFormat
简单日期格式化,可以用来把日期对象,时间毫秒值格式化成我们想要的形式
常见构造器
常见构造器 | 说明 |
public SimpleDateFormat(String patterrn) | 创建简单日期格式化对象,并封装时间等待格式 |
常用方法
格式化时间的方法 | 说明 |
public final String format (Date date) | 将日期格式化成日期/时间字符串 |
public final String format(Object time) | 将时间毫秒值化成日期/时间字符串 |
public Date parse(String source) | 把字符串解析成日期对象 |
package API_2;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class Time1 {public static void main(String[] args) throws ParseException {//目标:掌握SimpletDateFormat//1.准备时间Date d = new Date();System.out.println(d);long time = d.getTime();System.out.println(time);//2.格式化日期对象和时间毫秒值SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE a"); //年 月 日 时 分 秒 星期几 上下午String t = sdf.format(time);System.out.println(t);//3.SimpDateFormat解析字符串成为日期对象String dateStr = "2023-04-17 17:23:00";//1.创建简单日期格式化对象,指定的时间格式必须与被解析的时间格式一模一样,否则程序会出bugSimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");Date d2 = sdf2.parse(dateStr);System.out.println(d2);}
}
[3]Calendar
(抽象类)代表的是系统此刻对应的日历,通过它可以单独获取,修改时间中的年月日时分秒等。
常用方法
方法名 | 说明 |
public static Calendar getInstance() | 获取当前日历对象 |
public int get(int field) | 获取日历中的某个信息 |
public final Date getTime() | 获取日期对象 |
public long getTimeInMillis() | 获取时间毫秒值 |
public void set(int field,int value) | 修改日历的某个信息 |
public void add(int field,int amount) | 为某个信息增加/减少指定的值 |
package API_2;import java.util.Calendar;
import java.util.Date;public class Time3 {public static void main(String[] args) {//目标:掌握Calendar的使用和特点//1.得到系统此刻时间对应的日历对象Calendar now = Calendar.getInstance();System.out.println(now);//2.获取日历中的某个信息int year = now.get(Calendar.YEAR);System.out.println(year);//通过字段信息获取信息//3.拿到日历中记录的日期对象Date d = now.getTime();System.out.println(d);//4。拿到时间对象的时间毫秒值long time = now.getTimeInMillis();System.out.println(time);//5.修改日历中的某个信息now.set(Calendar.MONTH,4);//月份是从0开始System.out.println(now);//6.为某个信息增加或者减少多少now.add(Calendar.DAY_OF_YEAR,100);now.add(Calendar.DAY_OF_YEAR,-100);}
}
(2)JDK8后新增时间API
传统时间API的不足
- 设计不合理,使用不合理,很多都淘汰了
- 都是可变对象,修改后会丢失最开始的时间信息
- 线程不安全
- 只能精确到毫秒
[1]代替Calendar
LocalDate: 代表本地日期(年月日,星期)
LocalTime:代表本地时间(时分秒,纳秒)
LocalDateTime:代表本地日期,时间(年月日,星期,时,分,秒)
方法名 | 示例 |
public static Xxxx now();获取系统当前时间对应的对象 | LocaDate ld = LocalDate.now(); LocalTime lt = LocalTime.now(); LocalDateTime ldt = LoacDateTime.now(); |
常用方法
方法名 | 说明 |
public int getYear() | 获取年 |
public int getMonthValue() | 获取月份(1-12) |
public int getDayofMonth() | 获取日 |
public int getDayofYear() | 获取当前是一年中的第几天 |
public DayOfWeek getDayOfWeek() | 获取星期几;ld.getDayoOfWeek().getValue() |
方法名 | 说明 |
withYear,withMonth,withDayofMonth,withDayOfYear | 直接修改某个信息,返回新日期对象 |
piusYears,plusMonths,plusDays,plusWeeks | 把某个信息加多少,返回新日期对象 |
minusYears,minusMonths,minusDays | 把某个信息减多少,返回新日期对象 |
equals,isBeffore,isAfter | 判断两个日期对象,是否相等,在前还是在后 |
package API_2;import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;public class Time4 {public static void main(String[] args) {//0.获取日期对象中的信息LocalDate ld = LocalDate.now(); // 年 月 日LocalTime lt = LocalTime.now(); // 时 分 秒 纳秒 不可变的 //基本用法与LocalDate是基本一致的LocalDateTime ldt = LocalDateTime.now(); //上述的信息都有,//1. 获取日期对象中的信息int year = ld.getYear(); //年int month = ld.getMonthValue();//月int day = ld.getDayOfMonth(); //日int dayOfYear = ld.getDayOfYear();//一年中的第几天int dayOfWeek = ld.getDayOfWeek().getValue(); //星期几//2.直接修改某个信息 withYear withMonth withDayOfMonth withDayOfYear// 修改后可以返回一个新的日期对象LocalDate ld2 = ld.withYear(2099);LocalDate ld3 = ld.withMonth(12);//3.把某个信息加多少 :plusYears plusMonths plusDays plusWeeks//修改后可以返回一个新的日期对象LocalDate ld4 = ld.plusYears(2);LocalDate ld5 = ld.plusMonths(3);//4.把某个信息减多少:minusYears minusMonths minusDays minusWeeksLocalDate ld6 = ld.minusYears(1);LocalDate ld7 = ld.minusMonths(5);//5.获取指定日期的LocalDate对象 :public static LocalDate of(int year,int month,int ady)LocalDate ld8 = LocalDate.of(2023, 4, 17);//6.判断两个日期对象 是否相等 在前还是在后 equals isBefore isAfterSystem.out.println(ld6.equals(ld));System.out.println(ld6.isBefore(ld));System.out.println(ld6.isAfter(ld));//*7.可以把LocalDateTime转换成LocalDate和LocalTimeLocalDate ld9 = ldt.toLocalDate();LocalTime lt1 = ldt.toLocalTime();//也可以合并LocalDateTime ldt1 = LocalDateTime.of(ld9,lt1);}
}
ZoneId:时区
ZonedDateTime :带时区的时间
package API_2;import java.time.Clock;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Calendar;
import java.util.TimeZone;public class Time5 {public static void main(String[] args) {//目标:了解时区和带时区的时间//1.ZoneI的常见方法//public static ZoneId systemDefault(); 获取系统默认的时区ZoneId zoneId = ZoneId.systemDefault();System.out.println(zoneId.getId());System.out.println(zoneId);System.out.println(zoneId.toString());//public static Set<String> getAvailableZoneIds; 获取java支持的全部时区System.out.println(ZoneId.getAvailableZoneIds());//public static ZoneId of(String zoneId):把某个时区id封装成ZoneId对象ZoneId zone = zoneId.of("America/New_York");//2.ZoneDateTime 带时区的时间//public static ZoneDateTime now (ZoneId Zone);获取某个时区的ZonedDateTime对象ZonedDateTime now = ZonedDateTime.now(zoneId);System.out.println(now);ZonedDateTime now1 = ZonedDateTime.now(Clock.systemUTC());System.out.println(now1);//public static ZoneDateTime now();;获取系统默认时区的ZonedDateTime对象ZonedDateTime now2 = ZonedDateTime.now();System.out.println(now2);Calendar.getInstance(TimeZone.getTimeZone(zoneId));}
}
ZoneId常用方法
方法名 | 说明 |
public static set<String> getAvailableZoneIds() | 获取java中支持的所有时区 |
public static zoneld systemDefault() | 获取系统默认时区 |
public static Zoeld of(String zoneld) | 获取一个指定时区 |
ZonedDateTime常用方法
方法名 | 说明 |
public static ZonedDateTime | 获取当前时区的ZonedateTime对象 |
public static ZoneddDateTime now(Zoneld zone) | 获取指定时区的ZonedDateTime对象 |
getYear getMonthValue | 获取年月日,时分秒,纳秒等 |
public ZonedDateTime withXxx(时间) | 修改时间系列的方法 |
public ZoneDateTime minusXxx(时间) | 减少时间系列的方法 |
public ZoneDateTime plusXxx(时间) | 增加时间系列的方法 |
[2]代替Date
Instant:时间线上的某个时刻/时间戳
方法名 | 说明 |
public static Instant now() | 获取当前时间的Instant对象(标准时间) |
public long getEpochSecond() | 获取从1970-01-01T00:00开始记录的秒数 |
public int getNano() | 从时间线开始,获取从第二个的纳秒数 |
plusMilis plusSconds plsuNanos | 判断系列的方法 |
minusMillis minnsSconds minusNanos | 减少时间系列的方法 |
equals isBefore isAfter | 增加时间系列的方法 |
package API_2;import java.time.Instant;public class Text6 {public static void main(String[] args) {//1.创建Instant的对象 获取此刻的时间信息Instant now = Instant.now();//2.获取总秒数long second = now.getEpochSecond();System.out.println(second);//3.不到1秒的纳秒数int nano = now.getNano();System.out.println(nano);//4.加法功能Instant i = now.plusNanos(111);Instant j = now.minusNanos(11);//Instant对象的作用:做代码的性能分析,或者记录用户操作的时间点Instant now1 = Instant.now();//代码执行Instant now2 = Instant.now();}
}
[3]代替SimpleDateFormat
DateTimeFormatter:格式化器,用于时间的格式化,解析(线程安全)
方法名 | 说明 |
public static DateTimeFormatter ofpattter(时间格式) | 获取格式器对象 |
public String fornat(时间对象) | 格式化时间 |
LocaDateTime提供的格式化,解析时间的方法
方法名 说明 public String format(DateTimeFormatter formatter) 格式化时间 public static LocalDateTime parse(CharSequence text,DateTimeFormatter formatter) 解析时间
[4]其他补充
Period :计算日期间隔(年,月,日,用于计算两个LocalDate对象的相差年数,月数,天数
Duration:计算时间间隔(时,分,秒,纳秒)支持LocalTime LocalDateTime Instant
Period常用方法
方法名 | 说明 |
Public static Period between(LocalDate start,LocalDate end) | 传入2个日期对象,得到Period对象 |
public int getYears() | 计算隔几年,并返回 |
public int getMonths() | 计算隔几个月,并返回 |
public int getDays() | 计算隔多少天,并返回 |
package API_2;import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Period;public class Time6 {public static void main(String[] args) {//目标:掌握Period的用法LocalDate start = LocalDate.of(2023,4,17);LocalDate end = LocalDate.of(2024,8,6);//1.创建period对象 ,封装两个日期对象Period period = Period.between(start,end);//2.通过period对象获取两个日期对象相差的信息System.out.println(period.getYears());System.out.println(period.getMonths());System.out.println(period.getDays());}
}
Duration常用方法
方法名 | 说明 |
public static Duration between(start,end) | 传入2个时间对象,得到Duration对象 |
public long toDays() | 计算隔多少天,并返回 |
public long toHours() | 计算隔多少小时,并返回 |
public long toMinutes() | 计算隔多少分,并返回 |
public long toSeconds() | 计算隔多少秒,并返回 |
public long toMillis() | 计算隔多少毫秒,并返回 |
public long toNanos() | 计算隔多少纳秒,并返回 |
package API_2;import java.time.Duration;
import java.time.LocalDateTime;public class Time7 {public static void main(String[] args) {//1.得到Duration对象LocalDateTime start = LocalDateTime.of(2024,9,22,11,11,11,11);LocalDateTime end = LocalDateTime.of(2024,9,22,15,10,0,1);Duration duration = Duration.between(start,end);//2.获取两个时间对象间隔的信息System.out.println(duration.toDays());System.out.println(duration.toHours());System.out.println(duration.toMillis()); //毫秒}
}
5.Arrays
Arrays 用来操作数组的一个工具类
常用方法
方法名 | 说明 |
public static String toString(类型[ ] arr) | 返回数组的内容 |
public static int [] copyOfRange(类型[] arr,起始索引,结束索引) | 拷贝数组(指定范围) |
public static opyOf(类型[] arr, int newLength) | 拷贝数组 |
public static setAll(double [] array,intToDoubleFunction generator ) | 把数组的原数据改为新数据 |
public static void sort(类型 [] arr) | 对数组进行排序(默认是升序) |
package API_2;import java.util.Arrays;
import java.util.function.IntToDoubleFunction;public class ArraysText {public static void main(String[] args) {//public static String toString(类型[ ] arr) 返回数组的内容int[] arr = {1,2,3,4,5};String rs = Arrays.toString(arr);System.out.println(rs);//public static int [] copyOfRange(类型[] arr,起始索引,结束索引) 拷贝数组(指定范围 包前不包后)int[] arr1 = Arrays.copyOfRange(arr,0,2);System.out.println(Arrays.toString(arr1));//public static copyOf(类型[] arr, int newLength) 拷贝数组// (可以指定新数组的长度 如果新数组长度小于原数组长度 则会截取)int[] arr2 = Arrays.copyOf(arr,10);System.out.println(Arrays.toString(arr2));//public static setAll(double [] array,int ToDoubleFunction generator ) 把数组的原数据都改为新数据double[] score = {100.0,80.0,46.0,56.0,85.5};Arrays.setAll(score, new IntToDoubleFunction() {@Overridepublic double applyAsDouble(int value) {return score[value] * 0.8; //浮点数精度错误}});System.out.println(Arrays.toString(score));//public static void sort(类型 [] arr) 对数组进行排序(默认是升序)int[] arr3 = {10,9,8,7,6,5,4,3,1,2};System.out.println(Arrays.toString(arr3));Arrays.sort(arr3);System.out.println(Arrays.toString(arr3));}
}
数组中存储的是对象,怎么进行排序?
方式一:让对象的类实现Comparable(比较规则)接口,然后重写compareTo方法,自己制定比较规则。
方式二:使用sort方法,创建Comparatorr比较器的匿名内部类对象,然后自己制定比较规则。
package API_2;public class Student implements Comparable<Student>{private String name;private double high;private int age;public Student() {}public Student(String name, double high, int age) {this.name = name;this.high = high;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getHigh() {return high;}public void setHigh(double high) {this.high = high;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}//指定比较规则@Overridepublic int compareTo(Student o) {//约定 1 :左边大于右边 返回正整数//预定 2 :小于 负整数//约定 3 :等于 0//按照年龄升序排序//if(this.age > o.age){return 1;}//else if (this.age <o.age) {return -1;}// return 0;return this.age - o.age;}public String toString(Student o){return "name = "+ o.getName()+"High ="+o.getHigh()+"age ="+o.getAge();}
}
package API_2;import java.util.Arrays;
import java.util.Comparator;public class ArraysText1 {public static void main(String[] args) {//目标:掌握数组中元素的排序Student[] students = new Student[4];students[0] = new Student("陈平安",175.0,19);students[1] = new Student("宁姚",170,20);students[2] = new Student("刘羡阳",182,20);students[3] = new Student("郑居中",180,40);//1.对数组进行排序// Arrays.sort(students);// System.out.println(Arrays.toString(students));//2.static<T> void sort(T[] arr,Comparator <? super T> c)//排序数组//比较规则Arrays.sort(students, new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {//制定比较规则//约定 1 :左边大于右边 返回正整数//预定 2 :小于 负整数//约定 3 :等于 0//按照年龄升序排序/* if(o1.getHigh() > o2.getHigh()){return 1;}else if (o1.getHigh() < o2.getHigh()) {return -1;}return 0;*/return Double.compare(o1.getHigh(),o2.getHigh());}});System.out.println(Arrays.toString(students));}
}
6.*Lambda 表达式
Lambda表达式是JDK8后新增的一种语法形式,作用是简化匿名内部类的代码写法
注意:只能简化函数式接口的匿名内部类(有且只有一个抽象方法方法的接口)
package API_2;public class Lambda {public static void main(String[] args) {//目标:认识Lambda 表达式Animal a = new Animal(){@Overridepublic void run(){System.out.println("跑动");}};a.run();//Animal b = ()->{System.out.println("跑动");} b.run();// 报错 简化只能简化函数式接口的匿名内部类接口 只有一个抽象方法的Swimming s = ()->{System.out.println("开始游泳");};}
}
interface Swimming{void swim();
}abstract class Animal{public abstract void run();
}
简化规则
- 参数类型可以省略不写。
- 如果只有一个参数,参数类型可以省略。同时()也可以省略.
- 如果Lambda的表达式的方法体代码只有一行代码,可以省略大括号不写,同时要省略分号! 此时如果这行代码是return语句,也必须去掉return不写。
Arrays.setAll(score, new IntToDoubleFunction() {@Overridepublic double applyAsDouble(int value) {return score[value] * 0.8; //浮点数精度错误}});//简化到一行Arrays.setAll(score,value -> score[value]*0.8);
7.方法引用(略)
静态方法的引用
实例方法的引用
特定类型方法的引用
构造器引用
相关文章:

常用API(三)
对于常见API的学习,主要学习了关于时间和日期的传统和新增APi 目录 1.Math 2.System 3.Runtime 4.日期和时间 (1)JDK8前传统时间API [1] Date [2] SimpledateFormat [3]Calendar (2)JDK8后新增时间API [1]代替…...

内存管理问题总结
内存管理 虚拟内存 我们程序所使⽤的内存地址叫做虚拟内存地址(Virtual Memory Address) 实际存在硬件⾥⾯的空间地址叫物理内存地址(Physical Memory Address) 操作系统引⼊了虚拟内存,进程持有的虚拟地址会通过 …...

十七、Intellij IDEA2022.1.1下载、安装、激活
目录 🌻🌻 一、下载二、 安装三、激活 一、下载 官网下载地址 本地直接下载 目前Intellij IDEA的最新版本已经更新到了 2024.1.4,由于最新版本可能存在不稳定的问题,此处选择其他版本进行下载,此处以2022.1.1为例进行下…...

【Material-UI】Button Group 中的 Disabled Elevation 功能
文章目录 一、Button Group 组件概述二、什么是 Elevation?三、为什么需要禁用 Elevation?四、使用 disableElevation 属性五、属性解析1. disableElevation 属性2. variant 属性3. aria-label 属性 六、应用场景1. 表单操作2. 工具栏3. 导航按钮 七、样…...
Java RESTful API 测试:使用 RestAssured
Java RESTful API 测试:使用 RestAssured 简介 在现代软件开发中,RESTful API扮演着至关重要的角色。API的测试同样重要以确保它们按预期工作。Java中的RestAssured库提供了一种简单直观的方式来测试RESTful Web服务。本文将介绍RestAssured的基本概念…...
将nestjs项目迁移到阿里云函数
注意:长耗时,高内存 的应用,定时任务 不适合迁移。 根据模板创建项目 一、模板配置修改 1.node版本修改 由于我的nestjs项目是node18的需要修改 pre-deploy项目: 改成 resources:framework:component: fc3actions:pre-deploy:-…...
边缘计算×AI:绘制未来实时智能的宏伟蓝图
引言:时代的召唤 随着物联网技术的飞速发展,数以亿计的传感器和智能设备正不断涌入我们的生活和工作空间,它们生成的数据量级之大,远非传统的集中式云处理所能高效应对。因此,一种新兴的数据处理模式——边缘计算&…...

实现关系运算符的重载
全局函数的实现法: 成员函数实现法:...

【css】使用CSS绘制奥运五环--巴黎奥运
使用CSS绘制奥运五环 在2024年巴黎奥运会期间,本文来使用 CSS 来画一个奥运五环。奥运五环由五个相互交叠的圆环组成,分别代表五大洲。 奥运五环是相互连接的,因此在视觉上会产生重叠效果,这也是实现五环最有挑战性的部分 HTML结…...
【Python数据处理】MatplotlibNumpyPandas常用API整理
目录 Matplotlib 1. 导入 Matplotlib 并创建图布 2. 实现基础绘图 2.1 折线图 2.2 柱状图 2.3 散点图 2.4 直方图 3. 完善绘图辅助功能 3.1 添加标题和标签 3.2 添加网格线 3.3 添加图例 4. 在一个坐标系下绘制多个图像 5. 在一个图形窗口创建多个子图 5.1 使用 a…...
Nacos是阿里巴巴开源的一款分布式服务注册中心和配置中心
Nacos是阿里巴巴开源的一款分布式服务注册中心和配置中心,旨在帮助开发人员更轻松地构建和管理微服务架构。以下是关于Nacos的详细介绍: 一、概述 Nacos是Dynamic Naming and Configuration Service(动态命名和配置服务)的缩写&a…...

条形码与二维码报表
概述 条形码与二维码:演示条形码与二维码,条形码数据将来自于关联的字段值。支持各种常用的条形码与二维码。 应用场景 如下图所示,简单展示数据 示例说明 数据准备 在数据面板中添加数据集,可选择Json数据集和API服务数据…...
数据采集工具之Flume
本文主要实现数据到datahub的采集过程 1、下载 Index of /dist/flume/1.11.0 datahub插件下载 https://aliyun-datahub.oss-cn-hangzhou.aliyuncs.com/tools/aliyun-flume-datahub-sink-2.0.9.tar.gz 2、安装 $ tar aliyun-flume-datahub-sink-x.x.x.tar.gz $ cd aliyun-…...

【24年最新】AI大模型零基础入门到精通学习资料大全,学完你就是LLM大师!
零基础如何学习大模型 AI 领取方式在文末 为什么要学习大模型? 学习大模型课程的重要性在于它能够极大地促进个人在人工智能领域的专业发展。大模型技术,如自然语言处理和图像识别,正在推动着人工智能的新发展阶段。通过学习大模型课程&am…...
使用RabbitMQ死信交换机实现延迟消息
文章目录 什么是死信交换机?死信交换机实现延迟消息的思路实现过程配置类消费者监听死信队列发送延迟消息 注意事项总结 在开发过程中,我们常常会遇到需要延迟处理某些消息的场景,例如订单的支付超时处理、短信的定时发送等。本文将介绍如何使…...

overleaf上latex表格的使用,latex绘制三线表
三线表需要的包、代码及其示例解释。 一般需要用到的包: \usepackage{tabu} % 表格插入 \usepackage{multirow} % 一般用以设计表格,将所行合并 \usepackage{multicol} % 合并多列 \usepackage{m…...

聚焦光热型太阳光模拟器助力多晶硅均匀加热
晶圆均匀加热技术综述 晶圆均匀加热是半导体制造过程中的关键技术之一,直接影响着晶圆上各种加工工艺的质量和稳定性。晶圆加热的目的在于化学气相沉积、退火、氧化等工艺中,通过对晶圆进行必要的热处理,以促进或优化后续工艺步骤。不均匀的…...

【Android】四大组件(Activity、Service、Broadcast Receiver、Content Provider)、结构目录
文章目录 Android系统架构Android四大组件ActivityServiceBroadcast ReceiverContent Provider 两大视图主要结构目录 Android系统架构 https://blog.csdn.net/xzzteach/article/details/140904613 Android四大组件 Activity 一个 Activity 包含了用户能够看到的界面࿰…...
前端开发:创建可拖动的固定位置 `<div>` 和自动隐藏悬浮按钮
在前端开发中,实现一个可拖动的固定位置 <div>,并且根据拖动的状态控制其显示和隐藏,同时在特定条件下显示悬浮按钮,涉及以下技术和原理: 技术细节和实现步骤: 1. HTML 结构: <!DOC…...
Java Bean Validation 注解:@NotEmpty、@NotBlank 和 @NotNull 的区别
1. 概述 Bean Validation 是 Java 提供的一种对 Java Bean 实例的字段或方法参数进行校验的标准机制。它允许开发者使用注解的方式定义验证逻辑,这些注解可以在类、字段或者方法上声明,并且可以被任何实现了 JSR 303/JSR 349 规范的框架(如 …...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
Bean 作用域有哪些?如何答出技术深度?
导语: Spring 面试绕不开 Bean 的作用域问题,这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开,结合典型面试题及实战场景,帮你厘清重点,打破模板式回答,…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案
在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...