SpringBoot中读取配置的几种方式
SpringBoot中读取配置的几种方式
一、介绍
在SpringBoot项目中,我们使用application.yml或者application.properties文件,那么在如何读取其中的配置参数呢?
有以下这么几种
使用@Value注解
使用@ConfigurationProperties注解
使用@PropertySource+@Value注解
使用@PropertySource+@ConfigurationProperties注解
使用Environment.getProperty()
前面两种大家都很熟悉,也在常常使用,剩下这几个就比较陌生了,一起来看看吧。
二、方法
1)@Value注解
假如我们有这样的一个application.yml配置文件
12server: port: 8888
对于这样单条的配置,我们可以采用@Value去进行获取
1234567891011121314151617181920package com.banmoon.test.job;import lombok.extern.slf4j.Slf4j;import or ...
使用axios下载文件
使用axios下载文件
一、介绍
在前后端分离的开发项目中,我们常常有下载文件或者报表的需求。
如果只是简单的下载,我们可以简单使用a标签请求后端就可以了,不过一旦涉及到后端报错的回调、等待动画、进度条这种的,就没有任何办法了。
所以,这里可以使用axios进行请求,获取到后端的文件流后,自己进行生成文件。这样就可以完成上面的那三种情况了。
二、使用
1)下载Excel文件
我们点击下载按钮,将表单内容传入,返回一个对应的excel文件。
前端界面的话,如下所示
定义一下UserDTO.java,用来进行传参
1234567891011121314151617package com.example.demo.dto;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@NoArgsConstructor@AllArgsConstructorpublic class UserDTO { private String name; privat ...
力扣算法题:阶乘后的零
阶乘后的零
一、介绍
此题出自力扣网题库第172题,我刚开始没有想到,后面看了题解才明白的。
先看看题目,讲得很简单
还有入参的限制,0 <= n <= 104
12345class Solution { public int trailingZeroes(int n) { // TODO ... }}
放一个计算器,一会自己可以看看规律
输入数字n:
计算
结果:1
二、解题思路
1)暴力破解
暴力破解,算出答案,再转字符串,计算出末尾零的个数。
这种方法想都不要想,这可是阶乘,数字量很大的,很容易溢出。不然上面用计算器来试试。
2)优化
不知道你用计算器试过了没有,也不知道你有没有得到规律,我们先一步一步来分析
首先要看这道题想要的结果是什么,是零的个数
再看题目,阶乘阶乘,里面都是乘法计算,所以想要得到零,必须要乘上10,那么这个10就是因子
思路到这,第一步就清除了,查询n中有多少个10或者10的倍数,就有多少个零
然而,当你用计算器去试了一下,结果发现,5 ...
关于MySQL的几道面试题
关于MySQL的几道面试题
一、介绍
MySQL大家都很熟悉了,最常用的开源数据库,也是面试官高发常问的技术。
简单列出几道MySQL的几道面试题,一起来看看
B树和B+树之间的区别是什么
Innodb中的B+树有什么特点
Innodb中的索引和B+树
B+树可以存储多少的数据
索引类型有哪些
索引失效的场景
二、问题
1)B树和B+树之间的区别是什么
大家都知道,MySQL中使用存储数据的结构是B+树,那么他和B树有什么区别吗?
首先我们得先了解什么是B树,先看看B树的一些概念
排序方式:所有节点储存都是有序的,都遵循左小右大的原则进行排序
子节点数:非叶节点的子节点数>1,且<=M ,且M>=2
M是什么:在B树中,一个的子节点数目的最大值,即为M。这颗树也称为M阶数
关键字数:枝节点(B树中去除掉根节点和叶子节点的剩余节点)内的关键字数>= ceil(M/2),且<M-1
关键字数K:ceil(M/2)<=K<=M-1
ceil函数:天花板,向正方向取整
M:枝节点的子节点数量
叶子节 ...
跨域问题及解决方案
跨域问题及解决方案
一、介绍
在前后端分离项目中,跨域问题是一定会遇到的。跨域问题的出现,会导致css、js或者ajax对后端请求等资源无法访问的情况。
要想解决跨域问题,首先先得了解什么是跨域问题。
问题:什么是跨域
跨越问题是由于浏览器的同源策略,是浏览器强制要求的安全策略,所以想要了解跨域,首先得了解同源。
所谓同源是指,协议、域名、端口均一致,只要以上三者有一个不一致,就会引发跨域问题
前端页面
后端接口
是否跨域
原因
http://banmoon.cn/index.html
http://banmoon.cn/user/get
否
皆一致
http://banmoon.cn/index.html
https://banmoon.cn/user/get
是
协议不一致
http://banmoon.cn/index.html
http://other.com/user/get
是
域名不一致
http://banmoon.cn/index.html
http://banmoon.cn:8080/user/get
是
端口不一致
http:// ...
Redis的持久化策略RDB和AOF
Redis的持久化策略RDB和AOF
一、介绍
众所周知,redis是一个内存数据库,是一个经典的NOSQL类型的数据库。
我们常常拿redis来当成缓存,这得益于它存储数据的位置在内存中,这样在进行取数时,不用再进行磁盘IO,速度也会大大增加。
但是,也正是它存储在内存中,服务器若是断点、宕机,内存中的数据岂不是没有了。所以,redis还有它自己的持久化策略,将自己内存中的数据保存一份在磁盘中,以备不时之需。
二、持久化策略
1)RDB(默认)
rdb持久化策略,每隔一段时间将内存中的数据保存下来。等下次redis启动,就会自动加载这个文件的数据到内存中,进行恢复。
时间间隔、文件名都是可以设置的,修改redis.conf
12345678910111213################################ SNAPSHOTTING ################################# 当900秒内至少有1个键值对发生变动,触发持久化save 900 1# 当300秒内至少有10个键值对发生变动,触发持久化save 300 10# 当60秒内至少有100 ...
关于spring事务你需要知道的知识点
关于spring事务你需要知道的知识点
一、介绍
大家都知道,在SpringBoot中,使用事务只需要添加@Transactional就可以添加事务,很是方便。
那么它到底是怎么工作的呢?
这么说有点晕头晕脑的,那来简单看下
二、事务失效的场景
1)事务需要代理类启动
基本的配置我就贴出来了,就一个连接数据库的配置有啥好看的,数据库表也是一样
那么接下来,先来一个UserDao
12345678910111213141516171819202122232425package com.banmoon.test.dao;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Repository;import org.springframework.transaction.annotation.Transactional;@Repositorypub ...
关于final关键字的两个面试题
关于final关键字的两个面试题
一、介绍
final关键字常用,但真的了解它吗。我做一下记录,仅供参考
简述final的作用
为什么局部内部类和匿名内部类只能访问局部的final变量
二、简述final的作用
final是一个修饰符,表示最终的,不可被修改
修饰类:表示类不可被继承,所以抽象类不能使用final关键字
修饰方法:表示方法不能被重写,但是可以进行重载
修饰变量:表示赋值后就不能修改该变量的值
修饰变量时,有几种情况
修饰成员变量时
1234567891011121314151617public class Demo { // 声明时直接赋值 final int a = 1; // 在代码块中进行赋值 final int b; { b = 2; } // 在构造函数中进行赋值 final int c; public Demo(int c) { this.c = c; }}
修饰局部变量时
1 ...
windows强制删除被占用的文件
windows强制删除被占用的文件
一、介绍
在windows中,想删除一个文件,往往被进程占用,导致删除不掉改怎么办。
遇到问题不要慌,这里可以给你解决
二、解决
1)使用文件粉碎功能
如360大师、火绒、电脑管家,等
不过我不喜欢用这种方式添加软件,毕竟有几个程序员的电脑上有这些软件呢
2)创建bat脚本
不知道哪个大神写的bat脚本,亲测还是挺好用的
创建新的txt
粘贴复制以下代码
修改后缀为bat
将要删除的文件拖动到此文件上就好
123456789101112131415161718@echo offif not exist \\?\%1 ( echo 将要删除的文件托至本程序即可,不能直接运行本程序 echo BY ma6174 pause exit)echo y|Cacls %* /c /t /p Everyone:fDEL /F /A /Q \\?\%1RD /S /Q \\?\%1DEL /F /A /S /Q %*RD /S /Q \\?\%*DEL /F /A /Q %*RD /S /Q \\?\%*DEL /F /A ...
Java设计模式详解
设计模式详解
一、介绍
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
设计模式,就是为了一套对写代码的写法经验的总结,怎么写效率更高,可读性更强,上手更简单。简单的抽象形容,就是摩天大楼和简易茅草屋的区别,前者使用更大更强的地基,有更加强大的设计蓝图,所以才能高耸入云;而茅草屋,只是简单的材料拼接而成的房子,来一场风可能就塌了。所以程序也是一样,要想做到和摩天大楼一样的程序,设计模式是必不可少的。
大部分人写代码应该都是茅草屋吧,我也是一样。哈哈哈,在写公司的代码时,只想着把功能做出来,常常就忽略的架构上的东西。
本文的绝大部分,都源自于哔哩哔哩尚硅谷学堂,谢谢他们的教程
1)GOF(Gang of Four)
GOF,我们通常叫四人帮。在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 ...