【进阶篇-Day7:JAVA中Date、LocalDate等时间API的介绍】

news2024/11/15 21:43:15

目录

  • 1、概述
  • 2、JDK8(-) 时间类
    • 2.1 Date类:
      • (1)构造方法:
      • (2)常用成员方法:
    • 2.2 SimpleDateFormat类:
    • 2.3 总结:
    • 2.4 Calendar类介绍:
  • 3、JDK8(+) 时间类
    • 3.1 日历类
    • 3.2 日期格式化类
    • 3.3 时间类
      • (1):
      • (2):
      • (3):
    • 3.4 工具类
  • 4、练习

1、概述

在这里插入图片描述

2、JDK8(-) 时间类

2.1 Date类:

(1)构造方法:

在这里插入图片描述

package com.itheima;

import java.util.Date;

public class DateDemo1 {
    public static void main(String[] args) {
        //1、将当前时间,封装为Date日期对象
        Date date1 = new Date();
        System.out.println(date1);//Sat Jun 29 16:16:54 CST 2024

        //2、将时间毫秒值转换为Date日期对象
        Date date2 = new Date(1000L);//传入1000毫秒
        //从时间原点1970年0时0分0秒算起:因为中国是东八区,所以是8时
        System.out.println(date2);//Thu Jan 01 08:00:01 CST 1970
    }
}

(2)常用成员方法:

在这里插入图片描述

package com.itheima;

import java.util.Date;

public class DateDemo1 {
    public static void main(String[] args) {
        //1、将当前时间,封装为Date日期对象
        Date date1 = new Date();
        System.out.println(date1);//Sat Jun 29 16:16:54 CST 2024

        //2、将时间毫秒值转换为Date日期对象
        Date date2 = new Date(1000L);
        //从时间原点1970年0时0分0秒算起:因为中国是东八区,所以是8时
        System.out.println(date2);//Thu Jan 01 08:00:01 CST 1970

        //3、常用方法
        //3.1 getTime():返回从1970年1月1日 00:00:00走到此刻的总的毫秒数
        System.out.println(date1.getTime());//1719649443396
        System.out.println(date2.getTime());//1000

        //3.2 setTime():设置日期对象的时间为 当前时间毫秒值对应的时间
        Date date3 = new Date();//空参构造为当前时间
        date3.setTime(0L);//设置当前对象时间的毫秒值为0,会打印00毫秒的时间值
        System.out.println(date3);//Thu Jan 01 08:00:00 CST 1970
    }
}

2.2 SimpleDateFormat类:

在这里插入图片描述

  • format()方法演示:将日期对象——》转换为字符串
package com.itheima;

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo2 {
    public static void main(String[] args) {
        //1、构造方法:
        //1.1 SimpleDateFormat():空参构造
        // 创建一个日期格式化对象,使用默认的空参构造方法
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
        //创建Date对象,封装此刻的时间
        Date date = new Date();
        //将日期对象转换为字符串,调用format方法:
        String result = simpleDateFormat.format(date);
        System.out.println(result);//24-6-29 下午4:40

        //1.2 SimpleDateFormat():带参构造
        // 创建一个日期格式化对象,使用指定格式的构造方法
        SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss E a");
        //创建Date对象,封装此刻的时间
        Date date2 = new Date();
        //将日期对象转换为字符串,调用format方法:
        String result2 = simpleDateFormat2.format(date2);
        System.out.println(result2);//2024年06月29日 16:48:39 星期六 下午
    }
}

注:SimpleDateFormat()方法在指定格式时,可以按下面的描述设置。
在这里插入图片描述

  • parse()方法演示:将字符串日期——》转换为Date对象
package com.itheima;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateDemo3 {
    public static void main(String[] args) throws ParseException {
        //将字符串日期——》转换为Date对象
        //创建带有格式的SimpleDateFormat()对象
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        //创建字符串日期(和前面SimpleDateFormat对象指定格式要一样)
        String date = "2024-06-29";
        //将字符串日期转换为Date对象
        Date parse = simpleDateFormat.parse(date);
        System.out.println(parse);
    }
}
  • 练习:

需求:计算你来到这个世界多少天

