硬核冷知识:V8与WebAssembly不得不说的秘密
一切可编译为WebAssembly的,终将被编译为WebAssembly。
V8执行原理
从整体流程来看,v8引擎执行js代码的关键步骤在于
AST语法树生成
字节码生成
解释器
JIT(优化编译器,监控模块)
对于整体流程的解释与分析这里不再赘述,详情可查看北渊大佬的博客v8 执行 js 的过程
JIT和AOT定义&对比JIT和AOT是对当下两种最为流行的代码编译方式的定义
JIT
JIT(Just-In-Time):即时编译,又称动态编译
JIT的特点在于不对代码做完整的编译,而是随着程序的运行逐行编译
AOT
AOT(Ahead-Of-Time):预先编译,又称静态编译
AOT的特点在于在程序运行之前将所有代码进行编译,而后将完整的程序机器码交由操作系统执行
Differences
两者的区别
(ps:两者的区别就好像当我们看一篇外文文章时采用不同的翻译方式)
JIT的方式就像我们在阅读文章时采用划词翻译的方式,我们可以完全根据自己的进度去翻译文章
启动速度快,不需要等待全文翻译
优化,根据当前的上下文对翻译内容进行优化
AOT的方式更像go ...
JAVA运行原理
Java:
Java源码到执行的过程,从JVM的角度看可以总结为四个步骤:编译->加载->解释->执行
【编译】:javac通过语法分析,语意分析,注解处理最终形成.class文件
【加载】:将.class文件装载到JVM中,进行连接(验证,准备,解析)以校验class信息、分配内存空间及赋默认值,最后进行初始化为变量赋值正确的初始值
【解释】:将字节码转换为系统指令(机器码)在JVM中会有字节码解释器和即时编译器。在解释时会对代码进行分析,查看是否为「热点代码」,如果为「热点代码」则触发JIT编译,下次执行时就无需重复进行解释,提高解释速度
【执行】:调用操作系统执行最终形成的机器码
浏览器内核详解
什么是浏览器内核?
一般我们常说的浏览器内核指的其实就是“渲染引擎”
浏览器的组成部分
浏览器的组成主要有三部分:用户界面,浏览器引擎以及渲染引擎
用户界面:这个其实就是我们平常使用浏览器看到的一部分
浏览器引擎:用于在用户界面和渲染引擎之间传递数据(一般来说这就是浏览器的数据持久层)
渲染引擎:负责渲染用户请求的页面内容
渲染引擎包括多个小的功能模块如:
网络模块:负责网络请求
JS解析器:用于解析和执行JS
常见浏览器内核以及其发展史
这部分就比较生硬了,貌似所有介绍者都喜欢介绍这部分
上图截取自油管视频主Luke Lee的视频
1991年Berners Lee建立了第一代浏览器World Wide Web
Berners Lee是互联网发明者之一(妥妥的大佬)
World Wide Web 只支持显示图片和文本
1993年Mosaic问世
Mosaic可以同时显示文本和图片
1994年网景,OPERA发布
网景的开发人员有一部分曾参与Mosaic开发
只能显示HTML没有CSS和JS
相较于网景,opera使用较少
1995年IE诞生
...
JavaScript进阶(2)
箭头函数定义和调用函数:(传统写法)
12345function fn1(a,b){ return a+b;}console.log(fn1(1,2));//输出结果:3
定义和调用函数:(ES6中的写法)
12var fn2=(a,b)=> a+b;console.log(fn2(1,2));//输出结果:3
二者的效果相同。
在箭头函数中,如果方法体内有两句话,那就需要在方法体外加上{}括号。如下:
1234var fn2=(a,b)=>{console.log('haha'); return a+b; };console.log(fn2(1,2))//输出结果:3
从上方的箭头函数中,我们可以很清晰的找到函数名,参数名,方法体。
上方代码中:
如果有且仅有1个参数,则()可以省略
如果方法体内仅有1条语句,则{}可以省略,但前提是,这条语句必须是return。
this的指向
箭头函数只是为了让函数写起来更优雅吗?当然不是,还有一个很大的作 ...
JavaScript进阶(1)
严格模式概念理解:ES5中添加的运行模式:“严格模式”(strict mode),该模式下javascript在更严格的语法条件下运行
目的:
消除js中语法的不合理,不严谨的地方
消除代码不安全之处
为未来新的js版本做铺垫
使用
针对整个脚本文件:将use strict 放在整个脚本文件的第一行,则整个脚本文件将以严格模式运行。
针对单个函数:将use strict放在函数体的第一行,则整个函数以严格模式运行。
语法和行为改变
必须使用var声明变量
禁止自定义的函数中的this指向window
对象不能有重名的属性
严格模式和普通模式的区别
仅列举一部分
全局变量显式声明在正常模式中,如果一个变量没有声明就赋值,默认是全局变量。在严格模式中禁止使用这种用法,全局变量必须显式声明。
禁止this关键字指向全局对象:1234var foo =function(){ console.log(this);}foo();
上方代码中,普通模式打印的是window,严格模式下打印的是undefined。
构造函数必须通过new实例化对象构造函数必须通过n ...
Python实现词频分析和词云生成
由于建模需要,博主简单学习了词频分析和词云生成,本博客仅适用于初学者第一次使用来借鉴
Python实现词频分析和词云生成1. 词频分析
词频分析:所谓词频分析就是对一篇文章中的高频词语进行列举并计数
实现方式:调用nltk的库,对.txt文本进行操作
12345678910111213141516171819202122232425262728293031323334353637383940414243import nltkfrom nltk.tokenize import word_tokenizeimport osimport restop_words = nltk.corpus.stopwords.words('english')#stop_words调用nltk预先定义好的不需要统计的词语字典newStopWords = ['I','It','The','one','use','this','They',' ...
零散学习日记1
博主比较懒也比较菜,学习日记这种东西更新绝对不会太频繁!
Day01 2020.9.6 学习日记1
role属性
role属性的作用是告诉Accesibility类应用(如屏幕阅读器等)当前元素的作用,可以增强文本的可读性和语义化
在Html5元素内,标签本身就是有语义的,因此role可以作为可选属性使用,但类似于Bootstrap中都很重视类似的属性和声明,目的是为了兼容老版浏览器
123456789101112131415161718192021222324252627<!--role属性的使用--><!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><div class="container"> <!--标明页面容器--> ...
MySql指令(不定时更新)
更新全凭心情,学习时间随机
Mysql指令(边学边更新)
安装服务: mysqld –install
初始化:mysqld –initialize –console
开启服务:net start mysql
关闭服务:net stop mysql
登录mysql:mysql -u root -p
Enter PassWord:(密码)
修改密码:alter user ‘root‘@’localhost’ identified by ‘root’
标记删除mysql服务:sc delete mysql
python+opencv自学笔记(1)
python+opencv自学笔记(1)读取图像示例:
123456import cv2 as cvsrc=cv.imread('path')cv.namedWindow('input_image', cv.WINDOW_AUTOSIZE)cv.imshow('input_image', src)cv.waitKey(0)cv.destroyAllWindows()
cv.imread()方法
参数:
cv.imread('path')
作用:
读取path路径下的图片(注意:path要为绝对路径且保证全英文)
cv.namedWidow()方法
参数:
cv.namedWindow('image',cv.Window_AUUTOSIZE)
作用:
用于创建一个窗口,第一个参数为窗口的名称,第二个参数则是窗口的属性(可以省略,默认值为cv.WINDOW_AUTOSIZE)
cv.imshow()方法
参数:
cv.imshow('image',src)
作用:
...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment