nmsn

Results 104 issues of nmsn

## 常见错误类型 ### ReferenceError 引用错误 > https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RangeError ReferenceError (引用错误)对象代表当一个不存在(或尚未初始化)的变量被引用时发生的错误 ```js console.log(a); // a 未定义 ``` ### TypeError 类型错误 > https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/TypeError TypeError(类型错误)对象通常(但并不只是)用来表示值的类型非预期类型时发生的错误 TypeError 在 JavaScript 中很常见,主要发生变量在运行时的访问不是预期类型,或者访问不存在的方法时,尤其是在使用类型特定的操作而变量类型不对时 以下情况会抛出 TypeError - 传递给运算符的操作或传递给函数的参数与预期的类型不兼容 -...

JavaScript

> 原文:https://juejin.cn/post/6844904055819468808?share_token=0a43bc55-dc1e-43b7-a8ad-197108126137

JavaScript

> https://juejin.cn/post/7088705614603354142 ## 特征 - keep-alive 在移动端应用场景更广泛 - 页面切换频繁场景多 - 长页面状态保存 ## 原理 - ref 保存需要 keep-alive 的组件 - 对 keep-alive 组件使用隐藏代替销毁

React

## 定义 散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该[函数](https://zh.m.wikipedia.org/wiki/%E5%87%BD%E6%95%B0)将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。[[1]](https://zh.m.wikipedia.org/wiki/%E6%95%A3%E5%88%97%E5%87%BD%E6%95%B8#cite_note-1)好的散列函数在输入域中很少出现[散列冲突](https://zh.m.wikipedia.org/w/index.php?title=%E6%95%A3%E5%88%97%E5%86%B2%E7%AA%81&action=edit&redlink=1)。在[散列表](https://zh.m.wikipedia.org/wiki/%E6%95%A3%E5%88%97%E8%A1%A8)和[数据处理](https://zh.m.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86)中,不抑制冲突来区别数据,会使得[数据库记录](https://zh.m.wikipedia.org/w/index.php?title=%E6%95%B0%E6%8D%AE%E5%BA%93%E8%AE%B0%E5%BD%95&action=edit&redlink=1)更难找到。 如今,散列算法也被用来加密存在数据库中的[密码](https://zh.m.wikipedia.org/wiki/%E5%AF%86%E7%A2%BC)(password)字符串,由于散列算法所计算出来的散列值(Hash Value)具有不可逆(无法逆向演算回原本的数值)的性质,因此可有效的保护密码。 ## 特性 ### 确定性 如果两个散列值是不相同的,那么这两个散列值的原始输入也是不相同的; ### 冲突(碰撞) 散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的,但也可能不同; ### 不可逆性 不能通过结果推导输入; ### 混淆性 输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不同的散列值; ## 常用散列算法 ### MD5 > MD5消息摘要算法(英语:MD5 Message-Digest...

其他

## 种类 - 权限控制列表(ACL,Access Control List)。 - 自主访问控制(DAC,Discretionary Access Control)。 - 强制访问控制(MAC,Mandatory Access Control)。 - 基于角色的访问控制(RBAC,Role-Based Access Control)。 - 基于属性的权限验证(ABAC,Attribute-Based Access Control)。 ## 介绍 ### ACL 权限控制列表 > 规定资源可以被哪些主体进行哪些操作 在...

架构方案

> 来源:React 进阶实战指南 ## Form ```jsx class Form extends React.Component{ state={ formData:{} } /* 用于提交表单数据 */ submitForm=(cb)=>{ cb({ ...this.state.formData }) } /* 获取重置表单数据 */ resetForm=()=>{ const { formData } =...

React

https://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

CSS

## PPI PPI是Producer Price Index,中文含义是生产者价格指数,可以理解为社会企业生产商品的平均成本,包含原材料、半成品和最终生产品三个阶段的物价信息。PPI数据源自9大类商品,包括燃料、动力类;有色金属类;有色金属材料类;化工原料类;木材及纸浆类;建材类(钢材、木材、水泥);农副产品类;纺织原料类;工控产品类。PPI是生产,CPI是消费,显然是先有生产,再有消费,所以PPI是CPI的前兆。一般价格波动会首先影响到生产端PPI的数据,再由产业链向下游扩散,最后反映到消费者的衣食住行上。 ## CPI CPI是居民消费价格指数(consumer price index)的简称。居民消费价格指数,是一个反映居民家庭一般所购买的消费商品和服务价格水平变动情况的宏观经济指标。它是度量一组代表性消费商品及服务项目的价格水平随时间而变动的相对数,是用来反映居民家庭购买消费商品及服务的价格水平的变动情况。 **其变动率在一定程度上反映了通货膨胀或紧缩的程度。** ## 参考 - https://www.zhihu.com/question/39369001/answer/1278620127

经济

> 原文:https://juejin.cn/post/6844904116552990727 ## call ```js Function.prototype.myCall = function(thisArg, ...args) { const fn = Symbol('fn') // 声明一个独有的Symbol属性, 防止fn覆盖已有属性 thisArg = thisArg || window // 若没有传入this, 默认绑定window对象 thisArg[fn] = this // this指向调用call的对象,即我们要改变this指向的函数...

手写代码

> 原文:https://juejin.cn/post/6844904116552990727#heading-28 我们通过分析几种加密方式,层层递进,理解HTTPS的加密方式以及为什么使用这种加密方式: ## 对称加密 客户端和服务器公用一个密匙用来对消息加解密,这种方式称为对称加密。客户端和服务器约定好一个加密的密匙。客户端在发消息前用该密匙对消息加密,发送给服务器后,服务器再用该密匙进行解密拿到消息。 这种方式一定程度上保证了数据的安全性,但密钥一旦泄露(密钥在传输过程中被截获),传输内容就会暴露,因此我们要寻找一种安全传递密钥的方法。 ## 非对称加密 采用非对称加密时,客户端和服务端均拥有一个公钥和私钥,公钥加密的内容只有对应的私钥能解密。私钥自己留着,公钥发给对方。这样在发送消息前,先用对方的公钥对消息进行加密,收到后再用自己的私钥进行解密。这样攻击者只拿到传输过程中的公钥也无法破解传输的内容 尽管非对称加密解决了由于密钥被获取而导致传输内容泄露的问题,但中间人仍然可以用篡改公钥的方式来获取或篡改传输内容,而且非对称加密的性能比对称加密的性能差了不少 ## 第三方认证 上面这种方法的弱点在于,客户端不知道公钥是由服务端返回,还是中间人返回的,因此我们再引入一个第三方认证的环节:即第三方使用私钥加密我们自己的公钥,浏览器已经内置一些权威第三方认证机构的公钥,浏览器会使用第三方的公钥来解开第三方私钥加密过的我们自己的公钥,从而获取公钥,如果能成功解密,就说明获取到的自己的公钥是正确的 但第三方认证也未能完全解决问题,第三方认证是面向所有人的,中间人也能申请证书,如果中间人使用自己的证书掉包原证书,客户端还是无法确认公钥的真伪 数字签名 为了让客户端能够验证公钥的来源,我们给公钥加上一个数字签名,这个数字签名是由企业、网站等各种信息和公钥经过单向hash而来,一旦构成数字签名的信息发生变化,hash值就会改变,这就构成了公钥来源的唯一标识。 具体来说,服务端本地生成一对密钥,然后拿着公钥以及企业、网站等各种信息到CA(第三方认证中心)去申请数字证书,CA会通过一种单向hash算法(比如MD5),生成一串摘要,这串摘要就是这堆信息的唯一标识,然后CA还会使用自己的私钥对摘要进行加密,连同我们自己服务器的公钥一同发送给我我们。 浏览器拿到数字签名后,会使用浏览器本地内置的CA公钥解开数字证书并验证,从而拿到正确的公钥。由于非对称加密性能低下,拿到公钥以后,客户端会随机生成一个对称密钥,使用这个公钥加密并发送给服务端,服务端用自己的私钥解开对称密钥,此后的加密连接就通过这个对称密钥进行对称加密。 综上所述,HTTPS在验证阶段使用非对称加密+第三方认证+数字签名获取正确的公钥,获取到正确的公钥后以对称加密的方式通信

网络