android应用程序的三大组件——Activities、Services、Broadcast Receiver,通过消息触发,这个消息就是Intent,中文又翻译为"意图"(我感觉读着不顺畅,还是读英文)。我们可以通过Intent去启动三大组件,并且通过Intent携带数据到其他组件中。本文来看一下怎么使用Intent启动组件,以及Intent的过滤规则。
Intent对象
首先来看Intent对象中包含的成员。
more
java
private String mAction; //动作
private Uri mData; //数据
private String mType;
private Strin
继续阅读 »
通过绑定规则来确定this的绑定对象。
默认绑定
默认绑定规则看作是无法应用其他规则时的规则,
独立函数调用是最常用的函数调用方式。比如:
```
function foo() {
console.log( this.a );
}
var a = 2;
foo(); // 2
```
此时foo在调用的时候是默认绑定,因为没有指定上下文,所以默认上下文
是window,而var a = 2;这句意思是给window添加了一个a属性,并赋值为2,
所以会打印2。
如果使用严格模式(strict mode),那么全局对象将无法使用默认绑定,因为
this会绑定到undefined.
隐式绑定
另一条需要考虑的规则是调
继续阅读 »
将近20年前,Javascript诞生的时候,只是一种简单的网页脚本语言。如果你忘了填写用户名,它就跳出一个警告。
如今,它变得几乎无所不能,从前端到后端,有着各种匪夷所思的用途。程序员用它完成越来越庞大的项目。
Javascript代码的复杂度也直线上升。单个网页包含10000行Javascript代码,早就司空见惯。2010年,一个工程师透露,Gmail的代码长度是443000行!
编写和维护如此复杂的代码,必须使用模块化策略。目前,业界的主流做法是采用"面向对象编程"。因此,Javascript如何实现面向对象编程,就成了一个热门课题。
麻烦的是,Javascipt语法不支持"类"(class),导致传统的面向
继续阅读 »
分析:此题根据如何来表示一条指令,有两种解法:一种是用一个整数(3位数)来表示,另一种用一个对象(含有3个成员,分别表示指令的3个位)来表示。前者的好处是存贮方便,但需要运行时“译码”;后者的好处是不需要运行时“译码”,但有额外的开销在对象的创建和复制上。根据网站的判题结果,二者的时间效率大体相当。more
继续阅读 »
上段时间组内解决的一个奇葩内存泄露问题, 找到最终原因时发现真是奇坑无比的一个原因.
一开始怀疑某个逻辑会导致dict引用数一直增加, 或是其他对象始终不释放, 导致内存一直在涨, 期间开启gc collect也没用.
使用memory grapher 等内存泄露工具检测, 打印出一段时间对象的增长量, dict, list等数据结构的增长量, 从打印信息看虽然有一定问题, 但是确实不可能会导致那么严重的内存泄露, 我们某个游戏服有时甚至会突然从300MB进程内存, 很快就上涨到3GB.
继续阅读 »
Handler - Message - Looper 说起来也就是这么一回事,Looper实现在Thread中负责不断的循环监听处理Message,要不然Thread运行完就自己关了。当你不需要的时候就可以把Looper关了,线程就自动运行完了。
Message
实现了序列化接口,what区分类型,arg的参数使用简单的整形,obj存储对象,data存储一个bundle,target是一个Handler。剩下的就是搞了个对象池回收Message,所以才会推荐用Message.obtain()来新建,其实就是从回收池里拿东西。
总之没什么好说的。
Looper
``` java
继续阅读 »
真的很久没写博客了,一直提不起兴趣,总觉得写一些代码如何写,工具如何用,过一阵子就不是很有用了,所以想写一些自己的心得体会,但又很难总结成文章。这几天突然间想通了一些,也许我是时候抛开前端这个枷锁了,今天我们来谈谈敏捷开发的结对编程。
想当年(然而并没有几年)刚来到ThoughtWorks的时候,除了英语,我最不适应的就是pair,即结对编程。因为刚上项目的我只能跟着结对对象的思维走,即使我思路正确了也无非是在我的结对对象写的代码上印证了一下,少有的贡献就是不时的提醒他一下typo之类无关紧要的错误。然后当我拿到键盘时,还是因为信息的不对等,我无法在全局层面上做出贡献,因为我必须非常熟悉整个项目才能说服我的pair,修改一些架构上
继续阅读 »
Closures are functions that refer to independent (free) variables
闭包是静态方式/词法方式进行存储所有父作用域的一个函数
在 JavaScript 高级程序设计里面通过一个createComparisonFunction()函数和这个函数的作用域链之间的关系图说得很明白为什么闭包可以访问外部函数的变量,是因为闭包的作用域链不仅包括自己本地的活动对象,还包括外部函数作用域链所指向的活动对象
继续阅读 »
参考原文:https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views
状态嵌套的方法
状态可以相互嵌套。有三个嵌套的方法:
1. 使用“点标记法”,例如:.state('contacts.list', {})
2. 使用parent属性,指定一个父状态的名称字符串,例如:parent: 'contacts'
3. 使用parent属性,指定一个父状态对象,例如:parent: contacts(contacts 是一个状态对象)
more
点标记法
在$stateProvider中可以使用点语法来表示层次结构,下面,contacts
继续阅读 »
本节实现的是使用OpenCV里自带的函数,检测出视频里图像中的蓝色和天蓝色、青色,比如我的手机背景、我衣服上的蓝色格子,墙砖的蓝色和学生证照片上的蓝色背景。
设置“蓝色”HSV范围
BGR转HSV
捕获摄像头视频
获取蓝色部分mask
图像按位与操作
显示蓝色部分图像
实现过程
定义视频对象
视频对象用于捕获摄像头视频流。
``` python
import cv2
import numpy as np
cap = cv2.VideoCapture(0)
```
设置HSV中蓝色、天蓝色范围
这里主要参考了这个博客,我设置的颜色范围如下。
```python
set blue thresh
lower_blue=
继续阅读 »