啊?
项目构建<properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring-boot.version>2.6.13</spring-boot.version> <spring-cloud.version>2021.0.5</spring-cloud.version> <spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version> <aliyun-spring-boot.version> ...
Centos7 磁盘扩容,vgdisplay 显示为空
本文适用情况:
配置虚拟机时,分区是自行配置,没有使用默认分区
使用 vgdisplay 命令,什么也没有显示
Centos7 64x,根目录分区为 xfs 格式
扩容磁盘空间
查看当前分区信息
可见根目录挂载在 sda3
lsblk
安装分区工具yum install cloud-utils-growpart gdisk -y
卷扩容
3 就是根目录所在分区
growpart /dev/sda 3
此时,分区大小已经变为调整后的大小
文件系统扩容xfs_growfs /
扩容成功
df -h
参考文档
🖋 解决centos7 根目录扩容vgdisplay数据卷为空不能扩容问题
🖍Linux操作系统之centos7根目录扩容(根目录在sda3 vgdisplay为空)
✏VMware虚拟机扩展磁盘容量
🖌对VMware已经创建的虚拟机进行磁盘扩容过程以及会遇到的问题
MD5&MD5加盐
MD5👀 MD5 是一种常见的加密方式,常用于加密存储密码。全称为:Message-Digest Algoorithm 5,信息摘要算法
它具有以下特性:⛏
压缩性:任意长度的数据,算出的 MD5 值都是固定的
容易计算:从原数据计算出 MD5 值很容易
抗修改性:改变原数据后,所得到的 MD5 值都有很大的差别
强抗碰撞:想找到两个不同的数据,使它们具有相同的 MD5 值是非常困难的。
综上:每个数据都对应一个唯一的 MD5 值
例如:123456 的 MD5 值为:e10adc3949ba59abbe56e057f20f883e
MD5值 e10adc3949ba59abbe56e057f20f883e 对应的原数据为 123456
也就是说,如果知道了 MD5 值,就可以反向推出加密前的数据(应为MD5是唯一的)
详情请看:彩虹表
所以我们就无法单独使用 MD5 来进行数据的加密存储。
MD5 的实现方式有很多种,JDK自带的 MessageDigest 和 Spring 封装好的 DigestUtils
MessageDigestDigestUtilsimport o ...
Docker Registry
Docker Registry 本地私有仓库配置查询本机IPifconfig
生成自签名证书要确保DockerRegistry本地镜像仓库的安全信,还需要一个安全认证证书,来保证其他Docker机器不能随意访问该机器上的本地镜像仓库。(如果已购买证书,就不需要生成了)
mkdir /usr/local/docker/registrymkdir /usr/local/docker/registry/certscd /usr/local/docker/registry/certs/
openssl req -x509 -days 3560 -subj '/CN=192.168.196.101:5000/' -nodes -newkey rsa:2048 -keyout domain.key -out domain.crt
-x509:是一个自签发证书的格式
-days 3650:证书的有效时间
192.168.196.101:5000:仓库的地址和端口
rsa:2048:证书算法长度
domain.key和domain.crt:生成的证书文件
生成用户名 ...
函数式接口
函数式接口
函数式接口:有且只有一个抽象方法的,可以有多个非抽象方法的接口,主要用于 Lambda 表达式
例如:
@FunctionalInterfacepublic interface Runnable {public abstract void run();}
@FunctionalInterfacepublic interface Function<T, R> { R apply(T t); default <V> Function<V, R> compose(Function<? super V, ? extends T> before) { Objects.requireNonNull(before); return (V v) -> apply(before.apply(v)); } default <V> Function<T, V> andThen(Function<? super R, ? extends V> ...
线程池
线程池七大参数
参数名
释义
int corePoolSize
核心线程数,线程池创建好之后就准备就绪的线程数量,就等待来接收异步任务;只要线程池不销毁,就一直存在
int maximumPoolSize
最大线程数量,控制资源
long keepAliveTime
当前线程数量大于核心数量, 只要线程空闲大于指定时间,就会释放。核心线程是不释放的。
TimeUnit unit
超时单位
BlockingQueue workQueue
阻塞队列,如果任务数超过核心程数量,就会将多余的任务放到队列当中,只要线程空闲,就会从队列中取出任务
ThreadFactory threadFactory
线程的创建工厂,通常默认,不做修改
RejectedExecutionHandler handler
拒接策略,如果队列满了,按照我们的定义的拒绝策略来拒绝任务。
public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, ...
Lambda
原始写法interface User{ String UserName(String name);}class Iuser implements User{ @Override public String UserName(String name) { return "我是"+name; }}public class Lambda01 { public static void main(String[] args) { User user = new Iuser(); String userName = user.UserName("阿鑫"); System.out.println(userName); }}
静态内部类interface User { String UserName(String name);}public ...
Maven锁定版本与版本常量
Maven锁定版本与版本常量今天在添加微服务模块是出现了个有趣的现象:
创建了多个微服务;
它们都引用同一个微服务–common;
在common中配置这些微服务的共同依赖;
common中使用锁定版本与版本常量的方式配置好了 spring cloud 、spring cloud alibaba;
在common中配置好 nacos
其他的微服务是通过 Spring Initializr 的方式生成的(没选择其他依赖),所以只有 springboot 的依赖
启动微服务,报错:nacos 和 spring cloud 版本不兼容。
纳尼?
版本不能出错,我之前使用过。
在微服务模块中加入 spring cloud 依赖,启动成功!
纳尼???
我不是在 common中配置好了吗? 根据依赖传递,其他微服务中应该不用配置啊?
<dependencyManagement></dependencyManagement>
dependencyManagement 叫做版本锁定,是为了避免因依赖冲突而 ...
GuliMall-报错集锦
renren-fastpom.xml爆红,插件下载不到
解决方法:把插件注释掉就好,不影响启动。
pom.xml 此时还是爆红,别在意,启动项目
项目启动失败找不到实体中的 get 和 set 方法
首先引入 lombok 插件,还是出问题。
查看lombok插件使用的版本是 1.18.24,而 renren-fast 引用的是 1.18.4,版本不一致。
解决方法:将 renren-fast 应用的版本也改为 1.18.24,启动成功
renren-fast-vuecnpm install报错解决方法:
查找资料得知,nodejs 和 node-sess 有对应的版本要求 详见
我得nodejs版本是18+,所以我需要8.0+的node-sess
修改renren-fast-vue目录下的 package.json 和 package-lock.json
报错:chromedriver@2.27. ...
RabbitMQ工作模式与实现方式
RabbitMQ工作模式与实现方式Work queues
不需要设置交换机,只需指定唯一的消息队列即可进行消息传递
可以有多个消费者,多个消费者通过轮询从队列中取消息
消息被接受后,队列将消息移除
消费在可以在没有处理完消息的情况下继续获取消息
通过设置 spring.rabbitmq.listener.simple.prefetch: 1 来设置每次处理完消息后才能获取下一条
consumer@Componentpublic class SpringRabbitListener {// workqueue @RabbitListener(queues = "simple.queue") public void listenSimpleQueue01(String msg) throws InterruptedException { System.out.println("消费者01 接收到simple.queue的消息为:" + msg + "," + LocalTime ...