最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java時間處理詳細教程與最佳實踐案例

 更新時間:2025年08月04日 11:29:06   作者:jarenyVO  
本文系統(tǒng)講解Java時間處理,涵蓋基礎概念、傳統(tǒng)API(Date/Calendar/SimpleDateFormat)、Java8新API(java.time包)及高級應用,提供代碼案例與最佳實踐,適合開發(fā)者全面掌握時間操作技巧,感興趣的朋友一起看看吧

Java時間處理詳細教程與代碼案例

一、基礎概念

1. 時間與日期基本概念

時區(qū)(TimeZone):地球被劃分為24個時區(qū),每個時區(qū)相差1小時。Java中使用ZoneId表示時區(qū)。

時間戳(Timestamp):從1970年1月1日00:00:00 GMT開始的毫秒數,Java中用Instant類表示。

本地日期時間(LocalDateTime):不包含時區(qū)信息的日期和時間,Java中用LocalDateTime類表示。

時間格式(DateTime Format):用于日期時間的顯示和解析,如"yyyy-MM-dd HH:mm:ss"。

二、傳統(tǒng)日期時間API

1. java.util.Date類

// 創(chuàng)建當前時間的Date對象
Date now = new Date();
System.out.println("當前時間: " + now);
// 創(chuàng)建指定時間的Date對象
Date specificDate = new Date(121, 6, 15); // 2021年7月15日(年份從1900開始,月份從0開始)
System.out.println("指定時間: " + specificDate);
// 獲取時間戳
long timestamp = now.getTime();
System.out.println("時間戳: " + timestamp);
// 比較兩個Date對象
System.out.println("比較結果: " + now.compareTo(specificDate));

2. java.util.Calendar類

// 獲取Calendar實例
Calendar calendar = Calendar.getInstance();
System.out.println("當前時間: " + calendar.getTime());
// 設置特定日期
calendar.set(2023, Calendar.JULY, 31, 14, 30, 0);
System.out.println("設置后的時間: " + calendar.getTime());
// 獲取特定字段
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1; // 月份從0開始
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.printf("%d年%d月%d日\n", year, month, day);
// 日期計算
calendar.add(Calendar.DAY_OF_MONTH, 5); // 加5天
System.out.println("加5天后的時間: " + calendar.getTime());

3. java.text.SimpleDateFormat

// 創(chuàng)建SimpleDateFormat實例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 格式化日期
String formattedDate = sdf.format(new Date());
System.out.println("格式化后的日期: " + formattedDate);
// 解析日期字符串
try {
    Date parsedDate = sdf.parse("2023-07-31 15:30:00");
    System.out.println("解析后的日期: " + parsedDate);
} catch (ParseException e) {
    e.printStackTrace();
}
// 線程安全的格式化方式
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String result = df.format(new Date());

三、Java 8新日期時間API

1. java.time包概述

Java 8引入了全新的日期時間API,位于java.time包中,主要類包括:

  • Instant - 時間戳
  • LocalDate - 不含時間的日期
  • LocalTime - 不含日期的時間
  • LocalDateTime - 不含時區(qū)的日期時間
  • ZonedDateTime - 帶時區(qū)的日期時間
  • Period - 日期區(qū)間
  • Duration - 時間區(qū)間

2. 主要類介紹

