SpringBoot基础使用及对其他项目进行整合

目录

一、简介

1-讲述

2-特点

二、创建配置

1.创建

2.配置

3.代码生成

三、项目整合

每篇一获


一、简介

1-讲述

众所周知 Spring 应用需要进行大量的配置,各种 XML 配置和注解配置让人眼花缭乱,且极容易出错,因此 Spring 一度被称为“配置地狱”。为了简化 Spring 应用的搭建和开发过程,Pivotal 团队在 Spring 基础上提供了一套全新的开源的框架,它就是Spring Boot。

SpringBoot是一个用于构建基于Spring框架的快速应用程序的开源框架。它简化了Spring应用程序的配置和部署过程,提供了一种快速构建生产级别的应用程序的方式。SpringBoot基于约定优于配置的原则,通过自动配置和起步依赖简化了Spring应用程序的开发过程。

2-特点

SpringBoot提供了一系列的特性,包括:

1. 自动配置:SpringBoot根据应用程序的依赖和配置自动配置应用程序的环境,大大减少了开发人员的配置工作。

2. 起步依赖:SpringBoot提供了一系列的起步依赖,可以快速地集成各种常用的框架和库,如Web开发、数据访问、安全等。

3. 嵌入式容器:SpringBoot集成了常用的嵌入式容器,如Tomcat、Jetty等,可以方便地将应用程序打包成可执行的JAR文件,直接运行。

4. Actuator:SpringBoot提供了Actuator模块,可以监控和管理应用程序的运行状态,包括健康状况、运行指标等。

5. 外部化配置:SpringBoot支持将应用程序的配置外部化,可以通过属性文件、环境变量等方式灵活配置应用程序。

  • 独立运行的 Spring 项目

Spring Boot 可以以 jar 包的形式独立运行,Spring Boot 项目只需通过命令“ java–jar xx.jar” 即可运行。

  • 内嵌 Servlet 容器

Spring Boot 使用嵌入式的 Servlet 容器(例如 Tomcat、Jetty 或者 Undertow 等),应用无需打成 WAR 包 。

  • 提供 starter 简化 Maven 配置

Spring Boot 提供了一系列的“starter”项目对象模型(POMS)来简化 Maven 配置。

  • 提供了大量的自动配置

Spring Boot 提供了大量的默认自动配置,来简化项目的开发,开发人员也通过配置文件修改默认配置。

  • 自带应用监控

Spring Boot 可以对正在运行的项目提供监控。

  • 无代码生成和 xml 配置

Spring Boot 不需要任何 xml 配置即可实现 Spring 的所有配置。

总的来说,SpringBoot通过简化配置、提供起步依赖、集成嵌入式容器等特性,大大简化了Spring应用程序的开发和部署过程,使开发人员可以更加专注于业务逻辑的实现。因此,SpringBoot已经成为了构建Java应用程序的首选框架之一。

二、创建配置

需要将IDEA转换为中文,下载图中的插件即可,在重启IDEA。

1.创建

在我们的IDEA中创建SpringBoot项目,如图操作:

之后就是选择依赖,选择的依赖在创建项目是会自动配置好。

根据图中所示,选择5项,当然,如果还需要可以进行选择增加

以下是所有选择的依赖 : 

之后就是一个版本的选择,我这里选择的是如图 :

参考选择版本如图 : 

注意:创建完成之后,就直接修改maven设置,将maven引进项目中。 

 

2.配置

包和类不能乱改,只能在com.CloudJun.boot01(自己创建的项目包中)建子包,因为程序只加载Application.java所在包及其子包下的内容。

  • src/main/java:主程序入口 Application,可以通过直接运行该类来启动SpringBoot应用

  • src/main/resources:配置目录,该目录用来存放应用的一些配置信息,比如应用名、服务端口、数据库配置等。由于我们应用了Web模块,因此产生了 static目录与templates目录,前者用于存放静态资源,如图片、CSS、JavaScript等;后者用于存放Web页面的模板文件。

  • src/test:单元测试目录,生成的 ApplicationTests 通过 JUnit4实现,可以直接用运行 SpringBoot应用的测试。

  • application.properties/application.yml:Ø 用于存放程序的各种依赖模块的配置信息,比如:服务端口,数据库连接配置等。

    application.properties,这个后缀的模块的配置,不推荐使用,所有我们需要将这个文件转换会application.yml后缀的。

    在插件中下载如图的插件 : 

    下载完成之后,选中项目中application.properties的文件,右键点击如图中的选项,将会自动换成.yml后缀的,并且格式也会自动修改为.yml后缀的格式

