MoonBit月兔编程语言 现代编程思想 第十四课 案例:堆栈虚拟机现代编程思想 案例:栈式虚拟机 Hongbo Zhang 1 编译与解释 编译 源程序 x 编译器 -> ⽬标程序 ⽬标程序 x 输⼊数据 -> 输出数据 解释 源程序 x 输⼊数据 x 解释器 -> 输出数据 CPU可以被视为⼴义上的解释器 拓展阅读:⼆村映射/部分计算 部分计算:程序优化,根据已知信息,运算进⾏特化 已知源程序与解释器,进⾏部分运算,获得⽬标程序 ⽬标程序 ⽬标程序 x 输⼊数据 -> 输出数据 2 虚拟机 ⼀处编写,处处运⾏ 定义⼀个不基于任何平台的指令集 在不同平台上实现解释器 两种常⻅的虚拟机 堆栈虚拟机:运算数存储在栈上,数据遵循先进后出原则 寄存器虚拟机:运算数存储在寄存器中 3 寄存器虚拟机 例:Lua VM (The Implementation of Lua 5.0) 取最⼤值 MOVE 2 0 0 ; R(2) JUMP -> 5 (4 + 1) MOVE 2 1 0 ; R(2) = R(1) RETURN 2 2 0 ; return R(2) RETURN 0 1 0 ; return 4 堆栈虚拟机 例:WebAssembly Virtual Machine 取最⼤值 fn max(a : Int, b : Int) -> Int 1. local.get $a local.set $m0 码力 | 31 页 | 594.38 KB | 1 年前3
 Go vs. GoPlus(Go+)Close() ... // process file data 惊喜6:功能内聚 • 用组合实现继承(包括虚拟继承) type Foo struct { // 继承 Base ... } type Foo struct { // 虚拟继承 *Base ... } • 直达问题的本质,清晰易懂 惊喜7:消除了堆与栈的边界 -心智负担低 • 关注焦点 -服务端开发 -大型软件工程 Go 语言的发展瓶颈 • 服务端开发不是一个大市场 -成也云计算,败也云计算 • Go 语言需要开辟新战场 -桌面开发(程序员最多的市场) • PC桌面开发 • Mobile开发 • Web开发(含小程序及轻应用) • IoT开发 -数据科学(当前最火的市场,推动Python到语言排行榜第二) • 大数据、人工智能 • 数学软件0 码力 | 54 页 | 1.82 MB | 1 年前3
 Linux Docker MessInstallation n 直接格掉Windows,安装一个Linux发行版,如Ubuntu(强烈推荐) n 双系统,Windows和Linux并存(不推荐) n 虚拟机方式安装 n Windows系统中通过虚拟机安装Linux(较推荐) n Linux系统中通过虚拟机安装Windows(Kid me?) http://www.linuxfromscratch.org/ 建议用一个连续的时间(例如你的寒假,或者没人打扰的完整的一周) Architecture Shell Kernel File System Applications Architecture Kernel n 内存管理 n 进程管理 n 文件系统(虚拟文件系统 VFS) n 设备驱动 n 网络接口 建议阅读Linux内核源代码,可以从Linux-0.11入手,推荐Linux内核完全注释 (赵炯著) Architecture Shell n 系统的用户界面 算机前我们肯定会比现在 更加健康 n 比现在更像一个计算机系 的学生 n 比现在更爱看书 n 比现在更爱户外活动 Architecture 高德纳(Donald Ervin Knuth)的桌面(基于FVWM的窗口系统) https://en.wikipedia.org/wiki/Donald_Knuth http://www-cs-faculty.stanford.edu/~uno/0 码力 | 77 页 | 7.40 MB | 1 年前3
 洛佳 组件化驱动、ROM运行环境与RustSBIRust语言 汲取Rust嵌入式和操作系统生态经验,总 结而成的新一代驱动开发方法。动、静态 基地址结合,高灵活性;一次开发,同时 复用于嵌入式、固件和内核中。 # 组件化驱动 合理利用嵌入式、桌面和服务器芯片片内 ROM代码,构造零开销的运行环境。进一 步地,可完成安全引导、安全镜像分发和 通常的嵌入式开发等功能。 # ROM运行环境 # 2023年的RustSBI 作为RISC-V 效 率 。 2023年的RustSBI 第 03 部分 RustSBI软件架构更新 • RISC-V SBI可运用于机器态和虚拟化 的宿主态,此时RustSBI实现应为虚 拟机提供电源、核管理等功能。 • 嵌套虚拟化存在时,RustSBI实现应 当为内部虚拟机软件模拟H指令集。 在这方面,Dramforever的项目1提 供了很好的例子。 • LARVa2项目是固件充当模拟器的例 子,0 码力 | 21 页 | 3.12 MB | 1 年前3
 Django、Vue 和Element UI 前后端原理论述接口进行数据传输和交互,从而实现一个完整的 Web 应用。 3 《51 测试天地》七十四 www.51testing.com 二、搭建流程 2.1 后端搭建流程 安装相关包->创建工程->后端依赖(pipenv)创建虚拟环境->后端服务配置启动->后 端创建子应用->后端 Rest Framework->数据库配置 简要说明: 安装相关包:在开始之前,首先需要安装 Python 和 pip,然后安装 Django 的命令行工具创建 Django 项目,例如:django-admin startproject projectname。 后端依赖(pipenv)创建虚拟环境:建议使用 pipenv 来创建和管理虚拟环境,以便 隔离项目的依赖和环境。 后端服务配置启动:在虚拟环境下,通过 Django 的 manage.py 启动服务,例如:python manage.py runserver。 后端创建子应用: 可以在浏览器中预览项目。 三、关键技术介绍 1、后端为什么要创建虚拟环境,创建虚拟环境可以达到什么效果? 隔离项目依赖:通过创建后端虚拟环境,每个项目都拥有独立的 Python 解释器和包 安装目录,这样可以避免不同项目之间的依赖冲突。每个虚拟环境只包含该项目所需的 依赖,使得项目可以在独立的环境中运行,而不受其他项目的影响。 确保依赖一致性:虚拟环境通常会配合使用 Pipenv 等工具来管理项目的依赖,这样0 码力 | 61 页 | 6.84 MB | 1 年前3
 PyConChina2022-上海-用GitHub完成Python的全技术栈开发-卢建晖开发人员不必为复杂的设置和本地安装而苦恼,更不用说在动力 不足的桌面工作站上运行了 申请地址: http://aka.ms/codespaces_sku_request 这是一个真实例子 45min to < 1min 从一个应用说起 机器学习 服务 事件 我们从环境搭建开始 关于 Dev container 当您在 GitHub Codespaces 中工作时,您工作的环境是使用托管在虚拟机上的开发容器或开发容器创建的。 的。 开发容器或开发容器是专门配置为提供功能齐全的开发环境的 Docker 容器。 每当您在代码空间中工作时, 您就是在虚拟机上使用开发容器。 您可以为存储库配置开发容器,以便为该存储库创建的代码空间为您提供量身定制的开发环境,并配备处理特 定项目所需的所有工具和运行时。 如果您未在存储库中定义配置,则 GitHub Codespaces 将使用默认配置, 其中包含您的团队在开发项目时可能需要的许多常用工具。0 码力 | 24 页 | 4.86 MB | 1 年前3
 Apache Shiro 1.2.x Reference Manual 中文翻译获取的对象进行强制类型转换,这么多强 制转换非常的丑陋、累赘并且会和你的类紧耦合。 SecurityUtils.setSecurityManager 方法会将 SecurityManager 实例化为虚拟机的单独静 态实例,在大多数程序中没有问题,但如果有多个使用 Shiro 的程序在同一个 JVM 中运 行时,各程序有自己独立的实例会更好些,而不是共同引用一块静态内存。 改变配置就需要重新编译你的程序。 AuthenticationInfo 实例,用来表示来自数据源的 Subject 账户信息。 节约时间 直接实现 Realm 接口也许需要时间并容易出错,大部分用户选择继承 AuthorizingRealm 虚拟 类,这个类实现了常用的认证和授权工作流,这会节省你的时间而且不易出错。 Credentials Matching 凭证匹配 在上述 realm 认证工作流中,一个 Realm 必须较验 Subject 话将以相同的方式聚集。不需要容器的具体配置! Heterogeneous Client Access - 与 EJB 或 web 会话不同,Shiro 会话可以被各种客户 端技术“共享”。例如,一个桌面应用程序可以“看到”和“共享”同一个被使用的物理会话通 过在 Web 应用程序中的同一用户。我们不知道除了 Shiro 以外的其他框架能够支持这一 点。 Event Listeners - 事0 码力 | 196 页 | 2.34 MB | 1 年前3
 《Java 应用与开发》课程讲义 - 王晓东58 6.1 Java 内存模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.1.1 Java 虚拟机(Java Virtual Machine, JVM) . . . . . . . . . . . . . . 59 6.1.2 JVM 内存模型 . . . . . . . . . . . . 5.1 Java 多态 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 6.1 Java 虚拟机架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 6.2 JVM 内存模型 . . . . . . 引入Swing 2000.5 2002.2 2004.10 2006.11 J2SE1.3 J2SE1.4 J2SE1.5 J2SE5.0 JavaSE6.0 支持XML,采用新的虚拟机Hotspot 引入Assert语言特性 增加范型、for-each循环、可变数目参数、注解、自动装箱和拆箱 将Java2重新做回Java,性能、易用性前所未有的提高 Java7 Or0 码力 | 330 页 | 6.54 MB | 1 年前3
 ffmpeg翻译文档Format(高级系统格式)分离器 这个分离器用于ASF文件和MMS网络流 -no_resync_search bool 通过寻找一定的可选启动代码而不试图重新同步 Virtual concatenation script(虚拟级联脚本)分离器 分离器从一个文本文件中读取一个文件列表和其他指令,然后分离它们,就像文件和指令是被混合在 一起的(文件对应特定类型流,指令也对应特殊流) 时间戳是以第一个文件开始作为0,然后 指示文件持续时间。这个信息可以用于指定文件,以用于有效的帮助处理可能从文件信息中获取 (计算)的不可用或不准确持续时间 如果是所有文件的持续时间,则可在整个文件中进行定位 stream 指定虚拟文件流。随后所有关于流的指令适用于这个指定的流。一些流必须设置为允许识别子文 件匹配的流,如果没有指定流则从第一个文件流进行复制 exact_stream_id id 设置流的id。如果设置了 持)。它用于音频源必须指定为一个值,但可以是任何虚拟的 audio_device_save 存储当前音频采集滤镜设备和他们的参数(如果滤镜支持)到一个文件。如果文件存在则被覆盖 (这个文件可以被 audio_device_load 加载) video_device_load 从文件加载一个视频捕获设备而不是根据名字搜索。它可以同时加载附加参数(如果滤镜支 持)。它用于视频源必须指定为一个值,但可以是任何虚拟的 video_device_save0 码力 | 502 页 | 3.06 MB | 1 年前3
 Python3 基础教程 - 廖雪峰一个 比较完善的基础代码库,让你能直接调用,比如,针对电子邮件协议的 Python3 基础教程【完整版】 http://www.yeayee.com/ 9/531 SMTP 库,针对桌面环境的 GUI 库,在这些已有的代码库的基础上开发, 一个电子邮件客户端几天就能开发出来。 Python 就为我们提供了非常完善的基础代码库,覆盖了网络、文件、 GUI、数据库、文本等大量内 可以同时运行多个任务。 打个比方,你一边在用浏览器上网,一边在听 MP3,一边在用 Word 赶 作业,这就是多任务,至少同时有 3 个任务正在运行。还有很多任务悄 悄地在后台同时运行着,只是桌面上没有显示而已。 现在,多核 CPU 已经非常普及了,但是,即使过去的单核 CPU,也可 以执行多任务。由于 CPU 执行代码都是顺序执行的,那么,单核 CPU 是怎么执行多任务的呢? BAT,无一例外都选择了免费的开源数据库:  MySQL,大家都在用,一般错不了;  PostgreSQL,学术气息有点重,其实挺不错,但知名度没有 MySQL 高;  sqlite,嵌入式数据库,适合桌面和移动应用。 作为 Python 开发工程师,选择哪个免费数据库呢?当然是 MySQL。因 为 MySQL 普及率最高,出了错,可以很容易找到解决方法。而且,围 绕 MySQL 有一大堆监控和运维的工具,安装和使用很方便。0 码力 | 531 页 | 5.15 MB | 1 年前3
共 287 条
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 29
 













