当使用Spring Boot连接MySQL 8时,可能会遇到“Public Key Retrieval is not allowed”错误。这是因为MySQL 8默认不允许使用未加密的连接。

  1. 修改连接字符串:在连接字符串中添加allowPublicKeyRetrieval=true,例如:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?allowPublicKeyRetrieval=true
  1. 修改MySQL配置:在MySQL配置文件中添加以下行:
[mysqld]
allow_local_infile=true

  1. 升级MySQL驱动程序:将MySQL驱动程序版本升级到8.0.11或更高版本。
  2. 开启SSL连接:如果你想使用加密连接,可以通过添加sslMode=REQUIRED选项来开启SSL连接:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?sslMode=REQUIRED

:nth-child(an+b) 这个 CSS 伪类首先找到所有当前元素的兄弟元素,然后按照位置先后顺序从 1 开始排序,选择的结果为 CSS 伪类:nth-child 括号中表达式(an+b)匹配到的元素集合(n=0,1,2,3…)。示例:

0n+3 或简单的 3 匹配第三个元素。
1n+0 或简单的 n 匹配每个元素。(兼容性提醒:在 Android 浏览器 4.3 以下的版本 n 和 1n 的匹配方式>不一致。1n 和 1n+0 是一致的,可根据喜好任选其一来使用。)
2n+0 或简单的 2n 匹配位置为 2、4、6、8…的元素(n=0 时,2n+0=0,第 0 个元素不存在,因为是从 1 >开始排序)。你可以使用关键字 even 来替换此表达式。
2n+1 匹配位置为 1、3、5、7…的元素。你可以使用关键字 odd 来替换此表达式。
3n+4 匹配位置为 4、7、10、13…的元素。
a 和 b 都必须为整数,并且元素的第一个子元素的下标为 1。换言之就是,该伪类匹配所有下标在集合 { >an + b; n = 0, 1, 2, …} 中的子元素。另外需要特别注意的是,an 必须写在 b 的前面,不能写成 b+an 的形>式。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            display: flex;

            height: 100px;
            background-color: aliceblue;
        }
        .box .box-item {
            margin: 8px;
            background-color: antiquewhite;
        }
        .box .box-item:nth-child(1) {
            flex: 1;
            background-color: blue;
        }
        .box .box-item:nth-child(2) {
            flex: 2;
            background-color: rgb(110, 219, 67);
        }
        .box .box-item:nth-child(3) {
            flex: 3;
            background-color: rgb(255, 115, 0);
        }
        .box1 {

        }
        .box1 .box1-item {
            margin-top: 8px;
            height: 30px;
            width: 300px;
            background-color: antiquewhite;
        }
        .box1 .box1-item:nth-child(2n+2) {
            background-color: aqua;
        }
        .box1 .box1-item:nth-child(2n+1) {
            background-color: rgb(21, 255, 0);
        }
    </style>
</head>
<body>
    <div class="box">
        <div class="box-item">

        </div>
        <div class="box-item">

        </div>
        <div class="box-item">

        </div>
    </div>

    <div class="box1">
        <div class="box1-item"></div>
        <div class="box1-item"></div>
        <div class="box1-item"></div>
        <div class="box1-item"></div>
        <div class="box1-item"></div> 
        <div class="box1-item"></div>
        <div class="box1-item"></div>
        <div class="box1-item"></div>
        <div class="box1-item"></div>
        <div class="box1-item"></div>
    </div>
</body>
</html>

image-1666982061714

要在nginx上配置反向代理WebSocket,需要使用proxy_pass指令,并配置WebSocket的特殊头。以下是一个示例配置:


server {
    listen 80;
    server_name example.com;

    location /ws {
        proxy_pass http://backend;
        proxy_http_version 1.1;
        proxy_set_header X-Real-IP $remote_addr;  # 获取客户端IP
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
    }
}

upstream backend {
    server 127.0.0.1:3000;
}

在这个配置中,nginx将收到的所有WebSocket连接请求代理到http://backend,它在此处定义为127.0.0.1:3000。 proxy_http_version指令设置为1.1,以确保nginx可以正确处理WebSocket。proxy_set_header指令用于配置WebSocket的特殊头,这些头包括Upgrade,Connection和Host。

请注意,这只是一个基本的配置示例,实际配置可能会因情况而异。确保你的nginx版本支持WebSocket,并在进行更改之前备份您的现有配置文件。

1. 卸载旧版本

sudo apt-get remove docker docker-engine docker.io containerd runc

2. 安装基本软件

sudo apt update 

sudo apt install apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

3. 添加Docker官方的GPG密钥并添加库

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. 安装Docker

sudo apt update 

sudo apt install docker-ce docker-ce-cli containerd.io

创建docker 用户组

sudo gpasswd -a ${USER} docker

重启docker服务

sudo systemctl restart docker

配置 Docker-compose

下载

sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

添加执行权限添加执行软链

sudo chmod +x /usr/local/bin/docker-compose

sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose