小编Avi*_*ano的帖子

如何在成员函数上使用std :: async?

如何在成员函数上运行std :: async调用?

例:

class Person{
public:
    void sum(int i){
        cout << i << endl;
    }
};

int main(int argc, char **argv) {
    Person person;
    async(&Person::sum,&person,4);
}
Run Code Online (Sandbox Code Playgroud)

我想调用sum async.

Person p;
call async to p.sum(xxx)
Run Code Online (Sandbox Code Playgroud)

我没弄明白我是否能用std :: async做到这一点.不想使用提升.寻找一线异步呼叫方式.

c++ multithreading std c++11

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

是否需要取消分配本地时间的内存?

void log(){
    time_t current = time(0);
    tm *ptm = localtime(&current);
        stuf...
}
Run Code Online (Sandbox Code Playgroud)

只是想确定 - 我需要在方法结束时释放tm指针分配的内存吗?

c++ memory-management

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

eclipse-cdt如何与静态库链接

如果我在链接器/库下设置库或将它们设置在"路径和符号"下,我很困惑.我认为他们是一样的.我对么?

我的问题的任何方式 - 我需要链接静态库,所以我尝试了几件事:

首先尝试我尝试在链接库中添加gtest(这是库)和gtest路径.以这种方式编译和链接正确,但在运行时失败,因为当它试图加载共享库(我想要静态库!)错误是

加载共享库时出错:libgtest.so.0

第二次尝试 - 我尝试在路径和符号中定义它添加到库的完整路径'/root/workspace/gmock/gtest/lib/.lib/libgtest.a'.在这种情况下,我在链接中出错:

g++ -L/root/workspace/gmock/lib/.libs -L/root/workspace/gmock/gtest/lib/.libs -o "playground"  ./src/p.o ./src/playground.o   -lpthread -l/root/workspace/gmock/gtest/lib/.lib/libgtest.a -l/root/workspace/gmock/lib/.lib/libgmock.a
/usr/bin/ld: cannot find -l/root/workspace/gmock/gtest/lib/.lib/libgtest.a
Run Code Online (Sandbox Code Playgroud)

这个帖子 dosnt给出了答案,并没有解释你如何定义与静态vs共享的不同链接.

谢谢

c++ eclipse-cdt

13
推荐指数
1
解决办法
3万
查看次数

如何在应用程序中保持5GB持续内存而不会因GC导致性能不佳?

我的应用程序是地理应用程序.由于需要较短的响应时间,我的每个实例都会将所有点加载到内存中并将它们存储在结构中(四叉树).

每分钟我们加载所有点(与db同步)并将它们放在几个四叉树中.

我们现在有0.5GB积分.我正在努力准备下一级5GB积分.JVM:-XX:NewSize = 6g -Xms20g -Xmx20g -XX:+ UseConcMarkSweepGC -verboseGC -XX:+ PrintGCTimeStamps -XX:+ PrintGCDateStamps -XX:+ PrintGCDetails

实例的启动花费了很多次,因为GC在额外的应用程序中一直受到GC的影响.

我想对大堆的GC有一些参考.

我可以想到几个解决方案:

  1. 仅刷新数据库中的更改,而不是每次都加载所有数据库.缺点 - 在应用的早期阶段仍然会遭受GC,长时间GC.

  2. 关堆解决方案.在四元树中存储点ids并将点存储在堆外.缺点 - 序列化时间,地理结构是少数对象的复杂而不是简单的对象.

  3. 对于每个实例,使用针对此实例的结构和查询创建其他实例.geo实例将保存长寿命对象,并且可以对长寿命对象进行GC调整.缺点 - 复杂性和响应时间.

对于持有少量GIG长寿命对象的应用程序的文章的任何引用都将受到欢迎.

在Ubuntu(亚马逊)上运行.Java 7.Dosnt有内存限制.

问题是每次刷新数据时都会有很长的暂停时间. GC

用于刷新的Gc日志:

2014-06-15T16:32:58.551+0000: 1037.469: [GC2014-06-15T16:32:58.551+0000: 1037.469: [ParNew: 5325855K->259203K(5662336K), 0.0549830 secs] 16711893K->11645244K(20342400K), 0.0551490 secs] [Times: user=0.71 sys=0.00, real=0.05 secs] 

2014-06-15T16:33:02.383+0000: 1041.302: [GC2014-06-15T16:33:02.383+0000: 1041.302: [ParNew: 5292419K->470768K(5662336K), 0.0851740 secs] 16678460K->11856811K(20342400K), 0.0853260 secs] [Times: user=1.09 sys=0.00, real=0.09 secs] 

