摘要:
什么是 SQL 注入 在所有漏洞类型中,SQL 注入可是说是危害最大最受大家关注的漏洞。简单说来,SQL 注入是通过在用户可控参数中注入SQL语法,破坏原有SQL结构,达到编写程序时意料之外结果的攻击行为。 以 ThinkJS 为例,假设我们写了如下一个接口(实际情况肯定不会这么写的): // us 阅读全文
摘要:
异常捕获方法 1.try catch 这种方案要求开发人员在编写代码的时候,在预估有异常发生的代码段使用try...catch,在发生异常时将异常信息发送给接口: 但是 try-catch 处理异常的能力有限,只能捕获捉到运行时非异步错误,对于语法错误和异步错误就显得无能为力,捕捉不到。 try{ 阅读全文
摘要:
关注性能是工程师的本性 + 本分; 页面性能对用户体验而言十分关键。每次重构对页面性能的提升,仅靠工程师开发设备的测试数据是没有说服力的,需要有大量的真实数据用于验证; 资源挂了、加载出现异常,不能总靠用户投诉才后知后觉,需要主动报警。 用什么监控 关于前端性能指标,W3C 定义了强大的 Perfo 阅读全文
摘要:
Cookie 用于存储 web 页面的用户信息。 什么是 Cookie? Cookie 是一些数据, 存储于你电脑上的文本文件中。 当 web 服务器向浏览器发送 web 页面时,在连接关闭后,服务端不会记录用户的信息。 Cookie 的作用就是用于解决 "如何记录客户端的用户信息": 当用户访问 阅读全文
摘要:
上个效果图 图片出现在页面中采去加载所需的图片进行显示,并不是开始就将整个页面的图片一起加载出来,这样有效提高网站的性能。 使用方法 cdn引入 <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/lozad/dist/l 阅读全文
摘要:
这里的合并主要针对当前页面上访问的资源文件,比如css,js,图片等。 HTTP请求过程 一个HTTP请求的主要过程是: DNS解析(T1) -> 建立TCP连接(T2) -> 发送请求(T3) -> 等待服务器返回首字节(TTFB)(T4) -> 接收数据(T5)。 如下图所示,是Chrome D 阅读全文
摘要:
写在前面 在讨论回流与重绘之前,我们要知道: 浏览器使用流式布局模型 (Flow Based Layout)。 浏览器会把HTML解析成DOM,把CSS解析成CSSOM,DOM和CSSOM合并就产生了Render Tree。 有了RenderTree,我们就知道了所有节点的样式,然后计算他们在页面上 阅读全文
摘要:
Vuex是什么? Vuex 类似 Redux 的状态管理器,用来管理Vue的所有组件状态。 为什么使用Vuex? 当你打算开发大型单页应用(SPA),会出现多个视图组件依赖同一个状态,来自不同视图的行为需要变更同一个状态。 遇到以上情况时候,你就应该考虑使用Vuex了,它能把组件的共享状态抽取出来, 阅读全文
摘要:
Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情况 阅读全文
摘要:
前言 我们在开发网站的时候,通常会把常用的图标合并成css sprite(雪碧图),可以有效的减少站点的http请求数量,从而提高网站性能。 下面让我们一起来学习一下如何使用webpack合并sprite图。 准备 webpack webpack-spritesmith插件 file-loader 阅读全文
摘要:
设计 LazyMan 类,实现以下功能 实现一个LazyMan,可以按照以下方式调用: LazyMan('Hank')输出: Hi! This is Hank! LazyMan('Hank').sleep(10).eat('dinner')输出 Hi! This is Hank! //等待10秒.. 阅读全文
摘要:
根据CSS3规范,视口单位主要包括以下4个: vw : 1vw 等于视口宽度的1% vh : 1vh 等于视口高度的1% vmin : 选取 vw 和 vh 中最小的那个 vmax : 选取 vw 和 vh 中最大的那个 用视口单位度量,视口宽度为100vw,高度为100vh(左侧为竖屏情况,右侧为 阅读全文
摘要:
一、懒加载 1.什么是懒加载 懒加载也叫延迟加载,指的是在长网页中延迟加载图像,是一种很好优化网页性能的方式。 用户滚动到它们之前,可视区域外的图像不会加载。这与图像预加载相反,在长网页上使用延迟加载将使网页加载更快。 在某些情况下,它还可以帮助减少服务器负载。常适用图片很多,页面很长的电商网站场景 阅读全文
摘要:
this 的指向 在 ES5 中,其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象。 记住这句话,this 你已经了解一半了。 例 1: var name = "windowsName"; function a() { var name = "Cherry"; con 阅读全文
摘要:
transition、animation和transform是CSS3中三个制作动画的重要属性。 一、transition transition允许css的属性值在一定的时间区间内平滑地过渡。这种效果可以在鼠标单击、获得焦点、被点击或对元素任何改变中触发,并圆滑地以动画效果改变CSS的属性值。 tr 阅读全文
摘要:
优点 标签语义化有助于构架良好的HTML结构,有利于搜索引擎的建立索引、 有利于不同设备的解析(屏幕阅读器,盲人阅读器等)。 有利于构建清晰的机构,有利于团队的开发、维护。 大厂做法 看一下大厂的操作,打开淘宝的页面查看它首页的源码发现,全局只有一个h1标签就是他的LOGO。 再往下看主题分栏的标题 阅读全文
摘要:
cookie 和 session cookie 和 session 都是普遍用来跟踪浏览用户身份的会话方式。 cookie 和 session 区别 cookie 数据存放在客户端,session 数据放在服务器端。 cookie 本身并不安全,考虑到安全应当使用 session。 session 阅读全文
摘要:
为什么是 MongoDB ? 对于 Web 应用来说,通常数据库的选择可以划分为两大类:关系型和非关系型。 其中前者优点类型于电子表格,它的数据是结构化并且伴随着严格规定。 典型的关系型数据库包括:MySQL、 SQL Server 以及 PostgreSQL。而后者通常也被称为 NoSQL 数据库 阅读全文
摘要:
有经验的老股民,大多会根据成交量选股,成交量是价格变化的原动力,价动量先行! 成交量的基本意义 1、 成交量,代表了多空双方看法的分歧程度,缩量就说明目前多空看法趋于一致,放量就说明双方看法分歧比较大。 2、成交量,表示资金参与的意愿,参与深度,表示个股或大盘的活跃程度,横向衡量成交量的指标是换手率 阅读全文
摘要:
API 就是一种代码之间交互的一种方式,它既可以是在程序内部也可以是通过网络的跨机器进行。 例如,Express 中的 app.use 和 app.get 就属于在内部使用 API 。而通过 HTTP 或者 FTP 等协议发送 JSON、XML 数据的方式则属于后者。 接下来的内容包括: 什么是 A 阅读全文
摘要:
在股市中各种技术指标多如牛毛,比如KDJ、布林线、MACD、均线等,如果大家都能够找时间细细钻研这些指标,这对我们的交易是大有裨益的。 有一个指标是每个人都必须要掌握的。有句老话说的好,一根均线打天下,说明均线战法应该是股市投资者必须掌握的一个非常基础的技术分析方法。 什么是均线 均线实际上是移动平 阅读全文
摘要:
什么是路由? 假设,现在你尝试通过 example.com/someone 访问某人的推特或者微博主页,你会发现该请求的 HTTP 内容大致如下: GET /someone http/1.1 其中包含了 HTTP 请求使用的方法(GET),URI 信息(/someone) 以及 HTTP 协议版本 阅读全文
摘要:
原生 Node 的单一请求处理函数,随着功能的扩张势必会变的越来越难以维护。 Express 框架则可以通过中间件的方式按照模块和功能对处理函数进行切割处理。这样拆分后的模块不仅逻辑清晰,更重要的是对后期维护和开发非常有利。 本文将会详细介绍 Express 的使用,其中主要内容包括: 中间件是什么 阅读全文
摘要:
Express 框架的初衷是为了拓展 Node 内置模块的功能提高开发效率。 当你深入研究后就会发现,Express 其实是在 Node 内置的 HTTP 模块上构建了一层抽象。理论上所有 Express 实现的功能,同样可以使用纯 Node 实现。 在本文中,我们将基于前面的 Node 内容去探究 阅读全文
摘要:
模块的使用 在大多数编程语言中,我们都会对代码进行拆分,然后在使用的时候将这些文件引入其中。 例如,C 和 C++ 中的 include,Python 的 import ,Ruby 和 PHP 中的 require。而另外一些语言,如 C# 是在编译时完成跨文件引用的。 很长一段时间内,JavaSc 阅读全文
摘要:
在 Node.js 出现之前,前后端的开发必须使用不同的语言进行。为此你需要学习多种的语言和框架。有了 Node.js 之后,你就可以使用一门语言在前后端开发中自由切换,这是最吸引人的地方。 什么是 Express ? Express 是一个基于 Node.js 封装的上层服务框架,它提供了更简洁的 阅读全文
摘要:
先说下CSRF的定义 跨站请求伪造(英语:Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。[1] 跟 阅读全文
摘要:
XSS XSS,即 Cross Site Script,中译是跨站脚本攻击;其原本缩写是 CSS,但为了和层叠样式表(Cascading Style Sheet)有所区分,因而在安全领域叫做 XSS。 XSS 攻击是指攻击者在网站上注入恶意的客户端代码,通过恶意脚本对客户端网页进行篡改,从而在用户浏 阅读全文
摘要:
Promise.all 接收一个 promise 对象的数组作为参数,当这个数组里的所有 promise 对象全部变为resolve或 有 reject 状态出现的时候,它才会去调用 .then 方法,它们是并发执行的。 var p1 = Promise.resolve(1), p2 = Promi 阅读全文
摘要:
1、Promise 的声明 首先呢,promise肯定是一个类,我们就用class来声明。 由于new Promise((resolve, reject)=>{}),所以传入一个参数(函数),秘籍里叫他executor,传入就执行。 executor里面有两个参数,一个叫resolve(成功),一个 阅读全文
摘要:
Async/Await 版本 function sleep(delay) { return new Promise(reslove => { setTimeout(reslove, delay) }) } !async function test() { const t1 = +new Date() 阅读全文
摘要:
三角形 实现一个三角形 <!DOCTYPE html> <html> <head> <title>三角形</title> <style type="text/css"> .box1, .box2, .box3, .box4 { height: 0px; width: 0px; float: left 阅读全文
摘要:
1.单例模式 单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。实现的方法为先判断实例存在与否,如果存在则直接返回,如果不存在就创建了再返回,这就确保了一个类只有一个实例对象。 适用场景:一个单一对象。比如:弹窗,无论点击多少次,弹窗只应该被创建一次。 class CreateU 阅读全文
摘要:
导读 移动端适配,是我们在开发中经常会遇到的,这里面可能会遇到非常多的问题: 1px问题 UI图完美适配方案 iPhoneX适配方案 横屏适配 高清屏图片模糊问题 ... 上面这些问题可能我们在开发中已经知道如何解决,但是问题产生的原理,以及解决方案的原理可能会模糊不清。在解决这些问题的过程中,我们 阅读全文
摘要:
二分查找,也称折半查找。利用二分思想,每次查找的时候把数据分为两半,从中间值开始找。 如上图所示,low和high代表数组的两边下标,mid代表数组的中间下标。 若目标值比中间值大,即目标值在mid与high之间,就修改low的值。再对比中间值。 若目标值比中间值小,即目标值在low与mid之间,就 阅读全文
摘要:
中间件的功能和分类 中间件的本质就是一个函数,在收到请求和返回相应的过程中做一些我们想做的事情。Express文档中对它的作用是这么描述的: 执行任何代码。修改请求和响应对象。终结请求-响应循环。调用堆栈中的下一个中间件。 分类 Express文档中把他们分为了五类,但是他们的原理相同,只是用法不同 阅读全文
摘要:
reduce() 方法接受一个数组作为输入值并返回一个值。这点挺有趣的。reduce 接受一个回调函数,回调函数参数包括一个累计器(数组每一段的累加值,它会像雪球一样增长),当前值,和索引。reduce 也接受一个初始值作为第二个参数: 来写一个炒菜函数和一个作料清单: // our list of 阅读全文
摘要:
模块管理这个概念其实在前几年前端度过了刀耕火种年代之后就一直被提起。 直接回想起来的就是 cmd amd commonJS 这三大模块管理的印象。接下来,我们来详细聊聊。 一、什么是模块化开发 为了让一整个庞大的项目看起来整整齐齐,规规整整而出现的模块化管理,我们常见的三种模块化管理的库: requ 阅读全文
摘要:
1. 当数据发生变化时,vue是怎么更新节点的? 要知道渲染真实DOM的开销是很大的,比如有时候我们修改了某个数据,如果直接渲染到真实dom上会引起整个dom树的重绘和重排,有没有可能我们只更新我们修改的那一小块dom而不要更新整个dom呢?diff算法能够帮助我们。 我们先根据真实DOM生成一颗v 阅读全文
摘要:
Promise 出现的原因 在 Promise 出现以前,我们处理一个异步网络请求,大概是这样: // 请求 代表 一个异步网络调用。 // 请求结果 代表网络请求的响应。 请求1(function(请求结果1){ 处理请求结果1 }) 看起来还不错。但是,需求变化了,我们需要根据第一个网络请求的结 阅读全文