4. 浏览器
目前主流的浏览器分这么几种:
IE 6~11:国内用得最多的IE浏览器,历来对W3C标准支持差。从IE10开始支持ES6标准;
Chrome:Google出品的基于Webkit内核浏览器,内置了非常强悍的JavaScript引擎——V8。由于Chrome一经安装就时刻保持自升级,所以不用管它的版本,最新版早就支持ES6了;
Safari:Apple的Mac系统自带的基于Webkit内核的浏览器,从OS X 10.7 Lion自带的6.1版本开始支持ES6,目前最新的OS X 10.11 El Capitan自带的Safari版本是9.x,早已支持ES6;
Firefox:Mozilla自己研制的Gecko内核和JavaScript引擎OdinMonkey。早期的Firefox按版本发布,后来终于聪明地学习Chrome的做法进行自升级,时刻保持最新;
移动设备上目前iOS和Android两大阵营分别主要使用Apple的Safari和Google的Chrome,由于两者都是Webkit核心,结果HTML5首先在手机上全面普及(桌面绝对是Microsoft拖了后腿),对JavaScript ...
3. js高级性能
JavaScript 异常try 语句使您能够测试代码块中的错误。
catch 语句允许您处理错误。
throw 语句允许您创建自定义错误。
finally 能够在 try 和 catch 之后执行代码,无论结果如何
try && catch123456try { 供测试的代码块} catch(err) { 处理错误的代码块 // document.getElementById("demo").innerHTML = err.message;}
Js抛出异常 当发生错误时,JavaScript 通常会停止并产生错误消息。 实际上会创建带有两个属性的 Error 对象:name 和 message。
属性
描述
name
设置或返回错误名
message
设置或返回错误消息(一条字符串)
error 的 name 属性可返回六个不同的值:
错误名
描述
EvalError
已在 eval() 函数中发生的错误
RangeError
已发生超出数字范围 ...
2. Js函数
Js日期将日期存储为毫秒JavaScript 将日期存储为自 1970 年 1 月 1 日 00:00:00 UTC(协调世界时)以来的毫秒数。
零时间是 1970 年 1 月 1 日 00:00:00 UTC。
显示在 HTML 中显示日期对象时,会使用 toString() 方法自动转换为字符串。
12d = new Date();document.getElementById("demo").innerHTML = d;
toUTCString()方法将日期转换为 UTC 字符串(一种日期显示标准)
1document.getElementById("demo").innerHTML = d.toUTCString();
toDateString()方法将日期转换为更易读的格式:
12document.getElementById("demo").innerHTML = d.toDateString();//Tue Aug 11 2020
日期获取方法
方法
描述
getDate()
以数值返回天(1 ...
「Logisim」设计思想
[TOC]
设计电路模块对于复杂的电路,我们会使用两张表。
一张模块接口定义表与一张功能定义表,原因是对于这些复杂电路来说,简单的端口定义已经无法识别其功能,或者该模块在不同的情况与输入下有不同的功能,这种时候我们需要使用功能定义表来对模块的功能进行约定。
我们需要把设计与实现这两项工作分开来保证我们在工程中较高的完成率。
有限状态机使用Logism设计有限状态机的过程基本上可以分为三个步骤:
设计实现状态存储模块
设计实现状态转移模块
设计实现输出模块
Moore型
Mealy型
设计建议
分析具体问题,画出状态转移图
对状态进行合适的编码
画出状态转移和输出逻辑的真值表
在Logisim中实现状态转移和输出逻辑,并采用合适的存储器存储具体状态值
划分层次在计算机科学中的任何问题都可以通过增加一个间接层来解决“(Any problem in computer science can be solved with another layer of indirection. )
在完成了搭建后,测试是个必不可少的环节。
测试
覆盖所有测试功能正常进行的样例
极端情况的样例 ...
「MIPS」汇编程序设计
数据的声明与分配数据储存空间,指的是内存中的空间
寄存器虽然也可以存储数据,但更重要的功能是临时存储以供计算。
控制流if-else 结构12345678910111213141516171819.text li $t1, 200 li $t2, 400 slt $t3, $t2, $t1 beq $t3, $zero, if_1_else nop la $a0, s1 li $v0, 4 syscall j if_1_end nop if_1_else: la $a0, s2 li $v0, 4 syscall if_1_end:
for 结构1234567891011121314151617181920212223242526.data s1: .asciiz " ".text li $t1, 100 # use $t1 as n li $t2, 0 # use $t2 as ifor_1_begin: slt $t3, $t2, $t1 beq $t3, $zero, for_1_end nop ########### ...
「MIPS」语法
变量的声明与定义使用的是伪指令,这些伪指令主要用途是标识数据段和代码段的位置,并为声明的数据分配空间。
123456.datafibs: .space 48 # "array" of 12 words to contain fib valuessize: .word 12 # size of "array"space:.asciiz " " # space to insert between numbershead: .asciiz "The Fibonacci numbers are:\n".text
Help文档MIPS->Directives一栏,对所有的伪指令都做了简要的介绍
1) .data 格式:.data [address]
定义程序的数据段,初始地址为address,若无address参数,初始地址为设置的默认地址。
需要用伪指令声明的程序变量需要紧跟着该指令。比如该程序中的fibs, size, spa ...
「MIPS」MARS
数据导出在不使用命令行进行导出的情况下,Mars对代码和数据的导出有各自的限制。
对于导出代码,只能导出有代码的那部分内容,并且有长度限制 4KB。代码导出的是汇编指令翻译成的32为机器码
对于导出数据,只允许在数据被修改的情况下导出,而且导出的数据范围是0x00000000 - 0x00000ffc
导出格式:hexadecimal text [ 16进制 ]
「MIPS」指令集
指令指令,即是由处理器指令集架构定义的处理器的独立操作,这个操作一般是运算、存储、读取等。一个指令在CPU中真正的存在形式是高低电平,也可以理解为由01序列组成的机器码。汇编指令只是指令的一种表示形式而已,其实质是一样的。
计算机执行一条指令的主要步骤包括如下四步:1. 取址,2. 译码,3. 执行,4. 回写
格式一般来说,指令的格式如下:
1 指令名 操作数1, 操作数2, 操作数3
不过,也有如下的指令格式,一般用于存取类指令:
1 指令名 操作数1, 操作数3(操作数2)
操作数,即指令操作所作用的实体,可以是寄存器、立即数或标签,每个指令都有其固定的对操作数形式的要求。而标签最终会由汇编器转换为立即数。所谓立即数,即在指令中设定好的常数,可以直接参与运算,一般长度为16位二进制。而标签,用于使程序更简单清晰。标签用于表示一个地址,以供指令来引用。一般用于表示一个数据存取的地址(类似于数组名)、或者一个程序跳转的地址(类似于函数名,或者C语言中goto的跳转目标)。
注意:在MARS中,跳转指令只能使用标签来进行跳转,不能使用立即数!
机器码指令 CPU 可以直接识别机 ...
「MIPS」前置知识
数据大小通常情况下,对32位操作系统,
一个字节 (Byte) 等于8位
一个字(Word)等于4字节
根据SI标准,1kB=1000B(字节, Byte),而根据IEC标准 ,1kiB=1024B [ 1KB=1024B ]。
硬盘生产商是以GB(十进制,即10的3次方=1000,如1MB=1000KB)计算的,而电脑(操作系统)是以GiB(2进制,即2的10次方, 如1MiB=1024KiB)计算的,但是国内用户一般理解为1MiB=1M=1024 KB, 所以为了便于中文化的理解,翻译MiB为MB也是可以的。
数据传输速率中,1Kb/s=1000b/s。因为1024是理想标准的,但是实际情况很难做到理想标准。
存储方式计算机中的数据存储主要有两种方式:大端存储和小端存储。
大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。
小端模式,是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。
例如,将一个32位的整数0x12345678存放到一 ...
「Java」异常处理
异常大致有以下几种:
检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。
分类所有的异常类是从 java.lang.Exception 类继承的子类。
Java的异常(Exception和Error)分为检查异常和非检查的异常。
检查异常
编译器要求你必须处理的异常。比如我们在编程某个文件的读于写时,编译器要求你必须要对某段代码try….catch… 或者 throws exception,这就是检查异常,简单的来说,你代码还没有运行,编码器就会检查你的代码,对可能出现的异常必须做出相对的处理。
除了RuntimeException与其派生类(子类),以及错误(Error)。其他的差不多都是检查异常。
非检查异常
编译器不要求强制 ...