Java 兼容性 当我们写的Scala代码被Java调用时,我们要确保从Java来用仍然习惯。这常常不需要额外的努力——class和纯的trait等价于Java的中的对应类型 —— 但有时需要提供独立的Java API。一种感受你的库中的Java API好的方式是用Java写单元测试(只是为了兼容性);这也确保了你的库中的Java视图保持稳定,在这一点上不会随着时间因Scala编译器的波动而影响。
Swift 是一门全新的用于开发 iOS, OS X 以及 watchOS 应用的编程语言。不过,如果你有 C 或者Objective-C 语言开发经验的话,Swift 的许多地方都会让你感到熟悉。 Swift 为所有 C 和 Objective-C 的类型提供了自己的版本,包括整型值的 Int ,浮点数值的 Double 和 Float ,布尔量值的 Bool ,字符串值的 String 。如同
Rax 是一个跨容器的渲染引擎。底层依赖各个容器的实现,所以容器能力的差异也会在 Rax 中有所体现。 主要的容器能力差异来自于 Web 、 Weex 和小程序环境。Web 是当前应用最广泛使用的渲染技术,Weex 是基于客户端的跨平台解决方案,小程序是一种运行在支付宝、手机淘宝等客户端中的开放模式。 原生开发平台和 Web 平台之间的差异,在功能和开发体验上都有一些差异。 样式能力差异 由于 W
7. IoC容器 本章部分小节的英文原作者似乎不太擅长写文档,经常使用特别特别长而且有多个从句的长句子,翻译起来让人痛苦:(
这一节,我们将讨论在节点错误事件时Spark Streaming的行为。为了理解这些,让我们先记住一些Spark RDD的基本容错语义。 一个RDD是不可变的、确定可重复计算的、分布式数据集。每个RDD记住一个确定性操作的谱系(lineage),这个谱系用在容错的输入数据集上来创建该RDD。 如果任何一个RDD的分区因为节点故障而丢失,这个分区可以通过操作谱系从源容错的数据集中重新计算得到。 假定
运动内容指在手表上您可选择的运动项目。我们在手表上创建了四项默认的运动内容,不过在 Polar Flow 应用程式与网络服务中,您可以添加新的运动内容供您使用并将其同步到手表上,您可以通过这种方式创建您最喜爱的运动列表。 您还可以为每项运动内容确定一些具体的设置。例如,您可以为您进行的每项运动创建自定义的训练视图并选择训练时希望查看哪些数据:仅心率或仅速度与距离——最符合您以及您的训练需求与要求的
Container 服务容器是一个用于管理类的依赖和执行依赖注入的强大工具。其实质是通过反射来对构造函数或者标记为[Inject]特性的属性选择器进行注入。 简介 几乎所有的服务绑定都是在服务提供者中完成。如果一个服务没有基于任何接口那么就没有必要将其绑定到容器(除非他是组件内部使用的类)。 容器并不需要被告知如何构建对象,因为它会使用反射技术自动解析出具体的对象实例。 在服务提供者中我们可以使用
实验内容 实验七完成了在内核中的同步互斥实验。本次实验涉及的是文件系统,通过分析了解ucore文件系统的总体架构设计,完善读写文件操作,从新实现基于文件系统的执行程序机制(即改写do_execve),从而可以完成执行存储在磁盘上的文件和实现文件读写等功能。
实验内容 实验六完成了用户进程的调度框架和具体的调度算法,可调度运行多个进程。如果多个进程需要协同操作或访问共享资源,则存在如何同步和有序竞争的问题。本次实验,主要是熟悉ucore的进程同步机制—信号量(semaphore)机制,以及基于信号量的哲学家就餐问题解决方案。然后掌握管程的概念和原理,并参考信号量机制,实现基于管程的条件变量机制和基于条件变量来解决哲学家就餐问题。 在本次实验中,在ker
实验内容 实验五完成了用户进程的管理,可在用户态运行多个进程。但到目前为止,采用的调度策略是很简单的FIFO调度策略。本次实验,主要是熟悉ucore的系统调度器框架,以及基于此框架的Round-Robin(RR) 调度算法。然后参考RR调度算法的实现,完成Stride Scheduling调度算法。
实验内容 实验4完成了内核线程,但到目前为止,所有的运行都在内核态执行。实验5将创建用户进程,让用户进程在用户态执行,且在需要ucore支持时,可通过系统调用来让ucore提供服务。为此需要构造出第一个用户进程,并通过系统调用sys_fork/sys_exec/sys_exit/sys_wait来支持运行不同的应用程序,完成对用户进程的执行过程的基本管理。相关原理介绍可看附录B。
实验内容 实验2/3完成了物理和虚拟内存管理,这给创建内核线程(内核线程是一种特殊的进程)打下了提供内存管理的基础。当一个程序加载到内存中运行时,首先通过ucore OS的内存管理子系统分配合适的空间,然后就需要考虑如何分时使用CPU来“并发”执行多个程序,让每个运行的程序(这里用线程或进程表示)“感到”它们各自拥有“自己”的CPU。 本次实验将首先接触的是内核线程的管理。内核线程是一种特殊的进程
实验内容 本次实验是在实验二的基础上,借助于页表机制和实验一中涉及的中断异常处理机制,完成Page Fault异常处理和FIFO页替换算法的实现,结合磁盘提供的缓存空间,从而能够支持虚存管理,提供一个比实际物理内存空间“更大”的虚拟内存空间给系统使用。这个实验与实际操作系统中的实现比较起来要简单,不过需要了解实验一和实验二的具体实现。实际操作系统系统中的虚拟内存管理设计与实现是相当复杂的,涉及到与
实验内容 本次实验包含三个部分。首先了解如何发现系统中的物理内存;然后了解如何建立对物理内存的初步管理,即了解连续物理内存管理;最后了解页表相关的操作,即如何建立页表来实现虚拟内存到物理内存之间的映射,对段页式内存管理机制有一个比较全面的了解。本实验里面实现的内存管理还是非常基本的,并没有涉及到对实际机器的优化,比如针对 cache 的优化等。如果大家有余力,尝试完成扩展练习。