配置文件草稿

news2024/9/20 6:26:19

 SpringBoot配置文件是用来保存SpringBoot项目当中所有重要的数据的,比如说数据库连接信息,数据库的启动端口,如果端口被占用了,那么就可以随时修改;

1)比如说我们之前再写JDBC的代码的时候,要去写链接字符串,用户名密码,之前保存在类里面,但是在我们的SpringBoot项目里面并不会把这些敏感的信息放到代码里面,因为如果这些信息放在JAVA代码里面是不方便进行修改的,并且只能由程序员去修改,而在公司里面技术岗位是有很多人的,假设你是开发人员或者是测试人员,最终部署到线上环境是由运维工程师部署的,所以说最终是由运维开发工程师来将你的项目部署到服务器上面,运维开发工程师不懂JAVA只懂Linux服务器,对于安全方面的知识比较多,部署项目并且能够在linux服务器上面稳定的运行,项目--->测试人员测试----->运维人员部署

2)因为Spring打成的包是jar包格式,如果你之前要是把配置信息写到一个类里面,那么最终就是.class文件,就是二进制字节码文件,字节码文件是无法进行修改的,.class只能看不能修改,所以配置文件不能写到一个类里面,这是不方便运维开发工程师进行修改的,当我们打开jar包的时候,我们点击.class文件发现一行字File is Read only,因为他是字节码不能修改,况且我们把这个.class文件用IDEA打开之后呢能够看到正常的一个JAVA代码是因为IDEA可以识别这个字节码,并且可以把字节码转化成一个相应的代码,本质上是IDEA自动进行识别的,我们把配置信息写到.class文件是不允许进行修改的,但是把配置信息写到配置文件里面,运维人员是可以进行修改的,这个时候就可以修改端口号,什么username运维人员都是认识的;

3)配置文件可以设置开发环境和运行环境两个配置文件,在进行运行打包的过程中通过修改一个变量是走那一套将多个配置文件共存,只需要修改一个变量,就可以走不同的配置文件

4)还可以存放三方调用的一些信息,比如说可以在学校教务系统里面可以看到一些优慕课的学习记录的,我们学校的教务系统是和有慕课是打通的,优慕课就会给学校的研发人员提供一些接口文档,那么通过这个接口文档就可以请求到我们教务系统想要的数据

1)整个项目中最重要的数据都是在配置文件里面进行配置的,比如说:数据库的连接信息

项目的启动端口,第三方系统的调用密钥等信息,教务系统可以看到CCTALK的一个观看直播数据,教务系统向CCTALK拉取数据的时候,就会带上一个第三方秘钥,CCTALK看到这个秘钥之后,就认为你当前身份合法,就可以拉取数据了,根据这个密钥就知道是特定人员发送过来的请求,三方的密钥也是通过配置文件来进行存储的;

2)如果没有配置文件的话,那么SpringBoot项目就不可以进行连接和操作数据库

3)甚至是不能保存用于排查问题的关键日志,所以说配置文件的作用还是非常重要的日志输出格式,日志保存路径,日志级别,可以配置日志级别还有持久化配置;

4)配置文件可以设置开发环境和配置环境两个配置文件,在进行运行打包项目的时候,就通过修改一个变量来进行指定使用哪一个配置文件,就可以从一个配置文件到另一个配置文件

SpringBoot是约定大于配置,必须遵循SpringBoot所约定的规则

1)链接数据库写法固定,必须写在配置文件里面,写在别的地方不可以

2)启动类必须和要放在SpringIOC容器Bean目录同级,或者在子包里面

3)配置文件名字是application.yml或者是appication.properties,因为SpringBoot在项目进行启动的时候,我只认名字等于applicaion开头的配置文件,改成applications就不生效了

我们SpringBoot的配置文件分为两种:

1)系统配置文件:我们已经约定好了,链接数据库字符串的Key值和Value值就是这么写不许变

2)自己定义的配置文件:自己约定好的,自己约定的键值对,像一些第三方的密钥信息,只有我们自己用,Key值是自己约定好的;

配置文件的格式:他们是属于两个版本,两个版本配置文件是可以共存的;

他们来的存在关系就是类似于@PostConstruct和init-method是一样的,都是在给Bean做初始化工作的一个是注解时期的产物,一个是XML时期的产物

1)properties:最先出现

2)yml:后来出现的

文件配置名字一定是application.properties或者是application.yml

1)当一个项目中既有.properties又有.yml,并且他们在两个配置文件有相同的配置项,那么SpringBoot项目配置项会使用优先级更高的.properties配置项作为最终的配置文件

2)一个项目中允许存在两种不同的配置文件properties和yml,但是强烈建议我们在一个项目中只采取一种格式的配置文件即可

3)我们尽量安装一下Spring Tools插件,安装了这个插件之后,使用咱们的properties才会有代码提示,否则是没有代码提示的,因为

4)配置的时候包括系统级别(系统配置文件)和用户级别的;

5如果说我们的properties没有提示信息,那么就需要安装spring tools插件了;

1)SpringBoot项目在进行启动的时候,只会认application名字的启动配置文件,你的application不能变成applications,无论是yml还是properties的文件名;

2)但是两个配置文件可以并存,也就是说在一个项目里面可以存放两种类型的配置文件,properties和yml,但是不建议这么进行使用但是说如果配置文件的信息冲突了,那么SpringBoot会优先采用properties配置文件来进行使用,yml不生效;

3)对于其他使用者来说,使用成本变高了,需要两种配置文件的格式知识都要掌握,提高开发人员的门槛了;

 application-properties是一个系统级别的配置文件

properties是配置文件最早期的配置文件的格式,也是创建SpringBoot项目默认的配置文件

1)基本语法使用是以键值的形式进行配置,Key和Value是以=进行连接的,在key和value之间不要去加空格

2)properties默认情况不支持中文,编码格式不是UTF-8,但是yml是支持中文的

3)解决方案就是:直接点击settings/new projects settings解决当前项目的乱码问题,输入encoding,选择FileEncoding,全部设置成UTF-8,我们不光要进行配置当前项目的中文乱码问题,而且还要进行配置新项目的中文乱码问题,能保证下一次创建的项目中的properties文件不乱码;

4)配置完这些编码格式的信息之后,我们就将原来的application.properties进行删除,我们可以重新再来创建一个application.properties文件,因为之前的配置文件已经是不支持中文编码的文件格式了,我们必须删除再来重新进行创建,因为设置编码在创建applicationproperties之后,以后设置的编码不会改变原来的旧的application.proiperties文件,所以说需要先将之前的配置文件删除掉再来重新进行创建,这样就避免了中文乱码问题;

5)我们可以在properties文件里面加上#是来进行表示注释信息:

格式信息:key=value,永远不要加空格,properties文件不支持中文

#配置项目端口号
#下面这个是系统的配置文件,key的值是不允许发生变化的
#两边不要设置空格,况且8084后面也不要进行设置空格,就是数字后面不要加空格
server.port=8084
spring.datasource.url=jdbc:127.0.0.1:3306/java300/?characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=12503487
#自定义配置文件,key的值可以发生任意改变
cctalk.token=XXX
MyCCtalk.token=XXX
YMK.token=9090

1)对于一个对象的多个参数进行设置是很麻烦的,需要从一开始进行写起直到一直写到结束为止,他是有很多的冗余的配置项的

2)教务系统后台调用了有慕课为我们提供的API接口,咱们就可以进行查询到每一位同学的学习情况,录屏看了多长时间(教务系统里面配置文件里面有密钥);

 我们先不要管红线,第一种写法尽量不要这么写,因为这个配置文件读取的时候很有可能会把value本来是8080读取成了空格+8080,这就比较蛋疼了,下面是在后面加了空格不容易发现,在数字后面加了空格;

这种写法也是错误的所以说写properties配置文件的时候键值对永远不要加空格;

SpringBoot在类里面读取配置文件(properties)的方法:

@Value("${变量名.属性}")

到了SpringBoot时代基本上所有的功能都是可以依靠注解来搞定,使用Value注解是一样的

1)当我们进行成功的配置了系统的文件之后,我们直接在启动的main方法里面所实现的类上面实现InitializingBean接口,重写里面的afterPropertiesSet方法,就是说当我们系统文件配置完成之后,就会执行到这个方法;

2)注意value只能读取单个配置项;

使用@Value注解读取某个单个配置项(千万不要漏掉$和括号),${Key}这么写才可以读到正确的配置项,不写$或者大括号虽然不会报错但是也是无法正确的读取到;

最终读写到的是一个英文单词而不是配置信息

@Value("${server.port}")//读取配置文件,我们在application.properties
里面进行根据Value注解中的Key读取到Value的值并赋值给str
	private String str;

@Value("${cctalk.token}")
private String str;

    @RequestMapping("/java100")
    @ResponseBody
    public String run(String name)
    {
        return name+str;
    }

