深入了解Java8新特性-日期时间API_LocalDate类

news2024/9/24 18:29:35

阅读建议

嗨,伙计!刷到这篇文章咱们就是有缘人,在阅读这篇文章前我有一些建议:

  1. 本篇文章大概12000多字,预计阅读时间长需要10分钟。
  2. 本篇文章的实战性、理论性较强,是一篇质量分数较高的技术干货文章,建议收藏起来,方便时常学习与回顾,温故而知新。
  3. 创作不易,免费的点赞、关注,请走上一走,算是对博主一些鼓励,让我更有动力输出更多的干货内容。

LocalDate

        Java 8的LocalDate类是Java日期和时间API的一部分,没有时间和时区的概念,是线程安全的,用于表示不包含时间的日期,位于java.time包下。

核心方法

now()

        按系统默认的时区来获取当前日期,返回代表当前日期的 LocalDate 实例。

@Test
public void test() {
    LocalDate now = LocalDate.now();//当前日期
    String format = now.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format);//输出结果:2023-11-23
}

of(...)

        接受一个年份(int)和两个日期(int)作为参数,返回一个表示该年某一天的 LocalDate 实例。日期的第一个参数范围是1到31,第二个参数范围是0到23。

public void test2() {
    LocalDate localDate = LocalDate.of(2023, 2, 1);//定义一个日期:2023-02-01
    LocalDate localDate1 = LocalDate.of(2023, Month.FEBRUARY, 1);//定义一个日期:2023-02-01
    boolean equals = localDate1.equals(localDate);
    System.out.println(equals);//输出结果:true
}

ofEpochDay(...)

        用于将给定的Unix时间戳(自1970年1月1日以来的天数)转换为 LocalDate 对象。这个方法返回一个表示该日期的 LocalDate 实例

@Test
public void test3() {
    LocalDate localDate2 = LocalDate.ofEpochDay(1);// 假设给定的Unix时间戳为1天
    String format = localDate2.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format);//输出结果:1970-01-02
}

ofInstant(...)

        Instant 是 Java 中的一个时间类,表示一个瞬时的时间点,精确到纳秒。Instant.ofEpochSecond()用于根据秒数(从1970年1月1日00:00:00 UTC开始)创建一个新的 Instant 对象。LocalDate.ofInstant() 可以将给定的 Instant 对象转换为 LocalDate 对象。

@Test
public void test4() {
    Long seconds = 24 * 60 * 60L;//一天的秒数
    LocalDate localDate = LocalDate.ofInstant(Instant.ofEpochSecond(seconds), ZoneId.systemDefault());
    String format = localDate.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format);//输出结果:1970-01-02
}

ofYearDay(...)

        LocalDate.ofYearDay() 用于创建一个表示某一年中特定天数的 LocalDate 对象。方法接受两个参数:年份和一年中的天数。年份表示自1970年以来的年数,天数表示一年中的第几天。例如,1月1日是第1天,2月15日是第46天。需要注意的是,这个方法并不会对输入的天数进行有效性检查,因此如果输入的天数超出了给定年份的范围(例如,在2月输入了30),那么创建出来的 LocalDate 对象可能不准确。

@Test
public void test5() {
    LocalDate localDate = LocalDate.ofYearDay(2023, 2);
    String format = localDate.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format);//输出结果:2023-01-02
}

get(...)

        LocalDate.get(...) 可以获取给定日期的特定部分,如年份、月份或日期。具体来说,如果你调用 LocalDate.get(ChronoField),其中 ChronoField 是 java.time.temporal.ChronoField 的实例,那么就会返回该日期对应的特定部分。ChronoField 是一个枚举类型,包含如 YEAR、MONTH_OF_YEAR、DAY_OF_MONTH 等各种表示时间的字段。

@Test
public void test6() {
    LocalDate localDate = LocalDate.now();
    int year = localDate.get(ChronoField.YEAR);//得到年份
    int month = localDate.get(ChronoField.MONTH_OF_YEAR);//得到月份
    int day = localDate.get(ChronoField.DAY_OF_MONTH);//得到当月中第几天
    int weekOfMonth = localDate.get(ChronoField.ALIGNED_WEEK_OF_MONTH);//得到当月的第几周
    System.out.println("year:"+year+",month:"+month+",day:"+day+",weekOfMonth:"+weekOfMonth);
}

