异度部落格

学习是一种生活态度。

0%

1.安装 Python

1
2
sudo apt-get install python
sudo apt-get install python-dev

2.安装 Ant

1
sudo apt-get install ant

3.安装 setuptools

1
sudo apt-get install python-setuptools

打补丁:

1
2
3
4
5
6
7
mkdir tmp
cd tmp
unzip -q /usr/local/lib/python2.6/dist-packages/setuptools-0.6c11-py2.6.egg
patch -Nup0 < /home/killua/Download/pylucene-3.1.0-1/jcc/jcc/patches/patch.43.0.6c11
sudo zip /usr/local/lib/python2.6/dist-packages/setuptools-0.6c11-py2.6.egg -f
cd com, and it provides a fantastic selection of <a href="http://slotmachineitaliane.net">slotmachineitaliane.net</a> games, bonuses, promotions and more. ..
rm -rf tmp

4.安装 JDK

1
sudo apt-get install openjdk-6-jdk

5.安装 Pylucene 下载地址:http://www.apache.org/dyn/closer.cgi/lucene/pylucene/ tar xzvf pylucene-3.0.1-1-src.tar.gz cd pylucene-3.0.1-1/jcc

6.安装 jcc

1
2
python setup.py build
sudo python setup.py install

7.修改 Makeifle 打开了这几行注释:

1
2
3
4
5
6
# Linux   (Ubuntu 8.10 64-bit, Python 2.5.2, OpenJDK 1.6, setuptools 0.6c9)
PREFIX_PYTHON=/usr
ANT=ant
PYTHON=$(PREFIX_PYTHON)/bin/python
JCC=$(PYTHON) -m jcc --shared
NUM_FILES=3

修改-m jcc 为 -m jcc.main

8.编译安装 Pylucene

1
2
make
sudo make install

【试题描述】
给你一个二进制序列比如10100,进行左循环移位n
次,n是二进制序列的长度,每移位一次产生一个新二进制序列
序列1
10100
01001
10010
00101
01010
然后把这些序列进行排序,变成序列2

序列2
00101
01001
01010
10010
10100
提取最后一列(注意是列不是行):11000
现在给你序列2的最后一列11000,让我们求出序列2的第一行
  【试题来源】某大学研究生复试面试题
  【试题分析】
首先经过n次变化然后排序所得序列2是个nn的矩阵M。M矩阵的每一行无论是同时左移或者同时右移I位后得到的新矩阵P,这个新的矩阵的每一行其实还是能在矩阵M中找到。因此,任意一列都包含了原序列的所有信息。
这里我们有最后一列,只要将最后一列排序即可得到第一列的元素。
这样我们就可以知道第一列F和最后一列L这时将矩阵每一位循环右移,则此时的矩阵第一列为L,第二列为F。
然后按照前两列组成的序列进行排序,得到新的矩阵。所得矩阵的第一列与原矩阵第一列相同,即为F,于是第二列为原矩阵的第二列,于是可以求得第二列。
此时就得到的第一列,第二列,以及已知的最后一列,然后再次右移排序,可以得到第三列。
经过数次变换可以得到整个矩阵M,即可求得序列2的第一行。
  【算法】
假设变换2的最后一列记为L(实现上可以作为1维数组)
1. 建立一个n
n的矩阵M(实现上可以作为2维数组),初始值为全0
2. 将L复制到M的第一列(最左边的一列)
3. 对M的第一列进行排序(从小到大)
4. 循环n-2次{将M的每行右移1位;将L复制到M的第一列;将M按行排序}
5. 将L复到M的最后1列(最右边的一列)
此时的M就是变化2后的矩阵。
【代码】

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
#-------------------------------------------------------------------------------
# Name: BinarySequence.py
# Purpose:
#
# Author: Killua
#
# Created: 17/04/2011
# Copyright: (c) Killua 2011
# Licence: <your licence>
#-------------------------------------------------------------------------------
#!/usr/bin/env python
def BinarySequence(lastColumn):
n = len(lastColumn);
M = ['0'*n for i in range(n)]; #初始化一个空矩阵
#将最后一列赋值给矩阵
for i in range(n):
M[i] = M[i][:n-1] + lastColumn[i];
#循环移位排序n-1次
for i in range(n-1):
#循环移位
for j in range(n):
M[j] = lastColumn[j] + M[j][:n-1];
#排序
M.sort();
#最后一列赋回
for k in range(n):
M[k] = M[k][:n-1] + lastColumn[k];
return M[0];
def main():
#Test
lastColumn = "11000";
res = BinarySequence(lastColumn);
print("排序后的矩阵第一行:" + res);
if __name__ == '__main__':
main()