了解:我们也是可以通过@Value注解来读取单个配置项的;

 

总结Properties的缺点分析:

从上面的配置Key可以看出,properties配置文件里面会包含很多的冗余的信息,再三条信息中都写了spring.datasource这是十分的不方便的,如果相同项有很多,写法就会非常复杂;

如果说我想要在配置文件里面进行设置MYSQL里面的三个链接,进行设置得十分麻烦

同时我们也发现,对于一个对象的多个参数的多个设置写起来是很麻烦的,要从一开始写到结束为止;

二.yml配置文件

1)yml可以简单表示数据序列化的形式,可以简单的表示清单,数组,散列表,标量等数据形态,它使用空白符号缩进和大量依赖于外观的特色,特别适用于各种配置文件;

2)语法形式:key+":"+空格+具体的键值(value),yml最大的方式就是可以跨语言,很多语言都可以用yml作为配置文件,可以支持中文,注意中间的空格是不可以省略的;

 读取yml单个配置文件的方式和之前读取properties读取单个配置项的方法就是一样的

@Value("${父亲类.子类属性}")
private String 对应的类型

 我们再进行演示一段yml形式的代码:

myvalue:
  val1: Hello \n Value
  val2: 'Hello \n Value'
  val3: "hello \n Value"
    @Value("${myvalue.val1}")
	 private String val1;
     @Value("${myvalue.val2}")
	 private String val2;
     @Value("${myvalue.val3}")
	 private String val3;

最后我们进行打印出来的结果是:

Hello \n Value
Hello \n Value
hello 
Value

yml:yml中如果使用了双引号就会按照原语义进行执行,如果不加上单双引号,或者加上了单引号,那么会自动默认按照特殊字符进行转义,比如\n,不会自动换行

 

 上面的解析结果是一样的

1)String.value3: "我想上天\\n"
2)@Value("${String.value3}")
    private String value3;
3)我想上天\n

一)读取yml文件配置对象和读取:

当我们想要读取一个对象的时候,我们就不能再通过@Value注解来进行读取配置中的对象了,此时我们就只能通过另一个注解也就是@ConfigurationProperties来进行读取了:

一:将配置文件中的一组对象映射到某个类上面,我们在这里面要使用到两个必不可少的注解@Component和@ConfigurationProperties("类名对应着Key");

二:使用其他注入方式在其它类中注入这个类即可(使用属性注入,Setter注入或者构造方法进行注入都是可以的

我们在resource目录下进行创建"xxx.yml"文件

key:+空格+Value-----这个空格是不能少的

1)我们在application.yml里面写的代码:
student:
  id: 1
  name: 李佳伟
  age: 16
2)我们在一个Student类里面写的代码
@Component//我们在Spring进行启动的时候直接将配置文件映射到当前类中的属性
@ConfigurationProperties("student")//我们也是可以这么写,这里面的写的值一定要和配置文件中的key的值是相同的:@ConfigurationProperties(prefix="student");
public class Student {
    private int id;
    private int age;
    private String name;

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", age=" + age +
                ", name='" + name + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
3)我们在main方法里面进行注入Student类
@SpringBootApplication
public class DemoApplication implements InitializingBean {
     @Autowired
     private Student student;
	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

	public void afterPropertiesSet() throws Exception {
		System.out.println(student);
	}
}

读取配置文件对象的方式:不可以通过@Value来进行读取

我们在写application.yml的文件的时候,里面写的键值对的形式可以写成一行,她也叫作对象的行内写法:

Student:
  UserID: 1
  UserName: 李佳伟 #字符串类型不需要加上双引号,SpringBoot会自动帮我们进行处理
  PassWord: 12503487
#这个时候我们就不可以通过@Value来进行读取配置中的对象了,而是通过别的注解@ConfigurationProperties来进行读取
#下面是行内写法,况且天然支持中文
Teacher: {TeacherID: 1,TeacherName: 李佳伟,TeacherAge: 10}

Student里面的代码:

@ConfigurationProperties(prefix = "student")
@Component//让咱们的Spring项目一进行启动就要读取配置文件,解析成一个对象加入到Spring容器里面,后续就可以通过以来注入的方式来进行使用
@Data//是通过Get方法来去读配置文件,通过Set方法将配置文件的属性填充到这个类里面
public class Student {
    private int UserID;
    private String UserName;
    private String PassWord;
}

2)读取yml文件配置集合的处理

配置集合:多个元素之间使用-加上空格来进行分割的

我们集合的读取和对象的读取是一样的,也是使用@ConfigurationProperties来进行读取的

