我正在寻找快速有效的数据存储来构建我的基于PHP的网站.我知道MySql.我可以在服务器根目录而不是MySQL数据库中使用JSON文件吗?如果是的话,最好的方法是什么?
我在最近的一次采访中遇到了这个问题:
你有一个范围内的输入数字流,0 to 60000你有一个函数,它将从该范围获取一个数字,并返回该数字的出现次数,直到那一刻.提供合适的数据结构/算法来实现该系统.
我的解决方案是:
创建一个大小为60001的数组,指向位向量.这些位向量将包含传入数字的计数,并且传入的数字也将用于索引相应数字的数组.随着计数变得太大而不能容纳它们,位向量将动态增加.
因此,如果数字100numbers/sec按此速率进行,则在1百万年内,总数将为= (100*3600*24)*365*1000000 = 3.2*10^15.在最坏的情况下,流中的所有数字都是相同的ceil((log(3.2*10^15) / log 2) )= 52bits,如果数字是均匀分布的(3.2*10^15) / 60001 = 5.33*10^10,那么每个数字的出现次数将需要36 bits每个数字的总数.因此,假设4byte指针我们需要(60001 * 4)/1024 = 234 KB数组的内存,对于具有相同数字的情况,我们需要位向量大小= 52/8 = 7.5 bytes仍然大约234KB.而对于另一种情况,我们需要(60001 * 36 / 8)/1024 = 263.7 KB位向量总计约500KB.因此,用普通的PC和内存来做这件事是非常可行的.
但是访问者说,因为它是无限的流,它最终会溢出并给我提示,如果有很多PC我们怎么能这样做,我们可以在它们之间传递消息或考虑文件系统等.但我一直在想是否这个解决方案当时没有工作,其他人也会这样.不用说,我没有得到这份工作.
如何用更少的内存来解决这个问题?你能想到另一种方法(使用PC网络)吗?
memory algorithm distributed-computing stream data-structures
我试图将我们最近的所有代码从开发分支到发布分支,直到某个变更列表(例如 CL 编号 1234)。我怎样才能做到这一点?
我知道我可以先p4 describe 1234查看时间戳,然后再执行p4 integ //path/to/dev/branch/...@timestamp //path/to/release/branch/...。但有没有更优雅的方法来做到这一点?
为什么Google Precondition库中的check*方法采用Object而不是String?我可以看到该对象被称为String.valueOf()on.我认为这个设计是由于没有代表客户做出任何假设.但我无法考虑一个合理的情况,客户端将使用除String之外的任何东西来调用它.
我猜客户端可以传递一个实现了toString()方法的对象.但是你能给出一个关于如何使用它/你一直在使用它的真实世界的例子吗?
在我的代码中,我试图从文件中提取一些数据.当我尝试在第61行运行我的代码时,我收到此错误.我的代码在这里:
from datetime import date
from math import floor;
from adjset_builder import adjset_builder
def check_and_update(d,start,end,log):
# print start,end;
if start in d:
if end in d[start]:
log.write("{0}-{1}\n".format(start, end))
if d[start][end] == 1:
print "one found"
d[start][end] += 1
def build_dictionary(my_adjset,my_list,factor,outfile,log):
log.write("building dictionary:\n");
window_size = int(floor(len(my_list)*factor));
if window_size<2:
log.write("too small\n")
return;
log.write('Total:{0},windowsize:{1}\n'.format(len(my_list),window_size));
log.write("Window at place: 0,")
for i in xrange(window_size):
j = i+1;
while j<window_size:
check_and_update(my_adjset, my_list[i][1], my_list[j][1],log);
j=j+1
i=1;
while i<=len(my_list)-window_size:
log.write("{0},".format(i))
j=i;
k=i+window_size-1;
while j<k:
check_and_update(my_adjset, my_list[i][1], …Run Code Online (Sandbox Code Playgroud) 我有一个大约500MB的巨大文本文件。我尝试从 python 程序和命令行使用Gzip对其进行存档。但是,在这两种情况下,存档文件的大小约为240MB,而在 Windows 中使用WinRAR存档时,存档文件的大小约为450KB。有什么我在这里想念的吗?为什么会有如此大的差异,我该怎么做才能达到类似的压缩水平?
我也用 Python 标记了它,因为任何与此相关的 Python 代码都会非常有帮助。
这是文件的前 3 行:
$ head 100.txt -n 3
31731610:22783120;
22783120:
45476057:39683372;5879272;54702019;58780534;30705698;60087296;98422023;55173626;5607459;843581;11846946;97676518;46819398;60044103;48496022;35228829;6594795;43867901;66416757;81235384;42557439;40435884;60586505;65993069;76377254;82877796;94397118;39141041;2725176;56097923;4290013;26546278;18501064;27470542;60289066;43986553;67745714;16358528;63833235;92738288;77291467;54053846;93392935;10376621;15432256;96550938;25648200;10411060;3053129;54530514;97316324;
Run Code Online (Sandbox Code Playgroud)