4月3號.

JDK7前時間相關類:

時間的相關知識:

Data時間類:

?

//1.創建對象表示一個時間
Date d1 = new Date();
//System.out.println(d1);//2.創建對象表示一個指定的時間
Date d2 = new Date(0L);
System.out.println(d2);//3.setTime修改時間
//1000毫秒=1秒
d2.setTime(1000L);
System.out.println(d2);//4.getTime獲取當前時間的毫秒值
long time = d2.getTime();
System.out.println(time);

?

SimpleDateFormat 類作用:

?

SimpleDateFormat 類:

?

//1.利用空參構造創建SimpleDateFormat對象,默認格式
SimpleDateFormat sdf1 = new SimpleDateFormat();
Date d1 = new Date(OL);
String str1 = sdf1.format(d1);
System.out.println(str1);//1970/1/1上午8:00//2.利用帶參構造創建SimpleDateFormat對象,指定格式
SimpleDateFormat sdf2 = new SimpleDateFormat(pattern:"yyyy年MM月dd日 HH:mm:ss EE");
String str2 = sdf2.format(d1);
System.out.println(str2);//1970年01月e1日08:00:00//課堂練習:yyyy年MM月dd日時:分:秒星期E
//1.定義一個字符串表示時間
String str = "2023-11-11 11:11:11";//2.利用空參構造創建SimpleDateFormat對象
//細節:
//創建對象的格式要跟字符串的格式完全一致
SimpleDateFormat sdf = new SimpleDateFormat(pattern:"yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(str);//3.打印結果
System.out.println(date.getTime());//1699672271000

?Calendar概述:

?Calendar常用方法:

?細節1:Calendar是一個抽象類,不能直接new,而是通過一個靜態方法獲取到子類對象
?底層原理:會根據系統的不同時區來獲取不同的日歷對象. 把會把時間中的紀元,年,月,日,時,分,秒,星期,等等的都放到一個數組當中.

?細節2:月份:范圍0~11 如果獲取出來的是0.那么實際上是1月。
? 星期:在老外的眼里,星期日是一周中的第一天
1(星期日)? ?2(星期一)?3(星期二)4(星期三)5(星期四)6(星期五)7(星期六)

?JDK8:

ZoneID時區:

//1.獲取所有的時區名稱
Set<String> zoneIds = ZoneId.getAvailableZoneIds();
System.out.println(zoneIds.size());//600
System.out.println(zoneIds);// Asia/Shanghai//2.獲取當前系統的默認時區
ZoneId zoneId = ZoneId.systemDefault();
System.out.println(zoneId);//Asia/Shanghai//3.獲取指定的時區
ZoneId zoneId1 = ZoneId.of("Asia/Pontianak");
System.out.println(zoneId1);//Asia/Pontianak

Instant時間戳:

//1.獲取當前時間的Instant對象(標準時間)
//Instant now = Instant.now();
//System.out.println(now);//2.根據(秒/毫秒/納秒)獲取Instant對象
Instant instant1 = Instant.ofEpochMilli(0L);
System.out.println(instant1);//1970-01-01T00:00:00zInstant instant2 = Instant.ofEpochSecond(1L);
System.out.println(instant2);//1970-01-01T00:00:01ZInstant instant3 = Instant.ofEpochSecond(epochSecond:1L,nanoAdjustment:1eeeeeeeeeL);
System.out.println(instant3);//1970-01-01T00:00:02z//3.指定時區
ZonedDateTime time = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
System.out.println(time);//4.isXxx判斷
Instant instant4 = Instant.ofEpochMilli(0L);
Instant instant5 = Instant.ofEpochMilli(1000L);//5.用于時間的判斷
//isBefore:判斷調用者代表的時間是否在參數表示時間的前面
boolean result1 = instant4.isBefore(instant5);
System.out.println(result1);//true//isAfter:判斷調用者代表的時間是否在參數表示時間的后面
boolean result2 = instant4.isAfter(instant5);
System.out.println(result2);//false//6.Instant minusXxx(long millisToSubtract)減少時間系列的方法
Instant instant6 = Instant.ofEpochMilli(3000L);
System.out.println(instant6);//1970-01-01T00:00:03Z
Instant instant7 = instant6.minusSeconds(1);
System.out.println(instant7);//1970-01-01T00:00:02z

ZoneDateTime帶時區的時間:

//1.獲取當前時間對象(帶時區)
ZonedDateTime now = ZonedDateTime.now();
System.out.println(now);//2.獲取指定的時間對象(帶時區)
//年月日時分秒納秒方式指定
ZonedDateTime time1 = ZonedDateTime.of(year:2023, month: 10, dayOfMonth:1,
hour: 11,minute:12, second: 12, nanoOfSecond: 0 ,ZoneId.of("Asia/Shanghai");
System.out.println(time1);//通過Instant+時區的方式指定獲取時間對象
Instant instant = Instant.ofEpochMilli(OL);
ZoneId zoneId = ZoneId.of("Asia/Shanghai");
ZonedDateTime time2 = ZonedDateTime.ofInstant(instant, zoneId);
System.out.println(time2);//3.withXxx修改時間系列的方法
ZonedDateTime time3 = time2.withYear(2000);
System.out.println(time3);//4.減少時間
ZonedDateTime time4 = time3.minusYears(1);
System.out.println(time4);//5.增加時間
ZonedDateTime time5 = time4.plusYears(1);
System.out.println(time5);

? 細節:JDK8新增的時間對象都是不可變的.? 如果我們修改了,減少了,增加了時間.? 那么調用者是不會發生改變的,產生一個新的時間.

DateTimeFormatter用于時間的格式化和解析:

//獲取時間對象
ZonedDateTime time = Instant.now().atZone(ZoneId.of("Asia/Shanghai"));
//解析/格式化器
DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss EE a");
//格式化
System.out.println(dtf1.format(time));

LocalDate、LocalTime、LocalDateTime:

//1.獲取當前時間的日歷對象(包含年月日)
LocalDate nowDate = LocalDate.now();
System.out.println("今天的日期:"+nowDate);//2.獲取指定的時間的日歷對象
LocalDate 1dDate = LocalDate.of(year: 2023,month:1,dayOfMonth:1);
System.out.println("指定日期:"+1dDate);
System.out.println("=========");//3.get系列方法獲取日歷中的每一個屬性值
//獲取年
int year = ldDate.getYear();
System.out.println("year: " + year);//獲取月
//方式一:
Month m = ldDate.getMonth();
System.out.println(m);
System.out.println(m.getValue());
//方式二:
int month = ldDate.getMonthValue();
System.out.println("month: " + month);//獲取日
int day = 1dDate.getDayOfMonth();
System.out.println("day: " + day);//獲取一年的第幾天
int dayOfYear = ldDate.getDayOfYear();
System.out.println("dayOfYear:" + dayOfYear);///獲取星期
DayOfWeek dayOfWeek = 1dDate.getDayOfWeek();
System.out.println(dayOfWeek);
System.out.println(dayOfWeek.getValue());//is開頭的方法表示判斷
System.out.println(ldDate.isBefore(1dDate));
System.out.println(1dDate.isAfter(ldDate));//with開頭的方法表示修改,只能修改年月日
LocalDate withLocalDate = ldDate.withYear(2000);
System.out.println(withLocalDate);//minus開頭的方法表示減少,只能減少年月日
LocalDate minusLocalDate = ldDate.minusYears(1);
System.out.println(minusLocalDate);//plus開頭的方法表示增加,只能增加年月日
LocalDate plusLocalDate = 1dDate.plusDays(1);
System.out.println(plusLocalDate);

Duration、Period、ChronoUnit:

//當前本地年月日
LocalDate today = LocalDate.now();
System.out.println(today);//生日的年月日
LocalDate birthDate = LocalDate.of(year:2000,month:1,dayOfMonth:1);
System.out.println(birthDate);
Periodperiod=Period.between(birthDate,today);//第二個參數減第一個參數
System.out.println("相差的時間間隔對象:"+ period);//P22Y6M17D
System.out.println(period.getYears());
System.out.println(period.getMonths()); 
System.out.println(period.getDays());
System.out.println(period.toTotalMonths());
//本地日期時間對象。
LocalDateTime today = LocalDateTime.now();
System.out.println(today);//出生的日期時間對象
LocalDateTime birthDate= LocalDateTime.of(year:2000,month:1,dayOfMonth:1,hour:0, minute:00,second:00);
System.out.println(birthDate);
Duration duratior = Duration.between(birthDate,today);//第二個參數減第一個參數
System.out.println("相差的時間間隔對象:" + duration);System.out.println(duration.toDays());//兩個時間差的天數
System.out.println(duration.toHours());//兩個時間差的小時數
System.out.println(duration.toMinutes());//兩個時間差的分鐘數
System.out.println(duration.toMillis());//兩個時間差的毫秒數
System.out.println(duration.toNanos());//兩個時間差的納秒數
//當前時間
LocalDateTime tōday = LocalDateTime.now();
System.out.println(today);//生日時間
LocalDateTime birthDate = LocalDateTime.of(year:2eee,month:1,dayOfMonth:1,
hour: 0,minute:0,second: 0);
System.out.println(birthDate);System.out.printIn("相差的年數:"+ ChronoUnit.YEARS.between(birthDate,today));
System.out.printIn("相差的月數: "+ ChronoUnit.MONTHS.between(birthDate,today));
System.out.printIn("相差的周數: "+ ChronoUnit.WEEKS.between(birthDate,today));
System.out.println("相差的天數: "+ ChronoUnit.DAYs.between(birthDate,today));
System.out.println("相差的時數:"+ ChronoUnit.HOuRs.between(birthDate,today));
System.out.printIn("相差的分數:"+ ChronoUnit.MINUTES.between(birthDate,today));
System.out.println("相差的秒數: "+ ChronoUnit.SECoNDS.between(birthDate,today));
System.out.printIn("相差的毫秒數:"+ ChronoUnit.MILLIS.between(birthDate,today));
System.out.printIn("相差的微秒數: "+ ChronoUnit.MICRos.between(birthDate,today));
System.out.println("相差的納秒數:"+ ChronoUnit.NANOs.between(birthDate,today));
System.out.println("相差的半天數: "+ ChronoUnit.HALF_DAYS.between(birthDate,today));
System.out.println("相差的十年數:"+ ChronoUnit.DECADES.between(birthDate,today));
System.out.println("相差的世紀(百年)數:"+ChronoUnit.CENTURIES.between(birthDate,today));
System.out.println("相差的千年數:"+ ChronoUnit.MILLENNIA.between(birthDate,today));
System.out.println("相差的紀元數: "+ ChronoUnit.ERAS.between(birthDate,today));

包裝類:

//1.利用構造方法獲取Integer的對象(JDK5以前的方式)
Integer i1 =r
new Integer(value:1);
Integer i2 = new Integer(s:"1");
System.out.println(i1);
System.out.println(i2);//2.利用靜態方法獲取Integer的對象(JDK5以前的方式)
Integer i3 = Integer.valueOf(123);
Integer i4 = Integer.valueOf("123");
Integer i5 = Integer.valueOf(s:"123",radix:8);System.out.println(i3);
System.out.println(i4);
System.out.println(i5);//83
//3.這兩種方式獲取對象的區別(掌握)
Integer i6 =Integer.valueOf(127);
Integer i7 =Integer.valueOf(127);
System.out.println(i6==i7);//falseInteger i8 = Integer.valueOf(128)
Integer i9 = Integer.valueof(128);
System.out.println(i8==i9);Integer i10 = new Integer(value:127);
Integer i11 = new Integer(value:127);
System.out.println(i10==i11);Integer i12 = new Integer(value:128)
Integer i13 = new Integer(value:128);
System.out.println(i12==i13);

? 底層原理:因為在實際開發中,-128~127之間的數據,用的比較多.? 如果每次使用都是new對象,那么太浪費內存了.? 所以,提前把這個范圍之內的每一個數據都創建好對象.? 如果要用到了不會創建新的,而是返回已經創建好的對象.

//1.把整數轉成二進制,十六進制
String str1 = Integer.toBinaryString(i:100);
System.out.println(str1);//1100100//2.把整數轉成八進制
String str2 = Integer.toOctalString(i:100);
System.out.println(str2);//144//3.把整數轉成十六進制
String str3 = Integer.toHexString(i:100);
System.out.println(str3);//64//4.將字符串類型的整數轉成int類型的整數
//強類型語言:每種數據在java中都有各自的數據類型
//在計算的時候,如果不是同一種數據類型,是無法直接計算的。
int i = Integer.parseInt(s:"123");
System.out.println(i);
System.out.println(i + 1);//124

?細節1:在類型轉換的時候,括號中的參數只能是數字不能是其他,否則代碼會報錯
?細節2:8種包裝類當中,除了character都有對應的parseXxx的方法,進行類型轉換

//鍵盤錄入
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個字符串");
String str = sc.next();
System.out.println(str);String line = sc.nextLine();
System.out.println(line);double V = Double.parseDouble(1ine);
System.out.println(v + 1);

?弊端:當我們在使用next,nextInt,nextDouble在接收數據的時候,遇到空格,回車,制表符的時候就停止了 ,鍵盤錄入的是123123那么此時只能接收到空格前面的數據 , 我想要的是接收一整行數據.
?約定:以后我們如果想要鍵盤錄入,不管什么類型,統一使用nextLine , 特點遇到回車才停止.

Arrays:

//toString:將數組變成字符串
int[] arr = {1,2, 3, 4, 5,6, 7,8,9,10};
System.out.println(Arrays.toString(arr));//[1,2,3,4,5,6,7,8,9,10]//binarySearch:二分查找法查找元素
//細節1:二分查找的前提:數組中的元素必須是有序,數組中的元素必須是升序的
//細節2:如果要查找的元素是存在的,那么返回的是真實的索引
//但是,如果要查找的元素是不存在的,返回的是插入點-1
//疑問:為什么要減1呢?
//解釋:如果此時,我現在要查找數字0,那么如果返回的值是-插入點,就會出現問題了。
//如果要查找數字0,此時θ是不存在的,但是按照上面的規則-插入點,應該就是-0
//為了避免這樣的情況,Java在這個基礎上又減一。
System.out.println(Arrays.binarySearch(arr,key:10));//9
System.out.println(Arrays.binarySearch(arr,key:2));//1
System.out.printIn(Arrays.binarySearch(arr,key:20));//-11//copyof:拷貝數組
//參數一:老數組
//參數二:新數組的長度
//方法的底層會根據第二個參數來創建新的數組
//如果新數組的長度是小于老數組的長度,會部分拷貝
//如果新數組的長度是等于老數組的長度,會完全拷貝
//如果新數組的長度是大于老數組的長度,會補上默認初始值
int[] newArr1 = Arrays.copyof(arr,newLength:20);
System.out.println(Arrays.toString(newArr1));//[1,2, 3,4, 5,6, 7,8, 9,10]//copyOfRange:拷貝數組(指定范圍)
//細節:包頭不包尾,包左不包右
int[] newArr2 = Arrays.copyOfRange(arr,from:0,to:9);
System.out.println(Arrays.toString(newArr2));//[1,2,3,4,5,6,7,8,9]//fi1l:填充數組
Arrays.fill(arr,val:100);
System.out.println(Arrays.toString(arr));//sort:排序。默認情況下,給基本數據類型進行升序排列。底層使用的是快速排序。
int[] arr2 = {10, 2, 3, 5,6,1,7,8, 4,9};
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));