@Component
@ConfigurationProperties("mylist")
@Data
public class ReadList {
//我们在这里面一定要注意两件事情:
//1这里面的注解有两个,一个是Component注解
//2还有一个注解是ConfigurationProperties,里面的值一定要和我们的
//yml的第一级的配置目录是相同的
//3我们此时期望使用一个list数组来进行接收,此时list数组的变量名要和
//yml的二级文件配置路径要相同
//4此时的Getter和Setter方法一定是不能够丢的
    private List<String> colors;
}

问题1:SpringBoot有几种读取配置文件的方式?

为了方便于测试,我们先通过在SpringBoot配置文件里面写几个配置项在application.properties里面:

一:使用单个配置项value来读取配置文件:

二:使用ConfigurationProperties来读取配置文件

@ConfigurationProperties 和 @Value 的使用略微不同,@Value是读取单个配置项的,但是@ConfigurationProperties是读取一组配置项的,我们可以使用@ConfigurationProperties加上实体类来读取一组配置项,如下面的代码所示:

1)在类中我们要在实体类上面设置@Getter和@Setter还有@ToString

2)我们要把这个实体类注册到SpringIOC容器里面就要加上五大类注解

3)我们要在@ConfigrationProperties里面加上prefix前缀,就是我们使用prefix来读取一组配置项的根spring.user,相当于是java中的类名,最后再将此类注册到某一个类中,也就是通过属性注入的方式注册到某一个类中,就可以使用了;

三:使用@Environment 读取配置文件

Environment是SpringCore中用于读取配置文件的一个类,我们将此类使用@Autowried注册到一个类中就可以读取配置文件了,并且通过使用getProperty方法来读取配置文件里面的值

 

四:使用@PropertySource读取配置文件 

4.1)我们使用@PropertySource注解可以用来指定读取某一个配置文件,比如说读取applicationProperties配置文件里面的内容,它是和@Value注解或者其他注解一起来进行搭配使用的:

4.2)如果配置文件中出现中文乱码的情况,可通过指定编码格式的方式来解决中文乱码的问题,具体实现如下:

@PropertySource(value = "dev.properties", encoding = "utf-8")

4.3)@PropertySource 注解默认是只支持 properties 格式配置文件的读取的

总结:

1)如果读取某一个配置项可使用 @Value

2)如果读取一组配置项可使用 @ConfigurationProperties

3)如果要指定读取某一个具体的配置文件可使用 @PropertySource 来指定

SpringBoot读取配置文件的方式:

1)通过@Value读取单个配置项

2)通过@Configuration来进行读取一组配置项,咱们要在实体类中加上@Component,@Data,还有@ConfigurationProperties(类名),咱们可以在这个注解前面加上prefix属性,就类似于Java中的类名,我们最后再把一个配置类注册到一个类中来进行使用

3)通过注入Environment类来进行读取配置文件,通过getProperty的方法来进行读取配置文件

@Controller
public class UserController{
    @Autowired
    private Environment environment;

    @RequestMapping("/Java")
    @ResponseBody
    public String run(){
      return environment.getProperty("spring.datasource.url");//在里面输入key的名字
    }
}

1)PropertySource来进行读取配置文件的时候,里面可以进行指定读取哪一个配置文件

2)@propertSource(value="配置文件的名字.properties",encoding=utf-8),它是默认情况下只支持properties文件类型的读取的)

问题2:properties和yml的区别:

2.1)properties和yml都是SpringBoot支持的两种配置文件,他们都是可以看作是SpringBoot在不同时期的两种产品,在SpringBoot时代我们已经不需要XML文件格式来配置项目了,取而代之的是properties和yml文件;

2.2)properties配置文件属于早期的,也就是目前创建的SpringBoot(2.X)的项目默认的配置文件格式,但是yml是可以看作是properties文件的升级版,属于SpringBoot的新型配置文件

所以说我们可以把yml配置文件是可以看作properties配置文件的升级版

1)定义和定位不同:

proiperties翻译成中文是属性的意思,所以是他在创建之初就是给SpringBoot来设置属性的,yml是Yaml的缩写,翻译成中文是另一种标记语言,所以说他们的定位和层次是完全不同的properties是用来设置一些属性配置的,但是yml的格局和愿景是更大的,它的定位是另一种标记语言,所以说从格局上来看,yml就比properies大;

2)语法不同:yml的语法更简单可读性更高

properties的语法格式类似于:key=value,所有地方都是不可以多加空格的

