Java单元测试
引入junit依赖123456<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope></dependency>
创建测试用文件夹创建一个测试专用的文件夹(在src文件夹下创建)
常用注解介绍@Test把一个方法标记为测试方法
@Before每一个测试方法执行前自动调用一次
@After每一个测试方法执行完自动调用一次
@BeforeClass所有测试方法执行前执行一次,在测试类还没有实例化就已经被加载,所以用static修饰
@AfterClass所有测试方法执行完执行一次,在测试类还没有实例化就已经被加载,所以用static修饰
@Ignore暂不执行该测试方法
Java代码1234567891011121314151617181920212223242526272829303132333435 ...
a标签实现文件下载
实现一般文件通过纯前端技术实现文件下载,直接把a标签的href属性设置为文件路径即可
12345<p> <a href="https://www.zoutl.cn/fileDownload/nhdogjmejiglipccpnnnanhbledajbpd.zip"> <input name="下载" type="button" value="下载" /> </a></p>
特殊文件对于 txt , jpg , pdf 等浏览器支持直接打开的文件不会被执行下载,而是会直接打开,这时候使用download属性(为空时使用文件本来的名称,不为空时使用download的值)
download属性为空(下载名为vue.js的文件)
12345<p> <a download="" href="https://www.zoutl.cn/fileDownload/vue.js&quo ...
Maven出现错误:Plugin org.springframework.boot:spring-boot-maven-plugin: not found的解决办法
解决办法给spring-boot-maven-plugin指定版本
修改前1234<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId></plugin>
修改后12345<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.2.6.RELEASE</version></plugin>
Redis的持久化之AOF方式
概述AOF方式:将以日志,记录每一个操作
优势:安全性相对RDB方式高很多
劣势:效率相对RDB方式低很多
查看和修改配置找到并修改redis.conf
appendonly no默认关闭aof方式,我们修改成 yes 就开启
下面那个是默认的aof文件名
接下来找到
这里是三种同步策略:
always是只要发生修改,立即同步(推荐使用,安全性最高)
everysec是每秒同步一次
no是不同步
我们修改成always
保存并退出
备份数据启动Redis服务,增加几个key,退出客户端,查看当前目录,发现多了一个备份文件appendonly.aof
[root@localhost redis]# ./bin/redis-server ./redis.conf[root@localhost redis]# ps -ef | grep -i redisroot 1754 1 0 02:04 ? 00:00:00 ./bin/redis-server *:6379root 1758 1498 0 02:04 pts/0 00:00:00 grep –c ...
Redis的持久化之RDB方式
概述RDB方式,Redis是默认支持的
优势:只有一个文件,时间间隔的数据,可以归档为一个文件,方便压缩转移(就一个文件)
劣势:如果宕机,数据损失比较大,因为它是没一个时间段进行持久化操作的。也就是积攒的数据比较多,一旦懵逼,就彻底懵逼了
查看Redis配置[root@localhost ~]# cd /usr/local/redis/[root@localhost redis]# vi redis.conf
save 900 1 表示 每900秒内至少有1个key发生变化,就持久化
save 300 10表示 每300秒内至少有10个key发生变化,就持久化
save 60 10000表示 每60秒内至少有10000个key发生变化,就持久化
dbfilename配置是保存的持久化的文件名,默认是dump.rdb
dir ./ 表示文件存储路径是当前路径
查看当前路径的文件[root@localhost redis]# ll
当前路径里确实是有dump.rdb这个文件的
备份和恢复数据备份数据删除已存在的备份文件
[root@localhost redis]# lsbin ...
Redis持久化
持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)
持久化操作有两种方式:rdb方式、aof方式,可以单独使用或者结合使用
rdb方式:在指定的时间间隔写入硬盘,查看博客:Redis 的持久化之 RDB 方式 | LeDao 的博客 (zoutl.cn)
aof方式:将以日志,记录每一个操作,服务器启动后就构建数据库,查看博客:Redis 的持久化之 AOF 方式 | LeDao 的博客 (zoutl.cn)
Tomcat安装SSL证书
环境阿里云服务器、CentOS7系统、Tomcat9
申请免费证书阿里云可申请一年的免费证书,申请证书教程链接为:https://help.aliyun.com/document_detail/98574.html?spm=a2c4g.11186623.6.600.1a2d7597CYqniO
安装SSL证书前提条件
已从阿里云SSL证书服务控制台下载Tomcat服务器证书(包含PFX格式证书文件和TXT格式密码文件)
申请SSL证书时绑定的域名已完成DNS解析、实现了该域名指向您Tomcat服务器的IP地址
域名解析设置完成后执行ping www.yourdomain.com命令,如果返回了您所设置解析的主机IP地址,说明解析成功
操作步骤
解压Tomcat证书
每次下载证书都会产生新的密码,该密码仅匹配本次下载的证书。如果需要更新证书文件,同时也要更新匹配的密码
将下载的证书和密码文件拷贝到Tomcat的conf目录下
打开Tomcat/conf/server.xml,在server.xml文件中找到以下参数并进行修改
① 将Connector port修改为80,将r ...
图片压缩
为什么要图片压缩?使用更少的带宽,可以加快网站加载速度
tinypng网站地址https://tinypng.com/
使用点击虚线框可以选择要压缩的图片,或将图片(最多20张)拖到虚线框
压缩成功,点击下载按钮即可下载到本地
squoosh网站地址https://squoosh.app/
可以安装到电脑上,下载地址:https://squoosh-desktop.vercel.app/#download
使用上传图片后会自动压缩,点击下载按钮即可下载到本地
对比squoosh更加方便,squoosh压缩后下载的是图片,tinypng下载的是图片的压缩包还要解压一下;squoosh还可以安装到电脑上,不需要打开浏览器
使用Log4j
引入Log4j依赖12345<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version></dependency>
配置文件新建一个log4j.properties文件,文件存放位置:
文件内容如下:
123456789101112log4j.rootLogger=DEBUG, Console ,File #Consolelog4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n#Filelog4j.appender.File = or ...
Redis有序集合(sorted set)
概述Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
zadd添加元素,里面包括年龄和名称,根据数值从小到大排列,如果继续添加元素:①值已存在,则数值覆盖②值不存在,就会添加进去
zadd key 数值1 字段1 数值2 字段2 …
127.0.0.1:6379> zadd age 11 tom 8 jack 22 mary(integer) 3
zrange查找元素位置下标从0开始,结束位置如果是-1代表是最后一个
zrange key start end
127.0.0.1:6379> zrange age 0 -11)”jack”2)”tom”3)”mary”
显示数值上面没有显示数值,命令后 ...