application.yml文件中的配置修改为以下 : 

#mybatis:
#    mapper-locations: classpath:mappers/*xml
#    type-aliases-package: org.example.boot01.mybatis.entity
#服务器运行的端口
server:
    port: 8080
spring:
    #数据源的配置
    datasource:
        url: jdbc:mysql://localhost:3306/bookshop
        username: root
        password: 123456
        driver-class-name: com.mysql.cj.jdbc.Driver
#mybatis配置
mybatis:
    # mapper.xml 所在位置
    mapper-locations: classpath*:mapper/*xml

在pom.xml文件中手动配置一个aop

<dependency>
  <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-aop</artifactId>
</dependency> 

pom.xml 配置文件

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>boot01</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>boot01</name>
    <description>boot01</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.7.6</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

<!--        <dependency>-->
<!--            <groupId>org.mybatis.spring.boot</groupId>-->
<!--            <artifactId>mybatis-spring-boot-starter</artifactId>-->
<!--            <version>2.3.0</version>-->
<!--        </dependency>-->

<!--        <dependency>-->
<!--            <groupId>com.mysql</groupId>-->
<!--            <artifactId>mysql-connector-j</artifactId>-->
<!--            <scope>runtime</scope>-->
<!--        </dependency>-->

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

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.15</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <!-- 只负责定义依赖-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <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>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.CloudJun.boot01.Boot01Application</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

数据库连接,在右侧会有一个数据库的增加连接,如图 :

3.代码生成

选中连接数据库中的数据表,右键点击

如图输入填写 :

如图选中

注意 : template选择中可以选择default-all,这个会生成增删改查的SQL及方法,这里只演示查询,我这里就选择了default-empty,这个不会生成增删改查的SQL及方法

再将对象打上两个注释

@AllArgsConstructor  @NoArgsConstructor

将实体中设置set/get方法

三、项目整合

增加分页依赖

 <!-- 分页插件的依赖-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.6</version>
        </dependency>

pom.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>boot01</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>boot01</name>
    <description>boot01</description>
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.7.6</spring-boot.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.3.0</version>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>


        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <!-- 分页插件的依赖-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.4.6</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.15</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <!-- 只负责定义依赖-->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <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>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.CloudJun.boot01.Boot01Application</mainClass>
                    <skip>true</skip>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

application.yml 文件

#mybatis:
#    mapper-locations: classpath:mappers/*xml
#    type-aliases-package: org.example.boot01.mybatis.entity
#服务器运行的端口
server:
    port: 8080
spring:
    #数据源的配置
    datasource:
        url: jdbc:mysql://localhost:3306/bookshop
        username: root
        password: 123456
        driver-class-name: com.mysql.cj.jdbc.Driver
        type: com.alibaba.druid.pool.DruidDataSource
        druid:
                # 初始化时建立物理连接的个数
                initial-size: 5
                # 最小连接池数量
                min-idle: 5
                # 最大连接池数量
                max-active: 20
                #配置获取连接等待超时的时间
                max-wait: 60000
                #配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
                time-between-eviction-runs-millis: 60000
                # 一个连接在池中最小生存的时间,单位是毫秒
                min-evictable-idle-time-millis: 30000
                # 用来检测连接是否有效的 sql,要求是一个查询语句
                validation-query: SELECT 1 FROM DUAL
                # 建议配置为 true,不影响性能,并且保证安全性
                test-while-idle: true
                # 申请连接时执行 validationQuery 检测连接是否有效
                test-on-borrow: true
                # 归还连接时执行 validationQuery 检测连接是否有效
                test-on-return: false
                # 是否缓存 preparedStatement,即 PsCache
                # PSCache 对支持游标的数据库性能提升巨大,比如说 oracle,而 mysql 则建议关闭
                pool-prepared-statements: true
                # 要启用 PSCache,必须配置大于0
                max-pool-prepared-statement-per-connection-size: 20
                # 配置监控统计拦截的filters,去掉后监控界面sql无法统计
                filter:
                    stat:
                        merge-sql: true
                        slow-sql-millis: 5000
                # 基础监控配置
                web-stat-filter:
                    enabled: true
                    url-pattern: /*
                    exclusions: "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*"
                    session-stat-enable: true
                    session-stat-max-count: 100
                stat-view-servlet:
                    enabled: true
                    url-pattern: /druid/*
                    reset-enable: true
                    login-username: admin #设置监控页面的登录名和密码
                    login-password: admin
                    allow: 127.0.0.1 #deny: 192.168.1.100
#mybatis配置
mybatis:
    # mapper.xml 所在位置
    mapper-locations: classpath*:mapper/*xml
    #实体类所在位置
    type-aliases-package: com.CloudJun.boot01.domain
logging:
    level:
        com.CloudJun.boot01.mapper: debug
# 分页插件的配置
pagehelper:
    # 数据库方言
    helperDialect: mysql
    # 是否启用 reasonable
    reasonable: true
    # mapper是否支持方法参数
    supportMethodsArguments: true
    # 参数
    params: count=countSql




TBookMapper.xml 动态SQL的编写

<?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.CloudJun.boot01.mapper.TBookMapper">

    <resultMap id="BaseResultMap" type="com.CloudJun.boot01.domain.TBook">
            <id property="id" column="id" jdbcType="INTEGER"/>
            <result property="bookname" column="bookname" jdbcType="VARCHAR"/>
            <result property="price" column="price" jdbcType="FLOAT"/>
            <result property="booktype" column="booktype" jdbcType="VARCHAR"/>
    </resultMap>

    
    <select id="bookList" resultType="com.CloudJun.boot01.domain.TBook">
        select * from t_book
    </select>
    
    
    <sql id="Base_Column_List">
        id,bookname,price,
        booktype
    </sql>
</mapper>

TBookMapper  编写

package com.CloudJun.boot01.mapper;

import com.CloudJun.boot01.domain.TBook;
import com.CloudJun.boot01.utils.PageBean;

import java.util.List;

/**
 * @Entity com.CloudJun.boot01.domain.TBook
 */
public interface TBookMapper {
     List<TBook> bookList(PageBean pageBean);

}




 BookService

package com.CloudJun.boot01.service;

import com.CloudJun.boot01.domain.TBook;
import com.CloudJun.boot01.utils.PageBean;

import java.util.List;

/**
 * @author CloudJun
 * @create  2023-12-12 15:49
 */
public interface BookService {
    List<TBook> bookList(PageBean pageBean);
}

BookServiceImpl

package com.CloudJun.boot01.service.Impl;

import com.CloudJun.boot01.domain.TBook;
import com.CloudJun.boot01.mapper.TBookMapper;
import com.CloudJun.boot01.service.BookService;
import com.CloudJun.boot01.utils.PageBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author CloudJun
 * @create  2023-12-12 15:51
 */
@Service
public class BookServiceImpl implements BookService {

    @Autowired
    private TBookMapper  bookMapper;

    @Override
    public List<TBook> bookList(PageBean pageBean) {
        return bookMapper.bookList(pageBean);
    }
}

 PageBean 分页工具类

package com.CloudJun.boot01.utils;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
public class PageBean {

    private Integer page = 1;
    private Integer rows = 5;
    private Long total = 0L;
    private boolean open = true;

    public int start() {
        return (page - 1) * rows;
    }

    public int previous() {
        return Math.max(this.page - 1, 1);
    }

    public int next() {
        return Math.min(this.page + 1, maxPage());
    }

    public int maxPage() {
        return (int) Math.ceil(this.total.intValue() / (this.rows * 1.0));
    }

}

BookController 

package com.CloudJun.boot01.controller;

import com.CloudJun.boot01.service.BookService;
import com.CloudJun.boot01.utils.PageBean;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * @author CloudJun
 * @create  2023-12-12 15:16
 */
@RestController
@RequestMapping("/book")
public class BookController {

    @Autowired
    private BookService bookService;

    @RequestMapping("/list")
    public Map List(PageBean pageBean){
        Map map = new HashMap();
        PageHelper.startPage(pageBean.getPage(),pageBean.getRows());
        map.put("data",bookService.bookList(pageBean));
        map.put("code",200);
        return map;
    }



}

在项目中找到Boot01Application启动类,这个是根据项目的命名来的并且拼接一个Application,如图操作进行启动:

访问路径 : localhost:8080/book/list
  (不带参数自动分页到第已页) 访问路径根据自己在BookController 中配置的

 访问路径 : localhost:8080/book/list?page=2
  (带参数会根据参数分页到第参数页)

每篇一获

基础学习可以带来以下收获:

1. 快速搭建项目:SpringBoot提供了快速搭建项目的能力,可以减少项目搭建的时间和精力,让开发者更专注于业务逻辑的实现。

2. 简化配置:SpringBoot通过自动配置和约定大于配置的原则,简化了项目的配置过程,减少了繁琐的配置代码,提高了开发效率。

3. 内嵌服务器:SpringBoot内置了Tomcat、Jetty等服务器,可以方便地将应用程序打包成可执行的JAR文件,简化了部署和运行的流程。

4. 微服务开发:SpringBoot与SpringCloud结合可以快速搭建微服务架构,实现服务注册、服务发现、负载均衡等功能,为微服务架构的开发提供了便利。

5. 生态丰富:SpringBoot拥有丰富的生态系统,包括各种插件、第三方库和开发工具,可以满足不同需求的开发。

总之,学习SpringBoot基础可以让开发者更快速、更高效地开发和部署应用程序,提高了开发效率和质量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/247524.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ignoring query to other database

登录数据库执行查看database的脚本提示 仔细观察才发现&#xff0c;登录的时候我写的是&#xff0c;没写 -u 退出重新登录&#xff0c;好了~

继续看回溯问题

关卡名 继续看回溯问题 我会了✔️ 内容 1.复习递归和N叉树&#xff0c;理解相关代码是如何实现的 ✔️ 2.理解回溯到底怎么回事 ✔️ 3.掌握如何使用回溯来解决二叉树的路径问题 ✔️ 1 复原IP地址 这也是一个经典的分割类型的回溯问题。LeetCode93.有效IP地址正好由四…

垃圾回收 (GC) 在 .NET Core 中是如何工作的?(二)

接上一篇文章垃圾回收 (GC) 在 .NET Core 中是如何工作的&#xff1f;-CSDN博客 GC 会分配堆段&#xff0c;其中每个段都是一系列连续的内存。 置于堆中的对象归类为 3 个代系之一&#xff1a;0、1 或 2。 代系可确定 GC 尝试在应用不再引用的托管对象上释放内存的频率。 编号…

C++_构造函数与析构函数

目录 1、构造函数的写法 1.2 构造函数优化写法 2、默认构造函数与默认成员函数 2.1 默认成员函数对不同类型的处理 3、对内置类型的补丁 4、析构函数 4.1 析构函数的写法 5、默认析构函数 6、初始化列表 6.1 初始化列表的写法 6.2 初始化列表的作用 6.3 回顾与总结 …

引迈信息-JNPF平台怎么样?值得入手吗?

目录 1.前言 2.引迈低代码怎么样&#xff1f; 3.平台亮点展示 4.引迈产品特点 5.引迈产品技术栈&#xff1a; 1.前言 低代码是近几年比较火的一种应用程序快速开发方式&#xff0c;它能帮助用户在开发软件的过程中大幅减少手工编码量&#xff0c;并通过可视化组件加速应用…

高效电商策略:小红书集成CRM与广告推广无代码化

无代码开发的优势 随着科技的不断进步&#xff0c;无代码开发&#xff08;No-Code Development&#xff09;已经成为快速构建系统和应用的新趋势。无代码开发指的是不需要传统编程知识&#xff0c;通过图形化的用户界面和模型驱动逻辑来创建应用程序。这种方式让非技术背景的用…

排序 | 冒泡插入希尔选择堆快排归并计数排序

排序 | 冒泡插入希尔选择堆快排归并计数排序 文章目录 排序 | 冒泡插入希尔选择堆快排归并计数排序冒泡排序插入排序希尔排序选择排序堆排序快速排序--交换排序三数取中快速排序hoare版本快速排序挖坑法快速排序前后指针法 快速排序--非递归实现归并排序归并排序非递归实现非比…

Window操作系统发展史

引言 当谈及计算机操作系统的丰富历史和多样性时&#xff0c;Windows操作系统无疑是其中的一颗璀璨明星。自1985年首次亮相以来&#xff0c;Windows经历了长足的发展&#xff0c;塑造了计算机使用体验的方方面面。从初始的简单图形用户界面到如今强大而多样的功能&…

【开源工程及源码】数字孪生乡村—经典开源项目实景三维数字孪生

智慧乡村可视化平台&#xff0c;旨在通过数字化和智能化手段提升乡村管理、服务和发展水平。通过飞渡科技强大的渲染引擎&#xff0c;1&#xff1a;1 建模还原乡村全貌&#xff0c;建立起具备信息化、智能化、绿色化的智慧乡村综合管理平台。 综合态势模块下&#xff0c;可以从…

C语言——预处理详解(#define用法+注意事项)

#define 语法规定 #define定义标识符 语法: #define name stuff #define例子 #include<stdio.h> #define A 100 #define STR "abc" #define FOR for(;;)int main() {printf("%d\n", A);printf("%s\n", STR);FOR;return 0; } 运行结果…

模板方法模式(行为型)

目录 一、前言 二、模板模式 三、带钩子的模板模式 四、总结 一、前言 模板方法模式是一种行为型设计模式&#xff0c;它定义了一个操作中的算法框架&#xff0c;将一些步骤延迟到子类中实现。这种模式是基于“开闭原则”的设计思想&#xff0c;即对扩展开放&#xff0c;对…

【Unity动画】综合案例完结-控制角色动作播放+声音配套

这个案例实现的动作并不复杂&#xff0c;主要包含一个 跳跃动作、攻击动作、还有一个包含三个动画状态的动画混合树。然后设置三个参数来控制切换。 状态机结构如下&#xff1a; 完整代码 using System.Collections; using System.Collections.Generic; using UnityEngine;pu…

数据挖掘-08-基于Python实现时间序列分析建模(ARIMA 模型)(包括数据和代码)

文章目录 0. 数据代码下载1. 背景描述2. 预测目的3. 数据总览4. 数据预处理4.1数据描述性统计与清洗a. 导入程序库b. 读取数据c. 查看统计信息和空值d. 查看是否有重复数据以及清理重复数据e. 空值清理f. 针对清洗后的数据进行统计分析 5. 探索性数据分析5.1 数据分析 6. 构建 …

【2023年公司智能工具降本增效分享总结】「智能工具的力量」总结分享我司通过AI提升软件开发效率与质量调研报告,问题踩坑之路

调研背景 人工智能&#xff08;AI&#xff09;已经成为当今科技发展的主要驱动力之一&#xff0c;AI在多个领域取得了显著的成果&#xff0c;包括软件开发。AI技术的应用可以帮助开发者提高代码质量、减少错误、优化资源和时间管理&#xff0c;从而提高软件开发效率。 调研目…

Knowledge Graph知识图谱—9. Knowledge Modeling

9. Knowledge Modeling & Ontology Engineering How should the knowledge in a KG be modeled? – Which classes of entities do we have? – Which relations connect them? – Which constraints hold for them? → these questions are defined in the ontology …

javacv的视频截图功能

之前做了一个资源库的小项目&#xff0c;因为上传资源文件包含视频等附件&#xff0c;所以就需要时用到这个功能。通过对视频截图&#xff0c;然后作为封面缩略图&#xff0c;达到美观效果。 首先呢&#xff0c;需要准备相关的jar包&#xff0c;之前我用的是低版本的1.4.2&…

速学数据结构 | 树 森林 二叉树 的概念详讲篇

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《速学数据结构》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! &#x1f4cb; 前言 &#x1f308;hello&#xff01; 各位宝子们大家好啊&#xff0c;关于线性表我们已经在前面更新完了…

【C++入门到精通】 线程库 | thread类 C++11 [ C++入门 ]

阅读导航 引言一、thread类的简单介绍二、线程函数详细介绍1. start() 函数&#xff08;1&#xff09;头文件&#xff08;2&#xff09;函数原型 2. join() 函数&#xff08;1&#xff09;头文件&#xff08;2&#xff09;函数原型 3. detach() 函数&#xff08;1&#xff09;头…

扫描电镜中的信号-噪声比(SNR)参数如何优化

在扫描电镜&#xff08;SEM&#xff09;中&#xff0c;信号-噪声比&#xff08;SNR&#xff09;的优化对于获得高质量的图像和可靠的数据分析至关重要。以下是一些优化SNR的方法&#xff1a; 选择适当的检测器&#xff1a;SEM通常配备了不同类型的检测器&#xff0c;如二次电子…

紫光展锐T820与飞桨完成I级兼容性测试 助推端侧AI融合创新

近日&#xff0c;紫光展锐高性能5G SoC T820与百度飞桨完成I级兼容性测试&#xff08;基于Paddle Lite工具&#xff09;。测试结果显示&#xff0c;双方兼容性表现良好&#xff0c;整体运行稳定。这是紫光展锐加入百度“硬件生态共创计划”后的阶段性成果。 本次I级兼容性测试完…