但是yml的基本语法是key:空格value,况且冒号后面的空格是不能省略的,否则项目启动的时候会报错;

3)支持的数据类型不同:yml可以配置更多的数据类型,比如说对象和集合

yml除了支持配置基础数据类型之外,还可以很方便地配置对象,集合等数据类型

2.1)在yml中配置对象等数据类型:

student:
  id: 1
  name: java
  age: 18

2.2)在yml使用行内写法配置对象等数据类型:

teacher: {id: 1,name: java,age: 18}

2.3)集合等数据类型

#1.设置一个list集合
mylist:
  colors:
    - RED
    - GREEN
    - BLACK
#2.设置一个list集合,行内写法
 mylist: { colors:[RED,GREEN,BLACK] }
animal:
  - dog
  - cat
person: [teacher, student]

3)yml可以跨语言,properties不能跨语言,yml的通用性更好

properties类型的配置文件只是适用于SpringBoot项目,也就是JAVA类型的语言,但是yml,是支持更多的开发语言,python,Golang等语言等等

假设在一家公司里面有着不同语言的开发团队,并且使用了配置中心,在线配置文件的情况下,那么不同的语言的开发团队就可以使用同一份配置文件了,也是方便后期的管理和维护

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Figma怎么用?看这篇最全攻略,用完回不去了!

Figma是什么&#xff1f;设计师朋友们一定不会陌生&#xff0c;它以轻体量、高设计效率、超强协作性以及设计和开发一体化等特点风靡一时&#xff0c;在全球的数字产品设计领域范围内崭露头角&#xff0c;得到海量用户和无数企业的认可和选择&#xff08;真棒啊&#xff09;。 …

成绩不公开,如何发成绩

亲爱的老师们&#xff0c;有没有在学期中疯狂整理成绩单&#xff0c;又担心成绩私发引起混乱的烦恼&#xff1f;今天就让我们一起探索如何利用各种工具和代码&#xff0c;实现学生自主查询成绩的便捷方式吧&#xff01; 成绩查询系统简介 成绩查询系统是一款方便学生和老师查询…

自主查询成绩

今天我们来揭秘如何制作成绩查询系统&#xff0c;让学生可以自行查看成绩&#xff01; 成绩查询系统可以帮助学生和老师轻松管理、发布、查看成绩。无论是期中考试、期末考试&#xff0c;作业查询还是平时的课堂表现&#xff0c;都可以通过成绩查询系统来及时掌握。 让我们一起…

双十一限时优惠!沃通SSL证书、代码签名证书年度好价

2023年11月01日至11月11日&#xff0c;沃通2023“双十一限时特惠”活动&#xff0c;精选9款SSL证书、国密SSL证书、代码签名证书产品推出年度好价&#xff0c;部分SSL证书产品低至5折&#xff0c;更有EV代码签名证书爆款特惠&#xff01;多种数字证书一站式采购&#xff0c;解决…

京东数据分析:2023年9月京东饮料行业品牌销售排行榜

鲸参谋监测的京东平台9月份饮料市场销售数据已出炉&#xff01; 9月份&#xff0c;京东饮料市场整体销售下滑。鲸参谋数据显示&#xff0c;今年9月&#xff0c;京东平台饮料市场的销量将近750万&#xff0c;环比降低约9%&#xff0c;同比降低约12%&#xff1b;销售额约4.4亿&am…

外网远程登录之 NAT server

案例&#xff1a; 外网远程登录内网SW&#xff1a; 需求 1.内网的PC都可以访问Server1 2.外网的R2可以远程登录SW1&#xff0c; 用户名和密码是&#xff1a;HCIE/hehe 需求 1.内网的PC都可以访问Server1 2.外网的R2可以远程登录SW1&#xff0c; 用户名和密码是&#xff1a;HCI…

腾讯云优惠券如何领取?详细教程来了!

腾讯云优惠券是腾讯云为广大用户提供的优惠福利&#xff0c;包括代金券和折扣券&#xff0c;大家可以通过领取优惠券&#xff0c;在购买腾讯云产品时享受优惠。本文将为大家介绍如何领取腾讯云优惠券&#xff0c;以及领取后的使用规则。 一、腾讯云优惠券领取方法 腾讯云优惠券…

2022最新版-李宏毅机器学习深度学习课程-P32 Transformer

一、 seq2seq 1. 含义 输入一个序列&#xff0c;机器输出另一个序列&#xff0c;输出序列长度由机器决定。 文本翻译&#xff1a;文本至文本&#xff1b;  语音识别&#xff1a;语音至文本&#xff1b;  语音合成&#xff1a;文本至语音&#xff1b;  聊天机器人&#…

