IntelliJ IDEA給Controller、Service、Mapper不同文件設置不同的文件頭注釋模板、Velocity模板引擎

通過在 IntelliJ IDEA 中的 “Includes” 部分添加多個文件頭模板,并在 “Files” 模板中利用這些包含來實現不同類型文件的注釋。以下是為 Controller、Service、Mapper 文件設置不同文件頭的完整示例:

1. 設置 Includes 文件頭模板

File > Settings (在 macOS 上是 Preferences)> Editor > File and Code Templates > includes

在 “Includes” 選項卡中,創建以下三個文件頭模板:

ControllerHeader

/*** 控制層:* Controller Class: ${NAME}* @Author: ${USER}* @Date: ${DATE} ${TIME}* @Version: ${VERSION}* @Description: ${DESCRIPTION}*/

ServiceHeader

/*** 服務層:* Service Class: ${NAME}* @Author: ${USER}* @Date: ${DATE} ${TIME}* @Version: ${VERSION}* @Description: ${DESCRIPTION}*/

MapperHeader

 /*** 數據層:* Mapper Class: ${NAME}* @Author: ${USER}* @Date: ${DATE} ${TIME}* @Version: ${VERSION}* @Description: ${DESCRIPTION}*/

2. 設置 Files 模板

2.1 設置路徑

File > Settings (在 macOS 上是 Preferences)> Editor > File and Code Templates > includes
在這里插入圖片描述

2.2 在 “Files” 選項卡中,找到或創建 Java 類模板,并使用條件判斷來選擇合適的文件頭:

2.2.1 根據文件名區分

${NAME.endsWith("Controller")}這種寫法專業名詞叫Velocity 模板引擎,關于該引擎在后續有詳細介紹

#if (${NAME.endsWith("Controller")})#parse("ControllerHeader.java")
#elseif (${NAME.endsWith("Service")})#parse("ServiceHeader.java")
#elseif (${NAME.endsWith("Mapper")})#parse("MapperHeader.java")
#else
/*** Class: ${NAME}* Author: ${USER}* Date: ${DATE}* Description: ${DESCRIPTION}*/
#end

使用更嚴謹的File template


#if (${NAME.matches(".*Controller$")})#parse("ControllerHeader.java")
#elseif ($NAME.matches(".*Service$") || $NAME.matches(".*ServiceImpl$"))#parse("ServiceHeader.java")
#elseif (${NAME.matches(".*(Mapper|Dao|Repo)$")})#parse("DataLayerHeader.java")
#else
/*** Class: ${NAME}* Author: ${USER}* Date: ${DATE}* Description: ${DESCRIPTION}*/
#end

2.2.2根據包名區分


#if (${PACKAGE_NAME}.contains("controller"))
/*** Controller層 - ${NAME}* 包路徑:${PACKAGE_NAME}*/
#elseif (${PACKAGE_NAME}.contains("service"))
/*** Service層 - ${NAME}*/
#elseif (${PACKAGE_NAME}.contains("mapper"))
/*** Mapper接口 - ${NAME}*/
#end
  • 更嚴謹的判斷
#set($isMapperPackage = ${PACKAGE_NAME.contains(".mapper")} || ${PACKAGE_NAME.contains(".dao")})
#set($isServiceImplPackage = ${PACKAGE_NAME.contains(".service.impl")})#if ($isMapperPackage && ($isMapper || ${NAME.endsWith("Repository")}))#parse("mapperHeader.java")
#elseif ($isServiceImplPackage)#parse("serviceImplHeader.java")
#end

3. 應用模板

  • 當你創建一個新文件時,例如 UserController.javaUserService.javaUserMapper.java,IDEA 將根據文件名后綴自動應用相應的文件頭注釋。
  • 確保新文件的命名遵循 *Controller*Service*Mapper 的模式,以便條件判斷能夠正確匹配。

4. 為不同文件類型創建完全獨立模板

4.1 實圖講解

  • 新增Controller模板—效果圖:
    在這里插入圖片描述
  • New -> Java Class-> Controller 就會出現新添加的模板
    在這里插入圖片描述

4.2 自定義Files模板詳細設置

