主頁 > 後端開發 > 【技識訓累】Spring Boot中的基礎知識【一】

【技識訓累】Spring Boot中的基礎知識【一】

2023-06-27 07:34:59 後端開發

寫在前面

筆者在學校里學習Spring專案的時候,基本上都是老師照著書念PPT,然后演示一些有限的課堂案例,筆者印象很深刻,學校里整個Spring專案也就做了6個課堂練習,而且難度基本上屬于連接上資料庫就算成功,現在看來很簡單的事情,不知道當初為啥搞得這么辛苦

不怕大家笑話,雖然筆者在學校里的成績尚可,但是筆者直到拿到學位證書的時候,還說不清楚maven依賴是什么,在作業的時候才逐漸了解很多內容,后來必須反復思考到底出了啥問題

所謂黑貓白貓,抓到耗子就是好貓,因此筆者翻了好些教科書,又找了好些培訓班網課,結合筆者在科班的經歷,后來發現了他們的優缺點在哪

教科書/科班上課

  • 【優點】知識體系比較完整,基本上學校里會把所有的知識點都過一遍,即便是比較次一些的學校也會過一遍基礎,太過高深的東西專案里用的也不多
  • 【優點】有老師指點,學校的教學資源是無限使用的,你不會的問題可以去問老師,不僅學到知識還能怒刷一波平時分好感度
  • 【缺點】知識體系比較反人性,知識點整合不起來,筆者在看書的時候發現,書上的內容往往是一堆零件,要合體成為一個完整的專案光靠讀書是不行的,基本上第一章都是扯一大堆某某技術的發展歷程,但對于需要做專案的人了解這些意義真不大
  • 【缺點】學習程序比較繁瑣,筆者更喜歡直接的干貨,相信很多同學也和筆者一樣,即我問一個問題,直接告訴我答案,而不是我問一個問題給我一大堆書,說答案就在里面,你找吧,往往你學了幾十頁,專案里某個需求也就用到幾頁甚至幾行而已,你可能不知不覺中用上了都不知道這是哪個知識點
  • 【缺點】做專案程序比較艱難,相信很多同學都跟著書上做專案,但是做著做著往往就和書上的程序走偏了,因為書畢竟是人寫的,有些作者默認你會的東西直接略過去了,事實上很多同學都還不會,往往出現這種情況,連個問的人都沒有
  • 【缺點】學科分類不清,筆者曾經嘗試過把所有的技術都分開,后來發現真心沒啥用,無非是多讀了一些文字罷了,一個專案中往往有些技術結合比較緊密,像MyBatis和Spring其實往往是一起出現的,至少不大有人會扔開Spring單獨去學Mybatis,但是像Spring框架和資料庫mysql或者db2結合就比較松散,因此以這個標準決定到底是分開學還是結合學

培訓班上課/網課

  • 【優點】實踐性比較強,很多培訓班基本上都是給你講義,然后帶你做專案,有做完整專案,也有做一堆課堂練習的,確實彌補了課堂實踐性弱的問題,這某種程度上也解釋了為啥有些培訓班出來的同學反而學得好
  • 【優點】針對性比較強,往往培訓班必須掌握的技術他一定會教,做不出一個完整的專案,你肯定會大呼上當受騙,因此你學到的東西一定能保證你做出來一個專案,不管技術含金量高不高
  • 【缺點】老師水平不高,這里帶點筆者的個人感情色彩,基本上培訓班所謂的老師技術本身也強不到哪里去,他要真這么厲害為啥跑來這種地方掙外快,一年七位數還不夠他瀟灑嗎
  • 【缺點】知識體系不完整,培訓班往往帶你找作業,因此功利性非常強,基本上只教必須會的東西,你想額外拓展的概率不是很高
  • 【缺點】填鴨式教育,這我想上過培訓班的大家都有感受,屬于兩個月走完別人四年的道路,這也是培訓班被人嗤之以鼻的最大原因之一

