前端学习
编程语言
编程语言的发展大概经历了以下几个阶段: 汇编语言 ==> 面向过程编程 ==> 面向对象编程
汇编语言是编程语言的拓荒年代,它非常底层,直接和计算机硬件打交道,开发效率低,学习成本高;
C语言是面向过程的编程语言,已经脱离了计算机硬件,可以设计中等规模的程序了;
Java、C++、Python、C#、PHP 等是面向对象的编程语言,它们在面向过程的基础上又增加了很多概念。
编程语言的从执行原理上分为两类:解释型语言和编译型语言
计算机不能直接理解机器语言以外的语言,因此需要将我们写的代码编译成机器语言,然后再交给计算机去执行。
编译型语言
程序在执行之前需要一个专门的编译过程,把程序编译为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如C、C++、Delphi等。
解释型语言
程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。如 Python、Shell、JavaScript 等。
Java
编译器(javac)把源代码转化为字节码,然后解释器(Java.exe)把字节码转换为计算机理解的机器码来执行。其中编译器和解释器都是 Java 虚拟机(JVM)的一部分,由于针对不同的硬件与OS,Java 解释器有所不同,因此可以实现“一次编译、到处执行”。所以 JVM 是Java 跨平台特性的关键所在 – 引入 JVM 后,Java 语言在不同平台上运行时不再需要重新编译。
对于前端开发同学使用的 JavaScript 语言,属于典型的解释型语言
JavaScript
JavaScript 作为编程语言的一种,直接输送给计算机(CPU)是不认识的(上面有提及),需要将其转换为指令集。不同类型的 CPU 的指令集是不一样的。JavaScirpt 引擎可以将 JavaScript 代码编译为不同 CPU(Intel, ARM 以及 MIPS 等)对应的机器码,同时引擎还可以执行代码、分配内存以及垃圾回收等。
Google V8 是开源高性能 JavaScript 和 WebAssembly 引擎,被用于 Chrome 和 Node.js 等。其中包括重要的四个模块:
Parser:将 JavaScript 源码转换为 Abstract Syntax Tree (AST);
Ignition:解释器,将 AST 转换为 Bytecode,解释执行 Bytecode;同时收集 TurboFan 优化编译所需的信息,比如函数参数的类型;
TurboFan:编译器,利用Ignitio所收集的类型信息,将Bytecode转换为优化的汇编代码(计算机可识别);
Orinoco:垃圾回收,负责将程序不再需要的内存空间回收。
整个转换过程:JavaScript ==> AST ==> Bytecode ==> Machine Code
原文链接:https://blog.csdn.net/ligang2585116/article/details/117263599
关于window.location.reload(false);window.location.reload(true)
window.location.reload(false);
当window.location.reload();默认也是false;先会根据浏览器的http请求的头部 If-Modified-Since的值来判断在请求文件时文件是否发生变化,如果没有就从缓存中找到更新到页面。
window.location.reload(true);
这个跟false的有区别,无论文档的修改时间是什么,或者有没有缓存,它都会从新在服务器端请求一次来更新到页面。
history.Go(0)
先说说history,history就是你访问的页面跟路由的记录,它会实时更新到history里面去,当你history.go(xx),会根据记录的路由匹配对应的以及缓存好的页面,也就是说所有的history都是调用已经被缓存的页面。
浏览器的左上角返回箭头按钮
它的作用是返回上个页面,但是返回后页面的数据也就是并不会更新,文档也不更新。
注:window.location.reload(),window.location.reload(true),history.Go(0),都会更新数据
常见时间格式
前端和后端时经常会遇到各种各样的时间格式,这些格式在编写程序的时候都需要去使用不同的处理方式
类型名 | 格式 | 说明 |
---|---|---|
ISO 8601 |
一般:2020-12-05T05:33:19Z 东八区:2004-05-03T17:30:08+08:00 |
国际标准化组织的日期和时间的表示方法,这种格式是最常用的格式。
时间表示格式为
|
RFC2822 | 1992/02/12 12:23:22+0800 | 符合rfc2822格式的时间 |
格林威治标准时间GMT | Fri Jul 20 2018 00:00:00 GMT+0800 (中国标准时间) |
格林威治的子午线作为划分地球东西两半球的经度零度,并作为时间的零点。 世界上其他国家要想得到本国的时间就必须通过自己国家所在的时区进行计算 |
世界协调时间UTC | Mon, 29 Apr 2019 09:52:21 GMT | 经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以「秒」为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密 |
Unix时间戳 | 以秒为单位:1607150827 以纳秒为单位:1607150827857990329 | 是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。 |
一般来说 iso8601时间 和 Unix时间戳 会比较常用。
目前 JavaScript 中使用的日期格式无非 3 种 : GMT
、UTC
、ISO-8601
提交POST请求的四种方法 | TonyStudio
https://blog.tcs-y.com/2019/06/02/four-ways-to-post-data-in-http/