我在Python中有一个字符串。我用计算该字符串的SHA1哈希hashlib。我将其转换为十六进制表示形式,并使用最后16个字符作为标识符:
hash_str = "foobarbaz?????????????..."
hash_obj = hashlib.sha1(hash_str, encode('utf-8'))
hash_id = hash_obj.hexdigest()[:16]
Run Code Online (Sandbox Code Playgroud)
我的目标是提供一个合理的长度并且不太可能hash_id针对不同的hash_str输入产生相同的值的标识符。
如果SHA1发生碰撞的概率为1 /(2 ^ 160)或1 /(16 ^ 40),则如果我采用十六进制表示的最后十六个字符,则发生碰撞的概率仅为1 /(16 ^ 16)?还是字节(或其等效的十六进制)分布不均?
我正在尝试为Amazon S3 Web服务构建一个可用的加密签名,使用Objective C编写连接库.
我已经遇到了使用ObjC代码的HMAC SHA-1摘要问题,因此我将其放在一边,查看现有的,正在运行的Perl代码,以尝试解决摘要创建问题.
我正在测试包的s3ls命令中的HMAC SHA-1摘要输出Net::Amazon::S3,并将其与_encode我提取并放入其自己的perl脚本的子例程进行比较:
#!/usr/bin/perl -w
use MIME::Base64 qw(encode_base64);
use Digest::HMAC_SHA1;
use String::Escape qw( printable unprintable );
sub _ascii_to_hex {
(my $str = shift) =~ s/(.|\n)/sprintf("%02lx", ord $1)/eg;
return $str;
}
sub _encode {
my ( $aws_secret_access_key, $str ) = @_;
print "secret key hex: "._ascii_to_hex($aws_secret_access_key)."\n";
my $hmac = Digest::HMAC_SHA1->new($aws_secret_access_key);
$hmac->add($str);
my $digest = $hmac->digest;
print "cleartext hex: "._ascii_to_hex($str)."\n";
print "digest hex: "._ascii_to_hex($digest)."\n";
my $b64 = encode_base64( $digest, '' ); …Run Code Online (Sandbox Code Playgroud) 我正在使用SWT小部件编写Java应用程序.我想在某个事件发生时更新某些小部件的状态(例如,更新数据模型的状态).
Java中是否存在类似于Cocoa的NSNotificationCenter的东西,我可以在其中注册一个对象来监听通知事件并对它们做出响应,以及让其他对象"触发"通知?
我正在重载委托方法-tableView:heightForRowAtIndexPath:并使用-sizeWithFont:constrainedToSize:以编程方式设置单元格的高度,基于该单元格中的文本:
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
switch (indexPath.section) {
case(kAboutViewOverviewSection): {
switch (indexPath.row) {
case(kAboutViewOverviewSectionRow): {
NSString *text = NSLocalizedString(@"kAboutViewOverviewSectionFieldText", @"");
CGSize s = [text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(280, 500)];
return s.height + 13;
}
default: {
break;
}
}
break;
}
default: {
break;
}
}
return 44.0;
}
Run Code Online (Sandbox Code Playgroud)
这在第一次绘制表时有效.但是,当我更改设备的方向时,从纵向到横向,单元格高度不会改变.
我尝试-shouldAutorotateToInterfaceOrientation:在表视图控制器中覆盖该方法:
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
[self.tableView reloadData];
return YES;
}
Run Code Online (Sandbox Code Playgroud)
这应该重新加载表数据并且(可能)重绘表格单元格视图.但这没有任何影响.
当设备旋转时,有没有办法强制单元格以新的高度重绘?
编辑:我尝试了以下,没有效果:
- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
[self.tableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)
以下是纵向应用程序的外观: …
我有兴趣在我的应用程序中使用SBUsesNetwork和UIRequiresPersistentWiFi键; 但是,我想只在使用某组视图控制器时启用它们.有没有办法在应用程序运行时以编程方式翻转这些键值?
我有以下锚标记,其中包含动态生成arg1,...,arg5的JavaScript函数参数,该参数foo()在网站端运行.整个页面中有几个锚标记,具有唯一id值和argN值:
<a href="#" id="foo1234567890" onclick="javascript:foo(arg1,arg2,arg3,arg4,arg5);return false;" target="_self" title="foobarbaz"> blah </a>
Run Code Online (Sandbox Code Playgroud)
我想foo()通过循环遍历此元素的所有匹配,搜索参数,并将这些参数传递给Greasemonkey的unsafeWindow.function(args)调用,以编程方式触发函数.
这是我到目前为止写的Greasemonkey脚本:
function removeAllProperties() {
var xpath = "//A[@title='foobarbaz']";
var actionNodes = document.evaluate(
xpath,
document,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null
);
var total = actionNodes.snapshotLength;
for (var i=0; i < total; i++) {
var candidate = actionNodes.snapshotItem(i);
//alert(candidate.nodeName);
if (candidate.nodeName === "A") {
var onclick_value = candidate.getAttribute('onclick');
var needle = /javascript:foo\((.*)\);return false\;/;
onclick_value.match(needle);
//alert(onclick_value);
//alert(RegExp.$1);
var script_args = RegExp.$1;
if …Run Code Online (Sandbox Code Playgroud) javascript greasemonkey google-chrome google-chrome-extension
我有由几个元素组成的stl向量.我需要迭代这个向量并删除符合某些条件的元素.所以我写了这段代码
for (int j = imageDataVector.size()-1; j >= 0; j--) {
if(imageDataVector[i] < threshold)
imageDataVector.erase(imageDataVector.end() - j);
}
Run Code Online (Sandbox Code Playgroud)
此代码几乎适用于所有情况,但是如果向量的所有元素都符合条件,则会出现错误:
vector erase iterator outside the range
Run Code Online (Sandbox Code Playgroud)
如果我在向量中只剩下一个元素,则会发生此错误.我做错了什么?
我有以下字符串,需要霍夫曼编码并将其有效地存储到位数组中:
>>> print sequence
GTCAGGACAAGAAAGACAANTCCAATTNACATTATG|
Run Code Online (Sandbox Code Playgroud)
中的符号频率为sequence:
>>> print freqTuples
[(0.40540540540540543, 'A'), (0.1891891891891892, 'T'), (0.16216216216216217, 'C'), (0.16216216216216217, 'G'), (0.05405405405405406, 'N'), (0.02702702702702703, '|')]`
Run Code Online (Sandbox Code Playgroud)
我将其翻译成霍夫曼代码字典:
>>> print codeDict
{'A': '1', 'C': '010', 'G': '001', 'N': '0110', 'T': '000', '|': '0111'}
Run Code Online (Sandbox Code Playgroud)
然后,我使用Python bitstring包将字符串逐个字符地转换为BitArray该类的实例,我称之为bitArray,该实例包含每个用其各自的霍夫曼代码编码的字符的位:
>>> print bitArray.bin
0b001000010100100110101100111100110101101100000100101100000001101010100000010000010111
Run Code Online (Sandbox Code Playgroud)
这是位数组,以字节为单位:
>>> print bitArray.tobytes()
!I\254\363[^D\260^Z\240Ap
Run Code Online (Sandbox Code Playgroud)
我必须使用tobytes()而不是bytes,因为我生成的位数组不能平均分为8位段。
当我计算表示的存储效率BitArray(位数组和输入字符串的大小之比)时,与未对输入字符串进行未编码的情况相比,我得到的性能更差:
>>> sys.getsizeof(bitArray.tobytes()) / float(len(sequence))
1.2972972973
Run Code Online (Sandbox Code Playgroud)
我是否正确测量存储效率?(如果我对更长的输入字符串进行编码,则该比率会提高,但似乎接近0.28的渐近极限。我想确认这是否是正确的度量方法。)
编辑
以下两种方法得出不同的答案:
>>> print len(bitArray.tobytes()) / float(len(mergedSequence))
0.297297297297
>>> print bitArray.len …Run Code Online (Sandbox Code Playgroud) 我需要使用C访问大于2gb的文件.在程序的一次运行期间,将从文件中读取可变数量的字节并保存下一个位置的位置.在程序的下一次运行期间,读取文件位置并从该位置开始读取多个字节.
复杂的是偶尔可以通过将文件复制到新文件来"压缩"文件,减少已经读取的任何字节(我认为复制是唯一的方法).以这种方式删除的字节数也将被保存.
我需要知道文件从原始开始的当前位置,以便与另一个文件同步.这应该很简单,因为它只是(current_offset + deleted_bytes).
不容易的原因是fseek只使用long int索引将文件限制为2gb,而fsetpos使用fpos_t结构作为位置索引,这不是数字,不能来回转换为1.我不知道如何使用long long int索引进行文件定位,这将是理想的解决方案.
我该怎么办?
我在互联网上找到了这个代码,它将正态分布与不同的学生分布进行比较:
x <- seq(-4, 4, length=100)
hx <- dnorm(x)
degf <- c(1, 3, 8, 30)
colors <- c("red", "blue", "darkgreen", "gold", "black")
labels <- c("df=1", "df=3", "df=8", "df=30", "normal")
plot(x, hx, type="l", lty=2, xlab="x value",
ylab="Density", main="Comparison of t Distributions")
for (i in 1:4){
lines(x, dt(x,degf[i]), lwd=2, col=colors[i])
}
Run Code Online (Sandbox Code Playgroud)
我想适应我的情况,我希望将我的数据与正态分布进行比较.这是我的数据:
library(quantmod)
getSymbols("^NDX",src="yahoo", from='1997-6-01', to='2012-6-01')
daily<- allReturns(NDX) [,c('daily')]
dailySerieTemporel<-ts(data=daily)
ss<-na.omit(dailySerieTemporel)
Run Code Online (Sandbox Code Playgroud)
目标是看我的数据是否正常......有人可以帮我解决这个问题吗?非常感谢,我真的很感激!
iphone ×2
sha1 ×2
bitarray ×1
bitstring ×1
c ×1
c++ ×1
cocoa ×1
compression ×1
digest ×1
encryption ×1
events ×1
finance ×1
greasemonkey ×1
hash ×1
hmac ×1
huffman-code ×1
info.plist ×1
iterator ×1
java ×1
javascript ×1
objective-c ×1
perl ×1
probability ×1
python ×1
r ×1
reachability ×1
statistics ×1
stl ×1
uitableview ×1
vector ×1
windows ×1