Node 的设计错误## Node 的设计错误 Ryan Dahl JS Conf 柏林 2018.06 ## 背景: 1. 基于最初的开发,我创建了并管理 Node。 2. 我的主要关注目标是事件驱动的 HTTP server。 3. 这一主要目标对当时服务器端的 JavaScript 起着关键作用。即使在当时这一点不那么明显,但是服务器端 JS 的成功需要事件循环的助力。 ## 背景: 2012 年我离开 动态语言是科学计算的正确工具,通常你会用它进行快速的一次性计算。 而 JavaScript 就是最好的动态语言。 但是相反,现在我将会抱怨 Node 的所有缺点。 当你是某个项目的负责人时,你总是很难发现其中的错误。 有时 Node 对我来说就像是板上钉钉的事。 它本来可以更好。 ## 遗憾:不遵守“诺言” - 我在 2009 年 6 月向 Node 添加了 Promise,但在 2010 年 2 月愚蠢地删除了它们。 标志,才能再次获取资源。 • Vendoring 可以通过指定非默认缓存目录来完成。 ## Deno 目标:内置于可执行文件中的 TS 编译器 • TS 是绝对出色的。 它终于交付了实用的可选语言。 允许代码无缝增长—从快速入侵到大型的,结构良好的组织。 • Deno 挂接到 TS 编译器以执行构建工件的模块解析和增量缓存。 - 未修改的 TS 文件不应重新编译。 - 普通的 JS 也应该可以运行(但这很简单,因为TS是JS的超集)0 码力 | 28 页 | 767.84 KB | 2 年前3
2.1.5 Go语言编译器简介中国 上海 / 2020-11.21-22 Go语言编译器简介 ’ alt=‘OCR图片’/> 关于我 Contributors to golang/go · GitHub 给Go编译器提交过127个补丁,累计六万余行; 拥有Go官方git仓库提交权限; 全球贡献者排名长期处于前50名; 世界上90%的gopher都用过我写的代码; 编译器的重要性 只有1%的程序员懂汇编语言 汇编语言无法构建大型系统 汇编语言无法构建大型系统 操作系统内核也需要编译器才能运行起来 编译理论是图灵奖大户,仅次于计算复杂度理论 操作系统有后门,编译器的后门更致命 编译器的难题:任务爆炸 N种语言 * M种机器 = N*M 个任务 GOPHER CHINA 2020 中国 上海 / 2020-11.21-22 两个方案 $$ N \mathrm {种 语 言} + M \mathrm {种 机 器} = {个 任 务} $$ 其它语言 -> C -> 各个机器 各个语言 -> x86 -> 其它机器 GOPHER CHINA 2020 中国 上海 / 2020-11.21-22 通用(非专用)编译器的方案 AST = Abstract Syntax Tree抽象语法树 SSA = Single Static Assignment单静态赋值 IR = Intermediate Representation中间表示0 码力 | 36 页 | 1.63 MB | 1 月前3
Go在工程实践的错误处理Golang在工程实践中的错误处理  彭友顺 石墨文档 产研负责人  为什么我们处理错误会这么慢 01 如何完善错误信息 02 优雅处理错误信息 03 分布式错误处理 04 错误信息手册的必要性 05 第一部分 ## 为什么我们处理错误 会这么慢 ## 为什么我们处理错误会这么慢 why 出现错误 定位慢 恢复慢 效率低 ## 原因 错误信息不够完善 错误处理不够优雅 分布式错误难以串联 错误信息难以识别 ## 第二部分 ## 如何完善错误信息 ## 为什么调试慢?-- 为什么调试慢?-- 错误信息 充足信息 gRPC错误日志:param error 高亮信息 封装组件 哪个Client 调用? 哪一行代码 调用? 我的 参数问题? 对方的问题? {"lv":"error","ts":1711111870,"msg":"grpc error","error":"param0 码力 | 30 页 | 3.11 MB | 2 年前3
KCL: Rust 在编译器领域的实践与探索## RUST CHINA CONF 2023 第三届中国Rust开发者大会 6.17-6.18 @Shanghai ## KCL: Rust 在编译器领域的实践与探索 张正 蚂蚁集团 ## 😍 01 KusionStack 与 KCL 02 用 Rust 重写 KCL 03 Rust 重写后的收益 04 更多的探索 ## 01 KusionStack 与 KCL ## KusionStack是什么 add1b5abffd9fb8525138fc88bca0/p9_2.jpg) ## 2 KCL 编译器架构升级 Python 代码翻译 Source Code Python code 栈式虚拟机 Source Code AST Bit code VM Rust 编译器 Source Code AST LLVM IR Native/WASM ## R ## 我们遇到了哪些问题? 8fc88bca0/p11_1.jpg) Pros 简单易上手 生态丰富 研发效率高 Cons 性能问题 无法满足自动化系统需求 稳定性问题 None 空对象,属性不存在等运行时错误 ## 为什么选择 Rust? ### 1. Go, Python, Rust 性能对比 ||CPython|RustPython|GPython|VM(go)|VM(Rust)|VM(Python)|LLVM0 码力 | 25 页 | 3.50 MB | 2 年前3
Kotlin 官方文档中文版 v1.9入门——在 IntelliJ IDEA 中 1.10.2.1 Kotlin/Native 入门——使用 Gradle 1.10.2.2 Kotlin/Native 入门——使用命令行编译器 1.10.2.3 与 C 语言互操作 1.10.2.4 与 C 语言互操作性 1.10.2.4.1 映射来自 C 语言的原始数据类型——教程 1.10.2.4.2 映射来自 在 Kotlin/JS 平台中运行测试 1.10.4.5 Kotlin/JS 无用代码消除 1.10.4.6 Kotlin/JS IR 编译器 1.10.4.7 将 Kotlin/JS 项目迁移到 IR 编译器 1.10.4.8 Kotlin 用于 JS 平台 1.10.4.9 浏览器与 DOM API 1.10.4.9.1 在 Kotlin 中使用 1 Gradle 概述 1.15.1.1.1 Gradle 入门——教程 1.15.1.1.2 配置 Gradle 项目 1.15.1.1.3 Kotlin Gradle 插件中的编译器选项 1.15.1.1.4 Kotlin Gradle 插件中的编译项与缓存 1.15.1.1.5 支持 Gradle 插件变体 1.15.1.1.6 Maven 1.15.1.2 Ant0 码力 | 2049 页 | 45.06 MB | 2 年前3
C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化## AMD # 从汇编角度看编译器优化 by 彭于斌 (@archibate) 往期录播:https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码:https://github.com/parallel101/course 的压力。 • 因此 64 位比 32 位机器相比,除了内存突破 4GB 限制外,也有一定性能优势。 # 8 位,16 位,32 位,64 位版本 al0 码力 | 108 页 | 9.47 MB | 2 年前3
大型Web项目可用性提升 零脚本错误的实战 郭林烁 2017.10## 大型Web项目可用性提升 零脚本错误的实战 郭林烁 2017.10  ## 郭林烁 (joeyguo) @ 腾讯 AlloyTeam ## 1 ## 社区的相关提问 ##### 微信(1004) -=TFC2017=-.. 145f5081066816c9039d4b/p3_4.jpg) 下午8:23 ## 栋 不知道大家在代码上线以后,用什么来检测错误和性能的,是自己在代码里面实现还是用一些平台 @Alloyteam.郭林烁 脚本错误 想知道大家是怎么捕获异步函数的错误的 ## 上午11:21 ; 异步错误无法捕获 ## 4 / 上报方式 ## 通过Ajax发送数据 动态创建 img 标签的形式 function report(msg, level) { var reportUrl0 码力 | 62 页 | 7.09 MB | 2 年前3
简明 X86 汇编语言教程 序,但现在除了没有汇编程序的那些电脑之外,直接用机器语言写超过1000条以上指令的人大概只能算作那些被我们成为“圣人”的牺牲者一类了。毕竟,记忆一些短小的助记符、由机器去考虑那些琐碎的配位过程和检查错误,比记忆大量的随计算机而改变的十六进制代码、可能弄错而没有任何提示要强的多。熟练的汇编语言编码员甚至可以直接从十六进制代码中读出汇编语言的大致意思。当然,我们有更好的工具——汇编器和反汇编器。 简 Profile,并适当地用汇编取代部分高级语言代码。至少,汇编语言的知识可以告诉你一些有用的东西,比如,你有多少个寄存器可以用。有时,手工的优化比编译器的优化更为有效,而且,你可以完全控制程序的实际行为。 我想我在罗嗦了。总之,在我们结束这一章之前,我想说,不要在优化的时候把希望完全寄托在编译器上——现实一些,再好的编译器也不可能总是产生最优的代码。 ## 第二章 认识处理器 中央处理器(CPU)在微机系统处于“领导核心”的地位 宽|通常在内存操作指令中作为“目的地址指针”使用。当然,EDI也可以被装入任意的数值,但通常没有人把它当作通用寄存器来用。DS是默认段寄存器或选择器。| |EBP 32-bit 宽|这也是一个作为指针的寄存器。通常,它被高级语言编译器用以建造“堆栈帧”来保存函数或过程的局部变量,不过,还是那句话,你可以在其中保存你希望的任何数据。SS是它的默认段寄存器或选择器。| 注意,这三个寄存器没有对应的 8-bit 分组。换言之,你可以通过0 码力 | 63 页 | 598.28 KB | 2 年前3
PyArmor 中文文档 v8.5.0打包脚本的时候保护系统库 3.2.6 解决加密过程中编码错误 3.2.7 删除脚本中 Dostring 3.2.8 如何解决第三方库调用加密脚本存在的问题 3.2.9 使用许可证 3.3 技术手册 3.3.1 概念定义 3.3.2 命令手册 3.3.3 生成加密脚本的环境 3.3.4 运行加密脚本的环境 3.3.5 错误消息 3.4 深入了解 ..... 103 3 中应该如何去做,使用什么样的命令和选项去实现。阅读这部分内容需要对 Pyarmor 和 Python 都有一定的了解。 - 第三部分: 技术手册 从技术层的角度详细列出了所有的概念定义,命令手册,配置选项和错误信息代码。它适用于使用 Pyarmor 的高级用户,需要查找相关的参数和配置,了解这些配置项的可用值和不同值的作用和含义。 - 第四部分: 深入了解 这部分针对 Pyarmor 提供的功能,从如何 - 使用更多选项加密脚本和包 - 使用外部密钥文件限制加密脚本的运行 ·本地化错误信息 • 生成不需要 Python 环境就可以独立运行的加密脚本 还有高级教程,有些功能在试用版中无法使用 - 如何使用两种不可逆的加密模式: RFT 模式和 BCC 模式 pro · 定制错误退出方式 · 国际化错误消息 · 加密跨平台的加密脚本 很多用户可能对这里的内容感兴趣最高安全性和最快性能0 码力 | 156 页 | 1.19 MB | 5 月前3
Weblate 4.15 用户文档1 用户文档 1.1 Weblate 基础知识 1.2 注册和用户个人资料 1.3 使用 Weblate 进行翻译工作 1.4 下载和上传译文 1.5 术语表 1.6 检查和修正 1.7 搜索 1.8 翻译工作流 1.9 常见问题 1.10 支持的文件格式 1.11 版本控制集成 1.12 Weblate 的 REST API 1.13 Weblate 备份和移动 Weblate 2.5 身份验证 2.6 访问控制 2.7 翻译项目 2.8 语言定义 2.9 持续本地化 2.10 翻译许可 2.11 翻译进程 2.12 检查和修正 2.13 配置自动建议 2.14 附加组件 2.15 翻译记忆库 2.16 配置 2.17 配置的示例 2.18 管理命令 2.19 公告 2.20 部件列表 2 6 通知 从通知选项卡订阅各种通知。有关已观看或管理的项目的选定事件的通知将通过电子邮件发送给您。 某些通知仅针对您语言的事件发送(例如,关于要翻译的新字符串),而某些通知在组件级别触发(例如合并错误)。这两组通知在设置中在视觉上是分开的。 您可以切换监视项目和管理项目的通知,并且可以进一步调整(或静音)每个项目和部件。访问组件概览页面并从已关注菜单中选择适当的选项。 如果启用了自动关注作出0 码力 | 497 页 | 8.22 MB | 2 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