package com.itheima;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class DateDemo4 {
    public static void main(String[] args) throws ParseException {
        /**
         * 需求:计算你来到这个世界多少天了
         */

        //1、输入生日
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的生日(格式:yyyy-MM-dd):");
        String s = sc.next();
        //2、将生日转换为Date对象
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date birthday = simpleDateFormat.parse(s);

        //3、获取此刻日期与生日的差值,并转换为天数
        Date date = new Date();
        long day = (date.getTime() - birthday.getTime())/(1000*64*64*24);

        System.out.println("来到这个世界" + day + "天");
    }
}

2.3 总结:

在这里插入图片描述

在这里插入图片描述

2.4 Calendar类介绍:

在这里插入图片描述

注:Date类虽然也能获取年月日等,但是不推荐使用,Java推荐使用Calendar类,下面我们看看。

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

  • 代码演示:
package com.itheima;

import java.util.Calendar;

public class DateDemo5 {
    public static void main(String[] args) {
        //1、创建对象:
        //Calendar c:抽象类
        //Calendar.getInstance():获取子类对象
        //获取对当前日历对象
        Calendar c = Calendar.getInstance();

        //2、常用方法:
        //2.1调用get方法:获取指定字段的信息
        int year = c.get(Calendar.YEAR);
        System.out.println(year);//获取年份 2024

        //注:Calendar类的月份是0-11,想要获取常规的月份,需要对结果 +1操作
        int month = c.get(Calendar.MONTH);
        System.out.println(month);//获取月份 5

        int day = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(day);//获取一个月中的第几天 29

        //星期:日 一 二 三 四 五 六
        //     1  2  3  4  5  6  7
        int week = c.get(Calendar.DAY_OF_WEEK);
        System.out.println(week);//7

        //2.2 调用set方法:修改日历中的某个字段
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, 2025);//修改年
        System.out.println(calendar.get(Calendar.YEAR));//2025
        calendar.set(2025,10,12);//修改年月日
        System.out.println(calendar.get(Calendar.MONTH));//10

        //2.3 调用add:为某个字段增加/减少指定的值
        Calendar calendar1 = Calendar.getInstance();
        calendar1.add(Calendar.YEAR,1);//对年加1
        System.out.println(calendar1.get(Calendar.YEAR));//2025
    }
}

在这里插入图片描述

package com.itheima;

import java.util.Calendar;
import java.util.Set;

public class DateDemo6 {
    public static void main(String[] args) {
        //获取Calendar子类的对象
        Calendar calendar = Calendar.getInstance();
        //设置时间为2050年3月1日
        calendar.set(2050, 2, 1);
        //获取2050年3月1日的星期
        int week = calendar.get(Calendar.DAY_OF_WEEK);

        String weekArr[] = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        System.out.println(week);
        if ("星期四".equals(weekArr[week])){
            System.out.println("今天是疯狂星期四,我要奢侈一把~~~");
        }
    }
}

在这里插入图片描述

package com.itheima;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws ParseException {
        //1、输入字符串日期
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入日期(yyyy-MM-dd)");
        String dateString = sc.next();

        //2、使用SimpleDateFormat,将字符串的日期,转换为Date日期
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = simpleDateFormat.parse(dateString);

        //3、将日期对象,转换为Calendar对象
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);

        //4、调用get方法,获取一年中的第几天
        int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
        System.out.println(dayOfYear);
    }
}
  • 总结:
    在这里插入图片描述

3、JDK8(+) 时间类

在这里插入图片描述

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

3.1 日历类

在这里插入图片描述

在这里插入图片描述

  • 代码演示:
package com.itheima.jdk8;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

public class LocalDateDemo1 {
    public static void main(String[] args) {
        //1、获取此刻的时间对象
        //1.1 LocalDate.now():获取 年、月、日
        LocalDate localDate = LocalDate.now();
        System.out.println(localDate);//2024-06-30

        //1.2 LocalTime.now():获取 时、分、秒、毫秒
        LocalTime localTime = LocalTime.now();
        System.out.println(localTime);//11:03:19.244

        //1.3 LocalDateTime.now():获取 年、月、日、时、分、秒、毫秒
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime);//2024-06-30T10:58:07.804

        //---------------------------------------------------------------------------

        //2、获取指定的时间对象
        //2.1 LocalDate.of():获取指定的 年、月、日
        LocalDate localDateOf = LocalDate.of(2022, 2, 3);
        System.out.println(localDateOf);//2022-02-03

        //2.2 LocalTime.of():获取指定的 时、分、秒、毫秒
        LocalTime localTimeOf = LocalTime.of(8, 8, 8, 8);
        System.out.println(localTimeOf);//08:08:08.000000008

