
前端
文章平均质量分 82
lengye7
这个作者很懒,什么都没留下…
展开
-
vscode的远程开发与调试——以C/C++为例
再比如,当用户的本地环境是windows,但是程序的运行环境却是linux,用户虽然可以通过gdb在linux上调试,但是调试体验却较差,此时,vscode远程调试可以给用户一个良好的调试体验。这意味着,用户可以在本地开启vscode编辑代码,但是代码本身存在远程服务器上,同时在本地debug,但是却使用远程服务器编译,并启动被调试程序。引入了remote development特性。该离线安装方案,已经手动验证过了,考虑到vscode的版本可能较多,就没有脚本化了,等需要用到的时候,再去手动下载安装。原创 2023-03-09 00:51:51 · 15304 阅读 · 2 评论 -
http的缓存的age的计算
HTTP1.1规定,当一个Response从缓存中获得的时候,必须添加一个Age字段。这个字段的值表示从Origin Server产生该reponse或者该response validated开始,一直到现在所经过的时间的估计值(实际上,它表示的就是缓存的年龄。)。这是一个估计值,意味着不准确,这是非常重要的,后面的Age的算法也更加充分说明了,Age的确是一个不准备的值。Age通常与Max-Age一起使用,来确定一个response的缓存是否失效。Age在本质上等于reponse在路径上所有缓存serve原创 2022-06-01 19:01:21 · 1804 阅读 · 1 评论 -
nginx的location
前言Nginx的location就相当于url路由,Nginx根据location的配置来决定究竟如何处理一个请求。Nginx通过将一个请求的url与location进行对比,来决定将该请求扔到哪个location对应的处理策略中。一、location的匹配规则文档:Module ngx_http_core_module上面是文档,我将location的简单的总结为以下几点:概念:Nginx的location分为两类:一类是prefix string;另一类是regular原创 2022-05-07 21:08:58 · 2630 阅读 · 0 评论 -
Javascript的字符串String的编码之unicode的处理
首先确定的是Ecmascript使用的是一种UTF-16的编码,但是这种编码却不是标准的UTF-16编码的处理方式。前言unicode 2.0引入了utf-16编码,unicode3.0更精确的定义UTF-16编码。参考:https://iamzero.blog.csdn.net/article/details/1131233841999年ES3.0发布,该版本的Ecmascript直接规定了String类型的编码使用UTF-16,但是对String依然按照单个code unit原创 2022-05-04 02:59:30 · 3768 阅读 · 0 评论 -
Javascript的Json序列化与反序列化深入研究笔记
前言从ES5.0开始引入原生的Json对象,Json对象有两个函数可以使用:JSON.stringify():用于将一个ECMA的数据类型的值序列化为一个Json TEXT。JSON.parse():用于将一个Json TEXT反序列化为ECMA的数据类型的值。Json TEXT归根到底是一个字符串。 -------参考Json数据格式_lengye7的博客-CSDN博客序列化Javascript中,value主要分为两类:第一类是primitiv...原创 2022-05-02 17:20:27 · 1857 阅读 · 0 评论 -
Json数据格式
前言Json(Javascript Object Notation)从Javascript派生而来,它是一种语言无关的数据格式,Json数据格式的文件以.json结尾。Json数据格式由Douglas Crockford在2000年左右提出的。RFC4627是描述了Json数据格式的第一份informational状态的RFC文档。2013年,ECMA-404标准化了Json;2017年,RFC8259正式成为Standard状态的RFC文档,标志着Json数据格式正式成为一种标准。另外,ECM原创 2022-04-29 14:41:09 · 26654 阅读 · 0 评论 -
Promise这一篇就够了
参考:V8 Promise源码全面解读 - 掘金备份:V8 Promise源码全面解读_lengye7的博客-CSDN博客上面这篇文章中的几个错误:1、resolve不是对应于规范的FulfillPromise而是对应于Promise Resolve Functions。2、reject不是对应于规范的RejectPromise而是对应于Promise Reject Functions。上面这篇文章之中提到的TriggerPromiseReactions ( reactions, a原创 2022-04-07 23:53:17 · 1989 阅读 · 0 评论 -
Creating a JavaScript promise from scratch, Part 7: Unhandled rejection tracking
Rejected promises without rejection handlers can hide important errors, which is why both Node.js and browsers have a way of tracking them.When promises were introduced in ECMAScript 2015, they had an interesting flaw: if a promise didn’t have a rejectio转载 2022-04-04 20:17:31 · 367 阅读 · 0 评论 -
V8 Promise源码全面解读
在前面的话阅读本文你将收获什么?了解 V8 Promise 源码全过程,世界上不再有能困住你的 Promise 题目,我就是这么肯定这篇文章的干货 仅仅了解或者实现了 Promise/A+ 规范,这与 JavaScript 的 Promise 中间还有很大的差距 如果你在面试时将 Promise 回答到本文的深度,一定是收获 SP 或者 SSP offer 的利器,因为面试官大概率也不知道这些知识。你知道 浏览器 & Node 中真正的 Promise 执行顺序是怎么样的吗,如果你只是转载 2022-04-01 21:26:59 · 403 阅读 · 0 评论 -
ES6的模块化
前言在ES6以前,javascript一直没有官方的模块化,所以有人就提出了多种模块化方案,例如:CommonJS,AMD,CMD,UMD等。从ES6开始,javascript具有了自己的模块化系统。浏览器兼容性参考:<script> - HTML(超文本标记语言) | MDN可以看到主流浏览器基本都已经实现了ES6的模块化加载script加载与html解析的关系1、传统script标签与html解析如图所示,传统脚本的下载会中断html的解析。原创 2022-03-31 23:23:01 · 1368 阅读 · 0 评论 -
JS的各种模块化方案使用方式(IIFE、AMD、CMD、COMMONJS、UMD)
说明首先要说明的是,这些模块化的方案已经过时了,只有一些还需要维护的老项目的还在使用,当前基本都是用打包器打包的模块化方案,例如webpack,通过webpack打包之后的方案,就是webpack模块化方式。IIFE(Immediately Invoked Function Expression)这是一种原始的方式,能起到的作用仅仅只是隔离模块之间额命令冲突,将各种名字限制在模块内部。模块之间的依赖关系依靠程序员手动解决,通过在html中手动编写script标签来确定依赖关系。模块定义:原创 2022-03-28 23:27:02 · 1670 阅读 · 0 评论 -
AMD(requirejs)模块的基本使用
前言使用requirejs在浏览器中加载模块,其实就只有3个主要的API:require,require.config,define。由于requirejs与require在全局作用域下是同一个API,我这里使用requirejs。我之所以使用requirejs的原因:requirejs在后续的define加载过程中,其会吧require重新绑定到另外一个函数,所以为了防止一些意外情况,我使用requirejs这个API来代替require这个API。所以,我使用的API就三个:原创 2022-03-28 19:12:57 · 927 阅读 · 0 评论 -
requirejs的源码学习-----整理
requirejs的学习笔记requirejs的源码学习(01)——初始化流程_lengye7的博客-CSDN博客requirejs的源码学习(02)——模块加载流程_lengye7的博客-CSDN博客requirejs源码学习(03)——define即其依赖加载流程_lengye7的博客-CSDN博客requirejs的源码学习(04)——define中回调能顺序执行的原理_lengye7的博客-CSDN博客还有一些没有弄清楚的东西1、如果是采用data-main方式,那么加载的过原创 2022-03-28 00:05:30 · 327 阅读 · 0 评论 -
requirejs的源码学习(04)——define中回调能顺序执行的原理
目录前言分析过程细节补充前言在上一篇的末尾提到了define中回调函数的执行顺序性是依靠发布-订阅模式实现的,那里只是简单说了一下,现在实际分析一下。分析过程还是接上一篇的分析先定位到完成订阅的地方:在module对象的enable方法中的on函数(该on函数是context中的那个,是Module的on函数的封装)调用实现了当前module对依赖模块的defined事件的订阅。箭头处则是事件发生的时候所执行的回调函数,但是需要注意的是,这里的回调函数并不原创 2022-03-27 23:57:16 · 722 阅读 · 0 评论 -
requirejs源码学习(03)——define即其依赖加载流程
前言接上一篇,上一篇加载的入口为app模块,当app模块下载完成之后,就会获得执行。app的依赖加载流程贴上app的代码:define( function(require) { 'use strict'; var moduleA = require('./lib/moduleA'); console.log("I am app! calling moduleA.hello!"); moduleA.helloA();});当app加载完成,就会执行原创 2022-03-27 00:31:25 · 1332 阅读 · 0 评论 -
requirejs的源码学习(02)——模块加载流程
前言这里讨论的模块加载流程只讨论define定义,require获取的形式。这里不涉及data-main以及config中的依赖模块加载过程。回顾requirejs的初始化流程:1、初始化各种API以及功能函数1)、req=require=requirejs,req.config,req.load,define等。2、newContext这个核心1)、定义各种内部使用的数据结构2)、context这个中心数据结构3)、module这个基本操作单元3、完成对re原创 2022-03-26 20:50:36 · 1978 阅读 · 0 评论 -
requirejs的源码学习(01)——初始化流程
前言现在已经2022年了,大家都已经用上webpack来进行各种打包了,webpack也能很好的兼容各种模块化方案,但是requirejs这个曾经很流行的模块化方案还是值得学习一下的。本次学习的目的并不是为了弄清楚requirejs的方方面面,而是为了弄清楚其模块化加载原理。注意:本文只探讨浏览器环境下的requirejs。程序入口本文分析的requirejs版本:2.3.6。本人菜鸡一个,直接阅读源码,显然不太可能,我采用F12动态调试的办法来追踪它的运行流程。<!--原创 2022-03-26 01:27:23 · 2038 阅读 · 3 评论 -
浏览器环境中javascript加载执行顺序及注意点
1、html中通过script标签引入的javascript代码。这种js代码是自上而下执行的,不论其加载快慢,始终都是按照顺序执行。2、不要在加载脚本中使用document.write插入任何javascript代码。因为这种方式写入的JS代码在执行流程中会出现一些问题,所以最好就是不要使用这种方式在加载过程中插入JS代码。外部脚本:通过script src引入。内部脚本:直接script内嵌。注:document.write写入内容的位置还存在一个问题,加入在<head&.原创 2022-03-24 15:50:45 · 3327 阅读 · 0 评论 -
CMD(seajs)的使用详解
一、模块定义模块定义文档:CMD 模块定义规范 · Issue #242 · seajs/seajs · GitHubCMD规范:https://github.com/cmdjs/specification/blob/master/draft/module.md核心:在 CMD 规范中,一个模块就是一个文件。代码的书写格式如下:define(factory);factory 可以是一个函数,也可以是一个对象或字符串。factory 为对象、字符串时,表示模块的接口就是该对象、字原创 2022-03-22 15:46:24 · 603 阅读 · 0 评论 -
编程语言总结(一)
前言目录前言一、编程语言是什么二、编程语言的发展机器码时代汇编语言时代汇编到高级语言过渡时代高级语言时代三、编程语言的通常组成部分1、source text2、lexical rules3、syntax rules4、type system5、semantics本文只是我自己对编程语言的理解与自我总结,并不是严谨的、科学的、学术性的知识,所以各位看客不要太当真,如果发现了错误也欢迎指正。一、编程语言是什么编程语言是对计算机的高层次抽原创 2022-03-17 20:03:00 · 763 阅读 · 0 评论 -
关于requestAnimationFrame的研究笔记
首先该函数的回调只会在重排重绘之前调用,这是毋庸置的。另外,在60fps的屏幕上,浏览器的渲染最多做到60fps,也就是说requestAnimationFrame最多只能做到16.7ms间隔执行一次,再短就不行了。究竟是为什么?当Js执行完任务,就会返回UI渲染,但是浏览器可能定义的就是在60fps的屏幕,上一次渲染和下一次渲染之间的间隔超过16.7ms,否则即使返回到了UI渲染,由于间隔没有超过16.7ms,所以就终止渲染,返回到执行Js任务了。但是却不能保证其16.7ms能够执行一次。而且,第原创 2021-07-22 13:30:16 · 1028 阅读 · 1 评论 -
使用 Performance 看看浏览器在做些什么
前言Chrome 浏览器的 Performance 面板为我们提供了检测页面性能的能力,但其提供的远不止一些性能数据。本文将从工作原理的视角,结合实际工程的录制结果,探一探性能面板向我们透露的其他信息。性能面板关于面板的功能与使用方法,可以参考这篇文章。本节主要介绍浏览器架构与性能面板的关系。因为尚未决出最终的标准架构,各大浏览器的实现细节各有不同。这里我们以 Chrome 的架构为例,对照其架构与性能面板的关系。由下图我们可以看到性能面板呈现的几个主要线程。性能面板并不包含架构中全部转载 2021-07-22 12:52:54 · 222 阅读 · 0 评论 -
chrome下出现同名data property和Accessor property
今天在查看Vue实例的过程中,通过console打印vm实例,发现打印的实例里面竟然存在一个a:(...) 还有同名的set和get,这让我很费解,按理说同一个对象中不能存在同名的property啊,这是为什么,于是我开始好奇这个问题。下面是问题的结果:首先同一个对象中不能存在同名的property这是确定的。第二,这绝不是Vue的bug,因为我自己去试了set/get,通过console打印,打印出来的object会自动出现一个同名的a:(...)。第三,鼠标靠近这个同名的a:(.原创 2021-07-14 20:23:33 · 238 阅读 · 0 评论 -
vue组件间通信六种方式(完整版)
前言组件是 vue.js最强大的功能之一,而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用。一般来说,组件可以有以下几种关系:如上图所示,A 和 B、B 和 C、B 和 D 都是父子关系,C 和 D 是兄弟关系,A 和 C 是隔代关系(可能隔多代)。针对不同的使用场景,如何选择行之有效的通信方式?这是我们所要探讨的主题。本文总结了vue组件间通信的几种方式,如props、$emit/$on、vuex、$parent/$children、$attrs/$liste...转载 2021-07-09 18:23:06 · 1555 阅读 · 0 评论 -
Vue通过$emit实现父子组件的通讯原理
父子组件通讯的方法之一是使用$emit。 该方法实现步骤:在父组件内,对子组件的占位符标签上绑定一个自定义事件回调 在子组件内,调用$emit首先了解Vue.prototype.$emit的定义它的作用是循环执行当前 vm (组件实例)的 _events 属性内某个 event (事件名)对应的事件回调列表。也就是触发事件。Vue.prototype.$emit定义在src/core/instance/events.js中。Vue.prototype.$emit = function转载 2021-07-09 18:15:28 · 2664 阅读 · 0 评论 -
从ECMA-262规范角度来确定this指针的值-ES6
前言目前工业界的标准是ES6,应用最广泛的当然是ES5了,我在这里以ES6规范进为准。一、规范所需要理解的一些概念以下列出的类型都是规范类型,它们只存在于规范中,用来说明一些操作。1、The Completion Record Specification TypeThe Completion type is a Record used to explain the runtime propagation of values and control flow such as the be原创 2021-07-02 21:12:47 · 592 阅读 · 1 评论 -
原型链、浏览器中原型链与ES标准文档
一、什么是原型链二、浏览器中原型链与ES标准文档的中概念对应关系三、函数的特殊性四、内建对象类型的原型链五、自定义原创 2021-06-24 21:13:03 · 446 阅读 · 0 评论 -
npm工具-包管理工具-不仅仅只是javascript包管理工具
目录一、npm的历史1、背景2、历史版本改动(更多关注特性,一些细节问题不做过多关注。)3、原理二、npm的日常使用1、安装包2、更新包3、查看已经安装的包4、查看全局安装路径5、查看当前安装路径6、删除包7、查看某命令的帮助8、清除缓存9、创建和发布一个包10、npm版本的查看和管理11、查看包的版本三、npm的常见问题1、npm install的安装原理及过程2、npm update的更新过程3、npm如何控本版本.原创 2021-03-21 01:10:04 · 1052 阅读 · 0 评论 -
linux下安装nodeJS
一、下载node版本首先去到nodejs的官网,然后我们下载最新的对应的linux x64平台的 LTS版本,下载下来之后在对应的文件夹,我们会到名为下图所示的压缩文件夹:二、解压和安装1、将node复制到 /目录下2、创建一个install_node.sh脚本:#!/bin/bashtar -xvf node-v14.16.0-linux-x64.tar.xzmv node-v14.16.0-linux-x64 nodejsecho "export PAT..原创 2021-03-17 23:50:21 · 206 阅读 · 0 评论 -
web页面中的跳转:锚点定位
一、页面内的锚点跳转这基本的锚点定位二、页面间的锚点跳转核心问题在于传参,将目标页面的锚点位置传输给目标页面,然后通过js的onload函数,在页面加载的跳转到页面中的对应的锚点。三、浏览器历史记录的跳转问题这是浏览器自带的功能,回退的话,会自动跳转到上次浏览的位置,如果清楚缓存,就无效了。...原创 2020-06-21 20:33:19 · 1123 阅读 · 0 评论 -
vscode使用debugger for chrome插件进行调试,设置断点不生效,提示Not bound。
设置的时候,我就使用的默认的webroot,这就是问题所在,如果webroot设置不正确,就会造成调试插件找不到对应文件,从而无法使断点生效。例如,我使用的是django自带的webserver,所认为的webroot是对应的应用的的目录,而我配置的是整个site的目录,从而导致该问题。如图:一开始的配置:这里webroot配置的是整个site的目录,所以导致出问题。出现not 。更改为:我将webroot的目录更改为app所在的目录,然后就生效了。所以,如果你也出现这.原创 2020-06-15 01:31:37 · 5916 阅读 · 0 评论 -
浏览器份额及其历史以及内核变迁总结
一、本文介绍范围本文写于2020年5月,获取的是2019年4月-2020年4月这一段时间的浏览器的市场份额占比,同时本文也会涵盖主流浏览器的内核的变迁历史,以及各大平台下的浏览器现状。过去的历史可以参考:2016年——2017年的浏览器市场份额以及浏览器的内核历史二、主流浏览器浏览器全平台份额占比桌面浏览器市场份额占比移动端市场份额占比平板浏览器市场份额占比从以上数据可以看书,在桌面市场中,chrome占据榜首高达69%,随后是Firef...原创 2020-05-19 18:30:27 · 1644 阅读 · 0 评论 -
Markdown Preview Enhanced
该插件支持markdown的math语法,使用的是Katex渲染引擎。还支持画图还能转换为其他各种文档格式,使用的pandoc。可以转换为Github扩展的markdown形式,只需要我们转化一下即可。还能载入外部文件,直接嵌入文档。https://shd101wyy.github.io/markdown-preview-enhanced/#/官方文档...原创 2020-05-11 14:47:20 · 651 阅读 · 0 评论 -
五分钟了解asm.js和WebAssembly
Asm.js是什么?相信很多读者都或多或少地听说过Asm.js这个名词,但它究竟是什么意思呢?先看一眼官方的定义:an extraordinarily optimizable, low-level subset of JavaScript极度优化的、底层的javascript子集。可以看到主要的三个关键词。1、极度优化。asm.js是一种提升js执行效率的解决方案。asm.js能带来非常高的效率提升。甚至能让浏览器运行3d游戏。2、底层的。底层到什么程度呢?就相当于转载 2020-05-10 22:39:27 · 1340 阅读 · 0 评论 -
详解 "X-UA-Compatible" 和 "IE=edge"
1、X-UA-CompatibleX-UA-Compatible是自从IE8新加的一个设置,对于IE8以下的浏览器是不识别的。 通过在meta中设置X-UA-Compatible的值,可以指定网页的兼容性模式设置。在网页中指定的模式优先权高于服务器中(通过HTTP Header)所指定的模式。 兼容性模式设置优先级:meta tag > http header常用的例子:...转载 2020-05-04 12:06:42 · 600 阅读 · 0 评论 -
html常用的一些特殊字符
空格符 :   // 默认页面中文本的空格会被忽略掉 < : < // 小于符号 > : > // 大于符号 & : & ¥ : ¥ //人民币符号 © : © // 版权符号 ® : ® // 注册商标符...原创 2020-05-03 14:19:59 · 337 阅读 · 0 评论 -
URL scheme集中帖
webview通识 主要介绍了webview如何通过url scheme与原生之间交互常用URL schemeIOS URL scheme的使用iOS URL Scheme你所知道好玩有趣的 iOS URL Scheme 有哪些?Android URL Scheme的学习和使用...原创 2020-04-29 16:40:29 · 458 阅读 · 0 评论 -
webview的替代方案:自带浏览器引擎,然后向上封装好接口。
目前来说主要有两种方案:第一种:蹭微信的X5内核,因为腾讯已经不再开放X5内核下载了,所以只能蹭。这种方案的弱点在于必须他呀儿的装微信或者QQ。而且可能被腾讯插入广告。腾讯X5服务 第二种:自己嵌入一个开源的浏览器内核啊,X5就是以chromium为基础来进行封装的,而且在后续版本改为blink内核,紧跟google脚步啊。我们也可以自己在APP中自带这样一个浏览器的内核,然后封装好...原创 2020-04-28 18:43:20 · 2396 阅读 · 0 评论 -
app跨平台开发框架以及技术选型如何选择?
作者:刘望舒链接:https://www.zhihu.com/question/55714900/answer/665044650来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。1. 跨平台技术的诞生我是2010年开始从事的Android开发,当时会Android和iOS开发的很少,也不火,所有人都在“摸着河底过河”,项目更没有第三方框架一说,大都是...转载 2020-04-28 17:47:10 · 4370 阅读 · 4 评论 -
URL scheme是什么?能拿来做什么?
一、什么是url scheme?URL scheme是系统提供的一种机制,它可以由应用程序注册,然后其他程序通过url scheme来调用该应用程序。它分为两部分:一部分是系统默认的url scheme,另外一部分是应用程序自己注册的url scheme。例如:mailto:这种就属于系统默认的一种机制。访问一个mailto的url链接,可以直接调用本机的邮件客户端,如:目前它...原创 2020-04-27 21:30:57 · 25589 阅读 · 0 评论