【参考资料】 http://topic.csdn.net/u/20110405/13/9393c9a7-b86c-482d-acaf-e8c391541875.html http://topic.csdn.net/u/20110405/13/385ab3c5-a21b-407e-9773-a667d327d0ee.html?41862 http://en.wikipedia.org/wiki/Burrows%E2%80%93Wheeler_transform

系统版本:Ubuntu 10.10

Python 安装

1
sudo apt-get install python

Apache 安装

1
sudo apt-get install apache2

mod_python 模块安装

1
sudo apt-get install libapache2-mod-python

测试 Apache

重启电脑后,在浏览器中输入:http://localhost

出现"It works"说明安装成功

安装 django

下载 Django-1.3.tar.gz

1
2
3
tar xzvf Django-1.3.tar.gz
cd Django-1.3
sudo python setup.py install

测试 django

在 Python 命令行中输入

1
2
import django
print django.get_version()

如果无错误则安装成功。

mysql 安装

1
sudo apt-get install mysql-server mysql-client mysql-admin

python mysql 支持:

1
sudo  apt-get install python-mysqldb

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#-------------------------------------------------------------------------------
# Name: Sort.py
# Purpose:
#
# Author: Killua
# E-mail: [email protected]
# Created: 11-04-2011
# Copyright: (c) Killua 2011
#-------------------------------------------------------------------------------
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys;
import random;
import time;
#冒泡排序
def BubbleSort(array):
for i in range(0,len(array)):
flag = True;
for j in range(i,0,-1):
if array[j] < array[j-1]:
array[j-1], array[j] = array[j], array[j-1];
flag = False;
if flag :
break;
#选择排序
def SelectSort(array):
for i in range(0, len(array)):
pMin = i;
for j in range(i+1, len(array)):
if array[j] < array[pMin]:
pMin = j;
if pMin != i :
array[i], array[pMin] = array[pMin], array[i];
#插入排序
def InsertSort(array):
for i in range(1, len(array)):
for j in range(i,0,-1):
if array[j] < array[j-1]:
array[j],array[j-1] = array[j-1],array[j];
else:
break;
#快速排序
def partition(array, left, right):
mid = (left + right) / 2;
tmp = array[mid];
i = left;
j = right;
while(True):
if i == j:
array[i] = tmp;
return i;
if array[i] > tmp:
array[i] = array[j];
j = j - 1;
break;
i = i + 1;
while(True):
if i == j:
array[i] = tmp;
return i;
if array[j] < tmp:
array[j] = array[i];
i = i - 1;
break;
j = j - 1;
def quickSort(array, left, right):
if left >= right:
pivot = partition(array, left, right);
quickSort(array,left, pivot - 1);
quickSort(array, pivot + 1, right);
def QuickSort(array):
quickSort(array, 0, len(array) - 1);
#希尔排序
def ShellSort(array):
delta = int(len(array) / 2);
while delta > 0:
for i in range(0, delta):
for j in range(i + delta, len(array), delta):
for k in range(j, 0, -delta):
if array[k] < array[k-delta]:
array[k],array[k-delta] = array[k-delta],array[k];
delta = int(delta / 2);
#归并排序
def merge(array, left, right, middle):
i = left;
j = middle + 1;
tmp = [];
while i <= middle and j <= right:
if array[i] < array[j]:
tmp.append(array[i]);
i = i + 1;
else:
tmp.append(array[j]);
j = j + 1;
while i <= middle:
tmp.append(array[i]);
i = i + 1;
while j <= right:
tmp.append(array[j]);
j = j + 1;
array[left : right] = tmp[0 : -1]; #此处不能写成array[left : right] = tmp;
def mergeSort(array, left, right):
if left < right:
middle = int((left + right) / 2);
mergeSort(array, left, middle);
mergeSort(array, middle + 1, right);
merge(array, left, right, middle);
def MergeSort(array):
mergeSort(array, 0, len(array) - 1);
#堆排序
def heapAdjust(array, s, e):
tmp = array[s];
i = s * 2;
while i <= e:
if i + 1 <= e and array[i] < array[i+1]:
i = i + 1;
if array[i] < array[s]:
array[s] = array[i];
i = s;
else:
break;
i = i * 2;
array[s] = tmp;
def HeapSort(array):
for i in (int((len(array) - 1)/2), 0, -1):
heapAdjust(array, i, len(array) - 1);
for i in (len(array) - 1, 0, -1):
array[i], array[0] = array[0], array[i];
heapAdjust(array, 0, i);
#数据生成
def RandomNumGenerate(n):
data = [];
for i in range(0,n):
data.append(random.randint(0,1000));
return data;

