当前位置: 首页 > news >正文

Springboot技术栈常见问题及搭建步骤

一. SpringBoot介绍

1.1. 引言

为了使用SSM框架去开发, 准备SSM框架的模板配置
为了使Spring整合第三方框架, 单独的去编写xml文件
导致SSM项目后期xml文件特别多, 维护xml文件的成本是很高的
SSM工程部署也是很麻烦, 依赖第三方的容器
SSM开发方式很是笨重

1.2 SpringBoot

SpringBoot是由Pivota团队研发的,. SpringBoot并不是一门新技术, 只是将之前常用的Spring, SpringMVC, MyBatis等常用的框架封装到了一起, 帮助你隐藏这些框架的实现细节, 实现敏捷开发
SpringBoot就是一个工具集
SpringBoot的特点:

  • SpringBoot不需要模板化的配置
  • SpringBoot在整合第三方框架时, 只需要导入响应的starter依赖包, 就自动整合了
  • SpringBoot默认只有一个properties配置文件, 不推荐使用xml, 后期会采用Java的文件去编写配置信息
  • SpringBoot工程在部署时, 采用的是jar包的方式, 内部自动依赖Tomcat容器, 提供了多环境的配置
  • 后期要学习的SpringCloud需要建立在SpringBoot的基础上

二. SpringBoot快速入门

2.1 快速构建SpringBoot

IDEA中使用Spring Initializr创建SpringBoot项目
创建过程和创建Maven项目区别不大
中间可以选择语言(默认Java), 打包方式(默认Jar), Java版本(默认最新版,我手动改为Java8了), 还有各种依赖的选择(一般选Web)
第一次创建SpringBoot工程时, 会下载大量的依赖, 一定要确保Maven已经配置了私服, 不然可能会下载失败
创建完成后删除目前不需要的文件, 只留下.idea,src目录和pom.xml,以及.iml, .gitignore文件
如果创建过程中没有勾选Web, 则需要在pom.xml中修改依赖
把spring-boot-starter修改为spring-boot-starter-web即可
然后编写Controller进行测试

package com.dz.springboot_study.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;@Controller
@RequestMapping("/hello")
public class HelloController {@RequestMapping("/hello")@ResponseBodypublic String hello() {return "Hello SpringBoot!";}
}

启动SpringBoot工程(运行启动类中的main方法)

2.2 SpringBoot的目录结构

pom.xml文件
指定了一个父工程: 指定当前工程为SpringBoot, 帮助我们声明了starter依赖的版本
项目的元数据: 包名, 项目名, 版本号
指定了properties的信息: 指定了java版本为1.8
导入依赖: 默认情况导入spring-boot-starter, spring-boot-starter-test
插件: spring-boot-maven-plugin
.gitignore文件: 默认帮我们忽略一些文件和目录
src目录

-src-main-java-包名启动类.java		  #需要将controller类, 放在启动类的子包中或者同级目录下-resources-static					#存放静态资源的-templates  			#存放模板页面的application.properties	#SpringBoot提供的唯一配置文件(可以改为yaml或yml的格式)-test	#为了测试

2.3 SpringBoot两种启动方式

运行启动类中的main方法即可运行SpringBoot工程
采用jar包的方式
将当前项目打包成一个jar文件
通过java -jar jar文件

三. SpringBoot常用注解

3.1 @Configuration和@Bean

之前使用SSM去开发时, 在xml文件中编写bean标签, 但是在SpringBoot不推荐使用xml文件
导入lombok依赖(正常使用lombok还需在IDEA中下载插件)

<!--lombok-->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>

@Configuration注解相当于bean标签
@Bean注解相当于bean标签
id=“方法名 | 注解中的name属性”
class=“方法的返回结果”
@Configuration//代表当前类是一个配置类

public class UserConfig {@Bean(name = "user1")  //构建一个实例, 放进Spring容器中public User user() {return new User("张三",18,true);}/** 以上写法相当于在.xml文件中的* <beans>*   <bean id="user1" class="com.dz.pojo.User"/>* </beans>* */
}

