使用Swift解析json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
let jsonObject = try NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers)
print(jsonObject)

let array = jsonObject as! NSArray

//读取数组中某个key所对应的所有值
print(array.valueForKey("text"))

//读取第一个元素
print(array[0])

//读取第一个元素的key对应的值
let text = array[0].valueForKey("text")
print(text)

//在使用if let语句的时候,swift会自动进行拆包
if let state = array[0].objectForKey("state") {
print(state)
}

结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
(
{
id = 1;
state = closed;
text = "Node 1";
},
{
id = 2;
state = open;
text = "Node 2";
},
{
id = 3;
state = open;
text = "Node 3";
},
{
id = 4;
state = open;
text = "Node 4";
}
)
(
"Node 1",
"Node 2",
"Node 3",
"Node 4"
)
{
id = 1;
state = closed;
text = "Node 1";
}
Optional(Node 1)
closed

计算质数(极速版)

计算1000000以内的质数只用了398毫秒,闪电一样的速度.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
long start = System.currentTimeMillis();

for (int i = 1; i < 100; i++) {
double r = Math.sqrt(i);
for (int j = 2; j < r; j++) {
if(i % j == 0) {
break;
}else if( j > r )
{
System.out.println(i);
}
}
}

long end = System.currentTimeMillis();
System.out.println(end - start);

Elasticsearch自定义分析器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
PUT /my_index
{
"settings": {
"analysis": {
"char_filter": {
"&_to_and": {
"type": "mapping",
"mappings": [ "& => and "]
}},
"filter": {
"my_stopwords": {
"type": "stop",
"stopwords": [ "the", "a" ]
}},
"analyzer": {
"my_analyzer": {
"type": "custom",
"char_filter": [ "html_strip", "&_to_and" ],
"tokenizer": "standard",
"filter": [ "lowercase", "my_stopwords" ]
}}
}
}
}

状态模式

定义: 允许对象在内部状态改变时改变它的行为,对象看起来像是修改了它的类.
Context对象会随时间而改变状态,而任何的状态改变都是定义好的.

PageRank算法

详细内容参考http://blog.csdn.net/Leonis_v/article/details/50531032

PageRank算法原理

PageRank的计算充分利用了两个假设:数量假设和质量假设。步骤如下:
1)在初始阶段:网页通过链接关系构建起Web图,每个页面设置相同的PageRank值,通过若干轮的计算,会得到每个页面所获得的最终PageRank值。随着每一轮的计算进行,网页当前的PageRank值会不断得到更新。

2)在一轮中更新页面PageRank得分的计算方法:在一轮更新页面PageRank得分的计算中,每个页面将其当前的PageRank值平均分配到本页面包含的出链上,这样每个链接即获得了相应的权值。而每个页面将所有指向本页面的入链所传入的权值求和,即可得到新的PageRank得分。当每个页面都获得了更新后的PageRank值,就完成了一轮PageRank计算。

Elasticsearch中初步使用filter

1
2
3
4
5
6
7
8
9
10
11
12
13
GET /nm*/_search
{
"query": {
"filtered": {
"query": {
"match_all": {} ①
},
"filter": {
"term": { "pub_time": 1449791040000 }
}
}
}
}

一定要保证①处能够查询出数据, 然后后边的 filter 才会有意义, 否则根本查询不到数据.