后來筆者在作業以后了解到了若依,筆者很佩服該專案的作者,擁有很高超的技術

后來經過筆者的總結,想出了一個理論結合實際的看起來有點蠢的辦法,這個方法在其他專案合集中也會使用,當然估計很多書里其實也用過了

那就是筆者同樣會在該系列做一個專案,當然和若依比起來就差遠了,隨著系列往后,內容也會逐漸完整,我們伴隨著專案完整性的升高逐漸輻射所有的知識點,在做專案的時候給和大家討論技術的完整性,當然有些技術可能不太可能或者不太適合在同一個專案中同時出現,例如不可能又使用Hibernate,又使用Mybatis,這方面沒有關系,我們配合版本管理神器【Git】,代碼可以多版本,也可以回退

系列需求

  • 運行第一個Spring Boot專案

同步環境

這里做一個補充說明,有些同學可能對筆者用的IDE比較陌生,這里說一下筆者用的是IDEA 2023.1.1【官網最新版本】破解版

而且對UI做了更新

下載網站:https://www.exception.site/

 

更新UI,另外筆者安裝了中文插件,筆者習慣了中文,因此請同學們自行適應語言

新建專案

使用IntelliJ IDEA創建一個Spring Boot應用程式的步驟如下:

  1. 打開 IntelliJ IDEA,選擇“Create New Project”選單,
  2. 在彈出的對話框中,選擇“Spring Initializr”選項,型別選擇Maven,并點擊“Next”按鈕,
  3. 在下一步中,選擇所需的依賴和Spring Boot版本,例如Web、JPA、MySQL等,
  4. 點擊“Next”按鈕后,輸入專案的名稱、選擇專案的存盤位置和Java SDK版本,并點擊“Finish”按鈕,IntelliJ IDEA會自動創建一個Spring Boot專案,

 

在選擇“Spring Initializr”選項時,需要選擇“Maven”或“Gradle”構建工具型別,

這取決于你想使用哪種構建工具來管理你的專案,

如果你選擇使用Maven,那么在下一步中將會看到Maven專案設定選項,同樣的,如果你選擇使用Gradle,那么在下一步中將會看到Gradle專案設定選項,

在選擇構建工具型別后,點擊“Next”按鈕即可繼續創建Spring Boot應用程式,

 

創建完Spring Boot專案后,需要添加一些必要的依賴,以下是一些常用的依賴:

  1. spring-boot-starter-web:Spring Boot中提供的Web相關依賴,包含Tomcat和Spring MVC,
  2. spring-boot-starter-data-jpa:Spring Boot中提供的JPA相關依賴,使得我們可以方便地使用Hibernate等ORM框架,
  3. spring-boot-starter-security:Spring Boot中提供的安全相關依賴,可以快速集成Spring Security功能,
  4. spring-boot-starter-test:Spring Boot中提供的測驗相關依賴,包括JUnit、Mockito等,

要添加這些依賴,可以直接在pom.xml檔案中添加,例如,要添加spring-boot-starter-web和spring-boot-starter-data-jpa依賴,可以在pom.xml檔案中加入以下內容:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>

完成這些步驟后,可以開始撰寫Spring Boot應用程式了,

專案介紹

Spring Boot的專案結構通常遵循標準的Maven或Gradle專案結構,并遵循約定優于配置的原則,下面是一個常見的Spring Boot專案結構的示例:

1. src/main/java:這個目錄下包含了應用程式的Java源代碼檔案,
   - com.example.myproject:這是默認的主包名(package),
      - controller:包含控制器(Controller)類,用于處理HTTP請求,
      - service:包含服務(Service)類,用于處理業務邏輯,
      - repository:包含存盤庫(Repository)類,用于訪問資料存盤,
      - model:包含資料模型(Model)類,用于表示應用程式中的物體和資料物件,
      - Application.java:包含主啟動類,其中的main方法用于啟動Spring Boot應用程式,