        //2.3 LocalDateTime.of():获取指定的 年、月、日、时、分、秒、毫秒
        LocalDateTime localDateTimeOf = LocalDateTime.of(2008, 8, 8, 8, 8, 8);
        System.out.println(localDateTimeOf);//2008-08-08T08:08:08

        //---------------------------------------------------------------------------

        //3、LocalDate、LocalTime、LocalDateTime 之间的转换
        LocalDateTime now = LocalDateTime.now();
        //LocalDateTime转换为 LocalDate
        System.out.println(now.toLocalDate());
        //LocalDateTime转换为 LocalTime
        System.out.println(now.toLocalTime());

        //---------------------------------------------------------------------------

        //4、获取年、月、日、时、分、秒、微秒、纳秒等
        LocalDateTime localDateTime1 = LocalDateTime.now();
        System.out.println(localDateTime1.getYear());//获取 年
        System.out.println(localDateTime1.getMonthValue());//获取 月
        System.out.println(localDateTime1.getDayOfMonth());//获取 一个月中的第几天
        System.out.println(localDateTime1.getHour());//获取 时
        System.out.println(localDateTime1.getMinute());//获取 分
        System.out.println(localDateTime1.getSecond());//获取 秒
        System.out.println(localDateTime1.getNano());//获取 纳秒
        System.out.println(localDateTime1.getDayOfWeek().getValue());//获取 星期
    }
}

在这里插入图片描述

  • 代码演示:
package com.itheima.jdk8;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * Title: LocalDateDemo2
 * Describe: 类的功能
 * Name: masizhou
 * Date: 2024/7/3
 * Copyright: @2022 by masizhou
 */

public class LocalDateDemo2 {
    public static void main(String[] args) {
        LocalDateTime nowTime = LocalDateTime.now();
        //1、 minus:减法    ------》注意:都会返回一个新的对象
        System.out.println("减一年:" + nowTime.minusYears(1));//减一年 minusYears(年)
        System.out.println("减一月:" + nowTime.minusMonths(1));//减一月 minusMonths(月)
        System.out.println("减一天:" + nowTime.minusDays(1));//减一天 minusDays(天)
        System.out.println("减一小时:" + nowTime.minusHours(1));//减一小时 minusHours(时)
        System.out.println("减一分钟:" + nowTime.minusMinutes(1));//减一分钟 minusMinutes(分)
        System.out.println("减一秒:" + nowTime.minusSeconds(1));//减一秒 minusSeconds(秒)
        System.out.println("减一纳秒:" + nowTime.minusNanos(1));//减一纳秒 minusNanos(纳秒)

        System.out.println("-------------------------------------------------------------");

        //2、 plus:加法     ------》注意:都会返回一个新的对象
        System.out.println("加二年:" + nowTime.plusYears(2));//加二年 plusYears(年)
        System.out.println("加二月:" + nowTime.plusMonths(2));//加二月 plusMonths(月)
        System.out.println("加二天:" + nowTime.plusDays(2));//加二天 plusDays(天)
        System.out.println("加二时:" + nowTime.plusHours(2));//加二时 plusHours(时)
        System.out.println("加二分:" + nowTime.plusMinutes(2));//加二分 plusMinutes(分)
        System.out.println("加二秒:" + nowTime.plusSeconds(2));//加二秒 plusSeconds(秒)
        System.out.println("加二纳秒:" + nowTime.plusNanos(2));//加二纳秒 plusNanos(纳秒)

        System.out.println("-------------------------------------------------------------");

        //3、with:设置某一个指定的时间(如年、或月等)   ------》注意:都会返回一个新的对象
        System.out.println(nowTime.withYear(2008));//设置年份为2008年
        System.out.println(nowTime.withMonth(2));//设置月份为2月
        System.out.println(nowTime.withDayOfMonth(5));//设置一个月中的第几天
        System.out.println(nowTime.withHour(10));//设置小时为10
        System.out.println(nowTime.withMinute(45));//设置分钟为45
        System.out.println(nowTime.withSecond(35));//设置为35秒
        System.out.println(nowTime.withNano(200));//设置为200纳秒

        System.out.println("-------------------------------------------------------------");

        //4、isBefore:是否在xx时间之前
        //   isAfter:是否在xx时间之后
        //   equals:判断两个时间是否相等
        LocalDateTime myTime = LocalDateTime.of(2008, 8, 8, 8, 8, 8, 8);
        LocalDateTime now = LocalDateTime.now();
        System.out.println(now + "是否在" + myTime + "之前?" + now.isBefore(myTime));//false
        System.out.println(now + "是否在"+ myTime + "之前?" + now.isAfter(myTime));//true
        System.out.println(now + "是否与"+ myTime + "相等?" + now.equals(myTime));//false
    }
}

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

