【笔试】超大文件里的数据去重排序;将log中MAC地址提取出来;取出数据库表T里第20行到29行的数据;如何判断一个二叉树B是不是二叉树A的子树?
2014-05-27 19:50
896 查看
将超大文件里的数据按行排序, 并消除重复行
首先将超大文件拆分成小文件,然后对小文件进行去重操作和排序操作每个小文件排序完成后,将每个小文件的第一行拿来排序,然后将最小的存入外部存储空间,再放入拿掉第一个元素的小文件的第二个元素,以此类推
拆分小文件: 假设数据有1G, 内存为10M, 每条数据大小1KB,那么每个文件里的数据有10M/1KB = 1024条, 一共有103个小文件
import time def splitfile(file_path, dest_folder): block_size = 1024 file = open('file_path', 'r') line = file.readline() count_file = 1 temp = [] while line: for i in range(block_size): if i == (block_size -1 ): file_write = open(dest_folder + "\\file_" + str(count_file) + '.txt', 'a+') #a+: 以追加读写方式打开,但具有a模式的特点,即:如果文件不存在,则创建;如果文件存在, #则不清空,同时将文件指针跳到当前文件内容的末尾(EOF处),准备追加写 file_write.writelines(temp) file_write.close() temp = [] print("file" + str(count_file) + "generated at: " + str(ctime())) count_file += 1 else: temp.append(line) file.close() if __name__ == '__main__': print("Started at: " + str(ctime()) + split_file("path1", "path2")
分小文件内部排序 然后对一个,遍历其他,交换小的的到这个里头,一遍后这个就是最小块,保存,换第二块继续
import fileinput file_count = 103 def get_sorted_uni_file(): for file_count in range(1, file_count+1): #每个小文件 small_file = open(dest_folder + "\\file" + str(file_count) + '.txt', 'r') small_file.close() lines = sort(list(set(small_file.readlines()))) #每个小文件排序去重,返回一个list <span style="white-space:pre"> </span>lines = [line + '\n' for line in lines] small_file = open(dest_folder + "\\file" + str(file_count) + '.txt', 'w') small_file.writelines(lines) #将list里的元素逐一写回每个小文件 small_file.close() def sort_whole(): base_file = open(massive_folder+ "\\file"+ '.txt', 'a+') base_lines = base_file.readlines() #遍历每个每个小文件的第一个元素 #分别取出其余文件的最小元素与base_file里的比较大小,将大的那个逐一放回其余文件,小的那个留在base_file里 #得到最小的1024个元素 for file_count in range(1, file_count+1): cmp_file = open(dest_folder + "\\file" + str(i + file_count) + '.txt', 'a+') cmp_lines = cmp_file.readlines() first_line = cmp_lines.pop(0) base_lines.append(first_line).sort() cmp_lines.insert(0, lines[-1]) base_file.writelines(base_lines)
将log中MAC地址提取出来
使用正则表达式,MAC地址的范围是 0000 0000 0001 - FFFF FFFF FFFD, 以” :“ ” - “隔开re.findall( ^([0-9a-fA-F]{2}) ([/\s:-][0-9a-fA-F]{2}{5})$)
^文件开始 $文件结束
[]表达式
{}出现次数
\下一个字符是原义字符或者转义字符
取出数据库表T里第n行到m行的数据
SELECT * FROM T LIMIT n - 1, m-n查询一条记录($id)的下一条记录
SELECT * FROM T id > $id ORDER BY id ASC DLIMT 1
从表pat_info, pat_drug中,统计出drug_cost的和,pat_code,drug_code,并以drug_code排序
SELECT SUM(drug_cost), pat_code, drug_codeFROM pat_info, pat_drug
WHERE pat_info.pat_code = pat_drug.pat_code
GROUP BY pat_drug.pat_code
ORDER BY
pat_drug.drug_cost
如何判断一个二叉树B是不是二叉树A的子树?
比如: 2 / \ 9 8 / \ / 2 3 5 /
6
有个子结构是
9
/ \
2 3
bool HasSubtree(TreeNode* pTreeHead1, TreeNode* pTreeHead2) { if((pTreeHead1 == NULL && pTreeHead2 != NULL) || (pTreeHead1 != NULL && pTreeHead2 == NULL)) return false; if(pTreeHead1 == NULL && pTreeHead2 == NULL) return true; return HasSubtreeCore(pTreeHead1, pTreeHead2); } <pre name="code" class="cpp">bool HasSubtreeCore(TreeNode* pTreeHead1, TreeNode* pTreeHead2) { bool result = false; if(pTreeHead1->m_nValue == pTreeHead2->m_nValue) { result = DoesTree1HaveAllNodesOfTree2(pTreeHead1, pTreeHead2); } if(!result && pTreeHead1->m_pLeft != NULL) result = HasSubtreeCore(pTreeHead1->m_pLeft, pTreeHead2); if(!result && pTreeHead1->m_pRight != NULL) result = HasSubtreeCore(pTreeHead1->m_pRight, pTreeHead2); return result; } bool DoesTree1HaveAllNodesOfTree2(TreeNode* pTreeHead1, TreeNode* pTreeHead2) { if(pTreeHead2 == NULL) return true; if(pTreeHead1 == NULL) return false; if(pTreeHead1->m_nValue != pTreeHead2->m_nValue) return false; return DoesTree1HaveAllNodesOfTree2(pTreeHead1->m_pLeft, pTreeHead2->m_pLeft) && DoesTree1HaveAllNodesOfTree2(pTreeHead1->m_pRight, pTreeHead2->m_pRight); }
相关文章推荐
- jmeter添加http请求、java请求,将返回的json数据提取出来并将结果追加到一个文件
- 如何判断数据库中是否存在一个数据表
- 如何恢复一个只有完好数据文件的数据库?
- 如何实现快速地从超大数据库中提取数据并进行相关的操作
- 数据结构——确定一个二叉树是不是另一个二叉树的子树(2)
- 【JAVA】【SQL】一个demo(将文件中的数据取出来放到数据库中)
- 剑指offer15--判断一个二叉树是不是另一个的子树
- [VB.NET]请问如何将从数据库提出来的一列数据存入一个数组中?
- 数据结构——确定一个二叉树是不是另一个二叉树的子树
- 1为数据库查询的数据中加一排序号,2判断为查询出来的字段赋值
- 将数据从一个数据库烤出来,想放到另一个数据库,由于某些原因不能直接执行sql文件,笨方法这是一个excel函数
- 如何判断一个二叉树是否为另一个二叉树的子树
- 2个二叉树A、B,树的每个节点上都有一个整数值。如何判断A与B是否其中一个是另一个的子树?
- 如何判断一个二叉树是否为另一二叉树子树u
- 如果有一个500G的超大文件,里面都是数值,如何对这些数值排序?
- mini学生管理系统。。。全部代码,4个java文件放在同一个包下面即可。用JDBC调用数据库取出数据。
- 以用户指定的格式复制一个数据文件至数据库表或视图中。
- 判断一个文件是不是 Win32 可执行文件 VB6源代码
- 如何通过ADO,获取一个数据库文件里面所有的表?
- 如何用一个数据库的数据去更新另一个数据库的内容