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

SpringBoot基础(原理、项目搭建、yaml)

SpringBoot:javaweb的一个框架,基于Spring开发,SpringBoot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷的开发新一代基于Spring框架的应用程序,它与Spring框架紧密结合用于提升Spring开发者体验的工具。

主要优点:

  • 为所有Spring开发者更快的入门。
  • 提供各种默认配置来简化项目的配置。
  • 内嵌式容器简化web项目。
  • 没有冗余代码生成XML配置的要求。

项目搭建

注意使用的JDK版本,此处需要JDK17才能完成创建,若使用的是JDK8,那需要降低SprnigBoot版本。

法一:在Spring官网中下载,然后将jar包解压,使用idea打开,idea会自动下载jar包

法二:IDEA集成了网站,可以在idea中直接创建一个新项目。

降低版本后测试:

测试环境:

编写Controller类,注意包要放到与启动类同级才能够被识别。其中/hello是接口,作用是接收前端参数,调用业务。

pom文件:

<?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><!--有一个父项目--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.example</groupId><artifactId>demo</artifactId><version>0.0.1-SNAPSHOT</version><name>demo</name><description>Demo project for Spring Boot</description><url/><properties><java.version>1.8</java.version></properties><dependencies><!--springboot的依赖都是使用Spring-boot开头--><!--web依赖,集成tomcat、dispatcherServlet、xml--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><!--单元测试--><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><!--打jar包的插件--><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

项目元数据信息:创建时候输入的Project.Metadate部分,也就是Maven项目的基本元素,包括groupid、artfactid、version、name、description等。

paent:继承spring-boot-starter-parent的依赖管理,新版本与打包等内容。

dependencie:项目具体依赖,这里包含了spring-boot-starter-web用于实现HTTP接口。使用SpringMVC构建Web应用程序,使用Tomcat作为默认嵌入式容器。

build:构建配置部分,默认使用了spring-boot-maven-plugin,配合spring-boot-starter-parent就可以把SpringBoot应用打包成JAR来直接运行。

可以更改启动时的小图标,利用banner:Spring Boot banner在线生成工具,制作下载英文banner.txt,修改替换banner.txt文字实现自定义,个性化启动banner-bootschool.net

修改端口号:

原理

pom.xml文件中

spring-boot-dependencies:核心依赖在父工程中。

自动导入web环境所有的依赖:

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

当我们需要使用某种功能时,只需要找到对应的启动器。

主程序

注解@SpringBootApplication标注这个类是一个springboot的应用

//本身就是Spring的一个组件
//启动类
@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}
}

注解:

  • @SpringBootConfiguration        //springboot的配置     
    • @Configuration   //表明该类是一个配置类
      • @Component    //表明这是一个Spring组件

  • @EnableAutoConfiguration      //自动配置
    • @AutoConfigurationPackage     //自动配置包

      • @Import({Registrar.class})
        public @interface AutoConfigurationPackage {
            String[] basePackages() default {};

            Class<?>[] basePackageClasses() default {};
        }     //自动配置包注册

    • @Import({AutoConfigurationImportSelector.class})  //自动导入选择
      • List<String> configurations = this.getCandidateConfigurations(annotationMetadata, attributes);   //获取所有的配置

获取候选的配置

protected List<String> getCandidateConfigurations(AnnotationMetadata metadata, AnnotationAttributes attributes) {List<String> configurations = SpringFactoriesLoader.loadFactoryNames(this.getSpringFactoriesLoaderFactoryClass(), this.getBeanClassLoader());Assert.notEmpty(configurations, "No auto configuration classes found in META-INF/spring.factories. If you are using a custom packaging, make sure that file is correct.");return configurations;}

自动配置的核心文件:META-INF/spring.factories

Properties properties = PropertiesLoaderUtils.loadProperties(resource);//所有资源加载到配置类中

springboot的所有自动配置都在启动类中被扫描和加载,spring.factories文件中包含了所有的自动配置类,但是不一定生效,要判断条件是否成立,只要导入了对应的start,就有对应的启动器,有了启动器,我们的自动装配就会生效,就会配置成功。

  1. springboot在启动的时候,从类路径下/META-INF/spring.factories获取指定的值。
  2. 将自动配置的类导入容器,自动配置就会生效,会进行自动配置。
  3. 以前我们配置的东西,现在SpringBoot帮我们完成。
  4. 整个javaEE,解决方案和自动配置的东西都在spring-boot-autoconfig这个包下。
  5. 该包会把所有需要导入的组件以类名的方式返回,这些组件就会被添加到容器。
  6. 容器中存在非常多的xxxAutoConfiguration的文件,就是这些类给容器导入了这个场景需要的所有组件,并自动装配。@Configuration  javaConfig
  7. 有了自动配置类,免去了我们手动编写配置文件的工作。

ymal语法

SpringBoot使用一个全局的配置文件,配置文件可以是

  • application.properties
    • 语法结构:key=value
  • application.yaml
    • 语法结构:key:空格value

配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了。

格式对比:

yaml文件可以存储对象(yaml对空格要求严格),properties只能存储键值对。

给实体类赋值

编写Dog实体类:注意:使用注解来写get与set方法时,要引入依赖Lombok

@Component  //把该类添加到Spring组件
@Data   //get、set、无参
@NoArgsConstructor  //显式无参
@AllArgsConstructor //有参
public class Dog {
private String name;
private Integer age;
}
@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {
private String name;
private Integer age;
private Boolean happy;
private Date birth;
private Map<String,Object> maps;
private List<Object> lists;
private Dog dog;
}

一般给Dog实体类赋值

测试:

使用yaml赋值:

@ConfigurationProperties作用:将配置文件中配置的每一个属性的值,映射到这个组件中,告诉SpringBoot将本类中的所有属性和配置文件只能相关的配置进行绑定。

(prefix = "person"):将配置文件中的person下面的所有属性一一对应。

使用配置文件绑定的时候,需要添加依赖:

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

配置文件配置:使用场景:编写配置类。

松散绑定

yaml中的last-name和lastName是一样的。UUID是随机生成唯一标识符

JSR303效验

在字段增加一层过滤器验证,保证数据的合法性。

在前端<input type="email">中,用户只能输入email形式的内容,但是用户可以绕过前端直接提交数据。使用JSR303效验规范数据格式。

例如:效验email形式的数据

添加依赖:

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

在实体类中写校验:

常用的JSR303约束注解

JSR303规范内置了一系列的约束注解,用于对数据进行校验,例如:

  • @NotNull:确保字段不为null

  • @Min@Max:确保数字值在一定的范围内

  • @Size:确保字符串的长度在指定的范围内

  • @Email:确保字段是一个电子邮件地址

  • @Pattern:确保字符串符合正则表达式

相关文章:

SpringBoot基础(原理、项目搭建、yaml)

SpringBoot&#xff1a;javaweb的一个框架&#xff0c;基于Spring开发&#xff0c;SpringBoot本身并不提供Spring框架的核心特性以及扩展功能&#xff0c;只是用于快速、敏捷的开发新一代基于Spring框架的应用程序&#xff0c;它与Spring框架紧密结合用于提升Spring开发者体验的…...

MTV-SCA:基于多试向量的正弦余弦算法

3 正弦余弦算法 (SCA) 正弦余弦算法&#xff08;SCA&#xff09;是为全局优化而开发的&#xff0c;并受到两个函数&#xff0c;正弦和余弦的启发。与其他基于启发式种群的算法一样&#xff0c;SCA在问题的预设最小值和最大值边界内随机生成候选解。然后&#xff0c;通过应用方…...

STL之vector容器

vector的介绍 1.vector是可变大小数组的容器 2.像数组一样&#xff0c;采用连续的空间存储&#xff0c;也就意味着可以通过下标去访问&#xff0c;但它的大小可以动态改变 3.每次的插入都要开空间吗&#xff1f;开空间就要意味着先开临时空间&#xff0c;然后在拷贝旧的到新…...

Android学习总结之jetpack组件间的联系

在传统安卓开发中&#xff0c;UI 组件&#xff08;Activity/Fragment&#xff09;常面临三个核心问题&#xff1a; 生命周期混乱&#xff1a;手动管理 UI 与数据的绑定 / 解绑&#xff0c;易导致内存泄漏&#xff08;如 Activity 销毁后回调仍在触发&#xff09;。数据断层&am…...

linux的信号量初识

Linux下的信号量(Semaphore)深度解析 在多线程或多进程并发编程的领域中&#xff0c;确保对共享资源的安全访问和协调不同执行单元的同步至关重要。信号量&#xff08;Semaphore&#xff09;作为经典的同步原语之一&#xff0c;在 Linux 系统中扮演着核心角色。本文将深入探讨…...

