關于 java:11. 項目結構、Maven、Gradle 構建系統

一、Java 項目目錄結構標準

1.1?Java 項目標準目錄結構總覽

標準 Java 項目目錄結構(以 Maven / Gradle 通用結構為基礎):

project-root/
├── src/
│   ├── main/
│   │   ├── java/              # 主業務邏輯代碼(核心 Java 類)
│   │   ├── resources/         # 配置資源文件(不包含 Java 類)
│   └── test/
│       ├── java/              # 測試代碼(JUnit 單元測試)
│       └── resources/         # 測試時需要用到的資源文件
├── pom.xml                    # Maven 項目構建文件(Maven 項目)
├── build.gradle               # Gradle 項目構建文件(Gradle 項目)
├── README.md                  # 項目說明文件
├── target/ 或 build/          # 編譯輸出目錄(自動生成)

1.2?各目錄詳細解釋

>1. src/main/java

  • 存放 主程序代碼(Java 源文件 .java)。

  • 按照包結構組織代碼,如 com.example.app ? src/main/java/com/example/app/

示例結構:

src/main/java/
└── com/└── example/├── MainApp.java        // 啟動類├── service/│   └── UserService.java└── model/└── User.java

>2. src/main/resources

  • 存放非代碼類資源,如:

    • application.properties / application.yml(Spring Boot 配置)

    • 日志配置 log4j.xml

    • 數據庫連接配置 jdbc.properties

    • 模板文件(HTML、freemarker、thymeleaf)

示例結構:

src/main/resources/
├── application.yml
├── logback.xml
└── static/└── index.html

注意:resources 下的文件在構建時會自動加入到 classpath,程序中可以通過ClassLoader.getResourceAsStream() 加載。

>3. src/test/java

  • 存放 測試代碼,一般用于 JUnit 單元測試或集成測試。

  • 包結構應與 src/main/java 保持一致,便于測試類與實際類一一對應。

示例:

src/test/java/
└── com/└── example/└── service/└── UserServiceTest.java

>4. src/test/resources

  • 測試中需要的配置文件、模擬數據(如 JSON、YAML、mock 文件)等,作用同 main/resources,只在測試中可用。

1.3 項目根目錄常見文件解釋

文件/目錄名說明
pom.xmlMaven 配置文件(聲明依賴、插件、編譯信息等)
build.gradleGradle 配置文件(同上)
README.md項目說明文件
.gitignoreGit 忽略文件配置
.idea/.vscode/IDE 項目文件
target/build/編譯后生成的 .class.jar 等內容

1.4?包結構命名規范

包命名建議以公司域名倒序開頭:

com.example.projectname.module

舉例結構:

src/main/java/com/example/blog/
├── BlogApplication.java   # 主類
├── controller/            # 控制器層(MVC)
├── service/               # 業務邏輯
├── model/                 # 實體類(POJO)
├── repository/            # 持久層(DAO)
└── util/                  # 工具類

1.5?構建產物目錄(自動生成)

對應構建工具:

  • Maven:target/

  • Gradle:build/

這些目錄在執行 mvn package / gradle build 后自動生成,用于存放:

  • 編譯后的 .class 文件

  • 打包后的 .jar / .war

  • 測試報告、日志、臨時文件等

不建議手動修改,通常在 .gitignore 中忽略提交。

1.6?標準結構帶來的好處

優點說明
?清晰模塊分工將業務代碼、測試、資源等分類明確
?IDE 支持良好IntelliJ IDEA / Eclipse 可直接識別
?自動化構建支持Maven / Gradle 構建無需額外配置
?測試代碼與主邏輯隔離避免生產環境中包含調試/測試代碼
?包路徑與文件路徑映射清晰com.xxx 對應目錄結構清晰直觀

1.7?整體結構圖示意

project-root/
├── src/
│   ├── main/
│   │   ├── java/                ← Java 源碼(包結構)
│   │   └── resources/           ← 配置文件、靜態資源
│   └── test/
│       ├── java/                ← 測試源碼(JUnit)
│       └── resources/           ← 測試用的配置或模擬數據
├── pom.xml / build.gradle       ← 構建工具配置
├── target/ 或 build/            ← 編譯輸出(自動生成)
├── README.md                    ← 項目說明
└── .gitignore                   ← Git 忽略文件