3.2 @SpringBootApplication

  • @SpringBootApplication就是一个组合注解
  • @SpringBootConfiguration就是@Configuration注解, 代表启动类就是一个配置类
  • @EnableAutoConfiguration是用来实现自动装配的, SpringBoot工程启动时, 运行一个SpringFactoriesLoader的类, 加载META-INF/spring.factories配置类(已经开启的), 通过SpringFactoriesLoader中的load方法, 以while循环的方式, 一个一个加载
  • 好处: 无需编写大量的整合配置信息, 只需按照SpringBoot提供好的约定去整合即可
  • 坏处: 如果说我们导入了一个starter依赖, 那么就需要填写其对应的配置信息,否则就会报错
  • 手动关闭自动装配指定内容: @SpringBootApplication(exclude = QuartzAutoConfiguration.class)
  • @ComponentScan就相当于<context:component-scan base-Package=“包名” /> 帮助扫描注解的

四. SpringBoot常用配置

4.1 SpringBoot的配置文件格式

SpringBoot配置文件支持properties和yml, 甚至还支持json
更推荐使用yml文件格式
yml文件, 会根据换行和缩进帮助我们管理配置文件的所在位置
yml文件, 相比properties更轻量级一些
yml文件的劣势:
严格遵循换行和缩进
在填写value时, 一定要在: 后面加上一个空格
4.2 多环境配置
在application.yml中添加一个配置项

spring:profiles:active: 环境名

在resources目录下, 创建多个application-环境名 .yml 文件即可
在部署工程时 通过java -jar jar文件 --spring.profiles.active=环境

4.3 引入外部配置文件信息

和传统的SSM方式一样, 通过@Value的注解去获取properties/yml文件中的内容
如果在yml文件中需要编写大量的自定义配置, 并且具有统一的前缀时, 采用如下方式

@Component
@ConfigurationProperties(prefix = "person")
@Data
public class Person {private String name;private Integer age;private Boolean happy;private Date birth;private Map<String, Object> map;private List<Object> list;private Dog dog;}        
person:name: 张三age: ${random.int}happy: truebirth: 2000/01/01map: {k1: v1,k2: v2}list: [code,music,girl]dog:name: 小黑age: 2

使用@ConfigurationProperties注解时会出现爆红提示, 但不影响使用, 如想要消除爆红, 导入以下依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional>
</dependency>

4.4 热加载

导入以下依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional>
</dependency>

修改IDEA设置 Settings > Build,Execution > Compiler > 勾选Build project automatically
之后项目内容修改后,只需Build一下即可,无需重新部署项目

五. SpringBoot整合MyBatis

5.1 xml方式整合MyBatis

5.1.1 导入依赖

<!--mysql驱动-->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId>
</dependency>
<!--druid连接池-->
<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version>
</dependency>
<!--mybatis-->
<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version>
</dependency>

5.1.2 准备实体类
数据库表准备完成后, 可以手动创建实体类, 也可以使用IDEA自动创建实体类, 这里我们使用第二种
IDEA连接MySQL, 出现时区问题加上Asia/Shanghai
选中要建实体类的表 ==> 右键选择Scripted Extensions ==> Generate Pojos.groovy, 然后选择实体类创建的位置
//部门表

package com.dz.pojo;import lombok.Data;import java.io.Serializable;@Data
public class TDepartment implements Serializable {private Integer id;private String name;private String location;}
//员工表
package com.dz.pojo;import lombok.Data;import java.io.Serializable;@Data
public class TEmployee implements Serializable {private Integer id;private String name;private double salary;private TDepartment department;}

5.1.3 准备Mapper接口

package com.dz.mapper;import com.dz.pojo.TEmployee;
import org.springframework.stereotype.Repository;import java.util.List;@Repository("empMapper")
public interface EmpMapper {List<TEmployee> findAll();
}

5.1.4 扫描Mapper接口所在的包
在启动类上添加注解, 扫描Mapper接口所在的包

@MapperScan(basePackages = "com.dz.mapper")

5.1.5 准备Mapper映射文件
resources目录下创建mapper目录, 用来存放Mapper映射文件
EmpMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.dz.mapper.EmpMapper"><resultMap id="emp_resultMap" type="TEmployee"><id column="id" property="id"/><result column="name" property="name"/><result column="salary" property="salary"/><association property="department" javaType="TDepartment"><id column="dpt_id" property="id"/><result column="dpt_name" property="name"/><result column="location" property="location"/></association></resultMap><!--List<TEmployee> findAll();--><select id="findAll" resultMap="emp_resultMap">select emp.id,emp.name,salary,dpt.id dpt_id,dpt.name dpt_name,dpt.locationfrom t_employee empjoin t_department dpton emp.dept_id=dpt.id</select>
</mapper>