LocalDate
// 獲取當前日期
LocalDate today = LocalDate.now();
System.out.println("當前日期: " + today);
// 創(chuàng)建特定日期
LocalDate specificDate = LocalDate.of(2023, Month.JULY, 31);
System.out.println("指定日期: " + specificDate);
// 從字符串解析
LocalDate parsedDate = LocalDate.parse("2023-07-31");
System.out.println("解析的日期: " + parsedDate);
// 獲取日期字段
System.out.println("年: " + today.getYear());
System.out.println("月: " + today.getMonthValue());
System.out.println("日: " + today.getDayOfMonth());
System.out.println("星期: " + today.getDayOfWeek());
LocalTime
// 獲取當前時間
LocalTime now = LocalTime.now();
System.out.println("當前時間: " + now);
// 創(chuàng)建特定時間
LocalTime specificTime = LocalTime.of(14, 30, 45);
System.out.println("指定時間: " + specificTime);
// 從字符串解析
LocalTime parsedTime = LocalTime.parse("15:30:00");
System.out.println("解析的時間: " + parsedTime);
// 獲取時間字段
System.out.println("時: " + now.getHour());
System.out.println("分: " + now.getMinute());
System.out.println("秒: " + now.getSecond());
LocalDateTime
// 獲取當前日期時間
LocalDateTime now = LocalDateTime.now();
System.out.println("當前日期時間: " + now);
// 創(chuàng)建特定日期時間
LocalDateTime specificDateTime = LocalDateTime.of(2023, Month.JULY, 31, 14, 30, 45);
System.out.println("指定日期時間: " + specificDateTime);
// 從LocalDate和LocalTime組合
LocalDateTime combinedDateTime = LocalDateTime.of(LocalDate.now(), LocalTime.now());
System.out.println("組合的日期時間: " + combinedDateTime);
// 獲取字段
System.out.println("年: " + now.getYear());
System.out.println("時: " + now.getHour());
ZonedDateTime
// 獲取當前時區(qū)的日期時間
ZonedDateTime now = ZonedDateTime.now();
System.out.println("當前時區(qū)日期時間: " + now);
// 創(chuàng)建特定時區(qū)的日期時間
ZoneId tokyoZone = ZoneId.of("Asia/Tokyo");
ZonedDateTime tokyoTime = ZonedDateTime.now(tokyoZone);
System.out.println("東京時間: " + tokyoTime);
// 時區(qū)轉換
ZonedDateTime newYorkTime = now.withZoneSameInstant(ZoneId.of("America/New_York"));
System.out.println("紐約時間: " + newYorkTime);
Instant
// 獲取當前時間戳
Instant now = Instant.now();
System.out.println("當前時間戳: " + now);
// 從毫秒數創(chuàng)建
Instant specificInstant = Instant.ofEpochMilli(1690800000000L);
System.out.println("指定時間戳: " + specificInstant);
// 轉換為LocalDateTime
LocalDateTime localDateTime = LocalDateTime.ofInstant(now, ZoneId.systemDefault());
System.out.println("轉換為本地日期時間: " + localDateTime);

3. 日期時間操作

// 日期時間計算
LocalDateTime now = LocalDateTime.now();
System.out.println("當前時間: " + now);
// 加3天
LocalDateTime plusDays = now.plusDays(3);
System.out.println("加3天: " + plusDays);
// 減2小時
LocalDateTime minusHours = now.minusHours(2);
System.out.println("減2小時: " + minusHours);
// 加6個月
LocalDateTime plusMonths = now.plusMonths(6);
System.out.println("加6個月: " + plusMonths);
// 使用Period和Duration
Period period = Period.ofDays(5);
Duration duration = Duration.ofHours(3);
LocalDateTime result1 = now.plus(period);
LocalDateTime result2 = now.plus(duration);
System.out.println("加5天: " + result1);
System.out.println("加3小時: " + result2);

4. 格式化與解析

// 創(chuàng)建DateTimeFormatter
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 格式化
String formattedDateTime = LocalDateTime.now().format(formatter);
System.out.println("格式化后的日期時間: " + formattedDateTime);
// 解析
LocalDateTime parsedDateTime = LocalDateTime.parse("2023-07-31 15:30:00", formatter);
System.out.println("解析后的日期時間: " + parsedDateTime);
// 預定義的格式
DateTimeFormatter isoFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
String isoFormatted = LocalDateTime.now().format(isoFormatter);
System.out.println("ISO格式: " + isoFormatted);

四、時間轉換與計算

1. 新舊API轉換

// Date轉Instant
Date date = new Date();
Instant instant = date.toInstant();
System.out.println("Date轉Instant: " + instant);
// Instant轉Date
Date newDate = Date.from(instant);
System.out.println("Instant轉Date: " + newDate);
// Calendar轉ZonedDateTime
Calendar calendar = Calendar.getInstance();
ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(calendar.toInstant(), calendar.getTimeZone().toZoneId());
System.out.println("Calendar轉ZonedDateTime: " + zonedDateTime);
// ZonedDateTime轉Calendar
Calendar newCalendar = Calendar.getInstance();
newCalendar.clear();
newCalendar.setTime(Date.from(zonedDateTime.toInstant()));
System.out.println("ZonedDateTime轉Calendar: " + newCalendar.getTime());

2. 時區(qū)處理

