草庐IT

asin_one_time_only

全部标签

C++ 需要一种很好的技术来播种不使用 time() 的 rand()

我有一个启动许多客户端进程的bash脚本。这些是我用来测试多人游戏的AI游戏玩家,大约有400个连接。我遇到的问题是AI播放器使用srand(time(nullptr));但是如果所有玩家都大约在同一时间开始,他们将经常收到相同的time()值,这意味着他们都在同一个rand()序列上。部分测试过程是为了确保如果大量客户端几乎同时尝试连接,服务器可以处理。我考虑过使用类似的东西srand((int)this);或类似的,基于每个实例都有唯一内存地址的想法。还有其他更好的方法吗? 最佳答案 将随机种子用于伪随机生成器。std::ran

c++ - 如何将日期时间 + 时间偏移量的字符串解析为 boost::posix_time::ptime?

我有一个字符串“2011-10-20T09:30:10-05:00”有人知道我如何使用boost::date_time库解析它吗? 最佳答案 好的,我找到答案了代码(VS)它将字符串转换为local_date_time,但对我来说这是可以接受的:#pragmawarning(push)#pragmawarning(disable:4244)#pragmawarning(disable:4245)#include#pragmawarning(pop)#include#includeintmain(){usingnamespacestd

c++ - Visual Studio 错误 : LNK1104: cannot open file 'kernel32.lib' - only in WP8 projects/Win32 builds

我最近遇到了这个问题(几天前一切正常):VisualStudio2012开始拒绝构建原生WP8项目。今天,我从模板“WindowsPhoneDirect3D应用程序(仅限native)”创建了新解决方案,以检查WP是否正确支持我新创建的DLL。我尝试编译这个项目,首先没有任何更改或额外的引用-VS生成的纯代码。但是,它因给定错误而失败。我很清楚这是什么意思,可能的原因是什么,但是我不明白,在这种情况下它是从哪里来的。奇怪的事情:这只发生在“Win32”配置中,ARM编译正常:1>------Buildstarted:Project:PhoneDirect3DApp,Configurat

Ubuntu扩容报错:Unable to resize read-only file system /dev/sda3

当我们给Ubuntu新划分了空间,但是去给磁盘划分的时候,会报错:Unable to resize read-only file system /dev[sda3The file system can not be resized while it is mounted read-only.Either unmount the file system or remount it read-write.这是因为磁盘没有挂载起来,因此需要查看该磁盘的挂载路径,首先右键/dev/sda3点击信息,进去后就可以看到挂载的路径,分别是/和/var/snap/firefox/common/host-hun

C++14 元编程 : Automagically build a list of types at compile/init time

使用C++14和CuriouslyRecurringTemplatePattern(CRTP)以及可能的Boost.Hana的某种组合(或boost::mpl如果您愿意),我可以在编译时(或静态初始化时)构建一个类型列表而无需显式声明吗?例如,我有这样的东西(在Coliru上查看):#include#include#includenamespace{structD1{staticconstexprautoval=10;};structD2{staticconstexprautoval=20;};structD3{staticconstexprautoval=30;};}intmain(

java - OOP 访问修饰符 : Compile-time or Run-time

我听说访问修饰符Public、Private和Protected只是一些编译器的东西,它们实际上并不存在于编译的二进制代码中.现在我想知道它有多少是正确的?如果它是正确的,是否意味着封装在运行时不存在于二进制代码中?因此,如果您修改二进制文件以非法访问Private方法,理论上,没有任何东西可以检查您的权限,无论是任何OOP机制还是操作系统,对吧?我还标记了C++和Java的问题。我知道它们之间的区别,只是想看看它们处理访问修饰符有何不同。 最佳答案 访问修饰符只是C++中的一种编译时机制。然而,在Java中,它们也在运行时强制执行

c++ - boost .asio : can I do async_read and async_write simultaneously from one thread?

我读到不建议对来自不同线程的套接字进行多项操作。但是,如果我从同一个线程socket.async_read和下一个socket.async_write调用(不等待前一个完成)怎么办?当其中一个操作完成时,我可以期望正确的回调会运行吗? 最佳答案 我发现是的,您可以在同一个套接字上有一个挂起的async_read和一个挂起的async_write而不会出现问题。当您调用io_service::run()方法时,回调将按预期完成。在同一个套接字上发出多个async_reads,或在同一个套接字上发出多个async_writes,可能会导

c++ - 将 time_t 从本地时区转换为 UTC

我有一个time_t表示自纪元以来的时间(以秒为单位)。这些秒数是指本地时间。我想将它们转换为UTC。有没有办法在C++中做到这一点? 最佳答案 我将展示两种方法:使用CAPI。使用基于的现代C++11/14库.出于本演示的目的,我假设本地时区的当前秒数是1,470,003,841。我的本地时区是America/New_York,因此我得到的结果反射(reflect)我们目前处于-0400UTC。首先是CAPI:此API不是类型安全的并且很容易出错。我在编写这个答案时犯了几个错误,但我能够快速检测到这些错误,因为我是根据第二种技术检

c++ - 如何比较 time_t 和 std::filesystem::file_time_type

我正在将一些代码从boost::filesystem转换到std::filesystem。以前使用的代码boost::filesystem::last_write_time()它返回一个time_t,因此直接与我已经持有的time_t对象进行比较是微不足道的。顺便说一句,我持有的这个time_t是从很久以前保存的文件内容中读取的,所以我坚持使用这种“自unix纪元以来的时间”类型。std::filesystem::last_write_time返回std::filesystem::file_time_type.是否有可移植的方法将file_time_type转换为time_t,或者以其

c++ - 解决 "only static const integral data members can be initialized within a class"编译错误

以下创建全局对象会导致编译错误。#include"stdafx.h"#includeusingnamespaceSystem;usingnamespacestd;#pragmahdrstopclassTester;voidinput();classTester{staticintnumber=5;public:Tester(){};~Tester(){};voidsetNumber(intnewNumber){number=newNumber;}intgetNumber(){returnnumber;}}TestertesterObject;voidmain(void){cout>ne