X Window 程式設計入門-什么是x window?

本文深入解析XWindow系统的架构原理,包括XClient与XServer的关系、Display与Screen的概念、Event与Request的工作机制,以及Window的阶层性和XWindow的网路特性等关键技术要点。
X Client 和 X Server
X Window 为 一 Client- Server 架 构 之 GUI 。 Client 指 的 是 在 X Window 下 执 行 的 应 用 程 式, 需 要 X Server 为 其 服 务 ; Server 指 的是 整 个 管 理 你 的 桌 面 的 X Window 系 统 , 称 为 X Server 。 X Server 除 了 负 责 GUI 介 面 之 管 理 和 提 供 Client 端 的 服 务 之 外 , 并 且 还 管 理 系 统 资 源 ( Resource ) 和 事 件 ( Event ) 之 发 生 和 传 递 。
Display 和 Screen
  在 一 个 X Wintow System  可 以 包 含 多 个 Screen , 而 Screen 则 是 一 个实 际 的 Monitor 或 是 Device 。 每 个 Display 则 可 以 包 含 多 个 Screen 。 Display 指 的 是 一 群 Screen 和 一 个 pointer ( 一 般 是 滑 鼠 )加 上一 个 键 盘 的 集 合 。  

Event 和 Request
  当 Client 需 要 在 显 示 幕 上 开 一 个 window 或 是 显 示 一 段 文 字 或图 形 时 , 则 Client ( 即 X 下 的 应 用 程 式 ) 向 Server 提 出 一 个 Request ; Server 收 到 Request 之 后 , 则 依 据 Request 的 内 容 , 提 供 相 对 应 的 服 务 。当 使 用 者 在 属 于 某 一 Client 的 window 内 , 按 了 一 下 滑 鼠 的 右 键 , 或 是 敲 了 键 盘 上 的 一 个 Key , 则 Server 会 发 送 一 个 Event 给 该 Client 。 而 Client 只 要 依 据 Server 送 回 来 的 Event, 即可 判 断 有 何 事 件 发 生 , 然 后 依 据 所 发 生 的 Event 发 生 相 对 应的 动 作 。  

X Window 的 网 路 特 性
  Client 和 Server 不 一 定 要 在 同 一 部 电 脑 上 执 行 ; Client 和 Server 可 以 是 接 在 网 路 上 的 两 台 电 脑 。 当 Client 要 向 Server 发 出 Request 时 , 可 以 透 过 网 路 向 执 行 Server 的 机 器 发 出 Request , 然 后 送 达 给 Server 处 理 。 同 样 的 , 当 Server 要 向 Client 通 知 Event 的 发 生 时 , 也 可 以 透 过 网 路 向 Client 传 送 。 因 此 你 可 以在 A 地 的 电 脑 上 执 行 某 一 X Window 应 用 程 式 , 而 在 B 地 透 过 X Server 观 察 程 式 执 行 的 结 果 。  

一 个 X Window 的 程 式 , 也 就 是 Client , 在 同 一 时 间 可 以 和 一 个 以 上 的 Server 沟 通 。 也 可 以 同 时 和 多 个 Server 建 立 连 接 , 在 多个 Server 上 显 示 , 并 接 受 多 个 Server 的 讯 息 。 而 X Server 也 可 以在 同 时 间 内 , 接 受 多 个 Client 送 来 的 讯 息 , 并 做 对 应 的 处 理。