2. src/main/resources:這個目錄下包含了應用程式的資源檔案,
   - application.properties/application.yml:包含應用程式的配置屬性,如資料庫連接、日志級別等,
   - static:包含應用程式的靜態資源檔案,如html、css、js等,
   - templates:包含應用程式的模板檔案,如Thymeleaf模板,

3. src/test/java:這個目錄下包含了應用程式的測驗代碼檔案,通常與src/main/java下的包結構相同,

4. src/test/resources:這個目錄下包含了應用程式的測驗資源檔案,

5. pom.xml/gradle.build:這個檔案是用來定義專案的依賴和構建配置的,

6. target:這個目錄是構建程序中生成的輸出目錄,包含編譯后的類檔案、打包后的可執行jar檔案等,

這只是一個典型的Spring Boot專案結構示例,實際上可以根據需要進行調整和定制,例如,可以將不同的功能模塊放在不同的包下,或者將測驗代碼和資源檔案放在不同的目錄下等,

操作步驟

  • 找到pom.xml,右鍵選中添加為maven專案【該步驟需要已經安裝maven】

  • 為所有專案生成源代碼并更新檔案夾

  • 編譯maven依賴專案

  • 安裝maven依賴專案

  • 如果安裝出現問題記得清空已安裝依賴再重新安裝

  • 運行主類

PS:第一次安裝依賴專案可能會非常慢,請大家耐心等待

學習重點

什么是依賴

在SpringBoot專案中,依賴是指專案所依賴的其他軟體包或模塊,這些依賴通常以Maven或Gradle的形式在專案的構建檔案(如pom.xml或build.gradle)中宣告,依賴可以是其他Java庫、框架或工具,也可以是資料庫驅動程式、Web服務器等,

SpringBoot專案中的依賴通常分為兩種型別:傳遞性依賴和直接依賴,

  • 傳遞性依賴是指專案所依賴的其他軟體包或模塊所依賴的軟體包或模塊,它們會自動被引入到專案中,例如,如果專案依賴于Spring MVC框架,那么專案中還會自動引入Spring Core和Spring Web模塊,
  • 直接依賴是指專案直接依賴的軟體包或模塊,它們需要在構建檔案中顯式宣告,例如,如果專案需要使用MySQL資料庫,就需要在構建檔案中添加MySQL的依賴,

通過定義適當的依賴,可以讓SpringBoot專案自動加載所需的庫和配置,并提供必要的功能和特性,簡化了專案的配置和部署程序,

什么是Maven

Maven是一個開源的專案管理工具,用于構建、管理和發布Java專案,它提供了一種簡潔的方式來定義和管理專案的依賴關系,自動下載所需的依賴項,并支持專案的編譯、測驗、打包和部署,

Maven基于專案物件模型(Project Object Model,POM)的概念,通過一個XML檔案來描述專案的結構和依賴關系,POM檔案包含專案的配置資訊,如專案的坐標(groupId、artifactId和version)、依賴項、插件等,Maven通過讀取POM檔案來了解專案的配置,然后執行相應的操作,

Maven主要具有以下功能:

  1. 依賴管理:Maven通過中央倉庫來管理專案的依賴項,開發者只需要在POM檔案中宣告依賴,Maven會自動下載并安裝相應的依賴項,
  2. 構建和編譯:Maven提供了一套標準的構建程序,支持專案的編譯、測驗、打包等操作,開發者可以通過命令列或集成開發環境(IDE)來執行這些操作,
  3. 專案生命周期管理:Maven定義了一套標準的專案生命周期,包括編譯、測驗、打包、部署等階段,通過執行不同的命令(如mvn compile、mvn test),開發者可以按照特定的生命周期階段來執行相應的操作,
  4. 插件機制:Maven支持插件機制,開發者可以通過插件來擴展Maven的功能,例如,可以使用Maven插件來自動生成檔案、生成代碼、運行靜態分析等,
  5. 多模塊專案支持:Maven支持構建多模塊專案,可以將一個大型專案拆分為多個子模塊,每個子模塊可以單獨構建和測驗,并且可以在父模塊中定義依賴關系,

