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

企业网站模板下载滚动网站模板/正规的计算机培训机构

企业网站模板下载滚动网站模板,正规的计算机培训机构,淘客网站自己做,程序员自己做网站赚钱近日,deepin(深度)社区亮相COSCon24 第九届中国开源年会开源市集,且社区资深桌面研发工程师张丁元为大家来了《Treeland,DDE进步的阶梯》技术分享。 就着这个机会,今天就让我们一起来聊聊如何在追求华丽动…

近日,deepin(深度)社区亮相COSCon'24 第九届中国开源年会开源市集,且社区资深桌面研发工程师张丁元为大家来了《Treeland,DDE进步的阶梯》技术分享。

就着这个机会,今天就让我们一起来聊聊如何在追求华丽动画和流畅体验的同时,还能保持系统的轻盈和高效。这就像是在玩一场平衡游戏,设计师和架构师各自站在天平的两端,一边是视觉盛宴,另一边是性能怪兽。这两者之间的平衡,就需要我们研发团队来巧妙地“牺牲”一些头发(脑力)来实现了。

历史背景

在 deepin 15 时期,开发团队使用 Mutter 为高性能设备提供流畅图形效果,用 Metacity 为低配置设备保证系统流畅性。但在 deepin 20 时期,团队决定采用 KWin 作为新窗口管理器,因其具备强大功能且可关闭合成器,适应不同硬件配置。因此,放弃了 Mullter+Metacity 的组合,以确保在各种设备上提供流畅安全的图形界面体验。然而,技术的不断发展促使我们再次面临技术革新。

技术选择:X11 与 Wayland

在 Linux 下目前有两个技术栈,一个是历史悠久的 X11,另一个是较新的 Wayland 。接下来,跟随我一起来对比两个技术。

X11Wayland
架构传统的客户端-服务器模型,支持网络传输和远程显示简化设计,去除×服务器复杂性,提高效率和响应速度,专注于本地显示
性能由于设计老旧,性能在现代场景下不
佳,依赖扩展和补丁实现现代图形效
现代化设计,简化染过程,性能提升显著,尤其在动画和窗口操作方面
安全性安全性问题明显,应用程序可以访问
彼此的窗口信息,易受恶意程序干扰
应用程序隔离性强,无法访问其他程序的图像或输入输出,安全性高
可扩展性和兼容性x11有非常广泛的应用支持和兼容性。
许多老的应用程序和桌面环境仍然依赖于X11协议
逐渐被主流桌面环境支持,但生态不如x11广泛,需要兼容层运行×11应用
输入设备支持对传统输入设备支持成熟,但在多点
触控和手势支持方面不够灵活
优化现代硬件支持,特别是在多点触控和手势方面
远程桌面和网络透明性支持通过网络远程传输显示内容,适
合专业领域使用
没有×11的网络透明性,远程桌面功能有限,通常需要第三方工具

总的来说,X11 作为老牌的显示服务器,拥有广泛的兼容性和成熟的生态系统。然而,其架构在安全性、性能和易用性方面存在一些局限性。相比之下,Wayland 作为一种新兴的显示服务器,其架构简化了客户端和服务器之间的通信过程,减少了潜在的安全漏洞,从而提高了整体的安全性。

此外,Wayland 在性能方面也有显著的优势,能够更好地支持现代显示技术,如高分辨率和高帧率的显示任务。最后,Wayland 的架构设计使得其配置和管理相对简单,用户体验更加友好,有助于吸引更多新手用户。

架构设计与新窗口管理器 Treeland

从技术层面上,我们认为是时候更新技术方案了,曾经的 X11 + 窗口管理器 + 合成器的模式,灵活但不满足需求,而 Wayland 可通过将窗口管理器、合成器与显示系统从底层整合,提供了一种避免画面撕裂的更新机制。

因此 DDE 决定结合 Wayland 开发一个新的窗口管理器——Treeland。它在底层使用 wlroots 作为 Wayland 基础库,不修改 wlroots 代码,可随时同步上游进度,获得新的功能和修复。上层使用 Qt,使技术栈更统一。它专为满足 DDE 需求而设计,避免了使用第三方窗口管理器时常见的破坏性调整、同步问题和维护成本。

上图描述了 Treeland 在整体上会使用哪些项目或接口完成功能。

Treeland 结构图

Treeland 的技术结构与功能

1、重要项目介绍

  • QWlroots:wlroots 的 Qt 绑定,将 Wayland 信号转换为 Qt 风格信号。

  • Waylib:将 wlroots 组件封装成 QtQuick 对象,使用 QPA 为 Treeland 提供事件转换与分发。

  • DtkDeclarative:DTK 的 QtQuick 组件,封装大部分 DTK style 控件。