5.1.6 添加yml文件配置信息
MyBatis设置
扫描映射文件
配置实体类别名
#MyBatis设置

mybatis:#扫描映射文件mapper-locations: classpath:mapper/*.xml#配置别名扫描的包, 别名=实体类类名type-aliases-package: com.dz.pojo#开启驼峰映射配置configuration:map-underscore-to-camel-case: true

5.1.7 指定连接数据库的信息
#连接数据库的信息

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql:///mybatis_dbusername: rootpassword: 8031type: com.alibaba.druid.pool.DruidDataSource

5.1.8 测试
直接在EmpMapper接口双击接口名选中右键 ==> Go to ==> Test
选中我们要测试的方法findAll, 就会自动创建当前接口的测试类EmpMapperTest.java
给SpringBoot的主测试类加一个public, 然后让我们的EmpMapperTest测试类继承SpringBoot的主测试类, 就可以进行测试了

package com.dz.mapper;import com.dz.Springboot02ConfigApplicationTests;
import com.dz.pojo.TEmployee;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;import java.util.List;class EmpMapperTest extends Springboot02ConfigApplicationTests {@Autowiredprivate EmpMapper empMapper;@Testvoid findAll() {List<TEmployee> tEmployees = empMapper.findAll();for (TEmployee tEmployee : tEmployees) {System.out.println(tEmployee);}}
}

如果出现timezone之类的错误,就在.yml中的数据库连接配置中的url后面加上?serverTimezone=Asia/Shanghai, 因为SpringBoot默认导入的mysql是8.X的

5.2 注解方式整合MyBatis

5.2.1 创建Department的Mapper接口

package com.dz.mapper;import com.dz.pojo.TDepartment;
import org.apache.ibatis.annotations.Param;import java.util.List;@Repository("dptMapper")
public interface DptMapper {//查询所有部门List<TDepartment> findAll();//根据id查一个部门TDepartment findOneById(@Param("id") Integer id);
}

5.2.2 添加MyBatis注解
针对增删改查: @Insert, @Delete, @Update, @Select
但还是需要在启动类中添加@MapperScan(basePackages = “com.dz.mapper”)注解的, 只是不用在.yml配置文件中配置.xml文件的扫描和实体类别名了

package com.dz.mapper;import com.dz.pojo.TDepartment;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;import java.util.List;@Repository("dptMapper")
public interface DptMapper {@Select("select * from t_department")List<TDepartment> findAll();@Select("select * from t_department where id=#{id}")TDepartment findOneById(@Param("id") Integer id);
}

5.2.3 测试, 看到执行的sql语句
#查看sql语句

logging:level:com.dz.mapper: debug
package com.dz.mapper;import com.dz.Springboot02ConfigApplicationTests;
import com.dz.pojo.TDepartment;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;import java.util.List;class DptMapperTest extends Springboot02ConfigApplicationTests {@Autowiredprivate DptMapper dptMapper;@Testvoid findAll() {List<TDepartment> departments = dptMapper.findAll();for (TDepartment department : departments) {System.out.println(department);}}@Testvoid findOneById() {TDepartment department = dptMapper.findOneById(1);System.out.println(department);}
}

5.3 SpringBoot整合分页助手

5.3.1 导入依赖

<!--分页助手PageHelper-->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.3.0</version>
</dependency>

5.3.2 测试使用

