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

RDP协议详解

以下内容包含对 RDP(Remote Desktop Protocol,远程桌面协议)及其开源实现 FreeRDP 的较为系统、深入的讲解,涵盖协议概要、历史沿革、核心原理、安全机制、安装与使用方法、扩展与未来发展趋势等方面,

---

## 一、引言

远程桌面技术是现代信息技术不可或缺的重要组成部分,无论在企业内部还是个人场景中都发挥着至关重要的作用。通过远程桌面协议,用户可以在异地访问并控制另一台计算机的桌面环境,不仅可以进行文件访问,甚至能够进行完整的图形化操作和应用程序运行,从而极大地提升工作效率和灵活性。微软推出并不断完善了 RDP(Remote Desktop Protocol,远程桌面协议),在 Windows 平台上构建了广泛且可信赖的基础设施。与此同时,为了在开源社区及跨平台领域进一步增强此类应用的可扩展性,不同的组织和爱好者基于微软的技术规范进行了逆向工程或基于公开协议详细文档,开发出了多种跨平台远程桌面解决方案,FreeRDP 就是其中的佼佼者。

针对 RDP 协议本身和 FreeRDP 工程的发展历程,本文将进行较为翔实的讨论,包括 RDP 协议的基本架构、通信原理、图形渲染方法以及加密和安全性机制等;同时还会重点阐述 FreeRDP 的安装、使用、特性、扩展能力以及在实际场景中的优化经验,使读者从理论到实践都能对 RDP 和 FreeRDP 有一个系统全面的认识。

---

## 二、RDP 协议概述

RDP(Remote Desktop Protocol)是微软设计和实现的一种多通道协议,用于远程连接 Windows 系统的桌面环境,使客户端可以仿佛身处目标计算机之前一样进行图形交互、音频播放、文件操作等。RDP 在最初的 Windows NT 4.0 Terminal Server Edition 中已经出现,之后在 Windows 2000、Windows XP、Windows Server 2003 等多个操作系统逐步演化。如今,RDP 已成为远程连接到 Windows 系统的事实标准之一。

RDP 协议位于应用层之上,利用 3389 端口进行网络传输。它采用多通道设计,将不同类型的数据(如键盘鼠标输入、图形数据、设备映射等)分配到各自的逻辑通道,以便进行更好的带宽利用和流量控制。RDP 协议的核心目标是将服务端桌面变化经过编码后高效地传输到客户端,并让客户端的输入操作可以及时传回服务端,形成流畅的远程交互体验。

在网络层面,RDP 可以使用 TLS(Transport Layer Security)加密,从而为数据传输提供机密性与完整性保护。为适应不同网络带宽和延迟,RDP 还在编码方式上提供了多种编解码算法,并支持压缩以及图形差分传输等策略,以减小带宽占用并提升用户体验。

---

## 三、RDP 的历史与发展

RDP 的发展可以分为早期阶段与持续演进两个大方面。早期,微软的设计目标是为终端服务器(Terminal Services)提供远程连接功能,使多用户可以共享一台性能较强的 Windows 服务器。而后随着 PC 计算能力的不断提升和网络基础设施的逐步完善,远程桌面逐渐变得日常化,越来越多的普通个人用户也开始用远程桌面进行维护、访问或协同工作。

在 Windows XP 及 Windows Server 2003 时代,RDP 版本逐步升级,加入了更高效的图像编码以及更好的安全特性。Windows Vista / Windows Server 2008 时代,RDP 引入了多种增强功能,包括多显示器支持、改进的音视频重定向、USB 设备重定向等。进入 Windows 7 / Windows Server 2008 R2 乃至 Windows 10 及后续版本后,RDP 又在图形渲染、视频解码、网络拥塞控制、触控支持等方面均有持续改进。

在此过程中,随着 RDP 协议的日趋完善,开源社区对 RDP 的研究兴致高涨,纷纷试图通过逆向工程或官方文档(有时微软会公开部分协议规范,以促进互操作性)了解其细节。最终,FreeRDP 以及 xrdp 等多种与 RDP 协议互操作的开源项目得以成长并形成一定规模。但是,RDP 的核心依旧由微软掌控,其在各大 Windows 平台中的实现始终所占份额最高。

---

## 四、RDP 协议的核心原理

### 4.1 多通道结构

RDP 的多通道结构是其重要特征之一,协议将不同类型的数据映射为不同的逻辑通道,以便独立处理和控制。例如:

- **主会话通道**:用来传输主要的图形数据、输入数据等。
- **输入设备通道**:专门处理键盘、鼠标以及触控笔等用户输入消息。
- **音频通道**:处理音频数据的双向传输(如远程播放声音、或将本地麦克风输入传给服务端)。
- **剪贴板通道**:支持剪贴板共享,使两端能够复制粘贴文本或文件。
- **设备重定向通道**:允许将本地打印机、存储设备、智能卡读取器等映射到远程主机。

多通道结构便于 RDP 针对不同类型的数据应用不同的压缩、打包算法,有效提升整体效率和吞吐。

### 4.2 图形编码与传输

RDP 需要不断将服务端操作系统桌面(Windows 桌面)上的绘图指令或最终渲染结果发送给客户端。最初,RDP 使用的是基于 GDI(Windows 图形设备接口)的绘图命令转发;后来为提升性能,引入了更高级的图像压缩编码,甚至在比较新版本中也考虑到多媒体播放的需求,对视频流进行专用的编解码策略。

常见的图形传输方式包括:

- **BitBlt** 操作序列:将像素块复制、移动或绘制到屏幕区域,客户端处理相同的绘图指令来重建画面。  
- 基于 **RemoteFX** 的渲染增强:RemoteFX 是微软为 RDP 引入的一套扩展组件,通过更高效的编码,在弱网络环境下也能获得较为流畅的图形、视频和 3D 渲染能力。

### 4.3 输入设备映射

在远程桌面中,完整的用户交互需要将客户端的鼠标、键盘等输入反射到服务端系统,这要求 RDP 提供精细的事件转发机制。客户端监测到鼠标移动、点击或键盘敲击等操作后,会将这些指令通过输入通道发送给服务端,从而让远程 Windows 系统将其视为本地输入进行处理,实现真正的远程操控。

### 4.4 安全与加密

RDP 默认使用 3389 TCP 端口,支持多种安全层级,最简单的方式是基于 TLS 进行加密,也可以采用微软专有的多层安全机制(CredSSP、RDP Security Layer、TLS Security Layer 等)。在较新的版本中,大多数情况下都推荐启用 TLS 来确保会话的加密传输与身份验证,以防中间人攻击、窃听或冒充服务器等风险。

---

## 五、RDP 协议的安全机制

RDP 的安全不只依赖网络层的 SSL/TLS 加密,也包括以下机制:

1. **网络级身份验证(NLA)**:即 CredSSP(Credential Security Support Provider),要求客户端在建立远程桌面会话之前先通过一轮凭证验证(如用户名密码、或其他认证方式),从而有效防止在远程连接尚未完成协商时对服务器资源的恶意利用。

2. **双向身份验证**:服务器需要向客户端展示有效的证书,而客户端也需要向服务器提供正确的账号密码或其他认证手段,保证双方身份都可信。

3. **策略与组策略控制**:在 Windows 域环境或本地策略中,管理员可以设定 RDP 连接的加密级别、是否允许弱加密算法、是否需要强制使用网络级身份验证等。

4. **集中监控与日志**:企业在使用 RDP 时往往还采用相关的日志审计工具,对终端服务器的会话进行监控与记录,以满足合规与安全需求。

当然,RDP 也存在潜在的风险,例如如果系统未打安全补丁,则可能存在针对 RDP 协议的漏洞(如著名的“BlueKeep”漏洞),因此保持系统更新、启用访问控制和强密码策略至关重要。

---

## 六、RDP 协议的典型应用场景

1. **服务器远程维护**:管理员可在数据中心或异地通过 RDP 登录并管理 Windows Server 系统,执行软件安装、故障排除、服务重启等运维操作,无需亲临现场。

2. **虚拟桌面基础架构(VDI)**:企业可通过 RDP 向用户提供虚拟机的桌面访问,将所有应用及数据集中在服务器端,方便管理与维护,还可统一进行安全策略布置。

3. **跨区域协同办公**:在疫情或互联网普及的背景下,很多个人或组织都需要在家办公或异地协同,RDP 可使他们直接访问公司内部计算机的图形界面。

4. **应用程序远程发布**:借助 Terminal Services 或 RemoteApp 模式,企业可只将特定应用程序的窗口发布给客户端,而非整个桌面,提升安全性和易用性。

---

## 七、FreeRDP 简介

FreeRDP 是一个基于 Apache License 2.0 协议开源的 RDP 客户端实现项目,最早起源于 rdesktop(另一个早期的开源 RDP 客户端项目)社区。由于 rdesktop 的更新维护陷入瓶颈,部分开发者转而通过逆向和参考微软公开的协议文档,建立了全新的、模块化更好的 FreeRDP 项目。它旨在实现对最新版 RDP 协议的兼容,并提供丰富的扩展和配置能力。

FreeRDP 拥有以下显著特点:

- **跨平台支持**:支持在 Linux、FreeBSD、macOS、Windows(包含 Cygwin/MinGW 环境)等多种操作系统上编译运行。  
- **丰富的特性集合**:覆盖音视频转发、剪贴板、多个安全层(TLS、NLA、RDP Security Layer 等)、多显示器以及 USB 重定向等多种功能。  
- **插件化设计**:通过编写插件或模块,开发者可以为 FreeRDP 添加新的功能,比如自定义的加密、认证、图形渲染方式等。  
- **不断追随微软的协议更新**:随着微软在 Windows 新版本中对 RDP 的改进,FreeRDP 社区也会尽量跟进并实现对应的新特性。

---

## 八、FreeRDP 重点特性

### 8.1 网络级身份验证 (NLA)

FreeRDP 支持基于 CredSSP 的网络级身份验证,这通常也是现代 Windows 系统默认启用的认证方式。通过命令行选项或配置,可灵活启用或禁用 NLA,并配合用户名、密码、域等信息进行登录。

### 8.2 TLS/SSL 加密

FreeRDP 能支持 TLS 连接,以对 RDP 会话进行加密,防止敏感信息在网络上被窃听。此外,如果服务器端启用了更高级别的安全策略,客户端需要配置正确的加密算法或证书验证方式。

### 8.3 多显示器支持

若用户使用多显示器环境,可以使用 FreeRDP 命令行参数告诉客户端启用多显示器模式,以在远程系统中映射多块显示设备,从而最大限度地模拟本地工作环境。

### 8.4 音视频与麦克风输入重定向

对于需要远程播放音频、视频或进行语音会话的场景,FreeRDP 的音频通道功能非常实用。用户可以将服务端的音频流重定向到本地播放,也可以将本地麦克风输入发送给服务端。

### 8.5 剪贴板同步

通过剪贴板通道,FreeRDP 可以实现远程主机与本地主机之间的文本或文件复制粘贴。对于跨系统的工作流程(比如在本地编辑一段文本再粘贴到远程应用里)非常方便。

### 8.6 USB 设备重定向

FreeRDP 还支持 USB over RDP 等扩展,通过特定插件可以把本地 USB 设备映射为远程系统可见的设备(如存储、摄像头、智能卡读卡器等),满足更广泛的应用需求。

---

## 九、FreeRDP 的安装与使用

在 Linux 发行版中,许多软件源都提供了预编译的 FreeRDP 包。例如在 Ubuntu/Debian 中,可以简单地通过以下命令进行安装:

```bash
sudo apt update
sudo apt install freerdp2-x11
```

安装完成后,就可以使用 `xfreerdp` 命令连接远程主机,示例命令如下:

```bash
xfreerdp /u:用户名 /p:密码 /v:远程主机地址
```

其中 `/v:` 后跟远程主机 IP 或域名,`/u:`、`/p:` 表示要使用的账户名和密码。若需要指定域,可使用 `/d:` 参数。例如:

```bash
xfreerdp /d:MYDOMAIN /u:john /p:123456 /v:192.168.1.100
```

另外,FreeRDP 命令行支持大量参数,比如:

- `/multimon` 用于启用多显示器  
- `/sound` 用于接收远程音频  
- `/mic` 用于发送本地麦克风输入  
- `/clipboard` 开启剪贴板同步  
- `/drive:盘符,本地路径` 映射本地文件夹  

用户可根据需求灵活组合这些参数,定制化程度很高。

---

## 十、FreeRDP 的编译与常见参数

对于想要使用最新功能或对源码进行研究的开发者,可以从 FreeRDP 的 GitHub 仓库(https://github.com/FreeRDP/FreeRDP)克隆项目并自行编译。常见的编译流程大致如下:

1. **安装依赖**:FreeRDP 依赖 cmake、OpenSSL、libX11、libXext、libXinerama、libxcursor、libxdamage、libxkbfile、libpulse 等库。  
2. **获取源码并创建构建目录**:  
   ```bash
   git clone https://github.com/FreeRDP/FreeRDP.git
   cd FreeRDP
   mkdir build && cd build
   ```
3. **调用 cmake**:  
   ```bash
   cmake -DCMAKE_BUILD_TYPE=Release -DWITH_SSE2=ON -DWITH_CAIRO=ON ..
   ```
   其中可以添加更多的选项,比如 `-DWITH_PULSE=ON` 以启用脉冲音频支持,`-DWITH_X11=ON` 以启用 X11 相关功能,等等。  
4. **编译并安装**:  
   ```bash
   make -j4
   sudo make install
   ```

在编译完成后,通过 `xfreerdp --version` 验证安装的 FreeRDP 版本,以确保编译选项正确生效。

---

## 十一、FreeRDP 的扩展与插件体系

FreeRDP 采用模块化结构,可以通过插件(插件也称“通道”)方式对某些功能进行额外扩展或更改。典型的扩展包括:

- **音视频编解码插件**:在特定网络环境或操作系统中,有针对性的使用不同的编解码库,以降低延迟或提升兼容性。  
- **加密插件**:如果组织需要自定义的加密算法,或需要符合特定合规要求,可编写专用的加密插件。  
- **外设重定向插件**:针对 USB、音频设备、甚至自定义硬件设备进行专用的映射,实现更多远程交互场景。

在设计插件时,需要熟悉 FreeRDP 的内部通道处理机制,并按照社区的接口规范进行封装,让主进程能够在启动或运行时动态加载相应插件。

---

## 十二、性能及优化

远程桌面的性能主要受网络状况、服务器端处理能力以及客户端解码能力的影响。当网络带宽有限或延迟较高时,图形传输将面临巨大的挑战。因此,在使用 FreeRDP 或任何 RDP 客户端时,可以从以下几个方向进行优化:

1. **降低分辨率或颜色深度**:在网络受限时,减少远程桌面的分辨率或采用 16 位色深,可以大幅度降低数据传输量。  
2. **禁用窗口特效**:在 Windows 侧禁用过多的桌面特效(如 Aero 透明、动画等),可减少渲染传输的负担。  
3. **适当提高图形压缩**:若服务器端支持 RemoteFX 或其他高级编码,可以在 FreeRDP 客户端中启用相应选项,但同时要考虑客户端 CPU 的解码能力。  
4. **充分使用硬件辅助**:针对音视频流重定向时,若 FreeRDP 的编解码模块或操作系统支持 GPU 硬件解码,则可让客户端显卡分担解码工作,以提升流畅度。  
5. **网络层面优化**:采用更稳定、低延迟的网络链路,或通过 VPN 进行就近接入,这些都能显著改善远程桌面体验。

---

## 十三、与其他远程桌面协议比较

在远程桌面领域,除了 RDP 以外,VNC(Virtual Network Computing)、TeamViewer 和 NoMachine(NX 协议)等也都广受使用。它们各有优缺点:

- **VNC**:相对简单、通用,跨平台度高,但在高延迟或低带宽下体验较差,通常没有 RDP 那样强大的多媒体优化支持。  
- **TeamViewer**:商业化程度高,连接简单,支持穿透 NAT,适合临时远程协助,但对企业级扩展控制和自定义不够灵活。  
- **NoMachine(NX 协议)**:对网络带宽的利用效率非常出色,压缩算法优秀,且可跨平台,但其开源版本的功能相对有限,部分特性需要付费版支持。  
- **RDP**:整合度高,尤其对于 Windows 环境官方支持最好,Enterprise 级别的管理功能丰富,随着微软不断改进,其兼容性及效率均表现良好。

FreeRDP 则是专门面向 RDP 生态的一款开源客户端,在开放性与可定制化上具有相当大的优势。

---

## 十四、常见问题与故障排查

1. **无法连接或连接失败**  
   - 检查服务器 Windows 系统是否开启 RDP 服务,或在防火墙中放行 3389 端口。  
   - 确认是否启用了 NLA,如果客户端不支持 NLA 则会连接失败。  
   - 查看安全日志或使用 Wireshark 抓包诊断网络通信是否正常。

2. **身份验证错误**  
   - 若开启了网络级身份验证,需要确保客户端版本支持 CredSSP,且用户名密码无误。  
   - 当服务器使用自签名证书时,某些客户端可能会提示证书无效,需要在命令行中忽略证书验证或导入证书。  

3. **图形或显示问题**  
   - 若远程桌面的分辨率超出客户端物理显示器上限,可能需添加 `/f`(全屏)或 `/size:WIDTHxHEIGHT` 参数。  
   - 如出现撕裂或画面卡顿,可尝试关闭 RemoteFX,或降低色深、分辨率后测试。  

4. **设备重定向失败**  
   - 确认编译时启用了相关插件(如 USB、音频、打印机重定向)。  
   - Windows 侧也需要开启并允许对应的设备重定向策略,比如组策略中“允许音频重定向”等。

---

## 十五、未来发展趋势

在云计算与虚拟化技术的进一步发展下,远程桌面协议会在以下方向继续演变:

1. **更优化的多媒体体验**:包括高清视频和实时音频,甚至支持 AR/VR 相关的远程协作场景,需要在压缩与延迟之间取得更好平衡。  

2. **混合云与容器化**:大量企业开始将 Windows 应用容器化或放置在混合云环境中,需要更灵活的远程访问方式,RDP 也会与容器技术、云控制面板结合更紧密。  

3. **进一步提升安全性**:伴随网络威胁的不断升级,RDP 协议将与零信任体系的理念结合,通过更细粒度访问控制、多因素认证、行为监控等手段来应对恶意攻击。

4. **自动化运维与 DevOps 集成**:未来可能会有更多 RDP 的自动化管理接口,对远程桌面的监控、脚本化操作、批量部署等予以支持。

对于 FreeRDP 而言,随着微软在新一代的 Windows Server 和 Windows 10/11 继续升级 RDP 协议,项目也会引入新的特性扩展。社区保持活跃的开发状态,将不断合并各类 PR、修复漏洞、增强对特定平台或硬件的兼容性。相信 FreeRDP 在后续的远程桌面多样化应用中仍将扮演不可或缺的角色。

---

## 十六、总结

RDP 协议是微软在远程桌面领域的得力之作,它通过多通道架构、高效的图形与输入设备映射以及安全加密策略,成为 Windows 平台下远程访问的不二之选。无论是企业服务器运维、个人电脑协作,还是基于虚拟化/云桌面方案,RDP 都提供了稳定可靠的远程访问体验。

FreeRDP 作为开源世界中的重要实现,紧跟 RDP 协议的更新幅度,通过跨平台特性、插件式设计和灵活配置方式,满足了更广泛的使用需求。对普通用户而言,FreeRDP 提供了可替代官方 Windows 客户端的解决方案;对开发者和企业而言,FreeRDP 还能作为底层库被集成到自定义的远程桌面产品或功能中。

尽管远程桌面概念已不算新鲜,但随着云计算、分布式办公及远程运维的继续深化,RDP 与 FreeRDP 的应用前景仍旧广阔,甚至还会在各种新兴技术场景中衍生出新的使用模式。对广大技术爱好者、运维管理员或企业 IT 部门人员而言,深入了解 RDP 协议的工作原理,熟练掌握并运用 FreeRDP,无疑能够大大提高远程协作的效率和灵活性。

---

以上即是对 RDP 协议与 FreeRDP 的较为详尽介绍。希望通过对协议机制、历史演变、核心特性、安装配置与使用示例、常见问题及难点的剖析,让读者对二者的内涵与外延都有充分的理解,并能在实际场景中正确、熟练地加以运用。
 

相关文章:

RDP协议详解

以下内容包含对 RDP(Remote Desktop Protocol,远程桌面协议)及其开源实现 FreeRDP 的较为系统、深入的讲解,涵盖协议概要、历史沿革、核心原理、安全机制、安装与使用方法、扩展与未来发展趋势等方面, --- ## 一、引…...

设计模式的艺术-观察者模式

行为型模式的名称、定义、学习难度和使用频率如下表所示: 1.如何理解观察者模式 一个对象的状态或行为的变化将导致其他对象的状态或行为也发生改变,它们之间将产生联动,正所谓“触一而牵百发”。为了更好地描述对象之间存在的这种一对多&…...

【C语言设计模式学习笔记1】面向接口编程/简单工厂模式/多态

面向接口编程可以提供更高级的抽象,实现的时候,外部不需要知道内部的具体实现,最简单的是使用简单工厂模式来进行实现,比如一个Sensor具有多种表示形式,这时候可以在给Sensor结构体添加一个enum类型的type,…...

Baklib如何优化企业知识管理提升团队协作与创新能力分析

内容概要 在现代企业中,知识管理已经成为提升竞争力的关键因素之一。Baklib作为一种全面的知识管理解决方案,致力于帮助企业高效整合和运用内部及外部知识资源。它通过建立统一的知识管理框架,打破了部门之间的信息壁垒,实现了跨…...

Dubbo view

1、 说说Dubbo核心的配置有哪些? 答: 配置 配置说明 dubbo:service 服务配置 dubbo:reference 引用配置 dubbo:protocol 协议配置 dubbo:application 应用配置 dubbo:module 模块配置 dubbo:registry 注册中心配置 dubbo:monitor 监控中心配置 dubbo:pr…...

分享刷题过程中有价值的两道题目

小编在这里先祝大家新的一年里所愿皆得,万事顺意,天天开心!!! 一.水仙花数 题目描述: 求100∼999中的水仙花数。若三位数ABCA^3B^3C^3,则称ABC为水仙花数。例如153,135333112527153&…...

蓝桥杯例题六

奋斗是一种态度,也是一种生活方式。无论我们面对什么样的困难和挑战,只要心怀梦想,坚持不懈地努力,就一定能够迈向成功的道路。每一次失败都是一次宝贵的经验,每一次挫折都是一次锻炼的机会。在困难面前,我…...

DeepSeek 详细使用教程

1. 简介 DeepSeek 是一款基于人工智能技术的多功能工具,旨在帮助用户高效处理和分析数据、生成内容、解答问题、进行语言翻译等。无论是学术研究、商业分析还是日常使用,DeepSeek 都能提供强大的支持。本教程将详细介绍 DeepSeek 的各项功能及使用方法。…...

《tcp/ip协议详解》,tcp/ip协议详解

TCP/IP协议(Transmission Control Protocol/Internet Protocol)是网络通信协议的一种,也被称为“Internet协议”,是Internet上运行的基本协议,广泛应用于各种网络环境和应用场合。以下是对TCP/IP协议的详细解析&#x…...

游戏引擎 Unity - Unity 设置为简体中文、Unity 创建项目

Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...

【数据结构】_时间复杂度相关OJ(力扣版)

目录 1. 示例1:消失的数字 思路1:等差求和 思路2:异或运算 思路3:排序+二分查找 2. 示例2:轮转数组 思路1:逐次轮转 思路2:三段逆置(经典解法) 思路3…...

[Java]异常

在程序运行时,如果遇到问题(比如除以零、文件找不到等),程序会发生异常。异常就像是程序的“错误提醒”,当程序运行中出错时,它会停止,给出一个错误信息。我们可以通过异常处理来控制这些错误&a…...

【C++语言】卡码网语言基础课系列----13. 链表的基础操作I

文章目录 背景知识链表1、虚拟头节点(dummyNode)2、定义链表节点3、链表的插入 练习题目链表的基础操作I具体代码实现 小白寄语诗词共勉 背景知识 链表 与数组不同,链表的元素存储可以是连续的,也可以是不连续的,每个数据除了存储本身的信息…...

Vue.js组件开发-实现图片浮动效果

使用Vue实现图片浮动效果 实现思路 将使用Vue的单文件组件&#xff08;.vue&#xff09;来实现图片浮动效果。主要思路是通过CSS的transform属性结合JavaScript的定时器来改变图片的位置&#xff0c;从而实现浮动效果。 代码实现 <template><!-- 定义一个包含图片…...

自制Windows系统(十一、Windows11GUI)

开源地址&#xff1a;下载&#xff08;Work(Windows11gui).img&#xff09; 上图 部分代码&#xff1a; void init_screen8(char *vram, int x, int y) { int *fat; unsigned char c; struct MEMMAN *memman (struct MEMMAN *) MEMMAN_ADDR; boxfill8(vram, x, 136, 0, …...

索罗斯的“反身性”(Reflexivity)理论:市场如何扭曲现实?(中英双语)

索罗斯的“反身性”&#xff08;Reflexivity&#xff09;理论&#xff1a;市场如何扭曲现实&#xff1f; 一、引言&#xff1a;市场是镜子&#xff0c;还是哈哈镜&#xff1f; 在传统经济学中&#xff0c;市场通常被认为是一个理性、有效的反映现实的系统。按照经典经济学理论…...

力扣257. 二叉树的所有路径(遍历思想解决)

Problem: 257. 二叉树的所有路径 文章目录 题目描述思路复杂度Code 题目描述 思路 遍历思想(利用二叉树的先序遍历) 利用先序遍历的思想&#xff0c;我门用一个List变量path记录当前先序遍历的节点&#xff0c;当遍历到根节点时&#xff0c;将其添加到另一个List变量res中&…...

使用朴素贝叶斯对散点数据进行分类

本文将通过一个具体的例子&#xff0c;展示如何使用 Python 和 scikit-learn 库中的 GaussianNB 模型&#xff0c;对二维散点数据进行分类&#xff0c;并可视化分类结果。 1. 数据准备 假设我们有两个类别的二维散点数据&#xff0c;每个类别包含若干个点。我们将这些点分别存…...

如何实现滑动列表功能

文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了沉浸式状态栏相关的内容&#xff0c;本章回中将介绍SliverList组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1 概念介绍 我们在这里介绍的SliverList组件是一种列表类组件&#xff0c;类似我们之前介…...

计算机网络一点事(22)

地址解析协议ARP ARP&#xff1a;查询Mac地址 ARP表&#xff08;ARP缓存&#xff09;&#xff1a;记录映射关系&#xff0c;一个数据结构&#xff0c;定期更新ARP表 过程&#xff1a;请求分组&#xff0c;响应分组 动态主机配置协议DHCP 分配IP地址&#xff0c;配置默认网关…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

虚拟电厂发展三大趋势:市场化、技术主导、车网互联

市场化&#xff1a;从政策驱动到多元盈利 政策全面赋能 2025年4月&#xff0c;国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》&#xff0c;首次明确虚拟电厂为“独立市场主体”&#xff0c;提出硬性目标&#xff1a;2027年全国调节能力≥2000万千瓦&#xff0…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...