2016-08-06 令狐葱
前言 故事还得从头说起。乌云网挂掉之后,乌云知识库也无法访问了。曾经,在上面看到那么多优秀的安全类文章,一下子看不到了,颇觉得有点不适应。还好网上流传着民间的各种版本,于是我收集了一下,放在了Github上。这些文章只是一些html文件,并不包含页面上的图片。幸运的是,图片的域名static.wooyun.com还可以继续访问,因此有必要把这些图片也抓取下来。 Wooyun Drops 文章在线浏览 Wooyun Drops 文章在线浏览 Github: wooyun_articles 使用Nodejs下载图片 抓取图片链接的过程在此不再详述,无非就是打开每个html页面,找到其中img标签的src属性。我们拿到了这些ht 继续阅读 »
2015-11-29 Alex Sun
本系列文章使用的async版本为v1.5.0. JS的异步函数执行,大致上可以分为以下几种: 所有异步任务并行执行 无最大并行数限制 有最大并行数限制 所有异步任务串行执行 串行执行与并行执行相结合 继续阅读 »
2015-11-29 Alex Sun
4. map/filter/reject 在async中,each系列的方法一共有12个: each/forEach eachOf/forEachOf eachLimit/forEachLimit eachOfLimit/forEachOfLimit eachSeries/forEachSeries eachOfSeries/forEachOfSeries 继续阅读 »
2015-11-30 Alex Sun
8. series/parallel/parallelLimit async.eachOfSeries(arr, iterator, callback)是对arr中的每一项,调用iterator函数,最终调用callback。也就是说,所有的异步任务都是同一种类型,只是传入的参数不同。例如对于一个目录下的所有文件,统计每个文件的size。 继续阅读 »
2020-05-23 geekspeng
Sync 与 Async Python:有什么区别? 你有没有听人说过异步 Python 代码比“普通”(或同步) Python 代码更快?这怎么可能?在本文中,我将尝试解释什么是异步以及它与普通 Python 代码的区别。 more 继续阅读 »
2016-12-18 Eric Wang
Java日志框架 作为一个Java程序员,肯定离不开日志框架,现在最优秀的Java日志框架是Log4j2,没有之一。根据官方的测试表明,在多线程环境下,Log4j2的异步日志表现更加优秀。在异步日志中,Log4j2使用独立的线程去执行I/O操作,可以极大地提升应用程序的性能。 在官方的测试中,下图比较了Sync、Async Appenders和Loggers all async三者的性能。其中Loggers all async表现最为出色,而且线程数越多,Loggers all async性能越好。 除了对Log4j2自身的不同模式做对比以外,官方还做了Log4j2/Log4j1/Logback的对比,如下图所示 其 继续阅读 »
2014-03-25 W.Y.
在凌乱的异步编程一文中,我们见识了用回调处理异步调用的尴尬局面,即使是一组简单的函数调用。 快速回顾一下,看看我们最初的代码,使用回调函数时的凌乱结果,以及我们为了回到正途而想要解决的几个问题: 我们再也不能使用简单的“调用 - 返回”(call-and-return)编程模型 我们再也不能使用 try/catch/finally 来处理异常 我们必须为可能执行异步操作的每个函数的签名增加 callback 和 errback 参数 1. Promises 一个 Promise(或者叫 Future, Delayed value, Deferred value)代表一个尚不可用的值,因为产生这个值的计算过程尚未完成。一个 Pr 继续阅读 »
2014-03-25 W.Y.
在 JavaScript 中处理异步和回调就是家常便饭,我们通常会面对这样一些问题: 1. 如何优雅滴组织我们的回调代码 2. 对异步函数错误处理的最佳实践是什么 3. 异步嵌套问题 4. 怎样使我们的代码可读性和可维护性更高 Programs are meant to be read by humans and only incidentally for computers to execute. 程序是给人读的,只是顺带让计算机执行一下。 ——《编写可维护的JavaScript》@Donald Knuth 当然,最常见也是最简单的处理方式就是,直接将回调函数或错误处理函数作为异步函数的参数,在异步函数返回时进行相应的调用,这 继续阅读 »
2014-03-25 W.Y.
正如我们在凌乱的异步编程一文中看到的那样,基于回调函数的异步代码的错误处理也很快变得混乱起来,丢失了许多同步代码具有的优秀品质,使我们更难定位到错误原因。在用 Promises 简化异步编程一文中,我们介绍了 Promises,看到了它如何使我们回到“调用 - 返回”编程模型,允许异步错误像同步错误那样沿着调用堆栈向上传播,并提供一种更清晰方法来管理异步,特别是在处理错误时。 1. Try/catch/finally 在同步代码中,try/catch/finally 提供了一种简单友好但非常强大的惯用语法来执行任务、处理错误,并且总是确保稍后可以执行清理。 译注:idiom 习语 下面是一个简单的 try/catch/fin 继续阅读 »
2014-03-25 W.Y.
1. 异常和 try/catch 当执行可能失败的操作时,采用异常机制和 try/catch 是一种直观的方式,这样我们就可以从异常中恢复,或将异常抛出,异常沿着调用堆栈到达调用者,调用者可以处理该异常或将其继续抛出。 看一个简单的例子: ```javascript function thisMightFail() { //... if(badThingsHappened) { throw new Error(...); } return theGoodResult; } function recoverFromFailure(e) { //... return re 继续阅读 »