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

异地办公必不可缺的远程控制软件,原理到底是什么?

目录

  • 引言
    • 远程桌面连接软件的作用与重要性
  • 基本概念与架构
    • 客户端-服务器模型
    • 网络通信协议
  • 核心技术组件
    • 图形界面捕获与传输
    • 输入转发
    • 会话管理
  • 性能优化策略
    • 带宽优化
    • 延迟优化

引言

远程桌面连接软件的作用与重要性

在当今这个高度数字化和网络化的时代,远程桌面连接软件已经成为了连接世界、促进信息流动的重要工具。它不仅极大地提升了工作效率,还拓宽了工作与教育的边界。本节将深入探讨远程桌面连接软件的作用与其重要性。

  1. 促进远程工作的实现
    随着互联网技术的发展,远程工作已经成为许多企业和个人的常态。远程桌面连接软件使得员工可以不受地理位置的限制,随时随地访问办公室的计算机和网络资源,进行文件处理、数据分析等工作任务。这不仅提高了工作灵活性,也减少了通勤时间和成本,为企业和员工创造了更大的价值。

  2. 简化IT管理
    对于IT管理者来说,远程桌面连接软件是一个强大的工具。它允许管理员远程监控和维护企业内部的计算机系统,无论是进行软件更新、故障排查还是系统配置,都可以迅速高效地完成。这样不仅大幅度提高了IT管理的效率,也降低了企业的运营成本。

  3. 支持在线教育和培训
    在线教育和远程培训项目在全球范围内迅速增长。远程桌面连接软件使得教师能够分享他们的屏幕给学生,进行实时演示和讲解。学生也可以通过这种软件获得对实验室计算机的远程访问,进行实践操作。这种方式不仅扩大了教育的覆盖面,也提高了教学的互动性和实践性。

  4. 加强数据安全
    在传统的工作环境中,数据的移动和共享往往伴随着安全风险。而通过远程桌面连接软件,所有的数据处理和存储都可以在服务器端完成,用户通过加密的连接访问数据,这极大地减少了数据泄露的风险。同时,企业可以更加集中地管理和保护重要信息资源。

  5. 提高灾难恢复能力
    在遇到自然灾害或其他意外情况导致物理办公场所不可用时,远程桌面连接软件可以快速地恢复企业的运营。员工可以从任何地点访问公司的资源和数据,保证业务连续性和服务的稳定性。

基本概念与架构

客户端-服务器模型

客户端-服务器模型是现代计算机网络通信的基石,它定义了一种高效、灵活的方式来分配和管理网络资源及服务。这一模型扮演着核心角色,使得用户能够从任何地点通过客户端设备远程访问和控制位于不同地点的服务器上的桌面环境。

在客户端-服务器模型中,"客户端"指的是发起请求以获取服务的设备或软件,而"服务器"则是接收请求并提供相应服务的设备或软件。在远程桌面连接的场景里,服务器是安装有远程桌面服务软件的计算机,负责处理来自客户端的连接请求,捕获屏幕输出并发送给客户端;客户端软件则安装在用户的设备上,负责向服务器发送控制命令并展示服务器桌面环境。

在这里插入图片描述
工作流程

  1. 初始化连接:用户通过客户端软件发起连接请求,请求连接到服务器上的远程桌面。

  2. 认证与授权:服务器接收到请求后,进行用户身份验证和授权检查,确保只有合法用户可以建立连接。

  3. 会话建立:一旦认证成功,服务器与客户端之间建立起一个稳定的会话。在此会话中,服务器开始捕获桌面图像,并将其以网络数据包的形式发送给客户端。

  4. 数据交换:客户端接收到来自服务器的数据包,解码并在用户的设备上重现服务器的桌面环境。同时,用户在客户端上的任何操作(如鼠标点击、键盘输入)都被捕获并发送回服务器,服务器接收到这些操作后,在服务器端执行相应的操作。

  5. 会话维护:在整个会话期间,客户端与服务器之间持续交换数据,保持桌面环境的实时更新和用户操作的响应。服务器只传输桌面环境中变化的部分,以优化网络带宽的使用。

  6. 会话结束:用户完成远程操作后,可以主动断开连接,或者由于网络故障等原因导致会话结束。服务器随后关闭会话,释放资源。

网络通信协议

网络通信协议是远程桌面连接软件的关键组成部分,它定义了数据如何在网络中从一个点传输到另一个点。这些协议确保数据能够安全、高效地在客户端和服务器之间进行传输,从而使远程控制成为可能。本节将探讨几种主要的网络通信协议及其在远程桌面连接中的应用。

  1. 远程桌面协议(RDP)
    远程桌面协议(RDP)是由微软开发的一种协议,专门用于远程桌面连接。RDP提供了高级加密标准(AES)加密,确保数据传输的安全性。它支持32位颜色和多声道音频传输,为用户提供了丰富的远程桌面体验。RDP还具有带宽优化功能,通过智能压缩技术减少数据量,提高在低速网络环境下的性能。

  2. 虚拟网络计算(VNC)
    虚拟网络计算(VNC)是一种图形桌面共享系统,使用远程帧缓冲协议(RFB)进行通信。VNC是平台无关的,可以在不同的操作系统之间进行远程控制。与RDP相比,VNC更加注重简单性和通用性,但可能在性能和安全性方面不如RDP。VNC允许直接控制远程计算机的桌面环境,使其广泛应用于技术支持和教育培训中。

  3. 安全壳(SSH)
    安全壳(SSH)是一种网络协议,用于加密网络服务的安全远程访问。虽然SSH主要用于命令行访问,但它也支持通过端口转发或X11转发技术进行图形界面的远程访问。SSH强调安全性,提供了多种加密技术来保护数据传输过程中的隐私和完整性。SSH适合需要高安全性的远程管理场景。

  4. 其他协议
    除了上述几种常见的协议外,还有一些其他协议也被用于特定的远程桌面连接场景,例如ICA(独立计算架构)是Citrix系统使用的协议,而PCoIP(PC-over-IP)则是VMware和亚马逊等提供的一种用于远程视觉图形加速的协议。

核心技术组件

图形界面捕获与传输

图形界面捕获是远程桌面连接软件中的一个关键环节,它涉及到将服务器端的图形用户界面(GUI)实时捕获并转换为可以通过网络传输的数据。此过程需要高效且准确,以确保远程用户能够获得良好的操作体验。以下是对图形界面捕获机制的详细介绍。

  1. 捕获技术概述:图形界面捕获技术主要依赖于对服务器上显示输出的实时监控和捕获。这一过程通常涉及以下几个步骤:
  • 监测屏幕变化:软件需要不断监测服务器端屏幕上的变化,包括窗口移动、内容更新等。
  • 捕获图像:一旦检测到屏幕有变化,系统就会捕获当前屏幕或变化区域的图像。
  • 编码处理:捕获的图像数据会被编码成一种更适合网络传输的格式,如JPEG或H.264等。

在许多远程桌面协议中,图形界面的捕获是通过监控帧缓冲区(Frame Buffer)来实现的。帧缓冲区是计算机内存中的一块区域,用于存储即将显示在屏幕上的图像数据。通过实时监控帧缓冲区的变化,捕获软件可以立即知道屏幕上何时发生了变化,并据此捕获相应的图像数据。

为了优化网络带宽的使用,远程桌面连接软件通常采用差异化捕获(Differential Capture)技术。这意味着只有当屏幕内容发生变化时,变化的部分才会被捕获和传输。这种方法大大减少了需要传输的数据量,提高了远程桌面连接的效率和响应速度。

捕获的图像数据需要经过高效的编码处理才能通过网络传输。这通常涉及到压缩技术,以减少数据的大小。选择合适的编码格式和压缩算法对于保证图像质量和传输效率至关重要。常见的编码标准包括JPEG(适用于静态图像)和H.264(适用于视频流),它们在保持图像质量的同时,能有效减少数据的传输量。

考虑到网络条件的不稳定性,先进的远程桌面软件还会根据当前的网络带宽和延迟情况,动态调整图像的捕获和传输策略。例如,在带宽较低的情况下,软件可能会降低图像的分辨率或增加压缩率,以确保远程操作的流畅性。

  1. 传输格式与协议:传输格式指的是数据在网络上传输时的封装和编码方式。它决定了数据的压缩率、清晰度和恢复能力,对网络带宽的使用和传输效率有直接影响。

常见的传输格式包括:

  • JPEG:主要用于静态图像的压缩。它通过去除图像中的一些细节来减少数据量,适用于文档阅读等对实时性要求不高的应用场景。
  • H.264:一种广泛使用的视频压缩标准,能够提供高质量的视频传输。它适用于动态内容的传输,如视频播放或动态桌面操作。
  • RLE(Run-Length Encoding):一种简单的数据压缩格式,通过减少重复数据的传输来降低数据量。适用于颜色变化较少的图像。

