小编ogg*_*ter的帖子

TCP套接字没有连接超时

我打开一个TCP套接字并将其连接到网络上其他位置的另一个套接字.然后,我可以成功发送和接收数据.我有一个计时器,每秒钟向套接字发送一些东西.

然后,我通过强行断开连接(在这种情况下拉出以太网电缆)粗暴地中断连接.我的套接字仍然报告它每秒都成功写出数据.这持续大约1小时30分钟,最终给出写入错误.

什么指定套接字最终接受另一端的超时消失了?它是操作系统(Ubuntu 11.04),它来自TCP/IP规范,还是套接字配置选项?

networking network-programming timeout tcp

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

用于集成测试的AWS S3本地服务器

我有一些使用AWS S3上传和下载文件的代码(使用Java AWS SDK).我希望能够为它编写一些测试,我想知道是否有人有任何好的选择.理想情况下,我想要一个本地运行的轻量级S3服务器,可以快速启动并且不需要系统配置(测试需要由Jenkins运行).

到目前为止我看过的一些选项:

  1. FakeS3 - 几乎就是我正在寻找的东西,但是,在使用Java AWS SDK时,您必须编辑/ etc/hosts文件并重新启动网络,而不是我在Jenkins中可以做的事情.此外,当尝试它时,似乎有一个错误,创建日期字段格式错误,这使我的客户端抛出异常,这并没有激发我对项目的信心.
  2. Ceph - 实现S3 API但需要几分钟才能完成安装

java amazon-s3 amazon-web-services jenkins

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

DLL中的Qt GUI环境(VST插件)

我想使用Qt GUI库作为VST插件的用户界面.VST插件是Windows上的DLL.宿主应用程序调用DLL上的各种函数,包括类似的东西openGUI().

我想知道如何从DLL使用Qt GUI; 我做了一些研究来研究可能的选择,但我不完全确定这些限制.

主要问题是在哪里创建QApplication对象并对其进行调用exec()(这是一个在应用程序退出之前不会返回的函数).

我已经看过这篇文章中给出的解决方案了,但是经过进一步的阅读,看起来这个解决方案在Mac OS X上不起作用,因为Cocoa对GUI可以运行的特定线程更具限制性.这真是一个黑客攻击.

我也看过这个解决方案,但依赖于它,QMfcApp并且QWinWindow它似乎不再是Qt库的一部分.

这是我的DLL生成一个新的应用程序本身的唯一方法吗?据推测,我可以通过调用QProcess并使用一些共享内存在GUI应用程序和我的VST DLL之间共享来启动一个?有没有人遇到过这类问题?我是否会走这条路,或者有什么我还没想到的?

更新

经过进一步研究,我遇到了QAbstractEventDispatcher全班同学.我看过这篇文章似乎说可以QApplication::processEvents()从你自己(我的插件的主机)调用事件循环而不是调用QApplication::exec().有没有人试过这样做?

c++ dll user-interface qt vst

17
推荐指数
1
解决办法
5034
查看次数

Jersey 2过滤器在客户端请求过滤器中使用容器请求上下文

我有一个Jersey 2 Web服务,在收到请求后,向另一个Web服务发出另一个请求,以便形成对原始请求的响应.因此,当客户端"A"向我的网络服务"B"发出请求时,"B"向"C"发出请求,作为形成对"A"的响应的一部分.

A-> B-> C ^

我想为Jersey 2 Web服务实现一个基本上执行此操作的过滤器:

  • 客户端"A"将发送一个请求,其标题为"My-Header:first"

  • 当我的Web服务"B"然后发出客户端请求"C"时,它应该附加到该头部,因此它发送一个带有此标题"My-Header:first,second"的请求.

我想将其作为过滤器实现,因此我的所有资源都不必复制附加到请求标头的逻辑.

但是,在Jersey 2中,您可以获得以下4个过滤器:

  • ContainerRequestFilter - 过滤/修改入站请求
  • ContainerResponseFilter - 过滤/修改出站响应
  • ClientRequestFilter - 过滤/修改出站请求
  • ClientResponseFilter - 过滤/修改入站响应

泽西过滤器图

我需要使用来自入站请求的标头,修改它,然后使用它作为出站请求,所以基本上我需要的东西既是ContainerRequestFilter又是ClientRequestFilter.我不认为在同一个过滤器中实现两者都行不通,因为你不知道哪个客户端请求映射到哪个容器请求,或者你呢?

java web-services jersey jersey-client jersey-2.0

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

找到从3d点到线段的距离

我有一个3d点P和一个由A和B定义的线段(A是线段的起点,B是结束点).

我想计算P和AB线之间的最短距离.

计算点到无限线的距离很容易,因为它们是Wolfram Mathworld的解决方案,我已经实现了这个,但我需要为有限长度的线做这个.

经过大量的考察,我还没有在3d中找到一个可靠的解决方案.

