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

WebSocket简单介绍 并接入deepseek

目录

      • 什么是 WebSocket?
        • 工作原理:
      • 为什么需要 WebSocket?
      • WebSocket 的优势
      • HTTP 和 WebSocket 的区别
      • WebSocket 的劣势
      • WebSocket 的应用场景
      • WebSocket 握手过程
        • 1. 客户端发起握手请求
        • 2. 服务器响应握手请求
        • 3. 建立连接
      • WebSocket 事件处理
      • WebSocket 心跳机制
      • 1. 配置 DeepSeek 后端 WebSocket 服务器
        • 步骤 1:安装 WebSocket 库
        • 步骤 2:创建 WebSocket 服务器
        • 步骤 3:启动 WebSocket 服务
      • 2. 配置前端 WebSocket 客户端
        • 步骤 1:前端 WebSocket 连接
        • 步骤 2:前端处理消息并与 DeepSeek 交互
      • 3. 连接断开和错误处理
        • 步骤 1:处理 WebSocket 连接断开
        • 步骤 2:后端关闭连接
      • 4. 部署和生产环境配置
        • 步骤 1:使用 WSS(WebSocket Secure)
        • 步骤 2:负载均衡与高并发
      • 5. 例图和示意
      • 总结

什么是 WebSocket?

WebSocket 是一种在单个 TCP 连接 上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。相较于传统的 HTTP 协议,WebSocket 提供了持久的连接和低延迟的双向通信,这对于许多实时应用来说非常有用。

工作原理:
  1. 一次握手:浏览器与服务器通过 HTTP 协议发起 WebSocket 握手请求,经过升级,连接切换为 WebSocket。
  2. 数据交换:一旦连接建立,客户端与服务器可以双向实时传输数据。
  3. 持久连接:WebSocket 连接会一直保持,直到客户端或服务器主动关闭。

为什么需要 WebSocket?

HTTP 协议 是基于 请求-响应模式 的,它适合静态页面的交互,但在实时通信方面存在一些局限性,具体包括:

  • 单向通信:客户端只能发起请求,服务器不能主动推送数据。
  • 高延迟:为了获取最新数据,客户端需不断轮询服务器,这增加了延迟。
  • 资源浪费:轮询会产生大量的无效请求,消耗带宽和服务器资源。

WebSocket 的出现弥补了这些不足,它解决了 HTTP 在实时通信中的局限性,具有以下优势:


WebSocket 的优势

  1. 全双工通信:WebSocket 支持双向通信,客户端和服务器可以在一个连接上同时发送和接收消息。
  2. 长连接:WebSocket 建立连接后会保持打开,客户端和服务器可以持续通信,不需要频繁建立连接。
  3. 低延迟:WebSocket 的延迟很低,因为它不需要重新建立连接,只需要维持一次握手。
  4. 较少的网络开销:WebSocket 的头部信息非常小,避免了 HTTP 请求中的冗余头部信息。
  5. 实时功能:WebSocket 支持即时消息推送、实时互动(例如在线聊天)等实时应用。
  6. 二进制数据支持:WebSocket 不仅可以传输文本数据,还支持传输二进制数据(如图像、音频等)。
  7. 跨平台支持:WebSocket 是一个标准协议,可以广泛应用于各种语言和平台。
  8. 安全性:WebSocket 可以通过 WSS(WebSocket Secure)加密协议保障数据传输的安全性。

HTTP 和 WebSocket 的区别

特点WebSocketHTTP
通信方式双向通信单向请求/响应
连接类型长连接短连接
实时性中等(轮询增加延迟)
效率高,数据传输轻量较高,传输开销大
适用场景实时推送、聊天、游戏、物联网等静态内容加载、API 调用

WebSocket 的劣势

