普通视图

发现新文章,点击刷新页面。
昨天以前首页

X Window 与 Wayland 的深度对比

2025年3月28日 00:00

X Window 与 Wayland 不仅代表了图形界面技术不同发展阶段,更体现了设计理念、架构模式及应用场景的显著差异。本文将从历史背景、技术特点、应用场景及未来展望等多个维度,对 X Window 和 Wayland 进行深入剖析。

历史背景演变

X11 诞生于 1984 年,由麻省理工学院 MIT 开发,旨在满足分布式计算环境下图形界面需求。其设计哲学强调网络透明性,允许用户在远程服务器运行应用程序,并在本地终端显示结果,极大地拓展 GUI 的可用性和灵活性。随着时间推移,X11 凭借其广泛的硬件和软件支持,逐渐成为 Linux 桌面环境的标准图形界面后端。

随着计算需求增长,X11 的一些设计局限逐渐显现,例如架构复杂、性能瓶颈和安全性问题。2008 年,Kristian 提出 Wayland 项目,旨在创建一个更加现代、高效窗口系统。Wayland 的设计重点在于简化架构、提高性能和增强安全性,采用客户端 Compositor 通信模型,减少了中间层,提升了效率和响应速度。

技术特点比较

X11 采用 C/S 模型,客户端通过 X 协议与服务器通信,而 X 服务器负责处理所有图形和输入事件。相比之下,Wayland 采用了客户端 Compositor 模型,客户端可直接与 Compositor 通信,Compositor 负责了窗口管理、合成、输出。Wayland 的架构更加贴合现代图形硬件特性,可以更高效地利用 GPU 和现代显示技术。

X11 在安全性方面存在了固有弱点,其复杂协议和广泛权限易被恶意利用。Wayland 通过限制客户端权限以及简化通信模型,显著提高了安全性。例如,Wayland 禁止了应用程序直接访问底层硬件,只允许了它们与 Compositor 通信,从而增强系统的安全性。

Wayland 的协议设计更加高效,减少了延迟和带宽消耗。在移动设备和资源受限的环境中,Wayland 的优势尤为明显。此外,Wayland 避免了不必要的复杂性和额外处理,使得其在性能上优于 X11。尤其是在窗口大小调整以及拖动等操作中,Wayland 显得更加的平滑流畅。

X11 拥有庞大的生态系统,支持大量的应用程序和工具,几乎所有 Linux 发行版默认都使用 X11。然而,Wayland 的生态系统正在快速发展,主要桌面环境如 GNOME 和 KDE 已全面支持 Wayland。尽管如此,一些特定应用程序和工具可能仍需要额外的兼容层或补丁才能在 Wayland 下运行。

应用场景

在桌面环境中,X11 凭借其广泛的兼容性和成熟度,仍然是许多用户的首选。但随着硬件技术的进步和用户对高性能图形渲染的需求增加,Wayland 正在逐渐成为主流的选择。

越来越多的 Linux 发行版开始默认支持 Wayland,例如 Fedora 和 Ubuntu 等。

在移动设备和嵌入式系统中,资源受限是一个普遍的问题。Wayland 的低功耗以及高性能特性使其成为这些场景下的理想选择。

例如,Android 系统中的 SurfaceFlinger 就是基于 Wayland 的原理设计,用于图形显示以及窗口管理。

在虚拟化和云计算的环境中,图形性能以及网络传输效率至关重要。

虽然 X11 的网络透明性在某些场景下仍有些优势,但 Wayland 通过优化的协议和架构,正在成为虚拟桌面基础设施 VDI 和云桌面解决方案的首选,特别在需要高性能图形渲染的场景中。

未来展望

随着 GPU 技术的成熟以及高性能计算需求的增长,图形界面的渲染以及交互将变得更加复杂和多样化。

X11 和 Wayland 都在积极的探索与 Direct Rendering Manager、Mesa 等图形驱动框架的更紧密集成,以实现更高效的图形渲染和硬件加速。

此外,Wayland 还在研究如何更好地支持多显示器配置、高分辨率显示、触控输入,以满足未来计算环境多样化需求。

最后说两句题外话,近一个月杜老师因为工作的原因,拖更了很多篇文章,感谢小伙伴们的关注和催更,近期会大批量发表一些技术文章,欢迎大家关注。

软件工程师可以去的几家大厂(面试难度/薪资)

2025年2月7日 02:53

软件工程师都应该去面面顶级科技公司,不同公司的难度和录取率差异巨大。以下是对 Google、Microsoft、Meta、Amazon、Apple、TikTok(字节跳动)、Netflix 和 Jane Street 录取难度的分析,以及估算的 Offer 接受率。

