构造函数构建函数(Constructor)属于一种较特殊的方法类型,因为它没有返回值.这与void返回值存在着明显的区别。对于void返回值,尽管方法本身不会自动返回什么,但仍然可以让它返回另一些东西。构建器则不同,它不仅什么也不会自动返回,而且根本不能有任何选择.若创建一个没有构件器的类,则编译器会自动创建一个默认构件器.
继续阅读 »
迭代器模式是指提供一种方法,顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式可以把迭代的过程从业务逻辑中分离出来,在使用迭代器模式之后,即使不关心内部构造,也可以按顺序访问其中的每个元素。
jQuery中的迭代器
迭代器模式无非就是循环访问聚合对象中的各个元素。比如jQuery中的$.each函数,其中回调函数中的i为当前 索引,n为当前元素,代码如下
$.each([1, 2, 3], function(i, n) {
console.log('当前坐标:' + i);
console.log('当前值:' + n);
});
然而,作为一个合格的前端开发者,我们不应该只是会用,而
继续阅读 »
this的指向大概可以分成四种:
* 作为对象的方法调用
* 作为普通函数调用
* 构造器调用
* Function.prototype.call或Function.prototype.apply调用
1. 作为对象的时候,this指向该对象
var obj = {
a: 1,
getA: function() {
alert(this === obj); //true;
alert(this.a); //1
}
};
obj.getA();
2. 作为普通函数调用,this总是指向全局对象(在浏览器中就是window)
window.name = 'global
继续阅读 »
因为要修复Wine的Bug,需要重新实现sprintf,
于是我研究了wine中printf跟sprinf的实现。
其实printf跟sprintf实现的关键无非就是可变参数,利用此就可以写出一个功能简单的printf.
我仔细研究了一下Wine里面的实现,发现printf跟sprintf的实现核心都用到了pfprintfa(就是根据参数%f,%d等转换的函数),不过重定向不一样。
printf是用到了write_concole, sprintf是复制到buf里面~
实际上, printf这个我们常用的函数, 申请了内存, 用buf来存放输出的结果.
继续阅读 »
本节实现的是读取视频,并显示视频的每一帧以实现视频的播放。
创建摄像头对象,指向文件
逐帧显示实现视频播放
实现过程
引用
不再赘述,代码如下。
python
import cv2
import numpy
创建视频对象
使用opencv自带的VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头,一般就是笔记本的内建摄像头。
python
cap = cv2.VideoCapture("../test.avi")
逐帧显示实现视频播放
在while循环中,利用视频对象的read()函数读取视频的某帧,并显示,然后等待1个单位时间,如果期间检测到了键盘输入q,则退出,即关闭窗口。
pyt
继续阅读 »
Bloom Filter是由Bloom在1970年提出的一种快速查找算法,通过多个hash算法来共同判断某个元素是否在某个集合内。可以用于网络爬虫的url重复过滤、垃圾邮件的过滤等等。
它相比hash容器的一个优势就是,不需要存储元素的实际数据到容器中去来一个个的比较是否存在。
只需要对应的位段来标记是否存在就行了,所以想当节省内存,特别适合海量的数据处理。并且由于省去了存储元素和比较操作,所以性能也比基于hash容器的高了很多。
但是由于bloom filter没有去比较元素,只通过多个hash来判断唯一性,所以存在一定的hash冲突导致误判。误判率的大小由hash函数的个数、hash函数优劣、以及存储的位空间大小共同决定。
继续阅读 »
ctypes是一个Python库,可以提供C中的数据类型,调用链接库中的函数.
1.加载动态链接库
使用cdll.LoadLibrary或者CDLL.
ex CDLL("libc,so,6")
2.调用已加载库中的函数
继续阅读 »
PY有自己内建的工厂函数sorted用来排序, 它返回一个原地排序后的副本. 采用的是原地排序算法. 这个工厂函数的原型是:
{}sort(cmp=None, key=None, reverse=None) {}
继续阅读 »
J2EE真不是个东西四之Servlet篇
more
Servlet真不是个东西!这东西繁得YB啊!真不知道这东西有哪点好,但是看到的都称其为最好的一个CGI程序。自从遇到这鸟东西,就没有一天的好日子过。
星期一:看了看Servlet,真是晕死了,用它写个你好世界竟然要16K的半页代码!函数的参数真是又臭又长,一个doGet函数竟然还要写两行!可想而知,周一的日子会好过吗?
继续阅读 »
本节实现的是使用OpenCV里自带的函数,将两幅图片按照特定的比例融合
实现过程
引用与读取图片
不再赘述,代码如下。
```python
import cv2
import numpy
img1 = cv2.imread('test1.png')
img2 = cv2.imread('test2.png')
```
融合图片
利用addWeighted()函数,将图片1的比例设置为0.6,图片2的0.4,如下:
python
mg_mix = cv2.addWeighted(img1, 0.6, img2, 0.4, 0)
显示图片
分别显示两幅原图和融合后的图片:
```python
cv2.imsh
继续阅读 »