TBOX的线程池通过在每个worker中批量一次拉取多个task,对锁的竞争进行了优化。
由于每个task的函数实现不会太多,所以可以根据每个task的函数地址做hash,统计出每个task执行所花费的平均时间。然后根据这个平均值来动态计算每个worker一次拉取的task的数量,TBOX里面默认每个worker一次拉取10s的task量,这样可以尽可能的避免worker间锁的频繁抢占。
所有从等待队列被拉取出来的task,都会被放到pending队列中去,如果等待队列中的task都被取完了,某个worker处于了空闲状态,就会尝试去pending中,重新拉取其他worker还没有执行到的task, 这样可以解决某些task耗时
继续阅读 »
先说说转Java的事
我实习回来没几天, @佛爷 和 @子健 就找我谈换技术栈,我当时还挺郁闷的。
刚转 Python 不到两年,而且 Python 本身就很适合小团队,为啥要换呢?
聊完之后我明白了,关键是 Java “方便找工作”。 @子健 也提到,他在阿里实习生群里统计了一下:
总共两百多人,三十多个前端,七八十个 Java,一百多个算法。Python 在国内还是太小众了,
工作岗位太少,大公司用 Python 也只是做运维之类的工作。
大公司用的后端语言主要还是 Java 和 C++,笔试面试除了考算法,主要也就考这两门语言,
毕业后想去 BAT 的话,转 Java 有很大优势。
继续阅读 »
小红书Android客户端第一个版本于2014年8月8日发布,转眼到了2016年8月8日,小红书Android版本发版两周年。趁机回顾一下小红书的Android版本,两年中我们踩过很多坑,收获很多经验,分享出来与大家共勉。
小红书从最初1.0到现在目前4.7版本,历经两年,安装包从原先的5M发展到现在的17M,产品模块也从原先的只有社区模块发展到了具有社区和电商两个大模块。App包含社区、电商、支付、推送、直播、统计等各种功能和模块,那么开始吧。
more
功能演进
两年的时间,30多个版本的迭代,许多功能都有了翻天覆地的变化。我们的新人欢迎页也是从最初的比较炫的效果发展到目前比较稳定的简洁版本。当初钟大侠花了无数个日日夜夜
继续阅读 »
8. series/parallel/parallelLimit
async.eachOfSeries(arr, iterator, callback)是对arr中的每一项,调用iterator函数,最终调用callback。也就是说,所有的异步任务都是同一种类型,只是传入的参数不同。例如对于一个目录下的所有文件,统计每个文件的size。
继续阅读 »