小编Mar*_*ork的帖子

Google商家信息搜索 - 下一页令牌会返回相同的结果

我打电话的时候

https://maps.googleapis.com/maps/api/place/nearbysearch/xml?location=42.9825,-81.254&radius=50000&name=Medical%22Clinic&sensor=false&key=[KEY GOES HERE]
Run Code Online (Sandbox Code Playgroud)

我得到一组结果,其中next_page_token可用

现在,如果我这样做

https://maps.googleapis.com/maps/api/place/nearbysearch/xml?location=42.9825,-81.254&radius=50000&name=Medical%22Clinic&sensor=false&key=[KEY GOES HERE]&next_page_token=[NEXT PAGE TOKEN GOES HERE]
Run Code Online (Sandbox Code Playgroud)

我得到的结果与第一个查询相同,而不是下一组结果

google-places-api

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

双面打印而不失精度

如何在流中打印双精度数,以便在读入时不会丢失精度?

我试过了:

std::stringstream ss;

double v = 0.1 * 0.1;
ss << std::setprecision(std::numeric_limits<T>::digits10) << v << " ";

double u;
ss >> u;
std::cout << "precision " << ((u == v) ? "retained" : "lost") << std::endl;
Run Code Online (Sandbox Code Playgroud)

这不像我预期的那样有效.

但我可以提高精度(这让我感到惊讶,因为我认为数字10是所需的最大值).

ss << std::setprecision(std::numeric_limits<T>::digits10 + 2) << v << " ";
                                                 //    ^^^^^^ +2
Run Code Online (Sandbox Code Playgroud)

它与有效位数有关,前两位不计入(0.01).

那么有人看过准确表示浮点数吗?我需要做的流上究竟是什么神奇的咒语?

经过一些实验:

问题在于我的原始版本.小数点后面的字符串中有无效数字会影响精度.

因此,为了弥补这一点,我们可以使用科学记数法来补偿:

ss << std::scientific
   << std::setprecision(std::numeric_limits<double>::digits10 + 1)
   << v;
Run Code Online (Sandbox Code Playgroud)

这仍然不能解释+1的必要性.

此外,如果我以更高的精度打印出数字,我会得到更高的精度!

std::cout << std::scientific << std::setprecision(std::numeric_limits<double>::digits10) << v << "\n";
std::cout << std::scientific …
Run Code Online (Sandbox Code Playgroud)

c++ floating-point iostream

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

如何在Visual C++ 6.0中使用命令行参数运行控制台应用程序?

我已经得到了编译和执行用Visual C++ 6.0精细,但它会那么只有得到尽可能告诉我缺少的命令行参数的控制台应用程序.进入这些似乎没有任何明显的东西.如何使用命令行参数运行或调试它?

c++ parameters command-line visual-c++-6

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

const string vs. #define

我需要在我的c ++程序中共享一些字符串.我应该使用#define还是const string?谢谢

mystring1.h

#define str1 "str1"
#define str2 "str2"    
Run Code Online (Sandbox Code Playgroud)

或者
mystring2.h

extern const string str1;  
extern const string str2;  
Run Code Online (Sandbox Code Playgroud)

mystring.cpp

const string str1 = "str1";  
const string str2 = "str2";
Run Code Online (Sandbox Code Playgroud)

c++

28
推荐指数
4
解决办法
7万
查看次数

移动分配与标准复制和交换不兼容

测试新的Move Semantics.

我刚刚问了一下移动构造函数我遇到的问题.但是,正如评论中所述,问题实际上是"移动分配"操作符和"标准分配"操作符在使用标准的"复制和交换"惯用法时发生冲突.

这是我正在使用的课程:

#include <string.h>
#include <utility>

class String
{
    int         len;
    char*       data;

    public:
        // Default constructor
        // In Terms of C-String constructor
        String()
            : String("")
        {}

        // Normal constructor that takes a C-String
        String(char const* cString)
            : len(strlen(cString))
            , data(new char[len+1]()) // Allocate and zero memory
        {
            memcpy(data, cString, len);
        }

        // Standard Rule of three
        String(String const& cpy)
            : len(cpy.len)
            , data(new char[len+1]())
        {
            memcpy(data, cpy.data, len);
        }
        String& operator=(String rhs)
        {
            rhs.swap(*this);
            return *this;
        } …
Run Code Online (Sandbox Code Playgroud)

c++ move-semantics copy-and-swap c++11

26
推荐指数
2
解决办法
3995
查看次数

什么是RFC?

我认为有很多人不知道RFC(征求意见).我知道它们在逻辑层面上是什么,但任何人都可以为新开发人员提供良好的描述吗?此外,分享一些如何使用和阅读它们的资源将是很好的.

standards rfc

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

操作系统编译时间

这只是一个普遍的问题 - 我坐着等待一些软件编译(我们在这里使用Incredibuild但仍然需要10/15分钟)它让我想知道,有没有人知道编译Windows XP需要多长时间还是Vista?

我做了一些谷歌搜索,但没有找到任何有用的信息

c c++ operating-system compilation buildfarm

23
推荐指数
3
解决办法
7962
查看次数

fork()Vs Thread的公平比较

我正在讨论fork()Vs thread()相对于任务并行化的相对成本.

我们了解进程Vs Thread之间的基本区别

线:

  • 易于在线程之间进行通信
  • 快速上下文切换.

流程:

  • 容错.
  • 与父母沟通不是真正的问题(打开管道)
  • 与其他子流程的沟通很难

但我们不同意流程Vs线程的启动成本.
因此,为了测试理论,我编写了以下代码.我的问题:这是衡量启动成本的有效测试,还是我遗漏了一些东西.此外,我对每个测试在不同平台上的表现感兴趣.

fork.cpp

#include <boost/lexical_cast.hpp>
#include <vector>
#include <unistd.h>
#include <iostream>
#include <stdlib.h>
#include <time.h>

extern "C" int threadStart(void* threadData)
{
    return 0;
}

int main(int argc,char* argv[])
{
    int threadCount =  boost::lexical_cast<int>(argv[1]);

    std::vector<pid_t>   data(threadCount);
    clock_t                 start   = clock();
    for(int loop=0;loop < threadCount;++loop)
    {
        data[loop]  = fork();
        if (data[looo] == -1)
        {
            std::cout << "Abort\n";
            exit(1);
        }
        if (data[loop] == 0)
        {
            exit(threadStart(NULL));
        }
    }
    clock_t                 middle   = clock(); …
Run Code Online (Sandbox Code Playgroud)

c c++ unix multithreading fork

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

有效的区域设置名称

如何找到有效的区域设置名称?

我目前正在使用MAC OS X.
但是有关其他平台的信息也很有用.

#include <fstream>
#include <iostream>


int main(int argc,char* argv[])
{
    try
    {
        std::wifstream  data;
        data.imbue(std::locale("en_US.UTF-16"));
        data.open("Plop");
    }
    catch(std::exception const& e)
    {
        std::cout << "Exception: " << e.what() << "\n";
        throw;
    }
}

% g++ main.cpp
% ./a.out
Exception: locale::facet::_S_create_c_locale name not valid
Abort
Run Code Online (Sandbox Code Playgroud)

c++ locale utf-16

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

C++ std :: thread的行为

我正在编写一些关于使用Blocking Vs Non-Blocking套接字的文章.我目前正在做一些使用线程和阻塞套接字的实验,并且发现了一些有趣的结果我不知道如何解释.

注意:我知道现代服务器使用带有非阻塞套接字的事件驱动模型来实现更好的性能,而我正朝着这个方向努力,但我想先得到基线数据.

我想我应该问的问题如下.但是,我们将非常感激地接受有关正在发生的事情或我应该实际要求或需要时间/测量/检查的任何意见.

建立

实验在亚马逊上运行:

Instance T    vCPUs     Memory (GiB)   Storage (GB) Network
c3.2xlarge     8          15           2 x 80 SSD     High
Run Code Online (Sandbox Code Playgroud)

我正在使用围攻加载测试服务器:

> wc data.txt
   0       1      32 data.txt
> siege --delay=0.001 --time=1m --concurrent=<concurrency> -H 'Content-Length: 32'  -q '<host>/message POST < data.txt'
Run Code Online (Sandbox Code Playgroud)

服务器:

我有四个版本的代码.哪个是http服务器最基本的基本类型.无论您要求什么,您都会得到相同的响应(这基本上是为了测试吞吐量).

  1. 单螺纹.
  2. 多线程
    然后处理每个接受的请求,std::thread并将其分离.
  3. 多线程与池
    固定大小的线程池std::thread.每个接受的请求都会创建一个作业,该作业将添加到作业队列中以供线程池处理.
  4. 多线程使用std::async()
    每个接受的请求通过`std :: async()执行,将来存储在队列中.辅助线程在丢弃之前等待每个未来完成.

期望

  • 单身:最差表现
    它应该以最高速率达到顶峰.
  • Multi:优于单线程.
    但是当存在大量并发连接时,性能会显着下降.我的实验在8核系统上的255个活动连接(因此255个线程)中最高.
  • 线程池:优于多线程.
    因为我们只创建硬件可以自然支持的线程数量,所以性能不会降低.
  • 异步:类似于线程池.
    虽然我希望这比手写线程池更有效.

实际结果

尝试了实际并发大小.

1, 2, 4, 8, 16, 32, 48, …
Run Code Online (Sandbox Code Playgroud)

c++ sockets multithreading

21
推荐指数
1
解决办法
1106
查看次数