// 獲取所有可用時區(qū)
Set<String> allZones = ZoneId.getAvailableZoneIds();
System.out.println("所有時區(qū)數量: " + allZones.size());
// 時區(qū)轉換
ZonedDateTime now = ZonedDateTime.now();
System.out.println("當前時區(qū)時間: " + now);
ZonedDateTime londonTime = now.withZoneSameInstant(ZoneId.of("Europe/London"));
System.out.println("倫敦時間: " + londonTime);
ZonedDateTime newYorkTime = now.withZoneSameInstant(ZoneId.of("America/New_York"));
System.out.println("紐約時間: " + newYorkTime);
// 夏令時檢查
ZoneId londonZone = ZoneId.of("Europe/London");
ZonedDateTime summerTime = ZonedDateTime.of(2023, 6, 15, 12, 0, 0, 0, londonZone);
ZonedDateTime winterTime = ZonedDateTime.of(2023, 12, 15, 12, 0, 0, 0, londonZone);
System.out.println("倫敦夏令時偏移: " + summerTime.getOffset());
System.out.println("倫敦冬令時偏移: " + winterTime.getOffset());

3. 時間差計算

// 計算兩個LocalDate之間的Period
LocalDate startDate = LocalDate.of(2023, 1, 1);
LocalDate endDate = LocalDate.of(2023, 7, 31);
Period period = Period.between(startDate, endDate);
System.out.printf("日期差: %d年%d個月%d天\n", 
    period.getYears(), period.getMonths(), period.getDays());
// 計算兩個LocalTime之間的Duration
LocalTime startTime = LocalTime.of(8, 30);
LocalTime endTime = LocalTime.of(17, 45);
Duration duration = Duration.between(startTime, endTime);
System.out.println("時間差: " + duration.toHours() + "小時" + 
    (duration.toMinutes() % 60) + "分鐘");
// 使用ChronoUnit
long daysBetween = ChronoUnit.DAYS.between(startDate, endDate);
System.out.println("相差天數: " + daysBetween);
long hoursBetween = ChronoUnit.HOURS.between(startTime, endTime);
System.out.println("相差小時數: " + hoursBetween);

五、高級應用

1. 工作日計算

// 計算工作日(排除周末)
LocalDate startDate = LocalDate.of(2023, 7, 1); // 7月1日是星期六
LocalDate endDate = LocalDate.of(2023, 7, 31);
long workingDays = startDate.datesUntil(endDate)
    .filter(date -> date.getDayOfWeek() != DayOfWeek.SATURDAY && 
                   date.getDayOfWeek() != DayOfWeek.SUNDAY)
    .count();
System.out.println("7月工作日天數: " + workingDays);
// 使用TemporalAdjusters
LocalDate nextWorkingDay = LocalDate.now().with(TemporalAdjusters.nextOrSame(DayOfWeek.MONDAY));
System.out.println("下一個工作日: " + nextWorkingDay);

2. 定時任務與時間處理

// 使用Timer/TimerTask
Timer timer = new Timer();
timer.schedule(new TimerTask() {
    @Override
    public void run() {
        System.out.println("定時任務執(zhí)行: " + LocalTime.now());
    }
}, 0, 1000); // 立即開始,每隔1秒執(zhí)行一次
// 5秒后取消定時任務
try {
    Thread.sleep(5000);
} catch (InterruptedException e) {
    e.printStackTrace();
}
timer.cancel();
// 使用ScheduledExecutorService
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
executor.scheduleAtFixedRate(
    () -> System.out.println("調度任務執(zhí)行: " + LocalTime.now()),
    0, 1, TimeUnit.SECONDS);
// 5秒后關閉
try {
    Thread.sleep(5000);
} catch (InterruptedException e) {
    e.printStackTrace();
}
executor.shutdown();

3. 數據庫時間處理

// JDBC與java.time類型映射
// 假設有PreparedStatement ps和ResultSet rs
// 寫入數據庫
LocalDateTime now = LocalDateTime.now();
ps.setObject(1, now); // 直接使用setObject
// 從數據庫讀取
LocalDateTime dbDateTime = rs.getObject("date_column", LocalDateTime.class);
// JPA/Hibernate實體類中的時間字段
/*
@Entity
public class Event {
    @Id
    private Long id;
    @Column
    private LocalDateTime eventTime;
    @Column
    private LocalDate eventDate;
    // getters and setters
}
*/

4. 序列化與反序列化

// JSON中的時間處理(使用Jackson)
ObjectMapper mapper = new ObjectMapper();
// 注冊JavaTimeModule以支持java.time類型
mapper.registerModule(new JavaTimeModule());
// 禁用時間戳格式
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
Event event = new Event();
event.setEventTime(LocalDateTime.now());
// 序列化
String json = mapper.writeValueAsString(event);
System.out.println("JSON: " + json);
// 反序列化
Event parsedEvent = mapper.readValue(json, Event.class);
System.out.println("解析后的時間: " + parsedEvent.getEventTime());

六、最佳實踐與常見問題

1. 線程安全最佳實踐

// 傳統(tǒng)API不是線程安全的
SimpleDateFormat unsafeFormat = new SimpleDateFormat("yyyy-MM-dd");
// 解決方案1:每次創(chuàng)建新實例
SimpleDateFormat safeFormat1 = new SimpleDateFormat("yyyy-MM-dd");
// 解決方案2:使用ThreadLocal
private static final ThreadLocal<SimpleDateFormat> threadLocalFormat = 
    ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd"));
SimpleDateFormat safeFormat2 = threadLocalFormat.get();
// Java 8 API是線程安全的,可以共享實例
DateTimeFormatter safeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

2. 性能優(yōu)化建議

// 重用DateTimeFormatter實例
private static final DateTimeFormatter FORMATTER = 
    DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 批量格式化日期時間
List<LocalDateTime> dateTimes = List.of(
    LocalDateTime.now(),
    LocalDateTime.now().plusDays(1),
    LocalDateTime.now().plusDays(2)
);
List<String> formattedDates = dateTimes.stream()
    .map(FORMATTER::format)
    .collect(Collectors.toList());
System.out.println("格式化后的日期列表: " + formattedDates);

3. 常見陷阱與解決方案

// 陷阱1:月份從0開始(傳統(tǒng)API)
Calendar calendar = Calendar.getInstance();
calendar.set(2023, 6, 31); // 實際上是7月31日
System.out.println("月份陷阱: " + calendar.getTime());
// 解決方案:使用常量
calendar.set(2023, Calendar.JULY, 31);
// 陷阱2:SimpleDateFormat的線程安全問題
// 解決方案:如前面所述,使用ThreadLocal或每次創(chuàng)建新實例
// 陷阱3:時區(qū)忽略
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zonedDateTime = ZonedDateTime.now();
System.out.println("LocalDateTime: " + localDateTime);
System.out.println("ZonedDateTime: " + zonedDateTime);
// 解決方案:明確使用時區(qū)
ZonedDateTime correctZoned = localDateTime.atZone(ZoneId.systemDefault());

4. 國際化注意事項

// 本地化日期格式
Locale usLocale = Locale.US;
Locale chinaLocale = Locale.CHINA;
DateTimeFormatter usFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).withLocale(usLocale);
DateTimeFormatter chinaFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL).withLocale(chinaLocale);
ZonedDateTime now = ZonedDateTime.now();
System.out.println("美國格式: " + now.format(usFormatter));
System.out.println("中國格式: " + now.format(chinaFormatter));
// 本地化星期和月份名稱
String dayName = now.getDayOfWeek().getDisplayName(TextStyle.FULL, chinaLocale);
String monthName = now.getMonth().getDisplayName(TextStyle.FULL, chinaLocale);
System.out.println("中文星期: " + dayName);
System.out.println("中文月份: " + monthName);

七、擴展學習

1. Joda-Time庫簡介

// Joda-Time的基本使用(如果項目中已添加依賴)
/*
<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.10.10</version>
</dependency>
*/
// 創(chuàng)建DateTime實例
org.joda.time.DateTime jodaDateTime = new org.joda.time.DateTime();
System.out.println("Joda-Time當前時間: " + jodaDateTime);
// 日期計算
org.joda.time.DateTime plusDays = jodaDateTime.plusDays(3);
System.out.println("加3天: " + plusDays);
// 格式化
org.joda.time.format.DateTimeFormatter jodaFormatter = 
    org.joda.time.format.DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
System.out.println("格式化: " + jodaFormatter.print(jodaDateTime));

2. ThreeTen-Extra項目

// ThreeTen-Extra提供了額外的日期時間類
/*
<dependency>
    <groupId>org.threeten</groupId>
    <artifactId>threeten-extra</artifactId>
    <version>1.7.0</version>
</dependency>
*/
// 使用Interval類
org.threeten.extra.Interval interval = 
    org.threeten.extra.Interval.of(
        Instant.now(), 
        Instant.now().plusSeconds(3600));
