我有一个复杂的c ++代码.
这是一个使用http://althenia.net/fcgicc的FastCGI程序
当我问它一个looooong url时,我得到了
*** stack smashing detected ***: ./tileserve terminated
Erreur de segmentation
Run Code Online (Sandbox Code Playgroud)
对于现实生活,这不是问题,因为我从来没有使用这么长的网址,但这意味着任何人都可以终止我的服务器......我不喜欢这样.
是否有工具(以及如何使用它?)来找出问题出现在哪里?
好的解决了.
我在做
int len;
char uri[200];
len = strlen(request.params[std::string("REQUEST_URI")].c_str());
printf("%d\n", len);
if (len > 200) return 1;
strcpy(uri, request.params[std::string("REQUEST_URI")].c_str());
Run Code Online (Sandbox Code Playgroud)
对于len测试看起来200太高了.它实际上在194失败了.
所以我做了 :
if (len > 190) return 1;
Run Code Online (Sandbox Code Playgroud)
现在,没关系.
我只是花了几个小时试图实现一些物理计算.
然后,我发现一切都是错的,只是因为Math.log不是关于log10而是ln.
我期待Math.ln() = ln和Math.log() = log10.但绝对不是Math.log() = ln!!!
为什么他们这么混乱?
我想在 NodeJS 应用程序中使用来自 JKS 密钥库的证书。
var fs = require('fs');
var https = require('https');
var options = {
hostname: 'XXX.com',
port: 4443,
path: '/endpoint',
method: 'GET',
key: fs.readFileSync('private.pem'),
cert: fs.readFileSync('public.pem'),
};
var req = https.request(options, function(res) {
res.on('data', function(data) {
process.stdout.write(data);
});
});
req.end();
req.on('error', function(e) {
console.error(e);
});
Run Code Online (Sandbox Code Playgroud)
如何将 JKS 转换为 PEM?谢谢
我有巨大的气象文件.太大了适合公羊.
我需要执行大量并发随机读取.所以,我认为SSD + mmap可以提高性能.
但是什么是并发mmap读取?他们应该如何组织?

我有一些麻烦试图将char复制到char ...
这是args []的定义:
char* args[6];
if (1 == ParseQuery(request, &args[0])) ....
#note : args[ARG_DATE] = "201204090600"
Run Code Online (Sandbox Code Playgroud)
这是定义:
struct date {
char a[4];
char m[2];
char j[2];
char h[4];
};
date d;
Run Code Online (Sandbox Code Playgroud)
这就是我想要做的:
int TileServe::ParseQuery(FastCGIRequest& request, char** args) {
for (int i=0; i<4; i++) {
d.a[i] = args[ARG_DATE][i];
d.h[i] = args[ARG_DATE][i+8];
}
for (int i=0; i<2; i++) {
d.m[i] = args[ARG_DATE][i+4];
d.j[i] = args[ARG_DATE][i+6];
}
strcat(filename, "/");
strcat(filename, d.a);
strcat(filename, "/");
strcat(filename, d.m);
...
printf("%s\n", filename);
Run Code Online (Sandbox Code Playgroud)
我明白了:
./data/alpes/201204090600/04090600/090600/0600/alpes_201204090600.nc
Run Code Online (Sandbox Code Playgroud)
我期待着 : …
c++ ×2
char ×1
concurrency ×1
https ×1
javascript ×1
jks ×1
math ×1
mmap ×1
node.js ×1
pem ×1
performance ×1
stack-smash ×1