package com.dz.mapper;import com.dz.Springboot02ConfigApplicationTests;
import com.dz.pojo.TEmployee;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;import java.util.List;class EmpMapperTest extends Springboot02ConfigApplicationTests {@Autowiredprivate EmpMapper empMapper;@Testvoid findAll() {List<TEmployee> tEmployees = empMapper.findAll();for (TEmployee tEmployee : tEmployees) {System.out.println(tEmployee);}}@Testvoid findAllByPage() {//1. 执行分页PageHelper.startPage(1,2);//2. 执行查询List<TEmployee> employees = empMapper.findAll();//3. 封装PageInfo对象PageInfo<TEmployee> pageInfo = new PageInfo<>(employees);//4. 输出for (TEmployee employee : pageInfo.getList()) {System.out.println(employee);}}
}

相关文章:

Springboot技术栈常见问题及搭建步骤

一. SpringBoot介绍 1.1. 引言 为了使用SSM框架去开发, 准备SSM框架的模板配置 为了使Spring整合第三方框架, 单独的去编写xml文件 导致SSM项目后期xml文件特别多, 维护xml文件的成本是很高的 SSM工程部署也是很麻烦, 依赖第三方的容器 SSM开发方式很是笨重 1.2 SpringBoot …...

session 共享服务器

1.安装 kryo-3.0.3.jar asm-5.2.jar objenesis-2.6.jar reflectasm-1.11.9.jar minlog-1.3.1.jar kryo-serializers-0.45.jar msm-kryo-serializer-2.3.2.jar memcached-session-manager-tc9-2.3.2.jar spymemcached-2.12.3.jar memcached-session-manager-2.3.2.jar …...

vue2:v-for实现的el-radio-group选中时显示角标,并自定义选中按钮的字体颜色和背景色

项目中需要实现一组预定义查询,每一个查询按钮在选中时右上角显示一个角标,展示当前查询返回的数据条目。 1、text-color="#3785FF" fill="#E6EAF1" 处理选中时的字体颜色和背景色,如上图,分别为蓝色和浅灰色。 2、badge中:value="selectedRadio…...

【Linux】-学习笔记10

第八章、Linux下的火墙管理及优化 1.什么是防火墙 从功能角度来讲 防火墙是位于内部网和外部网之间的屏障&#xff0c;它按照系统管理员预先定义好的规则来控制数据包的进出 从功能实现角度来讲 火墙是系统内核上的一个模块netfilter(数据包过滤机制) …...

鸿蒙NEXT开发案例:九宫格随机

【引言】 在鸿蒙NEXT开发中&#xff0c;九宫格抽奖是一个常见且有趣的应用场景。通过九宫格抽奖&#xff0c;用户可以随机获得不同奖品&#xff0c;增加互动性和趣味性。本文将介绍如何使用鸿蒙开发框架实现九宫格抽奖功能&#xff0c;并通过代码解析展示实现细节。 【环境准…...

深度解析:RTC电路上的32.768KHz时钟的频偏及测试

1、什么是RTC RTC是Real-Time Clock&#xff08;实时时钟&#xff09;的缩写&#xff0c;通常在电子产品中&#xff0c;是用时钟电路&#xff08;外部采用时钟芯片&#xff0c;比如AiP8563&#xff09;或时钟模块(SOC内部包含了时钟模块&#xff0c;只需要外接32.768KHz晶振)来…...

Scala的泛型

需求:定义一个名为getMiddleEle 的方法用它来获取当前的列表的中间位置的值中间位置的下标 长度/2目标:getMiddleEle(List(1,2,3,4,5)) > 5/2 2 > 下标为2的元素是:3 getMiddleEle(List(1,2,3,4)) > 4/2 2 > 下标为2的元素是:3格式如下: 定义一个函数的格式:def…...

OpenGL ES详解——glUniform1i方法是否能用于设置纹理单元

glUniform1i 方法确实可以用于设置纹理单元&#xff08;texture unit&#xff09;。在OpenGL中&#xff0c;纹理单元是图形硬件的一部分&#xff0c;它允许你同时绑定多个纹理&#xff0c;并在着色器程序中通过uniform变量来选择使用哪个纹理。 通常&#xff0c;纹理单元通过整…...

探索 Janus-1.3B:一个统一的 Any-to-Any 多模态理解与生成模型

随着多模态技术的不断发展&#xff0c;越来越多的模型被提出以解决跨文本与图像等多种数据类型的任务。Janus-1.3B 是由 DeepSeek 推出的一个革命性的模型&#xff0c;它通过解耦视觉编码并采用统一的 Transformer 架构&#xff0c;带来了一个高度灵活的 any-to-any 多模态框架…...

论文信息搜集

系列博客目录 文章目录 系列博客目录1.秩典型相关分析及其在视觉搜索重排序中的应用《Rank canonical correlation analysis and its application in visual search reranking》2.利用边信息的规范秩估计在多维谐波恢复中的应用《Canonical Rank Estimation Using Side Informa…...

实操给自助触摸一体机接入大模型语音交互

本文以CSK6 大模型开发板串口触摸屏为例&#xff0c;实操讲解触摸一体机怎样快速增加大模型语音交互功能&#xff0c;使用户能够通过语音在一体机上查询信息、获取智能回答及实现更多互动功能等。 在本文方案中通过CSK6大模型语音开发板采集用户语音&#xff0c;将语音数据传输…...

图表的放大和刷新功能

正常图表渲染显示&#xff1a; // 漏斗ading动画 let myChartone; // 获取配置项 let optionone; // 获取漏斗的数据 let order; let pay_order; let pay_order_num; let pay_order_num_num; let optiones; // 漏斗渲染 function polt(data) {// 从名为data的对象中获取ordata属…...

SQLServer利用QQ邮箱做SMTP服务器发邮件

环境 Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64) SQL Server Management Studio 15.0.18384.0 SQL Server 管理对象 (SMO) 16.100.46367.54 Microsoft .NET Framework 4.0.30319.42000 操作系统 Windows Server2019 ———————————————— 前言&#xf…...