【题目描述】 求1+2+…+n 要求不能使用乘除法、for、while、if、else、switch、case 等关键字以及条件判断语句   【题目来源】未知   【题目分析】 一般求1+2+…n,是使用循环或者阶乘,这边加限制条件可以考虑用递归。如果使用递归的话,最重要的就是考虑递归退出条件,由于不能用if语句,而退出必然需要判断,于是使用了bool型表达式,用于终止函数的继续递归。   【代码】

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include<iostream>
using namespace std;
int sum(int n)
{
int res = 0;
int i = 1;
(n > 0)&&(res = sum(n-1) + n);
return res;
}
int main()
{
//Just For Test
int res = sum(100);
cout << res <<endl;
return 0;
}

单击单元格,点"格式"->"条件格式"

设定条件

点"格式"->"字体"->"颜色",选中你喜欢的颜色

点"确定"。

【题目描述】连续整数之和为1000可分为几组

【题目来源】Microsoft

【题目分析】 假设连续的整数之和为从n到m。那么n累加到m的和为(n+m)(m-n+1)/2=1000。
即(n+m)(m-n+1) = 2000。也就是说要将2000分解为一个奇数和偶数的乘积。
将2000因式分解得到2000 = 2^4 * 5^3。
于是可以分为4组
2000 = 16125
2000 = 80
25
2000 = 400 * 5
2000 = 2000 * 1
解二元一次方程可以得到各个n和m。

变更 Internet Explorer 的安全设置:

  1. 开启Internet Explorer

  2. 单击[工具] -> [Internet 选项],单击[高级]标签。

  3. 向下滚动到[安全]部分,确保下面的复选框设置正确:

  • 清除[检查服务器证书吊销]复选框。
  • 选择[使用 SSL 2.0]复选框。
  • 选择[使用 SSL 3.0]复选框。
  1. 单击[确定]关闭该窗口。

1)下载 AjaxControlToolkit http://ajaxcontroltoolkit.codeplex.com/releases/view/11121 建议下载 AjaxControlToolkit-Framework3.5-NoSource.zip

2)将 AjaxControlToolkit 集成到 VS2008 中 打开 VS2008 新建项目->ASP.NET 应用程序。 右键单击工具栏,选择【添加选项卡】并命名为 AJAX Control Toolkit,然

后在该选项卡内部右键选择【选择项】。 选择 AjaxControlToolkit-Framework3.5-NoSource/SampleWebSite/Bin/AjaxControlToolkit.dll ,这个时候应该工具箱

里面会生成相应的控件

3)有如下两种方法

1
<%@ Register Assembly= "AjaxControlToolkit" Namespace = "AjaxControlToolkit" TagPrefix = "ajax" %> 加到aspx里面。

或者 修改 web.config,添加

1
2
3
4
5
6
7
<pages>
<controls>
....
<add tagPrefix="ajax" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit , PublicKeyToken=31BF3856AD364E35"/>
....
</controls>
</pages>

PS:之前一直有问题是在集成完工具后,无法使用控件。个人认为可能是因为下载的那个 AjaxControlToolkit 有问题,后面下载了个 AjaxControlToolkit-Framework3.5,问题解决。

在 IE 里大家都习惯使用

1
text-align: center;

来把整个页面居中,然后在其包含的 DIV 里使用。而在其他的浏览器中(比如说 FireFox 和 Chrome),大家都喜欢用

1
2
margin:0 auto;
height:auto;

让他们的左右空隙都自动来使其居中。