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.java
、UserService.java
或UserMapper.java
,IDEA 将根据文件名后缀自动应用相应的文件头注释。 - 确保新文件的命名遵循
*Controller
、*Service
、*Mapper
的模式,以便条件判断能够正确匹配。
4. 为不同文件类型创建完全独立模板
4.1 实图讲解
- 新增Controller模板—效果图:
New
->Java Class
->Controller
就会出现新添加的模板
4.2 自定义Files模板详细设置
在 IntelliJ IDEA 中创建需要的文件模板,比如 Controller、Service、Mapper,可以通过以下步骤来实现:
-
打开文件模板设置:
- 在 IntelliJ IDEA 的菜单栏中,点击
File
->Settings
(在 macOS 上是IntelliJ IDEA
->Preferences
)。 - 在左侧栏中,选择
Editor
->File and Code Templates
。
- 在 IntelliJ IDEA 的菜单栏中,点击
-
创建新的文件模板:
- 在
Files
标签页中,点击右上角的+
按钮,创建一个新的文件模板(如Controller)。 - 为你的模板命名,比如
Controller
、Service
、Mapper
, - 设置文件名:如
Controller
等,扩展名:java
。
- 在
-
定义文件模板内容:
-
在模板的编辑器中输入你希望的文件内容。你可以使用变量来动态生成代码,如
${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 }
-
-
使用模板:
- 当你创建新文件时,右键点击项目结构树中的目标包或目录,选择
New
->Java Class
。 - 在弹出的对话框中,选择你创建的模板(如
Controller
、Service
、Mapper
)。 - 输入文件名,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 的情况 |
---|---|
$var | null、空字符串、空集合、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 | ✅ | ✅ | 创建带参数的复用组件 |
七、安全实践建议
-
避免
#evaluate
用户输入## 危险! #evaluate($request.getParameter("tpl"))
-
防御性模板设计
## 安全变量引用 $!{userInput} ## 自动处理 null## 集合判空 #if($!{list} && $list.size() > 0)
-
性能优化
## 复杂计算预编译 #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>
通过系统学习上述内容,您将能:
- 熟练使用 Velocity 生成动态内容
- 理解模板引擎的运行机制
- 快速定位和解决模板渲染问题
建议边学边实践,在 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 做注释模板?
-
轻量级
无需引入额外依赖,IDEA 内置的模板引擎需要极低的开销。 -
逻辑简单
注释模板通常只需要变量替换和简单条件判断,例如:/*** @author ${USER}* @date ${DATE}#if(${DESCRIPTION})* @description ${DESCRIPTION}#end*/
-
无副作用
不会像 FreeMarker 那样产生意外换行或空格(对代码格式敏感)。
三、与现代模板引擎对比
特性 | Velocity | FreeMarker | Thymeleaf |
---|---|---|---|
学习曲线 | ⭐(最简单) | ⭐⭐ | ⭐⭐⭐(需懂 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?
-
需要生成代码/配置文件
(如自动生成 CRUD 代码、批量创建相似文件) -
嵌入式模板需求
(如插件系统需要允许用户自定义模板) -
历史项目维护
(老系统升级时保留原有模板)
六、为什么不推荐新项目用 Velocity 做页面渲染?
-
功能局限
缺少模板继承、片段复用等现代特性,复杂页面难以维护。 -
前后端协作困难
设计师无法直接修改 HTML(模板语法混合在标签中)。 -
安全风险
默认不开启 HTML 转义,容易导致 XSS 攻击(需手动处理)。
七、快速识别 Velocity 模板
- 文件扩展名:
.vm
- 语法特征:
<!-- 变量使用 $ 前缀 --> <h1>$title</h1><!-- 指令以 # 开头 --> #foreach($item in $list)<li>$item</li> #end
如果您只需要一个轻量级文本生成工具(如代码注释、配置文件生成),Velocity 仍然是优秀选择。但对于 Web 页面开发,建议转向 FreeMarker/Thymeleaf 等现代引擎。
相关文章:
IntelliJ IDEA给Controller、Service、Mapper不同文件设置不同的文件头注释模板、Velocity模板引擎
通过在 IntelliJ IDEA 中的 “Includes” 部分添加多个文件头模板,并在 “Files” 模板中利用这些包含来实现不同类型文件的注释。以下是为 Controller、Service、Mapper 文件设置不同文件头的完整示例: 1. 设置 Includes 文件头模板 File > Settin…...
python共享内存实际案例,传输opencv frame
主进程程序 send.py import cv2 import numpy as np from multiprocessing import shared_memory, resource_trackercap cv2.VideoCapture(0) if not cap.isOpened():print("无法打开 RTSP 流,请检查地址、网络连接或 GStreamer 配置。") else:# 创建共…...
JVM——方法内联之去虚化
引入 在Java虚拟机的即时编译体系中,方法内联是提升性能的核心手段,但面对虚方法调用(invokevirtual/invokeinterface)时,即时编译器无法直接内联,必须先进行去虚化(Devirtualizationÿ…...
1.6 关于static和final的修饰符
一.static static是静态修饰符,用于修饰类成员(变量,方法,代码块) 被修饰的类成员属于类,不必生成示例,即可直接调用属性或者方法。 关于代码块,被static修饰的代码块是静态代码块…...
Django 中时区的理解
背景 设置时区为北京时间 TIME_ZONE ‘Asia/Shanghai’ # 启用时区支持 USE_TZ True 这样设置的作用 前端 (实际上前端el-date-picker 显示的是当地时区的时间) Element组件转换后,我们是东八区,前端传给后端的时间为&…...
hadoop中创建MySQL新数据库数据表
在Hadoop环境中创建MySQL数据库和数据表,通常需要通过MySQL命令行工具来完成,而不是直接在Hadoop中操作。以下是具体步骤: 1. 登录MySQL 首先,需要登录到MySQL服务器。在命令行中输入以下命令: mysql -u root -p 输…...
ridecore流水线解读
文章目录 流水线stage分属前后端PCpipelineIFIDDPDP 与 SW 中间没有latchSWCOM 源码地址 流水线stage分属前后端 IF -> ID -> DP -> SW -> EX -> COM分类阶段说明前端IF指令获取阶段。PC 使用分支预测器,访问指令存储器。典型前端操作。前端ID解码并…...
基于C语言实现网络爬虫程序设计
如何用好C语言来做爬虫,想必接触过的大神都能说扥头头是道,但是对于新手小白来说,有这么几点需要注意的。根据设计程序结构,我们需要一个队列来管理待爬取的URL,一个集合或列表来记录已访问的URL。主循环从队列中取出U…...
github 上的 CI/CD 的尝试
效果 步骤 新建仓库设置仓库的 page 新建一个 vite 的项目,改一下 vite.config.js 中的 base 工作流 在项目的根目录下新建一个 .github/workflows/ci.yml 文件,然后编辑一下内容 name: Build & Deploy Vue 3 Appon:push:branches: [main]permi…...
飞书配置表数据同步到数据库中
这是我的从飞书取数据的代码 def get_employee_from_feishu():staff_setting settings.FEISHU_SETTING["sales_order"]["employee"]app_token staff_setting ["app_token"]table_id staff_setting ["table_id"]page_token Noneh…...
Nacos源码—9.Nacos升级gRPC分析八
大纲 10.gRPC客户端初始化分析 11.gRPC客户端的心跳机制(健康检查) 12.gRPC服务端如何处理客户端的建立连接请求 13.gRPC服务端如何映射各种请求与对应的Handler处理类 14.gRPC简单介绍 12.gRPC服务端如何处理客户端的建立连接请求 (1)gRPC服务端是如何启动的 (2)connec…...
开源免费无广告专注PDF编辑、修复和管理工具 办公学术 救星工具
各位PDF处理小能手们!我跟你们说啊,今天要给大家介绍一款超牛的国产开源PDF处理工具,叫PDFPatcher,也叫PDF补丁丁。它就像一个PDF文档的超级修理工,专门解决PDF编辑、修复和管理的各种难题。 这软件的核心功能和特点&a…...
C++设计模式——单例模式
单例模式 方法1:C11 线程不安全懒汉模式(不推荐) 懒汉式单例模式在第一次使用时才创建实例,但这种方式在多线程环境下可能会出现问题。 class Singleton { private:static Singleton* instance; // 静态指针,用于存储…...
装饰器在Python中的作用及在PyTorchMMDetection中的实战应用
装饰器在Python中的作用 1. 装饰器是什么?为什么它很重要? 装饰器(Decorator)是Python中的一种高级语法,用于在不修改原函数代码的情况下,动态增强函数的功能。它的核心思想是**"装饰"现有函数*…...
时间序列预测建模的完整流程以及数据分析【学习记录】
文章目录 1.时间序列建模的完整流程2. 模型选取的和数据集2.1.ARIMA模型2.2.数据集介绍 3.时间序列建模3.1.数据获取3.2.处理数据中的异常值3.2.1.Nan值3.2.2.异常值的检测和处理(Z-Score方法) 3.3.离散度3.4.Z-Score3.4.1.概述3.4.2.公式3.4.3.Z-Score与…...
【工作记录】Kong Gateway入门篇之简介
1. 什么是 Kong Gateway? Kong Gateway 是一个开源的、云原生的 API 网关,专为现代微服务架构设计。它基于 Nginx 和 Lua 构建,提供了高性能、可扩展的 API 管理解决方案。Kong Gateway 不仅能够处理 API 请求的路由和负载均衡,还…...
华为鸿蒙电脑能否作为开发机?开发非鸿蒙应用?
目录 一、鸿蒙电脑作为开发机的核心能力1. 硬件与系统架构2. 开发工具链支持 二、开发非鸿蒙应用的可行性分析1. 适配优势与局限性2. 生态限制 三、鸿蒙电脑的核心适用场景1. 推荐开发场景2. 目标用户群体3. 非推荐场景 四、未来生态演进与战略意义五、总结 一、鸿蒙电脑作为开…...
jackson-dataformat-xml引入使用后,响应体全是xml
解决方案: https://spring.io/blog/2013/05/11/content-negotiation-using-spring-mvc import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; import org.springframework.web.servlet.config.annotation.Con…...
【deekseek】TCP Offload Engine
是的,TOE(TCP Offload Engine)通过专用硬件电路(如ASIC或FPGA)完整实现了TCP/IP协议栈,将原本由CPU软件处理的协议计算任务完全转移到网卡硬件中。其延迟极低的核心原因在于 硬件并行性、零拷贝架构 和 绕过…...
Flannel Host-gw模式的优缺点
Host-gw 模式的特点、优缺点 优点 高性能:无封装开销,数据包直接通过主机路由表转发,延迟和吞吐量接近原生网络。零额外开销:不使用隧道或封装,无额外字节,带宽利用率最高。配置简单:只需配置…...
SD-HOST Controller design-----SD CLK 设计
hclk的分频电路,得到的分频时钟作为sd卡时钟。 该模块最终输出两个时钟:一个为fifo_sd_clk,另一个为out_sd_clk_dft。当不分频时,fifo_sd_clk等于hclk;当分频时候,div_counter开始计数,记到相应分频的时候…...
zabbix最新版本7.2超级详细安装部署(一)
如果文章对你有用,请留下痕迹在配置过程中有问题请及时留言,本作者可以及时更新文章 目录 1、提前准备环境 2、zabbix7.2安装部署 3、安装并配置数据库 4、为Zabbix server配置数据库 5、为Zabbix前端配置PHP 6、启动Zabbix server和agent进程 7、关闭防…...
BFS算法篇——打开智慧之门,BFS算法在拓扑排序中的诗意探索(上)
文章目录 引言一、拓扑排序的背景二、BFS算法解决拓扑排序三、应用场景四、代码实现五、代码解释六、总结 引言 在这浩瀚如海的算法世界中,有一扇门,开启后通向了有序的领域。它便是拓扑排序,这个问题的解决方法犹如一场深刻的哲学思考&#…...
【Nova UI】十六、打造组件库之滚动条组件(中):探秘滑块的计算逻辑
序言 在上篇文章中,我们完成了滚动条组件开发的前期准备工作,包括理论推导、布局规划和基础设置。现在,我们将把这些准备转化为实际代码,开启滚动条组件的具体开发之旅🌟。我们会详细阐述如何实现各项功能,…...
题海拾贝:P1833 樱花
Hello大家好!很高兴我们又见面啦!给生活添点passion,开始今天的编程之路! 我的博客:<但凡. 我的专栏:《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞,关注&am…...
集成钉钉消息推送功能
1. 概述 本文档详细描述了在若依框架基础上集成钉钉消息推送功能的开发步骤。该功能允许系统向指定钉钉用户发送文本和富文本消息通知。 2. 环境准备 2.1 钉钉开发者账号配置 登录钉钉开发者平台:https://open.dingtalk.com/创建/选择企业内部应用获取以下关键信…...
texlive 与 Texmaker 安装
一、安装 Texmaker 1、下载Texmaker 链接地址: Texmaker (free cross-platform latex editor) 点击 FREE DOWNLOAD ,点击 Texmaker_6.0.1_Win_x64.msi ,下载即可。 2、安装Texmaker 双击如下文件 若出现如下,点击更多信息 点击仍要运行 …...
Milvus(21):过滤搜索、范围搜索、分组搜索
1 过滤搜索 ANN 搜索能找到与指定向量嵌入最相似的向量嵌入。但是,搜索结果不一定总是正确的。您可以在搜索请求中包含过滤条件,这样 Milvus 就会在进行 ANN 搜索前进行元数据过滤,将搜索范围从整个 Collections 缩小到只搜索符合指定过滤条件…...
AD PCB布局时常用的操作命令
1. 框选 往右下方框选:选中矩形接触到的对象(选中整体才会被选中) 往左上方框选:选中矩形接触到的对象(选中局部,也是选中整体) 线选:快捷键S,弹出界面: …...
[免费]微信小程序医院预约挂号管理系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端),分享下哈。 项目视频演示 【免费】微信小程序医院预约挂号管理系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩…...
分析Docker容器Jvm 堆栈GC信息
# 打印jvm启动参数 docker exec -ti <容器名> jcmd 1 VM.flags-XX:CICompilerCount3 -XX:InitialHeapSize1073741824 -XX:MaxHeapSize2147483648 -XX:MaxMetaspaceSize157286400 -XX:MaxNewSize715653120 -XX:MinHeapDeltaBytes524288 -XX:NewSize357564416 -XX:OldSize7…...
Java——集合基础
一、集合与数组的特点对比 1.集合类的特点:提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 2.集合和数组的区别 共同点:都是存储数据的容器不同点:数组的容量是固定的,集合的容量是可变的 3.如果存储…...
spark MySQL数据库配置
Spark 连接 MySQL 数据库的配置 要让 Spark 与 MySQL 数据库实现连接,需要进行以下配置步骤。下面为你提供详细的操作指南和示例代码: 1. 添加 MySQL JDBC 驱动依赖 你得把 MySQL 的 JDBC 驱动添加到 Spark 的类路径中。可以通过以下两种方式来完成&a…...
http断点续传
🛑 默认的 http.server(Python 的 SimpleHTTPRequestHandler)在某些版本和实现中并不可靠地支持 HTTP Range 请求(即断点续传)。 尤其在 Python 3.7~3.10 之间的某些版本中,这种支持是不完整或不可预测的。…...
# YOLOv3:基于 PyTorch 的目标检测模型实现
YOLOv3:基于 PyTorch 的目标检测模型实现 引言 YOLOv3(You Only Look Once)是一种流行的单阶段目标检测算法,它能够直接在输入图像上预测边界框和类别概率。YOLOv3 的优势在于其高效性和准确性,使其在实时目标检测任…...
Mac修改hosts文件方法
Mac修改hosts文件方法 在 macOS 上修改 hosts 文件需要管理员权限 步骤 1:打开终端 通过 Spotlight 搜索(Command 空格)输入 Terminal,回车打开。或进入 应用程序 > 实用工具 > 终端。 步骤 2:备份 hosts 文件…...
构建你的第一个简单AI助手 - 入门实践
在当今AI迅速发展的时代,构建自己的AI助手不再是高不可攀的技术壁垒。即使对于刚接触AI开发的程序员,也可以利用现代大语言模型(LLM)API构建功能丰富的AI助手。本文将带您完成一个简单但实用的AI助手构建过程,帮助您在日常工作中提高效率。 …...
Qt在统信UOS及银河麒麟Kylin系统中进行软件开发的环境配置,打包发布和注意事项
前述 之前由于项目的产品需要,必须将原本Windows上的产品移植到信创环境,也就是现在的主流国产操作系统统信UOS及银河麒麟Kylin。 先大概讲下信创系统: 信创系统就像是中国自己打造的 “数字基建”,目的是让咱们国家的信息技术不…...
一个完整的项目示例:taro开发微信小程序
前一周完成了一个项目,体测成绩转换的工具,没做记录,。这次计划开发一个地图应用小程序,记录一下。方便给使用的人。 一、申请微信小程序,填写相应的信息,取得开发者ID。这个要给腾讯地图使用的。 二、申…...
二次封装 el-dialog 组件:打造更灵活的对话框解决方案
文章目录 引言为什么需要二次封装?封装思路代码实现1. 基础封装组件 (Dialog.vue)2. Vue中引入使用示例 封装后的优势进阶优化建议 总结 引言 在 Vue 项目中,Element UI 的 el-dialog 是一个非常实用的对话框组件。但在实际开发中,我们经常会…...
3.2 一点一世界
第一步:引入背景与动机 “一点一世界”这个概念来源于泰勒公式的思想,即通过一个点及其导数信息来近似描述整个函数的行为。这种方法在数学分析中非常有用,因为它允许我们将复杂的函数简化为多项式形式,从而更容易进行计算和理解…...
力扣第156场双周赛
1. 找到频率最高的元音和辅音 给你一个由小写英文字母(a 到 z)组成的字符串 s。你的任务是找出出现频率 最高 的元音(a、e、i、o、u 中的一个)和出现频率最高的辅音(除元音以外的所有字母),并返…...
学习日志05 java
1 java里面的类型转换怎么做?int转double为例 在 Java 里,把int转换为double有自动类型转换和强制类型转换两种方式。下面为你详细介绍: 自动类型转换(隐式转换) 由于double的取值范围比int大,Java 能够…...
4.7/Q1,GBD数据库最新文章解读
文章题目:Burden of non-COVID-19 lower respiratory infections in China (1990-2021): a global burden of disease study analysis DOI:10.1186/s12931-025-03197-7 中文标题:中国非 COVID-19 下呼吸道感染负担(1990-2021 年&a…...
do while
先进再查 import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int number in.nextInt();int count 0;do{number number / 10;count count 1;} while( number > 0 );System.out.println(count…...
MySQL 主从复制与读写分离
一、MySQL 主从复制 (0)概述 MySQL 主从复制是一种数据同步机制,允许数据从一个主数据库(Master)复制到一个或多个从数据库(Slave)。其主要用途包括: 数据冗余与灾备:通…...
CSS3 基础知识、原理及与CSS的区别
CSS3 基础知识、原理及与CSS的区别 CSS3 基础知识 CSS3 是 Cascading Style Sheets 的第3个版本,是CSS技术的升级版本,于1999年开始制订,2001年5月23日W3C完成了CSS3的工作草案。 CSS3 主要模块 选择器:更强大的元素选择方式盒…...
第十七章:Llama Factory 深度剖析:易用性背后的微调框架设计
章节引导:在模型定制的实践中,Llama Factory (github.com/hiyouga/LLaMA-Factory) 以其惊人的易用性和对多种开源大模型、多种参数高效微调方法(PEFT)的广泛支持,迅速成为开源社区的热门选择。你可能已经熟练掌握了如何…...
SpringSecurity当中的CSRF防范详解
CSRF防范 什么是CSER 以下是基于 CSRF 攻击过程的 顺序图 及详细解释,结合多个技术文档中的攻击流程: CSRF 攻击顺序图 #mermaid-svg-FqfMBQr8DsGRoY2C {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#m…...
CSRF防范歪招
不保存到Cookie里呗 如果每次请求都强制通过请求头携带Token,并且不将Token存储在Cookie中,这种设计可以有效防御CSRF攻击。以下是具体原因和关键实现要点: 1. 防御原理 CSRF攻击的本质是攻击者伪造用户的请求,利用浏览器自动携…...