window11最新版终于可以取消任务栏合并了

windows11一个软件开了多个窗口之后&#xff0c;会自动合并任务栏&#xff0c;很不方便选择其中一个窗口&#xff0c;且没有选项能关闭这一配置 今日发现&#xff0c;最新版完善了这一功能&#xff0c;现在可以关闭自动合并任务栏了 右击任务栏&#xff0c;选择任务栏设置选择…

518抽奖软件,奖项相互穿插抽奖的方法

518抽奖软件简介 518抽奖软件&#xff0c;518我要发&#xff0c;超好用的年会抽奖软件&#xff0c;简约设计风格。 包含文字号码抽奖、照片抽奖两种模式&#xff0c;支持姓名抽奖、号码抽奖、数字抽奖、照片抽奖。(www.518cj.net) 奖项穿插的方法 比如公司年会&#xff0c;共…

程序员如何提高自己的代码能力呢?

前言 程序员如何提高代码能力&#xff1f;个人认为代码能力比较强的程序员应该具备良好的编码习惯并可以输出高质量的代码实现的特征。那么程序员如何提高代码能力的问题&#xff0c;就变成了怎么才能成为一个具备良好编码习惯并可以输出高质量代码实现的程序员。其实很简单&am…

打造智慧矿山-触觉智能软通动力强强联合,助力矿鸿生态

2023年10月25-28日&#xff0c;两年一度的中国国际煤炭采矿技术交流及设备展览会在首都北京隆重召开&#xff0c;本届大会以“智能引领未来&#xff0c;绿色共享发展”为主题&#xff0c;作为国内煤炭行业的顶级盛会&#xff0c;由中国煤炭工业协会牵头举办的这次展出吸引了全世…

美术培训服务预约小程序的作用是什么

线下培训教育机构很多&#xff0c;涉及到的行业及种类很多&#xff0c;美术培训就是其中较为重要的一类&#xff0c;尤其是青少年群体&#xff0c;其拓展度很深&#xff0c;而对商家来说&#xff0c;其主要生源在本地同城&#xff0c;因此品牌宣传和渠道发展、学员赋能很重要。…

同花顺滑块

要是不去尝试就先放弃&#xff0c;我会对自己很失望。 网址&#xff1a;https://upass.10jqka.com.cn/login太无聊了&#xff0c;学了一下&#xff0c;验证码全是明文&#xff0c;没啥加密的。 这个都没啥可以说的&#xff0c;然后的话就没然后了 。 好心人留下源码&#xff1…

使用 docker-compose 部署 SpringBoot 项目 nginx 部署前端

安装 Docker 自动下载 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun检查是否安装成功 docker -v配置镜像仓库 更换镜像加速器&#xff08;推荐阿里云&#xff09; 容器镜像服务 (aliyun.com) 扫码登录后找到镜像仓库 每个人都不同&#xff0c;复…

基于深度学习的人脸识别系统 计算机竞赛

前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的人脸识别系统 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/…

1.PPT高效初始化设置

1.PPT高效初始化设置 软件安装&#xff1a;Office 2019 主题和颜色 颜色可以在白天与黑夜切换&#xff0c;护眼 切换成了黑色 撤回次数 撤回次数太少&#xff0c;只有20次怎么办 自动保存 有时忘记保存就突然关闭&#xff0c;很需要一个自动保存功能 图片压缩 图片…

保姆级,Fiddler抓包辅助-抓取APP端数据包,看这篇就足够了...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 做接口测试的时候…

数据结构和算法——用C语言实现所有图状结构及相关算法

文章目录 前言图的基本概念图的存储方式邻接矩阵邻接表十字链表临界多重表 图的遍历最小生成树普里姆算法&#xff08;Prim&#xff09;克鲁斯卡尔算法&#xff08;Kruskal&#xff09; 最短路径BFS求最短路径迪杰斯特拉算法&#xff08;Dijkstra&#xff09;弗洛伊德算法&…

python:使用gdal和numpy进行遥感时间序列最大值合成

作者:CSDN @ _养乐多_ 本文将介绍使用python编程语言,进行遥感数据时间序列最大值合成的代码。代码中使用了numpy和gdal,通过numpy广播机制实现时间序列最大值合成,并以NDVI时间序列数据为例。代码方便易运行,逻辑简单,速度快。只需要输入单波段遥感数据,就可输出最大值…