在 Waylib 中,QPA 功能举足轻重。系统底层事件先进入 Waylib,转换为 Qt 内部事件发送给上层。当用户点击窗口时,Treeland 通过 Waylib 生成事件发送给客户端,完成界面交互。

Treeland 处理底层事件与上层事件的流程

2、界面效果与优化

  • 圆角:

DDE 及 deepin 社区应用大量采用窗口圆角设计,Treeland 提供自己的裁圆角控件,新造型算法减少几何顶点数量和计算量,采用新抗锯齿算法提高 GPU 性能。QtQuick 圆角是由 Rectangle 组件提供的,它只能同时对四个角进行操作(红色块)。但 DTK 程序具备异形窗口的能力,所以 Treeland 提供了自己的裁圆角控件(黄色块)。

新的造型算法、几何顶点数量比 QtQuick 原生的 Rectangle 减少50%,GPU 顶点渲染和三角细分性能提升100%。

采用新的抗锯齿算法,提高了 GPU 片元着色器性能,相比于普通 4xMSAA 抗锯齿算法,计算量减少1/4。

红色为 QtQuick 圆角/黄色为 Treeland 圆角

  • 模糊:

QtQuick 的模糊组件仅支持对控件自身进行模糊,这并不符合 Treeland 的需求。Treeland 重新实现模糊组件,能从显存获取组件下方图像数据,使用融合模糊算法优化性能。

QtQuick 模糊控件

Treeland 模糊控件

  • 阴影:

Treeland 使用 BorderImage 作为窗口阴影贴图,通过 ImageProvider 手动创建贴图材质,在相同大小下可复用同一份材质。

  • 动画:

直接使用 QtQuick 提供的动画组件为界面提供动画效果。使用 State 和 Transition 为组件定义属性变化,例如窗口最大化和还原,两个 State 切换会触发不同的 Transition 执行属性变化,在属性变化时,使用 QtQuick 的动画组件完成动画播放。

3、多用户功能

Treeland 作为解决方案的一部分,旨在实现多用户共用合成器。与传统模式相比,DDM 和 Treeland 重新设计工作流程,将 Treeland 单独抽离,用户通过相同机制将窗口画面发送给 Treeland 进行合成上屏,节省内存,避免黑屏闪烁和状态同步难题。

一个简化的 DDM 与 Treeland 的多用户登录流程

4、与 systemd 的集成

DDE 的每个用户会话切换至 systemd 服务,Treeland 模式下加载单独服务为用户会话注入显示环境变量,使用 systemd 的 socket 机制懒加载,确保用户侧窗口正常显示。

多用户登录时的基本流程

总结

深度操作系统(DDE)在窗口管理器方面的演进,从 Mutter 和 Metacity ,到 KWin ,再到我们自己的 Treeland ,展示了我们在系统架构和用户体验方面的持续创新和改进。

相关阅读:

(1)deepin - 国际排名查看

(2)深度桌面环境(DDE)

(3)deepin 2024 年度用户使用体验调研

相关文章:

Treeland 技术揭秘,如何使得 DDE 纵享丝滑?

近日,deepin(深度)社区亮相COSCon24 第九届中国开源年会开源市集,且社区资深桌面研发工程师张丁元为大家来了《Treeland,DDE进步的阶梯》技术分享。 就着这个机会,今天就让我们一起来聊聊如何在追求华丽动…...

快速了解SpringBoot 统一功能处理

拦截器 什么是拦截器: 拦截器是Spring框架提供的重要功能之一,主要进行拦截用户请求,在指定方法前后,根据业务需求,执行预先设定的代码。 也就是说,允许开发⼈员提前预定义⼀些逻辑,在⽤⼾的请求响应前后执⾏.也可以…...

C++区分数组的引用和引用的数组

