• 若依框架篇-若依集成 X-File-Storage 框架(实现图片上传阿里云 OSS 服务器)、EasyExcel 框架(实现 Excel 数据批量导入功能)

若依框架篇-若依集成 X-File-Storage 框架(实现图片上传阿里云 OSS 服务器)、EasyExcel 框架(实现 Excel 数据批量导入功能)

2025-04-24 16:17:27 1 阅读

🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍

文章目录

        1.0 实现使用 Excel 文件批量导入

        1.1 导入功能的前端具体实现

        1.2 导入功能的后端具体实现

        1.3 使用 EasyExcel 框架实现 Excel 读、写功能

        1.4 将 Easy Excel 集成到若依框架中

        2.0 阿里云 OSS 概述

        2.1 使用阿里云 OSS 具体过程

        2.2 将 X-File-Storage 集成到若依框架中


        1.0 实现使用 Excel 文件批量导入

        使用若依框架实现了 CRUD 之后,若依会自动实现导出功能:

        将当前页面所展示的信息,以 Excel 的形式导入到本地中:

        导出功能若依由若依框架实现的,对于导入功能,若依框架没有实现该功能。

若依框架实现导出功能:

        1)前端代码:

        首先定义了一个按钮,关联着 handleExport 方法:

        2)后端代码:

        在 Controller 层中,调用接口获取到 list 需要导出的数据,通过 ExcelUtil 工具类,调用该工具类的 exportExcel() 方法,来将数据进行导出。

        Sku 是一个根据业务需要生成的一个实体类:

        通过 @Excel 注解来实现实体类与 Excel 表格中的数据进行映射。

        1.1 导入功能的前端具体实现

根据业务需要实现:

        1)首先需要定义一个按钮,点击之后,弹出对话框:

      
        导入
      

        该按钮关联着 handleImport 的方法,当触发点击事件之之后,弹出对话框:

const excelOpen = ref(false);
function handleImport(){
  excelOpen.value = true;

}

        2)对话框的内容:

        根据 Element 官网参考实现文件上传功能:Upload 上传 | Element Plus

         在对话框中插入文件上传的功能:

        使用了 el-dialog 组件来创建一个对话框,用于导入数据。对话框内嵌了一个 el-upload 组件,用于文件上传。

    
    
        
          

          
            上传
          

          
        
    

对应的 JS 代码: 

const uploadRef = ref({});
function submitUpload(){
  uploadRef.value.submit();
}

标签中属性解析:

        - v-model="excelOpen": 控制对话框的显示与隐藏。
        - :action="uploadExcelUrl": 文件上传的目标 URL。
        - :headers="headers": 上传请求的头部信息。
        - :on-success="handleUploadSuccess": 文件上传成功后的回调函数。
        - :on-error="handleUploadError": 文件上传失败后的回调函数。
        - :before-upload="handleBeforeUpload": 文件上传前的钩子函数,可以用来做文件校验。
        - :limit="1": 限制一次只能上传一个文件。
        - :auto-upload="false": 禁用自动上传,需要手动触发上传。

        3)前端实现导入功能的完整代码

        基于若依框架实现的前端代码:



    导入




  
    
    
      上传
    
    
  


        1.2 导入功能的后端具体实现

        与导出 Excel 功能一样,创建了 ExcelUtil 对象,使用该对象的 importExcel() 方法,将文件流进行导入,返回的结果是一个 List 集合数据,接下来可以进行批量插入数据了。

        1.3 使用 EasyExcel 框架实现 Excel 读、写功能

        EasyExcel 官网:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 官网

        阿里巴巴开源的框架,它以使用简单、功能强大和节省内存而著称,特别适合于需要进行大量数据导入和导出的场景。

        Java 解析、生成 Excel 比较有名的框架有 Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但 POI 还是有一些缺陷,比如 07 版 Excel 解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。 easyexcel 重写了 poi 对 07 版 Excel 的解析,一个 3M 的 excel 用 POI sax 解析依然需要 100M 左右内存,改用 easyexcel 可以降低到 几M,并且再大的 excel 也不会出现内存溢出;03 版依赖 POI 的 sax 模式,在上层做了模型转换的封装,让使用者更加简单方便。

        1.4 将 Easy Excel 集成到若依框架中

        1)dkd-commonpom.xml 模块添加整合依赖:



    com.alibaba
    easyexcel
    4.0.1

        2)在 dkd-common 模块的 ExcelUtil.java 新增 easyexcel 导出导入方法:

/**
 * 对excel表单默认第一个索引名转换成list(EasyExcel)
 * 
 * @param is 输入流
 * @return 转换后集合
 */
public List importEasyExcel(InputStream is) throws Exception
{
	return EasyExcel.read(is).head(clazz).sheet().doReadSync();
}

/**
 * 对list数据源将其里面的数据导入到excel表单(EasyExcel)
 * 
 * @param list 导出数据集合
 * @param sheetName 工作表的名称
 * @return 结果
 */
public void exportEasyExcel(HttpServletResponse response, List list, String sheetName)
{
	try
	{
		EasyExcel.write(response.getOutputStream(), clazz).sheet(sheetName).doWrite(list);
	}
	catch (IOException e)
	{
		log.error("导出EasyExcel异常{}", e.getMessage());
	}
}

        3)实体类的属性上添加 @ExcelProperty 注解:

        添加完 @ExcelPropety 注解之后,实现实体类的属性与 Excel 表格字段映射。还需要在实体类上添加注解:

        - @ExcelIgnoreUnannotated// 注解表示在导出Excel时,忽略没有被任何注解标记的字段
        - @ColumnWidth(16)// 注解用于设置列的宽度
        - @HeadRowHeight(14)// 注解用于设置表头行的高度
        - @HeadFontStyle(fontHeightInPoints = 11)// 注解用于设置表头的字体样式

举个例子:

package com.dkd.manage.domain;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.dkd.common.annotation.Excel;
import com.dkd.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 商品管理对象 tb_sku
 *
 * @author itheima
 * @date 2024-07-15
 */
@ExcelIgnoreUnannotated// 注解表示在导出Excel时,忽略没有被任何注解标记的字段
@ColumnWidth(16)// 注解用于设置列的宽度
@HeadRowHeight(14)// 注解用于设置表头行的高度
@HeadFontStyle(fontHeightInPoints = 11)// 注解用于设置表头的字体样式
public class Sku extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键 */
    private Long skuId;

    /** 商品名称 */
    @Excel(name = "商品名称")
    @ExcelProperty("商品名称")
    private String skuName;

    /** 商品图片 */
    @Excel(name = "商品图片")
    @ExcelProperty("商品图片")
    private String skuImage;

    /** 品牌 */
    @Excel(name = "品牌")
    @ExcelProperty("品牌")
    private String brandName;

    /** 规格(净含量) */
    @Excel(name = "规格(净含量)")
    @ExcelProperty("规格(净含量)")
    private String unit;

    /** 商品价格 */
    @Excel(name = "商品价格")
    @ExcelProperty("商品价格")
    private Long price;

    /** 商品类型Id */
    @Excel(name = "商品类型Id")
    @ExcelProperty("商品类型Id")
    private Long classId;

    /** 是否打折促销 */
    private Integer isDiscount;

	// 其他略...
}

        完成之后,就可以使用了,通过创建 ExcelUtil 对象,调用 importEasyExcel() 方法实现导入功能,调用 exportEasyExcel() 方法实现导出功能。

举个例子:

导出结果:

        2.0 阿里云 OSS 概述

        阿里云对象存储 OSS(Object Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用 OSS,您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。

        使用了阿里云 OSS 对象存储服务之后,我们的项目当中如果涉及到文件上传这样的业务,在前端进行文件上传并请求到服务端时,在服务器本地磁盘当中就不需要再来存储文件了。我们直接将接收到的文件上传到 oss,由 oss 帮我们存储和管理,同时阿里云的 oss 存储服务还保障了我们所存储内容的安全可靠。

        2.1 使用阿里云 OSS 具体过程

        1)注册阿里云账户(注册完成后需要实名认证)

        2)注册完账号之后,就可以登录阿里云

        3)通过控制台找到对象存储 OSS 服务

        4)如果是第一次访问,还需要开通对象存储服务 OSS

        5)开通 OSS 服务之后,就可以进入到阿里云对象存储的控制台

        6)点击左侧的 "Bucket列表",创建一个Bucket

        7)点击 "AccessKey管理",进入到管理页面

        8)以管理员身份打开CMD命令行,执行如下命令,配置系统的环境变量

set OSS_ACCESS_KEY_ID=LTAI5tXXXXXXXXXXXXXXXXXXXXM8TP
set OSS_ACCESS_KEY_SECRET=UzMcJXXXXXXXXXXXXXXXXXXXXdabTNafi

        将上述的ACCESS_KEY_ID 与 ACCESS_KEY_SECRET 的值一定要替换成自己的 。

        执行如下命令,让更改生效:

setx OSS_ACCESS_KEY_ID "%OSS_ACCESS_KEY_ID%"
setx OSS_ACCESS_KEY_SECRET "%OSS_ACCESS_KEY_SECRET%"

         执行如下命令,验证环境变量是否生效:

echo %OSS_ACCESS_KEY_ID%
echo %OSS_ACCESS_KEY_SECRET%

        阿里云oss 对象存储服务的准备工作我们已经完成了,接下来我们就来完成第二步操作:参照官方所提供的sdk示例来编写入门程序。

        1)首先我们需要来打开阿里云OSS的官方文档,在官方文档中找到 SDK 的示例代码:

        2)文档阅读:

        3)参照官方提供的SDK,改造一下,即可实现文件上传功能:

package com.dkd.common.test;

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import com.aliyun.oss.model.PutObjectResult;
import java.io.FileInputStream;
import java.io.InputStream;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。
        String endpoint = "https://oss-cn-beijing.aliyuncs.com";
        // 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // 填写Bucket名称,例如examplebucket。
        String bucketName = "dkd-itheima";
        // 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。
        String objectName = "gao.png";
        // 填写本地文件的完整路径,例如D:localpathexamplefile.txt。
        // 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件流。
        String filePath= "E:	empuploadgao.png";

        // 创建OSSClient实例。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            InputStream inputStream = new FileInputStream(filePath);
            // 创建PutObjectRequest对象。
            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
            // 创建PutObject请求。
            PutObjectResult result = ossClient.putObject(putObjectRequest);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

在以上代码中,需要替换的内容为:

        - endpoint:阿里云OSS中的bucket对应的域名

        - bucketName:Bucket名称

        - objectName:对象名称,在Bucket中存储的对象的名称

        - filePath:文件路径

运行以上程序后,会把本地的文件上传到阿里云OSS服务器上。

        2.2 将 X-File-Storage 集成到若依框架中

        相比直接使用阿里云 OSS,使用 X-File-Storage 上传图片到云服务器的操作会更加容易,使用 X-File-Storage 可以简化图片上传到云服务器的过程,特别是对于那些不熟悉阿里云 OSS API 或者希望减少开发工作量的开发者来说。X-File-Storage 是一个抽象层,它封装了底层存储服务的复杂性,提供了更简单、更统一的接口。 

将 X-File-Storage 集成到若依框架中的步骤:

        1)在 dkd-common 的 pom.xml 中引入依赖:



    org.dromara.x-file-storage
    x-file-storage-spring
    2.1.0



    com.aliyun.oss
    aliyun-sdk-oss
    3.16.1

        2)在 dkd-admin 的 application.yml 配置文件中先添加以下基础配置,再添加对应平台的配置:

# 文件上传
dromara:
  x-file-storage: #文件存储配置
    default-platform: aliyun-oss-1 #默认使用的存储平台
    thumbnail-suffix: ".min.jpg" #缩略图后缀,例如【.min.jpg】【.png】
    #对应平台的配置写在这里,注意缩进要对齐
    aliyun-oss:
      - platform: aliyun-oss-1 # 存储平台标识
        enable-storage: true  # 启用存储
        access-key: ??
        secret-key: ??
        end-point: oss-cn-qingdao.aliyuncs.com
        bucket-name: itheima-007
        domain: https://itheima-007.oss-cn-qingdao.aliyuncs.com/ # 访问域名,注意“/”结尾,例如:https://abc.oss-cn-shanghai.aliyuncs.com/
        base-path: dkd-images/ # 基础路径

        3)在 dkd-admin 的启动类上加上 @EnableFileStorage 注解:

@EnableFileStorage
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
public class DkdApplication
{
    public static void main(String[] args)
    {
        // System.setProperty("spring.devtools.restart.enabled", "false");
        SpringApplication.run(DkdApplication.class, args);
        System.out.println("(♥◠‿◠)ノ゙  帝可得启动成功   ლ(´ڡ`ლ)゙");
    }
}

        4)修改若依默认上传图片代码

        找到 ruoyi-admin 模块中的 com.ruoyi.web.controller.common.CommonController 类,修改单个文件上传的方法:

@Autowired
private FileStorageService fileStorageService;//注入实列

/**
  * 通用上传请求(单个)
*/
@PostMapping("/upload")
public AjaxResult uploadFile(MultipartFile file) throws Exception {

    try {
        // 指定oss保存文件路径
        String objectName = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd")) + "/";
        // 上传图片,成功返回文件信息
        FileInfo fileInfo = fileStorageService.of(file).setPath(objectName).upload();
        // 设置返回结果
        AjaxResult ajax = AjaxResult.success();
        ajax.put("url", fileInfo.getUrl());
        ajax.put("fileName", fileInfo.getUrl());  //注意:这里的值要改为url,前端访问的地址,需要文件的地址 而不是文件名称
        ajax.put("newFileName", fileInfo.getUrl());
        ajax.put("originalFilename", file.getOriginalFilename());
        return ajax;
    } catch (Exception e) {
        return AjaxResult.error(e.getMessage());
    }
}

本文地址:https://www.vps345.com/226.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 ssh deepseek Ollama 模型联网 API CherryStudio python MCP 进程 操作系统 进程控制 Ubuntu llama 算法 opencv 自然语言处理 神经网络 语言模型 javascript 前端 chrome edge 数据库 centos oracle 关系型 安全 分布式 阿里云 网络 网络安全 网络协议 ubuntu harmonyos 华为 开发语言 typescript 计算机网络 Dell R750XS nuxt3 vue3 sql KingBase 笔记 C 环境变量 进程地址空间 银河麒麟 kylin v10 麒麟 v10 spring boot websocket docker 实时音视频 adb nginx 监控 自动化运维 pycharm 深度学习 conda pillow django fastapi flask web3.py gitlab java numpy node.js json html5 firefox android c++ c语言 经验分享 RTSP xop RTP RTSPServer 推流 视频 kvm 无桌面 命令行 react.js 前端面试题 持续部署 自动化 蓝耘科技 元生代平台工作流 ComfyUI 人工智能 zotero WebDAV 同步失败 代理模式 科技 ai 个人开发 spring IIS .net core Hosting Bundle .NET Framework vs2022 php ollama llm 智能路由器 IIS服务器 IIS性能 日志监控 react next.js 部署 部署next.js YOLO pytorch AI agent ide vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 windows tcp/ip java-ee udp 腾讯云 qt 多线程服务器 TCP服务器 qt项目 qt项目实战 qt教程 bash 小程序 YOLOv8 NPU Atlas800 A300I pro 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP macos Cursor 根服务器 安全威胁分析 vscode 1.86 后端 vscode uni-app pygame 小游戏 五子棋 宝塔面板 同步 备份 建站 目标检测 计算机视觉 web安全 安全架构 mcp mcp-proxy mcp-inspector fastapi-mcp agent sse 豆瓣 追剧助手 迅雷 nas 微信 内存 postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 僵尸进程 Dify LDAP https Docker Compose docker compose docker-compose jvm kylin tomcat aws googlecloud 服务器繁忙 备选 网站 api 调用 示例 maven intellij idea filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 http 编辑器 sqlite 华为认证 网络工程师 交换机 开源 openssl 密码学 MQTT mosquitto 消息队列 flash-attention 报错 外网访问 内网穿透 端口映射 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 android studio 交互 kubernetes jenkins 容器 云原生 ci/cd spring cloud intellij-idea kafka hibernate shell 代码调试 ipdb 统信 国产操作系统 虚拟机安装 游戏程序 ftp github git 远程工作 Reactor 设计模式 性能优化 C++ 串口服务器 apache 孤岛惊魂4 学习方法 程序人生 golang ssl JAVA Java microsoft Linux网络编程 IDEA DeepSeek-R1 API接口 爬虫 Headless Linux pdf live555 rtsp rtp visualstudio idm 银河麒麟操作系统 国产化 redis Hyper-V WinRM TrustedHosts 运维开发 eureka 嵌入式硬件 驱动开发 硬件工程 嵌入式实习 面试 jdk 架构 GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 物联网 单片机 ecmascript nextjs reactjs 医疗APP开发 app开发 机器学习 搜索引擎 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 MI300x DeepSeek mongodb Deepseek ux 多线程 svn string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap 开发环境 SSL证书 c# 能力提升 面试宝典 技术 IT信息化 创意 社区 vim Flask FastAPI Waitress Gunicorn uWSGI Uvicorn prometheus rpc 远程过程调用 Windows环境 直播推流 flutter ffmpeg 音视频 gitee 重启 排查 系统重启 日志 原因 权限 fpga开发 mysql 佛山戴尔服务器维修 佛山三水服务器维修 联想开天P90Z装win10 matlab 电脑 asi_bench mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 ecm bpm rust MCP server C/S LLM ddos 博客 AIGC AI编程 agi ansible playbook gpu算力 远程登录 telnet 华为云 Docker Hub docker pull 镜像源 daemon.json Linux 集成学习 集成测试 html FunASR ASR excel oceanbase rc.local 开机自启 systemd 麒麟 AI 数据集 网络结构图 媒体 深度优先 图论 并集查找 换根法 树上倍增 向日葵 MNN Qwen pppoe radius ESP32 arm开发 银河麒麟桌面操作系统 Kylin OS jupyter AI写作 AI作画 QQ 聊天室 safari pip Mac 系统 系统架构 ocr 前端框架 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 历史版本 下载 安装 学习 烟花代码 烟花 元旦 思科模拟器 思科 Cisco etl 大数据 远程桌面 ruoyi kind okhttp stm32 低代码 muduo 王者荣耀 鸿蒙 鸿蒙系统 其他 银河麒麟服务器操作系统 系统激活 dify 华为od OD机试真题 华为OD机试真题 服务器能耗统计 jar visual studio code selenium 测试工具 devops Radius 机器人 n8n dity make 合成模型 扩散模型 图像生成 ios EMQX 通信协议 HAProxy 弹性计算 虚拟化 KVM 计算虚拟化 弹性裸金属 程序 1024程序员节 智能音箱 智能家居 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 jmeter 软件测试 windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 chatgpt DevEco Studio HarmonyOS OpenHarmony 真机调试 系统安全 fd 文件描述符 sdkman 阻塞队列 生产者消费者模型 服务器崩坏原因 数据分析 laravel Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 vue css less XCC Lenovo postgresql grafana Kali 虚拟机 list 模拟实现 unity 游戏引擎 抗锯齿 junit 繁忙 解决办法 替代网站 汇总推荐 AI推理 CDN SEO dba 漏洞 显示管理器 lightdm gdm 负载均衡 web 相机 elasticsearch 网络穿透 云服务器 大模型 程序员 无人机 软件工程 SSH Xterminal IM即时通讯 企业微信 剪切板对通 HTML FORMAT 硬件架构 cocoapods xcode embedding sqlserver openEuler 课程设计 unity3d 监控k8s集群 集群内prometheus SenseVoice r语言 express CORS 跨域 游戏机 编程 性能分析 Netty 即时通信 NIO dns 远程连接 HTTP 服务器控制 ESP32 DeepSeek mysql离线安装 ubuntu22.04 mysql8.0 微服务 源码 毕业设计 LORA 大语言模型 NLP 反向代理 致远OA OA服务器 服务器磁盘扩容 AutoDL TRAE 考研 数据结构 HCIE 数通 minio onlyoffice 在线office proxy模式 图形化界面 实时互动 C语言 虚拟局域网 hive Hive环境搭建 hive3环境 Hive远程模式 vasp安装 webgl 查询数据库服务IP地址 SQL Server 语音识别 dubbo 中间件 可信计算技术 网络攻击模型 gateway Clion Nova ResharperC++引擎 Centos7 远程开发 显卡驱动 业界资讯 zabbix 客户端 工作流 workflow SVN Server tortoise svn 数据挖掘 数据可视化 tcpdump chrome 浏览器下载 chrome 下载安装 mac 谷歌浏览器下载 计算机 服务器主板 AI芯片 信息与通信 Linux24.04 deepin epoll yaml Ultralytics 可视化 kamailio sip VoIP 大数据平台 asm yum ui HarmonyOS Next MySql 实战案例 gradle debian etcd 数据安全 RBAC iperf3 带宽测试 回显服务器 UDP的API使用 vSphere vCenter 虚幻 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 AI大模型 大模型入门 大模型教程 ShenTong webstorm ukui 麒麟kylinos openeuler rust腐蚀 视觉检测 魔百盒刷机 移动魔百盒 机顶盒ROM .net db frp springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 springboot 升级 CVE-2024-7347 腾讯云大模型知识引擎 P2P HDLC rabbitmq ruby 需求分析 规格说明书 双系统 GRUB引导 Linux技巧 微信小程序 线程 big data Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 Linux的基础指令 飞书 deepseek r1 web3 redhat 恒源云 图像处理 3d tcp vscode1.86 1.86版本 ssh远程连接 autodl Agent IPMITOOL BMC 硬件管理 oneapi open webui IMM iphone 鲲鹏 昇腾 npu AI-native Docker Desktop 远程 命令 执行 sshpass 操作 echarts yolov8 传统数据库升级 银行 LLMs 单一职责原则 wps 安卓 make命令 makefile文件 Python 网络编程 聊天服务器 套接字 TCP Socket wireshark 移动云 云服务 镜像 rnn FTP 服务器 k8s KylinV10 麒麟操作系统 Vmware Typore 计算机外设 gitea asp.net大文件上传 asp.net大文件上传下载 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 linux安装配置 iis GCC aarch64 编译安装 HPC seatunnel navicat ROS 自动驾驶 iBMC UltraISO zookeeper nfs SSL 域名 rsyslog Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 嵌入式 linux驱动开发 WSL win11 无法解析服务器的名称或地址 交叉编译 信号处理 armbian u-boot MacOS录屏软件 Trae IDE AI 原生集成开发环境 Trae AI mamba Vmamba 开机自启动 rag ragflow ragflow 源码启动 树莓派 VNC 黑客技术 Linux环境 项目部署到linux服务器 项目部署过程 本地部署 webrtc 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 EasyConnect unix Cline Kali Linux 黑客 渗透测试 信息收集 virtualenv arm hadoop 网工 opensearch helm bcompare Beyond Compare ssrf 失效的访问控制 模拟器 教程 IMX317 MIPI H265 VCU openwrt lio-sam SLAM SSE open Euler dde 统信UOS LLM Web APP Streamlit tensorflow 缓存 bug 游戏服务器 TrinityCore 魔兽世界 cursor HiCar CarLife+ CarPlay QT RK3588 sysctl.conf vm.nr_hugepages apt 国内源 Node-Red 编程工具 流编程 数学建模 adobe elk odoo 服务器动作 Server action eclipse 环境迁移 wsl xpath定位元素 Ubuntu 24.04.1 轻量级服务器 python3.11 dash 正则表达式 群晖 文件分享 毕设 ArkUI 多端开发 智慧分发 应用生态 鸿蒙OS netty linux 命令 sed 命令 策略模式 单例模式 sentinel CPU 中兴光猫 换光猫 网络桥接 自己换光猫 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 实习 ESXi Dell HPE 联想 浪潮 ollama下载加速 微信公众平台 VMware安装mocOS VMware macOS系统安装 单元测试 功能测试 ipython 软考 gcc 换源 Debian DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 Windows 加解密 Yakit yaklang 多个客户端访问 IO多路复用 TCP相关API 温湿度数据上传到服务器 Arduino HTTP bootstrap 压力测试 金仓数据库 2025 征文 数据库平替用金仓 tailscale derp derper 中转 智能手机 矩阵 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 wsl2 bonding 链路聚合 windows日志 5G 3GPP 卫星通信 工业4.0 Minecraft 防火墙 NAT转发 NAT Server Unity Dedicated Server Host Client 无头主机 stm32项目 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK ip Linux PID selete 高级IO 微信分享 Image wxopensdk freebsd glibc npm 小智AI服务端 xiaozhi TTS 常用命令 文本命令 目录命令 thingsboard H3C iDRAC R720xd springsecurity6 oauth2 授权服务器 前后端分离 dell服务器 go css3 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 XFS xfs文件系统损坏 I_O error es Python基础 Python教程 Python技巧 iot 主板 电源 网卡 个人博客 X11 Xming 毕昇JDK 文件系统 路径解析 小艺 Pura X file server http server web server 我的世界 我的世界联机 数码 流水线 脚本式流水线 efficientVIT YOLOv8替换主干网络 TOLOv8 k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm rdp 实验 我的世界服务器搭建 半虚拟化 硬件虚拟化 Hypervisor Wi-Fi log4j Spring Security .netcore jetty undertow UOS 统信操作系统 ISO镜像作为本地源 can 线程池 云电竞 云电脑 todesk 职场和发展 VR手套 数据手套 动捕手套 动捕数据手套 VMware安装Ubuntu Ubuntu安装k8s 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 llama3 Chatglm 开源大模型 rclone AList webdav fnOS linux上传下载 NAS Termux Samba 健康医疗 互联网医院 输入法 WSL2 W5500 OLED u8g2 hugo gaussdb xss 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 js ros2 moveit 机器人运动 rustdesk chrome devtools chromedriver AI代码编辑器 ai小智 语音助手 ai小智配网 ai小智教程 智能硬件 esp32语音助手 diy语音助手 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 ArcTS 登录 ArcUI GridItem arkUI 测试用例 服务网格 istio 分布式训练 cuda docker run 数据卷挂载 交互模式 序列化反序列化 nvidia 算力 鸿蒙开发 移动开发 DBeaver 数据仓库 kerberos 语法 edge浏览器 服务器数据恢复 数据恢复 存储数据恢复 北亚数据恢复 oracle数据恢复 物联网开发 知识库 RAGFlow 本地知识库部署 DeepSeek R1 模型 clickhouse searxng ip命令 新增网卡 新增IP 启动网卡 网络药理学 生物信息学 生信 PPI String Cytoscape CytoHubba Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 社交电子 perf 技能大赛 rime 西门子PLC 通讯 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 firewall openstack Xen eNSP 网络规划 VLAN 企业网络 sequoiaDB ceph langchain 捆绑 链接 谷歌浏览器 youtube google gmail 直流充电桩 充电桩 TCP协议 IPMI linux环境变量 camera Arduino 电子信息 composer 图形渲染 产测工具框架 IMX6ULL 管理框架 PX4 黑苹果 wsgiref Web 服务器网关接口 Logstash 日志采集 skynet Nuxt.js Qwen2.5-coder 离线部署 程序员创富 nlp 开发 alias unalias 别名 milvus threejs 3D 裸金属服务器 弹性裸金属服务器 p2p cudnn prometheus数据采集 prometheus数据模型 prometheus特点 regedit 开机启动 阿里云ECS AD域 ardunio BLE 混合开发 环境安装 JDK centos-root /dev/mapper yum clean all df -h / du -sh 具身智能 强化学习 dock 加速 prompt 政务 分布式系统 监控运维 Prometheus Grafana 京东云 基础入门 nac 802.1 portal 边缘计算 本地化部署 MS Materials trea idea fast 玩机技巧 软件分享 软件图标 模拟退火算法 大模型应用 EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 code-server OpenSSH Google pay Apple pay gpt-3 文心一言 私有化 wpf 人工智能生成内容 金融 AISphereButler 网络用户购物行为分析可视化平台 大数据毕业设计 银河麒麟高级服务器 外接硬盘 Kylin flink 信息可视化 网页设计 IPv4 子网掩码 公网IP 私有IP 华为机试 SSH 密钥生成 SSH 公钥 私钥 生成 数据库系统 飞牛NAS 飞牛OS MacBook Pro rocketmq harmonyOS面试题 cnn 邮件APP 免费软件 做raid 装系统 tidb GLIBC 软件需求 remote-ssh Ubuntu Server Ubuntu 22.04.5 深度求索 私域 拓扑图 框架搭建 USB转串口 CH340 VMware创建虚拟机 代理服务器 搭建个人相关服务器 mcu sqlite3 火绒安全 VPS Windsurf 内网服务器 内网代理 内网通信 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 jina QT 5.12.12 QT开发环境 Ubuntu18.04 匿名管道 命名管道 信创 信创终端 中科方德 嵌入式系统开发 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos RustDesk自建服务器 rustdesk服务器 docker rustdesk GPU 链表 雨云 NPS NFS WebRTC gpt uniapp RAID RAID技术 磁盘 存储 wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 uv 项目部署 软件定义数据中心 sddc RTMP 应用层 粘包问题 conda配置 conda镜像源 opcua opcda KEPServer安装 大模型微调 软负载 多进程 iftop 网络流量监控 架构与原理 C# MQTTS 双向认证 emqx 远程服务 VSCode YOLOv12 AI Agent 字节智能运维 办公自动化 自动化生成 pdf教程 CentOS token sas spark HistoryServer Spark YARN jobhistory 大模型部署 ubuntu24.04.1 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 raid5数据恢复 磁盘阵列数据恢复 自定义客户端 SAS g++ g++13 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 Cookie 僵尸世界大战 游戏服务器搭建 欧标 OCPP 产品经理 IO模型 MDK 嵌入式开发工具 论文笔记 sublime text AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 lua 服务器部署ai模型 arcgis vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 Anolis nginx安装 linux插件下载 运维监控 Attention ai工具 java-rocketmq v10 软件 ldap ue4 着色器 ue5 seleium 自动化测试 anaconda 域名服务 DHCP 符号链接 配置 pyautogui 音乐库 飞牛 实用教程 GIS 遥感 WebGIS 大大通 第三代半导体 碳化硅 springcloud leetcode 推荐算法 流式接口 URL Linux find grep 串口驱动 CH341 uart 485 pyqt 代理 Kylin-Server 服务器安装 RAGFLOW RAG 检索增强生成 文档解析 大模型垂直应用 内网环境 h.264 bot Docker 网卡的名称修改 eth0 ens33 系统开发 binder 车载系统 framework 源码环境 cpp-httplib win服务器架设 windows server 状态管理的 UDP 服务器 Arduino RTOS cd 目录切换 c mariadb xrdp 技术共享 SRS 流媒体 直播 x64 SIGSEGV xmm0 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 Deepseek-R1 私有化部署 推理模型 Open WebUI 性能测试 kali 共享文件夹 雨云服务器 Ark-TS语言 嵌入式Linux IPC 崖山数据库 YashanDB 视频编解码 源码剖析 rtsp实现步骤 流媒体开发 bat 端口 查看 ss hosts EMUI 回退 降级 gnu SysBench 基准测试 mybatis firewalld midjourney deep learning docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 热榜 相差8小时 UTC 时间 远程控制 远程看看 远程协助 RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 知识图谱 crosstool-ng cmos 硬件 cpu 实时 使用 easyui 灵办AI ros llama.cpp swoole 三级等保 服务器审计日志备份 rpa FTP服务器 risc-v 迁移指南 自动化任务管理 元服务 应用上架 离线部署dify Ubuntu共享文件夹 共享目录 Linux共享文件夹 .net mvc断点续传 minicom 串口调试工具 Invalid Host allowedHosts visual studio 干货分享 黑客工具 密码爆破 yum源切换 更换国内yum源 执法记录仪 智能安全帽 smarteye 状态模式 triton 模型分析 线性代数 电商平台 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors 流量运营 服务器管理 配置教程 网站管理 压测 ECS SSH 服务 SSH Server OpenSSH Server 剧本 vr neo4j 宕机切换 服务器宕机 企业网络规划 华为eNSP trae uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 多层架构 解耦 LInux VS Code docker命令大全 transformer deekseek DOIT 四博智联 hexo PVE Linux的权限 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 AD 域管理 网站搭建 serv00 分析解读 端口测试 微信开放平台 微信公众号配置 李心怡 客户端与服务端通信 服务器配置 风扇控制软件 CentOS Stream Unity插件 信号 iventoy VmWare OpenEuler docker部署Python 磁盘监控 TrueLicense 软链接 硬链接 WebUI DeepSeek V3 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 环境配置 MacMini 迷你主机 mini Apple minecraft 宠物 免费学习 宠物领养 宠物平台 Claude Jellyfin 蓝桥杯 大模型面经 大模型学习 AnythingLLM AnythingLLM安装 UDP 基础环境 影刀 #影刀RPA# ubuntu20.04 开机黑屏 DenseNet CrewAI 超融合 DNS micropython esp32 mqtt Redis Desktop 沙盒 grub 版本升级 扩容 word 服务器时间 游戏开发 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR 多路转接 Xinference pgpool 田俊楠 带外管理 设备 PCI-Express Playwright 大模型推理 ssh远程登录 音乐服务器 Navidrome 音流 虚幻引擎 outlook ping++ DocFlow 7z ubuntu24 vivado24 av1 电视盒子 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 Erlang OTP gen_server 热代码交换 事务语义 ABAP USB网络共享 figma xshell termius iterm2 vmware 卡死 chfs ubuntu 16.04 数据库开发 database matplotlib 自动化编程 SWAT 配置文件 服务管理 网络共享 浏览器开发 AI浏览器 ssh漏洞 ssh9.9p2 CVE-2025-23419 GoogLeNet dns是什么 如何设置电脑dns dns应该如何设置 keepalived DeepSeek行业应用 Heroku 网站部署 存储维护 NetApp存储 EMC存储 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 k8s集群资源管理 云原生开发 sonoma 自动更新