传输协议定义了数据包的结构、传输方式和错误处理机制,是确保数据安全、可靠传输的基础。在远程桌面连接中常用的传输协议包括:

  • TCP(Transmission Control Protocol):一种面向连接的、可靠的传输协议,通过三次握手建立连接并确保数据按顺序、完整地到达。TCP适用于对数据完整性要求高的场景,如文件传输和命令执行。
  • UDP(User Datagram Protocol):一种无连接的传输协议,不保证数据的顺序或完整性,但传输速度快。UDP适用于对实时性要求高的应用,如视频会议和在线游戏。
  • RDP(Remote Desktop Protocol):微软开发的专用远程桌面协议,提供了丰富的功能,包括多通道支持、带宽优化和加密传输。

输入转发

输入转发是远程桌面连接中的一个关键功能,它允许用户的键盘和鼠标操作在远程系统上被复制和执行,从而实现远程控制。这一过程涉及到捕获本地输入事件、通过网络传输这些事件,以及在远程系统上准确地重放这些事件。以下是对输入转发机制的详细介绍。.

  1. 输入事件捕获
    输入转发的第一步是在客户端(即用户的本地设备)捕获输入事件。这些事件包括键盘敲击、鼠标移动、鼠标点击等。为了实现这一点,远程桌面客户端软件通常会注册为输入事件的监听器,以便在用户进行操作时立即捕获这些事件。

  2. 事件编码与传输
    捕获到输入事件后,客户端软件需要将这些事件编码为一种适合网络传输的格式。这一步骤可能涉及到序列化输入事件的数据结构,以及可能的压缩以减少传输所需的带宽。之后,这些编码后的事件通过建立的网络连接发送到远程服务器。

    在选择传输协议方面,TCP是最常用的选择之一,因为它提供了可靠的数据传输服务。然而,在对实时性要求极高的场景下,UDP有时也会被考虑使用,尽管它不保证数据包的顺序或完整性。

  3. 远程事件重放
    一旦远程服务器接收到编码的输入事件,下一步就是将这些事件转换回其原始形式,并在远程系统上执行。这个过程称为事件重放。为了实现这一点,远程桌面服务需要具有在操作系统级别模拟键盘和鼠标事件的能力。

    在Windows系统中,这可以通过调用Windows API函数来完成;在Unix-like系统中,则可能通过X Window System的扩展或其他低级机制来实现。

  4. 同步与反馈
    为了提供流畅的远程控制体验,输入转发机制还需要处理输入同步和反馈问题。这意味着需要确保远程系统上的输入响应(如光标移动或按钮点击效果)能够及时反馈给用户,以便用户知道其操作已被远程系统接受和执行。

    此外,还需要考虑到网络延迟和丢包等问题,它们可能导致输入事件的顺序错乱或丢失。在设计输入转发机制时,采用适当的错误恢复和重传策略是非常重要的。

会话管理

会话管理是远程桌面服务中的一个核心功能,它负责维护客户端与服务器之间的通信会话,确保用户可以顺利地连接、使用和断开远程桌面。会话管理包括会话创建、维护、恢复和终止等关键环节。以下是对会话管理机制的详细介绍。

  1. 会话创建
    会话创建是用户开始远程桌面连接时的第一步。在这个阶段,客户端通常需要提供必要的认证信息(如用户名和密码或其他认证令牌),以验证用户的身份。服务器在验证用户身份后,将分配会话资源,并为该会话建立一个唯一的会话标识符(Session ID)。

    此过程可能还包括协商加密参数,确保会话数据的安全传输。会话创建成功后,用户即可开始远程桌面操作。

  2. 会话维护
    一旦会话建立,会话管理机制就需要负责维护这个会话的稳定性和持续性。这包括处理网络波动、保持心跳消息以检测会话状态、以及在必要时重连会话。

    会话维护还涉及到资源管理,如合理分配和回收服务器资源,以确保所有活跃会话都能获得充足的计算和存储资源。

  3. 会话恢复
    在远程桌面会话中,网络断开是常见的问题。有效的会话管理需要提供会话恢复机制,以便在连接意外断开后,用户可以重新连接到原有会话,而不是启动一个新会话。这通常通过保存会话状态和上下文信息来实现,当用户重新连接时,系统能够根据保存的信息恢复会话。

    会话恢复功能对于提高用户体验非常关键,特别是在移动环境下,网络连接可能更加不稳定。

  4. 会话终止
    当用户完成远程桌面操作,主动断开连接,或者会话超时未活跃时,会话管理机制需要能够正确地终止会话。会话终止涉及到关闭会话通道、清理会话资源和保存必要的会话数据。

    确保会话能够优雅地终止是避免资源泄露和保证系统稳定运行的关键。

性能优化策略

带宽优化

在远程桌面服务中,带宽优化是提高远程会话性能、减少延迟和提升用户体验的关键因素。由于网络条件的不确定性,特别是在宽带有限或网络拥堵的环境下,有效地管理和优化带宽使用变得尤为重要。以下是实现带宽优化的几种策略。

  1. 数据压缩
    数据压缩是减少远程桌面传输数据量的有效方法。通过压缩图像、文本和其他媒体文件,可以显著降低所需的网络带宽。不同的压缩算法适用于不同类型的数据,因此选择适当的压缩算法对于优化带宽至关重要。

    静态内容压缩:对于静态资源(如文档、图片),可以在传输前进行一次性压缩。
    动态内容压缩:对于动态变化的内容(如视频流),需要采用实时压缩技术,这可能需要在压缩效率和处理延迟之间做出权衡。

  2. 缓存机制
    缓存是另一种减少重复数据传输的方法。通过在客户端或服务器端缓存常用数据,可以减少对相同资源的多次请求,从而节省带宽。

    客户端缓存:将频繁访问的数据存储在客户端,减少对服务器的请求。
    服务器端缓存:对于多个客户端共享的资源,服务器端缓存可以减少数据的重复发送。

  3. 优化传输协议
    选择合适的传输协议也对带宽优化至关重要。不同的协议在效率、可靠性和实时性方面有所不同。

    TCP优化:虽然TCP提供了可靠的数据传输,但其拥塞控制和重传机制可能会导致额外的带宽消耗。通过调整TCP窗口大小和使用TCP加速技术,可以改善性能。

    UDP使用:对于对实时性要求高的应用,如语音和视频通话,使用UDP可能更合适,因为它避免了TCP的重传延迟,虽然需要应用层来保证数据的完整性和顺序。

  4. 分辨率和帧率调整
    对于远程桌面中的图像和视频传输,调整分辨率和帧率是一种直接有效的带宽优化手段。降低分辨率可以减少每帧的数据量,降低帧率可以减少每秒传输的帧数。

    自适应调整:根据当前网络条件自动调整分辨率和帧率,以实现最佳的性能和视觉质量平衡。

  5. 流量整形和优先级控制
    流量整形(Traffic Shaping)和优先级控制是网络层面的带宽管理技术。通过限制特定类型流量的速率,或为关键应用分配更高的优先级,可以确保重要数据的传输质量。

    QoS(Quality of Service):通过网络设备对不同类型的流量进行分类和优先级排序,确保关键应用(如实时语音和视频会议)获得足够的带宽。

延迟优化

在远程桌面服务中,延迟优化是关键因素之一,它直接影响到用户的操作体验。延迟过高会导致输入延迟、画面卡顿等问题,从而降低用户的满意度。因此,采取有效措施减少延迟是提升远程桌面服务质量的重要环节。以下是实现延迟优化的几种策略。

  1. 网络优化
    网络是影响远程桌面服务延迟的主要因素之一。通过网络优化可以显著减少数据传输时间。

    选择更快的网络连接:使用更高速的网络连接可以减少数据传输的时间。
    优化路由:确保数据包通过最短路径传输,减少路由跳数可以降低延迟。
    使用CDN:对于分布式用户,使用内容分发网络(CDN)可以将数据缓存于离用户更近的地点,从而减少数据传输距离和时间。

  2. 协议优化
    选择和优化传输协议也是减少延迟的有效手段。

    TCP和UDP的选择:根据应用场景选择合适的协议。例如,对于实时性要求较高的应用,UDP可能比TCP更合适。
    协议优化:对TCP进行优化,如调整TCP窗口大小,可以提高数据传输效率,减少延迟。

  3. 服务器和客户端优化
    服务器和客户端的处理能力直接影响到远程桌面的响应时间。

    硬件升级:提升服务器和客户端的处理能力,如CPU和内存,可以加快数据处理速度,降低延迟。
    软件优化:优化服务器和客户端软件的处理流程,减少不必要的计算和数据处理,可以减少处理延迟。

  4. 帧率和分辨率调整
    适当调整远程桌面的帧率和分辨率可以减少数据量,进而减少传输和处理所需的时间。

    动态调整:根据当前网络条件和服务器负载动态调整帧率和分辨率,以保持最佳的延迟和视觉质量平衡。

  5. 数据压缩和预处理
    通过数据压缩和预处理可以减少需要传输的数据量,从而减少延迟。

    数据压缩:对传输的数据进行压缩,减少数据量。
    预处理:在服务器端对数据进行预处理,如渲染图像,然后将处理结果发送给客户端,可以减少客户端的处理时间。

  6. 使用专用的远程桌面协议
    采用为远程桌面服务专门设计的协议,如RDP(Remote Desktop Protocol)或VNC(Virtual Network Computing),这些协议通常包含了针对延迟优化的特定机制。

相关文章:

异地办公必不可缺的远程控制软件,原理到底是什么?

目录 引言远程桌面连接软件的作用与重要性 基本概念与架构客户端-服务器模型网络通信协议 核心技术组件图形界面捕获与传输输入转发会话管理 性能优化策略带宽优化延迟优化 引言 远程桌面连接软件的作用与重要性 在当今这个高度数字化和网络化的时代,远程桌面连接软…...

docker更换镜像源

添加的镜像源 {"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com", "https://reg-mirror.qiniu.com/", "https://docker.mirrors.ustc.edu.cn"] }docker更换镜像源之后一定要重启守卫 systemctl daemon-reloaddock…...

SaaS 电商设计 (八) 直接就能用的一套商品池完整的设计方案(建议收藏)

目录 一.前言1.1 在哪些业务场景里使用1.2 一些名词搞懂他1.3 结合业务思考一下-业务or产品的意图 二.方案设计2.1 业务主流程2.2 一步步带你分析B端如何配置2.3 数据流2.3.1 ES 数据表建设2.3.2 核心商品池流程2.3.2.1 商品池B端维护流程2.3.2.2 商品池版本更新逻辑 2.4 核心代…...

【Spring连载】使用Spring Data访问Redis(八)----发布/订阅消息

【Spring连载】使用Spring Data访问Redis(八)----发布/订阅消息Pub/Sub Messaging 一、发布消息Publishing (Sending Messages)二、订阅消息Subscribing (Receiving Messages)2.1 消息监听容器Message Listener Containers2.2 消息监听适配器The Message…...

list基本使用

list基本使用 构造迭代器容量访问修改 list容器底层是带头双向链表结构&#xff0c;可以在常数范围内在任意位置进行输入和删除&#xff0c;但不支持任意位置的随机访问&#xff08;如不支持[ ]下标访问&#xff09;&#xff0c;下面介绍list容器的基本使用接口。 template <…...

网络原理TCP/IP(5)

文章目录 IP协议IP协议报头地址管理网段划分特殊的IP地址路由选择以太网认识MAC地址对比理解MAC地址和IP地址DNS&#xff08;域名服务器&#xff09; IP协议 IP协议主要完成的工作是两方面&#xff1a; 地址管理&#xff0c;使用一套地址体系&#xff0c;来描述互联网上每个设…...

前端JavaScript篇之JavaScript为什么要进行变量提升,它导致了什么问题?什么是尾调用,使用尾调用有什么好处?

目录 JavaScript为什么要进行变量提升&#xff0c;它导致了什么问题&#xff1f;总结 什么是尾调用&#xff0c;使用尾调用有什么好处&#xff1f;总结 JavaScript为什么要进行变量提升&#xff0c;它导致了什么问题&#xff1f; 变量提升是JavaScript在代码执行之前对变量和函…...

React和Vue实现路由懒加载

React实现路由懒加载&#xff1a; React官方提供了React.lazy()函数来实现路由的懒加载。使用React.lazy()函数需要配合React的Suspense组件来使用。 首先&#xff0c;使用React.lazy()函数动态导入组件&#xff0c;例如&#xff1a; const Home React.lazy(() > import(…...

ReactNative实现的横向滑动条

OK&#xff0c;我们先看下效果图 注意使用到了两个库 1.react-native-linear-gradient 2.react-native-gesture-handler ok&#xff0c;我们看下面的代码 import {Image, TouchableWithoutFeedback, StyleSheet, View} from react-native; import LinearGradient from reac…...

华为自动驾驶干不过特斯拉?

文 | AUTO芯球 作者 | 李诞 什么&#xff1f; 华为的智能驾驶方案干不过蔚小理&#xff1f; 特斯拉的智能驾驶[FSD]要甩中国车企几条街&#xff1f; 这华为问界阿维塔刚刚推送“全国都能开”的城区“无图 NCA” 就有黑子来喷了 这是跪久了站不起来了吧 作为玩车14年&…...

docker容器stop流程

从API route开始看StopContainer接口的调用过程。 // NewRouter initializes a new container router func NewRouter(b Backend, decoder httputils.ContainerDecoder) router.Router {r : &containerRouter{backend: b,decoder: decoder,}r.initRoutes()return r } ... …...

生产环境_Spark接收传入的sql并替换sql中的表名与解析_非常NB

背景 开发时遇到一个较为复杂的周期需求&#xff0c;为了适配读取各种数据库中的数据并将数据库数据转换为DataFrame并进行后续的开发分析工作&#xff0c;做了如下代码。 在爷们开发这段生产中的代码&#xff0c;可适配mysql,hive,hbase&#xff0c;gbase等等…...

【issue-YOLO】自定义数据集训练YOLO-v7 Segmentation

1. 拉取代码创建环境 执行nvidia-smi验证cuda环境是否可用&#xff1b;拉取官方代码&#xff1b; clone官方代码仓库 git clone https://github.com/WongKinYiu/yolov7&#xff1b;从main分支切换到u7分支 cd yolov7 && git checkout 44f30af0daccb1a3baecc5d80eae229…...

【八大排序】选择排序 | 堆排序 + 图文详解!!

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C语言进阶之路 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 一、选择排序1.1 基本思想1.2 算法步骤 动图演示1.3 代码实现1.4 选择排序特性总结 二…...

C语言贪吃蛇详解

个人简介&#xff1a;双非大二学生 个人博客&#xff1a;Monodye 今日鸡汤&#xff1a;人生就像一盒巧克力&#xff0c;你永远不知道下一块是什么味的 C语言基础刷题&#xff1a;牛客网在线编程_语法篇_基础语法 (nowcoder.com) 一.贪吃蛇游戏背景 贪吃蛇是久负盛名的游戏&…...

go使用gopprof分析内存泄露

假设我们使用的是比如beego这样的网络框架,我们可以这样加代码来使用gopprof来进行内存泄露分析: beego框架加gopprof分析代码: 1.先在router.go里添加路由信息: beego.Router("/debug/pprof", &controllers.ProfController{}) beego.Router("/debug…...

uniapp中组件库Mask 遮罩层 的使用方法

目录 #平台差异说明 #基本使用 #嵌入内容 #遮罩样式 #API #Props #Events #Slot 创建一个遮罩层&#xff0c;用于强调特定的页面元素&#xff0c;并阻止用户对遮罩下层的内容进行操作&#xff0c;一般用于弹窗场景 #平台差异说明 AppH5微信小程序支付宝小程序百度小程…...

【数据结构与算法】(7)基础数据结构之双端队列的链表实现、环形数组实现示例讲解

目录 2.6 双端队列1) 概述2) 链表实现3) 数组实现习题E01. 二叉树 Z 字层序遍历-Leetcode 103 2.6 双端队列 1) 概述 双端队列、队列、栈对比 定义特点队列一端删除&#xff08;头&#xff09;另一端添加&#xff08;尾&#xff09;First In First Out栈一端删除和添加&…...

2024 高级前端面试题之 前端工程相关 「精选篇」

该内容主要整理关于 前端工程相关模块的相关面试题&#xff0c;其他内容面试题请移步至 「最新最全的前端面试题集锦」 查看。 前端工程相关模块精选篇 1. webpack的基本配置2. webpack高级配置3. webpack性能优化-构建速度4. webpack性能优化-产出代码&#xff08;线上运行&am…...

CSS常用属性

CSS常用属性 1. 像素的概念 概念&#xff1a;我们的电脑屏幕是&#xff0c;是由一个一个“小点”组成的&#xff0c;每个“小点”&#xff0c;就是一个像素&#xff08;px&#xff09;。规律&#xff1a;像素点越小&#xff0c;呈现的内容就越清晰、越细腻。 注意点&#xff…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Nginx server_name 配置说明

Nginx 是一个高性能的反向代理和负载均衡服务器&#xff0c;其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机&#xff08;Virtual Host&#xff09;。 1. 简介 Nginx 使用 server_name 指令来确定…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...