3.2 日期格式化类

在这里插入图片描述

  • 代码演示:
package com.itheima.jdk8;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class LocalDateDemo3 {
    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        System.out.println("格式化之前:" + now);//格式化之前:2024-07-04T21:15:18.426

        //1、获取格式化对象
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");

        //2、格式化
        String result = formatter.format(now);
        System.out.println("格式化之前:" + result);//格式化之前:2024年07月04日

        //3、解析
        String time = "2008年08月08日";
        LocalDate parse = LocalDate.parse(time, formatter);
        System.out.println(parse);//2008-08-08
    }
}

3.3 时间类

(1):

在这里插入图片描述

注:Instant其实就类似于Date。

package com.itheima.jdk8;

import java.time.Instant;
import java.time.ZoneId;
import java.util.Set;

public class InstantDemo1 {
    public static void main(String[] args) {
        /**
         * Instant 类似与 Date
         */
        Instant instant = Instant.now();
        System.out.println("当前的时间戳是:" + instant);//当前的时间戳是:2024-07-05T12:26:15.449Z

        //发现不是中国当下的时间,原因是中国是东八区,如何正确获取呢?
        System.out.println("转换后的时间戳是:" + Instant.now().atZone(ZoneId.of("Asia/Shanghai")));//转换后的时间戳是:2024-07-05T20:29:17.623+08:00[Asia/Shanghai]
    }
}

(2):

在这里插入图片描述

package com.itheima.jdk8;

import java.time.Instant;
import java.time.ZoneId;
import java.util.Set;

public class InstantDemo1 {
    public static void main(String[] args) {
        //获取Java所支持的所有时区
        Set<String> set = ZoneId.getAvailableZoneIds();
        System.out.println(set);//[Asia/Aden, America/Cuiaba, Etc/GMT+9,...]
        System.out.println(set.size());//601

        System.out.println("--------------------------------------------");

        //获取系统默认时区
        ZoneId zoneId = ZoneId.systemDefault();
        System.out.println(zoneId);//Asia/Shanghai

        System.out.println("--------------------------------------------");

        //获取一个指定时区
        ZoneId of = ZoneId.of("America/Cuiaba");
        System.out.println(of);//America/Cuiaba
    }
}

(3):

在这里插入图片描述

package com.itheima.jdk8.instant;

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class InstantDemo2 {
    public static void main(String[] args) {
        //1、获取当前时间的Instant对象(标准时间)
        Instant now = Instant.now();
        System.out.println("当前时间为(世界标准时间):" + now);//当前时间为(世界标准时间):2024-07-05T12:46:04.401Z

        System.out.println("-----------------------------------");

        //2、根据秒、毫秒、纳秒 获取Instant对象:从1970年1月1日开始算
        Instant instant1 = Instant.ofEpochSecond(5);
        Instant instant2 = Instant.ofEpochMilli(1000);
        System.out.println(instant1);//1970-01-01T00:00:05Z
        System.out.println(instant2);//1970-01-01T00:00:01Z

        System.out.println("-----------------------------------");

        //3、指定时区
        ZonedDateTime zonedDateTime = Instant.now().atZone(ZoneId.systemDefault());
        System.out.println("带时区的时间:" + zonedDateTime);//带时区的时间:2024-07-05T20:58:07.337+08:00[Asia/Shanghai]

        System.out.println("-----------------------------------");

        //4、判断系列方法
        System.out.println(now.isBefore(instant1));//now时间 在 instant1时间之前吗?
        System.out.println(now.isAfter(instant1));//now时间 在 instant1时间之后吗?

        System.out.println("-----------------------------------");

        //5、减少时间系列方法
        System.out.println("减1000毫秒:" + now.minusMillis(1000));
        System.out.println("减5秒:" + now.minusSeconds(5));

        System.out.println("-----------------------------------");

        //6、增加时间系列方法
        System.out.println("增加1000毫秒:" + now.plusMillis(1000));
        System.out.println("增加5秒:" + now.plusSeconds(5));

        System.out.println("-----------------------------------");
    }
}

