自学内容网 自学内容网

学习打怪日记

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还会使用该连接访问数据库,所以会报警告。
  • 解决方法
    解决的思路就是设置连接保存在连接池中的时间,使得其在失效之前就被移除连接池,这样连接池中的连接一定是有效的可以使用的。
    1. 在mysql命令行执行show variables like '%timeout%'以查看mysql主动关闭的时间。
      在这里插入图片描述
    2. 在SpringBoot项目的配置文件中设置如下属性,使该属性值小于上述查询到的值即可,即max-lifetime < min(interactive_timeout, wait_timeout)。
      在这里插入图片描述

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的代理

  1. 打开Windows的代理软件,找到监听的端口
    在这里插入图片描述

  2. 获取Windows的在局域网的ip地址:ipconfig
    在这里插入图片描述

  3. 在Ubuntu安装proxychains4:sudo apt-get install proxychains4

  4. 对proxychains4进行配置:sudo nano /etc/proxychains4.conf

# 代理链配置
strict_chain
proxy_dns 

# 默认配置
[ProxyList]
# 格式:代理类型 IP地址 端口号 [用户名] [密码]
socks5 10.129.26.111 7890

  1. 确保打开了Windows的代理软件
  2. 关闭Windows的防火墙
    在这里插入图片描述
  3. 测试
    • 不使用proxychains4时无法成功执行:
      在这里插入图片描述
    • 使用proxychains4时成功执行:
      在这里插入图片描述

11 Ubuntu安装共用的Anaconda

  1. 获取Anaconda的安装包,官网地址下载或者执行wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh
    在这里插入图片描述
  2. 通过bash指令执行.sh安装脚本sudo bash Anaconda3-2024.10-1-Linux-x86_64.sh
  3. 遇到yes/no时选择输入yes。
  4. 选择安装位置时选择一个所有用户可以访问的文件夹,这样不用修改权限,例如/opt/anaconda。
  5. 对于需要使用该conda的用户,切换到该用户下的终端,进入/opt/anaconda/bin目录,执行指令./conda init bashsource ~/.bashrc
  6. 完成,此时所有用户使用的同一个conda,互相看不见对方的虚拟环境。

12 U盘安装Windows选择安装磁盘位置时列表为空

在这里插入图片描述

  1. 首先准备Intel Rapid Storage Technology (IRST) 驱动程序:百度网盘分享链接
  2. 在启动盘中创建名为driver的文件夹,将驱动程序解压后放置在driver文件夹中:
    在这里插入图片描述
    在这里插入图片描述
  3. 再次按照正常安装流程来到选择系统安装位置的界面,点击加载驱动程序-浏览,选择放置驱动程序的driver目录即可。
  4. 等待加载完成之后即可识别到存储器。

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的探讨

  1. 不做布局修饰
<div style="background-color: wheat; height: 10rem;">
    <button>button1</button>
    <button>button2</button>
</div>

在这里插入图片描述

  1. 通过flex开启弹性布局
<div style="background-color: wheat; height: 10rem; display: flex;">
    <button>button1</button>
    <button>button2</button>
</div>

在这里插入图片描述

  1. 通过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>

在这里插入图片描述

  1. 通过align-items调整在副方向上的布局策略
<div style="background-color: wheat; height: 10rem; display: flex; flex-direction: column; align-items: center">
    <button>button1</button>
    <button>button2</button>
</div>

在这里插入图片描述

  1. 通过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)!