getYear()、getMonthValue() 、getDayOfMonth()、getDayOfWeek()、getDayOfYear()

  • getYear(): 获取该日期的年份部分。例如,对于日期 "2023-06-24",该方法将返回2023。
  • getMonthValue(): 获取该日期的月份部分。例如,对于日期 "2023-06-24",该方法将返回6。
  • getDayOfMonth(): 获取该日期中的月份中的日期部分。例如,对于日期 "2023-06-24",该方法将返回24。
  • getDayOfWeek(): 获取该日期是星期几的信息。该方法将返回一个枚举类型的值,如MONDAY、TUESDAY等。
  • getDayOfYear(): 获取该日期是当年的第几天。例如,对于日期 "2023-06-24",该方法将返回175。
@Test
public void test13() {
    LocalDate d1 = LocalDate.of(2023, 11, 23);
    int year = d1.getYear();//年份:023
    int monthValue = d1.getMonthValue();//月份:11
    int dayOfMonth = d1.getDayOfMonth();//当月第几天:23
    int dayOfWeek = d1.getDayOfWeek().getValue();//当前周第几天:4
    int dayOfYear = d1.getDayOfYear();//当前年第几天:327
}

parse(...)

        LocalDate的parse()用于从字符串值创建LocalDate的实例。这个方法需要一个参数,即要解析的字符串。该字符串不能为空。此方法返回的是从作为参数传递的字符串值获得的LocalDate实例。

@Test
public void test7() {
    LocalDate parse = LocalDate.parse("2023-11-23", DateTimeFormatter.ISO_DATE);
    LocalDate parse1 = LocalDate.parse("2023-11-23");
    System.out.println(parse1.equals(parse));//输出结果:true
}

format(...)

        LocalDate的format()方法的功能是将日期进行格式化,使用指定的格式化程序。具体来说,这个方法接受一个DateTimeFormatter对象作为参数,这个对象定义了一个日期时间的格式。然后,这个方法会返回一个字符串,该字符串表示按照指定格式化程序格式化的日期。例如,如果我们有一个LocalDate对象代表着2019年5月8日的日期,我们可以使用format方法将它格式化为"MMM dd, yyyy"的格式,即"May 08, 2019"。

@Test
public void test8() {
    LocalDate now = LocalDate.now();
    String format = now.format(DateTimeFormatter.ISO_DATE);
    String format1 = now.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
    System.out.println(format);//输出结果:2023-11-23
    System.out.println(format1);//输出结果:2023/11/23
}

atTime(...)

        LocalDate.atTime(hour, minute)的功能是将给定的日期与特定时间进行组合,生成一个LocalDateTime对象。具体来说,这个方法可以将日期部分和时间部分进行组合。例如,如果你有一个LocalDate对象表示今天的日期,并且你想在下午3点钟添加30分钟的时间,你可以使用atTime方法来实现这个功能。

@Test
public void test9(){
    LocalDate now = LocalDate.now();
    LocalDateTime localDateTime = now.atTime(13, 30,59);
    String format = localDateTime.format(DateTimeFormatter.ISO_DATE_TIME);
    System.out.println(format);//输出结果:2023-11-23T13:30:59
}

compareTo(...)

        LocalDate.compareTo() 用于比较两个日期对象。具体来说,这个方法将此日期与另一个日期进行比较。如果此日期在时间上大于、等于或小于指定日期,则分别返回正整数、零或负整数。

@Test
public void test10() {
    LocalDate t1 = LocalDate.of(2023, 2, 1);//定义一个日期:2023-02-01
    LocalDate t2 = LocalDate.of(2023, Month.FEBRUARY, 2);//定义一个日期:2023-02-02
    int i = t2.compareTo(t1);//如果t2>t1,,返回正数;如果t2=t1,返回0;如果t2<t1,返回负数;
    System.out.println(i);//
}

