SpringBoot:SpringBoot配置文件.properties、.yml 和 .ymal(2)
SpringBoot配置文件
- 1. 配置文件格式
- 1.1 application.properties配置文件
- 1.2 application.yml配置文件
- 1.3 application.yaml配置文件
- 1.4 三种配置文件优先级和区别
- 2. yaml格式
- 2.1 语法规则
- 2.2 yaml书写
- 2.2.1 字面量:单个的、不可拆分的值
- 2.2.2 数组:一组按次序排列的值
- 2.2.3 对象:键值对的集合
- 2.2.4 复合结构
- 2.3 ymal组织结构
- 3. yaml配置文件数据读取
- 3.1 使用功能@Value注解
- 3.2 Enviroment对象
- 3.3 自定义对象
- 4. 多环境配置
- 4.1 yml/yaml文件进行多环境配置
- 4.2 properties文件进行多环境配置
- 4.3 命令行启动参数设置
- 5. 配置文件分类
1. 配置文件格式
我们启动服务器的默认端口是8080
,我们怎样修改成自己设定的端口呐,比如设定为80
端口,那么以后访问的时候就可以直接写:http://localhost/xxx,
而不用写端口号了。SpringBoot
已经为我们想到了,为我们提供了三种配置文件可以进行相关配置,分别为application.properties,application.yml,application.yaml
。可以观察到三种配置文件都是以application.
开头的,这是因为SpringBoot
要求配置文件名字一定要为application.
开头。下面我们一起了解一下吧。
1.1 application.properties配置文件
创建SpringBoot
项目会在resources
目录下自动创建一个application.properties
配置文件,例如在配置文件中设置服务端口号为8089
.
1.2 application.yml配置文件
注释掉application.properties
配置文件中的端口设置,在resources
目录下创建名为application.yml
配置文件,在该文件中书写端口号的配置项,格式如下:
server:port: 8090
注意: 在:
后,数据前一定要加空格。
1.3 application.yaml配置文件
注释掉application.yml
配置文件中的端口设置,在resources
目录下创建名为application.yaml
配置文件,在该文件中书写端口号的配置项,格式如下:
server:port: 8091
注意: 在:
后,数据前一定要加空格。
注意:如果创建的 application.yml
和 application.yaml
没有自动提示功能,可以参考下图把配置文件添加Configuration Files
。
1.4 三种配置文件优先级和区别
经过对上面三种配置文件的介绍,那么问题来了:
- 这三种配置文件优先级是怎样的呐???
- 这三种配置文件有什么区别吗???
针对第一个问题,我们可以做一个实验,在三个配置文件中配置不同的端口,启动服务器,查看显示的是哪一个端口,就可以确定那个配置文件的优先级高。
application.properties
: 8089
application.yml
: 8090
application.yaml
:8091
经实验证明:application.properties
配置文件的优先级要高于application.yml
和 application.yaml
。
那么下面我们注释掉application.properties
中的端口再次启动服务器进行查看。
经实验证明:application.yml
配置文件的优先级要高于 application.yaml
。
经上述实验证明三种配置文件的优先级为:application.properties
> application.yml
> application.yaml
。
针对问题2,则三种配置文件有什么区别呐???
区别1:定义和定位不同
properties
翻译成中文是“属性”的意思,所以它在创建之初,就是用来在 Spring Boot
中设置属性的。yml
是 YAML
是缩写,它的全称 Yet Another Markup Language
,翻译成中文是“另一种标记语言”。所以从二者的定义可以看出:它们的定位和层次是完全不同的,properties
只是用来设置一些属性配置的,而 yml
的格局和愿景更大,它的定位是“另一种标记语言”,所以从格局上来讲 yml
就甩 properties
好几条街。
区别2:语法不同
properties
和 yml
语法区别很大:
区别3:yml 更好的配置多种数据类型
yml
除了可以很好的配置基础数据类型之外,它还可以很方便的配置对象、集合等数据类型。
区别4:yml 可以跨语言
properties
格式的配置文件只适用于 Spring Boot
项目,也就是只适用于 Java
语言,而 yml
支持更多的开发语言,它可以用在 Java、PHP、Python、Ruby、JavaScript、Perl、Golang
等语言中。
2. yaml格式
YAML(YAML Ain't Markup Language)
,一种数据序列化格式。这种格式的配置文件在近些年已经占有主导地位
xml
格式如下:
<enterprise><name>itcast</name><age>16</age><tel>4006184000</tel>
</enterprise>
而 properties
类型的配置文件如下
enterprise.name=itcast
enterprise.age=16
enterprise.tel=4006184000
yaml
类型的配置文件内容如下
enterprise:name: itcastage: 16tel: 4006184000
优点:
-
容易阅读
yaml
类型的配置文件比xml
类型的配置文件更容易阅读,结构更加清晰 -
容易与脚本语言交互
-
以数据为核心,重数据轻格式
yaml
更注重数据,而xml
更注重格式
YAML 文件扩展名:
.yml
(主流).yaml
上面两种后缀名都可以,目前比较流行的是 yml
。
2.1 语法规则
-
大小写敏感
-
属性层级关系使用多行描述,每行结尾使用冒号结束
-
使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
空格的个数并不重要,只要保证同层级的左侧对齐即可。
-
属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
-
# 表示注释
核心规则:数据前面要加空格与冒号隔开
数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔。
2.2 yaml书写
2.2.1 字面量:单个的、不可拆分的值
字面量是指单个的,不可拆分的值,例如:数字、字符串、布尔值、以及日期等。
在 YAML
中,使用“key:[空格]value”
的形式表示一对键值对(空格不能省略),如 url: www.biancheng.net
。
字面量直接写在键值对的“value”中即可,且默认情况下字符串是不需要使用单引号或双引号的。
name: bianchengbang
若字符串使用单引号,则会转义特殊字符。
name: 'zhangsan \n lisi'
输出结果为:
zhangsan \n lisi
若字符串使用双引号,则不会转义特殊字符,特殊字符会输出为其本身想表达的含义
name: "zhangsan \n lisi"
输出结果为:
zhangsan
lisi
2.2.2 数组:一组按次序排列的值
YAML
使用“-”
表示数组中的元素,特别注意“-”
后面一定要跟着一个空格,普通写法如下:
pets:- dog- cat- pig
行内写法:
pets: [dog,cat,pig]
2.2.3 对象:键值对的集合
在 YAML
中,对象可能包含多个属性,每一个属性都是一对键值对。
YAML
为对象提供了 2 种写法:
普通写法,使用缩进表示对象与属性的层级关系。
website: name: bianchengbangurl: www.biancheng.net
行内写法
website: {name: bianchengbang,url: www.biancheng.net}
2.2.4 复合结构
person:name: zhangsanage: 30pets: # 数组- dog- cat- pigcar: # car对象name: QQchild: # child对象name: zhangxiaosanage: 2
2.3 ymal组织结构
一个 YAML
文件可以由一个或多个文档组成,文档之间使用“---”
作为分隔符,且个文档相互独立,互不干扰。如果 YAML
文件只包含一个文档,则“---”
分隔符可以省略。
---website:name: bianchengbangurl: www.biancheng.net---website: {name: bianchengbang,url: www.biancheng.net}pets:-dog-cat-pig---pets: [dog,cat,pig]name: "zhangsan \n lisi"---name: 'zhangsan \n lisi'
3. yaml配置文件数据读取
环境准备:
3.1 使用功能@Value注解
使用 @Value("表达式")
注解可以从配置文件中读取数据,注解中用于读取属性名引用方式是:${一级属性名.二级属性名……}
可以在 BookController
中使用 @Value
注解读取配合文件数据,如下:
@RestController
@RequestMapping("/books")
public class BookController {// 读取yaml中的内容方式一@Value("${lesson}")private String lesson;@Value("${enterprise.name}")private String name;@Value("${enterprise.age}")private String age;@Value("${enterprise.tel}")private String tel;@Value("${enterprise.subject[0]}")private String subject_0;@GetMapping("/{id}")public String getById(@PathVariable Integer id){System.out.println("================ 方式一 ================");System.out.println("id ===> " + id);System.out.println("lesson ==> " + lesson);System.out.println("name ==> " + name);System.out.println("age ==> " + age);System.out.println("tel ==> " + tel);System.out.println("subject[0] ==> " + subject_0);return " hello springboot3";}
}
3.2 Enviroment对象
使用Environment
对象,SpringBoot
会将配置文件中所有的数据封装到 Environment
对象中。如果需要使用哪个数据只需要通过调用 Environment
对象的 getProperty(String name)
方法获取。
@RestController
@RequestMapping("/books")
public class BookController {// 使用 `Environment` 对象的方式读取数据。// `SpringBoot` 会将yaml配置文件中所有的数据封装到 `Environment` 对象中,// 如果需要使用哪个数据只需要通过调用 `Environment` 对象的 `getProperty(String name)` 方法获取。@Autowiredprivate Environment environment;@GetMapping("/{id}")public String getById(@PathVariable Integer id){System.out.println("================ 方式二 ================");System.out.println("lesson ==> " + environment.getProperty("lesson"));System.out.println("name ==> " + environment.getProperty("enterprise.name"));System.out.println("age ==> " + environment.getProperty("enterprise.age"));System.out.println("tel ==> " + environment.getProperty("enterprise.tel"));System.out.println("subject_0 ==> " + environment.getProperty("enterprise.subject[2]"));return " hello springboot3";}
}
3.3 自定义对象
SpringBoot
提供了将配置文件中的数据封装到自己定义的实体类对象中的方式。具体操作如下:
-
将实体类
bean
的创建交给Spring
管理。在类上添加
@Component
注解 -
使用
@ConfigurationProperties
注解表示加载配置文件,在该注解中也可以使用prefix
属性指定只加载指定前缀的数据 -
在
BookController
中进行注入
@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {private String name;private String tel;private Integer age;private String[] subject;
// get/set方法,构造方法,toString方法。。。。
BookController
的内容:
@RestController
@RequestMapping("/books")
public class BookController {// 创建enterprise对应的实体类,将配置文件中的数据封装到我们自定义的实体类对象中的方式,方式三@Autowiredprivate Enterprise enterprise;@GetMapping("/{id}")public String getById(@PathVariable Integer id){System.out.println("================ 方式三 ================");System.out.println("name ==> " + enterprise.getName());System.out.println("age ==> " + enterprise.getAge());System.out.println("tel ==> " + enterprise.getTel());System.out.println("subject ==> " + enterprise.getSubject()[1]);return " hello springboot3";}
}
4. 多环境配置
目前,我们都是在自己的电脑上进行开发,但是开发完之后还要交给测试环境和生成环境。这些配置肯定都不相同,比如我们开发阶段会在自己的电脑上安装 mysql
,连接自己电脑上的 mysql
即可,但是项目开发完毕后要上线就需要修改配置,将环境的配置改为线上环境的。
来回的修改配置会很麻烦,对于这个问题, SpringBoot
给开发者提供了多环境的快捷配置,需要切换环境时只需要改一个配置即可。不同类型的配置文件多环境开发的配置都不相同。
4.1 yml/yaml文件进行多环境配置
在yml/yaml
中进行配置
# 设置启用的环境
spring:profiles:active: dev # 表示使用的是开发环境的配置# 使用 “---” 区分不同的配置
---
# 开发环境
server:port: 8080
spring:profiles: dev
---
# 生产环境
server:port: 8181
spring:profiles: pro
---
# 测试环境
server:port: 8082
spring:profiles: test
注意:
在上面配置中给不同配置起名字的 spring.profiles
配置项已经过时。最新用来起名字的配置项是
#开发
spring:config:activate:on-profile: dev
测试开发环境
测试生产环境
测试测试环境
4.2 properties文件进行多环境配置
properties
类型的配置文件配置多环境需要定义不同的配置文件
-
application-dev.properties
是开发环境的配置文件。我们在该文件中配置端口号为80
server.port=8080
-
application-test.properties
是测试环境的配置文件。我们在该文件中配置端口号为81
server.port=8081
-
application-pro.properties
是生产环境的配置文件。我们在该文件中配置端口号为82
server.port=8082
SpringBoot
只会默认加载名为 application.properties
的配置文件,所以需要在 application.properties
配置文件中设置启用哪个配置文件,配置如下:
spring.profiles.active=dev # 启用开发环境
# spring.profiles.active=pro # 启用生产环境
# spring.profiles.active=test # 启用测试环境
4.3 命令行启动参数设置
使用 SpringBoot
开发的程序都是打成 jar
包,通过 java -jar xxx.jar
的方式启动服务的。那么问题来了,如何切换环境呢?因为配置文件打到的jar包中了。
我们知道 jar
包其实就是一个压缩包,可以解压缩,然后修改配置,最后再打成jar包就可以了。这种方式显然有点麻烦,而 SpringBoot
提供了在运行 jar
时设置开启指定的环境的方式,如下
java –jar xxx.jar –-spring.profiles.active=test
那么这种方式能不能临时修改端口号呢?也是可以的,可以通过如下方式
java –jar xxx.jar –-server.port=88
当然也可以同时设置多个配置,比如即指定启用哪个环境配置,又临时指定端口,如下
java –jar springboot.jar –-server.port=88 –-spring.profiles.active=test
原始配置:开发环境dev、测试端口8080
利用--server.port
指令修改端口为8089
利用--spring.profiles.active
指令切换配置环境
将--server.port
和 --spring.profiles.active
结合使用
大家进行测试后就会发现命令行设置的端口号优先级高(也就是使用的是命令行设置的端口号),配置的优先级其实 SpringBoot
官网已经进行了说明,参见 :https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-external-config
5. 配置文件分类
问题提出:有这样的场景,我们开发完毕后需要交给测试人员进行测试,由于测试环境和开发环境的很多配置都不相同,所以测试人员在运行我们的工程时需要临时修改很多配置,如下
java –jar springboot.jar –-spring.profiles.active=test --server.port=85 --server.servlet.context-path=/heima --server.tomcat.connection-timeout=-1 …… …… …… …… ……
针对这种情况,SpringBoot
定义了配置文件不同的放置的位置;而放在不同位置的优先级时不同的。
SpringBoot
中4级配置文件放置位置:
- 1级:classpath:application.yml
- 2级:classpath:config/application.yml
- 3级:file :application.yml
- 4级:file :config/application.yml
说明: 级别越高优先级越高
SpringBoot
项目中的配置文件是分级的,可以分为1,2,3,4级
第1级就是resources
下面的配置文件: application.yml
第2级是在resources/config
目录下的配置文件:application.yml
, 启动项目发现用的端口号为8081
,说明此配置文件的优先级较高。
第3级是SpringBoot
项目package
后,在目录下面创建的application.yml
配置文件
在Dos
窗口中启动项目,发现项目端口号为8082
,说明此配置文件的优先级要高于前两个配置文件的优先级。
第4级是SpringBoot
项目package
后,在目录下面创建的config/application.yml
配置文件
在Dos
窗口中启动项目,发现项目端口号为8083
,说明此配置文件的优先级要高于前三个配置文件的优先级。
相关文章:
SpringBoot:SpringBoot配置文件.properties、.yml 和 .ymal(2)
SpringBoot配置文件1. 配置文件格式1.1 application.properties配置文件1.2 application.yml配置文件1.3 application.yaml配置文件1.4 三种配置文件优先级和区别2. yaml格式2.1 语法规则2.2 yaml书写2.2.1 字面量:单个的、不可拆分的值2.2.2 数组:一组按…...
QT 学习之QPA
QT 为实现支持多平台,实现如下类虚函数 Class Overview QPlatformIntegration QAbstractEventDispatcherQPlatformAccessibilityQPlatformBackingStoreQPlatformClipboardQPlatformCursorQPlatformDragQPlatformFontDatabaseQPlatformGraphicsBufferQPlatformInput…...
Pytorch中FLOPs和Params计算
文章目录一. 含义二. 使用thop库计算FLOPs和Params三. 注意四. 相关链接一. 含义 FLOPs(计算量):注意s小写,是floating point operations的缩写(这里的小s则表示复数),表示浮点运算数ÿ…...
DP1621国产LCD驱动芯片兼容替代HT1621B
目录DP1621简介DP1621芯片特性DP1621简介 DP1621是点阵式存储映射的LCD驱动器芯片,可支持最大128点(32SEG * 4COM)的 LCD屏,也支持2COM和3COM的LCD屏。单片机可通过3/4个通信脚配置显示参数和发送显示数据,也可通过指…...
Linux 用户管理
用户管理 useradd新增用户 格式:useradd [参数] 用户名称 常用参数: -c comment 指定一段注释性描述。 -d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。 -g 用户组 指定用户所属的用户组…...
前端vue面试题(持续更新中)
vue-router中如何保护路由 分析 路由保护在应用开发过程中非常重要,几乎每个应用都要做各种路由权限管理,因此相当考察使用者基本功。 体验 全局守卫: const router createRouter({ ... }) router.beforeEach((to, from) > {// .…...
Java查漏补缺-从入门到精通汇总
Java查漏补缺(01)计算机的硬件与软件、软件相关介绍、计算机编程语言、Java语言概述、Java开发环境搭建、Java开发工具、注释、API文档、JVM Java查漏补缺(02)关键字、标识符、变量、基本数据类型介绍、基本数据类型变量间运算规…...
软件测试2年半的我,谈谈自己的理解...
软件测试两年半的我,谈谈自己的理解从2020年7月毕业,就成为一名测试仔。日子混了一鲲年,感觉需要好好梳理一下自己的职业道路了,回顾与总结下吧。一、测试的定位做事嘛,搞清楚自己的定位很重要。要搞清楚自己的定位&am…...
什么是SAS硬盘
什么是SAS硬盘SAS是新一代的SCSI技术,和Serial ATA(SATA)硬盘都是采用串行技术,以获得更高的传输速度,并通过缩短连结线改善内部空间等。SAS是并行SCSI接口之后开发出的全新接口。此接口的设计是为了改善存储系统的效能、可用性和扩充性&…...
一文理解服务端渲染SSR的原理,附实战基于vite和webpack打造React和Vue的SSR开发环境
SSR和CSR 首先,我们先要了解什么是SSR和CSR,SSR是服务端渲染,CSR是客户端渲染,服务端渲染是指 HTTP 服务器直接根据用户的请求,获取数据,生成完整的 HTML 页面返回给客户端(浏览器)展…...
Matlab 实用小函数汇总
文章目录Part.I 元胞相关Chap.I 创建空 char 型元胞Part.II 矩阵相关Chap.I 矩阵插入元素Part.III 字符串相关Chap.I 获取一个文件夹下所有文件的文件名的部分内容Part.IV 结构体相关Chap.I 读取结构体Chap.II 取结构体中某一字段的所有值本篇博文记录一些笔者使用 Matlab 时&a…...
Echarts 仪表盘倾斜一定角度显示,非中间对称
第024个点击查看专栏目录大多数的情况下,制作的仪表盘都是中规中矩,横向中间对称,但是生活中的汽车,摩托车等仪表盘确是要倾斜一定角度的,Echarts中我们就模拟一个带有倾斜角度的仪表盘。核心代码见示例源代码 文章目录…...
Vue中如何利用websocket实现实时通讯
首先我们可以先做一个简单的例子来学习一下简单的websocket模拟聊天对话的功能 原理很简单,有点像VUE中的EventBus,用emit和on传来传去 首先我们可以先去自己去用node搭建一个本地服务器 步骤如下 1.新建一个app.js,然后创建pagejson.js文…...
力扣解法汇总1144. 递减元素使数组呈锯齿状
目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 给你一个整数数组 nums,每次 操作 会从中选择一个元素并 将该元素的…...
Spring彻头彻尾的讲解,按照Spring框架启动流程,逐步剖析问题,不再是大杂烩!
文章目录1. 定义Spring Bean篇1.1 定义Spring Bean的几种方式1.1.1 XML文件定义Spring Bean1.1.2 JavaConfig定义Spring Bean1.1.3 Component注解定义SpringBean1.2 装配Spring Bean的四种常用方式1.2.1 手动装配 XML文件1.2.2 自动装配 XML文件1.2.3 手动装配 JavaConfig文…...
[2]MyBatis+Spring+SpringMVC+SSM整合一套通关
二、Spring 1、Spring简介 1.1、Spring概述 官网地址:https://spring.io/ Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用 Spring 框架来创建性能好、易于测试、可重用的代码。 Spring 框架是一个开源的 Jav…...
Javascript的API基本内容(三)
一、事件流 假设页面里有个div,当触发事件时,会经历两个阶段,分别是捕获阶段、冒泡阶段简单来说:捕获阶段是 从父到子 冒泡阶段是从子到父实际工作都是使用事件冒泡为主 二、页面加载事件 加载外部资源(如图片、外联CS…...
【Python入门第十九天】Python 函数
函数是一种仅在调用时运行的代码块。 可以将数据(称为参数)传递到函数中。 函数可以把数据作为结果返回。 创建函数 在 Python 中,使用 def 关键字定义函数: 实例 def my_function():print("Hello from a function&quo…...
web前端性能优化
3.性能检测 当面对具体的项目实践时,该如何快速提升性能体验呢?或者说如何能够准确地定位到性能瓶颈呢?难道要比对着优化知识点清单,一项一项手动排查或完全凭借经验去处理吗?不,我们需要有一整套清晰科学…...
Telnet 基础实验2: SSH 实验
Telnet 基础实验2: SSH 实验 本实验只能使用 eNSP中 AR 系统的路由器做 拓扑图 SSH : Secure Shell 是一个网络安全协议,基本于 TCP 协议 22 端口传输数据,通过对网络数据的加密,使其能够在一个不安全的网络环境中&a…...
Panda Farm:首个部署在 Arbitrum 上的轻量化 GameFi 游戏
在2月16日,Bitget平台宣布 Launchpad 重新启动,并推出了重启后的首个项目 Panda Farm(BBO),该 Launchpad 启动后得到了较高的关注。 Panda Farm 是部署在 Arbitrum 上的 GameFi应用,这可能首先意味着 Bitge…...
Redis实现分布式锁
1、使用背景几乎每个互联网公司中都使用了分布式部署,分布式服务下,就会遇到对同一个资源的并发访问的技术难题,如秒杀、下单减库存等场景。这些场景有一个共同特点就是访问量激增,虽然在系统设计时会通过限流、异步、排队等方式优…...
刷题小抄1-2数之和
时间复杂度和空间复杂度 对于一个算法高效性的评估,分为时间复杂度与空间复杂度两种,在算法优化到极致的情况下,只能舍弃时间来换取空间,或者舍弃空间来换取时间,故而两者可以说是互斥关系 时间复杂度衡量的是算法运行的速度,而空间复杂度衡量的是算法运行所需要的额外内存空…...
axicom的测试文档
目录)SQLpython开放性业务题(二选一)完整代码SQL 问题描述 SQL, 请根据前一周各产品的总GMV将其分成五类:GMV Top 20%、20%-40%,40%-60%,60%-80%以及Bottom 20%的产品组,请计算这五…...
基于vue3异步组件、动态组件、vite批量导入实现路由权限动态管理(非addRoute方案)
开发后台管理系统必备的需求:动态菜单权限管理、或者说路由权限动态管理 原理是通过addRoute实现路由权限控制,一般分为两种: 后端生成当前用户相应的路由后由前端(用 Vue Router 提供的API)addRoutes 动态加载路由前…...
带中转hub的卡车无人机车辆路径问题
本文介绍了两类无人机卡车协同配送问题: 第一类是旅行商问题,也即一辆卡车拉着一架无人机服务给定的节点集合第二类是车辆路径问题,这里强制要求了一架卡车只能搭配一架无人机无人机卡车旅行商问题 符号列表: N N N:表示所有节点集合,含起始和终止节点M M M...
前端食堂技术周刊第 72 期:Signals 是前端框架的未来、Chrome Headless、ts-reset、magic-regexp、Bun 新文档
美味值:🌟🌟🌟🌟🌟 口味:草莓番茄 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 本期摘要 Signals 是前端框架的未来Chrome Headless 进化成完全体Next.js 13.2Deno…...
mysql中用逗号隔开的字段作查询用(find_in_set的使用)
mysql中用逗号隔开的字段作查询用(find_in_set的使用) 场景说明 在工作中,经常会遇到一对多的关系。想要在mysql中保存这种关系,一般有两种方式,一种是建立一张中间表,这样一条id就会存在多条记录。或者采用第二种方式ÿ…...
Day902.Memory存储引擎 -MySQL实战
Memory存储引擎 Hi,我是阿昌,今天学习记录的是关于Memory存储引擎的内容。 两个 group by 语句都用了 order by null,为什么使用内存临时表得到的语句结果里,0 这个值在最后一行; 而使用磁盘临时表得到的结果里&…...
Linux(Centos)安装RabbitMQ+延时插件+开机自启动
安装目录1:前言1.1 系统环境1.2:安装版本1.3 简介2:安装2.1:安装前准备:2.2:安装Erlang2.3:安装RabbitMQ2.3:延迟依赖插件安装1:前言 1.1 系统环境 操作系统版本&#…...
tklink的登录做网站/软文营销的步骤
开头 开发上线的版本能保证不存在Bug么? 修复后的版本能保证用户都及时更新么? 如何最大化减少线上Bug对业务的影响? 热修复技术帮助我们解决了很多问题,带来的优势不言而喻。不知道各位对于热修复技术掌握如何? 面试…...
莆田网站制作方案定制/推广专员
失败交易者只知追逐利润,而优秀交易者善于管理风险。当你尝试做期货交易时,你可能会问自己一个问题:期货交易一天能赚多少钱?坦白说,这个问题就像“如果全职做期货交易能赚多少钱?或者外汇交易一天能赚多少…...
西安企业模板网站建设/排名检测
如果还不行,那么再极端的设置,在IDEA启动的时候强制设置为UTF-8: 打开增加-Dfile.encodingUTF-8,重启Intellij IDEA 再或者直接在项目运行的时候加入UTF-8的设置 如果还是不行,那么你可能装了一个假的IDEA。>如有问…...
怎么样找到做直销的人 有什么网站/搜索网站排行榜
关于组合数取模和逆元的知识的参考 http://blog.csdn.net/acdreamers/article/details/8037918 http://blog.csdn.net/acdreamers/article/details/8220787#comments 题目: 有一个无限大的矩形,初始时你在左上角(即第一行第一列ÿ…...
河南两学一做网站/网络营销的概念和特点是什么
1.双击打开“我的电脑”—双击打开“D盘”,单击右键下拉菜中选择“新建”—“文件夹”,右键“新建文件夹”选择“重命名”命名为“练习”,双击打开“练习”文件夹; 右键分别空白处右键下拉菜中选择“新建”—“文件夹”得到“新建文件夹”和“新建文件夹…...
电商网站商品表设计方案/关键词搜索引擎
通过System.out.printf("%%"); 利用%转义一下即可...