大厂的福利较好,有份大厂的经历/经验在找下一份工作的时候会比较加分,毕竟大厂是Proven Record。

一般来说,微软/Microsoft是软件公司,但是微软也有Azure云。微软的挣钱项目比较多,不像谷歌苹果还有NetFlix比较单一。

公司 Offer 接受率 难度等级(1-10) 关键因素 平均薪资(总包)
Google ~0.2% – 0.5%(1/200 – 1/500) 9.5 算法、系统设计、高文化门槛 $300K+(L4,美国)
Microsoft ~1% – 2%(1/50 – 1/100) 7 系统设计、实用编程、资深友好 $200K – $250K(L60,美国)
Meta ~0.5% – 1%(1/100 – 1/200) 9 DSA 重度考察,节奏快 $300K+(E4,美国)
Amazon ~2% – 5%(1/20 – 1/50) 6.5 领导力准则、招聘量大 $180K – $220K(L5,美国)
Apple ~0.5% – 1%(1/100 – 1/200) 8.5 系统优化、底层开发 $250K – $300K(ICT3,美国)
TikTok(字节跳动) ~0.3% – 0.8%(1/125 – 1/300) 8.5 算法、分布式系统、推荐系统 $250K – $350K(L4,美国)
Netflix ~0.3% – 0.7%(1/150 – 1/300) 8.5 高代码质量要求,强调自驱力 $400K+(Senior,美国)
Jane Street ~0.05% – 0.1%(1/1000 – 1/2000) 10 量化交易,数学 & OCaml $400K – $700K+(New Grad,美国)

FinTech介绍

金融科技(FinTech)是金融(Finance)与科技(Technology)的融合,利用创新技术(如人工智能、大数据、区块链和云计算)来优化金融服务,提高效率并降低成本。FinTech 涉及支付、借贷、财富管理、保险、量化交易等多个领域,为个人和企业提供更便捷、安全的金融解决方案。从数字银行到加密货币,从智能投顾到去中心化金融(DeFi),FinTech 正在重塑全球金融体系,引领行业向更加智能化和个性化的方向发展。

FinTech 这个概念更广泛,不仅包括量化交易,还涉及 支付、数字银行、加密货币、去中心化金融(DeFi)、智能投顾(Robo-Advisors) 等多个领域。

Jane Street 简街介绍

JS/Jane Street是金融公司,听说给得钱超级多,刚毕业的就能在JS拿到200多K。JS是很有名的FinTech,可以说是FinTech里的Google。

Jane Street 可以算是 FinTech 领域的一部分,尤其是在 量化交易(Quantitative Trading) 和 高频交易(HFT, High-Frequency Trading) 方面。

Jane Street 主要是一家 量化交易公司和流动性提供商,他们利用复杂的数学模型、统计分析和高性能计算来进行自动化交易,属于 金融科技(FinTech) 的 量化金融(Quantitative Finance) 领域。

相比传统的 FinTech 初创公司(如 Stripe、Square、Revolut),Jane Street 更偏向 科技驱动的金融公司(Tech-driven Finance),但仍然属于 FinTech 生态的一部分。

Offer 接收率对比

Amazon 和 Microsoft 的 offer 接收率较高,分别在 2%-5% 和 1%-2%。相比之下,Google、Meta 和 Apple 的接收率较低,通常在 0.2%-1% 之间。而 TikTok、Netflix 介于二者之间,Jane Street 则最难进,接收率仅有 0.05%-0.1%。

难度对比

Jane Street 以 10 分的难度位列榜首,考察数学、概率和 OCaml 编程。Google 和 Meta 也极具挑战,尤其是算法和系统设计。Amazon 和 Microsoft 相对友好,招聘规模较大,门槛相对较低。

关键因素对比

各公司关注的重点不同:Google 和 Meta 主要考察数据结构与算法;Amazon 强调领导力准则;Apple 偏向底层开发;TikTok 重点关注推荐算法;Netflix 强调自驱力和代码质量;Jane Street 则高度依赖数学和函数式编程 Functional Programming (JS用的是OCAML语言)。

薪资对比

Jane Street 和 Netflix 薪资最高,新人起薪可达 $400K+。Google、Meta、TikTok 也非常可观,L4 级别的薪资可达 $300K+。Apple 和 Microsoft 稍低,而 Amazon 的薪资在入门级别(L5)相对较低,但晋升后可大幅增长。

如何提升成功率?

  1. 数据结构与算法 Google、Meta、TikTok 等公司对算法要求极高,Leetcode 刷题是必备的。
  2. 系统设计: Amazon、Microsoft 以及 Google 的高级岗位会重点考察系统设计能力。
  3. 行为面试: Amazon 的领导力准则、Googleyness 文化匹配都很关键。
  4. Netflix 文化契合: 强调自驱力,代码质量要求高,需要有很强的独立解决问题能力。
  5. 数学与概率: Jane Street 对数学、概率、统计、OCaml 编程要求极高。