我已经实现了算法来计算C++中的点积,交叉积,大小等,其结构包含浮点数x,y和z.

几乎所有语言中的伪代码,链接或代码都很棒.

math 3d vector

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

使用Qt的项目中的版本号

整个项目都需要版本号; 在安装程序,代码,工具链等.我鄙视重复.我希望我的版本号存储在一个中心权威位置.

我正在使用C/C++并在各种平台上使用Qt.在Qt中,qmake项目指定版本号,如:

VERSION = 1.2.3
Run Code Online (Sandbox Code Playgroud)

在代码中我使用像Version.h这样的标题:

#define VERSION_MAJ 1
#define VERSION_MIN 2
#define VERSION_REV 3
#define VERSION_STRING \"VERSION_MAJ\" "." \"VERSION_MIN\" "." \"VERSION_REV\"
Run Code Online (Sandbox Code Playgroud)

我的安装程序工具链支持C预处理,因此我可以使用Version.h中指定的相同版本.但是,我不知道如何让qmake使用相同的版本号.我以为我可以预处理专业文件,但这不起作用,因为#字符意味着在pro文件中的注释,C预处理器将会失败.

有人知道保持我的版本号集中的好方法吗?

qt build-process preprocessor version

9
推荐指数
2
解决办法
6330
查看次数

为传递给JavaScript中的函数的对象分配新值

我是JavaScript的新手(虽然在C++方面经验丰富),今天我写了这样的东西:

function foo(bar) {
    bar = "something else";
}
var x = "blah";
foo(x);
alert(x); // Alerts with "blah", but I was expecting it to alert with "something else"
Run Code Online (Sandbox Code Playgroud)

这让我很困惑,因为我一直在观看道格拉斯·克罗克福德的一些JavaScript视频,并记得他说像"JavaScript总是通过引用传递".

我可以解释这种情况的方式是JavaScript传递对象的引用,但这些引用被复制.这意味着在foo函数中,我正在分配一个新的引用bar,然后超出范围,留下x未触及的引用.基本上我们从:

x   ---->"blah"
Run Code Online (Sandbox Code Playgroud)

然后在foo调用时,bar引用相同的数据:

x   ---->"blah"
bar -----^
Run Code Online (Sandbox Code Playgroud)

因此,当指定"其他东西"时bar,会发生这种情况:

x   ---->"blah"
bar ---->"something else"
Run Code Online (Sandbox Code Playgroud)

这是JavaScript中实际发生的事情的准确模型,还是我错过了其他什么?

作为一个额外的问题,有没有办法说,改变这个变量引用的数据?这是经常出现的情况,还是可以轻易避免?

编辑:

道格拉斯·克罗克福德在我看过视频中说"对象总是通过引用传递它们不是通过值传递",这是正确的,但函数的参数是通过值传递的,它只是通过值传递引用.

javascript pass-by-reference pass-by-value

9
推荐指数
2
解决办法
2702
查看次数

libarchive - 提取到指定的目录

我有一个tar文件,我想用libarchive提取到一个特定的目录.如何将libarchive提取到我想要的任何目录?目前,它总是提取到我的程序的工作目录中.我查看了这个答案,但所有这一切都改变了归档中归档条目的位置,即它仍然只是在不同的子目录中提取到我的程序的工作目录中.

c++ archive

8
推荐指数
2
解决办法
6564
查看次数

Qt部署到远程Linux主机 - 如何指定要部署的文件?

我从QtGui tempate创建了一个新的Qt项目,我想将它部署到远程设备.如何指定我希望部署可执行文件?在运行设置中,我只是被告知"不知道要运行什么".

我需要在我的专业文件中指定一些内容吗?

在此输入图像描述

qt

8
推荐指数
1
解决办法
3958
查看次数

在没有RTTI的情况下比较C++中的多态基类型

我有一些基本类型的Shape指针.我想使用==运算符比较这些对象.如果对象具有不同的派生类型,则==运算符显然应返回false.如果它们具有相同的派生类型,则应该比较派生类型的成员.

我已经读过,使用C++ RTTI是不好的做法,只能在罕见和必要的情况下使用.据我所知,如果不使用RTTI,通常无法解决这个问题.每个重载的==运算符都必须检查typeid,如果它们相同,则执行dynamic_cast并比较成员.这似乎是一种常见的需求.这个问题有某种成语吗?

#include <iostream>
using namespace std;

class Shape {
  public:
    Shape() {}
    virtual ~Shape() {}
    virtual void draw() = 0;

    virtual bool operator == (const Shape &Other) const = 0;
};

class Circle : public Shape {
  public:
    Circle() {}
    virtual ~Circle() {}
    virtual void draw() { cout << "Circle"; }

    virtual bool operator == (const Shape &Other) const {
      // If Shape is a Circle then compare radii
    }

  private:
    int radius;
};

class Rectangle : public …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism

7
推荐指数
1
解决办法
4907
查看次数