小编p00*_*a00的帖子

分块编码和内容长度标头

是否可以设置内容长度标头并使用分块传输编码?这样做是否解决了在使用chunked时不知道客户端响应长度的问题?

我正在考虑的情况是当你有一个大文件要传输时,确定它的大小没有问题,但它太大而无法完全缓冲.(如果你没有使用chunked,那么整个响应必须首先得到缓冲?对吗?)

谢谢.

encoding http chunked transfer

23
推荐指数
2
解决办法
2万
查看次数

Linux磁盘文件AIO

根据本教程,可以使用Linux上的AIO轻松实现异步磁盘文件io,至少从编程/ api的角度来看.但是在本教程之前和之后,我已经阅读了很多帖子和文章,这些要么无法完成,要么应该使用带有补丁和其他许多问题的libevent.另一件事是我应该等待信号的循环,但基于本教程,我可以使用回调机制,这显然使AIO更容易使用.

现在,我不是一个Linux程序员甚至由一个长镜头我只是想找到一种简单的方式来支持Linux上的异步磁盘文件IO,学习它,并把它添加到一个异步磁盘IO库,我需要一个个人项目.目前我在非Windows平台上的Windows和io工作线程上使用重叠io.由于mutithreaded解决方案可能很棘手,我想在Linux上用AIO替换它.

那么,本教程中描述的AIO有什么问题?是性能吗?是否可以使用AIO对操作进行限制?

ps我不关心代码是否无法移植到其他POSIX兼容平台,只要它适用于主要的Linux发行版.而我所关心的只是常规磁盘文件io.

谢谢.

linux aio

9
推荐指数
1
解决办法
8157
查看次数

Play 2.2中的慢块响应

在我的基于Play框架的Web应用程序中,用户可以以csv或json格式下载不同数据库表的所有行.表格相对较大(100k +行),我试图使用Play 2.2中的分块来回传结果.

但问题是虽然println语句显示行被写入Chunks.Out对象,但它们不会显示在客户端!如果我限制发回的行将会起作用,但是如果我尝试发送所有行并导致超时或服务器内存不足,那么它在开始时也会有很大的延迟.

我使用Ebean ORM并且表被索引并且从psql查询不需要花费太多时间.有谁知道可能是什么问题?

我非常感谢你的帮助!

以下是其中一个控制器的代码:

@SecureSocial.UserAwareAction
public static Result showEpex() {

    User user = getUser();
    if(user == null || user.getRole() == null)
        return ok(views.html.profile.render(user, Application.NOT_CONFIRMED_MSG));

    DynamicForm form = DynamicForm.form().bindFromRequest();
    final UserRequest req = UserRequest.getRequest(form);

    if(req.getFormat().equalsIgnoreCase("html")) {
        Page<EpexEntry> page = EpexEntry.page(req.getStart(), req.getFinish(), req.getPage());
        return ok(views.html.epex.render(page, req));
    }

    // otherwise chunk result and send back
    final ResultStreamer<EpexEntry> streamer = new ResultStreamer<EpexEntry>();
    Chunks<String> chunks = new StringChunks() {
            @Override
            public void onReady(play.mvc.Results.Chunks.Out<String> out) {

                Page<EpexEntry> page = EpexEntry.page(req.getStart(), req.getFinish(), 0); …
Run Code Online (Sandbox Code Playgroud)

java chunking ebean playframework-2.0

6
推荐指数
1
解决办法
1608
查看次数

强制cmake将共享库与静态库链接,而不提及特定目标

我正在尝试创建一个与静态版本的librt链接的共享库.目前我这样做:

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
ADD_LIBRARY(memtrace SHARED memtrace.c)
ADD_LIBRARY(lib_real_time STATIC IMPORTED)
SET_TARGET_PROPERTIES(lib_real_time PROPERTIES IMPORTED_LOCATION /usr/lib/x86_64-linux-gnu/librt.a)
TARGET_LINK_LIBRARIES(memtrace lib_real_time)
Run Code Online (Sandbox Code Playgroud)

但我不想指定这样的路径.由于librt总是在标准路径中,我宁愿让cmake找到它.就像在gcc中一样,我只会指定-lrt.当我尝试使用此cmake文件执行此操作时:

CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
ADD_LIBRARY(memtrace SHARED memtrace.c)
TARGET_LINK_LIBRARIES(memtrace rt)
Run Code Online (Sandbox Code Playgroud)

它将memtrace链接到librt的动态版本,这不是我想要的!

如何在不提及完整路径的情况下链接librt的静态版本?

cmake static-linking

2
推荐指数
1
解决办法
8234
查看次数