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

石家庄做外贸的网站建设/引流推广营销

石家庄做外贸的网站建设,引流推广营销,网站建设代理费用,做微信商城网站SpringBoot核心配置 SpringBoot配置文件分类 SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用 application.properties或者application.yml(application.yaml)进…

SpringBoot核心配置

SpringBoot配置文件分类

SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用

application.properties或者application.yml(application.yaml)进行配置

  • application.properties

    语法:key=value

    server.port=8080
    
  • application.yml

    语法:key:空格 value (冒号后必须要用空格)

    server:port: 8080
    

小结:

  1. SpringBoot提供了2种配置文件类型:properteis和yml/yaml
  2. 默认配置文件名称:application
  3. 在同一级目录入如果三类文件共存,优先级为:properties > yml > yaml

YAML概述

YAML全称是 YAML Ain’t Markup Language 。YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如:C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。YAML文件的扩展名可以使用.yml或者.yaml。

properties:

server.port=8080
server.address=127.0.0.1

xml:

<server><port>8080</port><address>127.0.0.1</address>
</server>

yaml:

server:port: 8080address: 127.0.0

YAML基础语法

  1. 大小写
  2. 数据值前边必须有空格,作为分隔符
  3. 使用缩进表示层级关系
  4. 缩进时不允许使用Tab键,只允许使用空格(各个系统 Tab对应的 空格数目可能不同,导致层次混乱)
  5. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
  6. "#"表示注释,从这个字符一直到行尾,都会被解析器忽略。

YAML数据格式

  1. 基本数据类型:

    #基本数据类型
    boolean: True   #TRUE,true,True,FALSE,false,False均可
    float: 3.14		#6.8523015e+5 #支持科学计数法
    int: 123		#0b1010_0111_0100_1010_1110 支持二进制、八进制、十六进制
    string: HelloWorld		#字符串可以直接书写
    
  2. 数组:一组按次序排列的值( List、set )

    # 数组
    address:- beijing- shanghai#行内写法
    commpany: [阿里,华为,腾讯]
    
  3. 对象、Map(键值对)

    #对象
    person:name: 张三age: 25#行内写法
    person1: {name:张三,age:25}#对象数组格式一
    users:- name: 张三age: 4- name: 李四age: 5#对象数组格式二
    users2:-name: 张三age: 4-name: 李四age: 5#对象数组缩略格式
    users3: [{name:张三,age:4},{name:李四,age:5}]
    
  4. YAML参数引用:

    #参数引用
    name: 王老七
    person3:name: ${name}age: 22sex:
  • 小结:
    1. 配置文件类型
      • properties:和以前一样 (设置文件的语言编码UTF-8)
      • yml/yaml:注意空格
    2. yaml:简洁,以数据为核心
      • 基本语法
        1. 大小写敏感
        2. 数据值前边必须有空格,作为分隔符
        3. 使用空格缩进表示层级关系,相同缩进表示同一级
      • 数据格式
        1. 对象
        2. 数组:使用”-“表示数组的每个元素
        3. 基本数据类型
      • 参数引用
        1. ${key}(EL表达式)

读取配置文件内容

yaml文件更强大的地方在于,他可以给我们的实体类直接注入匹配值

支持方式:

逐个注入:@Value

批量注入:

​ @ConfigurationProperties

​ Enviroment类

逐个注入

演示:
properties:

@Component //注册bean
public class Dog {@Value("阿黄")private String name;@Value("18")private Integer age;
}

加载指定的配置文件**@PropertySource** **:**加载指定的配置文件

yml:resources目录下新建一个.yml文件

name: 阿黄
age: 18
@PropertySource(value = "classpath:dog.yml")
@Component //注册bean
public class Dog{@Value("${name}")private String name;@Value("${age}")private Integer age;
}

批量注入

方式一:

Person类

@Component //注册bean到容器中
public class Person {private String name;private integer age;private boolean marry;private Date birth;private Map<String,Object> maps;private List<Object> lists;private Dog dog;//有参无参构造、get、set方法、toString()方法
}

Dog类:

public class Dog{private String name;private int age;//有参无参构造、get、set方法、toString()方法
}

编写yaml文件:

person1:name: wanglsage: 18marry: truebirth: 1990/10/19maps: {k1: v1,k2: v2}lists:- code- bodybuilding- musicdog:name: summerage: 1

数据注入到类中:

@Component //注册bean
@ConfigurationProperties(prefix = "person1")
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;
}

@ConfigurationProperties的作用:

将配置文件中配置的每一个属性的值,映射到这个组件中;告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应

如果编写完配置文件有红色提示,则可以添加坐标隐藏

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

测试:

@SpringBootTest
class SpringbootInitApplicationTests {@AutowiredPerson person;@Testvoid contextLoads() {System.out.println(person);}
}

结果:

Person{name=‘刘大脑袋’, age=22, birth=Mon Jan 01 00:00:00 CST 1990, lists=[drink, eat, play, happy], maps={car=BMW, pc=ROG}, dog=Dog{name=‘summer’, age=1}}

方式二:

直接在测试类中装配开发模式类辅助获取key对应value数据

@Autowired
private Environment env;
@Test
public void test(){System.out.println(env.getProperty("person1.name"));System.out.println(env.getProperty("person1.age"));System.out.println(env.getProperty("person1.dog.name"));System.out.println(env.getProperty("person1.lists[0]"));
}
  • 小结:

@Value这个使用起来并不友好!我们需要为每个属性单独注解赋值,比较麻烦;我们来看个功能对比图

在这里插入图片描述

  1. @ConfigurationProperties只需要写一次即可 , @Value则需要每个字段都添加
  2. 松散绑定:这个什么意思呢? 比如我的yml中写的last-name,这个和lastName是一样的, - 后面跟着的字母默认是大写的。这就是松散绑定。
  3. JSR303数据校验 , 这个就是我们可以在字段是增加一层过滤器验证 , 可以保证数据的合法性
  4. 复杂类型封装,yml中可以封装对象 , 使用value就不支持
  • 结论:

配置yml和配置properties都可以获取到值 , 强烈推荐 yml;

如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value;

如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@configurationProperties,不要犹豫!

JSR303数据校验

对于 web 服务来说,为防止非法参数对业务造成影响,在 Controller 层一定要做参数校验的!大部分情况下,请求参数分为如下两种形式

  1. POST 、 PUT 请求,使用 requestBody 传递参数;
  2. GET 请求,使用 requestParam/PathVariable 传递参数。

什么是JSR303标准:

JSR的全称是Java Specification Requests(Java 规范提案),是指向JCP ( Java CommunityProcess )提出新增一个标准化技术规范的正式请求。

Java API 规范( JSR303 )定义了 Bean 校验的标准 validation-api ,但没有提供实现。 hibernatevalidation 是对这个规范的实现,并增加了校验注解如 @Email 、 @Length 等。 SpringValidation 是对 hibernate validation 的二次封装,用于支持 spring mvc 参数自动校验。接下来,我们以 spring-boot 项目为例,介绍 Spring Validation 的使用

JSR303校验注解的使用步骤

  1. 注入依赖,导入spring-boot-starter-validation启动器,pom文件导入坐标

    <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId>
    </dependency>
    
  2. 在实体类需要校验的成员字段(Field)上,添加校验注解。

    @Component
    @ConfigurationProperties(prefix = "person4")
    @Validated
    public class Person {@NotNull(message = "姓名不能为空")private String name;@Max(message = "年龄不能超过上限",value= 120)private int age;private Date birth;private List<String> lists;private Map<String,Object> maps;private Dog dog;// 有参无参构造方法,get,set,toString()方法
    }
    

    yml:

    person4:name: 刘大脑袋age: 220birth: 1990/1/1lists: [drink,eat,play,happy]maps: {car: BMW,pc: ROG}dog:name: summerage: 1
    

    测试:

    @SpringBootTest
    class SpringbootInitApplicationTests {@AutowiredPerson person;@Testvoid contextLoads() {System.out.println(person);}
    }
    

    报错信息:

    在这里插入图片描述

请求的参数校验

实体类:Dog

@Component
public class Dog {@NotNull(message = "狗狗的名字不能为空")private String name;@Max(message = "狗狗年龄超过上限了",value = 20)private int age;// 有参无参构造方法,get,set,toString()方法
}

在Controller控制器的校验参数前,使用@Valid注解开启校验,使用BindingResult 绑定校验结果