datesUntil(...)

        LocalDate.datesUntil(...) 用于计算从当前日期到指定日期之间的日期范围。该方法返回一个表示该日期范围的流(Stream)。具体来说,datesUntil(LocalDate endExclusive) 重载形式接受一个终止日期参数,并返回从调用 datesUntil() 方法的 LocalDate 对象(起始日期)到终止日期之前的所有日期的流。

@Test
public void test11() {
    LocalDate d1 = LocalDate.of(2023, 2, 26);
    LocalDate d2 = LocalDate.of(2023, 3, 26);
    Stream<LocalDate> stream = d1.datesUntil(d2);
    stream.forEach(System.out::println);//注意:输出结果不包含结束日期
    Stream<LocalDate> stream1 = d1.datesUntil(d2, Period.ofDays(5));//输出的日期之间的间隔是5天
    stream1.forEach(System.out::println);
}

from(...)

        LocalDate.from(...) 用于从给定的 TemporalAccessor 对象创建 LocalDate 的实例。TemporalAccessor 是Java时间日期API中的一个接口,它提供了对日期和时间信息的访问权限,LocalDate、LocalDateTime等都实现了该接口;

@Test
public void test12(){
    LocalDateTime nowTime = LocalDateTime.now();
    LocalDate from = LocalDate.from(nowTime);
    String format = from.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format);
}

isAfter(...)、isBefore(...)

        LocalDate类的isAfter()和isBefore()方法分别用于检查一个日期是否在另一个日期之后或之前。

具体来说:

  • isAfter(ChronoLocalDate other): 此方法检查此日期是否在给定日期之后。如果当前日期在给定日期之后,它将返回true,否则返回false。
  • isBefore(ChronoLocalDate other): 此方法检查此日期是否在给定日期之前。如果当前日期在给定日期之前,它将返回true,否则返回false。
@Test
public void test14() {
    LocalDate d1 = LocalDate.of(2023, 11, 23);
    LocalDate d2 = LocalDate.of(2023, 11, 24);
    boolean after = d1.isAfter(d2);
    System.out.println(after);//输出结果:false
    boolean before = d1.isBefore(d2);
    System.out.println(before);//输出结果:true
}

isLeapYear()

        LocalDate.isLeapYear() 用于判断给定的年份是否为闰年。闰年的判断规则是这样的:如果年份能被4整除但不能被100整除,或者能被400整除,那么这个年份就是闰年。

@Test
public void test15() {
    LocalDate d1 = LocalDate.of(2020, 11, 23);
    LocalDate d2 = LocalDate.of(2023, 11, 24);
    boolean after = d1.isLeapYear();
    System.out.println(after);//输出结果:true
    boolean before = d2.isLeapYear();
    System.out.println(before);//输出结果:false
}

lengthOfMonth()、lengthOfYear()

        LocalDate的lengthOfMonth()方法用于获取此LocalDate表示的月份的长度,即该月份的天数。而lengthOfYear()方法则用于获取此LocalDate表示的年份的长度,即该年份的总天数。这两个方法都是用于计算日期时间的长度,方便进行日期的计算和比较。

@Test
public void test16() {
    LocalDate d1 = LocalDate.of(2020, 2, 23);
    int i = d1.lengthOfYear();
    System.out.println(i);//输出结果:366
    int j = d1.lengthOfMonth();
    System.out.println(j);//输出结果:29
}

minus(...)、minusDays(...)、minusMonths(...)、minusWeeks(...)、minusYears(...)

        这些方法都是Java中LocalDate类的方法,用于进行日期减法操作,返回一个新的LocalDate对象,表示减去指定时间间隔后的日期。

  • minus(...):此方法用于减去给定的时间间隔。它接受一个TemporalAmount参数,可以是时间单位(如小时,分钟,天,月,年等)。
  • minusDays(int n):此方法用于减去给定数量的天数。参数n是一个整数,表示要减去的天数。
  • minusMonths(int n):此方法用于减去给定数量的月份。参数n是一个整数,表示要减去的月份数。
  • minusWeeks(int n):此方法用于减去给定数量的周数。参数n是一个整数,表示要减去的周数。
  • minusYears(int n):此方法用于减去给定数量的年数。参数n是一个整数,表示要减去的年数。