System.out.println("Interval時長: " + interval.toDuration().getSeconds() + "秒");
// 使用YearQuarter類
org.threeten.extra.YearQuarter yearQuarter = 
    org.threeten.extra.YearQuarter.now();
System.out.println("當前季度: " + yearQuarter);

八、實戰(zhàn)項目

1. 開發(fā)一個時間工具類

public class DateTimeUtils {
    private static final DateTimeFormatter DEFAULT_FORMATTER = 
        DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    // 獲取當前時間字符串
    public static String now() {
        return LocalDateTime.now().format(DEFAULT_FORMATTER);
    }
    // 計算兩個日期之間的工作日
    public static long calculateWorkingDays(LocalDate start, LocalDate end) {
        return start.datesUntil(end)
            .filter(date -> date.getDayOfWeek() != DayOfWeek.SATURDAY && 
                           date.getDayOfWeek() != DayOfWeek.SUNDAY)
            .count();
    }
    // 時區(qū)轉換
    public static ZonedDateTime convertTimezone(ZonedDateTime dateTime, String zoneId) {
        return dateTime.withZoneSameInstant(ZoneId.of(zoneId));
    }
    // 測試工具類
    public static void main(String[] args) {
        System.out.println("當前時間: " + DateTimeUtils.now());
        LocalDate start = LocalDate.of(2023, 7, 1);
        LocalDate end = LocalDate.of(2023, 7, 31);
        System.out.println("工作日天數: " + calculateWorkingDays(start, end));
        ZonedDateTime now = ZonedDateTime.now();
        System.out.println("紐約時間: " + convertTimezone(now, "America/New_York"));
    }
}

2. 實現一個工作日計算器

public class WorkingDayCalculator {
    private final Set<LocalDate> holidays;
    public WorkingDayCalculator() {
        this.holidays = new HashSet<>();
    }
    public void addHoliday(LocalDate date) {
        holidays.add(date);
    }
    public long calculateWorkingDays(LocalDate start, LocalDate end) {
        return start.datesUntil(end)
            .filter(this::isWorkingDay)
            .count();
    }
    private boolean isWorkingDay(LocalDate date) {
        return date.getDayOfWeek() != DayOfWeek.SATURDAY && 
               date.getDayOfWeek() != DayOfWeek.SUNDAY && 
               !holidays.contains(date);
    }
    public static void main(String[] args) {
        WorkingDayCalculator calculator = new WorkingDayCalculator();
        // 添加2023年國慶假期
        calculator.addHoliday(LocalDate.of(2023, 10, 1));
        calculator.addHoliday(LocalDate.of(2023, 10, 2));
        calculator.addHoliday(LocalDate.of(2023, 10, 3));
        LocalDate start = LocalDate.of(2023, 10, 1);
        LocalDate end = LocalDate.of(2023, 10, 7);
        long workingDays = calculator.calculateWorkingDays(start, end);
        System.out.println("2023年國慶假期期間的工作日天數: " + workingDays);
    }
}

3. 構建一個跨時區(qū)會議系統(tǒng)的時間處理模塊

public class MeetingScheduler {
    private final Map<String, ZoneId> participantTimeZones;
    public MeetingScheduler() {
        this.participantTimeZones = new HashMap<>();
    }
    public void addParticipant(String name, String timeZone) {
        participantTimeZones.put(name, ZoneId.of(timeZone));
    }
    public Map<String, ZonedDateTime> scheduleMeeting(String organizer, LocalDateTime localTime) {
        ZoneId organizerZone = participantTimeZones.get(organizer);
        if (organizerZone == null) {
            throw new IllegalArgumentException("Organizer not found");
        }
        ZonedDateTime organizerTime = ZonedDateTime.of(localTime, organizerZone);
        Map<String, ZonedDateTime> times = new HashMap<>();
        for (Map.Entry<String, ZoneId> entry : participantTimeZones.entrySet()) {
            String participant = entry.getKey();
            ZoneId zone = entry.getValue();
            times.put(participant, organizerTime.withZoneSameInstant(zone));
        }
        return times;
    }
    public static void main(String[] args) {
        MeetingScheduler scheduler = new MeetingScheduler();
        // 添加參與者
        scheduler.addParticipant("Alice", "America/New_York");
        scheduler.addParticipant("Bob", "Europe/London");
        scheduler.addParticipant("Charlie", "Asia/Tokyo");
        scheduler.addParticipant("David", "Australia/Sydney");
        // Alice在紐約安排會議時間為2023-07-31 14:00
        LocalDateTime meetingTime = LocalDateTime.of(2023, 7, 31, 14, 0);
        Map<String, ZonedDateTime> schedule = scheduler.scheduleMeeting("Alice", meetingTime);
        // 打印各參與者的本地時間
        schedule.forEach((name, time) -> {
            System.out.printf("%s的本地會議時間: %s %s\n", 
                name, 
                time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")),
                time.getZone());
        });
    }
}