通過使用Maven,開發者可以更方便地管理和構建Java專案,提高開發效率和代碼質量,它還促進了專案之間的協作和復用,可以輕松地共享和重用已經構建好的庫和組件,由于Maven的廣泛應用,許多開源專案都使用Maven作為其專案管理工具,

如何安裝Maven

1. 前往https://maven.apache.org/download.cgi下載最新版的Maven程式:

2. 將檔案解壓到D:\Program Files\Apache\maven目錄下:

3. 新建環境變數MAVEN_HOME,賦值D:\Program Files\Apache\maven

4. 編輯環境變數Path,追加%MAVEN_HOME%\bin\;

5. 至此,maven已經完成了安裝,我們可以通過DOS命令檢查一下我們是否安裝成功:

mvn -v

如何在IDEA配置Maven

在設定中搜索Maven,然后把maven路徑給配置上去,路徑盡量用英文

解讀一下代碼是什么意思

package com.example.springlearning;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringLearningApplication {

	public static void main(String[] args) {
		SpringApplication.run(SpringLearningApplication.class, args);
		System.out.println("Hello World!");
	}

}

這段代碼是一個Spring Boot應用程式的入口類,它使用了@SpringBootApplication注解,表示該類是一個Spring Boot應用程式的主類,@SpringBootApplication注解相當于使用了@Configuration、@EnableAutoConfiguration和@ComponentScan三個注解,

其中,@Configuration注解表示該類是一個配置類,@EnableAutoConfiguration注解表示啟用自動配置,@ComponentScan注解表示自動掃描組件,

該類的main方法是程式的入口點,通過呼叫SpringApplication.run方法來運行Spring Boot應用程式,同時,在main方法中輸出了"Hello World!",

代碼中的@SpringBootApplication是什么

@SpringBootApplication是一個Spring Boot的注解,它結合了@Configuration、@EnableAutoConfiguration和@ComponentScan三個注解的功能,

@Configuration注解表示這是一個配置類,它等價于將該類作為Spring組態檔中的一個<bean>配置,

@EnableAutoConfiguration注解表示開啟自動配置功能,它會根據添加的依賴自動配置Spring的各種功能,

@ComponentScan注解表示自動掃描并加載符合條件的組件(比如@Service、@Repository、@Component等),并自動注冊為Spring管理的Bean,

綜合起來,@SpringBootApplication注解可以簡化Spring Boot應用的配置,使得開發者只需要關注核心業務邏輯,而不需要手動配置許多繁瑣的東西,

在黑夜里夢想著光,心中覆寫悲傷,在悲傷里忍受孤獨,空守一絲溫暖, 我的淚水是無底深海,對你的愛已無言,相信無盡的力量,那是真愛永在, 我的信仰是無底深海,澎湃著心中火焰,燃燒無盡的力量,那是忠誠永在,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/555993.html

標籤:Java

上一篇:1 java獲取cpu核心數目

下一篇:返回列表