@Test
public void test17() {
    LocalDate d1 = LocalDate.of(2023, 11, 23);
    LocalDate minus = d1.minus(Period.ofDays(3));//当前日期+3天
    String format = minus.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format);//输出结果:2023-11-20
    LocalDate minus2 = d1.minusDays(3);//当前日期减去3天
    String format2 = minus2.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format2);//输出结果:2023-11-20
    LocalDate minus3 = d1.minusMonths(1);//当前日期减去1月
    String format3 = minus3.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format3);//输出结果:2023-10-23
    LocalDate minus4 = d1.minusWeeks(1);//当前日期减去1周
    String format4 = minus4.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format4);//输出结果:2023-11-16
    LocalDate minus5 = d1.minusYears(1);//当前日期减去1年
    String format5 = minus5.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format5);//输出结果:2022-11-23
}

plus(...)、plusDays(...)、plusMonths(...)、plusWeeks(...)、plusYears(...)

        LocalDate类的plus(...)方法是一个通用方法,用于在给定时间单位上增加日期。具体的单位可以通过传递一个ChronoUnit对象来指定,例如plusDays(int days)、plusMonths(int months)、plusWeeks(int weeks)、plusYears(int years)等。

        这些方法用于增加LocalDate对象的日期。例如:

  • plusDays(int days):增加给定天数。
  • plusMonths(int months):增加给定月数。
  • plusWeeks(int weeks):增加给定周数。
  • plusYears(int years):增加给定年数。

需要注意的是,这些方法返回的是一个新的LocalDate对象,而不是修改原有的对象。因此,需要将结果赋值给一个变量来使用增加后的日期。

@Test
public void test17() {
    LocalDate d1 = LocalDate.of(2023, 11, 23);
    LocalDate plus = d1.plus(Period.ofDays(3));//当前日期+3天
    String format = plus.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format);//输出结果:2023-11-26
    LocalDate plus2 = d1.plusDays(3);//当前日期+3天
    String format2 = plus2.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format2);//输出结果:2023-11-26
    LocalDate plus3 = d1.plusMonths(1);//当前日期+1月
    String format3 = plus3.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format3);//输出结果:2023-12-23
    LocalDate plus4 = d1.plusWeeks(1);//当前日期+1周
    String format4 = plus4.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format4);//输出结果:2023-11-30
    LocalDate plus5 = d1.plusYears(1);//当前日期+1年
    String format5 = plus5.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format5);//输出结果:2024-11-23
}

toEpochDay()、toEpochSecond(...)

        LocalDate.toEpochDay()的功能是将LocalDate对象转换为自1970年1月1日以来的天数。这个方法返回的是一个长整型(long)的值,它将此本地日期与指定的时间和作为参数传递的偏移量相结合,以计算epoch-second值,该值是从1970-01-01T00:00:00Z开始经过的秒数。

        LocalDate.toEpochSecond(LocalTime time, ZoneOffset offset)的功能是将此本地日期与指定的时间和作为参数传递的偏移量相结合,以计算epoch-second值。这个方法接受两个参数,time和offset,它们是本地时间和区域偏移。该方法返回一个长整型(long)的值,表示自1970-01-01T00:00:00Z以来的秒数。

@Test
public void test19() {
    LocalDate d1 = LocalDate.of(2023, 11, 23);
    long epochDay = d1.toEpochDay();//自1970-01-01年到当前日期的天数
    System.out.println(epochDay);
    long epochSecond = d1.toEpochSecond(LocalTime.now(), ZoneOffset.ofHours(8));//自1970-01-01到当前日期的秒数;中国位于东8区,区域偏移量为+8
    LocalDate localDate = LocalDate.ofInstant(Instant.ofEpochSecond(epochSecond), ZoneId.systemDefault());//把得到秒数再转换为locaDate
    System.out.println(localDate.equals(d1));//输出结果为true
}

with(...)

        LocalDate.with(...)参数是一个 TemporalAdjuster,那么 with 方法会使用传递的调整器作为参数来调整此日期时间,并在调整后,返回调整后的日期时间的副本。

TemporalAdjuster是一个Java 8中引入的日期时间API,用于执行复杂的日期操作。它是一个函数式接口,可以在Temporal对象上执行操作,例如获得下一个星期日、当月的最后一天或下一年的第一天。

TemporalAdjuster有几个预定义的实现类,包括LocalDate、LocalDateTime和TemporalAdjuster接口本身。这些实现类可以用于调整Temporal对象的日期和时间。

使用TemporalAdjuster可以非常方便地执行各种日期操作,例如:

  • 获取下一个星期日的日期。
  • 获取当月的最后一天的日期。
  • 获取下一年的第一天的日期。
  • 获取某个日期之后的第N天、第N个星期或第N个月之后的日期。
  • 获取某个日期和时间之后的下一个工作日、下一个周末或下一个公众假日。
@Test
public void test20() {
    UnaryOperator<LocalDate> unaryOperator = item -> item.minusDays(1);//日期调节逻辑:减去1天
    TemporalAdjuster temporalAdjuster = TemporalAdjusters.ofDateAdjuster(unaryOperator);//构造日期调节器类
    LocalDate localDate1 = LocalDate.of(2023, 11, 22);//日期:2023-11-22
    LocalDate localDate2 = localDate1.with(temporalAdjuster);//执行调节逻辑,并返回调节后结果
    String dateStr2 = localDate2.format(DateTimeFormatter.ISO_DATE);
    System.out.println(dateStr2);//输出结果:2023-11-21
}

withDayOfMonth(...)、withDayOfYear(...)

        LocalDate类中的withDayOfMonth(...)和withDayOfYear(...)方法用于调整日期的天数。

        withDayOfMonth(int dayOfMonth)方法接受一个整数参数,表示月份中的某一天。该方法将此日期调整为给定日期的月份中的指定天数,并返回一个新的日期对象。例如,如果当前日期是2023年3月10日,调用withDayOfMonth(15)将返回一个新的日期对象,表示2023年3月15日。

        withDayOfYear(int dayOfYear)方法接受一个整数参数,表示一年中的某一天。该方法将此日期调整为给定年份中的指定天数,并返回一个新的日期对象。例如,如果当前日期是2023年3月10日,调用withDayOfYear(150)将返回一个新的日期对象,表示2023年7月10日(因为7月有31天,所以150减去3月的剩余天数)。

        这两个方法都返回一个新的日期对象,不会修改原始的LocalDate对象。这些方法可以用于执行各种日期调整操作,例如计算下个月的第一天或上个月的最后一天等。

@Test
public void test21() {
    LocalDate d1 = LocalDate.of(2023, 11, 22);//日期:2023-11-22
    LocalDate d2 = d1.withDayOfMonth(1);
    String format = d2.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format);//输出结果:2023-11-01
    LocalDate localDate3 = d1.withDayOfYear(1);
    String format2 = localDate3.format(DateTimeFormatter.ISO_DATE);
    System.out.println(format2);//输出结果:2023-01-01

}

atStartOfDay()

        LocalDate.atStartOfDay() 返回一个 LocalDateTime 实例,该实例表示给定日期的午夜时分。具体来说,它会把日期部分设为当前日期的开始时间(24小时制),时间部分设为 00:00:00。例如,如果今天是2023年6月24日,那么 LocalDate.now().atStartOfDay() 将返回一个表示2023年6月24日00:00:00的 LocalDateTime 对象。

@Test
public void test22() {
    LocalDate d= LocalDate.of(2023, 11, 22);
    LocalDateTime localDateTime = d.atStartOfDay();
    String format = localDateTime.format(DateTimeFormatter.ISO_DATE_TIME);
    System.out.println(format);//输出结果:2023-11-22T00:00:00
}

适用场景

  • 日期处理:LocalDate类适用于只需要处理日期的场景,而不考虑时间部分。例如,记录生日、纪念日、账单日等。
  • 日期计算:可以使用LocalDate类进行日期的加减运算,例如计算两个日期之间的天数、月数或年数。
  • 日期格式化:可以使用LocalDate类和DateTimeFormatter类进行日期的格式化操作,将日期转换为指定的字符串格式。
  • 日期时间转换:可以将带有时间的日期转换为不带时间的LocalDate对象,或者将LocalDate对象转换为带有时间的日期时间对象(如LocalDateTime)。

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

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

