学习打怪日记
目录
- 0 关于
- 1 SpringBoot上传大文件抛出异常:MaxUploadSizeExceededException
- 2 SpringBoot警告:`HikariPool-1 - Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl@6221f160 (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value.`
- 3 Windows把exe注册为服务的方法
- 4 ubuntu22 apt包切换阿里镜像源
- 5 把frpc注册为服务开机自启动
- 6 IDEA隐藏Git的代码提交人信息
- 7 Ubuntu系统备份与恢复——TimeShift
- 8 Ubuntu安装ssh服务器
- 9 Windows可以ping通Ubuntu但反过来不行
- 10 Ubuntu通过proxychains4利用Windows的代理
- 11 Ubuntu安装共用的Anaconda
- 12 U盘安装Windows选择安装磁盘位置时列表为空
- 13 nmap使用
- 14 AntDesign Vue项目国际化设置
- 15 ESlint取消自动删除未使用的引用
- 16 Vue项目设置界面的背景图片
- 17 HTML中关于布局flex、flex-direction、align-items、justify-content的探讨
0 关于
本文主要用于记录自己在学习过程中遇到的一些小问题、疑难杂症。问题来自多个方面。
1 SpringBoot上传大文件抛出异常:MaxUploadSizeExceededException
- 问题描述:
2024-12-12T17:07:26.075+08:00 WARN 32608 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded]
2024-12-12T17:07:26.080+08:00 WARN 32608 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded]
- 原因分析
这是因为SpringBoot默认限制最大上传文件大小为1MB,所以我们可以修改这个限制大小解决这个问题 - 解决方法
在SpringBoot项目的application.yml配置文件中修改最大文件大小。
2 SpringBoot警告:HikariPool-1 - Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl@6221f160 (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value.
- 问题描述
SpingBoot报错:HikariPool-1 - Failed to validate connection com.mysql.cj.jdbc.ConnectionImpl@6221f160 (No operations allowed after connection closed.). Possibly consider using a shorter maxLifetime value.
- 原因分析
springboot在连接数据库时会建立一个连接放在数据库连接池中,但是这个mysql会超时主动关闭这个连接,如果这个超时的连接还在连接池中则springboot还会使用该连接访问数据库,所以会报警告。 - 解决方法
解决的思路就是设置连接保存在连接池中的时间,使得其在失效之前就被移除连接池,这样连接池中的连接一定是有效的可以使用的。- 在mysql命令行执行
show variables like '%timeout%'
以查看mysql主动关闭的时间。
- 在SpringBoot项目的配置文件中设置如下属性,使该属性值小于上述查询到的值即可,即max-lifetime < min(interactive_timeout, wait_timeout)。
- 在mysql命令行执行
3 Windows把exe注册为服务的方法
- 软件:Alwaysup
- 软件:WinSW
- 命令:sc create
4 ubuntu22 apt包切换阿里镜像源
- 保存apt镜像源配置文件的备份:
cp /etc/apt/sources.list /etc/apt/sources.list.backups
- 修改
/etc/apt/sources.list
的内容如下,其他版本参考参考链接:
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
# deb https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
# deb-src https://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
5 把frpc注册为服务开机自启动
- 前置条件:假设已经安装好了frpc,且启动命令为/opt/frp/frpc -c /opt/frp/frpc.toml
- 创建一个systemd服务文件,文件路径为:/etc/systemd/system/frpc.service
- 填写文件内容如下:
[Unit]
Description=frpc service
After=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.toml
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
解释如下:
这个 frpc.service 文件是一个systemd服务单元文件,用于控制frp客户端(frpc)的启动、停止和重启行为。下面是对文件中每个部分的详细解释:
[Unit] 部分
这部分定义了服务单元的元数据和依赖关系。
Description=frpc service:提供了服务单元的描述,这里是“frpc service”。
After=network.target:指定了服务单元的依赖关系,表示frpc服务将在network.target启动之后启动。network.target是一个标准目标,它在系统网络服务启动后激活。
Wants=network.target:类似于After,但即使network.target没有被激活,frpc服务也会启动,只是会记录一个警告。
[Service] 部分
这部分定义了服务的行为和运行时的配置。
Type=simple:指定了服务的启动类型。simple是最常见的类型,意味着systemd会直接启动ExecStart中指定的进程。
ExecStart=/opt/frp/frpc -c /opt/frp/frpc.toml:定义了启动服务时执行的命令。这里,/opt/frp/frpc是frpc客户端的路径,-c参数后面跟着的是frpc的配置文件路径/opt/frp/frpc.toml。
Restart=on-failure:定义了重启策略。on-failure意味着如果frpc进程退出时返回了非零状态码(表示失败),systemd将会自动重启该服务。
RestartSec=5:定义了在服务失败后重启前的等待时间,这里是5秒。
[Install] 部分
这部分定义了服务单元文件的安装信息,用于确定服务单元文件是否应该被启动。
WantedBy=multi-user.target:指定了当达到multi-user.target时,这个服务应该被启动。multi-user.target是一个标准目标,它允许多个用户同时登录系统(通常是文本模式)。这意味着在系统达到多用户状态时,frpc服务将被启动。
- 执行命令
sudo systemctl daemon-reload
重载systemd管理器配置,使新的服务文件生效 - 执行命令
sudo systemctl enable frpc.service
使服务开机自启动 - 执行命令
sudo systemctl start frpc.service
启动服务 - 执行命令
sudo systemctl status frpc.service
查看服务状态
6 IDEA隐藏Git的代码提交人信息
- 进入设置
- 取消Code Vision下面的代码作者显示即可
7 Ubuntu系统备份与恢复——TimeShift
-
执行
apt update && apt upgrade
命令更新升级软件包。 -
执行
sudo apt install timeshift
安装timeshift。
-
执行
sudo timeshift --help
查看帮助指示以检查是否安装成功
-
修改timeshift配置文件(可选)
- 配置文件位置:
/etc/timeshift/timeshift.json
- 可以修改
exclude
字段添加不进行备份的文件夹
- 配置文件位置:
-
执行
sudo timeshift --create --comments "系统备份1" --tags B
创建系统备份
--comments
指定了备注信息--tags
指定了标记
-
执行
sudo timeshift --list
查看所有的快照
其中Name
字段在后续恢复到快照时会使用到 -
执行
sudo timeshift --restore --snapshot "2024-12-26_14-07-34"
恢复到指定的快照- 遇到
y/n
直接y
就是
- 遇到
-
删除快照
# 删除指定的快照
sudo timeshift --delete --snapshot "2024-12-26_14-07-34"
# 删除所有快照
sudo timeshift --delete-all
- 参考博客:参考
8 Ubuntu安装ssh服务器
- 执行命令:
sudo apt install openssh-server
9 Windows可以ping通Ubuntu但反过来不行
- 关闭Windows的公共网络防火墙
10 Ubuntu通过proxychains4利用Windows的代理
-
打开Windows的代理软件,找到监听的端口
-
获取Windows的在局域网的ip地址:
ipconfig
-
在Ubuntu安装proxychains4:
sudo apt-get install proxychains4
-
对proxychains4进行配置:
sudo nano /etc/proxychains4.conf
# 代理链配置
strict_chain
proxy_dns
# 默认配置
[ProxyList]
# 格式:代理类型 IP地址 端口号 [用户名] [密码]
socks5 10.129.26.111 7890
- 确保打开了Windows的代理软件
- 关闭Windows的防火墙
- 测试
- 不使用proxychains4时无法成功执行:
- 使用proxychains4时成功执行:
- 不使用proxychains4时无法成功执行:
11 Ubuntu安装共用的Anaconda
- 获取Anaconda的安装包,官网地址下载或者执行
wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
:
- 通过bash指令执行.sh安装脚本
sudo bash Anaconda3-2024.10-1-Linux-x86_64.sh
。 - 遇到yes/no时选择输入yes。
- 选择安装位置时选择一个所有用户可以访问的文件夹,这样不用修改权限,例如/opt/anaconda。
- 对于需要使用该conda的用户,切换到该用户下的终端,进入/opt/anaconda/bin目录,执行指令
./conda init bash
和source ~/.bashrc
- 完成,此时所有用户使用的同一个conda,互相看不见对方的虚拟环境。
12 U盘安装Windows选择安装磁盘位置时列表为空
- 首先准备Intel Rapid Storage Technology (IRST) 驱动程序:百度网盘分享链接
- 在启动盘中创建名为driver的文件夹,将驱动程序解压后放置在driver文件夹中:
- 再次按照正常安装流程来到选择系统安装位置的界面,点击加载驱动程序-浏览,选择放置驱动程序的driver目录即可。
- 等待加载完成之后即可识别到存储器。
13 nmap使用
- 扫描某个主机的所有端口:
nmap -p- 192.168.1.1
- 扫描UDP端口:
nmap -sU 192.168.1.1
- 详细输出:
nmap -vv 192.168.1.1
- TCP SYN扫描(半开放扫描):
nmap -sS 192.168.1.1
- 静默扫描:
nmap -sN 192.168.1.1
14 AntDesign Vue项目国际化设置
官方文档:官方文档
<template>
<a-config-provider :locale="locale">
<App />
</a-config-provider>
</template>
<script>
import zhCN from 'ant-design-vue/es/locale/zh_CN';
import dayjs from 'dayjs';
import 'dayjs/locale/zh-cn';
dayjs.locale('zh-cn');
export default {
data() {
return {
locale: zhCN,
};
},
};
</script>
15 ESlint取消自动删除未使用的引用
- 找到项目中的eslintrc.cjs文件
- 使用以下规则
16 Vue项目设置界面的背景图片
- 失败情况:
<div style="background-image: url('@/assets/view_background.png');" />
像这种直接在标签的style中指定背景图片的路径,网页无法显示背景图片。
- 成功情况(一):使用v-bind:
<script lang="ts" setup>
import backgroundImage from '@/assets/view_background.png';
...
</script>
<a-layout :style="{ backgroundImage: `url(${backgroundImage})` }">
- 成功情况(二):在样式表部分使用:
.home-layout {
display: flex;
flex-direction: column;
overflow: auto;
background-image: url('@/assets/view_background.png');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
- 说明:在HTML中直接使用div标签的style属性来指定背景图片时,路径需要是相对于HTML文件的路径或者是完整的URL。在失败情况的代码中,url(‘@/assets/view_background.png’)使用的是Vue.js中的别名路径,这种路径是在JavaScript代码中解析的,而不是在CSS中。在Vue.js项目中,@符号通常被配置为指向项目的src目录。这意味着@/assets/view_background.png实际上是指向src/assets/view_background.png路径的文件。但是,这种别名只能在JavaScript代码中工作,CSS不支持这种别名解析。因此,当你在CSS中使用这个路径时,浏览器无法解析@别名,导致背景图片无法显示。而在CSS样式表中,你使用的路径是相对于CSS文件的路径或者是完整的URL,所以浏览器能够正确解析并显示背景图片。
17 HTML中关于布局flex、flex-direction、align-items、justify-content的探讨
- 不做布局修饰
<div style="background-color: wheat; height: 10rem;">
<button>button1</button>
<button>button2</button>
</div>
- 通过flex开启弹性布局
<div style="background-color: wheat; height: 10rem; display: flex;">
<button>button1</button>
<button>button2</button>
</div>
- 通过flex-direction设置弹性布局的主方向
- 3.1 主方向为column垂直方向
<div style="background-color: wheat; height: 10rem; display: flex; flex-direction: column;">
<button>button1</button>
<button>button2</button>
</div>
- 3.2 主方向为row水平方向
<div style="background-color: wheat; height: 10rem; display: flex; flex-direction: row;">
<button>button1</button>
<button>button2</button>
</div>
- 通过align-items调整在副方向上的布局策略
<div style="background-color: wheat; height: 10rem; display: flex; flex-direction: column; align-items: center">
<button>button1</button>
<button>button2</button>
</div>
- 通过justify-content调整在主方向上的布局策略
<div style="background-color: wheat; height: 10rem; display: flex; flex-direction: column; justify-content: center;">
<button>button1</button>
<button>button2</button>
</div>
6. 通过align-items和justify-content结合实现水平和垂直居中
<div style="background-color: wheat; height: 10rem; display: flex; flex-direction: column; align-items: center;justify-content: center;">
<button>button1</button>
<button>button2</button>
</div>
原文地址:https://blog.csdn.net/qq_62888264/article/details/144431206
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!