尽管 WebSocket 优势明显,但也存在一些劣势和挑战:

  1. 复杂性较高:WebSocket 协议相比 HTTP 更加复杂,特别是需要处理双向通信和连接生命周期。
  2. 资源消耗:WebSocket 长连接需要服务器为每个连接维持资源,可能导致高并发时的性能问题。
  3. 安全性问题
    • WebSocket 连接需要额外的身份验证机制。
    • 如果没有加密(WS 而非 WSS),连接可能被劫持。
    • WebSocket 连接也可能面临 DDoS 攻击。
  4. 协议兼容性:某些技术栈的版本不兼容,可能导致 WebSocket 无法正常工作。

WebSocket 的应用场景

  1. 实时聊天:适用于即时通讯应用,可以快速、实时地交换消息。
  2. 实时协作:用于文档协作、白板绘画等实时更新的场景。
  3. 实时数据推送:例如股票行情、实时新闻推送等应用。
  4. 多人在线游戏:WebSocket 可用于实时传输游戏状态和玩家行为。
  5. 在线客服:客户和客服可以实时交流,避免长时间等待。

WebSocket 握手过程

WebSocket 握手是客户端和服务器之间建立 WebSocket 连接的关键步骤,分为以下几个过程:

1. 客户端发起握手请求

客户端通过 HTTP 协议向服务器发送 WebSocket 握手请求。请求头包括:

  • Upgrade: websocket
  • Connection: Upgrade
  • Sec-WebSocket-Key: <Base64编码的随机字符串>
  • Sec-WebSocket-Version: 13
  • Origin: <请求来源>
2. 服务器响应握手请求

如果服务器支持 WebSocket 协议并同意连接升级,会返回 HTTP 101 状态码:

  • HTTP/1.1 101 Switching Protocols
  • Upgrade: websocket
  • Connection: Upgrade
  • Sec-WebSocket-Accept: <服务器生成的加密字符串>
3. 建立连接

客户端确认响应后,WebSocket 连接成功建立,双方可以进行双向通信。


WebSocket 事件处理

WebSocket 提供了几个重要的事件,用于处理连接的生命周期和数据交换:

  1. onopen:连接成功时触发。
    socket.onopen = function(event) {console.log('连接已建立');
    };
    
  2. onmessage:接收到服务器的消息时触发。
    socket.onmessage = function(event) {console.log('收到消息:', event.data);
    };
    
  3. onclose:连接关闭时触发。
    socket.onclose = function(event) {console.log('连接已关闭');
    };
    
  4. onerror:连接发生错误时触发。
    socket.onerror = function(event) {console.error('发生错误:', event);
    };
    

WebSocket 心跳机制

WebSocket 心跳机制用于保持连接活跃,防止连接因长时间无数据传输而被关闭。常见实现方式是客户端或服务器定期发送心跳包(例如 "ping"),对方接收到后回复 "pong",以此来确认连接的有效性。

// 客户端定期发送心跳包
setInterval(() => {socket.send("ping");
}, 30000); // 每 30 秒发送一次

1. 配置 DeepSeek 后端 WebSocket 服务器

步骤 1:安装 WebSocket 库

首先,如果 DeepSeek 的后端是基于 Node.js,那么你需要安装 WebSocket 库来处理 WebSocket 连接。使用 npm 安装 ws

npm install ws
步骤 2:创建 WebSocket 服务器

在 Node.js 中,使用 ws 库创建一个 WebSocket 服务器,并且在用户连接时监听 WebSocket 的消息和数据。

const WebSocket = require('ws');  // 引入 WebSocket 库// 创建一个 WebSocket 服务器,监听 8080 端口
const wss = new WebSocket.Server({ port: 8080 });wss.on('connection', (ws) => {console.log('客户端已连接');// 向客户端发送一个初始消息ws.send(JSON.stringify({ message: '连接成功' }));// 监听客户端发送的消息ws.on('message', (message) => {console.log('收到消息:', message);// 在此处理消息,例如 DeepSeek 进行图像分析的请求const response = processMessage(message);ws.send(JSON.stringify(response));});// 处理 WebSocket 连接关闭事件ws.on('close', () => {console.log('连接关闭');});
});// 用来处理消息的函数(根据业务逻辑来处理)
function processMessage(message) {// 这里可以调用 DeepSeek 模型进行处理// 假设 message 是图像路径,返回处理结果return { response: '已处理', data: '预测结果' };
}
步骤 3:启动 WebSocket 服务

