js获取dom元素长宽之坑

此坑消耗我好久时间,mark一下。

1.需求描述

最近项目需要,要做一个根据鼠标事件位置显示popover的功能效果。要在鼠标点击位置之上,居中显示一个template的div,
因此我需要获得这个div的长宽。

threadpool in python

用python实现了一个简易的线程池

对于线程池的不用应用场景对如下几个feature作了分类

1.按工作总量分

  • 工作总量已知:

需要计算的工作在threadpool启动之前就已经定了,对于threadpool
只需要指定线程数量就好了,此类threadpool的工作流程如下,在启动前
设置好线程池的大小,分割好子工作放入workers列表中,每个线程每次
循环从列表中取出一个工作去做,如果列表已空,该线程退出。

这类线程池是最容易实现的一种,只需用一个_互斥锁_对workers队列做一个
互斥访问即可

Nodejs 豆瓣自动顶贴工具

应朋友需求,帮他写一个这样的工具,时间挺久了,出于各方面自身及其它的原因,一直没有能够帮他去做,也挺内疚的。这次辞职了,有几天时间,从今天起,打算帮他做一下,期间的困难和突破会持续更新在这篇文章里面,看看自己会花多久。

刚上来就给我出了一个题:

mongodb 构建 replset 实现高可用

上周遇到了digital ocean服务器厂商主机崩溃的事情。当时我只是单点部署了mongodb,数据全在美国服务器。这下直接导致数据库不能用,如果主机就此起不来或者是其它原因导致数据丢失的话,哭也来不及了。
为了防止下次遇到类似的事情,决定为数据库部署一个副本集架构(replica set)

next_permutation

产生一个数列的全排列,自己想了一个实现算法,和stl里面的实现算法一样,具体的思路都在注释中。
代码中还实现了一种递归的做法,参考了网上的资料,递归的做法代码简短很多,但可操作性而言,没有next方式好。因为实际应用中需要针对每个permutation作相应的操作。用递归的话需要把操作写在permutation的实现中,耦合性很高。
另外,递归的方式受限于系统栈空间的大小,N只能在一定范围内处理。理论上,next的方式N可以无限大。

Just for fun.用线程池并行处理ACM多组输入加快运算速度(对于算法提高不推荐)

做一道google code jam的题目来试试看我的线程池构想,看看速度会不会快很多。

其实这题我的算法并不是最优的,所以才会导致10分钟还出不了答案,要是真在code jam上比赛的话妥妥的跪了。
但就算算法不好,我如果充分利用CPU的资源,使用多线程框架,会不会出结果时间快很多呢?试试看吧!

这个纯粹是玩玩的,如果要提高算法能力的话,不建议这么搞

code jam 原题地址戳这里
注:需要翻墙的哦

nodejs 源码浅析(三)——用户模块编译加载原理

继上一篇:
这篇将会对C++用户模块以及js用户模块的加载流程作一个简单的分析。

3.js用户模块

只要是用户自己写的js模块,都归在这一类,包括通过npm install得到的模块也属于这个部分。

在_load()接口中,会首先判断要加载的模块是不是js核心模块,在这里逻辑就不走进去了,而是直接新建一个模块对象,并且把它放进缓存中,以加快下次加载的速度。

nodejs 源码浅析(二)——核心模块编译加载原理

模块加载原理

nodejs中,一共有四种类型的模块,C++核心模块(内建模块),js核心模块,C++用户模块,js用户模块。这部分来分别探讨下这些模块的编译加载流程。
问题:
1.require、exports、module这些对象用户没有声明过,但用户还是可以直接用require(),exports,这是为什么?
2.引入别的模块的流程如何?


1.js核心模块加载原理

每个js模块都是一个文件,一个文件一个模块,在js代码中就是一个Module对象。至于那些整个包构成的模块,也是有一个对外的文件,如果没有指定默认是index.js作为出口文件,该文件内部又会使用require去包含其它的文件。