加入收藏 | 设为首页 | 会员中心 | 我要投稿 阿坝站长网 (https://www.0837zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

5G手机“减肥”之痛

发布时间:2021-02-11 10:47:58 所属栏目:动态 来源:互联网
导读:就像程序员们经常互相鄙视一样,在咱们爬虫的圈子里,也存在鄙视链。 地位最高的要数搜索引擎的爬虫了,他们高高在上,正大光明的爬,各个网站欢迎还来不及,都想被他们收录到搜索引擎之中,给网站带来流量。这些爬虫,都是圈子里的大佬,我们惹不起。 另外

就像程序员们经常互相鄙视一样,在咱们爬虫的圈子里,也存在鄙视链。

地位最高的要数搜索引擎的爬虫了,他们高高在上,正大光明的爬,各个网站欢迎还来不及,都想被他们收录到搜索引擎之中,给网站带来流量。这些爬虫,都是圈子里的大佬,我们惹不起。

另外有一些爬虫,他们有的不遵守robots协议,随意乱爬,有的一天天的净知道爬美女图片,把人家服务器爬崩溃了,这些爬虫我们也是看不起的。

像我这样老实本分的爬虫,平日的工作就是爬取一些网站的数据,像购物网站、点评网站等等。虽然我们很守规矩,但这些个网站还是很不待见我们,为了拿到数据,我们展开了旷日持久的拉锯战。

反爬虫技术

现在很多网站都上云了,云上的资源可昂贵了,CPU、内存、存储这些都价格不菲,尤其是网络带宽,价格是真心贵。

那些网站不待见咱们这些爬虫也就可以理解了,我们不像搜索引擎爬虫可以给他们带来好处,相反,还会消耗他们的服务器性能,花掉他们宝贵的流量,那可是白花花的人民币,谁不心疼啊?

所以这些网站加了一个措施:一旦在HTTP请求中的user-agent字段发现这是一个爬虫,那就不搭理我们了。
 

在这个版本中,ECMAScript中增加了一个同时处理多个承诺的方法。any方法可以运行多个承诺,并用第一个解决的承诺来解决后面的问题,或者等到所有的承诺都失败并返回到一个AggregateError对象处(它是Error对象的一个子类)。

那么,any和race之间有什么区别呢?事实上,race只要有一个承诺会实现或失败,它就会进行结算并返值。然而,any 会用第一个结算值进行结算,或者等待所有的值都失败了,再一起恢复所有错误。
 

本质上,这里用了FinalizationRegistry 来创建注册表,需要用回调函数作为参数。在每次收集一个对象(之前用register 方法注册的)时都会用到这个函数。

register 方法本身是用来指定所等待的对象的重构方法,它的第二个参数是在创建注册表时传递给初始定义的回调的值。建议你少用这个方法,特别是不要想着用它来做业务,但是可以考虑在特殊情况下用它来解决一些新奇的问题。

Promise.any
 

在上面的例子中,两个对象都是相互引用的,所以即使me和sibling变量都不在范围内,因此,去掉引用,在内部每个对象都对另一个对象有一个强引用。在实践中,这意味着这些对象永远不会被收集。这么做完全没有问题,除非你是在一个内存非常小的设备中使用JS。

(2) 输入弱参考

对强引用有所了解之后,弱引用就很好理解啦。弱引用本质上是一种保留对象引用而不影响垃圾收集器行为的方法。在前面的例子中,如果sibling性能会使用弱引用构造来设置,那么就可以收集这些对象。弱引用的另一个用例是缓存结构,因为人们不希望缓存的对象内部引用过于活跃。
 

实质上,你正在用#字符来使方法或访问器私密化。这个字符也会成为该名称的一部分,所以如果你想使用上面所提到的方法,可以简单地用 this.#Age 或者 this.#myPrivateMethod()。

在这两种情况下,如果你试图从一类之外甚至从扩展了的类里面使用它们,都会出现异常(要等到有了保护方法之后再使用)。

终结器和弱引用‍

这两个有趣的工具可以帮助处理内存使用问题,并管理垃圾收集。不过,除非你需要特别注意内存的使用,不然不太需要用到这两个工具。

注意,下面的两个功能涉及垃圾收集器的工作方式,但安装启用只针对一个运行时。这意味着编写依赖于非标准安装的业务逻辑很可能会产生意想不到的结果。即使有了这些工具,也要在使用前要清楚自己的目的。

(1) 弱引用

在介绍弱引用之前,我先快速介绍一下强引用,以便你理解弱引用的优势。强引用本质上是一个指向目标的指针,在JavaScript中,这只是一个变量,你已经将目标分配到这个变量中。比如说:

(编辑:阿坝站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读