@RequestMapping(path = "/vali")
@ResponseBody
public String validationDemo(@Valid Dog dog, BindingResult result) {int errorCount = result.getErrorCount();if (errorCount > 0) {List<FieldError> fieldErrors = result.getFieldErrors();for (FieldError fieldError : fieldErrors) {System.out.println("属性:{" + fieldError.getField() + "},传参是{" + fieldError.getRejectedValue() + "},报错提示信息{" + fieldError.getDefaultMessage() + "}");}return "数据不合法";} else {return "数据合法";}
}

主程序启动项目,访问URL:localhost:8080/vali?name=旺财&age=100

页面显示:数据不合法

控制台:打印拼接的报错信息

Controller统一异常处理

@ControllerAdvice:统一为Controller进行"增强"

@ExceptionHandler : 异常处理

实现步骤:

  1. 控制器

    @RequestMapping(path = "/vali")
    @ResponseBody
    public String validationDemo(@Valid Dog dog) {return "数据合法";
    }
    
  2. 新建包和类:

    @ControllerAdvice    // 统一异常处理注释
    public class BindExceptionHandler {@ExceptionHandler(BindException.class)  // 捕获的异常类型@ResponseBodypublic String handlerBindException(BindException ex, HttpServletRequest request){return "全局异常处理器捕获成功";}
    }
    
  3. Dog实体类同上

  4. 测试:

    主程序启动项目,访问URL:localhost:8080/vali?name=旺财&age=100

    页面显示:全局异常处理器捕获成功

JSR303校验注解分类

  • 值校验
// 被注解的元素必须为null
@Null(message = "必须为null")// 被注解的元素必须不为null
@NotNull(message = "必须不为null")// 校验注解的元素值不为空(不为null、去除首位空格后长度为0),类型为String
@NotBlank(message = "必须不为空")// 校验注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0),类型为CharSequence、Collection、Map、Array
@NotEmpty(message = "必须不为null且不为空")// 被注解的元素必须为true,并且类型为boolean
@AssertTrue(message = "必须为true")// 被注解的元素必须为false,并且类型为boolean
@AssertFalse(message = "必须为false")
  • 范围校验
// 被注解的元素其值必须大于等于最小值,并且类型为int,long,float,double
@Min(value = 18, message = "必须大于等于18")// 被注解的元素其值必须小于等于最小值,并且类型为int,long,float,double
@Max(value = 18, message = "必须小于等于18")// 校验注解的元素值大于等于@DecimalMin指定的value值,并且类型为BigDecimal
@DecimalMin(value = "150", message = "必须大于等于150")// 校验注解的元素值小于等于@DecimalMax指定的value值 ,并且类型为BigDecimal
@DecimalMax(value = "300", message = "必须大于等于300")// 校验注解的元素值在最小值和最大值之间,并且类型为BigDecimal,BigInteger,CharSequence,byte,short,int,long。
@Range(max = 80, min = 18, message = "必须大于等于18或小于等于80")// 被注解的元素必须为过去的一个时间,并且类型为java.util.Date
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 
@Past(message = "必须为过去的时间")// 被注解的元素必须为未来的一个时间,并且类型为java.util.Date
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 
@Future(message = "必须为未来的时间")
  • 长度校验
// 被注解的元素的长度必须在指定范围内,并且类型为String,Array,List,Map
@Size(max = 11, min = 7, message = "长度必须大于等于7或小于等于11")// 校验注解的元素值长度在min和max区间内 ,并且类型为String
@Length(max = 11, min = 7, message = "长度必须大于等于7或小于等于11")
  • 格式校验
// 校验注解的元素值的整数位数和小数位数上限 ,并且类型为float,double,BigDecimal
@Digits(integer=3,fraction = 2,message = "整数位上限为3位,小数位上限为2位")// 被注解的元素必须符合指定的正则表达式,并且类型为String
@Pattern(regexp = "\\d{11}",message = "必须为数字,并且长度为11")// 校验注解的元素值是Email,也可以通过regexp和flag指定自定义的email格式,类型为String
@Email(message = "必须是邮箱")

多环境切换profile

我们在开发Spring Boot应用时,通常同一套程序会被安装到不同环境,比如:开发、测试、生产等。其中数据库地址、服务 器端口等等配置都不同,如果每次打包时,都要修改配置文件,那么非常麻烦。profile功能就是来进行动态配置切换的;

命名语法:

