计算质数(极速版)

计算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 才会有意义, 否则根本查询不到数据.

Java中的foreach遍历

1
2
3
4
5
6
7
8
9
10
11
12
13
List<Person> persons = new ArrayList<Person>();
persons.add(new Person("name1", 11));
persons.add(new Person("name2", 12));
persons.add(new Person("name3", 13));

for (Person person : persons) {
person.setAge(person.getAge()+5);
}

for (Person person : persons) {
System.out.println(person);
System.out.println(person == persons.get(0));
}


Person [name=name1, age=16]
true
Person [name=name2, age=17]
false
Person [name=name3, age=18]
false

对于在for遍历中的每个person对象,其实是persons中的一个对象,如果改变person的值,也就造成了persons中对象的改变.