Python的智能问答之路 张晓庆
Python的智能问答之路 张晓庆 目录 CONTENTS 智能问答简介 QA快速实践 Python开发的利与弊 总结展望 1 智能问答简介 智能问答领域分类、举例、应用场景 智能问答领域分类 [Duan 2017] 智能问答举例-Community QA • 数据结构化 Ø 用问答对的方式进行知识表示 Ø 知识点:由若干个问题(相似问)、以及 能回答这些问题的答案组成 Ø 为什么用这种形式? ü 减轻人工维护答案的工作量 ü 同一知识点下的问题语义相同,是很好的 训练数据 智能问答应用场景 • 辅助人工 Ø 客服 Ø 营销 Ø 特定领域、重复性的对话 • GUI补充 Ø 语音助手 Ø 电话助手 • Voice-only Apps Ø 智能音箱 Ø 车载设备 Ø 可穿戴设备 2 QA快速实践 任务拆解、各个击破 任务拆解 • 业务 Ø 解决什么问题? 支持Java调用 优势总结 缺点举例1-内存占用高 Python:一切皆对象 • python执行由解析器解析为C语言对应的结构 • python对象取值仅对应C结构的一个属性 • 附加字段、引用指针均消耗内存 • 解决方案:c++封装kv存储,编译成so供python调用,内部采用unordered_map实现 • 提升:1g文件,python load dict占用5~6g,kvdict存储占用1~10 码力 | 28 页 | 2.60 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 12 从计算机组成原理看 C 语言指针
从计算机组成原理看 C 语言指针 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 请问下面这三段代码有什么错误? • float x = -3.14; • printf(“%f\n”, abs(x)); :自动随系统位数决定大小 • 刚刚说过,计算机的位数决定了内存地址的大小。 • 而指针的本质就是内存地址,所以指针的大小在 32 位系统上就 32 位, 64 位系统上就 64 位。 • 稍后我们再来详细讲解一下指针,有时候我们需要把指针的地址值存在整型变量里。 • 而 32 位平台上的指针是 32 位, 64 位平台上的指针是 64 位。 • 所以是不是需要根据当前平台来判断要使用哪一种代码了? 也就是说: sizeof(intptr_t) = sizeof(void *) = sizeof(uintptr_t) size_t :表示大小的整数类型,其实等价于 uintptr_t • 除了指针需要随系统位数变化之外,数组的长度也是需要随系统位数变化的。 • 如果 64 位系统上 size_t 还是 uint32_t ,那就无法表示超过 4GB 大小的数组了。 • 今日乳 ja 笑话:0 码力 | 128 页 | 2.95 MB | 1 年前3C++高性能并行编程与优化 - 课件 - 02 现代 C++ 入门:RAII 内存管理
C++20 modules )因此我们的课程 基于 C++17 标准,有时会谈到 C++20 作为扩展阅读。 C++ 有哪些面向对象思想? C++ 思想:封装 比如要表达一个数组,需要:起始地址指针 v ,数组大小 nv 将多个逻辑上相关的变量包装成一个类 因此 C++ 的 vector 将他俩打包起来,避免程序员犯错 封装:不变性 比如当我要设置数组大小为 4 时,不能只 nv = 4 Pig() ,他会调用每个成员的无参构造函数。 • 但是请注意,这些类型不会被初始化为 0 : 1. int, float, double 等基础类型 2. void *, Object * 等指针类型 3. 完全由这些类型组成的类 • 这些类型被称为 POD ( plain-old-data )。 • POD 的存在是出于兼容性和性能的考虑。 << 取决于内存的随机值 编译器默认生成的构造函数:无参数( CppCoreGuidelines 三五法则:拷贝构造函数 • 在 = 时,默认是会拷贝的。比如右边这样: • 但是这样对我们当前 Vector 的实现造成一个很大 的问题。其 m_data 指针是按地址值浅拷贝的, 而不深拷贝其指向的数组! • 这就是说,在退出 main 函数作用域的时 候, v1.m_data 会被释放两次!更危险的则是 v1 被解构而 v2 仍在被使用的情况。0 码力 | 96 页 | 16.28 MB | 1 年前3现代C++ 教程:高速上手C++11/14/17/20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 第 5 章智能指针与内存管理 52 5.1 RAII 与引用计数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . foo(NULL); 这个语句将会去调用 foo(int),从而导致代码违反直觉。 为了解决这个问题,C++11 引入了 nullptr 关键字,专门用来区分空指针、0。而 nullptr 的类型 为 nullptr_t,能够隐式的转换为任何指针或成员指针的类型,也能和他们进行相等或者不等的比较。 你可以尝试使用 clang++ 编译下面的代码: #include#include C++11 使用 using 引入了下面这种形式的写法,并且同时支持对传统 typedef 相同的功效: 通常我们使用 typedef 定义别名的语法是:typedef 原名称 新名称;,但是对函数指针等别 名的定义语法却不相同,这通常给直接阅读造成了一定程度的困难。 typedef int (*process)(void *); using NewProcess = int(*)(void 0 码力 | 83 页 | 2.42 MB | 1 年前3Rust 程序设计语言简体中文版
........................................................................................ 369 15. 智能指针 ................................................................................................. ....................................................................... 371 15.2. 使用 Deref Trait 将智能指针当作常规引用处理 ........................................................ 377 15.3. 使用 Drop Trait 运行清理代码 . ............................................................................. 384 15.4. Rc引用计数智能指针 ........................................................................................... 388 15 0 码力 | 600 页 | 12.99 MB | 1 年前3Rust 程序设计语言 简体中文版 1.85.0
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 15. 智能指针 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 15.2. 使用 Deref Trait 将智能指针当作常规引用处理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 15.3. 使用 Drop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331 15.4. Rc引用计数智能指针 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 0 码力 | 562 页 | 3.23 MB | 8 天前3Rust 语言学习笔记
1.3 函数指针............................................................................ 64 6.2 unsafe 与原始指针 ........................................................................ 65 6.2.1 裸指针 ..... 2 BOX .................................................................................. 75 6.5 智能指针 .................................................................................... 77 6.5.1 Rc与 这两门编程语言不同的是,Rust 是线程安全的! Rust 编程语言的目标是,创建一个高度安全和并发的软件系统。它强调安全性、 并发和内存控制。尽管 Rust 借用了 C 和 C++ 的语法,它不允许空指针和悬 挂指针,二者是 C 和 C++ 中系统崩溃、内存泄露和不安全代码的根源。 Rust 中有诸如 if else 和循环语句 for 和 while 的通用控制结构。和 C 和 C++ 风格的编程语言一样,代码段放在花括号中。0 码力 | 117 页 | 2.24 MB | 1 年前3美团点评2018技术年货
美团服务体验平台对接业务数据的最佳实践-海盗中间件 167 ...................................................................... 美团点评智能支付核心交易系统的可用性实践 176 ...................................................................... 卫星系统——酒店后端全链路日志收集工具介绍 Application Tracking),是美团点评基于 Java 开发的一套开源的分布式实时监控系统。 美团点评基础架构部希望在基础存储、高性能通信、大规模在线访问、服务治理、实时监控、容器化及集 群智能调度等领域提供业界领先的、统一的解决方案,CAT 目前在美团点评的产品定位是应用层的统一 监控组件,在中间件(RPC、数据库、缓存、MQ 等)框架中得到广泛应用,为各业务线提供系统的性能 指标、健康状况、实时告警等服务。 理想的情况是LruCache对外仅仅提供数据地址,即数据指针。使用方在业务需要使用的地方通过数据指 针获取数据。这样可以将复杂的数据拷贝操作变为简单的地址拷贝,大量减少拷贝操作的性能消耗,即数 据的零拷贝机制。直接的零拷贝机制存在安全隐患,即由于LruCache中的时效清退机制,可能会出现某 一数据已经过期被删除,但是使用方仍然通过持有失效的数据指针来获取该数据。 进一步分析可以确定,以上问题的核0 码力 | 229 页 | 61.61 MB | 1 年前3基于静态分析的Rust内存安全缺陷检测研究
基于静态分析的Rust内存安全缺陷检测研究 报告人:徐辉 报告日期:2022.11.25 复旦大学 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 Rust语言 ❑ 系统级安全编程语言 ▪ 内存安全 ▪ 并发安全 ▪ 效率 2006年 2011年 Rust如何保障内存安全? ❑ 内存安全问题产生的主要原因之一是指针别名导致悬空指针 ▪ 手动释放内存或调用析构函数 ▪ 函数返回时发生的自动析构或内存释放 ❑ Rust设计的目标之一是编译时检查指针别名(共享可变引用) ▪ 但一般意义上的指针分析是NP-hard问题 ▪ 智能指针可行,但作为运行时方案,效率低 ▪ Rust在语法设计中引入所有权机制,简化指针分析问题 Rust所有权模型 => XOR Mutability 如果需要违背XOR Mutability怎么办? ❑ 以双向链表为例,中间节点被前后两个节点访用 ❑ Rust为了提升可用性所做的妥协 ▪ 智能指针(性能损失) ▪ 允许使用裸指针(unsafe模式) • 逃逸编译器的借用检查 => 指针别名 next prev next prev next prev struct List{ val: u64, next: *mut List0 码力 | 28 页 | 1.55 MB | 1 年前3Comprehensive Rust(简体中文) 202412
. 106 19.8.1 解答 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 20 智能指针 110 20.1 Box. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 20 30.1 不安全 Rust . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 30.2 解引用裸指针 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 30.3 可变的静态变量 . . . . 标准库特征 1 hour and 40 minutes • 第三天上午(2 小时 20 分钟,含休息时间) Segment Duration 欢迎 3 minutes 内存管理 1 hour 智能指针 55 minutes • Day 3 Afternoon (1 hour and 50 minutes, including breaks) 13 Segment Duration 借用 0 码力 | 359 页 | 1.33 MB | 10 月前3
共 296 条
- 1
- 2
- 3
- 4
- 5
- 6
- 30