例如:application-环境简称.properties/yml

  • application-dev.properties/yml 开发环境
  • application-test.properties/yml 测试环境
  • application-pro.properties/yml 生产环境
  1. profile配置方式:

    • 多profile文件方式
  2. profile激活方式:

    • 配置文件

      spring:profiles:active: test #环境简称
      
    • 虚拟机参数 :在VM options 指定:-Dspring.profiles.active=dev

    • 命令行参数:java –jar xxx.jar --spring.profiles.active=dev

配置文件加载位置

  1. 配置文件加载顺序

    Springboot程序启动时,会从以下位置加载配置文件:
    1. file:./config/:当前项目下的/config目录下
    2. file:./ :当前项目的根目录
    3. classpath:/config/:classpath的/config目录
    4. classpath:/ :classpath的根目录
    加载顺序为上文的排列顺序,高优先级配置的属性会生效
    
  2. 外部配置加载顺序

    通过官网查看外部属性加载顺序:

    https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config

    项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;这种情况,一般是后期运维做的多,相同配置,外部指定的配置文件优先级最高

    java -jar XXX.jar --spring.config.location=F:/application.properties
    

相关文章:

SpringBoot的核心配置:YAML概述、基础语法;JSR303数据校验;多环境切换

SpringBoot核心配置 SpringBoot配置文件分类 SpringBoot是基于约定的&#xff0c;所以很多配置都有默认值&#xff0c;但如果想使用自己的配置替换默认配置的话&#xff0c;就可以使用 application.properties或者application.yml&#xff08;application.yaml&#xff09;进…...

把Qt6.2.4内置的标签打印了一遍

2023年10月31日&#xff0c;周二晚上 #include <QGridLayout> #include <QPushButton> #include <QLabel> #include <QApplication> #include <QStyle>int main(int argc, char *argv[]) {QApplication a(argc, argv);QWidget widget;widget.set…...

element-ui 表单校验・大全

目录 1、对全部表单项的校验2、校验指定字段3、自定义函数校验表单4、一行内多个输入框的校验 element-ui 官网 element-ui 表单校验的规则如下&#xff1a; <属性名>: [{ required: true,// 是否必填&#xff08;若有label则在其左上角显示红点&#xff0c;否则不显示必…...

搭建高性能分布式存储-minio

文章目录 搭建高性能分布式存储-minioDocker搭建minio&#xff08;单机部署纠删码模式&#xff09;⭐创建minio的bucket&#xff08;桶&#xff09;⭐SpringBootminio项目实战 ⭐1&#xff1a;导入minio的maven依赖2&#xff1a;编写MinioProperties.class3&#xff1a;applica…...

leetCode 137. 只出现一次的数字 II(拓展篇) + 模5加法器 + 真值表(数字电路)

leetCode 137. 只出现一次的数字 II 题解可看我的往期文章 leetCode 137. 只出现一次的数字 II 位运算 模3加法器 真值表&#xff08;数字电路&#xff09; 有限状态机-CSDN博客https://blog.csdn.net/weixin_41987016/article/details/134138112?spm1001.2014.3001.5501…...

docker导致root空间满进入不了系统解决方案

由于docker建立镜像会产生很多缓存文件&#xff0c;最终导致root目录满&#xff0c;进入不了系统 df -h docker默认路径是在/var/lib/docker下 可以通过命令查看docker占用空间 docker system df 如果占用空间太大 可用以下命令清理 $ docker image prune -h Flag shorth…...

uni-app遮罩遮住小程序tabbar

uni-app遮罩遮住小程序tabbar 1、用uni-app自带的方法显示隐藏 //通过弹窗显隐控制导航栏的显示和隐藏 const popupChange e >{if(e.show){//隐藏tabbaruni.hideTabBar()}else{//显示tabbaruni.showTabBar()}state.searchIcon e.show } //通过弹窗显隐控制导航栏的显示和…...

Flink on yarn 加载失败plugins失效问题解决

Flink on yarn 加载失败plugins失效问题解决 flink版本&#xff1a;1.13.6 1. 问题 flink 任务运行在yarn集群,plugins加载失效,导致通过扩展资源获取任务参数失效 2. 问题定位 yarn容器的jar包及插件信息,jar包是正常上传 源码定位 加载plugins入口&#xff0c;TaskMana…...

显卡服务器的特点和优势在哪里

随着科技的发展以及人们对于计算机性能的需求提高&#xff0c;显卡服务器是主要使用图形处理器进行计算和运算&#xff0c;拥有更加强大的计算能力&#xff0c;今天小编就来给大家讲一讲显卡服务器的特点和优势是什么&#xff01; 1.高可靠性&#xff1a;显卡服务器采用高品质的…...