這個完整的Java時間處理教程涵蓋了從基礎概念到高級應用的各個方面,并提供了豐富的代碼示例。您可以根據自己的需求選擇相應的部分進行學習和實踐。

到此這篇關于Java時間處理詳細教程與最佳實踐案例的文章就介紹到這了,更多相關java時間處理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java實現父子線程共享數據的幾種方法

    Java實現父子線程共享數據的幾種方法

    本文主要介紹了Java實現父子線程共享數據的幾種方法,包括直接共享變量、使用?ThreadLocal、同步機制、線程安全的數據結構以及ExecutorService,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2025-04-04
  • SpringMVC自定義攔截器實現過程詳解

    SpringMVC自定義攔截器實現過程詳解

    這篇文章主要介紹了SpringMVC自定義攔截器實現過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Java二維數組實現數字拼圖效果

    Java二維數組實現數字拼圖效果

    這篇文章主要為大家詳細介紹了Java二維數組實現數字拼圖效果,控制臺可以對空格進行移動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 如何通過一個注解實現MyBatis字段加解密

    如何通過一個注解實現MyBatis字段加解密

    用戶隱私很重要,因此很多公司開始做數據加減密改造,下面這篇文章主要給大家介紹了關于如何通過一個注解實現MyBatis字段加解密的相關資料,需要的朋友可以參考下
    2022-02-02
  • java.lang.Instrument 代理Agent使用詳細介紹

    java.lang.Instrument 代理Agent使用詳細介紹

    這篇文章主要介紹了java.lang.Instrument 代理Agent使用詳細介紹的相關資料,附有實例代碼,幫助大家學習參考,需要的朋友可以參考下
    2016-11-11
  • 在Android的應用中實現網絡圖片異步加載的方法

    在Android的應用中實現網絡圖片異步加載的方法

    這篇文章主要介紹了在Android的應用中實現網絡圖片異步加載的方法,一定程度上有助于提高安卓程序的使用體驗,需要的朋友可以參考下
    2015-07-07
  • window?下?win10?jdk8安裝與環(huán)境變量的配置過程

    window?下?win10?jdk8安裝與環(huán)境變量的配置過程

    這篇文章主要介紹了window?下?win10?jdk8安裝與環(huán)境變量的配置,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • 強烈推薦 5 款好用的REST API工具(收藏)

    強烈推薦 5 款好用的REST API工具(收藏)

    市面上可用的 REST API 工具選項有很多,我們來看看其中一些開發(fā)人員最喜歡的工具。本文通過圖文實例代碼相結合給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2020-12-12
  • SpringBoot如何使用注解進行XSS防御

    SpringBoot如何使用注解進行XSS防御

    在SpringBoot中,可以通過自定義@XSS注解和實現XSSValidator類來防御XSS攻擊,此方法適用于GET和POST請求,通過在方法參數或實體類屬性上添加@XSS注解,并結合@Valid或@Validated注解使用,有效攔截潛在的XSS腳本,保障應用安全
    2024-11-11
  • 探究MyBatis插件原理以及自定義插件實現

    探究MyBatis插件原理以及自定義插件實現

    這篇文章主要介紹了探究MyBatis插件原理以及自定義插件實現,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07

最新評論

清水县| 兴仁县| 焉耆| 瑞丽市| 莱芜市| 霸州市| 忻城县| 监利县| 吉林省| 大城县| 林周县| 潜山县| 特克斯县| 原阳县| 平邑县| 巨鹿县| 新乡市| 定结县| 靖江市| 大邑县| 山阴县| 濮阳市| 凉山| 凌源市| 古浪县| 昌图县| 江永县| 南汇区| 襄垣县| 苏州市| 宽城| 长顺县| 手游| 瓮安县| 巴马| 双鸭山市| 扎赉特旗| 绥江县| 刚察县| 余干县| 清丰县|