我需要使用原始套接字的一些IPv4 ICMP处理代码的Internet Checksum功能(一个补码校验和),我偶然发现了我无法在64位Intel处理器上解释的行为(使用gcc 4.8.2).我想知道是否有人可以对此有所了解.
我使用32位累加器实现了第一个校验和功能,并执行了16位和.然后我使用64位累加器和32位求和实现了相同的功能,认为更少的总和将导致更快的执行.结果是第一个实现的运行速度是第二个实现的两倍(使用O3优化).我简直无法弄清楚为什么......
下面的代码实际上并没有执行准确的校验和(我简化了它),但说明了问题.两者都编译为在64位本机平台上运行64位(LP64:短16位,int 32位,长64位,指针64位).
32位累加器和16位和
unsigned short
cksum_16_le(unsigned char* data, size_t size)
{
unsigned short word;
unsigned int sum = 0;
unsigned int i;
for(i = 0; i < size - 1; i += 2)
sum += *((unsigned short*) (data + i));
sum = (sum & 0xffff) + (sum >> 16);
sum = (sum & 0xffff) + (sum >> 16);
return ~sum;
}
Run Code Online (Sandbox Code Playgroud)在相同的10k数据上调用50,000个函数:~1.1秒.
64位累加器和32位和
unsigned short
cksum_32_le(unsigned char* data, size_t size)
{
unsigned long word;
unsigned …Run Code Online (Sandbox Code Playgroud)我在Mac OS X Yosemite上安装了Cloud Foundry CLI软件包.当我输入cf命令时,从终端界面,我得到以下错误
FAILED
Error read/writing config: open /Users/viyer/.cf/config.json: permission denied
Run Code Online (Sandbox Code Playgroud)
我该如何解决?我找不到文件config.json.
假设我有一个my_df带有列的数据框'brand',我想放弃品牌所在的任何行toyota或者bmw.
我认为以下会这样做:
my_regex = re.compile('^(bmw$|toyota$).*$')
my_function = lambda x: my_regex.match(x.lower())
my_df[~df['brand'].apply(my_function)]
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
ValueError: cannot index with vector containing NA / NaN values
Run Code Online (Sandbox Code Playgroud)
为什么?如何使用正则表达式过滤我的DataFrame?
我在 pg_log 文件中出现了数千次以下错误。如何解决它们。
index "meeting_pkey" contains unexpected zero page at block 410.Please REINDEX it.
index "faultevent_props_pkey" contains unexpected zero page at block 37290.
index "faultevent_pkey" contains unexpected zero page at block 1704
Run Code Online (Sandbox Code Playgroud) 我正在学习缓冲区溢出漏洞利用.我写了这样一个易受攻击的程序:
#include <stdio.h>
#include <string.h>
main(int argc, char *argv[])
{
char buffer[80];
strcpy(buffer, argv[1]);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
很简单的程序.想法是覆盖用于返回libc函数的返回地址start_main.一切都很顺利,我使用GDB来验证返回地址是否被指向shellcode内存中的正确地址覆盖.
但是,当我想要获得一个shell时,会出现:
Program received signal SIGSEGV, Segmentation fault. 0xbffff178 in ?? ()
0xbffff178是返回覆盖的返回地址,它确实指向shellcode我很确定.有帮助吗?
我在linux虚拟机上,我正在尝试运行sudo synaptic &应该在后台启动synaptic 的命令.但是,它不会要求输入密码,程序似乎也没有启动.我之前没有输入密码,因为运行任何其他命令而没有&在最后请求我的密码.问题是什么?
我想找到100内的所有素数.这是我的代码.
// Find all the prime number within 100.
#include<stdio.h>
#include<math.h>
#include<stdbool.h>
int main() {
int i,n;
int j = 0;
for ( n = 2; n <= 100; ++n) {
bool isPrime = true;
for (i = 2; i <= sqrt(float(n)); ++i) {
if(n % i == 0) {
isPrime = false;
break;
}
}
if(isPrime) {
++j;
printf("%d is a prime number\n",n);
}
}
printf("The total number of prime number within 100 is %d\n",j);
return 0;
Run Code Online (Sandbox Code Playgroud)
}
编译时,有一个错误. …
不会super(type, object)和super(supertype, type)所有人都返回超类的对象type(supertype)吗?有什么不同?