c++设计模式二:原型模式

使用场景&#xff1a;当需要构建多个相同的类对象时&#xff0c;而且该类对象结构较为复杂&#xff0c;如果每个都重新组织构建会很麻烦。 其实&#xff0c;就是写一个拷贝构造函数&#xff0c;或者写一个拷贝每个成员变量的clone()方法。 举例说明&#xff1a;比如一个相亲网站…...

【Qt控件之QMessageBox】详解

Qt控件之QMessageBox 描述基于属性的API富文本和文本格式属性严重程度以及图标和Pixmap属性静态函数API 高级用法默认按钮和退出按钮示例使用场景 描述 QMessageBox类提供了一个模态对话框&#xff0c;用于通知用户或向用户提问并接收答案。 消息框显示一个主要文本以提醒用户…...

SSH安全登录远程主机

SSH服务器简介 SSH即Security SHell的意思&#xff0c;它可以将连线的封包进行加密技术&#xff0c;之后进行传输&#xff0c;因此相当的安全。 SSH是一种协议标准&#xff0c;其目的是实现安全远程登录以及其它安全网络服务。 SSH协定&#xff0c;在预设的状态下&#xff0c;…...

揭秘!产品经理提升效率的秘密武器:10款AI生成PPT工具

AI的爆炸式增长表现令人惊艳&#xff0c;现有的各类AI工具正在重塑各行各业&#xff0c;不同程度地提高人们的工作效率&#xff0c;并有望创造新的职业机会。但是&#xff0c;面对市面上数量众多的AI工具&#xff0c;且每周都会蹦出新的产品&#xff0c;即便是以好奇心富称的产…...

Oracle修改带数据的字段类型

insert into TNW_FUND_SELORG(TFDINFOID,TSOINFOID) select TFD_INFO_ID,TSO_INFO_ID from TFD_SEL_FUNDLINK_TO_OLDFUNDWEB_DB /*修改原字段名*/ ALTER TABLE 表名 RENAME COLUMN 字段名 TO 字段名1; /*添加一个和原字段同名的字段*/ ALTER TABLE 表名 ADD 字段名 VARCHAR…...

WebService接口方式和Restful接口这两者有什么区别和相同点

WebService和RESTful接口都是用于在网络上进行通信和数据交换的技术&#xff0c;但它们在设计和使用上有一些重要的区别和相似之处。 相同点&#xff1a; 基于HTTP协议&#xff1a;无论是WebService还是RESTful接口&#xff0c;它们都是通过HTTP协议进行通信的。 支持多种数据…...

jenkins自动化操作步骤(gitblit)

1、登陆地址&#xff1a; http://xxxxxxxxx.org:xxxx/ admin/xxxx 2、创建任务 选择构建一个maven项目 3、配置 最多只保留一天一个任务 选择git仓库和账号密码 选择代码对应分支 build项&#xff1a; 1&#xff09;使用父项目的pom文件&#xff1a;k56-boot/pom.xml 2&…...

centos中mongodb设置服务自启动并 允许远程IP访问

安装mongodb参考 注意的是配置文件需要把journal设置为true 制作为系统服务 创建MongoDB服务文件。运行以下命令创建服务文件/etc/systemd/system/mongod.service&#xff1a; vi /etc/systemd/system/mongod.service [Unit] DescriptionMongoDB Database Server Documenta…...

实时定位和配送追踪:开发万岳同城外卖APP的关键技术特性

随着生活节奏的不断加快&#xff0c;外卖服务已经成为许多人日常生活中不可或缺的一部分。无论是工作日的午餐&#xff0c;还是周末的家庭聚会&#xff0c;外卖APP已经成为满足各种美食需求的首选方式。然而&#xff0c;同城外卖APP的成功不仅仅取决于美味的食物选择&#xff0…...

数据库强化(3.存储过程)

1.什么是存储过程&#xff1f; 存储过程&#xff08;Stored Procedure&#xff09;是一种在数据库中存储复杂程序&#xff0c;以便外部程序调用的一种数据库对象。MySQL 5.0 版本开始支持存储过程。 它是为了完成特定功能的SQL语句集&#xff0c;经编译创建并保存在数据库中&a…...

雅思小作文笔记