二、Maven

Maven 是 Java 領域中最常用的 構建工具和依賴管理系統,它的核心職責:

功能說明
?依賴管理自動下載第三方 jar 包
?構建項目編譯、測試、打包、部署
?插件系統支持代碼編譯、打包、測試、部署等插件
?統一結構使用標準目錄結構,便于協作開發

2.1?pom.xml 基本結構

Maven 項目的核心配置文件就是 pom.xml(Project Object Model)。

一個最基本的 pom.xml 文件如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId>       <!-- 包名(組織ID) --><artifactId>my-app</artifactId>      <!-- 項目名 --><version>1.0.0</version>             <!-- 項目版本 --><packaging>jar</packaging>           <!-- 打包類型:jar/war/pom --></project>

2.2?依賴管理

Maven 依賴通過 <dependencies> 標簽引入:

<dependencies><!-- 1. 生產依賴 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency><!-- 2. 測試依賴 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>   <!-- 只在測試時有效 --></dependency></dependencies>

常見的 scope 范圍含義

scope說明
compile默認值,主程序運行和編譯都需要(最常用)
test測試階段使用
provided編譯期需要,運行時不包含(如 Servlet API)
runtime編譯期不需要,運行時需要
system本地 jar 包,需要手動指定路徑,不推薦使用

2.3?依賴倉庫與本地緩存

Maven 會自動從遠程倉庫(默認是 Maven Central)下載 jar 包,并保存在本地倉庫中:

  • 默認本地倉庫路徑:
    ~/.m2/repository/

  • 如果依賴未指定版本,Maven 會報錯或使用最近一次緩存的版本。

2.4?插件使用(build/plugins)

Maven 構建生命周期依賴插件來實現,比如編譯、打包、測試等。

1)編譯插件示例(maven-compiler-plugin

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source>     <!-- Java 源碼版本 --><target>1.8</target>     <!-- 字節碼版本 --></configuration></plugin></plugins>
</build>

2)打包插件示例(maven-jar-plugin

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.2</version><configuration><archive><manifest><mainClass>com.example.MainApp</mainClass> <!-- 指定啟動類 --></manifest></archive></configuration></plugin></plugins>
</build>

打包后就可以直接運行:

java -jar target/my-app-1.0.0.jar

3)常用插件列表

插件名功能
maven-compiler-plugin編譯 Java 代碼
maven-jar-plugin打包 jar
maven-surefire-plugin運行單元測試
maven-dependency-plugin依賴分析、復制
maven-clean-plugin清理 target/ 目錄
maven-assembly-plugin打包帶依賴的 fat jar

2.5?完整 pom.xml 示例

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>myapp</artifactId><version>1.0.0</version><packaging>jar</packaging><dependencies><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope></dependency></dependencies><build><plugins><!-- 編譯插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>1.8</source><target>1.8</target></configuration></plugin><!-- 打包插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>3.2.2</version><configuration><archive><manifest><mainClass>com.example.MainApp</mainClass></manifest></archive></configuration></plugin></plugins></build>
</project>

2.6?常用 Maven 命令回顧

命令說明
mvn clean清理 target/
mvn compile編譯主程序
mvn test執行測試類
mvn package編譯 + 打包
mvn install安裝 jar 到本地倉庫
mvn dependency:tree查看依賴樹
mvn help:effective-pom查看完整的有效 POM

2.7 小結

pom.xml 配置結構:
├── groupId / artifactId / version     # 基礎身份
├── dependencies                       # 依賴管理
├── build
│   └── plugins                        # 構建插件
│       └── compiler / jar / ...
├── properties                         # 自定義屬性(如 Java 版本)
└── profiles(可選)                  # 多環境配置(開發/測試/生產)

三、Gradle

Gradle 是一個現代化、基于 Groovy/Kotlin DSL 的構建工具,用于:

功能描述
?依賴管理類似 Maven,自動引入 jar 包
?構建流程編譯、測試、打包、部署
?插件化自定義構建任務,靈活可編程
?性能高支持增量構建和緩存機制
?Android 開發官方推薦構建工具

3.1?Gradle 項目的基本目錄結構

Gradle 項目也遵循和 Maven 相似的標準結構:

project-root/
├── build.gradle           ← Gradle 配置文件(核心)
├── settings.gradle        ← 項目名與模塊聲明
├── src/
│   ├── main/
│   │   ├── java/           ← 主程序代碼
│   │   └── resources/      ← 資源文件
│   └── test/
│       ├── java/           ← 測試代碼
│       └── resources/
├── build/                 ← 編譯輸出目錄(自動生成)

3.2?build.gradle 詳解(Groovy DSL)

下面是一個典型的 Java 項目的 build.gradle 文件結構:

// 1. 插件(功能)
plugins {id 'java'                         // 應用 Java 插件
}// 2. 項目信息
group = 'com.example'                // 組織名稱
version = '1.0.0'                    // 項目版本// 3. 倉庫(依賴從哪兒下)
repositories {mavenCentral()                   // 使用中央倉庫
}// 4. 項目依賴
dependencies {// 編譯期依賴(默認)implementation 'org.apache.commons:commons-lang3:3.12.0'// 測試期依賴testImplementation 'junit:junit:4.13.2'
}// 5. 編譯器配置(可選)
tasks.withType(JavaCompile) {options.encoding = 'UTF-8'       // 設置文件編碼
}

3.3?依賴導入方式(dependencies 塊)

Gradle 支持多種依賴作用范圍:

1)常見依賴作用域

作用域說明
implementation編譯期 & 運行期依賴(推薦)
api公開依賴(用于庫項目)
compileOnly編譯期依賴(運行時無效)
runtimeOnly運行期依賴(編譯時無效)
testImplementation測試代碼專用依賴

2)示例依賴導入

dependencies {// 主程序依賴implementation 'com.google.guava:guava:32.1.2-jre'// 只在測試中用testImplementation 'junit:junit:4.13.2'// 編譯期依賴但不打包compileOnly 'javax.servlet:servlet-api:2.5'// 運行期依賴(不參與編譯)runtimeOnly 'mysql:mysql-connector-java:8.0.33'
}

3)本地 jar 文件依賴

dependencies {implementation files('libs/mylib.jar')
}

4)自定義倉庫

repositories {mavenCentral()mavenLocal()maven {url 'https://repo.spring.io/milestone'}
}

3.4?常用插件及配置

Gradle 插件添加方式(Groovy DSL):

1)Java 插件(編譯 Java 項目)

plugins {id 'java'
}

2)Application 插件(指定 main 方法并允許運行)

plugins {id 'application'
}application {mainClass = 'com.example.MainApp'
}

執行命令:

gradle run

3.5?常用命令

命令功能
gradle build編譯、測試并打包
gradle clean清理 build 目錄
gradle test執行測試類
gradle run運行 main 函數(需配置 application 插件)
gradle dependencies查看依賴樹
gradle --offline離線構建

3.6?補充:settings.gradle 文件

如果是單模塊項目:

rootProject.name = 'myapp'

如果是多模塊項目:

rootProject.name = 'parent-project'
include 'module-a', 'module-b'

3.7 完整 build.gradle 示例

plugins {id 'java'id 'application'
}group = 'com.example'
version = '1.0.0'repositories {mavenCentral()
}dependencies {implementation 'org.apache.commons:commons-lang3:3.12.0'testImplementation 'junit:junit:4.13.2'
}application {mainClass = 'com.example.MainApp'
}tasks.withType(JavaCompile) {options.encoding = 'UTF-8'
}

3.8 小結

build.gradle
├── plugins                # 插件(java、application等)
├── group/version          # 項目信息
├── repositories           # 依賴倉庫(mavenCentral)
├── dependencies           # 項目依賴(impl、testImpl)
├── application            # 入口類配置(mainClass)
└── tasks.withType         # 編譯設置(編碼、警告等)

四、單元測試

JUnit 是 Java 中最常用的單元測試框架,用于對 Java 方法進行自動化測試。

它的作用是:

功能描述
?自動驗證函數行為比如:加法是否正確、異常是否拋出
?回歸測試每次修改后自動跑測試,保證老功能沒出問題
?提高質量提高代碼的健壯性和可維護性
?自動集成可與 Maven/Gradle/CI/CD 集成自動執行測試

4.1?JUnit 常見版本

版本特點
JUnit 4.x最廣泛使用,使用注解 @Test
JUnit 5.x新一代框架,分為 3 個模塊(Jupiter、Platform、Vintage),更強大但結構更復雜

這里用最常見的 JUnit 4 講解

4.2?Maven/Gradle 中引入 JUnit

Maven 中添加依賴:

<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
</dependency>

Gradle 中添加依賴:

dependencies {testImplementation 'junit:junit:4.13.2'
}

4.3?測試代碼目錄規范

project-root/
├── src/
│   ├── main/
│   │   └── java/com/example/Calculator.java   ← 被測試類
│   └── test/
│       └── java/com/example/CalculatorTest.java ← 測試類

測試類放在 src/test/java包路徑與主類保持一致

4.4?一個最基本的測試類示例

被測試類(Calculator.java):

package com.example;public class Calculator {public int add(int a, int b) {return a + b;}public int divide(int a, int b) {return a / b;  // 可能拋出異常}
}

對應測試類(CalculatorTest.java):

package com.example;import org.junit.Test;
import static org.junit.Assert.*;public class CalculatorTest {@Testpublic void testAdd() {Calculator c = new Calculator();int result = c.add(2, 3);assertEquals(5, result);  // 斷言結果為 5}@Test(expected = ArithmeticException.class)public void testDivideByZero() {Calculator c = new Calculator();c.divide(10, 0);  // 應該拋異常}
}

4.5?常用斷言方法(org.junit.Assert

方法說明
assertEquals(expected, actual)判斷相等(值類型)
assertTrue(condition)判斷為 true
assertFalse(condition)判斷為 false
assertNull(obj)判斷為 null
assertNotNull(obj)判斷不為 null
assertArrayEquals(expected, actual)判斷數組相等
assertThrows(Exception.class, () -> xxx)判斷拋出異常(JUnit 5)
@Test(expected = Exception.class)判斷拋出異常(JUnit 4)

4.6?測試生命周期注解(JUnit 4)

注解說明
@Before每個測試方法執行前運行(初始化)
@After每個測試方法執行后運行(清理)
@BeforeClass所有測試前執行一次(必須是 static)
@AfterClass所有測試后執行一次(必須是 static)
@Test表示該方法是測試方法

示例:

@Before
public void setUp() {System.out.println("每次測試前初始化");
}@After
public void tearDown() {System.out.println("每次測試后清理");
}

4.7?如何運行測試

方式 1:命令行運行

  • Maven:
mvn test
  • Gradle:
gradle test

方式 2:IDEA 中運行

  • 右鍵點擊測試類或方法 → Run

>測試結果展示

測試通過 ? :綠色
測試失敗?? :紅色(IDE 會顯示期望值與實際值差異)

4.8?使用測試套件(Test Suite)

當有很多測試類時,可以用 @RunWith @SuiteClasses 組織一個測試集合:

import org.junit.runner.RunWith;
import org.junit.runners.Suite;@RunWith(Suite.class)
@Suite.SuiteClasses({CalculatorTest.class,OtherTest.class
})
public class AllTests {// 空類,僅用于組合多個測試
}

4.9 小結

測試類結構
├── Calculator.java         ← 生產類
├── CalculatorTest.java     ← 測試類
│   ├── @Test               ← 測試函數
│   ├── assertEquals 等     ← 斷言
│   ├── @Before / @After    ← 生命周期鉤子
├── 測試運行方式:mvn test / gradle test / IDE

五、Java 項目運行流程

一個標準 Java 項目的運行流程,大致可以總結為以下 5 步:

1. 確定主類(含 main 方法入口)
2. 編譯源代碼(.java → .class)
3. 加載依賴(jar 包、本地類)
4. 構建 ClassPath(類路徑)
5. JVM 調用 main() 執行程序

5.1?主類(程序入口)

>?什么是主類?

主類是包含 public static void main(String[] args) 方法的類。

public class MainApp {public static void main(String[] args) {System.out.println("Hello, Java!");}
}
  • main 方法是 Java 應用程序的入口點

  • 它必須是 public static 修飾,接收 String[] 作為參數

>?運行方式

  • 通過 IDE(右鍵 → Run MainApp.main()

  • 命令行方式:

javac MainApp.java       # 編譯成 class 文件
java MainApp             # 運行,執行 main 方法

5.2?模塊(module)

1)模塊在標準項目中的含義

在非模塊化(傳統)項目中,“模塊”通常指:

  • 項目中的一個子系統(如 user, order, common 模塊)

  • 獨立的包結構 + 代碼目錄

例如:

com.example.user
com.example.payment

2)Java 9+ 模塊化系統

Java 9 引入了正式的模塊系統(module-info.java),但并不是所有項目都使用。

示例:

module com.example.myapp {requires java.sql;exports com.example.myapp.api;
}

初學階段可以不接觸 Java Module System(復雜度較高)

5.3?依賴(第三方/內部)

>?什么是依賴?

  • Java 項目中調用的 不是你寫的類(外部庫、jar 包),就是依賴。

  • 如:Spring、Guava、Jackson、JDBC Driver

>?依賴加載方式

來源加載方式
本地 .class 文件自動加載進內存
本地 .jarJVM 通過 classpath 加載
遠程依賴(Maven/Gradle)會先下載 → 緩存到本地 .m2.gradle 倉庫,然后加入構建路徑

示例依賴:使用 commons-lang3

import org.apache.commons.lang3.StringUtils;String str = "abc";
System.out.println(StringUtils.isNotEmpty(str));

這段代碼依賴了 Apache 的 commons-lang3 庫,需要添加:

  • Maven:

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version>
</dependency>
  • Gradle:

implementation 'org.apache.commons:commons-lang3:3.12.0'

5.4?ClassPath 與類加載

> ClassPath 是什么?

  • ClassPath 是 JVM 在運行時查找 .class 文件的路徑。

  • 含義類似 Python 的 sys.path、Linux 的 PATH。

可以通過命令查看:

java -cp target/classes:libs/* com.example.MainApp

> 類加載器(ClassLoader)作用

JVM 使用以下幾種類加載器:

類加載器作用
BootstrapClassLoader加載核心類(rt.jar)
ExtensionClassLoader加載擴展庫(lib/ext)
AppClassLoader加載我們自己的類
自定義 ClassLoader特殊用途(框架、熱部署)

5.5?Java 程序執行流程詳解圖

啟動 JVM → 找到入口類 main() → 加載依賴(jar)→ 創建 ClassLoader → 執行方法

圖解:

+------------------+
| java MainApp     |
+--------+---------+|v
+------------------------+
| 加載 MainApp.class     |
+------------------------+|v
+--------------------------+
| 初始化依賴類(StringUtils)|
+--------------------------+|v
+-------------------+
| 執行 main()       |
| 打印輸出          |
+-------------------+

5.6?打包運行流程(.jar)

Maven 打包命令:

mvn clean package

會在 target/ 目錄生成 xxx.jar

設置 mainClass 打包運行:

<build><plugins><plugin><artifactId>maven-jar-plugin</artifactId><configuration><archive><manifest><mainClass>com.example.MainApp</mainClass></manifest></archive></configuration></plugin></plugins>
</build>

運行 jar:

java -jar target/myapp-1.0.0.jar

5.7?實踐建議

  • 使用 Maven 或 Gradle 來管理依賴和構建流程

  • 主類必須有 main() 且所在包正確(IDEA 會自動識別)

  • 每個模塊職責明確(如 service、controller、model)

  • 合理組織目錄結構,遵循 src/main/java 標準

5.8?小結

Main Class(main 方法)↓
編譯為 .class↓
查找依賴(內部類 + 外部 jar)↓
由 JVM 的類加載器加載進內存↓
執行 main()↓
運行中的堆/棧/方法棧執行邏輯

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

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

相關文章

大數據的安全挑戰與應對

在大數據時代&#xff0c;大數據安全問題已成為開發者最為關注的核心議題之一。至少五年來&#xff0c;大數據已融入各類企業的運營體系&#xff0c;而采用先進數據分析解決方案的組織數量仍在持續增長。本文將明確當前市場中最關鍵的大數據安全問題與威脅&#xff0c;概述企業…

PostgreSQL ERROR: out of shared memory處理方式

系統允許的總鎖數 SELECT (SELECT setting::int FROM pg_settings WHERE name max_locks_per_transaction) * (SELECT setting::int FROM pg_settings WHERE name max_connections) (SELECT setting::int FROM pg_settings WHERE name max_prepared_transactions);當鎖大于…

Django 模型(Model)

1. 模型簡介 ORM 簡介 MVC 框架中一個重要的部分就是 ORM,它實現了數據模型與數據庫的解耦,即數據模型的設計不需要依賴于特定的數據庫,通過簡單的配置就可以輕松更換數據庫。即直接面向對象操作數據,無需考慮 sql 語句。 ORM 是“對象-關系-映射”的簡稱,主要任務是:…

深入解析Hadoop RPC:技術細節與推廣應用

Hadoop RPC框架概述在分布式系統的核心架構中&#xff0c;遠程過程調用&#xff08;RPC&#xff09;機制如同神經網絡般連接著各個計算節點。Hadoop作為大數據處理的基石&#xff0c;其自主研發的RPC框架不僅支撐著內部組件的協同運作&#xff0c;更以獨特的工程哲學詮釋了分布…

為什么玩游戲用UDP,看網頁用TCP?

故事場景&#xff1a;兩種不同的遠程溝通方式假設你需要和遠方的朋友溝通一件重要的事情。方式一&#xff1a;TCP — 打一個重要的電話打電話是一種非常嚴謹、可靠的溝通方式。? 1. 建立連接 (三次握手):? 你拿起電話&#xff0c;撥號&#xff08;SYN&#xff09;。? 朋友那…

【EGSR2025】材質+擴散模型+神經網絡相關論文整理隨筆(二)

High-Fidelity Texture Transfer Using Multi-Scale Depth-Aware Diffusion 這篇文章可以從一個帶有紋理的幾何物體出發&#xff0c;將其身上的紋理自動提取并映射到任意的幾何拓撲結構上&#xff08;見下圖紅線左側&#xff09;&#xff1b;或者從一個白模幾何對象出發&#x…

深度學習圖像分類數據集—玉米粒質量識別分類

該數據集為圖像分類數據集&#xff0c;適用于ResNet、VGG等卷積神經網絡&#xff0c;SENet、CBAM等注意力機制相關算法&#xff0c;Vision Transformer等Transformer相關算法。 數據集信息介紹&#xff1a;玉米粒質量識別分類&#xff1a;[crush, good, mul] 訓練數據集總共有3…

Unity VR手術模擬系統架構分析與數據流設計

Unity VR手術模擬系統架構分析與數據流設計 前言 本文將深入分析一個基于Unity引擎開發的多人VR手術模擬系統。該系統采用先進的網絡架構設計&#xff0c;支持多用戶實時協作&#xff0c;具備完整的手術流程引導和精確的工具交互功能。通過對系統架構和數據管道的詳細剖析&…

【Spring Boot】Spring Boot 4.0 的顛覆性AI特性全景解析,結合智能編碼實戰案例、底層架構革新及Prompt工程手冊

Spring Boot 4.0 的顛覆性AI特性全景解析&#xff0c;結合智能編碼實戰案例、底層架構革新及Prompt工程手冊一、Spring Boot 4.0 核心AI能力矩陣二、AI智能編碼插件實戰&#xff08;Spring AI Assistant&#xff09;1. 安裝與激活2. 實時代碼生成場景3. 缺陷預測與修復三、AI引…

audiobookshelf-web 項目怎么運行

git clone https://github.com/audiobookshelf/audiobookshelf-web.git cd audiobookshelf-web npm i 啟動項目 npm run dev http://localhost:3000/

掃描文件 PDF / 圖片 糾斜 | 圖片去黑邊 / 裁剪 / 壓縮

問題&#xff1a;掃描后形成的 PDF 或圖片文檔常存在變形傾斜等問題&#xff0c;手動調整頗為耗時費力。 一、PDF 糾斜 - Adobe Acrobat DC 1、所用功能 掃描和 OCR&#xff1a; 識別文本&#xff1a;在文件中 → 設置 確定后啟動掃描&#xff0c;識別過程中自動糾偏。 2、…

適配器模式:兼容不兼容接口

將一個類的接口轉換成客戶端期望的另一個接口&#xff0c;解決接口不兼容問題。代碼示例&#xff1a;// 目標接口&#xff08;客戶端期望的格式&#xff09; interface ModernPrinter {void printDocument(String text); }// 被適配的舊類&#xff08;不兼容&#xff09; class…

流程控制:從基礎結構到跨語言實踐與優化

流程控制 一、流程控制基礎概念與核心價值 &#xff08;一&#xff09;流程控制定義與本質 流程控制是通過特定邏輯結構決定程序執行順序的機制&#xff0c;核心是控制代碼運行路徑&#xff0c;包括順序執行、條件分支、循環迭代三大核心邏輯。其本質是將無序的指令集合轉化為有…

Http與Https區別和聯系

一、HTTP 詳解 HTTP&#xff08;HyperText Transfer Protocol&#xff09;?? 是互聯網數據通信的基礎協議&#xff0c;用于客戶端&#xff08;瀏覽器&#xff09;與服務器之間的請求-響應交互 核心特性??&#xff1a; 1.無連接&#xff08;Connectionless&#xff09;??…

飛算JavaAI:開啟 Java 開發 “人機協作” 新紀元

每日一句 明天是新的一天&#xff0c; 你也不再是昨天的你。 目錄每日一句一、需求到架構&#xff1a;AI深度介入開發“源頭設計”1.1 需求結構化&#xff1a;自然語言到技術要素的精準轉化1.2 架構方案生成&#xff1a;基于最佳實踐的動態適配二、編碼全流程&#xff1a;從“…

Qt項目鍛煉——TODO(五)

發現問題如果是自己創建的ui文件&#xff0c;怎么包含進自己的窗口類并且成為ui成員&#xff1f;一般來說Qt designer 會根據你.ui文件生成對應的ui_文件名這個類&#xff08;文件名是ui文件名&#xff09;&#xff0c;它包含了所有 UI 組件&#xff08;如按鈕、文本框、標簽等…

Vue框架之模板語法全面解析

Vue框架之模板語法全面解析一、模板語法的核心思想二、插值表達式&#xff1a;數據渲染的基礎2.1 基本用法&#xff1a;渲染文本2.2 純HTML渲染&#xff1a;v-html指令2.3 一次性插值&#xff1a;v-once指令三、指令系統&#xff1a;控制DOM的行為3.1 條件渲染&#xff1a;v-if…

從零開始的語言模型構建 CS336 第一課(一)

語言模型的發展歷史 &#x1f3d7; Early foundation models (2010年代后期) 2018&#xff1a;ELMo&#xff08;基于 LSTM 預訓練 微調&#xff09;[Peters 2018]2018&#xff1a;BERT&#xff08;基于 Transformer 預訓練 微調&#xff09;[Devlin 2018]2019&#xff1a;G…

微信獲取access_token授權的兩種不同情況

1.網頁授權&#xff1a;需要頁面調用授權的sdk&#xff0c;首先需要獲取到code參數 &#xff08;A.網頁版的獲取code參考另一篇文章&#xff1a;https://blog.csdn.net/ettamei/article/details/148763361?spm1011.2415.3001.5331 B.前端sdk提供&#xff1a;code只有5分鐘的有…

達夢數據庫windows靜默安裝

<DATABASE> <!-- 安裝數據庫的語言配置&#xff0c;簡體中文版: ZH&#xff0c;繁體中文版: CHT&#xff0c;英文版: EN&#xff0c;不區分大小寫。不允許為空 --> <LANGUAGE>ZH</LANGUAGE> <!-- 安裝程序的時區配置&#xff0c;缺省為08:00&#…