在这里插入图片描述

3.4 工具类

在这里插入图片描述

package com.itheima.jdk8.util;

import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.Period;
import java.time.temporal.ChronoUnit;

public class UtilDemo {
    public static void main(String[] args) {
        /**
           (1)Period: 计算日期间隔(年月日)
         */
        //此刻年月日
        LocalDate today = LocalDate.now();
        System.out.println(today);//2024-07-05
        //昨天年月日
        LocalDate otherDate = LocalDate.of(2024, 7, 4);//2024-07-04
        System.out.println(otherDate);//2024-07-04
        //Period对象表示时间的间隔对象
        Period period = Period.between(today, otherDate);//第二个参数 减 第一个参数
        System.out.println("间隔多少年:" + period.getYears());//间隔多少年:0
        System.out.println("间隔多少月:" + period.getMonths());//间隔多少月:-2
        System.out.println("间隔多少天:" + period.getDays());//间隔多少天:-1
        System.out.println("间隔的总月份:" + period.toTotalMonths());//总月份:-2

        /**
         (2)Duration: 计算日期间隔(时分秒)
         */
        //此刻日期时间对象
        LocalDateTime time = LocalDateTime.now();//2024-07-05
        //昨天的日期时间对象
        LocalDateTime otherTime = LocalDateTime.of(2024, 7, 4, 12, 12, 12);
        // Duration获取日期间隔,第二个参数减第一个参数
        Duration between = Duration.between(otherTime, time);
        System.out.println("两个时间差的天数=" + between.toDays());
        System.out.println("两个时间差的小时=" + between.toHours());
        System.out.println("两个时间差的分钟=" + between.toMinutes());
        System.out.println("两个时间差的毫秒=" + between.toMillis());
        System.out.println("两个时间差的纳秒=" + between.toNanos());

        /**
         (3)ChronoUnit: 可用于在单个时间单位内测量一段时间,这个工具类上述最全面的,可以用于比较所有的时间单位
         */
        //指定时间1
        LocalDateTime Time1 = LocalDateTime.of(2024, 7, 10, 10, 10, 10);//2024-7-10 10:10:10
        //指定时间2
        LocalDateTime Time2 = LocalDateTime.of(2024, 7, 8, 10, 10, 10);//2024-7-8 10:10:10
        //计算这两个时间的时间差,第二个参数减第一个参数
        System.out.println("相差的年数=" + ChronoUnit.YEARS.between(Time2, Time1));//相差的年数=0
        System.out.println("相差的月数=" + ChronoUnit.MONTHS.between(Time2, Time1));//相差的月数=0
        System.out.println("相差的周数=" + ChronoUnit.WEEKS.between(Time2, Time1));//相差的周数=0
        System.out.println("相差的天数=" + ChronoUnit.DAYS.between(Time2, Time1));//相差的天数=2
        System.out.println("相差的时数=" + ChronoUnit.HOURS.between(Time2, Time1));//相差的时数=48
        System.out.println("相差的分钟数=" + ChronoUnit.MINUTES.between(Time2, Time1));//相差的分钟数=2880
        System.out.println("相差的秒数=" + ChronoUnit.SECONDS.between(Time2, Time1));//相差的秒数=172800
        System.out.println("相差的毫秒数=" + ChronoUnit.MILLIS.between(Time2, Time1));//相差的毫秒数=172800000
        System.out.println("相差的微妙数=" + ChronoUnit.MICROS.between(Time2, Time1));//相差的微妙数=172800000000
        System.out.println("相差的纳秒数=" + ChronoUnit.NANOS.between(Time2, Time1));//相差的纳秒数=172800000000000
        System.out.println("相差的半天数=" + ChronoUnit.HALF_DAYS.between(Time2, Time1));//相差的半天数=4
        System.out.println("相差的世纪(百年)数=" + ChronoUnit.CENTURIES.between(Time2, Time1));//相差的世纪(百年)数=0
        System.out.println("相差的千年数=" + ChronoUnit.MILLENNIA.between(Time2, Time1));//相差的千年数=0
        System.out.println("相差的纪元数=" + ChronoUnit.ERAS.between(Time2, Time1));//相差的纪元数=0
    }
}

4、练习

package com.itheima.jdk8;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
        /**
         * 需求:键盘录入用户生日,计算出用户的实际年龄
         */
        Scanner sc =  new Scanner(System.in);
        System.out.println("请输入您的生日:");
        String stringBirthday = sc.nextLine();

        //1、将字符串转换为日期对象
        LocalDate birthday = LocalDate.parse(stringBirthday, DateTimeFormatter.ofPattern("yyyy年M月d"));

        //2、获取今天的日期对象
        LocalDate nowDate = LocalDate.now();

        //3、比较两个日期,获取间隔年份
        System.out.println("实际年龄是:" + ChronoUnit.YEARS.between(birthday, nowDate));
    }
}

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

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

相关文章

【计算机毕业设计】基于Springboot的足球青训俱乐部管理系统【源码+lw+部署文档】

包含论文源码的压缩包较大&#xff0c;请私信或者加我的绿色小软件获取 免责声明&#xff1a;资料部分来源于合法的互联网渠道收集和整理&#xff0c;部分自己学习积累成果&#xff0c;供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

蚁剑编码器编写——php木马免杀

蚁剑编码器编写——php木马免杀 我的想法是 木马要先免杀&#xff0c;能够落地&#xff0c;再去考虑流量层面的问题 举几个例子演示一下 命令执行与代码执行是有比较大的区别&#xff0c;蚁剑执行的是php代码&#xff0c;而system&#xff0c;proc_open,passthru,exec,shell_…

CSS学习碎碎念之卡片展示

效果展示&#xff1a; 代码展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图片展示</title…

【Spring成神之路】老兄,来一杯Spring AOP源码吗?

文章目录 一、引言二、Spring AOP的使用三、Spring AOP的组件3.1 Pointcut源码3.2 Advice源码3.3 Advisor源码3.4 Aspect源码 四、Spring AOP源码刨析4.1 configureAutoProxyCreator源码解析4.2 parsePointcut源码解析4.3 parseAdvisor源码解析4.4 parseAspect源码解析4.5 小总…

【题目/算法训练】:单调队列单调栈

&#x1f680; 前言&#xff1a; 【算法】单调队列&&单调栈 可以在看完这篇文章后&#xff0c;再来写下面的题目 一、绝对差不超过限制的最长连续子数组 思路&#xff1a; 1&#xff09; 就相当于滑动窗口&#xff0c;维护滑动窗口内的两个值&#xff0c;一个是最大值…

溶解氧(DO)理论指南(3)

转载自梅特勒官网资料&#xff0c;仅用于学习交流&#xff0c;侵权则删&#xff01; 溶解氧理论指南 设备操作3.1 DO电极准备3.2 DO电极校准3.3 进行DO测量3.4 转换单位3.5 维护和储存 设备操作 本章总结了 DO电极日常使用的一些建议。它们基于普遍接受的操作规则。 3.1 DO电…

【数据结构——链表的深度探索】从实现到应用,保姆级攻略

【数据结构——链表深度探索】从实现到应用&#xff0c;保姆级攻略 &#x1f341;1. 链表的介绍&#x1f341;2. 链表的实现&#x1f341;2.1 单向链表&#x1f341;2.1.1 size()&#x1f341;2.1.2 display()&#x1f341;2.1.3 contains(int key)&#x1f341;2.1.4 addFirst…

本地部署,强大的面部修复与增强网络CodeFormer

目录 什么是 CodeFormer&#xff1f; 技术原理 主要功能 应用场景 本地部署 运行结果 结语 Tip&#xff1a; 在图像处理和计算机视觉领域&#xff0c;面部修复和增强一直是一个备受关注的研究方向。近年来&#xff0c;深度学习技术的飞速发展为这一领域带来了诸多突破性…

C++ 语法习题(3)

字符串 1.字符串长度 给定一行长度不超过 100 的非空字符串&#xff0c;请你求出它的具体长度。 输入格式 输入一行&#xff0c;表示一个字符串。注意字符串中可能包含空格。 输出格式 输出一个整数&#xff0c;表示它的长度。 数据范围 1≤字符串长度≤100 字符串末尾…

2024学生党蓝牙耳机什么牌子好?品牌高性价比蓝牙耳机推荐