flutter 多文本,其中文本下划线往下移动

变态需求 flutter中再满足多行文本&#xff0c;文本内有多个样式&#xff0c;并且多个样式可触发事件的情况&#xff0c;将其中的一部分文本的下划线往下移 方式一&#xff1a; 实现 使用RichText组件&#xff0c;主要是看中里面的WidgetSpan可以穿child为一个widget 实现源…...

7.OPEN SQL

总学习目录请点击下面连接 SAP ABAP开发从0到入职&#xff0c;冷冬备战-CSDN博客 目录 ​编辑 1.OPEN-SQL 简单回顾 R3体系 OEPN-SQL 2.OPEN-SQL 读取数据 2.1Select 语句 select 1条数据 多条数据与into AS别名 2.2INTO 结构体 内表 例子 2.3FROM 选择动态表…...

Python轻松获取抖音视频播放量

现在在gpt的加持下写一些简单的代码还是很容易的&#xff0c;效率高&#xff0c;但是要有一点基础&#xff0c;不然有时候发现不了问题&#xff0c;这些都需要经验积累和实战&#xff0c;最好能和工作结合起来&#xff0c;不然很快一段时间就忘的干干净净了&#xff0c;下面就是…...

YOLOv8目标检测(三*)_最佳超参数训练

YOLOv8目标检测(一)_检测流程梳理&#xff1a;YOLOv8目标检测(一)_检测流程梳理_yolo检测流程-CSDN博客 YOLOv8目标检测(二)_准备数据集&#xff1a;YOLOv8目标检测(二)_准备数据集_yolov8 数据集准备-CSDN博客 YOLOv8目标检测(三)_训练模型&#xff1a;YOLOv8目标检测(三)_训…...

SpringBoot SPI

参考 https://blog.csdn.net/Peelarmy/article/details/106872570 https://javaguide.cn/java/basis/spi.html#%E4%BD%95%E8%B0%93-spi SPI SPI(service provider interface)是JDK提供的服务发现机制。以JDBC为例&#xff0c;JDK提供JDBC接口&#xff0c;在包java.sql.*。MY…...

uniappp配置导航栏自定义按钮(解决首次加载图标失败问题)

1.引入iconfont的图标&#xff0c;只保留这两个文件 2.App.vue引入到全局中 import "./static/fonts/iconfont.css"3.pages.json中配置text为图标对应的unicode {"path": "pages/invite/invite","style": {"h5": {"…...

【Apache paimon】-- 集成 hive3.1.3 异常

目录 1、场景再现 Step1:在 hive cli beeline 执行创建 hive paimon 表 Step2:使用 insert into 写入数据 Step3:抛出异常 2、原因分析 Step1:在 yarn resource manager 作业界面查询 hive sql mr job 的 yarn log Step2:搜索job 使用的 zstd jar 版本 Step3:定…...

基于docker部署Nacos最新版本-国内稳定镜像

介绍 当前微服务架构常用的配置中心&#xff0c;本文推荐的是阿里云开源的nacos&#xff0c;截止发布本文为止&#xff0c;最新的nacos稳定版本为2.4.3 拉取镜像 //这个是国内目前可以下载的成熟的nacos镜像仓库&#xff0c;默认的docker hub需要不断的翻墙才可以下载 docke…...

云计算中的Hive操作详解

文章目录 云计算中的Hive操作详解一、引言二、Hive的基本操作1、创建表2、导入数据3、数据查询4、分区表操作 三、使用示例1、字符串处理函数2、数据类型转换 四、总结 云计算中的Hive操作详解 一、引言 Hive是云计算中一个非常重要的组件&#xff0c;它是基于Hadoop的一个数…...

UE4_控件蓝图_制作3D生命血条

一&#xff1a;效果图如下&#xff1a; 二、实现步骤&#xff1a; 1、新建敌人 右键蓝图类 选择角色&#xff0c; 重命名为BP_Enemytest。 双击打开&#xff0c;配置敌人网格体 修改位置及朝向 效果如下&#xff1a; 选择合适的动画蓝图类&#xff1a; 人物就有了动作&#x…...

11篇--图像边缘检测

图像梯度 要学习图像边缘检测&#xff0c;要先了解图像梯度的概念&#xff0c;我们正是通过梯度值来区分边缘像素点的 处于边缘附近的像素点与周围像素点的差距很大&#xff08;不然不会有边缘呈现&#xff09;&#xff0c;所以给边缘附近的的梯度之变化很快&#xff0c;通过…...

宝塔SSL证书申请失败,报错:申请SSL证书错误 module ‘OpenSSL.crypto‘ has no attribute ‘sign‘(已解决)

刚安装宝塔申请SSL就报错&#xff1a;申请SSL证书错误 module OpenSSL.crypto has no attribute sign 面板、插件版本&#xff1a;9.2.0 系统版本&#xff1a;Alibaba Cloud Linux 3.2104 LTS 问题&#xff1a;申请SSL证书错误 module OpenSSL.crypto has no attribute sign…...

(已开源) 详解4D Radar数据集K-Radar

本文介绍一个4D Radar公开数据集&#xff1a;KAIST-Radar&#xff08;简称K-Radar&#xff0c;由AVELab提供&#xff09;是一个新型的大规模目标检测数据集和基准测试集&#xff0c;包含35000帧4D雷达张量&#xff08;4DRT&#xff09;数据。本文主要贡献有&#xff1a; 本文提…...

基于RK3588机器人控制器+3D视觉传感器的送餐机器人解决方案

送餐机器人 通过搭载3D视觉传感器信迈机器人控制器&#xff0c;送餐机器人可以在复杂的餐厅环境中灵活避障通行&#xff0c;极大地提升餐品配送效率&#xff0c;改善用户用餐体验&#xff0c;并显著降低店家经营成本。 高峰期送餐难&#xff0c;曾一直是送餐机器人的行业痛点。…...

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 数据处理

基于Qwen2-VL模型针对LaTeX OCR任务进行微调训练 - 数据处理 flyfish 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_LoRA配置如何写 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_单图推理 基于Qwen2-VL模型针对LaTeX_OCR任务进行微调训练_-_原模型_单图推理 基于Q…...

Microi吾码|开源低代码.NET、VUE低代码项目,表单引擎介绍

Microi吾码&#xff5c;开源低代码.NET、VUE低代码项目&#xff0c;表单引擎介绍 一、摘要二、Microi吾码介绍2.1 功能介绍2.2 团队介绍2.3 上线项目案例 三、Microi吾码表单引擎是什么&#xff1f;四、Microi吾码表单引擎功能4.1 模块引擎 - 由表单引擎驱动4.2 流程引擎 - 由表…...

[Ubuntu] Linux命令收集

1、移动文件夹内的所有文件和子文件夹&#xff1a; 如果你想移动一个文件夹内的所有内容到另一个目录&#xff0c;但不移动该文件夹本身&#xff0c;你可以使用以下命令&#xff1a; 源&#xff1a;/home/ubuntu/www/demo/web下的所有文件及文件夹&#xff1b; 目标&#xf…...