通过运行以下命令启动 WebSocket 服务器:

node server.js

2. 配置前端 WebSocket 客户端

步骤 1:前端 WebSocket 连接

在前端使用浏览器的 WebSocket API 来与后端建立连接。以下是一个简单的 WebSocket 客户端代码:

// 创建 WebSocket 客户端并连接到后端服务器
const socket = new WebSocket('ws://localhost:8080');  // 后端 WebSocket 地址// 连接成功时的回调
socket.onopen = () => {console.log('连接成功');// 发送消息到后端socket.send(JSON.stringify({ action: 'hello', data: '请求数据' }));
};// 接收来自后端的消息
socket.onmessage = (event) => {const data = JSON.parse(event.data);console.log('收到服务器消息:', data);
};// 连接关闭时的回调
socket.onclose = () => {console.log('连接关闭');
};// 错误处理
socket.onerror = (error) => {console.error('WebSocket 错误:', error);
};
步骤 2:前端处理消息并与 DeepSeek 交互

根据业务需求,前端可以通过 WebSocket 向后端发送图像数据,或者是其他类型的数据,如请求 DeepSeek 对象检测的结果。

示例:前端向后端发送图像数据进行分析
假设前端用户上传了一张图片,我们可以将图片数据以 Base64 格式发送给后端:

const imageData = getImageDataFromInput();  // 假设这是获取图像数据的函数
const message = {action: 'analyze',image: imageData
};socket.send(JSON.stringify(message));  // 向服务器发送图像数据

后端处理:
后端接收到图像数据后,可以将该数据传递给 DeepSeek 模型进行处理,然后返回预测结果。

function processMessage(message) {// 假设 message.image 是 Base64 编码的图像数据const analysisResult = deepSeekAnalyze(message.image);  // 调用 DeepSeek 分析函数return { response: '已处理', result: analysisResult };
}

3. 连接断开和错误处理

步骤 1:处理 WebSocket 连接断开

在前端和后端都需要处理连接断开的情况,以确保能够优雅地关闭连接。

// 前端:处理 WebSocket 关闭事件
socket.onclose = () => {console.log('连接已关闭');// 可以在此做一些清理工作,例如用户提示
};
步骤 2:后端关闭连接

在后端关闭连接时,可以执行一些清理操作,例如记录连接日志或释放资源。

// 后端:处理连接关闭事件
ws.on('close', () => {console.log('WebSocket 连接关闭');// 可能需要在此做资源清理
});

4. 部署和生产环境配置

步骤 1:使用 WSS(WebSocket Secure)

在生产环境中,使用 wss 而不是 ws 协议来加密 WebSocket 连接。你需要配置 HTTPS 证书。

const fs = require('fs');
const https = require('https');// 创建 HTTPS 服务
const server = https.createServer({key: fs.readFileSync('path/to/private.key'),cert: fs.readFileSync('path/to/certificate.crt')
});// 创建 WebSocket 服务器
const wss = new WebSocket.Server({ server });// 启动 HTTPS 服务
server.listen(8080, () => {console.log('HTTPS 服务器启动,监听 8080 端口');
});
步骤 2:负载均衡与高并发

如果你需要支持多个用户并发连接,可能需要使用负载均衡工具(例如 Nginx)来处理 WebSocket 连接的分发,确保服务器的高可用性和扩展性。

5. 例图和示意

在整个过程中,WebSocket 的工作流程如下图所示:
在这里插入图片描述

总结

  1. 后端: 配置 WebSocket 服务器来接收和处理来自客户端的连接与消息。
  2. 前端: 使用 WebSocket API 与后端通信,传递数据(如图像)并接收处理结果。
  3. 安全与部署: 在生产环境中使用 WSS 协议,并考虑高并发支持。

通过这些步骤,你可以轻松地将 WebSocket 集成到 DeepSeek 中,完成实时的数据交互。

相关文章:

WebSocket简单介绍 并接入deepseek

目录 什么是 WebSocket&#xff1f;工作原理&#xff1a; 为什么需要 WebSocket&#xff1f;WebSocket 的优势HTTP 和 WebSocket 的区别WebSocket 的劣势WebSocket 的应用场景WebSocket 握手过程1. 客户端发起握手请求2. 服务器响应握手请求3. 建立连接 WebSocket 事件处理WebS…...

android 新增native binder service 方式(三)

书接上回&#xff0c;继续第三种方式&#xff0c;是手动生成 service binder 的方法,项目结构 1&#xff0c;编译aidl aidl 文件保持不变&#xff0c;如何生成Bn和Bp 文件呢。 aidl -I ./libserviceaidl/aidl -h ./ -o ./ --langcpp libserviceaidl/aidl/com/test/IService.a…...

linux--多进程开发(5)--进程

进程间通讯概念 每两个进程之间都是独立的资源分配单元&#xff0c;不同进程之间不能直接访问另一个进程的资源。 但不同的进程需要进行信息的交互和状态的传递等&#xff0c;因此需要进程间通信&#xff08;IPC,inter processes cimmunication) 进程通信的目的&#xff1a; …...

分享httprunner 结合django实现平台接口自动化方案

说明&#xff0c;可以直接在某个视图集定义自定义接口来验证。 调试1&#xff1a;前端界面直接编写yaml文件. 新增要实现存数据到mysql&#xff0c;同时存文件到testcase下, 如test.yaml 更新yaml数据&#xff0c;同时做到更新 testcase下的文件&#xff0c;如test.yaml acti…...

前端面试题之HTML篇

1.src和href的区别 src用于替换当前元素&#xff0c;href用于在当前文档和引用资源之间确立联系。 src可用于img、input、style、script、iframe---同步加载执行 href可用于link、a---异步 1.用途不同 src 用于引入外部资源&#xff0c;通常是图像、视频、JavaScript 文件等&am…...

Selenium 调用模型接口实现功能测试

要使用 Selenium 调用模型接口实现功能测试,可按以下步骤进行: 1. 环境准备 安装 Selenium:使用 pip install selenium 安装 Selenium 库。安装浏览器驱动:根据使用的浏览器(如 Chrome、Firefox 等)下载对应的驱动,并将其添加到系统的环境变量中。例如,Chrome 浏览器需…...

java后端开发day18--学生管理系统

&#xff08;以下内容全部来自上述课程&#xff09; 1.业务分析并搭建主菜单 1.需求 采取控制台的方式去书写学生管理系统 2.分析 1.初始菜单 2.学生类 属性&#xff1a;id&#xff0c;姓名&#xff0c;年龄&#xff0c;家庭住址 3.添加功能 键盘录入每一个学生信息并…...