在 IntelliJ IDEA 中創建需要的文件模板,比如 Controller、Service、Mapper,可以通過以下步驟來實現:

  1. 打開文件模板設置

    • 在 IntelliJ IDEA 的菜單欄中,點擊 File -> Settings(在 macOS 上是 IntelliJ IDEA -> Preferences)。
    • 在左側欄中,選擇 Editor -> File and Code Templates
  2. 創建新的文件模板

    • Files 標簽頁中,點擊右上角的 + 按鈕,創建一個新的文件模板(如Controller)。
    • 為你的模板命名,比如 ControllerServiceMapper
    • 設置文件名:如Controller等,擴展名:java
  3. 定義文件模板內容

    • 在模板的編輯器中輸入你希望的文件內容。你可以使用變量來動態生成代碼,如 ${NAME}${PACKAGE_NAME} 等。

    • 例如,對于一個 Controller 模板,你可以這樣定義:

      package ${PACKAGE_NAME};import org.springframework.web.bind.annotation.*;#parse("ControllerHeader.java")
      @RestController
      @RequestMapping("/${NAME}")
      public class ${NAME}Controller {// Add your endpoints here
      }
      
    • 對于 Service 模板,可以這樣定義:

      package ${PACKAGE_NAME};import org.springframework.stereotype.Service;#parse("ServiceHeader.java")
      @Service
      public class ${NAME}Service {// Add your service methods here
      }
      
    • 對于 Mapper 模板,可以這樣定義:

      package ${PACKAGE_NAME};import org.apache.ibatis.annotations.Mapper;#parse("MapperHeader.java")
      @Mapper
      public interface ${NAME}Mapper {// Add your mapper methods here
      }
      
  4. 使用模板

    • 當你創建新文件時,右鍵點擊項目結構樹中的目標包或目錄,選擇 New -> Java Class
    • 在彈出的對話框中,選擇你創建的模板(如 ControllerServiceMapper)。
    • 輸入文件名,IDEA 會根據模板自動生成文件內容,包括你預定義的文件頭注釋。

通過這些步驟,你可以為常用的文件類型創建模板,提升開發效率和代碼的一致性。

5. Velocity 模板引擎

如**#set** 是 Velocity 模板引擎的核心指令之一。以下為您完整解析 Velocity 的語法體系和學習路徑:


5.0 相關指令

以下是 Velocity 模板引擎核心指令的詳細解析:


一、變量操作指令

1. #set - 變量賦值
#set($var = "value")              ## 字符串
#set($num = 10 + 5)               ## 數值計算
#set($list = [1, 2, 3])           ## 列表
#set($map = {"key":"value"})      ## 鍵值對

特性

  • 右值可以是表達式、方法調用或嵌套指令
  • 變量類型動態推斷(無需聲明類型)
  • 變量作用域為整個模板(類似全局變量)

特殊場景

## 多變量賦值
#set($a = $b = 10)## 空值處理
#set($result = $optionalValue ?: "default")

二、流程控制指令

2. #if / #elseif / #else - 條件分支
#if($user.role == "admin")ADMIN MODE
#elseif($user.age >= 18)ADULT USER
#elseGUEST MODE
#end

判斷規則

條件表達式判定為 false 的情況
$varnull、空字符串、空集合、false
$var == 5值不相等或類型不同
$list && $list.size() > 0組合邏輯判斷
3. #foreach - 循環迭代
#foreach($item in $items)Item $foreach.index: $item.name#if($foreach.count == 5)#break  ## 退出循環#end
#end

循環變量

屬性說明
$foreach.index當前索引(從 0 開始)
$foreach.count當前計數(從 1 開始)
$foreach.first是否是第一次迭代(布爾值)
$foreach.last是否是最后一次迭代(布爾值)

三、模板組織指令

4. #include - 靜態引入
#include("header.html") 

特點

  • 引入的文件內容不解析 Velocity 語法
  • 適合引入靜態 HTML/CSS/JS 片段
  • 可一次引入多個文件:
    #include("head.html", "footer.html")
    
5. #parse - 動態解析
#parse("user_card.vm")

與 #include 對比

特性#parse#include
語法解析? 會解析 VTL 指令? 原樣輸出
變量共享? 共享當前上下文變量? 無變量傳遞
性能較低(需解析)較高(直接讀取)
6. #stop - 引擎停止
#if($error)#stop  ## 立即終止模板渲染
#end