【安装指南】Centos7 在 Docker 上安装 RabbitMQ4.0.x

目录 前置知识:RabbitMQ 的介绍 一、单机安装 RabbitMQ 4.0.7版本 1.1 在线拉取镜像 二、延迟插件的安装 2.1 安装延迟插件 步骤一:下载延迟插件 步骤二:将延迟插件放到插件目录 步骤三:启动延迟插件 步骤四:重启 RabbitMQ 服务 步骤五:验收成果 步骤六:手动…...

Android和iOS测试的区别有哪些?

作为移动端测试工程师,Android 和 iOS 的测试差异直接影响测试策略设计。本文从测试环境、工具链、兼容性、发布流程等维度全面解析,并附实战建议。 1. 测试环境差异 维度AndroidiOS设备碎片化高(厂商/分辨率/系统版本多样)低(仅苹果设备,版本集中)系统开放性开放(可Ro…...

spring中的@PostConstruct注解详解

基本概念 PostConstruct 是 Java EE 规范的一部分&#xff0c;后来也被纳入到 Spring 框架中。它是一个标记注解&#xff0c;用于指示一个方法应该在依赖注入完成后被自动调用。 主要特点 生命周期回调&#xff1a;PostConstruct 标记的方法会在对象初始化完成、依赖注入完成…...

大模型开发学习笔记

文章目录 大模型基础大模型的使用大模型训练的阶段大模型的特点及分类大模型的工作流程分词化(tokenization)与词表映射 大模型的应用 进阶agent的组成和概念planning规划子任务分解ReAct框架 memory记忆Tools工具\工具集的使用langchain认知框架ReAct框架plan-and-Execute计划…...

【android Framework 探究】pixel 5 内核编译

相关文章&#xff1a; 【android Framework 探究】android 13 aosp编译全记录 【android Framework 探究】android 13 aosp 全记录 - 烧录 一&#xff0c;环境 主机 -> Ubuntu 18.04.6 LTS 内存 -> 16GB 手机 -> pixel 5 代号redfin。kernel代号redbull 二&#xf…...

PowerBI实现点击空白处隐藏弹窗(详细教程)

PowerBI点击空白处隐藏弹窗 第五届PowerBI可视化大赛中亚军作品:金融企业智慧经营分析看板 有个功能挺好玩的&#xff1a;点击空白处隐藏弹窗&#xff0c;gif动图如下&#xff1a; 我们以一个案例分享下实现步骤&#xff1a; 第一步&#xff0c; 先添加一个显示按钮&#xff…...

【git】获取特定分支和所有分支

1 特定分支 1.1 克隆指定分支&#xff08;默认只下载该分支&#xff09; git clone -b <分支名> --single-branch <仓库URL> 示例&#xff08;克隆 某一个 分支&#xff09;&#xff1a; git clone -b xxxxxx --single-branch xxxxxxx -b &#xff1a;指定分支…...

Windows配置grpc

Windows配置grpc 方法一1. 使用git下载grph下载速度慢可以使用国内镜像1.1 更新子模块 2. 使用Cmake进行编译2.1 GUI编译2.2 命令行直接编译 3. 使用Visual Studio 生成解决方法 方法二1. 安装 vcpkg3.配置vckg的环境变量2. 使用 vcpkg 安装 gRPC3. 安装 Protobuf4. 配置 CMake…...

【学习笔记】深入理解Java虚拟机学习笔记——第2章 Java内存区域与内存溢出异常

第2章 Java内存区域与内存溢出异常 2.1 概述 略 2.2 运行时数据区域 2.2.1 程序计数器 线程私有&#xff0c;记录执行的字节码位置 2.2.2 Java 虚拟机栈 线程私有&#xff0c;存储一个一个的栈帧&#xff0c;通过栈帧的出入栈来控制方法执行。 -栈帧&#xff1a;对应一个…...

数字智慧方案6189丨智慧应急综合解决方案(46页PPT)(文末有下载方式)

资料解读&#xff1a;智慧应急综合解决方案 详细资料请看本解读文章的最后内容。 在当前社会环境下&#xff0c;应急管理的重要性愈发凸显。国务院发布的《“十四五” 国家应急体系规划》以及 “十四五” 智慧应急专项规划&#xff0c;明确了应急管理体系建设的方向和重点&…...

解决 3D Gaussian Splatting 中 SIBR 可视化组件报错 uv_mesh.vert 缺失问题【2025最新版!】

一、&#x1f4cc; 引言 在使用 3D Gaussian Splatting&#xff08;3DGS&#xff09;进行三维重建和可视化的过程&#xff0c;SIBR_gaussianViewer_app 是一款官方推荐的本地可视化工具&#xff0c;允许我们在 GPU 上实时浏览重建结果。然而&#xff0c;许多用户在启动该工具时…...

见多识广4:Buffer与Cache,神经网络加速器的Buffer

目录 前言传统意义上的Buffer与Cache一言以蔽之定义与主要功能BufferCache 数据存储策略二者对比 神经网络加速器的bufferInput BufferWeight BufferOutput Buffer与传统buffer的核心区别总结 前言 知识主要由Qwen和Kimi提供&#xff0c;我主要做笔记。 参考文献&#xff1a; …...

微服务中组件扫描(ComponentScan)的工作原理

微服务中组件扫描(ComponentScan)的工作原理 你的问题涉及到Spring框架中ComponentScan的工作原理以及Maven依赖管理的影响。我来解释为什么能够扫描到common模块的bean而扫描不到其他模块的bean。 根本原因 关键在于**类路径(Classpath)**的包含情况&#xff1a; Maven依赖…...

C++之类和对象基础

⾯向对象三⼤特性&#xff1a;封装、继承、多态 类和对象 一.类的定义1. 类的定义格式2.类域 二.实例化1.对象2.对象的大小 三.this指针 在 C 的世界里&#xff0c;类和对象构成了面向对象编程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;的核心框架&…...

【DIY小记】新手小白超频遇到黑屏问题解决分享

最近玩FPS游戏的时候&#xff0c;发现以前一顿操作超频之后的电脑&#xff0c;有一定概率会出问题。具体表现比如一种是&#xff0c;电脑显示器直接黑屏&#xff0c;所有键盘交互没有响应&#xff0c;只能直接重启电脑&#xff0c;还有一种是偶现卡顿&#xff0c;直接死机或者卡…...

虚幻引擎 IK Retargeter 编辑器界面解析

我来为您详细解释这段关于虚幻引擎IK Retargeter编辑器界面的文本&#xff0c;它描述了动画重定向系统的核心组件和工作原理。 Retarget Phases (重定向阶段) 这部分介绍了动画重定向过程中的三个关键计算阶段&#xff0c;每个阶段都可以单独启用或禁用&#xff0c;这对于调试…...

uc系统中常用命令、标准C库函数和系统调用

目录 一、常用命令 env echo $name 键值 export name unset name gcc -c xxx.c ar 命令 ar -r libxxx.a xxx1.o xxx2.o gcc -c -fpic xxx.c gcc -shared -fpic xxx1.c xxx2.c -o libxxx.so kill [-信号] PID kill -l 软链接&#xff1a;ln -s xxx yyy 硬链接&…...

OpenHarmony - 驱动使用指南,HDF驱动开发流程

OpenHarmony - HDF驱动开发流程 概述 HDF&#xff08;Hardware Driver Foundation&#xff09;驱动框架&#xff0c;为驱动开发者提供驱动框架能力&#xff0c;包括驱动加载、驱动服务管理、驱动消息机制和配置管理。并以组件化驱动模型作为核心设计思路&#xff0c;让驱动开发…...

C++负载均衡远程调用学习之UDP SERVER功能

目录 1.LARSV0.9-配置功能 2.LARSV0.10-upd-server的实现 3.LARSV0.10-udp-client的实现 1.LARSV0.9-配置功能 2.LARSV0.10-upd-server的实现 3.LARSV0.10-udp-client的实现...

word交叉引用图片、表格——只引用编号的处理方法

交叉引用图片/表格 在“引用”选项卡上的“题注”组中&#xff0c;单击“插入题注”。勾选【从题注中排除标签】。在文中插入题注。 【注 意】 这时候插入的题注只有编号项了。然后手动打上标签【TABLE】&#xff0c;并在标签和编号项之间加上【样式分隔符&#xff0c;AltCt…...

平台介绍-开放API接口-鉴权

平台的理念是一个组织内部只建一套系统。但是现实情况是&#xff0c;组织内部已经建立了很多系统&#xff0c;是不能一次性替代的&#xff0c;只能先搭起平台&#xff0c;然后逐步开始替换。这样就不可避免的存在其他系统和平台进行交互的问题。 平台为此设计了开放API接口。其…...

【Bootstrap V4系列】 学习入门教程之 组件-警告框(Alert)

Bootstrap V4 学习入门教程之 组件-警告框&#xff08;Alert&#xff09; 警告框&#xff08;Alert&#xff09;一、示例二、链接的颜色三、添加其它内容四、关闭警告框 通过 JavaScript 触发行为触发器本组件所暴露的事件 警告框&#xff08;Alert&#xff09; 通过精炼且灵活…...

【服务器通信-socket】——int socket(int domain, int type, int protocol);

#include <sys/types.h> #include <sys/socket.h> int socket(int domain, int type, int protocol); domain: AF_INET 这是大多数用来产生socket的协议&#xff0c;使用TCP或UDP来传输&#xff0c;用IPv4的地址 AF_INET6 与上面类似&#xff0c;不过是来用IPv6的地…...

洛谷P1014(Cantor 表[NOIP 1999 普及组])题解

题目大意&#xff1a;求Cantor表&#xff08;按照Z字形排列&#xff08;如第一项是1/1&#xff0c;然后是1/2&#xff0c;2/1&#xff0c;3/1&#xff0c;2/2&#xff09;&#xff09;的第N项。 那么&#xff0c;我们需要找出Cantor表的排列规律。根据题目中的Z字形描述&#x…...

【愚公系列】《Manus极简入门》012-自我认知顾问:“内在探索向导”

&#x1f31f;【技术大咖愚公搬代码&#xff1a;全栈专家的成长之路&#xff0c;你关注的宝藏博主在这里&#xff01;】&#x1f31f; &#x1f4e3;开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主&#xff01; &#x1f…...

密码学_加密

目录 密码学 01 密码基础进制与计量 02 加解密基操 替换 移位 编码 编码 置换 移位 加解密强度 03 对称加密算法(私钥) 工作过程 缺陷 对称加密算法列举&#xff1f; DES DES算法架构 DES分组加密公式 DES中ECB-CBC两种加密方式 3DES 由于DES密钥太短&#xf…...

w317汽车维修预约服务系统设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…...

云盘系统设计

需求背景 网盘面向大量C端用户 1000w用户 DAU 20% 每天10次 QPS: 1000w * 0.2 * 10 / 100k 500 峰值估计&#xff1a;500 * 5 2500 功能需求 支持上传&#xff0c;下载&#xff0c;多端共同在线编辑&#xff0c;数据冲突处理 非功能需求 1.latency 20s左右 2.可用性与…...

西电雨课堂《知识产权法》课后作业答案

目录 第 1 章 1.1 课后作业 1.2 课后作业 第 2 章 2.1 课后作业 2.2 课后作业 2.3 课后作业 2.4 课后作业 2.5 课后作业 2.6 课后作业 2.7 课后作业 2.8 课后作业 2.9 课后作业 2.10 课后作业 第 3 章 3.1 课后作业 3.2 课后作业 3.3 课后作业 3…...

通信协议记录仪-产品规格书

以下是为 ​​通信协议记录仪(ProtoLogger Pro)​​ 的​​详细产品规格书​​,覆盖 ​​技术细节、场景需求、竞品差异化​​,确保可作为产品开发、市场营销及竞品分析的核心依据。 ​​通信协议记录仪产品规格书​​ ​​产品名称​​:ProtoLogger Pro(中文名称:蹲守…...

订单系统冷热分离方案:优化性能与降低存储成本

随着时间推移&#xff0c;订单数据不断积累。在电商平台或者服务型应用中&#xff0c;订单数据是核心数据之一。然而&#xff0c;随着数据量的增长&#xff0c;如何高效存储、管理和查询这些数据成为了系统架构设计的重要问题。在大多数情况下&#xff0c;订单数据的处理不仅涉…...

数据结构学习笔记

第 1 章 绪论 【考纲内容】 &#xff08;一&#xff09;数据结构的基本概念 &#xff08;二&#xff09;算法的基本概念 算法的时间复杂度和空间复杂度 【知识框架】 【复习提示】 本章内容是数据结构概述&#xff0c;并不在考研大纲中。读者可通过对本章的学习&#xff0c;初步…...

读懂 Vue3 路由:从入门到实战

在构建现代化单页应用&#xff08;SPA&#xff09;时&#xff0c;Vue3 凭借其简洁高效的特性成为众多开发者的首选。 而 Vue3 路由&#xff08;Vue Router&#xff09;则是 Vue3 生态中不可或缺的一部分&#xff0c;它就像是单页应用的 “导航地图”&#xff0c;帮助用户在不同…...

Aws S3上传优化

上传大约 3.4GB 的 JSON 文件&#xff0c;zip算法压缩后约为 395MB&#xff0c;上传至 S3 效率优化&#xff0c;有一些优化方案可以提高上传速率。下面是几种可能的优化方式&#xff0c;包括选择压缩算法、调整上传方式、以及其他可能的方案。 方案 1. 选择更好的压缩算法 压…...

Python 数据智能实战 (8):基于LLM的个性化营销文案

写在前面 —— 告别群发轰炸,拥抱精准沟通:用 LLM 为你的用户量身定制营销信息 在前面的篇章中,我们学习了如何利用 LLM 增强用户理解(智能分群)、挖掘商品关联(语义购物篮)、提升预测精度(融合文本特征的流失预警)。我们不断地从数据中提取更深层次的洞察。 然而,…...

html:table表格

表格代码示例&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body><!-- 标准表格。 --><table border"5"cellspacing&qu…...

2.maven 手动安装 jar包

1.背景 有的时候&#xff0c;maven仓库无法下载&#xff0c;可以手动安装。本文以pentaho-aggdesigner-algorithm-5.1.5-jhyde.jar为例。 2.预先准备 下载文件到本地指定位置。 2.1.安装pom mvn install:install-file \-Dfile/home/wind/tmp/pentaho-aggdesigner-5.1.5-jh…...

C++ unordered_set unordered_map

上篇文章我们讲解了哈希表的实现&#xff0c;这节尝试使用哈希表来封装unordered_set/map 1. unordered_set/map的框架 封装的过程实际上与set/map类似&#xff0c;在unordered_set/map层传递一个仿函数&#xff0c;用于取出key值 由于我们平常使用的都是unordered_set/map&…...

第37课 绘制原理图——放置离页连接符

什么是离页连接符&#xff1f; 前边我们介绍了网络标签&#xff08;Net Lable&#xff09;&#xff0c;可以让两根导线“隔空相连”&#xff0c;使原理图更加清爽简洁。 但是网络标签的使用也具有一定的局限性&#xff0c;对于两张不同Sheet上的导线&#xff0c;网络标签就不…...

< 自用文 Texas style Smoker > 美式德克萨斯烟熏炉 从设计到实现 (第一部分:烹饪室与燃烧室)

原因&#xff1a; 没钱还馋&#xff01; 但有手艺。 预计目标&#xff1a; 常见的两种偏置式烟熏炉&#xff08;Offset Smoker&#xff09; 左边边是标准偏置式&#xff08;Standard Offset&#xff09;&#xff0c;右边是反向流动式&#xff08;Reverse Flow Offset&#x…...

【现代深度学习技术】现代循环神经网络03:深度循环神经网络

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

AimRT从入门到精通 - 03Channel发布者和订阅者

刚接触AimRT的小伙伴可能会疑惑&#xff0c;这个Channel和RPC&#xff08;后面讲的&#xff09;到底是什么呢&#xff1f; 但是当我们接触了之后&#xff0c;就会发现&#xff0c;其本质类似ROS的Topic通信&#xff01;&#xff08;其本质基于发布订阅模型&#xff09; 接下来…...

MySQL初阶:数据库基础,数据库和表操作,数据库中的数据类型

1.数据库基础 数据库是一个客户端——服务器结构的程序。 服务器是真正的主体&#xff0c;负责保存和管理数据&#xff0c;数据都存储在硬盘上 数据库处理的主要内容是数据的存储&#xff0c;查找&#xff0c;修改&#xff0c;排序&#xff0c;统计等。 关系型数据库&#…...

AI 驱动的智能交通系统:从拥堵到流畅的未来出行

最近研学过程中发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击链接跳转到网站人工智能及编程语言学习教程。读者们可以通过里面的文章详细了解一下人工智能及其编程等教程和学习方法。下面开始对正文内容的…...

Python清空Word段落样式的方法

在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档&#xff0c;包括清空段落样式。以下是几种清空段落样式的方法&#xff1a; 方法一&#xff1a;直接设置段落样式为"Normal" from docx import Documentdoc Document(your_document.docx) # 打…...