mostly from Simon’s methods and techniques remember the task is describe what you see, not give an opinion. Just write a report.no conclusion, just a summary(the overview) Question type 小作文的题目类型大致如上 Simon所述&#xff0c;在描述数字的时候&…...

Java List Set Map

一、List 1.1 ArrayList 1.2 LinkedList 二、Set 2.1 HashSet 2.2 TreeSet 2.3 LinkedHashSet 三、Map 3.1 HashMap 3.2 TreeMap 3.3 LinkedHashMap 四、对比 类型底层结构重复null值场景备注查询删除新增ListArrayList动态数组可允许快速随机访问元素0(1)0(n)尾部增加0&a…...

【数据结构】数组和字符串(十三):链式字符串的基本操作(串长统计、查找、复制、插入、删除、串拼接)

文章目录 4.3 字符串4.3.1 字符串的定义与存储4.3.2 字符串的基本操作&#xff08;链式存储&#xff09;1. 结构体2. 初始化3. 判空4. 串尾添加5. 打印6. 串长统计7. 查找8. 复制9. 插入10. 删除11. 串拼接12. 销毁13. 主函数14. 代码整合 4.3 字符串 字符串(String)是由零个或…...

Python3 获取当前服务器公网 IP 地址

有同学问我如何使用 Python 获取服务器公网的 IP 地址呢&#xff1f;我测试几个发现&#xff0c;方法有很多&#xff0c;好用的就发现一种&#xff0c;即直接使用 Python 自带的 socket 包。 代码示例&#xff1a; # 获取主机 IP dgram socket.socket(socket.AF_INET, socke…...

EAS查前5分钟到现在的组织变动数据

select * from T_ORG_Admin where ( (FCREATETIME between ( sysdate-(1/24/60)*8) and sysdate ) or (FLASTUPDATETIME between ( sysdate-(1/24/60)*8) and sysdate ) ) -- FLASTUPDATETIME < sysdate-(1/24/60)*10 --FNUMBER 110112...

uni-app——如何阻止事件冒泡

引言 在开发移动应用程序时&#xff0c;我们经常需要处理用户交互事件。然而&#xff0c;有时候这些事件会冒泡&#xff0c;导致意外的行为和不良用户体验。在本文中&#xff0c;我们将探讨如何使用UniApp框架来阻止事件冒泡&#xff0c;并提供一些示例代码来帮助您理解如何实…...

[MySQL]索引

目录 概念解释 作用/优点 缺点 适用场景 索引的创建,删除与查看 系统对索引的自动创建 索引建立的时机 索引存储的数据结构 选择B树的原因 B树的原理 查询流程 优点 B树 与B树的区别 优点 概念解释 索引就像是一本字典的目录,我们可以根据目录快速定位到我们想…...

什么是AUTOSAR ComStack,AUTOSAR架构中,CAN通信堆栈CAN Communication Stack介绍

AUTOSAR&#xff08;Automotive Open System Architecture&#xff09;ComStack指的是AUTOSAR架构中的通信堆栈。在AUTOSAR体系结构中&#xff0c;ComStack是指用于不同软件组件&#xff08;如应用软件、基础软件等&#xff09;之间进行通信的一组协议和服务。 在AUTOSAR架构中…...

黄金期货与黄金现货的区别

黄金期货与黄金现货是有区别的&#xff0c;比如在交易机制方面&#xff0c;黄金期货有具体的交割日&#xff0c;合约到期就必须交割&#xff0c;否则会被强行平仓或以实物进行交割&#xff0c;而在保证金不足时也会被强行平仓&#xff1b;而现货黄金就没有交割限制&#xff0c;…...

【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)

文章目录 4.2.1 矩阵的数组表示4.2.2 特殊矩阵的压缩存储a. 对角矩阵的压缩存储b~c. 三角、对称矩阵的压缩存储d. 稀疏矩阵的压缩存储——三元组表e. 压缩稀疏行&#xff08;Compressed Sparse Row&#xff0c;CSR&#xff09;矩阵结构体创建CSR矩阵元素设置初始化打印矩阵销毁…...

springboot整合postgresql

使用docker安装postgres 简单起见&#xff0c;这里用docker来安装postgresql docker pull postgresdocker run --name postgres \-e POSTGRES_PASSWORD123456 \-p 5432:5432 \-v /usr/local/docker/postgresql/data:/var/lib/postgresql/data \-d postgrespostgres客户端 pg…...