2014-06-15T16:33:06.114+0000: 1045.033: [GC2014-06-15T16:33:06.114+0000: 1045.033: [ParNew: 5503984K->629120K(5662336K), 1.5475170 secs] 16890027K->12193877K(20342400K), 1.5476760 secs] [Times: …
Run Code Online (Sandbox Code Playgroud)

java performance garbage-collection

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

实现主从

在Ubuntu上运行.程序是用C++编写的.我有2个进程在不同的主机上运行,​​当一个是master而一个是slave(它们之间没有任何优先级,只有一个句柄请求.).只有一个进程可以是主进程和处理请求.两个进程总是向上,如果它们崩溃,有一个看门狗重新启动它们.

主机通过网线连接.

我的计划是要求从一个到另一个保持活着,并且如果奴隶停止从主人那里保持活着,则需要将其状态改为主人.当master再次启动时,它首先等待保持活动状态,以防万一将其设置为master.如果让它设置为奴隶角色.

我很乐意得到您的意见:

如何防止两者同时掌握?这是我的主要关注点.启动和连接失败时,如何同时防止2个主站?

你认为查询保持活着还是保持活着会更好吗?(对于我来说,要求保持活力比推动更好)

任何其他好的建议和陷阱都将受到欢迎.

c++ linux stability master-slave

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

tor - 无法创建单跳电路(单跳隧道)

我按照 toctrl 解释 (http://www.thesprawl.org/research/tor-control-protocol/) 关于如何创建真正快速的单跳电路,我成功创建了一个电路,但我没有成功使用 firefox执行此操作后使用 tor。

我也尝试在“tor汽车电路项目”中使用,但我从tor那里得到错误,他无法连接到节点(每次不同的节点),所以他放弃了。

我也尝试下载 Tortunnel 项目,但我没有成功编译它。

有没有人有这方面的经验?

谢谢

tor

5
推荐指数
1
解决办法
2529
查看次数

如何模拟库调用?

cpp的新手(Java专家)。

我有具有方法sendMail(txt)的第三方库。我不想测试图书馆。我想测试自己的方法,因此,为了做到这一点,我需要模拟库调用。

我自己的方法如下所示:

#include "mailsender.h"

int run(txt){
    analysis(txt);
    ...
    ...
    int status =  sendMail(txt);//sendMail is a 3rd party library call. i need to mock it.its not part of the unit test
    return status;
}
Run Code Online (Sandbox Code Playgroud)

在Java中,mailsender是接口,并且已注入到我的类中,因此在进行测试的情况下,我将注入模拟。在cpp中模拟库调用的良好实践是什么?我可以将第3方库调用包装在一个类中并注入该类,但是我正在寻找更简单且更常见的方法(也许是ifndf)。

我对googlemock很熟悉。googlemock允许我模拟类。我不知道如何在我测试的方法中模拟呼叫。

c++ testing unit-testing

5
推荐指数
1
解决办法
4641
查看次数

如何关闭套接字

在Ubuntu上运行c ++.我用这种方式打开socket:

socket(AF_PACKET, SOCK_RAW, IPPROTO_RAW))
Run Code Online (Sandbox Code Playgroud)

在使用结束时我需要做什么?只要程序运行,就会使用一些套接字,我需要检查一下吗?看看socket是否仍然存在?

c++ sockets

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

添加printf更改sendTo因失败而导致的成功

我知道这听起来很奇怪.printf不应该改变任何东西,但没有它sendTo失败. 该程序是从c代码复制的,并由ubuntux86上的cpp编译器编译. 我有一个发送arp请求的程序.没有这个printf,sendTo失败了.奇怪的是,我做了一个最小的程序,根本不在printf变量中使用(仅在printf中),并且printf工作,没有printf它不起作用(在sendTo上获得无效的参数错误).

附件是一个最小版本,仅用于显示问题:

这个sendTo失败了:

int retVal = sendto(arp_fd, &pkt, sizeof(pkt), 0, (struct sockaddr *) &sa,sizeof(sa));
if (retVal < 0) {
    perror("sendto");
    close(arp_fd);
    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

添加它时,它工作:

struct ifreq ifr;//There is no use except in the printf
printf("MAC address: is %02x:%02x:%02x:%02x:%02x:%02x \n",
        ifr.ifr_hwaddr.sa_data[0]&0xFF,
        ifr.ifr_hwaddr.sa_data[1]&0xFF,
        ifr.ifr_hwaddr.sa_data[2]&0xFF,
        ifr.ifr_hwaddr.sa_data[3]&0xFF,
        ifr.ifr_hwaddr.sa_data[5]&0xFF,
        ifr.ifr_hwaddr.sa_data[4]&0xFF);
Run Code Online (Sandbox Code Playgroud)

完整的计划:

#include "sys/socket.h"
#include "sys/types.h"
#include "stdio.h"
#include "unistd.h"
#include "string.h"
#include "net/if.h"
#include "stdlib.h"
#include "arpa/inet.h"
#include "netinet/in.h"
#include "sys/ioctl.h"
#include "netpacket/packet.h"
#include "net/ethernet.h"

#define ETHER_TYPE_FOR_ARP 0x0806
#define HW_TYPE_FOR_ETHER 0x0001
#define OP_CODE_FOR_ARP_REQ …
Run Code Online (Sandbox Code Playgroud)

c sockets network-programming

5
推荐指数
1
解决办法
441
查看次数

IP数据包在接收方有拖车,但在发送方没有

我有一个简单的c ++代码,它构建SYN数据包并通过原始套接字发送它.我为此分配54个字节(以太网14字节).

发送器上的Wireshark显示54个字节,但接收器上的Wireark显示60个字节.将6个字节作为预告片添加到数据包的末尾.

如果我用scapy发送数据包,也会发生同样的情况.(发送者为54,接收者为60)

你能建议吗?

ip networking tcp wireshark

4
推荐指数
1
解决办法
3221
查看次数