標籤雲
其他(161623) Python(38248) JavaScript(25514) Java(18263) C(15238) 區塊鏈(8272) C#(7972) AI(7469) 爪哇(7425) MySQL(7269) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5875) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4606) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2437) ASP.NET(2404) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1985) HtmlCss(1972) 功能(1967) Web開發(1951) C++(1942) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1881) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • 【技識訓累】Spring Boot中的基礎知識【一】

    博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ......

    uj5u.com 2023-06-27 07:34:59 more
  • 1 java獲取cpu核心數目

    ## java獲取cpu核心數目 >```java >int processors = Runtime.getRuntime().availableProcessors(); >``` ......

    uj5u.com 2023-06-27 07:29:41 more
  • spring啟動流程 (1) 流程概覽

    本文將通過閱讀AnnotationConfigApplicationContext原始碼,分析Spring啟動流程。 # 創建AnnotationConfigApplicationContext ```java AnnotationConfigApplicationContext applicatio ......

    uj5u.com 2023-06-27 07:28:55 more
  • 圖文示例二叉樹的編碼實作程序

    在上一篇文章中,帶大家一起學習認識了樹型資料結構的定義和特點,并特別介紹了二叉樹的遍歷操作,分別有:前序遍歷、中序遍歷、后序遍歷。前中后的核心區別是根據根節點在遍歷程序中的位置決定的,即:根節點在最前面的稱之為中序遍歷,根節點在中間的稱之為中序遍歷,根節點在最后的稱之為后序遍歷。需要大家掌握根據樹形... ......

    uj5u.com 2023-06-26 09:45:45 more
  • [ARM 匯編]高級部分—ARM匯編編程實戰—3.3.2 嵌入式開發環境搭

    搭建一個嵌入式開發環境主要包括以下幾個部分: 1. 安裝交叉編譯器 2. 配置集成開發環境(IDE) 3. 安裝除錯工具 4. 下載和燒錄程式 接下來,我們將詳細介紹每個部分,并提供相應的實體。 1. **安裝交叉編譯器** 交叉編譯器是用于將您撰寫的ARM匯編代碼編譯成可執行檔案的工具。在本教程中 ......

    uj5u.com 2023-06-26 09:40:32 more
  • 圖文示例二叉樹的編碼實作程序

    在上一篇文章中,帶大家一起學習認識了樹型資料結構的定義和特點,并特別介紹了二叉樹的遍歷操作,分別有:前序遍歷、中序遍歷、后序遍歷。前中后的核心區別是根據根節點在遍歷程序中的位置決定的,即:根節點在最前面的稱之為中序遍歷,根節點在中間的稱之為中序遍歷,根節點在最后的稱之為后序遍歷。需要大家掌握根據樹形... ......

    uj5u.com 2023-06-26 09:39:33 more
  • SpringMVC

    [TOC] # SpringMVC ssm mybatis+Spring+Spring+MVC MVC三層架構 spring : IOC 和 AOP Spring: spring執行流程! # 1、什么是SpringMVC Spring MVC是Spring Framework的一部分,是基于Jav ......

    uj5u.com 2023-06-26 08:00:44 more
  • [ARM 匯編]高級部分—ARM匯編編程實戰—3.3.3 嵌入式應用程式設

    在本章節中,我們將學習如何使用ARM匯編撰寫一個簡單的嵌入式應用程式。我們將以STM32F103微控制器為例,撰寫一個程式,實作按下按鈕時點亮LED的功能。 1. **硬體連接** 首先,我們需要將STM32F103微控制器的一個GPIO引腳連接到LED(通過一個合適的電阻),另一個GPIO引腳連接 ......

    uj5u.com 2023-06-26 08:00:35 more
  • C++面試八股文:std::array如何實作編譯器排序?

    某日二師兄參加XXX科技公司的C++工程師開發崗位第25面: > 面試官:`array`熟悉嗎? > > 二師兄:你說的是原生陣列還是`std::array`? > > 面試官:你覺得兩者有什么區別? > > 二師兄:區別不是很大,原生陣列(非動態陣列)和std::array都在堆疊上開辟空間,初始化 ......

    uj5u.com 2023-06-26 08:00:30 more
  • celery筆記七之周期/定時任務及crontab定義

    > 本文首發于公眾號:Hunter后端 > 原文鏈接:[celery筆記七之周期/定時任務及crontab定義](https://mp.weixin.qq.com/s/sNShaRbuM2gm2qn_codaTg) periodic task,即為周期,或者定時任務,比如說每天晚上零點零分需要運行一 ......

    uj5u.com 2023-06-26 08:00:23 more