我的服务器托管要下载的大文件(文件可能存储在不同的文件服务器中,但不会存储在 Web 服务器中)。我的目的是让浏览器使用部分下载,以便网络服务器可以获取文件的一小部分而不是整个文件。
但是浏览器(chrome 66)发送的第一个 HTTP GET 请求没有Range. 所以我必须回复Status: 200 OK。
GET http://fakefile/falke HTTP/1.1
Host: fakefile
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Run Code Online (Sandbox Code Playgroud)
HTTP/1.1 200 OK
Date: Tue, 12 Jun 2018 04:58:58 GMT
Content-Type: text/plain
Content-Length: 8205926
Connection: keep-alive
Content-Range: bytes 0-1048575/8205926
Content-Disposition: attachment; filename="301050.11051.input.txt"
Accept-Ranges: bytes
Run Code Online (Sandbox Code Playgroud)
的Content-Length是整个文件的大小,Content-Range是块的大小。
结果:浏览器认为 chunk 是整个文件,不再有 HTTP range …
我想存储一个对象的回调std::function<int(int,int>>。当我使用 lambda 时,它工作得很好。但是当我使用std::bind成员函数时,它编译错误。
有示例错误代码。
#include <functional>
#include <iostream>
using namespace std;
class A
{
public:
void foo()
{
std::function<int(int,int)> callback = std::bind(&A::calc, this);
// std::function<int(int,int)> callback = [this](int a, int b) { return this->calc(a, b); }; // lambda works fine
int r = callback(3, 4);
cout << r << endl;
}
int calc(int b, int c) { return b + c; }
};
int main()
{
A a;
a.foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
In member function …Run Code Online (Sandbox Code Playgroud) 我编写了一个简单的 Makefile 来编译几种类型的源代码。而且效果很好。这个Makefile会找到所有的protobuf源码和C++源码。因此,制作程序将如下所示。
protoc将生成C++源文件*.protog++*.cpp将使用and编译目标文件*.pb.cc(由步骤 1 生成)g++(实际上是ld)将所有对象链接*.obj到单个可执行文件这个 Makefile 示例是:
# Define the protoc generator
PROTOC = protoc
INCLUDE = -I$(SOMEPLACE)
LIB = -lxml2 -lpthread -lz
# The final single outputted executable
OUTPUT = svrkit_adapter_v2
# Define the cpp source code/object result
SOURCES = $(wildcard *.cpp)
OBJECTS=$(SOURCES:.cpp=.o)
# Define the proto's source/generated result/object result
PROTO_SOURCES = $(wildcard *.proto)
PROTO_CPPSRC = …Run Code Online (Sandbox Code Playgroud)