分类存档: 星空开发笔记

主定理 与 时间复杂度

主定理最早出现在《算法导论》中,提供了分治方法带来的递归表达式的渐近复杂度分析。
规模为n的问题通过分治,得到a个规模为n/b的问题,每次递归带来的额外计算为c(n^d)
T(n) <= aT(n/b)+c(n^d)
那么就可以得到问题的复杂度为:

  • T(n) = O(n^d log(n)), if a = b^d

  • T(n) = O(n^d ), if a < b^d

  • T(n) = O(n^logb(a))), if a > b^d

二分搜索

  • 每次问题规模减半,a=1,b=2,c=0

  • 复杂度为n^0 O(log n)

二叉树遍历

    每次问题规模减半,a=2,b=2,c=0

    复杂度为n O(n)

快速排序

  • 随机选择待排序序列中的一个数字作为划分字问题的标准,划分是否平均影响算法复杂度

  • 每次问题规模减半,a=2,b=2,c=1

  • 复杂度为n^2 O(n log n)

  • 最差情况下,复杂度为O(n^2)

归并排序

  • 数据列均分为两部分,分别排序,之后以O(n)的复杂度进行合并,空间复杂度O(n)

  • 每次问题规模减半,a=2,b=2,c=1

  • 复杂度为n log(n)

一个关于 npm install 的安全问题

最近发现一个模块  pre-commit  https://www.npmjs.com/package/pre-commit

这个模块的用途是在git commit的时候可以运行一些命令。本质上是在.git/hooks/pre-commit 插入一些命令。

问题来了:为什么  npm install –save-dev pre-commit 具有这么大的权限?能够对非./node_modules/pre-commit 以外的文件做修改?如果真能修改是不是可以修改windows文件了?这样会有安全问题。

关键点在于 npm install 这个命令,自己还不够熟悉,要持续观察。以后找到原因再更新文章。

SLAM小车研究笔记

树莓派与arduino之间通信会偶尔丢包~~怎么解决啊啊啊

Scoped CSS 研究

看了徐飞大神对组件化的探索

https://github.com/xufei/blog/issues/22,里面提到Scoped CSS,于是顺便研究一下

在chrome和safair都试了几次,都无效果。查了一下caniuse,发现兼容性太差。。。放弃不研究

blob.png

关于instanceof的深入认识

如果刚认识这个操作符,有个肤浅的理解

a instanceof b 只要在a的原型链上有b就返回true。这个理解其实是错的。

直到我重新读了一下《javascript高级程序设计》的6.3节 173页。

function inheritPrototype(subType, superType){
	var prototype = Object(superType.prototype);
	prototype.constructor = subType;
	subType.prototype = prototype;
}

function SuperType(name){
	this.name = name;
	this.colors  = ["red","blue","green"];
}

SuperType.prototype.sayName = function(){
	alert(this.name);
}

function SubType(name,age){
	SuperType.call(this, name);
	this.age = age;
}

inheritPrototype(SubType,SuperType);

SubType.prototype.sayAge = function(){
	alert(this.age);
}
var instance = new SubType("jie",29)

instance instanceof SubType //true 这个没有异议吧

instance instanceof SuperType //true 这个就比较奇怪了

如果console.log(instance);是看不到SuperType出现在instance的原型链上面的。

于是我上百度谷歌了一下:

a instanceof b底层的运算机制关键点如下:

1 b的数据类型必须为[object Function],否则就抛TypeError;

2 若a为Primitive Value则直接返回false, 若a的数据类型为Object则执行后续运算;

3 当且仅当b.prototype位于a的prototype chain中时,才返回true(由于Object.prototype.__proto__为null,因此prototype chain是有限链表);

所以正确的说法是   a instanceof b 只要在a的原型链上有等于b的原型就返回true

树莓派控制云台按角度转动

代码下载: git clone https://github.com/offbye/rpiservocamra.git

 

2) install ServoBlaster
Please read ServoBlaster/README.txt for more information
$: cd ServoBlaster/
$: ls
$:  make servod
$:  sudo ./servod
$: echo 1=160 > /dev/servoblaster

 

Copy web to your php web server. then you can browser it in Chorome browser
http://yourserver/web/cam.html

密码保护:进阶历程

这是一篇受密码保护的文章,您需要提供访问密码:

仿百度文库,豆丁在线文档(word,excel,ppt在线浏览)

在上个暑假,花了2天时间在研究在线文档,我喜欢把她叫做星空文档,这个宏伟的项目最终流产。。。不过还得写下来记录一下。

太久了,太久了。我忘记了。还记得有一个思路, 继续阅读 »

php 数组操作的基本函数

一、数组操作的基本函数
数组的键名和值
array_values($arr);获得数组的值
array_keys($arr);获得数组的键名
array_flip($arr);数组中的值与键名互换(如果有重复前面的会被后面的覆盖)
in_array(“apple”,$arr);在数组中检索apple
array_search(“apple”,$arr);在数组中检索apple ,如果存在返回键名 继续阅读 »

星空二手市场手机版

星空二手市场手机版,前些时间本来想准备一个大型的发布会,在发布会上展现一下手机版的感觉比电脑版的感觉更好玩。

由于这种冲动,我又进行了一次尝试,涉足移动互联网。作为一个WEB开发者,我暂时没有能力开发IOS或者 继续阅读 »