计算机毕业设计SpringBoot+Vue.jst0图书馆管理系统(源码+LW文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

【DeepSeek】【GPT-Academic】:DeepSeek集成到GPT-Academic(官方+第三方)

目录 1 官方deepseek 1.1 拉取学术GPT项目 1.2 安装依赖 1.3 修改配置文件中的DEEPSEEK_API_KEY 2 第三方API 2.1 修改DEEPSEEK_API_KEY 2.2 修改CUSTOM_API_KEY_PATTERM 2.3 地址重定向 2.4 修改模型参数 2.5 成功调用 2.6 尝试添加一个deepseek-r1参数 3 使用千帆…...

生成对抗网络(GAN):让机器学习“创造”新世界

目录 引言 什么是生成对抗网络&#xff08;GAN&#xff09;&#xff1f; GAN的核心原理 GAN的损失函数 GAN的变种 1. 条件生成对抗网络&#xff08;Conditional GAN, cGAN&#xff09; 2. 深度卷积生成对抗网络&#xff08;DCGAN&#xff09; 3. 生成对抗网络的 Wassers…...

JavaScript系列(87)--Webpack 高级配置详解

Webpack 高级配置详解 &#x1f6e0;️ Webpack 是前端工程化中最流行的构建工具之一&#xff0c;掌握其高级配置可以帮助我们构建更高效、更优化的应用。本文将深入探讨Webpack的高级配置技巧和最佳实践。 Webpack 核心概念回顾 &#x1f31f; &#x1f4a1; 小知识&#xf…...

48.日常算法

1.面试题 03.06. 动物收容所 题目来源 动物收容所。有家动物收容所只收容狗与猫&#xff0c;且严格遵守“先进先出”的原则。在收养该收容所的动物时&#xff0c;收养人只能收养所有动物中“最老”&#xff08;由其进入收容所的时间长短而定&#xff09;的动物&#xff0c;或…...

MySql数据库运维学习笔记

数据库运维常识 DQL、DML、DCL 和 DDL 是 SQL&#xff08;结构化查询语言&#xff09;中的四个重要类别&#xff0c;它们分别用于不同类型的数据库操作&#xff0c;下面为你简单明了地解释这四类语句&#xff1a; 1. DQL&#xff08;数据查询语言&#xff0c;Data Query Langu…...

Starlink卫星动力学系统仿真建模第十讲-基于SMC和四元数的卫星姿态控制示例及Python实现

基于四元数与滑模控制的卫星姿态控制 一、基本原理 1. 四元数姿态表示 四元数运动学方程&#xff1a; 3. 滑模控制设计 二、代码实现&#xff08;Python&#xff09; 1. 四元数运算工具 import numpy as npdef quat_mult(q1, q2):"""四元数乘法""…...

MongoDB学习

MongoDB 是一种流行的 NoSQL 数据库&#xff0c;以文档存储为核心&#xff0c;适用于高灵活性、高扩展性的场景。本文将从基础概念到实际应用&#xff0c;带你快速掌握 MongoDB 的核心操作。 1. MongoDB 简介 什么是 MongoDB&#xff1f; MongoDB 是一个基于分布式文件存储的…...

水利工程安全包括哪几个方面

水利工程安全培训的内容主要包括以下几个方面&#xff1a; 基础知识和技能培训 &#xff1a; 法律法规 &#xff1a;学习水利工程相关的安全生产法律法规&#xff0c;了解安全生产标准及规范。 事故案例 &#xff1a;通过分析事故案例&#xff0c;了解事故原因和教训&#x…...

九、数据治理架构流程

一、总体结构 《数据治理架构流程图》&#xff08;Data Governance Architecture Flowchart&#xff09; 水平结构&#xff1a;流程图采用水平组织&#xff0c;显示从数据源到数据应用的进程。 垂直结构&#xff1a;每个水平部分进一步划分为垂直列&#xff0c;代表数据治理的…...

Spring boot中的@ConfigurationProperties注解

Spring boot中的ConfigurationProperties注解 ConfigurationProperties 是 Spring Boot 提供的一个强大注解&#xff0c;用于将配置文件&#xff08;如 application.properties 或 application.yml&#xff09;中的配置绑定到一个 Java 对象中。它不仅简化了配置管理&#xff…...

04性能监控与调优篇(D2_JVM调优⼯具)

目录 学习前言 讲解一&#xff1a;理论篇&#xff08;深入理解JVM第三版&#xff09; 一、虚拟机性能监控、故障处理工具 1. 基本介绍 2. 基础故障处理工具 jps&#xff1a;虚拟机进程状况工具 jstat&#xff1a;虚拟机统计信息监视工具 jinfo&#xff1a;Java配置信息工…...

DeepSeek 提示词:基础结构

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编…...

OkHttp、Retrofit、RxJava:一文讲清楚

一、okHttp的同步和异步请求 Call 是 OkHttp 的核心接口&#xff0c;代表一个已准备好执行的 HTTP 请求。它支持 同步 和 异步 两种模式&#xff1a; enqueue——>okHttp异步 OkHttpClient client new OkHttpClient();Request request new Request.Builder().url("…...

AI前端加速科学研究:ScriptEcho赋能科研新纪元

科学研究正面临前所未有的挑战。数据以前所未有的速度爆炸式增长&#xff0c;研究课题也变得日益复杂。如何高效地处理海量数据、构建复杂模型、并将其转化为有意义的结论&#xff0c;成为摆在科研人员面前的一道难题。传统的科研模式往往需要耗费大量的时间和精力在数据处理、…...

从零到一:如何用阿里云百炼和火山引擎搭建专属 AI 助手(DeepSeek)?

本文首发&#xff1a;从零到一&#xff1a;如何用阿里云百炼和火山引擎搭建专属 AI 助手&#xff08;DeepSeek&#xff09;&#xff1f; 阿里云百炼和火山引擎都推出了免费的 DeepSeek 模型体验额度&#xff0c;今天我和大家一起搭建一个本地的专属 AI 助手。  阿里云百炼为 …...

ChatGPT背后的理论基础:从预训练到微调的深度解析

友情提示&#xff1a;本文内容由银河易创&#xff08;https://ai.eaigx.com&#xff09;AI创作平台GPT-4o-mini模型生成&#xff0c;仅供参考。请根据具体情况和需求进行适当的调整和验证。 随着人工智能特别是自然语言处理技术的飞速发展&#xff0c;ChatGPT作为一种强大的对话…...

Java八股文(下)

Java八股文下篇 八、JVM高级篇1、JVM的内存模型以及分区介绍一下&#xff1f;2、四种引用方式有什么&#xff1f;3、判断是否为垃圾算法&#xff1f;4、垃圾回收算法介绍一下&#xff1f;5、类的生命周期以及类加载过程6、加载器种类有什么&#xff1f;7、什么是双亲委派模型以…...

软考高级【网络规划设计师】 综合知识

引言&#xff1a;软考高级【网络规划设计师】共分为3个部分&#xff0c;综合知识&#xff0c;案例分析&#xff0c;论文。这里主要讲诉综合知识的相关内容。综合知识一共75道单选&#xff0c;题目跟网工类似&#xff0c;稍难。 第1章 计算机网络基础 考点分析&#xff1a; 本…...

django框架使用

一、app注册&#xff1a; pycharm使用django框架&#xff0c;注意在注册界面时就创建app&#xff0c;如果没有创建app。就在终端中运行 python manage.py startapp [app名] 然后再在settings.py里注册。 格式为&#xff1a; [app名].apps.[首字母大写的app名]Config 二、创…...

Linux主机用户登陆安全配置

Linux主机用户登陆安全配置 在Linux主机上进行用户登录安全配置是一个重要的安全措施&#xff0c;可以防止未经授权的访问。以下是如何创建用户hbu、赋予其sudo权限&#xff0c;以及禁止root用户SSH登录&#xff0c;以及通过ssh key管理主机用户登陆。 创建用户hbu 使用具有…...

MySQL | MySQL库、表的基本操作

MySQL库、表的基本操作01 一、库操作1.1 查看数据库1.2 创建数据库1.3 选择数据库1.4 查看创建数据库的SQL语句1.5 修改数据库1.6 删除数据库 二、表操作2.1 创建数据表2.2 查看表2.3 查看表结构2.4 查看创建数据库的SQL语句2.5 修改表2.6 删除表 ⚠️MySQL版本 8.0 一、库操作…...

【Uniapp-Vue3】在uniapp中使用pinia的基本用法

引入pinia&#xff1a; 在main.js中对pinia进行引入&#xff0c;使用和导出 import * as Pinia from pinia; // 引入pinia app.use(Pinia.createPinia()); // 使用pinia 在项目根目录下创建一个stores文件夹&#xff0c;里面创建一个counter.js文件 我们在counter.js中定义…...

mysql中的计算日期函数 理解、用法

三种计算日期的函数 函数用途示例DATEDIFF()计算两个日期的天数差DATEDIFF(2023-10-05, 2023-10-01) → 4TIMESTAMPDIFF()按指定单位&#xff08;年、月、小时等&#xff09;计算差TIMESTAMPDIFF(MONTH, 2023-01-01, 2023-03-01) → 2DATE_ADD()日期加法DATE_ADD(2023-10-01, …...

HTTP实验(ENSP模拟器实现)

目录 HTTP概述 HTTP实验 HTTPS 实验 HTTP概述 HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;&#xff0c;设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 HTTP定义了多种请求方法&#xff0c;常用的包括&#xff1a; …...

Ubuntu指令(一)

一、终端操作指令 打开终端&#xff0c;有两种便捷方式&#xff1a; 直接点击系统中的终端按钮&#xff1b;使用快捷键ctrl alt T。 关闭终端&#xff0c;同样有多种选择&#xff1a; 在终端输入exit指令&#xff1b;使用快捷键ctrl d&#xff1b;直接点击终端窗口的关闭…...

结构型模式 - 装饰者模式 (Decorator Pattern)

结构型模式 - 装饰者模式 (Decorator Pattern) 在展开讲装饰者模式之前,不得不提一下代理模式,因为这两者在一定的层度上是有相似性的, 通过对比可以让我们更好的理解装饰者. 定义与核心目的 装饰者模式 定义&#xff1a;动态地将责任附加到对象上。若要扩展功能&#xff0c…...

11.Docker 之分布式仓库 Harbor

Docker 之分布式仓库 Harbor Docker 之分布式仓库 Harbor1. Harbor 组成2. 安装 Harbor Docker 之分布式仓库 Harbor Harbor 是一个用于存储和分发 Docker 镜像的企业级 Registry 服务器&#xff0c;由 VMware 开源&#xff0c;其通过添加一些企业必需的功能特性&#xff0c;例…...

vue2使用xlsx依赖导出excel并封装组件

1. 安装 npm install xlsx file-saver --save2. 简单封装 import * as XLSX from xlsx; import { saveAs } from file-saver;export function exportExcel(data, fileName) {return new Promise((resolve, reject) > {if (!data || !data.length) {return reject(new Erro…...

Python入门12:面向对象的三大特征与高级特性详解

面向对象编程&#xff08;OOP&#xff09;是Python编程中非常重要的一部分&#xff0c;它通过封装、继承和多态这三大特征&#xff0c;帮助我们更好地组织和管理代码。除此之外&#xff0c;Python还提供了一些其他特性&#xff0c;如类属性、类方法和静态方法&#xff0c;进一步…...

JVM之JVM的组成

Java 虚拟机&#xff08;JVM&#xff09;是 Java 程序的运行核心&#xff0c;它主要由类加载系统、运行时数据区、执行引擎和本地方法接口这几个关键部分组成。 类加载系统&#xff08;Class Loading System&#xff09; 类加载系统负责在程序运行时动态地将 Java 类加载到 J…...

计算机毕业设计SpringBoot+Vue.js中小型医院网站(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

滑动验证组件-微信小程序

微信小程序-滑动验证组件&#xff0c;直接引用就可以了&#xff0c;效果如下&#xff1a; 组件参数&#xff1a; 1.enable-close&#xff1a;是否允许关闭&#xff0c;默认true 2.bind:onsuccess&#xff1a;验证后回调方法 引用方式&#xff1a; <verification wx:if&qu…...

【DeepSeek问答】QProcess::start是异步的吗?会使UI卡顿吗?

好的&#xff0c;我现在需要回答用户关于QProcess::start是否是异步的&#xff0c;以及它是否会导致UI卡顿的问题。用户之前已经询问过如何开发一个调用7-Zip的Qt应用&#xff0c;并且我给出了示例代码。现在用户可能在使用过程中遇到了问题&#xff0c;或者想更深入了解QProce…...

WebXR教学 01 基础介绍

什么是WebXR&#xff1f; 定义 XR VR AR Web上使用XR技术的API WebXR 是一组用于在 Web 浏览器中实现虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;应用的技术标准。它由 W3C 的 Immersive Web 工作组开发&#xff0c;旨在提供跨设备的沉浸式体验…...

数据开发面试:DQL,

DQL常见面试题 where 和 having 的区别 三个排序开窗函数的区别 left join 用where 筛选 和 用on筛选的区别 ON 子句&#xff1a;用于定义连接条件&#xff0c;不会丢失左表的行。 WHERE 子句&#xff1a;用于过滤连接后的结果集&#xff0c;可能会丢失左表中没有匹配的行 …...

sage-huga改进SITAN

Sage-Husa自适应滤波算法 Sage-Husa自适应滤波算法是一种在递推滤波过程中实时估计和修正系统噪声和观测噪声统计特性的算法,从而降低系统模型误差,提高滤波精度。该算法基于卡尔曼滤波,并通过自适应调整噪声协方差矩阵来优化滤波效果。 算法原理 Sage-Husa滤波器的核心思…...

深入解析React useEffect与useLayoutEffect:区别、原理与实践

&#x1f30c; ‌深入解析React useEffect与useLayoutEffect&#xff1a;区别、原理与实践 在React函数组件中&#xff0c;useEffect和useLayoutEffect是处理副作用的两个核心Hook。它们看似相似&#xff0c;但在执行时机和应用场景上有本质区别。本文将通过‌原理剖析‌、‌对…...

1分钟用DeepSeek编写一个PDF转Word软件

一、引言 如今&#xff0c;在线工具的普及让PDF转Word成为了一个常见需求&#xff0c;常见的pdf转word工具有收费的wps&#xff0c;免费的有pdfgear&#xff0c;见下文&#xff1a; PDFgear:一款免费的PDF编辑、格式转化软件-CSDN博客 还有网上在线的免费pdf转word工具smallp…...

百度觉醒,李彦宏渴望光荣

文 | 大力财经 作者 | 魏力 2025年刚刚开年&#xff0c;被一家名为DeepSeek的初创公司强势改写。在量化交易出身的创始人梁文锋的带领下&#xff0c;这支团队以不到ChatGPT 6%的训练成本&#xff0c;成功推出了性能可与OpenAI媲美的开源大模型。 此成果一经问世&#xff0c;…...

MySQL知识

1.Navicat客户端连接 打开navicat&#xff0c;点击连接&#xff0c;点击MySQL 输入连接名与密码&#xff0c;如果连接的mysql是windows下的mysql主机号就填写localhost 填写好后点击测试连接 点击确定&#xff0c;mysql连接navicat成功 2.MySQL数据定义语言(DDL) DDL用于数据库…...

从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(三) 实现注册 登录接口

1.划分文件夹 在src目录下创建controllers middleware models routes controllers 放具体的方法 signup login middleware 里面是中间件 请求的验证 models 放对象实体 routes 处理访问路径像/signup /login 等等 2. 接口开发 系统的主要 有用户认证 和 消息 2种类型…...

Pytorch实现之浑浊水下图像增强

简介 简介:这也是一篇非常适合GAN小白们上手的架构文章!提出了一种基于GAN的水下图像增强网络。这种网络与其他架构类似,生成器是卷积+激活函数+归一化+残差结构的组成,鉴别器是卷积+激活函数+归一化以及全连接层。损失函数是常用的均方误差、感知损失和对抗损失三部分。 …...