站长信息
jeffery.xu
jeffery.xu

软件工程师

欢迎访问我的个人笔记网站!我是一名热爱技术的开发者,专注于Web开发和技术分享。

811495111@qq.com
18521510875
筛选

个人笔记

Docker Compose 发布完整流程
人工智能学习

1. 本地构建并打包镜像

cd c:\Users\jeffery\Documents\GitHub\Diary

# 构建镜像
docker build -t diary-website:latest .

# 打包
docker save diary-website:latest -o diary-website.tar

2. 上传到服务器

scp diary-website.tar ubuntu@106.54.42.242:/home/ubuntu/

scp docker-compose.yml ubuntu@106.54.42.242:/home/ubuntu/

3. 服务器加载并启动

# 加载镜像
docker load -i diary-website.tar

sudo docker stop diary-website
sudo docker rm diary-website

# 启动容器 docker-compose up -d # 查看状态 docker-compose ps
 
MiniMax MCP Server 配置教程
人工智能学习
# MiniMax MCP Server 配置教程

本教程将指导你如何在 Cline 中配置 MiniMax MCP Server,让 AI 能够使用 MiniMax 的能力(如图片理解、代码辅助等)。

## 前置要求

1. **Cline 扩展** - 已安装 Cline (Claude Dev) 扩展
2. **MiniMax API Key** - 需要从 [MiniMax 开放平台](https://platform.minimaxi.com) 获取
3. **uvx 工具** - 需要安装 uvx (通常随 uv 一起安装)

## 配置步骤

### 步骤 1: 获取 MiniMax API Key

1. 访问 [MiniMax 开放平台](https://platform.minimaxi.com)
2. 注册/登录账号
3. 在控制台创建 API Key
4. 复制保存好你的 API Key(注意保密)

### 步骤 2: 编辑 MCP 配置文件

Cline 的 MCP 配置文件位于:
```
C:\Users\【你的用户名】\AppData\Roaming\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
```

用文本编辑器打开该文件,添加以下内容:

```json
{
  "mcpServers": {
    "MiniMax": {
      "command": "C:\\Users\\【你的用户名】\\.local\\bin\\uvx.exe",
      "args": [
        "minimax-coding-plan-mcp"
      ],
      "env": {
        "MINIMAX_API_KEY": "你的API Key填在这里",
        "MINIMAX_MCP_BASE_PATH": "C:\\Users\\【你的用户名】\\.uvx\\minimax-coding-plan-mcp",
        "MINIMAX_API_HOST": "https://api.minimaxi.com",
        "MINIMAX_API_RESOURCE_MODE": "url"
      },
      "autoApprove": [
        "understand_image"
      ]
    }
  }
}
```

### 步骤 3: 重启 Cline

修改配置后,需要重启 Cline 使配置生效:
1. 关闭 VS Code
2. 重新打开 VS Code

或者在 Cline 设置中刷新 MCP Server 连接。

## 配置说明

| 配置项 | 说明 |
|--------|------|
| `command` | 执行命令的路径 |
| `args` | 传递给命令的参数 |
| `env.MINIMAX_API_KEY` | 你的 MiniMax API Key |
| `env.MINIMAX_API_HOST` | API 服务器地址 |
| `autoApprove` | 自动批准的工具列表 |

## 可用功能

配置完成后,你可以使用以下功能:

### 1. 图片理解 (understand_image)
- 分析图片内容
- 提取图片中的文字信息
- 识别图表、数据等

**示例用法:**
```
"请分析这张图片的内容"
"图片中有什么文字信息?"
```

### 2. 其他能力
根据 `minimax-coding-plan-mcp` 的实现,还可能支持:
- 文本生成
- 代码辅助
- 对话交互

## 常见问题

### Q: 为什么 MCP Server 显示未连接?
A: 检查以下几点:
1. uvx 是否正确安装(尝试运行 `uvx --version`)
2. API Key 是否正确
3. 网络是否能访问 api.minimaxi.com

### Q: 如何更新 API Key?
A: 直接修改配置文件中的 `MINIMAX_API_KEY` 值,然后重启 Cline。

### Q: 可以同时使用多个 MCP Server 吗?
A: 可以,在 `mcpServers` 对象中添加多个 Server 配置即可。

## 配置文件位置汇总

- **Windows**: `%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json`
- **Mac**: `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json`

## 安全注意事项

1. **不要分享你的 API Key** - 这是你的私人凭证
2. **不要将配置文件提交到 Git** - 建议将 API Key 添加到环境变量
3. **定期检查使用量** - 在 MiniMax 控制台查看 API 调用统计

---

*配置教程创建时间: 2026-03-16*
删除 dangling 镜像(无标签的镜像)
人工智能学习

## 删除 dangling 镜像(无标签的镜像)

那个 `<none>` 的是"悬空镜像",是旧版本残留,可以删除。

---

### 方法一:删除指定ID的镜像

```bash
sudo docker rmi cd9d58ad8338
```

---

### 方法二:删除所有悬空镜像

```bash
sudo docker image prune
```

---

### 方法三:一次性清理

```bash
# 删除所有未使用的镜像
sudo docker image prune -a
```

---

## 解释

| 状态 | 说明 |
|------|------|
| `diary-website latest` | ✅ 正在使用的镜像 |
| `<none>` | ❌ 悬空镜像(旧版本残留,可以删除) |

删除后不会影响网站运行,放心删除!

Ubuntu Docker安装完整指南 📦
人工智能学习

## Ubuntu Docker安装完整指南 📦

---

### 方法一:一键安装(推荐,国内服务器)

```bash
# 使用阿里云镜像安装(国内服务器首选)
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
```

---

### 方法二:手动安装(Ubuntu 24.04/22.04/20.04)

#### 1. 更新系统
```bash
sudo apt update && sudo apt upgrade -y
```

#### 2. 安装依赖
```bash
sudo apt install -y ca-certificates curl gnupg lsb-release
```

#### 3. 添加Docker官方GPG密钥
```bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
```

#### 4. 添加Docker仓库
```bash
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

#### 5. 安装Docker
```bash
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

---

### 启动Docker

```bash
# 启动Docker
sudo systemctl start docker

# 设置开机自启
sudo systemctl enable docker

# 验证安装
docker --version
```

---

### 常见问题解决

#### 问题1:权限问题
```bash
# 将当前用户加入docker组
sudo usermod -aG docker $USER

# 重新登录后生效,或执行
newgrp docker
```

#### 问题2:临时解决方案(每次命令前加sudo)
```bash
# 修改socket权限(不推荐生产环境)
sudo chmod 666 /var/run/docker.sock
```

---

### 验证Docker

```bash
# 查看Docker版本
docker --version

# 运行测试容器
docker run hello-world

# 查看运行中的容器
docker ps
```

---

### Docker常用命令

| 命令 | 说明 |
|------|------|
| `docker ps` | 查看运行中的容器 |
| `docker ps -a` | 查看所有容器 |
| `docker stop 容器名` | 停止容器 |
| `docker rm 容器名` | 删除容器 |
| `docker images` | 查看镜像列表 |
| `docker rmi 镜像名` | 删除镜像 |
| `docker logs 容器名` | 查看容器日志 |

---

### 完整流程

```bash
# 1. 一键安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 2. 启动
sudo systemctl start docker
sudo systemctl enable docker

# 3. 验证
docker --version
```

安装完成后就可以部署您的网站了!

Docker SCP部署完整流程 📦
人工智能学习

## Docker SCP部署完整流程 📦

---

### 一、本地操作(Windows)

#### 1. 构建Docker镜像
```powershell
cd c:\Users\jeff\Documents\GitHub\Diary
docker build -t diary-website .
```

#### 2. 导出镜像为tar文件
```powershell
docker save -o diary-website.tar diary-website:latest
```

#### 3. 传输到服务器
```powershell
scp diary-website.tar ubuntu@106.54.42.242:/home/ubuntu/
```
> 第一次会提示输入yes确认,然后输入服务器密码

---

### 二、服务器操作(腾讯云Ubuntu)

#### 1. 加载镜像
```bash
docker load -i diary-website.tar
```

#### 2. 停止并删除旧容器(如有)
```bash
sudo docker stop diary-website
sudo docker rm diary-website
```

#### 3. 运行新容器
```bash
sudo docker run -d -p 80:80 --name diary-website diary-website
```

#### 4. 验证运行状态
```bash
sudo docker ps
```

---

### 三、完整命令汇总

**本地:**
```powershell
# 构建 → 导出 → 传输
cd c:\Users\jeff\Documents\GitHub\Diary
docker build -t diary-website .
docker save -o diary-website.tar diary-website:latest
scp diary-website.tar ubuntu@106.54.42.242:/home/ubuntu/
```

**服务器:**
```bash
# 加载 → 重启
docker load -i diary-website.tar
sudo docker stop diary-website
sudo docker rm diary-website
sudo docker run -d -p 80:80 --name diary-website diary-website
```

---

### 四、注意事项

| 项目 | 说明 |
|------|------|
| 端口 | 腾讯云安全组需开放80端口 |
| 镜像大小 | 约390MB |
| 首次SSH | 输入yes确认服务器指纹 |
| Docker权限 | 使用sudo执行docker命令 |

---

### 五、访问网站

```
http://106.54.42.242
```

---

需要我帮您执行这些命令吗?

腾讯云服务器安装 XFCE 桌面完整指南
人工智能学习

# 腾讯云服务器安装 XFCE 桌面完整指南

## 一、环境要求
- 服务器:腾讯云 Ubuntu 20.04/22.04
- 网络:已开放 5901 端口(安全组)

---

## 二、安装步骤

### 1. 更新系统
```bash
sudo apt update && sudo apt upgrade -y
```

### 2. 安装 XFCE 桌面环境
```bash
sudo apt install xfce4 xfce4-goodies dbus-x11 -y
```

### 3. 安装 TigerVNC
```bash
sudo apt install tigervnc-standalone-server tigervnc-common -y
```

### 4. 创建普通用户(可选,推荐使用非 root 用户)
```bash
sudo adduser ubuntu
```

### 5. 切换到目标用户并配置
```bash
su - ubuntu
vncpasswd          # 设置 VNC 密码
touch ~/.Xresources
```

### 6. 创建 xstartup 启动脚本
```bash
cat > ~/.vnc/xstartup << 'EOF'
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
unset XDG_RUNTIME_DIR
unset XDG_SESSION_DIR
export XKL_XMODMAP_DISABLE=1
export XDG_CURRENT_DESKTOP=XFCE
export XDG_SESSION_TYPE=x11
export DISPLAY=:1
xrdb ~/.Xresources
xsetroot -solid grey
/usr/bin/startxfce4
EOF

chmod +x ~/.vnc/xstartup
```

### 7. 测试启动 VNC
```bash
vncserver -localhost no -geometry 1920x1080 :1
```

### 8. 配置腾讯云安全组
在腾讯云控制台 → 安全组 → 添加入站规则:
- 协议:TCP
- 端口:5901
- 来源:0.0.0.0/0

---

## 三、配置开机自启(推荐)

### 创建 systemd 服务
```bash
sudo tee /etc/systemd/system/vnc.service << 'EOF'
[Unit]
Description=VNC Server
After=network.target

[Service]
Type=forking
User=ubuntu
ExecStart=/usr/bin/vncserver -localhost no -geometry 1920x1080 :1
ExecStop=/usr/bin/vncserver -kill :1
WorkingDirectory=/home/ubuntu

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable vnc
sudo systemctl start vnc
```

---

## 四、连接方式

1. 下载 VNC 客户端(TigerVNC Viewer)
2. 连接地址:`服务器公网IP:5901`
3. 输入 VNC 密码

---

## 五、常见问题排查

| 问题 | 解决方法 |
|------|----------|
| 连接不上 | 检查腾讯云安全组是否开放 5901 端口 |
| 黑屏 | 检查 xstartup 脚本是否正确,查看日志 `cat ~/.vnc/*.log` |
| 端口被占用 | `vncserver -kill :1` 停止后重新启动 |
| 服务启动失败 | `systemctl status vnc.service` 查看错误 |

---

## 六、日常使用

```bash
# 手动启动
vncserver -localhost no -geometry 1920x1080 :1

# 手动停止
vncserver -kill :1

# 查看状态
vncserver -list
systemctl status vnc
```

 

ping端口
编程技巧

 telnet 127.0.0.1 6379

telnet功能需要在控制面板,程序与功能中勾选出来,同IIS

@Bean注解详解
编程技巧

@Bean注解是Spring框架中的核心注解,用于将方法返回的对象注册为Spring容器管理的Bean。


@Bean的核心作用
1. Bean注册


将方法返回的对象注册到Spring的IoC容器中
成为Spring管理的组件,可以被依赖注入
2. 生命周期管理


Spring负责Bean的创建、初始化和销毁
默认为单例模式(Singleton)
3. 依赖注入
可以在任何Spring管理的类中通过@Autowired注入使用

@Bean
public BCryptPasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}

执行过程:
Spring启动时扫描到这个方法
调用方法创建BCryptPasswordEncoder实例
将实例注册到容器中,Bean名称为passwordEncoder
全应用共享这一个实例

常见的Bean作用域
singleton(默认):全局单例
prototype:每次注入创建新实例
request:每个HTTP请求一个实例
session:每个HTTP会话一个实例

@Bean本质上是告诉Spring:"这个方法返回的对象请帮我管理,其他地方需要时直接注入给它们"。
Mysql强行清空有外键的表
编程技巧
SET FOREIGN_KEY_CHECKS = 0;
TRUNCATE TABLE users;
初步pom配置
编程技巧
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.mobizone</groupId>
    <artifactId>kb</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>kb</name>
    <description>kb</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>24</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>
    <dependencies>
    <!--    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>-->
<!--        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
<!--        <dependency>-->
<!--            <groupId>com.mysql</groupId>-->
<!--            <artifactId>mysql-connector-j</artifactId>-->
<!--            <scope>runtime</scope>-->
<!--        </dependency>-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>3.0.5</version>
        </dependency>
        <!-- JWT -->
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-api</artifactId>
            <version>0.11.5</version>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-impl</artifactId>
            <version>0.11.5</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt-jackson</artifactId>
            <version>0.11.5</version>
            <scope>runtime</scope>
        </dependency>
        <!-- Lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.38</version>
            <optional>true</optional>
        </dependency>
        <!-- Swagger (springdoc-openapi) -->
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

总结几个问题
1. springboot 3.5.4  Lombok要版本高
2. mybatis 版本要新
3. 其他的暂时没碰到问题