相关文章

【Python】批量将PDG合成PDF,以及根据SS号重命名秒传的文件

目录 说明批量zip2pdf批量zip2pdf下载SS号重命名源代码SS号重命名源代码下载附录&#xff0c;水文年鉴 说明 1、zip2pdf是一个开源软件&#xff0c;支持自动化解压压缩包成PDG&#xff0c;PDG合成PDF&#xff0c;笔者在其基础上做了部分修改&#xff0c;支持批量转换。 2、秒…

SQL LIKE 运算符:用法、示例和通配符解释

SQL中的LIKE运算符用于在WHERE子句中搜索列中的指定模式。通常与LIKE运算符一起使用的有两个通配符&#xff1a; 百分号 % 代表零个、一个或多个字符。下划线 _ 代表一个单个字符。 以下是LIKE运算符的用法和示例&#xff1a; 示例 选择所有以字母 “a” 开头的客户&#x…

如何应用ChatGPT撰写、修改论文及工作报告,提供写作能力及优化工作??

如果我想让gpt从pdf文档中提取相关关键词的内容&#xff0c;可以怎么做呢&#xff1f;&#xff1f;我们评论区讨论 ChatGPT 在论文写作与编程方面也具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题&#xff0c;ChatGPT都能为您提供实用且高质量的建议和指导&am…

【SpringMVC】 三层架构

一.lombok工具包 中央仓库查找这个工具包:https://mvnrepository.com/ 给类添加Data注解就可以获取gettter和setter方法 , 这样我们就不必写getter 和 setter 方法. 也可以给成员属性添加单独的getter 和 setter , 针对某个成员属性单独添加setter或setter方法. 二.如果使用spr…

Leetcode173. 二叉搜索树迭代器

Every day a Leetcode 题目来源&#xff1a;173. 二叉搜索树迭代器 解法1&#xff1a;中序遍历 我们可以直接对二叉搜索树做一次完全的递归遍历&#xff0c;获取中序遍历的全部结果并保存在数组中。随后&#xff0c;我们利用得到的数组本身来实现迭代器。 代码&#xff1a…

Python生产、消费Kafka

如果想通过docker安装kafka&#xff0c;可参考 Docker安装Kafka 生产者 import json import time import tracebackfrom datetime import datetime from kafka import KafkaProducer from kafka.errors import kafka_errorsproducer KafkaProducer(bootstrap_servers[localho…

JSP:Servlet

Servlet处理请求过程 B/S请求响应模型 Servlet介绍 JSP是Servlet的一个成功应用&#xff0c;其子集。 JSP页面负责前台用户界面&#xff0c;JavaBean负责后台数据处理&#xff0c;一般的Web应用采用JSPJavaBean就可以设计得很好了。 JSPServletJavaBean是MVC Servlet的核心…

NOIP2003提高组第二轮T3:加分二叉树

题目链接 [NOIP2003 提高组] 加分二叉树 题目描述 设一个 n n n 个节点的二叉树 tree \text{tree} tree 的中序遍历为 ( 1 , 2 , 3 , … , n ) (1,2,3,\ldots,n) (1,2,3,…,n)&#xff0c;其中数字 1 , 2 , 3 , … , n 1,2,3,\ldots,n 1,2,3,…,n 为节点编号。每个节点都…

抖音汽车租赁小程序背后的技术挑战与解决方案

随着共享经济的不断发展&#xff0c;抖音上的汽车租赁小程序也逐渐崭露头角。然而&#xff0c;这背后涉及的技术挑战却不容小觑。本文将深入探讨抖音汽车租赁小程序的技术挑战&#xff0c;并提出相应的解决方案。 一、实时位置追踪 汽车租赁小程序的核心在于用户能够实时追踪…

JS中reduce函数的使用

一&#xff1a;函数解释 reduce()是一个对数组中的每个元素按照顺序依次执行自定义函数的方法。 就是遍历数组&#xff0c;每个元素都执行相同的方法。 二&#xff1a;实际应用 accumulator和currentValue分别用acc和cur表示哈&#xff0c;举例如下&#xff1a; 应用例子①…

赛迪生电源充电模块维修CHR-22005 RCU-202A

通信电源维修品牌&#xff1a;英可瑞,许继,艾默生,通合,动力源,九洲,华隆,合欣,泰坦,赛迪生等 直流屏模块故障和解决办法&#xff1a; 1、针对各类变电站直流屏&#xff0c;若显示交流空开跳闸&#xff0c;但并没有动作。应当检查三处地方是否正确&#xff1a; 接线是否正确…

SWT/Jface(2): 表格的编辑

前言 上节说到, 创建和渲染表格需要如下几个步骤: 接收源数据数组(也可以是单个对象或者其他集合类型): TableViewer.setInput(Object)渲染接收的数据 渲染表头: TableViewer.setLabelProvider(IBaseLabelProvider)渲染内容: TableViewer.setContentProvider(IContentProvide…

k8s-pod生命周期 4

容器环境初始化 pod 由pod 镜像来提供&#xff0c;在pod 生命周期里容器主要分为两种&#xff1a;初始化容器和主容器 初始化容器一定要成功运行并退出&#xff0c;当初始化容器运行退出完了之后主容器开始和运行 主容器开始运行的时候&#xff0c;有两个探针&#xff1a;存…

【C++初阶】STL详解(七)Stack与Queue的模拟实现

本专栏内容为&#xff1a;C学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握C。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C &#x1f69a;代码仓库&#xff1a;小小unicorn的代码仓库&…

git-3

1.如何让工作区的文件恢复为和暂存区一样&#xff1f; 工作区所作的变更还不及暂存区的变更好&#xff0c;想从暂存区拷贝到工作区&#xff0c;变更工作区(恢复成和暂存区一样的状态)&#xff0c;想到用git checkout -- 文件名 2.怎样取消暂存区部分文件的更改&#xff1f; 如…

C语言函数练习(超基础超详细)

ps:题目来源于pta平台。 1. int sum(int m, int n) {int sum0;for(int im; i<n; i){sumi;}return sum; } 2. int max(int a, int b) {if(a>b)return a;else return b; } 3. double dist( double x1, double y1, double x2, double y2 ) {return sqrt((x1-x2)*(x1…

STM32笔记---RTC

目录 一、RTC简介 二、主要特性 三、功能描述 3.1 读RTC寄存器 3.2 配置RTC寄存器 四、BKP简介 五、RTC_Init() 1. 函数BKP_ReadBackupRegister 2.RCC_LSEConfig设置外部低速晶振&#xff08;LSE&#xff09; 3.RTC基本结构 5.RTC_Init()实现 6.time.h 一、R…

靠这份求职指南找工作,稳了!

大家好&#xff0c;我是鱼皮。为了帮助朋友们更好的准备秋招&#xff0c;我们精心汇总整理了 编程导航星球 内鱼友反馈的 200 多个高频求职问题和 150 多篇面经、以及最新秋招企业投递信息表&#xff0c;解答大家的求职困惑。 一、最新秋招投递信息表 目前已汇总整理了 600 多家…

spring 是如何开启事务的, 核心原理是什么

文章目录 spring 是如何开启事务的核心原理1 基于注解开启事务2 基于代码来开启事务 spring 是如何开启事务的 核心原理 Spring事务管理的实现有许多细节&#xff0c;如果对整个接口框架有个大体了解会非常有利于我们理解事务&#xff0c;下面通过讲解Spring的事务接口来了解…

人工智能今天能为你做什么?生成式人工智能如何改变技术文档领域

▲ 搜索“大龙谈智能内容”关注GongZongHao▲ 作者 | Fabrice Lacroix 大型语言模型&#xff08;LLM&#xff09;和生成式人工智能&#xff08;GenAI&#xff09;&#xff0c;尤其是ChatGPT&#xff0c;这些是引领科技革新的新兴技术。它们不仅在科技界引起了轩然大波&#x…