Swift 写解释器 - 戴铭
0 码力 | 19 页 | 29.57 MB | 1 年前3用Go语言实现推送服务器
用Go语言实现推送服务器 陈叶皓 chen.yh@ctrip.com 议程 • 推送服务器介绍 • Golang特点 • 推送服务架构 • 部分代码 • 上线效果 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 什么是推送服务器 • 推送业务信息到手机端 • 始终保持连接 推送服务器要求 • 高并发 • 可靠性 • 高性能 • 支持水平扩展 • 无单点故障 无单点故障 Go语言特性 • 静态的、编译的 • 自动内存回收 • 命令式编程 • 函数可以作为值 • 面向并发 • 内置RPC支持 推送服务器要求的应对 • 高并发 – goroutine • 可靠性 – 使用Redis暂存消息 • 高性能 – 静态编译语言 • 支持水平扩展 – 使用RPC组成集群 • 无单点故障 – 使用Redis实现数据共享 Go语言的并发模型 • 事件驱动,共享线程池 含一 个获取返回值的channel 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 逻辑架构 去中心化设计 • 客户端随机连接 • Redis集中存储地址表 • 信息发送2跳到达 消息缓存设计 • 消息预存(Redis) • 尝试发送 • 发送成功后删除 客户端注册时序图 议程 • 推送服务器介绍 • 推送服务架构 • 部分代码 • 上线效果 串行场景-Socket0 码力 | 25 页 | 260.04 KB | 1 年前3⽤ egg 孵化你的 SQL 优化器 - 王润基
第三届中国Rust开发者⼤会 ⽤ egg 孵化你的 SQL 优化器 王润基 RisingWave 内核开发⼯程师 ? Parser Binder Optimizer Executor SQL AST Logical Plan Physical Plan Table Catalog Storage RisingLight 查询引擎的整体结构 SELECT name, url 连接重排序 连接算法选择 TopN A Order TopN A Limit 查询优化 定义计划节点 定义重写规则 ⽤纯 Rust 编写的第⼀代优化器 Visitor 模式 ⽤纯 Rust 编写的第⼀代优化器 e-class e-node Rewriting Rewriting (* ?x 2) => (<< ?x 1) Rewriting (* ?x 2) => Expr:每⾏计算开销 • Plan:计算+数据量+⼦节点 简单,但需要耐⼼调 估价函数 搜索剪枝 egg 不⽀持使⽤估价函数进⾏启发式搜索 容易导致组合爆炸问题 我们通过分阶段优化+多轮迭代缓解此问题 RBO: Pushdown… CBO SELECT a, count(b) FROM t GROUP BY a HAVING sum(b) > 10 ORDER BY count(b)0 码力 | 39 页 | 6.48 MB | 1 年前3Java 应用与开发 - Java EE 监听器编程
大纲 监听器概述 Java EE 监听器类型 ServletContext 对象监听器 ServletContext 对象属性监听器 本节习题 Java 应用与开发 Java EE 监听器编程 王晓东 wangxiaodong@ouc.edu.cn 中国海洋大学 December 3, 2018 大纲 监听器概述 Java EE 监听器类型 ServletContext 对象监听器 ServletContext ServletContext 对象属性监听器 本节习题 学习目标 1. 理解监听器的概念。 2. 掌握 Java EE 的监听器的主要功能和包含的类型。 3. 掌握监听器的编程和配置,学会编写监听器代码。 大纲 监听器概述 Java EE 监听器类型 ServletContext 对象监听器 ServletContext 对象属性监听器 本节习题 大纲 监听器概述 Java EE 监听器类型 ServletContext 对象监听器 ServletContext 对象属性监听器 本节习题 大纲 监听器概述 Java EE 监听器类型 ServletContext 对象监听器 ServletContext 对象属性监听器 本节习题 接下来⋯ 监听器概述 Java EE 监听器类型 ServletContext 对象监听器 ServletContext 对象属性监听器 本节习题 大纲 监听器概述 Java0 码力 | 22 页 | 549.84 KB | 1 年前3KCL: Rust 在编译器领域的实践与探索
第三届中国Rust开发者大会 KCL: Rust 在编译器领域的实践与探索 张正 蚂蚁集团 Agenda 01 KusionStack 与 KCL 02 用 Rust 重写 KCL 03 Rust 重写后的收益 04 更多的探索 01 KusionStack 与 KCL KusionStack是什么? KusionStack架构 KCL KusionStack 是什么? Language Server KCL Compiler KCL Package Manager 02 用 Rust 重写 KCL Python 代码翻译 栈式虚拟机 Rust 编译器 KCL 编译器架构升级 Source Code AST LLVM IR Native/WASM Source Code AST Bit code VM Source Code Python Rust 强大的编译检查和错误 处理方式, 更少的 Bug 稳定性提升 端到端编译执行性能提升了 66% 66 % 20 & 40 前端解析器性能提升 20倍 中端语义分析器性能提升40倍 稳定性和性能的巨大提升 50 % 语言编译器编译过程平均内存使用 量变为原来 Python 版本的一半 01 02 03 04 Case1: 单文件编译 > https://github0 码力 | 25 页 | 3.50 MB | 1 年前3运⾏在浏览器中的 P2P ⽹络 - 李敏成
运⾏在浏览器中的 P2P ⽹络 李敏成 from RingsNetwork Montivation 连接所有钱包持有者 去中⼼化的 Pure P2P ⽹络 The Idea 最好的节点载体是浏览器 ⽤户群体 钱包插件 运⾏环境 How to P2P Did: Wallet Address E2E secure(sign/encryption): Wallet Discovery Connect through WebRTC Route by Chord DHT Rings-node browser extension Rings-node daemon 浏览器节点 服务器节点 Node communication Node A Node B Create Offer ConnectNodeSend ConnectNodeReport Pending0 码力 | 23 页 | 1.74 MB | 1 年前3PyConChina2022-上海-在浏览器中运行 Python-韩骏
在浏览器中运行 Python 主讲人: 韩骏 – Code Runner 作者 自我介绍 • 高级软件工程师 @ 微软开发平台事业部 • 《Visual Studio Code 权威指南》作者 • 20 多款 VS Code 插件(比如 Code Runner) • “玩转VS Code”知乎专栏 & 微信公众号 • VS Code 中文社区创始人 • https://github.com/formulahendry/955 https://github.com/microsoft/vscode-python-web-wasm One More Thing! Debug Python in browser? 在浏览器中调试 Python! https://code.visualstudio.com/updates/v1_74#_python-execution-in-the-web • Setting breakpoints0 码力 | 13 页 | 1.79 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 04 从汇编角度看编译器优化
从汇编角度看编译器优化 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 高性能并行编程与优化 - 课程大纲 • 分为前半段和后半段,前半段主要介绍现代 C++ ,后半段主要介绍并行编程与优化。 1 1.课程安排与开发环境搭建: cmake 与 git 入门 2.现代 C++ 入门:常用 STL 容器, RAII 内存管理 3.现代 C++ 进阶:模板元编程与函数式编程 4.编译器如何自动优化:从汇编角度看 C++ 5.C++11 起的多线程编程:从 mutex 到无锁并行 6.并行编程常用框架: OpenMP 与 Intel TBB 7.被忽视的访存优化:内存带宽与 cpu 缓存机制 x64 架构下的寄存器模型 通用寄存器: 32 位时代 • 32 位 x86 架构中的通用寄存器有: • eax, ecx, edx, ebx, esi, edi, esp, ebp • 其中 esp 是堆栈指针寄存器,和函数的调用与返回相关。 • 其中 eax 是用于保存返回值的寄存器。 通用寄存器: 64 位时代 • 64 位 x86 架构中的通用寄存器有: • rax, rcx0 码力 | 108 页 | 9.47 MB | 1 年前3PyConChina2022-北京-用Python给Kubernetes写个自定义控制器-张晋涛
用 Python 给 Kubernetes 写个控制器 主讲人: 张晋涛 个人介绍 Apache APISIX PMC Kubernetes Ingress NGINX maintainer Microsoft MVP 『 K8S 生态周报』发起人和维护者 GitHub:tao12345666333 Mail: zhangjintao@apache.org Agenda Agenda Kubernetes 中请求处理流程 什么是准入控制器 用 Python 实现准入控制器 与其他方案对比 Kubernetes 架构 kube-apiserver Kubernetes 集群的核心组件 处理集群内外的所有请求 Kubernetes 请求处理流程 API Handler 匹配处理链路( /apis ) 认证 / 授权 Mutating Validating Admission :可进行验证操作 etcd :持久化 什么是准入控制器 在 Mutating Admission 或 Validating Admission 执行相 关操作的代码逻辑或者组件 (静态)准入控制器: Kubernetes 代码中携带,不可动 态调整的 动态准入控制器:利用 Kubernetes 提供的 MutatingAdmissionWebhook0 码力 | 17 页 | 1.76 MB | 1 年前3MoonBit月兔编程语言 现代编程思想 第十一课 案例:语法解析器与Tagless Final
现代编程思想 案例:语法解析器 Hongbo Zhang 1 语法解析器 案例⽬标 解析基于⾃然数的数学表达式: "(1+ 5) * 7 / 2" 转化为单词列表 LParen Value(1) Plus Value(5) Multiply Value(7) Divide Value(2) 转化为抽象语法树 Division(Multiply(Add(Value(1), Value(5)) Value(5)), Value(7)), Value(2)) 计算最终结果:21 语法分析 对输⼊⽂本进⾏分析并确定其语法结构 通常包含词法分析和语法分析 本节课均利⽤语法解析器组合⼦(parser combinator)为例 2 词法分析 将输⼊分割为单词 输⼊:字符串/字节块 输出:单词流 例如: "12 +678" -> [ Value(12), Plus, Value(678) Token { 2. Value(Int); LParen; RParen; Plus; Minus; Multiply; Divide 3. } derive(Debug) 5 解析器组合⼦ 构造可组合的解析器 1. // V 代表解析成功后获得的值 2. // Lexer[V] == (String) -> Option[(V, String)] 3. type Lexer[V] (String)0 码力 | 25 页 | 400.29 KB | 1 年前3
共 565 条
- 1
- 2
- 3
- 4
- 5
- 6
- 57