? 底層原理:利用插入排序+二分查找的方式進行排序的。默認把θ索引的數據當做是有序的序列,1索引到最后認為是無序的序列。遍歷無序的序列得到里面的每一個元素,假設當前遍歷得到的元素是A元素? 把A往有序序列中進行插入,在插入的時候,是利用二分查找確定A元素的插入點。拿著A元素,跟插入點的元素進行比較,比較的規則就是compare方法的方法體
? 如果方法的返回值是負數,拿著A繼續跟前面的數據進行比較
? 如果方法的返回值是正數,拿著A繼續跟后面的數據進行比較
? 如果方法的返回值懸0,也拿著A跟后面的數據進行比較
? 直到能確定A的最終位置為止。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75480.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75480.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75480.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據結構與算法:子數組最大累加和問題及擴展

前言 子數組最大累加和問題看似簡單,但能延伸出的題目非常多,千題千面,而且會和其他算法結合出現。 一、最大子數組和 class Solution { public:int maxSubArray(vector<int>& nums) {int n=nums.size();vector<int>dp(n);//i位置往左能延伸出的最大累加…

MIT6.828 Lab3-2 Print a page table (easy)

實驗內容 實現一個函數來打印頁表的內容&#xff0c;幫助我們更好地理解 xv6 的三級頁表結構。 修改內容 kernel/defs.h中添加函數聲明&#xff0c;方便其它函數調用 void vmprint(pagetable_t);// lab3-2 Print a page tablekernel/vm.c中添加函數具體定義 采用…

2025高頻面試設計模型總結篇

文章目錄 設計模型概念單例模式工廠模式策略模式責任鏈模式 設計模型概念 設計模式是前人總結的軟件設計經驗和解決問題的最佳方案&#xff0c;它們為我們提供了一套可復用、易維護、可擴展的設計思路。 &#xff08;1&#xff09;定義&#xff1a; 設計模式是一套經過驗證的…

Java基礎:面向對象進階(二)

01-static static修飾成員方法 static注意事項&#xff08;3種&#xff09; static應用知識&#xff1a;代碼塊 static應用知識&#xff1a;單列模式 02-面向對象三大特征之二&#xff1a;繼承 什么是繼承&#xff1f; 使用繼承有啥好處? 權限修飾符 單繼承、Object類 方法重…

Spring框架如何做EhCache緩存?

在Spring框架中&#xff0c;緩存是一種常見的優化手段&#xff0c;用于減少對數據庫或其他資源的訪問次數&#xff0c;從而提高應用性能。Spring提供了強大的緩存抽象&#xff0c;支持多種緩存實現&#xff08;如EhCache、Redis、Caffeine等&#xff09;&#xff0c;并可以通過…

NVIDIA顯卡

NVIDIA顯卡作為全球GPU技術的標桿&#xff0c;其產品線覆蓋消費級、專業級、數據中心、移動計算等多個領域&#xff0c;技術迭代貫穿架構創新、AI加速、光線追蹤等核心方向。以下從技術演進、產品矩陣、核心技術、生態布局四個維度展開深度解析&#xff1a; 一、技術演進&…

【BUG】生產環境死鎖問題定位排查解決全過程

目錄 生產環境死鎖問題定位排查解決過程0. 表面現象1. 問題分析&#xff08;1&#xff09;數據庫連接池資源耗盡&#xff08;2&#xff09;數據庫鎖競爭(3) 代碼實現問題 2. 分析解決(0) 分析過程&#xff08;1&#xff09;優化數據庫連接池配置&#xff08;2&#xff09;優化數…

【計算機網絡應用層】

文章目錄 計算機網絡應用層詳解一、前言二、應用層的功能三、常見的應用層協議1. HTTP/HTTPS&#xff08;超文本傳輸協議&#xff09;2. DNS&#xff08;域名系統&#xff09;3. FTP&#xff08;文件傳輸協議&#xff09;4. SMTP/POP3/IMAP&#xff08;電子郵件協議&#xff09…

Linux 虛擬化方案

一、Linux 虛擬化技術分類 1. 全虛擬化 (Full Virtualization) 特點&#xff1a;Guest OS 無需修改&#xff0c;完全模擬硬件 代表技術&#xff1a; KVM (Kernel-based Virtual Machine)&#xff1a;主流方案&#xff0c;集成到 Linux 內核 QEMU&#xff1a;硬件模擬器&…

樹莓派 5 換清華源

首先備份原設置 cp /etc/apt/sources.list ~/sources.list.bak cp /etc/apt/sources.list.d/raspi.list ~/raspi.list.bak修改配置 /etc/apt/sources.list 文件替換內容如下&#xff08;原內容刪除&#xff09; deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm …

WGAN原理及實現(pytorch版)

WGAN原理及實現 一、WGAN原理1.1 原始GAN的缺陷1.2 Wasserstein距離的引入1.3 Kantorovich-Rubinstein對偶1.4 WGAN的優化目標1.4 數學推導步驟1.5 權重裁剪 vs 梯度懲罰1.6 優勢1.7 總結 二、WGAN實現2.1 導包2.2 數據加載和處理2.3 構建生成器2.4 構建判別器2.5 訓練和保存模…

Unity網絡開發基礎 (3) Socket入門 TCP同步連接 與 簡單封裝練習

本文章不作任何商業用途 僅作學習與交流 教程來自Unity唐老獅 關于練習題部分是我觀看教程之后自己實現 所以和老師寫法可能不太一樣 唐老師說掌握其基本思路即可,因為前端程序一般不需要去寫后端邏輯 1.認識Socket的重要API Socket是什么 Socket&#xff08;套接字&#xff0…

【linux】一文掌握 ssh和scp 指令的詳細用法(ssh和scp 備忘速查)

文章目錄 入門連接執行SCP配置位置SCP 選項配置示例ProxyJumpssh-copy-id SSH keygenssh-keygen產生鑰匙類型known_hosts密鑰格式 此快速參考備忘單提供了使用 SSH 的各種方法。 參考&#xff1a; OpenSSH 配置文件示例 (cyberciti.biz)ssh_config (linux.die.net) 入門 連…

真實筆試題

文章目錄 線程題樹的深度遍歷 線程題 實現一個類支持100個線程同時向一個銀行賬戶中存入一元錢.需通過同步機制消除競態條件,當所有線程執行完成后,賬戶余額必須精確等于100元 package com.itheima.thread;public class ShowMeBug {private double balance; // 賬戶余額priva…

2.2 路徑問題專題:LeetCode 63. 不同路徑 II

動態規劃解決LeetCode 63題&#xff1a;不同路徑 II&#xff08;含障礙物&#xff09; 1. 題目鏈接 LeetCode 63. 不同路徑 II 2. 題目描述 一個機器人位于 m x n 網格的左上角&#xff0c;每次只能向右或向下移動一步。網格中可能存在障礙物&#xff08;標記為 1&#xff…

2874. 有序三元組中的最大值 II

給你一個下標從 0 開始的整數數組 。nums 請你從所有滿足 的下標三元組 中&#xff0c;找出并返回下標三元組的最大值。 如果所有滿足條件的三元組的值都是負數&#xff0c;則返回 。i < j < k(i, j, k)0 下標三元組 的值等于 。(i, j, k)(nums[i] - nums[j]) * nums[k…

【論文筆記】Llama 3 技術報告

Llama 3中的頂級模型是一個擁有4050億參數的密集Transformer模型&#xff0c;并且它的上下文窗口長度可以達到128,000個tokens。這意味著它能夠處理非常長的文本&#xff0c;記住和理解更多的信息。Llama 3.1的論文長達92頁&#xff0c;詳細描述了模型的開發階段、優化策略、模…

JVM深入原理(一+二):JVM概述和JVM功能

目錄 1. JVM概述 1.1. Java程序結構 1.2. JVM作用 1.3. JVM規范和實現 2. JVM功能 2.1. 功能-編譯和運行 2.2. 功能-內存管理 2.3. 功能-即時編譯 1. JVM概述 1.1. Java程序結構 1.2. JVM作用 JVM全稱是Java Virtual Machine-Java虛擬機 JVM作用:本質上是一個運行在…

SQL Server Integration Services (SSIS) 服務無法啟動

問題現象&#xff1a; 安裝 SQL Server 2022 后&#xff0c;SQL Server Integration Services (SSIS) 服務無法啟動&#xff0c;日志報錯 “服務無法響應控制請求”&#xff08;錯誤代碼 1067&#xff09;或 “依賴服務不存在或已標記為刪除”。 快速診斷 檢查服務狀態與依賴項…

Spring Boot 定時任務的多種實現方式

&#x1f31f; 前言 歡迎來到我的技術小宇宙&#xff01;&#x1f30c; 這里不僅是我記錄技術點滴的后花園&#xff0c;也是我分享學習心得和項目經驗的樂園。&#x1f4da; 無論你是技術小白還是資深大牛&#xff0c;這里總有一些內容能觸動你的好奇心。&#x1f50d; &#x…