使用場景

  • 遇到致命錯誤時中斷渲染
  • 調試時快速定位問題

四、邏輯控制指令

7. #break - 退出當前指令
#foreach($item in $list)#if($item == "stop") #break  ## 退出當前 #foreach 循環#end
#end

作用范圍

  • 僅對當前所在指令有效(如 #foreach#macro
8. #evaluate - 動態執行
#set($template = "Hello $name")
#evaluate($template)  ## 輸出:Hello John

危險操作

## 可能引發代碼注入(慎用!)
#evaluate($userInput)

五、代碼復用指令

9. #define - 定義代碼塊
#define($block)<div class="alert">This is a reusable block</div>
#end## 調用
$block

特點

  • 類似變量賦值,但可包含復雜 HTML/VTL
  • 每次調用輸出相同內容
10. #macro - 定義可傳參宏
#macro(renderUser $user $isAdmin)<div class="#if($isAdmin)admin#end">$user.name</div>
#end## 調用
#renderUser($currentUser true)

高級特性

功能示例
默認參數#macro(show $msg="Hello")
可變參數#macro(sum $nums...)
嵌套調用宏內可調用其他宏

六、指令對比矩陣

指令是否解析內容是否共享變量典型應用場景
#include??引入靜態資源文件
#parse??模塊化動態模板
#define??定義重復使用的靜態內容塊
#macro??創建帶參數的復用組件

七、安全實踐建議

  1. 避免 #evaluate 用戶輸入

    ## 危險!
    #evaluate($request.getParameter("tpl"))
    
  2. 防御性模板設計

    ## 安全變量引用
    $!{userInput}  ## 自動處理 null## 集合判空
    #if($!{list} && $list.size() > 0)
    
  3. 性能優化

    ## 復雜計算預編譯
    #set($regex = "^\\d{4}-\\d{2}-\\d{2}$")
    #if($dateStr.matches($regex))
    

八、完整示例模板

## 用戶列表模板 (user_list.vm)
#define($header)<!DOCTYPE html><html><head><title>User List</title>#include("styles.css")</head>
#end#macro(userCard $user)<div class="card">#parse("user_avatar.vm")<h3>$!{user.name}</h3>#if($user.isAdmin)<span class="badge">ADMIN</span>#end</div>
#end$header
<body>#foreach($user in $users)#if($user.name == "root")#stop  ## 禁止顯示 root 用戶#end#userCard($user)#if($foreach.count >= 100)#break  ## 最多顯示 100 條#end#end#parse("footer.vm")
</body>
</html>

以上內容可作為 Velocity 開發的權威參考,建議結合官方文檔實踐驗證。每個指令的詳細行為可能因 Velocity 版本略有差異(本文基于 2.x 版本)。

5.1、#set 指令詳解

5.1.1. 基礎作用

#set($variable = "value") 
  • 變量定義:創建或修改變量(類似編程中的賦值)
  • 動態計算:可賦值為字符串、數字、布爾值,或通過表達式計算的結果
  • 作用域:在整個模板中有效(類似全局變量)

5.1.2. 典型用法

## 字符串賦值
#set($className = "UserController")## 數值計算
#set($total = 10 + 5 * 3)  ## $total = 25## 布爾邏輯
#set($isValid = $name && $name.length() > 5)## 對象方法調用
#set($firstChar = $className.substring(0,1)) 

5.2、Velocity 的語法規則

Velocity 的語法規則來源于以下渠道:
5.2.1. 官方文檔
Apache Velocity 官網 (velocity.apache.org) 提供完整的 VTL (Velocity Template Language) 規范。

5.2.2. IDE 集成

  • IntelliJ IDEA 等 IDE 的 Velocity 模板編輯界面會提供語法提示
  • 輸入 # 時會自動彈出指令列表(如 #if, #foreach, #macro

5.2.3. 開源項目實踐

  • 許多 Java 項目(如 Spring Boot 的代碼生成器)使用 Velocity 模板
  • 通過閱讀開源代碼學習實際應用技巧

5.3、系統學習 Velocity 語法的路徑

5.3.1. 基礎語法

指令/語法用途示例
變量引用輸出變量值$variable${variable}
注釋添加模板注釋## 單行注釋#* 多行注釋 *#
#set變量賦值#set($price = 99.9)
#if/#else/#elseif條件分支見下方示例
#foreach循環遍歷集合見下方示例

條件判斷示例

#if($user.role == "admin")<p>管理員權限</p>
#elseif($user.age > 18)<p>成年用戶</p>
#else<p>未成年用戶</p>
#end

循環示例

<ul>
#foreach($item in $items)<li>${foreach.index} - ${item.name}</li>
#end
</ul>

5.3.2. 高級功能

功能說明示例
宏 (Macro)定義可復用的代碼片段#macro(showError $msg)<div class="error">$msg</div>#end
引入其他模板模塊化模板設計#parse("header.vm")
內置工具對象提供字符串/數學等工具方法$math.add(1,2)$date.format('yyyy-MM-dd')
轉義輸出防止 XSS 攻擊$!{userInput}#escape($htmlContent)

宏定義與調用

## 定義宏
#macro(renderButton $text $color)<button style="color:${color}">$text</button>
#end## 調用宏
#renderButton("提交", "blue")

5.3.3. 調試技巧

  • 輸出原始文本:使用 #[[ 不解析的內容 ]]#
    #[[這里的 $variable 不會被解析 → 直接輸出 $variable
    ]]#
    
  • 查看變量類型
    $variable.class.name  ## 輸出變量類型(如 java.lang.String)
    

