You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
满二叉树:
除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。
国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。
国外(国际)定义:a binary tree T is full if each node is either a leaf or possesses exactly two childnodes.
大意为:如果一棵二叉树的结点要么是叶子结点,要么它有两个孩子结点,这样的树就是满二叉树。
完全二叉树:
若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
JavaScript深入之词法作用域和动态作用域 mqyqingfeng/Blog#3
node
event loop
构建工具
webpack
算法
汉字占两个字节
https://juejin.im/post/5a7d11be5188257a5e5738c3
二叉树
二叉树
满二叉树:
除最后一层无任何子节点外,每一层上的所有结点都有两个子结点二叉树。
国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。
国外(国际)定义:a binary tree T is full if each node is either a leaf or possesses exactly two childnodes.
大意为:如果一棵二叉树的结点要么是叶子结点,要么它有两个孩子结点,这样的树就是满二叉树。
完全二叉树:
若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。
摘要
加密算法
对称加密
非对称加密
排序算法
https://blog.serenader.me/javascript-shu-zu-qu-zhong/
1,新建数组,使用indexOf
2, 使用一个对象辅助, hash形式
3, 使用es6 的 new set
前端
js
原型链 & 继承
原型链
new 出来的实例会有一个__proto__属性指向构造函数的prototype
异步
es6
import export
设计模式
正则表达
框架
虚拟dom
react
redux
如何实现一个redux
html
安全
xss跨站脚本攻击
类型
防御手段:
解决: 有哪些字符需要转义?
& –> &
< –> <
> –> >
” –> "
‘ –> '
/ –> /
http://www.freebuf.com/articles/web/9977.html
有哪些场景场景
https://juejin.im/entry/5a09b9a55188254d2b6da217
文章:
https://juejin.im/entry/59310d4ca0bb9f0058b4f7c2
https://segmentfault.com/a/1190000012693772
如何利用 xss 进行csrf, (会话伪造)
利用了浏览器隐式认证
如何预防XSS:
或者过滤“script”、“javascript”等脚本关键字,或者对输入数据的长度进行限制等等,
还得考虑攻击者使用十六进制编码来输入脚本的方式。
(这样只有浏览器向Web服务器发起请求的时才会带上cookie字段,避免了XSS攻击利用JavaScript的document.cookie获取cookie)
或者,为了防止重放攻击,可以将Cookie和IP进行绑定,这样也可以阻止攻击者冒充正常用户的身份。
csrf
防御手段
csrf token 如何生成?
需不需要没关闭网站的情况下打开恶意网站?
https://github.com/pillarjs/csrf
http://web.jobbole.com/94062/
https://www.2cto.com/article/201511/449909.html
https://segmentfault.com/a/1190000010791483
https://fed.renren.com/2018/01/20/cross-origin/
https://blog.csdn.net/sophia1010/article/details/79189602
场景
验证HTTP Referer字段(非常简单,但是鉴于客户端并不可信任,所以并不是很安全)
(防止CSRF,检查Referer字段简单直接,但是其完全依赖浏览器发送正确的Referer字段。
虽然http协议对此字段的内容有明确的规定,但并无法保证来访的浏览器的具体实现,
亦无法保证浏览器没有安全漏洞影响到此字段。并且也存在攻击者攻击某些浏览器,篡改其Referer字段的可能。)
在请求地址中添加token并验证
(譬如post中,以参数的形式加入一个随机产生的token)
如何防止运营商劫持
跨域
跨域方法
缺点:
需要后端配合
https://juejin.im/post/5ab21717518825611a405da3
http://www.cnblogs.com/yongshaoye/p/7424326.html
https://juejin.im/post/5a7359876fb9a0634a38e389
什么是简单请求?
找一下那篇跨域文章
CORS与JSONP的使用目的相同,但是比JSONP更强大。
JSONP只支持GET请求,CORS支持所有类型的HTTP请求。JSONP的优势在于支持老式浏览器,以及可以向不支持CORS的网站请求数据。
Access-Control-Allow-Origin
Access-Control-Allow-Credentials
Access-Control-Allow-Headers
Access-Control-Expose-Headers
Access-Control-Allow-Methods
Access-Control-Max-Age
Origin
otherWindow.postMessage(message, targetOrigin, [transfer]);
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event)
{
if (event.origin !== "http://example.org:8080")
return;
// ...
适用对象:between a page and a pop-up that it spawned, or between a page and an iframe embedded within it.
https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
https://stackoverflow.com/questions/2699277/post-data-to-jsonp
script 标签只能支持get 请求
csp
两种方法可以启用 CSP。一种是通过 HTTP 头信息的Content-Security-Policy的字段。
网络
相关文:
sunyongjian/blog@feec170...d88c530
sunyongjian/blog#34
https://github.com/alex/what-happens-when
https://juejin.im/entry/5a1258bc6fb9a044fd115cd2
https://zhuanlan.zhihu.com/p/34453198?utm_medium=social&utm_source=wechat_session
http://web.jobbole.com/94150/
https://www.jianshu.com/p/208c02c9dd1d
七层模型
简单请求 & 非简单请求
简单请求
非简单请求
方法
post与get区别
GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST么有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
GET参数通过URL传递,POST放在Request body中。
GET产生一个TCP数据包;POST产生两个TCP数据包。
防止运营商劫持:CSP & https
https
证书包括:服务端的加密密钥+ 数字签名
RSA : 非对称加密
https中的s表示SSL或者TLS
最终对称加密的密钥是由客户端发出
https://mp.weixin.qq.com/s?__biz=MzUyODMzMjY3OQ==&mid=2247483770&idx=1&sn=763e0e768fbeee4802caee851f428e2f&chksm=fa70a392cd072a844f05429368a85faed7c84d1476252926558bd84293ed1a1c57684512f264&scene=21#wechat_redirect
https://mp.weixin.qq.com/s?__biz=MzUyODMzMjY3OQ==&mid=2247483777&idx=1&sn=79e1ced2fe3048d445c8776dc3e74677&chksm=fa70a369cd072a7f6d9f1fd351f94df9e99cbc118ecafafe79dbacc5ea248bb19ed6be65ba38&scene=21#wechat_redirect
https://mp.weixin.qq.com/s?__biz=MzUyODMzMjY3OQ==&mid=2247483815&idx=1&sn=d2af7ac5d78ab5991e84ff092ff0ec81&chksm=fa70a34fcd072a597c171c7077677fbe5ca05ae8fbb3b580e9c8e0aa18c31dafb5a5253dbdc9&scene=21#wechat_redirect
https://mp.weixin.qq.com/s/hy0qauQ_hvAJNMYOHvnxLg?utm_medium=hao.caibaojian.com&utm_source=hao.caibaojian.com
TCP
https://benohead.com/tcp-about-fin_wait_2-time_wait-and-close_wait/
https://juejin.im/entry/5aa8ca5351882555666f616e
https://juejin.im/entry/5b51473c6fb9a04fd16011a2
https://www.zhihu.com/question/24853633
https://juejin.im/post/5a0444d45188255ea95b66bc
https://www.jianshu.com/p/448f37ed29fe
https://www.jianshu.com/p/a57a40163d4b
jawil/blog#14
https://juejin.im/post/5a7ef7ce5188257a856f38b0
https://juejin.im/post/5a7fea206fb9a06333151e99
为什么要三次?
为了保证服务端能收接受到客户端的信息并能做出正确的应答而进行前两次(第一次和第二次)握手,为了保证客户端能够接收到服务端的信息并能做出正确的应答而进行后两次(第二次和第三次)握手。
位码即tcp标志位,有6种标示:
1)SYN(synchronous建立联机)
2)ACK(acknowledgement 确认)
3)PSH(push传送)
4)FIN(finish结束)
5)RST(reset重置)
6)URG(urgent紧急)
7)Sequence number(顺序号码)
8)Acknowledge number(确认号码)
客户端TCP状态迁移:
CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
服务器TCP状态迁移:
CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED
spdy
HTTP2.0 支持明文 HTTP 传输,而 SPDY 强制使用 HTTPS
HTTP2.0 消息头的压缩算法采用 HPACK,而非 SPDY 采用的 DEFLATE
http2
http://www.alloyteam.com/2016/07/httphttp2-0spdyhttps-reading-this-is-enough/#prettyPhoto
HTTP2.0 支持明文 HTTP 传输,而 SPDY 强制使用 HTTPS
HTTP2.0 消息头的压缩算法采用 HPACK,而非 SPDY 采用的 DEFLATE
https://juejin.im/entry/5a51e6cd6fb9a01c9b65c5eb
https://imququ.com/post/http2-resource.html
HTTP/2 协议本身并没有要求必须基于 TLS 部署,但当前所有浏览器均只支持 HTTP/2 Over TLS。这样做一方面更安全,另一方面利用 TLS 的加密机制可以更好地穿透网络中间节点。
cdn
缓存机制
强缓存:
协商缓存:
Last-Modified,也是一个时间的GMT格式的时间字符串。和请求头If-Modified-Since(如果有的话)对比,没变返回304
cache control
点
监控
The text was updated successfully, but these errors were encountered: