抖音推荐算法报告
抖音推荐算法报告 1....
软件质量与保障
1. 概述 1.1 软件危机 VS. 软件工程 软件危机 软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。 软件工程 软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。 软件工程的两大视角 管理视角——能否复制成功? 技术视角——是否可以将问题解决得更好? 1.2 软件项目管理 1.2.1 概念 管理的三大关键要素:目标、状态、纠偏 软件项目管理 典型的三大目标:成本、质量、工期 软件项目管理是应用方法、工具、技术以及人员能力来完成软件项目,实现项目目标的过程。 估算、计划、跟踪、风险管理、范围管理、人员管理、沟通管理,等等 1.2.2 管理视角 管理视角的核心问题:“成功是否可以复制?” 软件过程 软件过程是为了实现一个或者多个事先定义的目标而建立起来的一组实践的集合 这组实践之间往往有一定的先后顺序,作为一个整体来实现事先定义的一个或者多个目标。 生命周期模型:对软件过程的一种人为的划分 1.3...
软件系统设计
1. 面向对象设计模式 1.1 前言 1.1.1 什么是软件设计? 软件设计 = 需求 + 规约 + 架构 + 设计 “需求”定义了系统需要满足的目标 “规约”定义了系统的外部可观察到的行为 “架构”定义了 • 系统一级的主要组成部分 • 各部分的交互方法 • 使用的技术 “设计”定义了 • 如何完成任务 • 需要写的代码 • 我们将专门关注OO设计 面向对象软件设计就是将实现的约束条件应用到面向对象分析所产生的概念模型的过程 1.2 概述 1.2.1 软件的可维护性和可复用性 一个可维护性(Maintainability) 较低的软件设计,通常由于如下4个原因造成: 过于僵硬(Rigidity) 过于脆弱(Fragility) 复用率低(Immobility) 黏度过高(Viscosity) 当面临一个改动时,开发人员常常会发现会有多种改动的方法。其中,一些会保持设计;而另外一些会破坏设计(也就是生硬的手法)...
C++高级程序设计-期末复习
program = data structure + algorithm (computation+control flow) 简答题 C++程序设计语言的设计理念 效率 实用性优于艺术性严谨性 允许一个有用的特征比防止各种错误使用更重要(相信程序员) C++发展中的重要人物 人 成就 John Backus 发明了 FORTRAN,使得编程更贴近于问题本身 (第一个被广泛成功使用的高级编程语言) Dijkstra 发明了编译器,提出 goto 有害论,创建了结构化编程 Kristen Nygaard 创建 Simula67 (面向对象编程(OOP)的起源性语言) Ole-Johan Dahl 创建 OO 编程 Dennis Ritchie、Ken Thompson 创建 C 语言 Bjarne Stroustrup 1980 创建 C with Classes,并最终形成 C++ Rick Mascitti 发明 C++,并 1983 正式命名 Barbara...
软件测试
1. 基本概念 1.1 测试用例tc = 输入t + 预言o + 环境θ 测试用例简称测试,一个测试用例tc是一个三元组<t,o,θ> 输入t:测试数据或测试输入 测试预言o:对于一个输入,我期望什么输出? 可以通过构建或直接采集数据的方式获得预言 环境θ:可能存在的外界扰动(汽车行驶时的震动或是太空中的电磁波对于GPU计算的影响) 工程化 1.2 什么是测试 测试是通过设计实验性操作,观察目标对象的行为或输出,以发现缺陷、验证功能或评估性能的方法。其核心目的是:发现缺验证功能或非功能属性。 发现Bug是软件测试的重要目的之一 动态测试和静态测试 主要关注动态测试,就是软件运行时的测试 静态成本低、速度快,但很容易误报,一般是类似于扫描代码发现问题的过程 动态成本高,但几乎不会误报(只要输出有问题,就一定存在某种Bug) 动态和静态结合,用动态的结果减少静态的误报,利用静态的结果有针对性的进行动态测试 1.3...
移动互联网开发软件工程
复习提纲 ArkCompiler和ArkRuntime 方舟编译运行时 由图可知,方舟编译器与普通编译器(普通 JS 运行方式)的核心区别体现在编译时机与运行时开销上,具体如下: 编译阶段不同 普通编译器:在编译时仅进行源码打包,真正的源码解析和编译成字节码发生在运行时。 方舟编译器:在编译时就完成源码解析和编译成字节码,提前完成主要编译工作。 运行时负担不同 普通编译器:运行时仍需进行源码解析和编译,运行时开销较大。 方舟编译器:运行时只需直接执行已生成的字节码,运行时开销显著降低。 性能与效率不同 普通编译器:启动速度和执行效率受运行时编译影响较明显。 方舟编译器:由于提前编译(AOT,Ahead-Of-Time),具有更快的启动速度和更高的执行效率。 编译流程如下: 类型推导 从图中可以看出,方舟编译器的类型推导是贯穿整个编译流程、逐步深化并服务于优化与执行的一套机制。 首先,方舟编译器以 ECMAScript 或 TypeScript 源码作为输入,通过 TSC 前端对源码进行解析并生成 AST。在这一阶段,编译器结合 TypeScript...
数理逻辑
前言 数理逻辑简介 数理逻辑或称符号逻辑、理论逻辑,是数学中的一个基础分支,是一门用数学方法研究逻辑或形式逻辑的学科,其研究对象是对证明和计算这两个直观概念进行符号化以后的形式系统.数理逻辑是数学的基础. 0.1.1 数学定义、证明、定理、引理、推论 $A \Rightarrow B$的证明方法有两种: 直接证明: 假设A成立,从A出发证明B成立 间接证明: 假设$\lnot B$成立,证明$\lnot A$成立反证法、等价性证明、存在唯一性证明 0.1.2 罗素悖论与ZFC公理系统 罗素悖论中有许多例子,其中一个很通俗也很有名的例子就是“理发师悖论”:有个小岛上有一位理发师,有一天他宣布:他只给小岛上不自己刮胡子的人刮胡子.那么就产生了一个问题:理发师究竟给不给自己刮胡子?如果他给自己刮胡子,他就是自己刮胡子的人,按照他的原则,他又不该给自己刮胡子:如果他不给自己刮胡子,按照他的原则,他又应该给自己刮胡子.这就产生了矛盾. 这个悖论用逻辑符号写出来就是,$A={A:A \notin A}$,我们容易推导出$A\in A$当且仅当$A\notin...
机器学习
0. 课程大纲 机器学习 线性回归、逻辑回归、k-近邻、朴素贝叶斯、支持向量机、决策树、随机森林、k-Means、主成分分析… 深度学习 卷积神经网络、循环神经网络、图神经网络、预训练模型… 大语言模型 智能软件工程 1. 概论 1.1 机器学习 1.1.1 机器学习定义 机器学习(Machine Learning)是一种通过模型和算法使计算机从数据中自动学习并进行预测、决策或生成内容等的技术。核心目标是让计算机在没有明确编程指令的情况下,通过对大量数据的分析,识别模式和规律,从而构建适应新数据的模型。 一个计算机程序利用经验E来学习任务T,性能是P,如果针对任务T的性能P随着经验E不断增长,则称为机器学习。 1.1.2 机器学习分类 按训练过程是否使用标签,可分为: 监督学习 Supervised Learning 无监督学习 Unsupervised Learning 半监督学习 Semi-Supervised...
C++高级程序设计
基本语法与数据结构 1. 编译/执行 #include <iostream> using namespace std; int main() { cout << "Hello, world!" << endl; return 0; } 2. 数字 数学运算 #include <iostream> #include <cmath> using namespace std; int main () { // 数字定义 short s = 10; int i = -1000; long l = 100000; float f = 230.47; double d = 200.374; // 数学运算 cout << "sin(d) :" << sin(d)...
嵌入式系统概论
嵌入式系统复习总结 嵌入式系统概述 通用定义 “嵌入式系统”实际上是“嵌入式计算机系统”的简称。 IEEE(国际电气和电子工程师协会)的定义: 嵌入式系统是“用于控制、监视或者辅助操作机器和设备的装置”(Devices used to control, monitor, or assist the operation of equipment, machinery or plants)。 国内普遍被认同的定义: 嵌入式系统是“以应用为中心,以计算机技术为基础,软硬件可裁减,适用于应用系统对功能、可靠性、 成本、体积、功耗有严格要求的专用计算机系统”。 嵌入式系统三要素: 嵌入、专用、计算机 嵌入性: 嵌入到对象体系中,有对象环境要求 专用性: 软、硬件按对象要求设计、裁减 计算机: 实现对象的智能化功能 其他定义: 嵌入封闭产品中的信息处理系统 看不见的计算机,⼀般不能被用户编程, 它有⼀些专用的I/ O设备, 对⽤户的接口是应用专用的。 An embedded system is a computer system contained...







