面试经典题——URL加载 一、涉及基本知识点: 1. 计算机网络 五层因特尔协议栈: 应用层(dns、http):DNS解析成IP并完成http请求发送; 传输层(tcp、udp):三次握手四次挥手模式建立tcp连接; 网络层(IP、ARP):IP寻址; 数据链路层(PPP):将请求数据封装成帧; 物理层:利用物理介质传输比特流(传输的时候通过双绞线、电磁波等) OIS七层框架:多了两层即,会话层(处理两个通信系统中交换信息的表示方式)和表示层(管理不同用户和进程之间的对话)。 get和post的
dirsearch是一个基于python3的命令行工具,常用于暴力扫描页面结构,包括网页中的目录和文件。相比其他扫描工具disearch的特点是:
在日常 Vue 项目中,大概率会用组件库辅助开发,所以 递归组件 的出镜率可能不会非常高。但这并不代表 递归组件 不重要。
可以通过修改default.conf文件去修改dirsearch的默认配置(默认文件拓展名,超时时间,wordlist所在目录等)
先前有一次做uni-app的js接口对接时,遇到过这样的情况,在for循环里,调用一个异步请求时,返回来的值顺序是乱的,因此,在以下的代码里,push到数组里的值,每次的顺序可能都是不一样的,造成这样一个原因,是for循环是单线程的,异步请求是多线程的,f往往在for循环结束了,异步请求还没有结束。
1.在JS中尽量减少闭包的使用(原因:闭包会产生不释放的栈内存) A:循环给元素做事件绑定的时候,尽可能的把后期需要的信息(例如索引)存储到元素的自定义属性上,而不是创建闭包存储 B:可以在最外层形成一个闭包,把一些后续需要的公共信息进行存储,而不是每一个方法都创建闭包(例如单例模式) C:尽可能的手动释放不被占用的内存 ...
题目的答案提供了一个思考的方向,答案不一定正确全面,有错误的地方欢迎大家请在评论中指出,共同进步。
随着近年来前端监控体系建设日益完善,前端工程师对异常更加关注。业界关于 JS 异常介绍大多只谈了异常的捕获方法,对产生的原因和处理办法谈的较少。本文将详细的阐述异常原理,把笔者近 2 年在前端监控领域中与异常打交道的经验分享给大家。
JS开发的WEB应用和PHP,JAVA,NET等区别在于即没有源代码,也可以通过浏览器的查看源代码获取真实的点。获取URL,获取JS敏感信息,获取代码传参等,所以相当于JS开发的WEB应用属于白盒测试(默认有源码参考),一般会在JS中寻找更多的URL地址,在JS代码逻辑(加密算法,APIkey配置,验证逻辑等)进行后期安全测试。
a)首先会搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存)
● CSS样式表置于头部导入,在渲染DOM-TREE的时候预先请求样式资源,让页面渲染速度加快
const 是一个常量只允许声明一次不可修改(和let有快级作用域) let不存在变量提升机制(变量不允许在声明之前使用) let不允许重复声明 在全局作用域中基于let声明的变量不是window的一个属性,和他没关系 typeof 未被声明的变量 =>不是undefined而是报错(暂时性死区) let会形成块级作用域(类似于私有作用域,大部分大括号都会形成块作用域) 解构赋值 “…” 拓展、剩余、展开运算符 ES6中的模板字符串 箭头函数 和普通函数的区别 没有arguments,但是可以基于…arg获取实参集合(结果是一个数组) 没有自己的this,箭头函数中的this是上下文中的this Promise(async/await) class(ES6中创建类的) interator(for of 循环) Map / Set
上一篇Vite入门从手写一个乞丐版的Vite开始(上)我们已经成功的将页面渲染出来了,这一篇我们来简单的实现一下热更新的功能。
网站前端的用户体验,决定了用户是否想要继续使用网站以及网站的其他功能,网站的用户体验佳,可留住更多的用户。除此之外,前端优化得好,还可以为企业节约成本。那么我们应该如何对我们前端的页面进行性能优化呢?
写在开头 最近的vite比较火,而且发布了2.0版本,vue的作者也是在极力推荐 在之前的文章里面我提到过,vite的缺点在于目前的生态不够webpack成熟,但是只要能弥补这个缺点,便有很大概率能替代目前webpack的大部分市场 全方位对比vite和webpack webpack打包过程 1.识别入口文件 2.通过逐层识别模块依赖。(Commonjs、amd或者es6的import,webpack都会对其进行分析。来获取代码的依赖) 3.webpack做的就是分析代码。转换代码,编译代码,输出代码 4.
全方位对比vite和webpack 一. webpack原理 1. webpack打包过程 1.识别入口文件 2.通过逐层识别模块依赖。(Commonjs、amd或者es6的import,webpack都会对其进行分析。来获取代码的依赖) 3.webpack做的就是分析代码。转换代码,编译代码,输出代码 4.最终形成打包后的代码 2. webpack打包原理 1.先逐级递归识别依赖,构建依赖图谱 2.将代码转化成AST抽象语法树 3.在AST阶段中去处理代码 4.把AST抽象语法树变成浏览器可以识
链接:https://juejin.im/post/5b9770056fb9a05d2f3692ce
在之前的文章里面我提到过,vite的缺点在于目前的生态不够webpack成熟,但是只要能弥补这个缺点,便有很大概率能替代目前webpack的大部分市场
DOMDig 是一个运行在 Chromium 网络浏览器中的 DOM XSS 扫描器,它可以递归地扫描单页应用程序 (SPA)。
关于DOMDig DOMDig是一款运行于Chromium Web浏览器中的DOM XSS扫描工具,该工具能够以递归的方式扫描单页应用程序(SPA)。 跟其他扫描工具不同的地方在于,DOMDig可以通过追踪DOM树的修改行为和XHR/fetch/websocket请求来爬取任何Web应用程序(包括Gmail),并且能够通过通过触发事件来模拟真实的用户交互。在此过程中,工具会将XSS Payload放到输入字段中,并跟踪其执行情况,以便找到注入点和相关的URL修改行为。 该工具基于htcrawl实现其功能
defer 是“渲染完再执行”,async 是“下载完就执行”,defer 如果有多个脚本,会按照在页面中出现的顺序加载,多个async 脚本不能保证加载顺序
备忘录模式:属于行为模式,保存某个状态,并且在需要的时候直接获取,而不是重复计算。
我想,爬虫对很多人来说是一个很有魅力的话题,它意味着不用什么努力就拿到了别人辛苦付出的的劳动成果。
EasyPlayer属于可支持H.264/H.265视频播放的流媒体播放器,在体验上,支持视频播放画面秒开,画质高清、性能稳定,可支持的视频流格式有RTSP、RTMP、HLS、FLV、WebRTC等。同时,我们也提供了多种版本,包括EasyPlayer-RTSP、EasyPlayer-Pro、EasyPlayer.js等等,以及简单易用的SDK及API接口,用户可以根据自己的需求,将EasyPlayer集成进自己的流媒体平台。
koa是一个非常流行的Node.js http框架。本文我们来学习下它的使用和相关源码
2xx - 表示成功处理信息,如 200 - 成功处理请求,204 - 成功处理请求但没有返回内容
# 打包原理比较 打包过程 原理 webpack 识别入口->逐层识别依赖->分析/转换/编译/输出代码->打包后的代码 逐级递归识别依赖,构建依赖图谱->转化AST语法树->处理代码->转换为浏览器可识别的代码 vite - 基于浏览器原生 ES module,利用浏览器解析 imports,服务器端按需编译返回 # 原理图示 vite webpack # vite原理简述 声明 script 标签类型为 module <script type="module" src="/src/main.
大多数同学提到 Vite ,会下意识的反应出 “快”、“noBundle”等关键词。
刚刚写了小程序入门没几天,小程序就开放个人开发者资格,感觉为我而来啊 \(≧▽≦)/。迫不及待的去注册,准备将之前的处女作传上去体验一把,结果卡在了服务器配置上:免费的果然不靠谱/(ㄒoㄒ)/~~,后
数组扁平化就是将 [1, [2, 3]] 这种多层的数组拍平成一层 1, 2, 3。使用 Array.prototype.flat 可以直接将多层数组拍平成一层:
做项目的过程中遇到TreeTable,感觉很焦急,于是我就去github上面找,发现很糟糕。上面需要写的代码太过于多,本人手比较懒,所以几番查找。找到了一个比较实用的TreeTable的js
不支持defer属性的浏览器:defer、script、load 支持defer属性的浏览器:script、defer、load 3.2 动态添加script标签,添加到head中比添加到body中安全 3.3 XHR动态脚本注入兼容性好,但不能跨域
通过对以下 10 个面试题的分享,助您更好的理解 Node.js 的事件和 EventLoop 相关知识
导语 | 自从JavaScript创建到现在,每10年都会有新的变化,下一个10年的爆点在哪,可能就是WebAssembly!但WebAssembly绝不是JavaScript的终结者,反而是它的“助推器”!这是为什么呢?接下来我将带你揭晓答案,让你10分钟快速掌握WebAssembly! 一、了解WebAssembly (一)什么是WebAssembly? 官网定义:WebAssembly/wasm WebAssembly或者wasm是一个可移植、体积小、加载快并且兼容Web的全新格式(二进制),
一、递归组件 组件在它的模板内可以递归地调用自己, 只要给组件设置name 的选项就可以了。 示例如下: <my-component19 :count="1"></my-component19> Vue.component('my-component19',{ name: 'my-component19', //其实当你利用 Vue.component 全局注册了一个组件,全局的ID会被自动设置
WordPress 站点的安全性非常重要,稍有不慎就有可能受到恶意攻击。一种常见的手段是通过篡改站点的地址,于是用户访问网站时将会被重新定向到恶意网站。
先看本地域名服务器是否缓存该地址,然后各服务器依次递归.(根域名服务器) -> .com -> google.com. -> www.google.com.(这样是不是会造成多次请求连接浪费资源?)
Nodesub是一款功能强大的子域名扫描与发现工具,该工具是一个命令行接口工具,可以帮助广大研究人员在漏洞奖励任务或渗透测试任务过程中完成子域名扫描方面的工作。当前版本的支持各种子域名枚举技术,并且提供了大量灵活的参数选项实现定制化任务执行。
当数据量过多的时候,往往数据不能全部读取,需要进行分页读取,可以看到到DynamoDB API接口的限制:
Node.js 做为 JavaScript 的服务端运行时,主要与网络、文件打交道,没有了浏览器中事件循环的渲染阶段。
codesandbox能在线运行代码,显然他也实现了上述步骤,具体来说,codesandbox内置了2个在线服务:
作为前端程序员在平时也难免会编写一点后台Demo级别的代码,在语言选择上通常会选择Node.js作为主力工具,框架通常会选择老牌框架Express,在本文会讲解一个使用Express创建接口和搭建基本的Express
浏览器已经成为我每天都需要打交道的工具,然而对于这个我们的老朋友,即使一些 web 开发人员也对它的底层工作原理不是非常清楚,今天我们就来简单谈一谈浏览器的底层工作原理。
艺术喵 2 年前端面试心路历程(字节跳动、YY、虎牙、BIGO)| 掘金技术征文
以上程序使用 fs.readFileSync 从源路径读取文件内容,并使用 fs.writeFileSync 将文件内容写入目标路径。
领取专属 10元无门槛券
手把手带您无忧上云