void f(int (&arr)[10]) {//正确} void f1(int &arr[10]) {//不允许使用引用的数组} [](数组下标运算符)的优先级高于&(取地址运算符)。所有表达式&arr[i]等价于&(arr[i]) 引用的数组 一个包含引用的数组&…...

【harbor】离线安装2.9.0-arm64架构服务制作和升级部署

harbor官网地址:Harbor 参考文档可以看这里:部署 harbor 2.10.1 arm64 - 简书。 前提环境准备: 安装docker 和 docker-compose 先拉arm64架构的harbor相关镜像 docker pull --platformlinux/arm64 ghcr.io/octohelm/harbor/harbor-regist…...

ESLint 使用教程(五):ESLint 和 Prettier 的结合使用与冲突解决

前言 在现代前端开发中,代码质量与代码风格的统一是两个非常重要的方面。良好的代码质量能减少 bug 的产生,而统一的代码风格则能提高团队协作的效率。为了实现这两个目标,我们通常会使用一些工具。 为了保证代码的可读性和维护性&#xff0…...

uniApp之uni-file-picker使用踩坑

标题党~也不算坑吧 就是初体验 上传是需要存储一下子的,我以为uniApp是自己免费开的服务给大家中转使用,就没管这个事,但是官网是这么说的: 就我是怎么发现的,使用了一段时间后,上传的图片都裂了&#xff…...

【C语言】。末尼

用js写一个冒泡排序 当然可以。在JavaScript中&#xff0c;你可以使用递归的方式来实现冒泡排序算法。这是一个简单的示例&#xff1a; function bubbleSort(arr) { let len arr.length; if(len < 1){ return arr; // 如果数组只有一个元素或为空&#xf…...

【鉴权】深入解析 Token:身份认证的核心技术

目录 引言一、Token 的定义与概念1.1 Token 是什么&#xff1f;1.2 无状态性与自包含性1.3 Token 的工作流程1.3.1 基本工作流程1.3.2 工作流程图示 二、Token 的常见用途2.1 用户身份验证2.2 授权控制2.3 防止跨站请求伪造&#xff08;CSRF&#xff09;2.4 跨域认证 三、Token…...

FastReport将停止 .NET Framework 上的 WebReport 更新

从2024/ 12 /1 日起&#xff0c;Fastreport将停止发布更新和提供对 FastReport.Web (.NET Framework) 的技术支持。该库一直是使用 Online Designer 的许多项目中报告的核心。这些更改意味着 FastReport.Web (Legacy) 库&#xff08;FastReport.Net包的一部分&#xff09;将不再…...

面试:TCP、UDP如何解决丢包问题

文章目录 一、TCP丢包原因、解决办法1.1 TCP为什么会丢包1.2 TCP传输协议如何解决丢包问题1.3 其他丢包情况&#xff08;拓展&#xff09;1.4 补充1.4.1 TCP端口号1.4.2 多个TCP请求的逻辑1.4.3 处理大量TCP连接请求的方法1.4.4 总结 二、UDP丢包2.1 UDP协议2.1.1 UDP简介2.1.2…...

在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码

在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码 在Ubuntu下安装RabbitMQ可以按照以下步骤进行&#xff1a;步骤 1: 更新系统步骤 2: 安装Erlang步骤 3: 添加RabbitMQ仓库步骤 4: 更新APT索引并安装RabbitMQ步骤 5: 启动RabbitMQ服务步骤 6: 检查RabbitMQ状态步骤 7: …...

HTTPS通信和TCP通信有什么不一样

HTTPS通信和TCP通信的主要区别如下&#xff1a; ‌协议层次‌&#xff1a;HTTPS是应用层协议&#xff0c;建立在HTTP协议之上&#xff0c;并增加了SSL/TLS加密层&#xff1b;而TCP是传输层协议&#xff0c;提供可靠的数据传输服务。‌安全性‌&#xff1a;HTTPS通过SSL/TLS加密…...

Kafka 的一些问题,夺命15连问

kafka-中的组成员 kafka四大核心 生产者API 允许应用程序发布记录流至一个或者多个kafka的主题&#xff08;topics&#xff09;。 消费者API 允许应用程序订阅一个或者多个主题&#xff0c;并处理这些主题接收到的记录流 StreamsAPI 允许应用程序充当流处理器&#xff08;s…...

unity3d————延时函数

1.public void InvokeRepeating(string methodName, float time, float repeatRate); 延迟重复执行函数 InvokeRepeating 参数一&#xff1a;函数名字符串 参数二&#xff1a;第一次执行的延迟时间 参数三&#xff1a;之后每次执行的间隔时间 注意&#xff1a; 1-1.延时函数第…...

计算机学生自我提升方法——善用搜索引擎

计算机学生自我提升方法——善用搜索引擎 在信息爆炸的时代&#xff0c;计算机专业的学生如何有效地自我提升&#xff1f;答案可能就藏在一个简单却强大的工具——搜索引擎中。搜索引擎不仅是获取知识的入口&#xff0c;更是解决问题的利器。下面&#xff0c;我将分享一些善用…...

游戏引擎学习第一天

视频参考: https://www.bilibili.com/video/BV1zGDCYHErA/ 创建一个保存项目的路径 VS的安装略过&#xff0c;个人自行百度 1. vs 创建第一个CMAKE的窗口项目 game.cpp 修改如下的代码 到https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-winmain 去…...

uni-app view循环绑定click和 v-if

<view class"layout-wrap-item" v-for"(item, index) in menuItems" :key"index" click"item.clickHandler" :v-if"showMenu(item)"></view> const xxx (id) > { }; // 定义菜单项数组 const menuItems …...

Redis 高并发分布式锁实战

目录 环境准备 一 . Redis 安装 二&#xff1a;Spring boot 项目准备 三&#xff1a;nginx 安装 四&#xff1a;Jmeter 下载和配置 案例实战 优化一&#xff1a;加 synchronized 锁 优化二&#xff1a;使用 redis 的 setnx 实现分布式锁 优化三&#xff1a;使用 Lua 脚本…...

关于elementui el-radio 赋值问题

今天遇到这样的问题&#xff1a; 点击的时候&#xff0c;同时选中 照抄官网&#xff01; 后来发现了问题&#xff1a; 也就是说如果你的版本太低&#xff0c;就不能用value&#xff0c;而得用label&#xff0c;于是修改 <el-radio-group v-model"searchTime"&g…...

2024-11-6----Android 11(全志713m)----- 关于添加 Selinux 权限

需求 节点: /sys/devices/platform/motor0/motor_ctrl上层 APP 使用 JNI 需要对该节点进行 echo 的操作,操作失败。 添加前的验证工作 adb 进去验证下,如下图所示: 发现权限不够。su 以后再操作是OK的,如下图: 添加前的修改 为防止报权限错误,直接给777,因为该…...

shodan5(泷羽sec)

声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面&#xff0c;了解网络安全领域的见闻&#xff0c;了…...

【Linux】Ansible集中化运维工具(详解)安装、常用模块、playbook脚本

文章目录 一、Ansible安装及远程控制1、关闭防火墙和SELinux2、安装ansible3、配置SSH无密码登录1、在管理机上生成一对密钥2、将公钥下发到远程主机3、保管密钥 4、主机目录 二、常用模块1、setup模块2、copy模块3、file模块4、shell模块5、script模块6、ping模块7、group模块…...

惠州石湾DELL T130服务器黄灯不开机案例

惠州石湾一个朋友反馈一台DELL PowerEdge T130 塔式服务器故障为 通电后无法开机&#xff0c;前面同时亮3个故障灯。闪电灯&#xff0c;电压灯&#xff0c;高温灯 1&#xff1a;这种情况建议大家更换一个同型号的电源进行故障排除。 2&#xff1a;朋友把该服务器硬件最小化测…...

⭐SmartControl: Enhancing ControlNet for Handling Rough Visual Conditions

目录 0 Abstract 1 Motivation 2 Related Work 2.1 Text-to-Image Diffusion Model 2.2 Controllable Text-to-Image Generation 2.3 ControlNet 2.4 Control Scale Exploration 3 Method 3.1 Framework 3.2 Control Scale Predictor 3.3 Unaligned Data Constructi…...

wordpress站外调用指定ID分类下的推荐内容

在WordPress中&#xff0c;如果你想从站外调用指定ID分类下的推荐内容&#xff0c;你可以使用WordPress REST API来实现。以下是一个基本的步骤指南&#xff1a; 1. 启用REST API 确保你的WordPress站点已经启用了REST API。大多数现代WordPress版本默认启用此功能。 2. 获取…...

Ente: 我们的 Monorepo 经验

原文&#xff1a;manav - 2024.10.29 九个月前&#xff0c;我们切换到了 monorepo。在此&#xff0c;我将介绍我们迄今为止的切换经验。 这并不是一份规范性的建议&#xff0c;而是一个经验的分享&#xff0c;目的是希望能够帮助其他团队做出明智的决策。 与大多数岔路不同&…...

Kafka java 配置

前言&#xff1a; 大家好&#xff0c;大家在springboot项目中&#xff0c;经常采用 KafkaListener 做为消费者。这个是spring为我们封装的。 但是某些情况 注解的方式并不能满足需求。这个时候就需要手动版本了。 介绍&#xff1a; 我们已经集成spring-Kafka 就不需要再…...

网络安全现状:复杂的威胁形势导致压力水平飙升

《2024 年网络安全状况》报告深入分析了当前网络安全挑战和趋势。 该报告重点介绍了几个关键的关注领域&#xff0c;包括人员短缺、技能差距、不断演变的威胁和预算限制&#xff0c;同时还指出了取得进展的领域&#xff0c;例如对威胁响应能力的信心增强以及对网络风险评估的认…...

【机器学习】强化学习(1)——强化学习原理浅析(区分强化学习、监督学习和启发式算法)

文章目录 强化学习介绍强化学习和监督学习比较监督学习强化学习 强化学习的数学和过程表达动作空间序列决策策略&#xff08;policy&#xff09;价值函数&#xff08;value function&#xff09;模型&#xff08;model&#xff09; 强化学习和启发式算法比较强化学习步骤代码走…...

【SoC设计指南 基于Arm Cortex-M】学习笔记1——AMBA

AMBA简介 先进微控制器总线架构&#xff08;Advanced Microcontroller Bus Architecture&#xff0c;AMBA&#xff09;是用在arm处理器上的片上总线协议规范集。 AMBA总线协议规范集包含AHB、APB、AXI等。 AHB&#xff1a;先进高性能总线(Advanced High-performance Bus) APB&…...