2024年&#xff0c;对于追求性价比和品质的学生党来说&#xff0c;选择一款合适的蓝牙耳机是提升学习和生活品质的重要一环。面对市场上琳琅满目的蓝牙耳机产品&#xff0c;2024学生党蓝牙耳机什么牌子好&#xff1f;如何找到既满足音质需求又具备高性价比的款式呢&#xff1f;…

Odoo免费开源ERP如何处理汽车零部件企业的OE编码问题

业务背景 汽车零部件企业在每个汽配零件都有OE编号&#xff0c;即原厂编号&#xff0c;Original Equipment Number。一个配件&#xff0c;可能可以在多个车型上使用&#xff0c;对应的&#xff0c;就有多个可兼容的OE编号。 客户下单时候&#xff0c;直接报OE编号&#xff0c…

MT3054 搭积木

1.思路&#xff1a; 把二维矩阵转化成一维编号&#xff0c;之后将编号使用并查集&#xff0c;看最后是否在同一个集合中即可。 2.代码&#xff1a; #include <bits/stdc.h> using namespace std; const int N 1e3 10; int n, m, cnt, root; int fa[N * N]; int dx[…

[机器学习]-人工智能对程序员的深远影响——案例分析

机器学习和人工智能对未来程序员的深远影响 目录 机器学习和人工智能对未来程序员的深远影响1. **自动化编码任务**1.1 代码生成1.2 自动调试1.3 测试自动化 2. **提升开发效率**2.1 智能建议2.2 项目管理 3. **改变编程范式**3.1 数据驱动开发 4. **职业发展的新机遇**4.1 AI工…

【代码随想录】【算法训练营】【第63天】 [卡码53]寻宝

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 day 63&#xff0c;周二&#xff0c;ding~ 题目详情 [卡码53] 寻宝 题目描述 卡码53 寻宝 解题思路 前提&#xff1a; 思路&#xff1a; 重点&#xff1a; 代码实现 C语言 prim算法 kruskal…

UDP协议介绍和作用

什么是UDP? UDP是User Datagram Protocol的简称&#xff0c;中文名是用户数据报协议&#xff0c;是OSI参考模型中的传输层协议&#xff0c;它是一种无连接的传输层协议&#xff0c;提供面向事务的简单不可靠信息传送服务。 UDP的正式规范是IETF RFC768。UDP在IP报文的协议号是…

java数组之线性查找、二分法查找

一、线性查找 思想&#xff1a;如果想在一个数组中查找是否有某个元素&#xff0c;最容易想到的办法就是遍历数组&#xff0c;将数组中元素与想要查找的元素逐个对比&#xff0c;如果相等表示找到了&#xff0c;如果不等&#xff0c;则表示没找到。这就是线性查找的思想。 案例…

Chat2DB:AI引领下的全链路数据库管理新纪元

一、引言 随着数据驱动决策成为现代企业和组织的核心竞争力&#xff0c;数据库管理工具的重要性日益凸显。然而&#xff0c;传统的数据库管理工具往往存在操作复杂、功能单一、不支持多类型数据库管理等问题&#xff0c;限制了数据的有效利用。为了打破这一局面&#xff0c;Ch…

东方通Tongweb发布vue前端

一、前端包中添加文件 1、解压vue打包文件 以dist.zip为例&#xff0c;解压之后得到dist文件夹&#xff0c;进入dist文件夹&#xff0c;新建WEB-INF文件夹&#xff0c;进入WEB-INF文件夹&#xff0c;新建web.xml文件&#xff0c; 打开web.xml文件&#xff0c;输入以下内容 …

代码随想录算法训练营第四十九天| 647. 回文子串、 516.最长回文子序列

647. 回文子串 题目链接&#xff1a;647. 回文子串 文档讲解&#xff1a;代码随想录 状态&#xff1a;不会 思路&#xff1a; dp[i][j] 表示字符串 s 从索引 i 到索引 j 这一段子串是否为回文子串。 当s[i]与s[j]不相等&#xff0c;那没啥好说的了&#xff0c;dp[i][j]一定是fa…

Chromium编译指南2024 Linux篇-编译Chromium(五)

1.引言 在完成环境配置之后&#xff0c;我们需要开始实际的编译工作。编译 Chromium 是一个相对复杂且耗时的过程&#xff0c;尤其是第一次编译时。为了保证顺利完成&#xff0c;我们将使用 GN 和 Ninja 工具来生成和管理构建文件。接下来&#xff0c;我们会详细介绍如何生成构…