您的请求已被阻止,原因是网络策略。请登录或在此处创建帐户以恢复浏览。如果您正在运行脚本或应用程序,请在此处注册或使用您的开发者凭据登录。此外,请确保您的User-Agent不为空,并且是独特且具有描述性的,然后重试。如果您正在提供替代的User-Agent字符串,请尝试改回默认设置,因为这有时会导致阻止。您可以在此处阅读Reddit的服务条款。如果您认为我们错误地阻止了您,或者想讨论更轻松地获取所需数据的方式,请在此处提交工单。联系我们时,请提供您的Reddit帐户以及以下代码:e88cb210-94b7-4bc5-99bd-56ca030c4d57。
## 海象:高性能分布式消息流平台
海象是一个基于高性能日志存储引擎构建的、容错的分布式消息流平台。它通过基于段的分割、由 Raft 共识管理的自动领导者轮换以及基于租约的写屏障来实现可扩展性和可靠性。
主要特性包括自动负载均衡、简单的客户端协议(连接到任何节点)以及通过密封段从任何副本提供历史读取的能力。该系统包括节点控制器、Raft 引擎、集群元数据存储以及基于海象的桶存储。
生产者和消费者连接到任何节点,集群会智能地路由请求。主题被划分为段(约 1M 条目),领导者在轮换时进行切换,确保负载均衡。海象提供了一个简单的基于 TCP 的 CLI 用于交互(创建、生产、消费、状态、指标)。
性能基准测试表明,其写入和读取吞吐量具有竞争力,通常超过 Kafka 和 RocksDB。正式的 TLA+ 规范验证了数据一致性,并且核心存储引擎也作为独立的 Rust 库提供。提供了全面的测试和详细的文档。
## IndyCar 与一级方程式:主要区别
IndyCar 和一级方程式都是开放式赛车系列赛,但两者之间存在显著差异。一级方程式优先考虑尖端技术,是一项以推动技术极限为重点的制造商锦标赛,从而造就了速度更快的赛车。相反,IndyCar 强调车手技巧和坚固性,比赛场地包括公路/街道赛道*和*椭圆赛道。
一个主要区别在于下压力:一级方程式赛车产生更多的下压力,有助于在弯道中提高速度,但会产生“脏空气”,阻碍近距离竞速。IndyCar 的设计优先考虑来自赛车底部的下压力,从而促进更紧密的竞争,但牺牲了极致的弯道速度。
在引擎方面,两者都使用涡轮混合动力,但一级方程式拥有更高的马力(800-850 马力对 IndyCar 的 700 马力)和不受限制的涡轮增压。IndyCar 优先考虑引擎的寿命。轮胎也不同,一级方程式的 Pirelli 轮胎提供更多的抓地力,但耐用性不如 IndyCar 的 Firestone 轮胎,后者专为椭圆赛道的可靠性而设计。
最后,一级方程式车队大多自行制造,以最大限度地减轻重量,而 IndyCar 依赖 Dallara 提供坚固但更重的部件。这导致 IndyCar 更耐用,但在传统赛道上整体速度较慢。
无穷级数 1/4 + 1/16 + 1/64 + 1/256 + … 是数学史上最早被求和的级数之一;阿基米德在公元前200年就发现其总和为 1/3。有两个简洁的视觉演示可以立即说明这一点。在上面的单位正方形中,最大的黑色正方形面积为 1/4,下一个最大的黑色正方形面积为 1/16,依此类推。黑色、白色和灰色区域的总面积相等,因此黑色正方形的总面积必须为 1/3。同样的论证也可以用三角形来表示(如下所示)。如果最大三角形的面积为 1,那么最大的黑色三角形面积为 1/4,下一个最大的为 1/16,依此类推。黑色、白色和灰色区域的总面积相等,因此黑色区域的总面积必须为 1/3。图片:维基媒体共享资源。
## WinQuake的故事:它为什么存在以及它是如何工作的
WinQuake是为了解决在Windows 95上运行原始*Quake*时遇到的性能问题和技术限制而产生的。虽然*quake.exe*可以在DOS和Windows 95上运行,但在Windows下会因虚拟化开销而导致性能下降25%。访问Windows的TCP/IP堆栈也需要一个复杂的解决方法。重要的是,*quake.exe*由于与虚拟DOS机器不兼容,在Windows NT上表现不佳。
*Winquake.exe*旨在通过提供对Windows API(如Winsock)的直接访问,并利用各种“后端”来处理输入、音频和视频,来解决这些问题。不同的模式——如“max”、“fastvid”和“safe”——配置这些后端以实现最佳性能,用速度换取功能。
*WinQuake*灵活性的核心在于它的视频后端,从安全的GDI渲染到利用SciTech的MegaGraph Graphics Library (MGL)和DirectDraw的高性能选项不等。MGL及其“WinDirect”技术允许绕过标准的Windows图形界面,直接访问硬件。
最终,*WinQuake*通常可以匹配甚至超过原始DOS版本的性能,提供显著改进的体验,并展示了对向后兼容性的承诺,即使在现代Windows系统上仍然存在。
## 使用 CodeQL 进行 JavaScriptCore 漏洞挖掘:总结
本文详细介绍了使用代码分析工具 CodeQL 探索和发现 JavaScriptCore (JSC) 漏洞的过程。JSC 是 Safari 和其他 macOS 应用程序的 JavaScript 引擎。作者最初对浏览器漏洞利用感到畏惧,但利用 CodeQL 调查了 JSC 的内部结构,并发现了潜在的安全漏洞。
JSC 通过以下阶段执行 JavaScript 代码:词法分析、语法分析,以及通过 LLInt 和 JIT 编译进行解释(编译层级越高,性能越好)。一个关键的关注点是**错误的副作用建模**——JSC 错误地假设某个操作*不会*导致意外后果的情况,这可能导致远程代码执行 (RCE)。
作者开发了一个自定义的 CodeQL 查询来识别这些漏洞,重点关注在应该调用 `clobberWorld`(一个指示潜在副作用的函数)时未调用的操作。这导致重新发现了已修补的漏洞 (CVE-2018-4233),该漏洞与 `InstanceOf` 相关,并识别了 `operationCreateThis` 中的*第二个*漏洞 (CVE-2018-4233),该漏洞曾在 2018 年 Pwn2Own 中被利用。
成功表明 CodeQL 在复杂的漏洞研究中的有效性,但最大的挑战在于深入理解目标代码库——在这种情况下,是 JSC 错综复杂的工作原理。作者强调了有组织的查询开发的重要性,并提供了进一步探索 CodeQL 和 JSC 的资源。