5.4、快速查詢手冊

在模板開發中常用以下語法:

需求場景對應語法
避免變量為 null 時報錯$!{variable}
字符串拼接#set($fullName = "$firstName $lastName")
集合是否為空判斷#if($list.isEmpty()) 或 `#if(!$list
數值格式化$number.format("#,###", $price)
日期格式化$date.format('yyyy-MM-dd', $today)

5.5、學習資源推薦

5.5.1. 官方文檔(必讀)

  • VTL 語法參考
  • 用戶指南

5.5.2. 實戰教程

  • Baeldung 的 Velocity 指南
  • TutorialsPoint 的 Velocity 教程

5.5.3. IDE 輔助

  • 在 IntelliJ IDEA 中創建 .vm 文件,IDE 會提供:
    • 語法高亮
    • 指令自動補全(輸入 # 觸發)
    • 錯誤檢查

5.6、示例:完整模板文件

## 模板:user_profile.vm
#set($user = $data.getUser())
#set($birthday = $date.format('yyyy-MM-dd', $user.birthDate))<html>
<head><title>$!{user.name} 的資料</title>
</head>
<body>#if($user.isAdmin())<div class="admin-banner">管理員用戶</div>#end<h1>用戶信息</h1><ul><li>姓名:$!{user.name}</li><li>年齡:$math.sub($date.getYear(), $user.birthYear)</li><li>生日:$birthday</li></ul>#macro(renderSection $title $content)<div class="section"><h2>$title</h2><p>$content</p></div>#end#renderSection("聯系方式", $user.contactInfo)
</body>
</html>

通過系統學習上述內容,您將能:

  1. 熟練使用 Velocity 生成動態內容
  2. 理解模板引擎的運行機制
  3. 快速定位和解決模板渲染問題

建議邊學邊實踐,在 IntelliJ 中創建 .vm 文件體驗實時語法反饋。

5.7 Velocity引擎與Freemarker等熱門引擎對比以及應用場景

Velocity 確實不如 Freemarker、Thymeleaf 這類模板引擎知名度高,但它是一個歷史悠久特定場景下非常高效的模板引擎。以下是它的核心應用場景和特點解析,幫助您理解為什么某些場景(比如 IDEA 的注釋模板)會選擇它:


一、Velocity 的典型應用場景

1. 代碼生成(核心優勢場景)
  • Java 注釋模板(如 IDEA 內置)
  • MyBatis 逆向工程(生成 DAO/Mapper 文件)
  • Spring Boot 項目腳手架(如 JHipster 早期版本)
  • API 文檔生成(結合 Swagger 模板)

優勢
? 語法簡單,適合非前端開發者使用
? 無復雜依賴,可嵌入任何 Java 環境
? 生成純文本(代碼/配置文件)時性能極高

2. 傳統 Web 頁面渲染(逐漸被替代)
  • 早期的 Java Web 項目(如 Struts 1.x 時代)
  • 企業級 CMS 內容模板(如 Alfresco)

現狀
?? 新項目更推薦 Thymeleaf/FreeMarker(對現代前端更友好)
?? 不支持響應式設計等現代特性

3. 郵件模板
  • 企業級郵件內容動態生成(如訂單通知)
  • 相比 HTML 頁面,郵件模板更簡單,Velocity 足夠輕量
4. 配置文件動態化
#set($dbHost = "192.168.1.100")
jdbc.url=jdbc:mysql://${dbHost}:3306/db

二、為什么 IDEA 選擇 Velocity 做注釋模板?

  1. 輕量級
    無需引入額外依賴,IDEA 內置的模板引擎需要極低的開銷。

  2. 邏輯簡單
    注釋模板通常只需要變量替換和簡單條件判斷,例如:

    /*** @author ${USER}* @date ${DATE}#if(${DESCRIPTION})* @description ${DESCRIPTION}#end*/
    
  3. 無副作用
    不會像 FreeMarker 那樣產生意外換行或空格(對代碼格式敏感)。


三、與現代模板引擎對比

特性VelocityFreeMarkerThymeleaf
學習曲線?(最簡單)?????(需懂 HTML)
性能???(最快)???
前端友好度?(純后端)?????(原生 HTML)
動態代碼生成???????
社區活躍度?(維護模式)???????

四、經典代碼生成示例

MyBatis 生成器模板(mapper.xml.vm
<!-- 生成于 ${date} -->
<mapper namespace="${package.Mapper}.${table.mapperName}">#foreach($field in ${table.fields})#if(${field.keyFlag})<id column="${field.name}" property="${field.propertyName}" />#else<result column="${field.name}" property="${field.propertyName}" />#end#end<select id="selectById" resultMap="BaseResultMap">SELECT * FROM ${table.name} WHERE id = #{id}</select>
</mapper>
Spring Controller 模板(Controller.java.vm
#set($entity = ${table.entityName.toLowerCase()})
@RestController
@RequestMapping("/api/${entity}")
public class ${table.controllerName} {@Autowiredprivate ${table.serviceName} ${entity}Service;@GetMapping("/{id}")public Result<${table.entityName}> getById(@PathVariable ${table.primaryKeyType} id) {return Result.success(${entity}Service.getById(id));}
}

五、什么時候應該選擇 Velocity?

  1. 需要生成代碼/配置文件
    (如自動生成 CRUD 代碼、批量創建相似文件)

  2. 嵌入式模板需求
    (如插件系統需要允許用戶自定義模板)

  3. 歷史項目維護
    (老系統升級時保留原有模板)


六、為什么不推薦新項目用 Velocity 做頁面渲染?

  1. 功能局限
    缺少模板繼承、片段復用等現代特性,復雜頁面難以維護。

  2. 前后端協作困難
    設計師無法直接修改 HTML(模板語法混合在標簽中)。

  3. 安全風險
    默認不開啟 HTML 轉義,容易導致 XSS 攻擊(需手動處理)。


七、快速識別 Velocity 模板

  1. 文件擴展名.vm
  2. 語法特征
    <!-- 變量使用 $ 前綴 -->
    <h1>$title</h1><!-- 指令以 # 開頭 -->
    #foreach($item in $list)<li>$item</li>
    #end
    

如果您只需要一個輕量級文本生成工具(如代碼注釋、配置文件生成),Velocity 仍然是優秀選擇。但對于 Web 頁面開發,建議轉向 FreeMarker/Thymeleaf 等現代引擎。

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

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

相關文章

LabVIEW雙音信號互調失真測量

該VI構建實現了一套完整的雙音信號互調失真&#xff08;IMD&#xff09;測量系統。該系統通過精確控制信號生成、采集與分析流程&#xff0c;實現對被測設備&#xff08;DUT&#xff09;非線性特性的量化評估&#xff0c;可廣泛應用于通信設備、音頻系統、射頻器件等領域的研發…

56.合并區間(java)

題目描述&#xff1a; 1.先判斷給定intervals是否為空或者大小是否為1&#xff0c;是則直接返回intervals。 2.對intervals進行排序 數組形式則使用&#xff1a;Arrays.sort(intevals,(a,b)->Integer.compare(a[0],b[0])); ArrayList形式&#xff1a;intervals.sort((a,b)-…

Redis設計與實現——Redis命令參考與高級特性

Redis命令參考 數據類型相關命令 SET&#xff1a;設置鍵值&#xff0c;支持過期時間、不存在/存在條件。GET&#xff1a;獲取鍵值&#xff0c;若鍵不存在返回 nil。INCR/DECR&#xff1a;將鍵的整數值增1/減1&#xff0c;鍵不存在時初始化為0。MSET/MGET&#xff1a;批量設置…

基于 STM32 的全自動洗車監控系統設計與實現

摘要 本文提出一種基于 STM32F103RCT6 芯片的全自動洗車監控系統方案,通過多傳感器融合與智能控制算法,實現車輛檢測、洗車流程自動化及狀態遠程監控。系統集成硬件選型、電路設計、軟件流程及通信功能,可廣泛應用于智能洗車場景。 一、硬件系統設計 1. 核心芯片選型 主控…

掌握Multi-Agent實踐(七):基于AgentScope分布式模式實現多智能體高效協作[并行加速大模型輔助搜索、分布式多用戶協同辯論賽]

之前的案例都是運行在單臺機器上以單進程形式運行,受限于 Python 的全局解釋器鎖,實際只能有效利用一個 CPU 的計算資源,并且無法支持多個用戶從自己的電腦上接入同一個 Multi-Agent 應用進行交互。?為了提高運行效率并支持多用戶接入同一個應用中,AgentScope 提供了分布式…

docker-compose部署項目(springboot服務)以及基礎環境(mysql、redis等)ruoyi-ry

上傳jar 配置文件等 到目錄&#xff1a;/home/ruoyi/docker 設置權限 chmod x *.sh 開通端口&#xff08;我已經開通了&#xff09; sh ./deploy.sh port 開始構建 docker-compose build 構建成功 可以先拉取鏡像 docker pull nacos/nacos-server docker pull nginx docker …

Axure疑難雜癥:統計分析頁面引入Echarts示例動態效果

親愛的小伙伴,在您瀏覽之前,煩請關注一下,在此深表感謝! Axure產品經理精品視頻課已登錄CSDN可點擊學習https://edu.csdn.net/course/detail/40420 課程主題:統計分析頁面引入Echarts示例動態效果 主要內容:echart示例引入、大小調整、數據導入 應用場景:統計分析頁面…

如何使用WordPress創建美食博客

不管你是否意識到&#xff0c;食物是我們生活的核心。有些人將其用作燃料&#xff0c;而另一些人則將食譜作為一種藝術形式呈現。如果您屬于后者&#xff0c;并且想創建一個美食博客來分享您的熱情&#xff0c;那么WordPress是一個頂級平臺。 幾乎每個話題都有一個博客利基&am…

【MySQL】庫與表的操作

一、庫的操作 1. 查看數據庫 語法&#xff1a;show databases;這里的database是要加s的 查看當前自己所處的數據庫&#xff1a;select database(); 例如下圖&#xff0c;我當前所處的數據庫就是在class1數據庫 2. 創建數據庫 語法&#xff1a;create database [if not e…

Unity3D開發AI桌面精靈/寵物系列 【六】 人物模型 語音口型同步 LipSync 、梅爾頻譜MFCC技術、支持中英文自定義編輯- 基于 C# 語言開發

Unity3D開發AI桌面精靈/寵物系列 【六】 人物模型 語音口型同步 LipSync 、梅爾頻譜MFCC技術 C# 語言開發 該系列主要介紹怎么制作AI桌面寵物的流程&#xff0c;我會從項目開始創建初期到最終可以和AI寵物進行交互為止&#xff0c;項目已經開發完成&#xff0c;我會仔細梳理一下…

MoonBit正式入駐GitCode!AI時代的編程語言新星,開啟高性能開發新紀元

在AI與編程語言深度交融的今天&#xff0c;開發者們正見證一場技術生產力的革命。由IDEA研究院基礎軟件中心傾力打造的MoonBit&#xff08;月兔&#xff09;編程語言&#xff0c;自2023年橫空出世以來&#xff0c;憑借高性能、低延遲、輕量化的特性&#xff0c;迅速成為全球開發…

LLMs:《POE報告:2025年春季人工智能模型使用趨勢》解讀

LLMs&#xff1a;《POE報告&#xff1a;2025年春季人工智能模型使用趨勢》解讀 導讀&#xff1a;2025年5月13日&#xff0c;該報告基于 Poe 平臺的用戶數據&#xff0c;分析了 2025 年春季人工智能模型的使用趨勢。報告指出&#xff0c;人工智能格局快速演變&#xff0c;通用文…

STM32 之網口資源

1 網口資源介紹 STM32F407 是 STMicroelectronics 推出的高性能 ARM Cortex-M4 微控制器&#xff0c;具備多種外設接口&#xff0c;其中包括一個 Ethernet MAC 控制器&#xff08;帶 IEEE 1588 支持&#xff09;。這意味著你可以使用 STM32F407 實現網絡通信功能&#xff08;通…

Almalinux中出現ens33 ethernet 未托管 -- lo loopback 未托管 --如何處理:

解決 AlmaLinux 中網絡接口 ens33 和 lo 顯示為“未托管”的問題 當 AlmaLinux 系統中的網絡接口&#xff08;如 ens33 和 lo&#xff09;顯示為“未托管”時&#xff0c;這意味著這些接口沒有被 NetworkManager 正常管理。以下是詳細的分析和解決方案&#xff1a; 1. 檢查 N…

數據庫中關于查詢選課問題的解法

前言 今天上午起來復習了老師上課講的選課問題。我總結了三個解法以及一點注意事項。 選課問題介紹 簡單來說就是查詢某某同學沒有選或者選了什么課。然后查詢出該同學的姓名&#xff0c;學號&#xff0c;課程號&#xff0c;課程名之類的。 sql文件我上傳了。大家可以嘗試練…

Qt圖表庫推薦指南與分析

目錄 一、核心圖表庫橫向對比1. Qt Charts2. QCustomPlot3. QWT (Qt Widgets for Technical Applications)4. KD Chart 二、性能與功能對比矩陣三、選型策略與組合方案1. 通用型需求&#xff1a;2. 技術型場景&#xff1a;3. 企業級開發&#xff1a; 四、未來趨勢與避坑指南1. …

LangGraph 2 - 智能體開發、流式傳輸、模型調用、工具、MCP、上下文、內存、人機協同、部署、UI

文章目錄 使用LangGraph進行智能體開發什么是智能體&#xff1f;核心特性高層構建模塊包生態系統 運行代理基礎用法輸入與輸出輸入格式使用自定義 Agent 狀態 輸出格式流式輸出最大迭代次數其他資源 流式傳輸代理進度監控LLM 令牌工具更新流式多模態傳輸禁用流式傳輸其他資源 L…

Android同屏采集并推送RTMP和啟動輕量級RTSP服務技術實踐

隨著視頻直播需求的不斷提升&#xff0c;如何實現高效的實時視頻采集和推流&#xff0c;成為了開發者們關注的重點。本文將結合大牛直播SDK&#xff0c;介紹如何在 Android 平臺實現 同屏采集、推送 RTMP 流&#xff0c;以及如何啟動輕量級 RTSP 服務&#xff0c;讓開發者快速搭…

如何自定義 Spring MVC 的配置?

我們可以通過實現 WebMvcConfigurer 接口來自定義 Spring MVC (尤其是在 Spring Boot 環境中) 的配置。 以下是通過實現 WebMvcConfigurer 接口的配置方法&#xff1a; 核心&#xff1a;創建一個 Configuration 類并實現 WebMvcConfigurer import org.springframework.conte…

如何提升新加坡SAP實施成功率?解答中企出海的“稅務合規密碼” | 工博科技SAP金牌服務商

目錄 中新雙邊經貿合作概況 ?編輯 新加坡數字化實施核心挑戰 一、財稅合規體系適配 稅務申報差異 會計準則協同 二、人力資源合規管理 薪酬體系配置 數據安全規范 企業實施建議方案 一、系統建設策略 選擇具備以下資質的實施服務商&#xff1a; 構建標準化功能模塊…