当前位置: 首页 > news >正文

使用 Docker Compose 将数据版 LobeChat 服务端部署

在这里插入图片描述

LobeChat 是一个基于 TypeScript 的开源聊天机器人项目,支持本地部署和接入多个大语言模型。本文介绍如何使用 Docker Compose 将 LobeChat 服务端及其数据库部署到生产环境,让您拥有一个私有化的、可定制的 AI 聊天助手。
在这里插入图片描述

一、部署前准备

  1. 服务器: 一台拥有公网 IP 的服务器,并已安装 Docker 和 Docker Compose。

  2. 域名和 SSL 证书: 准备好以下域名及对应的 SSL 证书 (将 yourdomain.com 替换为您的实际域名)。证书名称需与 nginx.conf 文件中的配置一致,确保证书有效,以避免浏览器安全警告。

    • lobe.yourdomain.com - LobeChat 主应用
    • lobe-auth-api.yourdomain.com - Logto 认证 API
    • lobe-auth-ui.yourdomain.com - Logto 认证 UI

    如果您不打算自部署 MinIO,以下两个域名可以省略:

    • lobe-s3-api.yourdomain.com - MinIO API
    • lobe-s3-ui.yourdomain.com - MinIO UI
  3. MinIO (可选): MinIO 用于存储图片、文件等非结构化数据。您也可以使用阿里云 OSS、腾讯云 COS 等替代方案,如果选择其他方案,请参考 LobeChat 官方文档进行配置。

二、部署步骤

  1. 域名解析: 将上述域名解析到您的服务器 IP 地址。

  2. SSL 证书: 在服务器上创建 ssl 目录,并将所有域名的 SSL 证书文件 (.pem.key) 放入其中。确保文件权限正确。

  3. 配置文件: 将以下三个配置文件 (docker-compose.yml.envnginx.conf) 复制到服务器上的同一目录下。

    docker-compose.yml:

# docker-compose.yml
version: "3.9"nginx:image: nginx:latestcontainer_name: lobe-nginxports:- "80:80"- "443:443"volumes:- ./nginx.conf:/etc/nginx/nginx.conf:ro- ./ssl:/etc/nginx/ssl:rodepends_on:- lobe- logto- miniorestart: alwayspostgresql:image: pgvector/pgvector:pg16container_name: lobe-postgresvolumes:- './data:/var/lib/postgresql/data'environment:- 'POSTGRES_DB=lobe'- 'POSTGRES_PASSWORD=uWNZugjBqixf8dxC'healthcheck:test: ['CMD-SHELL', 'pg_isready -U postgres']interval: 5stimeout: 5sretries: 5restart: alwaysminio:image: minio/miniocontainer_name: lobe-miniovolumes:- './s3_data:/etc/minio/data'environment:- 'MINIO_ROOT_USER=admin'- 'MINIO_ROOT_PASSWORD=12345678'- 'MINIO_DOMAIN=lobe-s3-api.xxxxxx.com'- 'MINIO_API_CORS_ALLOW_ORIGIN=https://lobe.xxxxx.com'ports:- "9000:9000"- "9001:9001"restart: alwayscommand: server /etc/minio/data --address ":9000" --console-address ":9001"logto:image: svhd/logto:1.19.0# 或 image: svhd/logto@sha256:3368f164d9147ed74b47b718241ccd844282908245262cf87be84bbb3d6bf62fcontainer_name: lobe-logtodepends_on:postgresql:condition: service_healthyenvironment:- 'TRUST_PROXY_HEADER=1'- 'DB_URL=postgresql://postgres:uWNZugjBqixf8dxC@postgresql:5432/logto'- 'ENDPOINT=https://lobe-auth-api.xxxxxx.com'- 'ADMIN_ENDPOINT=https://lobe-auth-ui.xxxxxx.com'entrypoint: ['sh', '-c', 'npm run cli db seed -- --swe && npm start']lobe:image: lobehub/lobe-chat-databasecontainer_name: lobe-databasedepends_on:- postgresql- minio- logtoenv_file:- .envrestart: alwaysvolumes:data:driver: locals3_data:driver: local
**`.env`**:
# .env# 必填,LobeChat 域名,用于 tRPC 调用
# 请保证此域名在你的 NextAuth 鉴权服务提供商、S3 服务商的 CORS 白名单中
APP_URL=https://uiuiapi.com/# Postgres 相关,也即 DB 必需的环境变量
# 必填,用于加密敏感信息的密钥,可以使用 openssl rand -base64 32 生成
KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ=
# 必填,Postgres 数据库连接字符串,用于连接到数据库
# 格式:postgresql://username:password@host:port/dbname,如果你的 pg 实例为 Docker 容器且位于同一 docker-compose 文件中,亦可使用容器名作为 host
DATABASE_URL=postgresql://postgres:uWNZugjBqixf8dxC@postgresql:5432/lobe# NEXT_AUTH 相关,也即鉴权服务必需的环境变量
# 可以使用 auth0、Azure AD、GitHub、Authentik、Zitadel、Logto 等,如有其他接入诉求欢迎提 PR
# 目前支持的鉴权服务提供商请参考:https://lobehub.com/zh/docs/self-hosting/advanced/auth#next-auth
# 如果你有 ACCESS_CODE,请务必清空,我们以 NEXT_AUTH 作为唯一鉴权来源
# 必填,用于 NextAuth 的密钥,可以使用 openssl rand -base64 32 生成
NEXT_AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg
# 必填,指定鉴权服务提供商,这里以 Logto 为例
NEXT_AUTH_SSO_PROVIDERS=logto
# 必填,NextAuth 的 URL,用于 NextAuth 的回调
NEXTAUTH_URL=https://lobe.xxxxxxx.com/api/auth# NextAuth 鉴权服务提供商部分,以 Logto 为例
# 其他鉴权服务提供商所需的环境变量,请参考:https://lobehub.com/zh/docs/self-hosting/environment-variables/auth
LOGTO_CLIENT_ID=YOUR_LOGTO_CLIENT_ID
LOGTO_CLIENT_SECRET=YOUR_LOGTO_CLIENT_SECRET
LOGTO_ISSUER=https://lobe-auth-api.xxxxxxx.com/oidc# 代理相关,如果你需要的话(比如你使用 GitHub 作为鉴权服务提供商)
# HTTP_PROXY=http://localhost:7890
# HTTPS_PROXY=http://localhost:7890# S3 相关,也即非结构化数据(文件、图片等)存储必需的环境变量
# 这里以 MinIO 为例
# 必填,S3 的 Access Key ID,对于 MinIO 来说,直到在 MinIO UI 中手动创建之前都是无效的
S3_ACCESS_KEY_ID=YOUR_S3_ACCESS_KEY_ID
# 必填,S3 的 Secret Access Key,对于 MinIO 来说,直到在 MinIO UI 中手动创建之前都是无效的
S3_SECRET_ACCESS_KEY=YOUR_S3_SECRET_ACCESS_KEY
# 必填,S3 的 Endpoint,用于服务端/客户端连接到 S3 API
S3_ENDPOINT=https://lobe-s3-api.xxxxxxx.com
# 必填,S3 的 Bucket,直到在 MinIO UI 中手动创建之前都是无效的
S3_BUCKET=lobe
# 必填,S3 的 Public Domain,用于客户端通过公开连接访问非结构化数据
S3_PUBLIC_DOMAIN=https://lobe-s3-api.xxxxxxxx.com
# 选填,S3 的 Enable Path Style
# 对于主流 S3 Cloud 服务商,一般填 0 即可;对于自部署的 MinIO,请填 1
# 请参考:https://lobehub.com/zh/docs/self-hosting/advanced/s3#s-3-enable-path-style
S3_ENABLE_PATH_STYLE=1# 其他基础环境变量,视需求而定。注意不要有 ACCESS_CODE
# 请参考:https://lobehub.com/zh/docs/self-hosting/environment-variables/basic
# 请注意,对于服务端版本,其 API 必须支持嵌入(OpenAI text-embedding-3-small)模型,否则无法对上传文件进行处理,但你无需在 OPENAI_MODEL_LIST 中指定此模型
# OPENAI_API_KEY=sk-xxxx
# OPENAI_PROXY_URL=https://api1.uiuiapi.com/v1  #我用的是第三方需要使用openai就改成 https://api.openai.com/v1
# OPENAI_MODEL_LIST=...
**`nginx.conf`**:
# nginx.confevents {worker_connections 1024;
}http {server {listen 80;server_name lobe.xxxxxx.com;return 301 https://$server_name$request_uri;}server {listen 443 ssl;server_name lobe.lovehxy.com;ssl_certificate /etc/nginx/ssl/lobe.xxxxxx.com.pem;ssl_certificate_key /etc/nginx/ssl/lobe.xxxxxxcom.key;location / {proxy_pass http://lobe:3210;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}server {listen 80;server_name lobe-auth-ui.lovehxy.com;return 301 https://$server_name$request_uri;}server {listen 443 ssl;server_name lobe-auth-ui.xxxxxx.com;ssl_certificate /etc/nginx/ssl/lobe-auth-ui.xxxxxx.com.pem;ssl_certificate_key /etc/nginx/ssl/lobe-auth-ui.xxxxxx.com.key;location / {proxy_pass http://logto:3002;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}server {listen 80;server_name lobe-auth-api.xxxxxx.com;return 301 https://$server_name$request_uri;}server {listen 443 ssl;server_name lobe-auth-api.xxxxxx.com;ssl_certificate /etc/nginx/ssl/lobe-auth-api.xxxxxx.com.pem;ssl_certificate_key /etc/nginx/ssl/lobe-auth-api.xxxxxx.com.key;location / {proxy_pass http://logto:3001;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}server {listen 80;server_name lobe-s3-api.xxxxxx.com;return 301 https://$server_name$request_uri;}server {listen 443 ssl;server_name lobe-s3-api.xxxxxx.com;ssl_certificate /etc/nginx/ssl/lobe-s3-api.xxxxxx.com.pem;ssl_certificate_key /etc/nginx/ssl/lobe-s3-api.xxxxxx.com.key;location / {proxy_pass http://minio:9000;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}client_max_body_size 100M;}server {listen 80;server_name lobe-s3-ui.xxxxxx.com;return 301 https://$server_name$request_uri;}server {listen 443 ssl;server_name lobe-s3-ui.xxxxxx.com;ssl_certificate /etc/nginx/ssl/lobe-s3-ui.xxxxxx.com.pem;ssl_certificate_key /etc/nginx/ssl/lobe-s3-ui.xxxxxx.com.key;location / {proxy_pass http://minio:9001;proxy_set_header Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}client_max_body_size 100M;
}
  1. MinIO Bucket 策略 (minio-bucket-config.json): 创建一个名为 minio-bucket-config.json 的文件,并将以下内容复制进去,将 lobe 替换为您的 bucket 名称 (如果使用了不同的名称):
{"Statement": [{"Effect": "Allow","Principal": {"AWS": ["*"]},"Action": ["s3:GetBucketLocation"],"Resource": ["arn:aws:s3:::lobe"]},{"Effect": "Allow","Principal": {"AWS": ["*"]},"Action": ["s3:ListBucket"],"Resource": ["arn:aws:s3:::lobe"],"Condition": {"StringEquals": {"s3:prefix": ["files/*"]}}},{"Effect": "Allow","Principal": {"AWS": ["*"]},"Action": ["s3:PutObject", "s3:DeleteObject", "s3:GetObject"],"Resource": ["arn:aws:s3:::lobe/files/**"]}],"Version": "2012-10-17"
}
  1. 启动服务: 在包含配置文件的目录下执行 docker-compose up -d 启动服务。

  2. 配置 Logto:

    • 访问 https://lobe-auth-ui.yourdomain.com 并注册一个管理员账户。
    • 在 “Applications” 中创建一个 “Next.js” 应用,名称可以自定义。
    • 配置 “Redirect URI” 为 https://lobe.yourdomain.com/api/auth/callback/logto
    • 配置 “Post sign-out redirect URI” 为 https://lobe.yourdomain.com
    • 配置 “CORS allowed origins” 为 https://lobe.yourdomain.com
    • 获取生成的 “App ID” 和 “App Secret”,并填入 .env 文件中的 LOGTO_CLIENT_IDLOGTO_CLIENT_SECRET
    • 确保 .env 文件中的 LOGTO_ISSUERhttps://lobe-auth-api.yourdomain.com/oidc
    • 重启服务:docker-compose up -d
  3. 配置 MinIO:

    • 访问 https://lobe-s3-ui.yourdomain.com,使用 docker-compose.yml 中设置的 MINIO_ROOT_USERMINIO_ROOT_PASSWORD 登录。
    • 创建名为 lobe (或您在 .env 文件中 S3_BUCKET 指定的名称) 的 Bucket。
    • 选中新创建的 Bucket,点击 “Summary” -> “Access Policy”,选择 “Custom”,将 minio-bucket-config.json 文件中的内容复制粘贴进去并保存。
    • 在 “User” -> “Access Keys” 处,点击 “Create New Access Key”,无需额外修改,将生成的 “Access Key” 和 “Secret Key” 填入 .env 文件中的 S3_ACCESS_KEY_IDS3_SECRET_ACCESS_KEY
    • 重启服务:docker-compose up -d

三、访问 LobeChat

完成以上步骤后,即可访问使用 LobeChat。使用在 Logto 中注册的管理员账户登录即可开始使用。
在这里插入图片描述

四、其他说明

  • 密钥生成: 可以使用 openssl rand -base64 32 生成所需的密钥。
  • 环境变量: 请仔细检查 .env 文件中的所有环境变量,确保其值正确无误。
  • 日志查看: 可以使用 docker-compose logs -f 查看服务的运行日志,以便排查问题.
  • 数据持久化: 本配置使用了数据卷来持久化 PostgreSQL 和 MinIO 的数据,即使容器重启数据也不会丢失。

这个版本更加完整,补充了密钥生成、日志查看、数据持久化等说明,并对 Logto 和 MinIO 的配置步骤进行了更详细的描述,力求让读者能够顺利完成部署。 请务必替换所有占位符为您的实际值。

相关文章:

使用 Docker Compose 将数据版 LobeChat 服务端部署

LobeChat 是一个基于 TypeScript 的开源聊天机器人项目,支持本地部署和接入多个大语言模型。本文介绍如何使用 Docker Compose 将 LobeChat 服务端及其数据库部署到生产环境,让您拥有一个私有化的、可定制的 AI 聊天助手。 一、部署前准备 服务器&…...

python如何完成金融领域的数据分析,思路以及常见的做法是什么?

引言 在现代金融领域,数据分析已成为决策支持的重要工具。随着金融市场的复杂性和数据量的激增,传统的分析方法已无法满足需求。 Python作为一种强大的编程语言,凭借其丰富的库和工具,成为金融数据分析的首选语言之一。 本文将探讨如何利用Python进行金融数据分析,包括…...

密码管理工具实现

该文档详细描述了实现一个简单的密码管理工具的过程,工具基于PHP和MySQL构建,支持用户注册、密码存储、管理以及角色权限控制等核心功能。 系统架构设计 技术栈:PHP(后端逻辑)、MySQL(数据存储&#xff09…...

构造函数和new操作符 - 2024最新版前端秋招面试短期突击面试题【100道】

构造函数和new操作符 - 2024最新版前端秋招面试短期突击面试题【100道】 🏗️ 在JavaScript中,构造函数和new操作符是创建对象的重要方式。深入理解它们的基本概念和用法,可以帮助你更有效地使用JavaScript进行开发。以下是关于构造函数和ne…...

6.Linux按键驱动-阻塞与非阻塞

默认打开文件时候是阻塞的 当设置打开方式为非阻塞时,无数据时会返回。 当设置打开方式为阻塞时,无数据的时候会等待1.设置打开方式为非阻塞 立即返回,无法读出,返回-1 2.设置为阻塞 核心在于驱动程序中的.read函数的支持 …...

Mac打开环境变量配置文件,source ~/.zshrc无法打开问题解决

本文将会介绍,Mac如何打开zshrc环境变量配置文件。 在搭建开发环境的时候,通常我们需要配置环境变量,例如:ANDROID_HOME、nvm等。 具体的做法是把配置环境变量的命令加入到 shell 的配置文件中。如果你的 shell 是 zsh&#xff…...

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-23

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-23 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-23目录1. Advancements in Visual Language Models for Remote Sensing: Datasets, Capabilities, and Enhancement Techniques摘…...

【C#】搭建环境之CSharp+OpenCV

在我们使用C#编程中,对图片处理时会用到OpenCV库,以及其他视觉厂商提供的封装库,这里因为OpenCV是开源库,所以在VS资源里可以直接安装使用,这里简单说明一下搭建的步骤及实现效果,留存。 1. 项目创建 1.1…...

100种算法【Python版】第25篇——Bidirectional Search算法

本文目录 1 算法原理2 路径计算的算法步骤3 python代码4 算法应用1 算法原理 Bidirectional Search(双向搜索)算法是为了解决图中最短路径问题而提出的一种搜索策略,旨在提高搜索效率。该算法的核心思想是同时从起点和终点进行搜索,直到两个搜索相遇。这种方法有效地减少了…...

WebSocket与Socket

一、定义与用途 Socket Socket(套接字)是一个抽象层,用于在网络上执行进程间的通信。它为应用程序提供了发送和接收数据的机制,通过IP和端口号来标识网络中唯一的位置。Socket可以使用TCP进行面向连接的可靠通信,也可以…...

Python 3 维护有序列表 bisect

在Python 3中,bisect模块提供了用于维护有序列表的函数,主要用于在有序序列中进行二分查找以及插入操作,以下是其常见用法的介绍: 1. 导入模块 首先需要导入bisect模块: import bisect2. 主要函数及用法 bisect.bi…...

vue版本太低无法执行vue ui命令

连接 ui和create目前都只支持3.0以后得版本才能使用 https://blog.csdn.net/m0_67318913/article/details/136775252?utm_mediumdistribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-136775252-blog-121204604.235v43pc_blog_bottom_relevance…...

数据结构 之 二叉树的遍历------先根遍历(五)

提示:本篇章主要讲解数据结构中树的相关知识。 文章目录 二叉树的遍历为什么要提出这么多遍历方法?先根遍历二叉树(TLR)先根遍历二叉树的递归算法(重点)先根遍历二叉树的非递归算法(了解,但是得…...

Xss_less靶场攻略(1-18)

xss-lab-less1 ur特殊字符转义 存在url中 转义符为 %2B& 转义符为 %26空格 转义符为 或 %20/ 转义符为 %2F? 转义符为 %3F% 转义符为 %25#转义符为 %23 转义符为 %3Dimg 标签懒加载 在XSS攻击中,img标签的src属性是一个常见的攻击向量,因为它可以…...

【AI语音克隆整合包及教程】声临其境,让想象成为现实——第二代GPT-SoVITS引领语音克隆新时代!

随着人工智能技术的飞速发展,曾经只能在科幻小说中出现的场景逐渐走进了我们的日常生活。其中,语音克隆技术以其独特魅力,成为了人们关注的焦点。GPT-SoVITS作为一款前沿的语音克隆工具,由RVC变声器创始人“花儿不哭”与AI音色转换…...

echarts属性之dataZoom

dataZoom-slider 滑动条型数据区域缩放组件(dataZoomInside) 滑动条型数据区域缩放组件提供了数据缩略图显示,缩放,刷选,拖拽,点击快速定位等数据筛选的功能。下图显示了该组件可交互部分 所有属性 data…...

SQLite 语法

SQLite 语法 SQLite 是一种轻量级的数据库管理系统,它遵循 SQL(结构化查询语言)标准。SQLite 的语法相对简单,易于学习和使用。本文将详细介绍 SQLite 的基本语法,包括数据定义语言(DDL)、数据…...

逗号运算符应用举例

在main.cpp里输入程序如下&#xff1a; #include <iostream> //使能cin(),cout(); #include <iomanip> //使能setbase(),setfill(),setw(),setprecision(),setiosflags()和resetiosflags(); //setbase( char x )是设置输出数字的基数,如输出进制数则用set…...

Android 玩机知识储备

基础知识 安卓刷机&#xff1a;https://post.smzdm.com/p/724098/安装分区&#xff08;视频&#xff09;: https://www.bilibili.com/video/BV1BY4y1H7Mc/安卓分区&#xff08;文章&#xff09;: https://www.cnblogs.com/unixcs/p/16398969.html开机过程&#xff1a;https://…...

MyBatis 学习记录(六)之逆向工程

MyBatis 学习记录&#xff08;六&#xff09; MyBatis的逆向工程1、创建逆向工程添加依赖和插件创建逆向工程的配置文件执行MBG插件的generate目标最终生成的效果 2、QBC查询 MyBatis的逆向工程 **正向工程&#xff1a;**先创建Java实体类&#xff0c;由框架负责根据实体类生成…...

深度了解flink(七) JobManager(1) 组件启动流程分析

前言 JobManager是Flink的核心进程&#xff0c;主要负责Flink集群的启动和初始化&#xff0c;包含多个重要的组件(JboMaster&#xff0c;Dispatcher&#xff0c;WebEndpoint等)&#xff0c;本篇文章会基于源码分析JobManagr的启动流程&#xff0c;对其各个组件进行介绍&#x…...

PostgreSQL 约束

PostgreSQL 约束 介绍 PostgreSQL 是一种功能强大的开源对象关系数据库系统&#xff0c;它提供了多种约束来确保数据的完整性和一致性。约束是数据库规则&#xff0c;用于限制表中数据的类型和操作。在 PostgreSQL 中&#xff0c;约束可以分为几种类型&#xff0c;包括主键约…...

【Redis】

1、Redis 概述 远程字典服务器&#xff08;Remote Dictionary Server&#xff0c;Redis)&#xff1a;一个开源的、高性能的、轻量级、使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库&#xff0c;通过提供多种键值数据类型来试音不同场景下的缓…...

大厂面试真题-MVCC有哪些不好

MVCC&#xff08;Multi-Version Concurrency Control&#xff0c;多版本并发控制&#xff09;虽然具有提高数据库并发性能、避免脏读等优势&#xff0c;但也存在一些缺点。以下是对MVCC缺点的详细归纳&#xff1a; 一、存储开销增加 MVCC需要为每个数据行存储多个版本&#x…...

一篇教你多排轮播效果

多排轮播 提示&#xff1a;demo案例 效果看看把 这些都是可以单独左右滑动的 文章目录 多排轮播前言一、上才艺总结 前言 今天想着想着 看着别人这样 哎还挺好看&#xff0c;就自己弄了 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、上才艺 &…...

安全警告您正在访问危险网站怎么关闭

在上网时&#xff0c;很多人可能遇到过“安全警告&#xff1a;您正在访问危险网站”的提示。这类警告通常由浏览器或安全软件自动弹出&#xff0c;旨在保护用户免受钓鱼网站、恶意软件等潜在安全威胁的侵害。这篇文章将带您了解这种安全警告的来源、关闭提示的步骤以及应采取的…...

群控系统服务端开发模式-应用开发-业务架构逻辑开发第一轮测试

整个系统的第一个层次已经开发完毕&#xff0c;已经有简单的中控&#xff0c;登录、退出、延迟登录时长、黑名单、数据层封装、验证层封装、RSA加解密、Redis等功能&#xff0c;还缺获取个人、角色按钮权限、角色菜单权限功能。角色按钮权限以及角色菜单权限等明后天开发&#…...

git 怎么保留某个文件夹忽略其下面的所有文件?

在 Git 中&#xff0c;如果你想要保留某个文件夹&#xff08;比如 folder/&#xff09;但忽略其下面的所有文件&#xff0c;可以使用 .gitignore 文件来实现。需要注意的是&#xff0c;Git 不会自动创建空目录。因此&#xff0c;为了让 Git 记录这个空目录&#xff0c;你需要在…...

Linux Shell 实现一键部署mariadb11.6

mariadb MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius主导开发…...

Servlet 3.0 注解开发

文章目录 Servlet3.0注解开发修改idea创建注解的servlet模板内容讲解 关于servlet3.0注解开发的疑问_配置路径省略了属性urlPatterns内容讲解内容小结 Servlet3.0注解开发 【1】问题 说明&#xff1a;之前我们都是使用web.xml进行servlet映射路径的配置。这样配置的弊端&…...

哪个cms可以做交友网站/网站秒收录

键盘操作 wasd q e f z c alt 蓝图 delay 延迟 加法减法乘法 / 除法 append 字符串加字符串 buildstring 类型强转 创建对象的应用 选择场景物体->场景蓝图右键创建引用 branch 类似if else doonece 只能触发一次 don 触发n次 for循环&#xff08;n次&…...

网站浏览图片怎么做/关键词查询的分析网站

Lazarus crack,功能丰富的 Delphi 开发环境 Lazarus为开发人员提供了一个功能丰富的 Delphi 开发环境&#xff0c;使他们能够创建功能齐全的跨平台应用程序&#xff0c;专为个人和商业用途而设计。 Lazarus 项目拥有超过 15 年的历史&#xff0c;包括一个用于 Free Pascal 的综…...

网站建设毕业答辩ppt/如何创建网站平台

背景 项目中使用到List求交集&#xff0c;很容易想到collecion.retainAll()方法&#xff0c;但是在数据量比较大时&#xff0c;这个方法效率并不高。本文研究了几种常用的方法&#xff0c;以供大家参考。 方法 【首先】 梳理下思路&#xff0c;List去重一般有几种方法。 『…...

企业靠网站接单/佛山关键词排名效果

由于项目需求需要做一个报表&#xff0c;选择FusionCharts作为工具使用。由于以 前没有接触过报表&#xff0c;网上也没有比较详细的fusionCharts教程&#xff0c;所以决定好好研究FusionCharts&#xff0c;同时做一个比较简单的教程提供参考。 由于能力有限(应届毕业生的菜鸟而…...

网站开发定制/seo软件全套

作业要求一 提交截图&#xff1a; 6-7&#xff1a; 6-8&#xff1a; 6-9&#xff1a; 7-1&#xff1a; 7-2&#xff1a; 7-3: 7-4&#xff1a; 7-5&#xff1a; 作业要求二 题目6-7删除字符中数字字符 1、设计思路&#xff1a; &#xff08;1&#xff09;第一步&#xff1a;本题…...

河源建设用地竞拍网站/百度最新秒收录方法2023

一&#xff0c;Activity的主要作用 Activity位于src目录下面&#xff0c;创建的Activity继承Activity类&#xff0c;并且要重写onCreate方法。可以把Activity理解成.net里面的Form,只不过.net里面的Form上面的控件是可见的&#xff0c;是我们托拉拽上去的&#xff0c;而Activit…...