Window 的 阶 层 性
X Window 内 的 window 是 有 阶 层 关  的 , 这 阶 层 关  可 以 画 成 一树 状 图 。 在 树 状 的 最 上 层 是 root window , 这 个 window 是 Server 所特 有 的 。 除 了 root window 之 外 , 每 个 window 都 有 一 个 parent window , 即 是 在 树 状 图 上 的 上 一 层 window 。 在 树 状 图 的 下 一 层 window 称 为 child window 。 每 个 window 可 以有 多 个 child , 但 不 一 定 每 个 window 都 有 child 。 而 child window 下面 还 可 以 有 child 。   Win 1 和 Win 2 皆 为 root 的 child, root 则 为 Win 1 和 Win 2 的 parent 。 Win 2-1 和 Win 2-2 和 Win 2-3 则 为 Win 2 的 child , Win 2 则 为 Win 2-1 和 Win 2-2 和 Win 2-3 的 parent。而 root 和 Win 1 和 Win 2 则 皆 为 Win 2-1 和 Win 2-2 和 Win 2-3 的 ancestor。而 root 则 为 Win 1 和 Win 2 的 ancestor。  

在 显 示 幕 上 , child 永 远 在 parent 上 面 ( 即 parent 被 child 盖 住 ) 。 而 child window 可 以 比 parent window 大 , 但 超 过 parent 的 部 份 , 会 被 截 掉 而 不 显 示 在 显 示 幕 上 。
 蓝 色 部 分 为 parent window , 而 草 绿 色 部 分 则 为 child window 和 parent window 重 叠 的 部 分 。 在 parent window 外 面 灰 色 部 分 也 为 child window 的 一 部 分 , 但 其 为 超 过 parent window 视 窗  围 之 外 的 部 分 , 所 以 不 会 被 显 示 出 来 。 草 绿 色 部 分 则 是 显 示 child window 的 内 容 。  


当 显 示 幕 上 有 多 个 window 存 在 时 , 可 能 会 发 生 window 重 叠 的 现象 。 而 在 下 面 的 window 会 被 在 上 面 的 window 盖 掉 ; 当 上 面 的 window 移 离 目 前 位 子 , 而 使 原 本 被 盖 的 部 分 重 新 暴 露 出 来 , 这 时 就 必 需 重 画 露 出 来 的 部 分 。 但 X 并 不 保 証 会 保 存 你 原 本显 示 在 window 上 的 资 料 。 因 此 这 时 Client 就 必 需 负 起 重 画 的 责 任 了 。 当 X Server 没 保 存 重 新 被 暴 露 出 来 的 部 份 的 资 料 时 , X Server 会 送 出 Expose Event 给 Client, 通 知 Client 那 些 部 分 需 要 重 画。 然 后 Client 就 必 需 决 定 是 否 要 重 画 , 或 是 採 取 其 它 的 处 理 方 式 。

X Window 的 外 观
在 很 多 的 GUI 中 , 如 OS/2 等 , 都 会 提 供 Button, Scroll Bar, Menu 等 等 的 基 本 元 件 , 以 方 便 建 构 程 式 的 外 观 。 但 在 X 中 并 不 提供 这 样 的 元 件 ; 相 反 的 , X Window 提 供 的 是 一 套 建 立 外 观 风 格 的 机 制 。 利 用 这 套 机 制 , 我 们 可以 建 立 各 种 不 同 风 格 的 元 件 。 这 样 我 们 即 不 必 限 制 在 系 统 内定 的 风 格 中 , 而 无 法 做 改 变 。 这 套 机 制 是 用 大 小 不 同 的 window , 组 合 建 立 如 Button , Scroll Bar 等 等 的 元 件 , 充 满 了 弹 性 。
Window Manager
在 X 中 有 一 种 极 为 特 殊 的 程 式 , 称 为 Window Manager 。 其 作 用 是管 理 Desktop 上 的 各 应 用 程 式 的 window , 并 提 供 特 殊 风 格 的 window 外 观 。 不 同 的 Window Manager 有 不 同 的 外 观 风 格 。 因 此 ,我 们 可 以 更 换 不 同 的 Window Manager , 以 得 到 不 同 风 格 的 window 外 观 。 而 一 般 的 Client 则 必 需 和 Window Manager 合 作 , 以 得 到 良好 而 一 致 风 格 的 window。 Window Manager 也 是 一 Client 程 式 , 和 一 般 的 Client 相 同 。 只 是 Window Manager 负 有 特 别 的 任 务 ; 管理 Desktop 和 window 外 观 。
为 了 得 到 良 好 而 风 格 一 致 的 window, Client 和 Window Manager 必 需合 作 。 其 合 作 方 式 是 透 过 由 Client 传 送 Hint 给 Window Manager , 而 Window Manager 以 后 , 则 会 参 考 Hint 的 内 容 , 给 予 应 用 程 式 所开 出 的 window 适 当 的 外 观 。 但 Window Manager 不 一 定 会 依 据 Hint 指 示 处 理 , 纯 为 参 考 。

数据集介绍:电力线目标检测数据集 一、基础信息 数据集名称:电力线目标检测数据集 图片数量: 训练集:2898张图片 验证集:263张图片 测试集:138张图片 总计:3299张图片 分类类别: 类别ID: 0(电力线) 标注格式: YOLO格式,包含对象标注信息,适用于目标检测任务。 数据格式:JPEG/PNG图片,来源于空中拍摄或监控视觉。 二、适用场景 电力设施监控与巡检: 数据集支持目标检测任务,帮助构建能够自动识别和定位电力线的AI模型,用于无人机或固定摄像头巡检,提升电力设施维护效率和安全性。 能源与公用事业管理: 集成至能源管理系统中,提供实时电力线检测功能,辅助进行风险 assessment 和预防性维护,优化能源分配。 计算机视觉算法研究: 支持目标检测技术在特定领域的应用研究,促进AI在能源和公用事业行业的创新与发展。 专业培训与教育: 数据集可用于电力行业培训课程,作为工程师和技术人员学习电力线检测与识别的重要资源。 三、数据集优势 标注精准可靠: 每张图片均经过专业标注,确保电力线对象的定位准确,适用于高精度模型训练。 数据多样性丰富: 包含多种环境下的电力线图片,如空中视角,覆盖不同场景条件,提升模型的泛化能力和鲁棒性。 任务适配性强: 标注格式兼容YOLO等主流深度学习框架,便于快速集成和模型开发,支持目标检测任务的直接应用。 实用价值突出: 专注于电力线检测,为智能电网、自动化巡检和能源设施监控提供关键数据支撑,具有较高的行业应用价值。
【弹簧阻尼器】基于卡尔曼滤波弹簧质量阻尼器系统噪声测量实时状态估计研究(Matlab代码实现)内容概要:本文围绕“基于卡尔曼滤波的弹簧质量阻尼器系统噪声测量与实时状态估计”展开研究,利用Matlab代码实现对系统状态的精确估计。重点在于应用卡尔曼滤波技术处理系统中存在的噪声干扰,提升对弹簧质量阻尼器系统动态行为的实时观测能力。文中详细阐述了系统建模、噪声特性分析及卡尔曼滤波算法的设计与实现过程,展示了滤波算法在抑制测量噪声、提高状态估计精度方面的有效性。同时,该研究属于更广泛的信号处理与状态估计技术应用范畴,适用于复杂动态系统的监控与控制。; 适合人群:具备一定控制系统理论基础和Matlab编程经验的高校研究生、科研人员及工程技术人员,尤其适合从事动态系统建模、状态估计与滤波算法研究的相关人员。; 使用场景及目标:①应用于机械、航空航天、自动化等领域中对振动系统状态的高精度实时估计;②为噪声环境下的传感器数据融合与状态预测提供算法支持;③作为卡尔曼滤波算法在实际物理系统中应用的教学与科研案例。; 阅读建议:建议读者结合Matlab代码实践,深入理解系统建模与滤波器设计的关键步骤,关注噪声建模与滤波参数调优对估计性能的影响,并可进一步拓展至扩展卡尔曼滤波(EKF)或无迹卡尔曼滤波(UKF)在非线性系统中的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值