TikTok 招聘特点

  • 字节跳动/抖音/近年大力扩招,但标准仍然严格,竞争激烈。
  • 重点考察数据结构与算法,面试风格类似 Google。
  • 对机器学习、推荐算法、分布式系统有较高要求。
  • 文化适配也很重要,字节强调“Owner 意识”(Ownership)。

总结

如果目标是 高薪 + 难度适中,TikTok 和 Netflix 可能是不错的选择。如果你追求 顶级薪资 并愿意挑战数学与编程的极限,Jane Street 是最终目标。如果你想加入 FAANG,Google、Meta 仍然是最好的选择,但难度较高。

软件工程师

英文:Software Engineering Companies: Which Company Pays Most? and Which Company Is Hardest to Get In?

本文一共 1260 个汉字, 你数一下对不对.
软件工程师可以去的几家大厂(面试难度/薪资). (AMP 移动加速版本)

扫描二维码,分享本文到微信朋友圈
75a5a60b9cac61e5c8c71a96e17f2d9c 软件工程师可以去的几家大厂(面试难度/薪资) 程序员 资讯
The post 软件工程师可以去的几家大厂(面试难度/薪资) first appeared on 小赖子的英国生活和资讯.

相关文章:

  1. ChatGPT 使用 Promise.All 重构/重写代码(并行发送请求) 在我的一个项目中, 我有以下代码(Node/Javascript), 它(顺序)调用了一些 API. 这些 HTTPS 请求其实是可以并行完成的, 因为它们相互独立. 然后结果会被聚合到一个数组中. 我知道可以用Promise.all来把这些请求并行化, 我就问了ChatGPT怎么弄, 看看它是否能理解并给出正确的代码: 我先用英文问 ChatGPT-3.5: Rewrite...
  2. 按揭贷款(房贷,车贷) 每月还贷计算器 去年给银行借了17万英镑 买了20万7500英镑的房子, 25年还清. 前2年是定率 Fix Rate 的合同 (年利率2.49%). 每个月大概是还 700多英镑. 有很多种还贷的计算方式, 定率/每月固定 是比较常用的. 简单来说就是 每个月交的钱是...
  3. 推荐一款程序员性价比高的机械键盘 KeyChron K8 程序员性价比高的机械键盘 Keychron 我第一款 keychron 键盘是四年前(2020年)买的,当时在AMAZON工作,通过公司经费报销的。当时还问了经理,需要节俭么?因为亚马逊的16条军规中的一条就是节俭/Frugal。当时经理说,只要能提高你的工作效率就行,我也没太敢搞太贵的,最后面只挑了一个60多美元的机械键盘,型号是: Keychron C2 Wired Mechanical Keyboard, RGB Backlight / Gateron Mechanical...
  4. 智能手机 HTC One M9 使用测评 虽然我对手机要求不高, 远远没有像追求VPS服务器一样, 但是怎么算来两年内换了四个手机, 先是三星 S4 用了一年多, 然后 Nokia Lumia 635 Windows Phone, 后来又是 BLU, 半年多前换了...
  5. 区块链中Layer 1和Layer 2协议的简介 Layer 1 和 Layer 2 是用来描述区块链技术中不同层次或层的术语,每个层都在维护和扩展区块链网络方面有其独特的作用和特点。 Steem的底层协议是C++写的,也就是steemd,见证人(也就是STEEM上的矿工)在自己的节点服务器上跑这个软件,共同运行这个区块链。steemd上支持一个custom_json操作,也就是可以调用API向区块链上写任何数据,这样的话,DApp分布式应用程序就可以在STEEM区块链上存储数据了,而在custom_json上的协议就是Layer 2/第二层。 Layer 1:基础协议 Layer 1 指的是区块链网络的基础层。它包括定义网络规则和操作的核心区块链技术。Layer 1的关键特性和组成部分包括: 共识机制...
  6. Docker, 虚拟机 (VM) 和 Kubernetes (K8s) Docker 与虚拟机(VMs) 概述:Docker和虚拟机(VMs)都用于在隔离的环境中部署和运行应用程序,但它们的实现方式不同。 Docker(容器) 轻量级:容器共享主机的操作系统内核,因此比虚拟机更轻便,启动速度更快。 隔离:Docker 提供进程级别的隔离,意味着多个容器可以在同一个操作系统实例上运行而不会相互干扰。 高效性:由于容器共享操作系统,只需打包应用程序及其依赖项,因此使用的资源更少。 虚拟机(VMs) 重量级:每个虚拟机包含一个完整的操作系统实例和虚拟化硬件,因此消耗更多的资源。 隔离:虚拟机提供完全的隔离,每个虚拟机拥有自己的操作系统,这样更安全但效率较低。 使用场景:虚拟机适用于在同一主机上运行多种操作系统类型,是需要完全操作系统级别隔离的传统应用程序的理想选择。 总结:Docker 容器更高效且部署更快,而虚拟机提供更强的隔离,更适合多样化的操作系统需求。 什么是...
  7. 怎么样安全的清空主机服务器空间? 很多朋友都有自己的VPS主机, 如果想取消销毁主机的时候, 可以采用以下二种方法来销毁主机. 虽然很多云主机可以让你很方便的一键销毁主机, 但是实际上你不清楚你的宝贵数据有没有可能被找回, 理论上可能, 这种可能性很小很小. 因为我们并不清楚云主机商在销毁的时候有没有真正去把硬盘的数据清空了. 像我有点强迫症的, 我就是不希望我的一些数据(比如啥爱情动作片)泄露了. rm -fr / LINUX上的这个命令: 1...
  8. 互联网大厂的 PIP 裁员计划 互联网大厂的 PIP 裁员计划...

VBA里搞数据透视表

2024年9月13日 08:17

因为我知道我要实现的那个功能,SQL可以做,数据透视表也可以做。就写代码的熟练程度来说,SQL我肯定更熟悉,VBA的数据透视表有很多参数,我搞不懂到底是什么,反正要实现那个功能,通常是录制一个宏,然后看着办,有需要的数据保留下来,不需要的数据直接删掉。录制的宏通常都很啰嗦,里面有非常多没有必要存在的东西。在不了解数据透视表在VBA里的参数的前提下,先进行一个录制显然是比较靠谱的步骤。但有些东西靠录制是录制不出来的,比如某些字段我需要进行筛选,我只知道有些东西是不能出现的,但我没办法确定可以出现的是什么,所以那一堆不能出现的东西都是反参数。在录制宏的时候,你只能看到什么就反选什么,但关键是这个数据源跟那个数据源的那些参数是不一样的。不一样我只能设定一堆反参数,只要它们是其中一个,就不能显示,但实际上这样的反参数让VBA的数据透视默认不出现你就得兜一个大圈,套上好几层公式实现。最终,在我调试的时候发现的确那些嵌套的公式能把那些反参数都排除在外,但如果数据源里所有数据都是反参数的一部分,那么就会报错,于是我又得在外面加一层捕捉错误的判断。真的是非常折腾。为什么之前我考虑的是SQL而不是数据透视表,反参数是其中一个点,另外一个点是排序。在SQL里,使用自定义序列排序是非常简单的事情,但是数据透视表的字段该如何排序呢?兜了一大圈我发现也就只能真的在Excel里面增加自定义序列,但如果我想用即弃呢,于是还得出了一招VBA先增加自定义序列,排序完以后再把自定义序列删除掉。这个操作在ExcelHome的教程里有,他们教的是在VBA里面,对单元格或者数组排序,不是针对数据透视表的,但实际上原理一样。

这个增自定义序列和减自定义序列到底是怎么确认呢?原来Excel还会对自定义序列给一个序号,所以在增自定义序列的时候,你就得把这个序号记下来,在减的时候把那个序号写上去。我不知道为什么其他人说数据透视表的自定义序列好像怎么排都不是自己想要的效果,但就我个人的经验来说,只要你在Excel里增加了自定义序列,当你刷新数据,默认对某个已经自定义过的字段进行升序,那就是你定义的那个顺序,不需要在设置里面搞一大通。但实际上我也搞不懂,手动设置里很麻烦的东西到底是什么。为什么数据透视表里面的排序就不能像普通表格排序那样那么的直观。我要以什么字段排序、以什么标准排序是系统默认的还是自定义序列。当然,数据透视表里还得考虑一个问题,就是有可能是套叠了多个汇总条件的,如果你自定义的是最后一层条件,首先限制你的是前面的那些所有条件,所以你想最后的那个自定义序列完全按照你的想法排列,你只能把它放到最前面。数据透视表跟SQL比起来,我感觉运行速度会慢一点,可能因为我里面判断设置的东西比较多,所以需要闪那么一下才能结束,但是SQL虽然我已经有意识地关注结尾这个问题,但测试频繁以后,SQL是会出现一些莫名其妙的事故,当你把所有东西关掉再打开就正常了。相比之下,数据透视表不会这么神经。

用不同的方法实现同样的事情,得出一样的结果,这种感觉很好。在探索这个的过程中,会让我体会到二者的优劣,以后选择的时候,我就可以更有底气地数出1234。

❌
❌