许多编辑器和IDE都有代码完成.其中一些非常"聪明",其他人则不是.我对更智能的类型感兴趣.例如,我已经看到IDE只提供一个函数,如果它是a)在当前范围内可用b)它的返回值是有效的.(例如在"5 + foo [tab]"之后它只提供返回可以添加到正确类型的整数或变量名称的东西的函数.)我还看到他们将更常用或更长的选项放在前面的清单.
我意识到你需要解析代码.但通常在编辑当前代码时无效,其中存在语法错误.当它不完整并包含错误时,你如何解析?
还有时间限制.如果需要几秒钟来完成列表,则完成是无用的.有时,完成算法处理数千个类.
有什么好的算法和数据结构?
当我只知道描述符时,我需要执行一个文件.也有可能没有链接到文件,所以找不到名称不是一个选项.所有execve(),execvp()等函数都采用文件名.dlopen()也有一个名字.
丑陋的解决方案(如读取文件和调用某些函数指针)都可以.
到目前为止,我只看到它用于数字签名和密钥协商协议.可以像RSA一样使用它来实际加密数据吗?这有什么图书馆吗?
编辑:
我需要像RSA这样的东西.使用接收方公钥加密数据,以便稍后可以使用私钥对其进行解密.
我知道ECDH可用于向某人发送秘密值,但您不会决定发送什么数据.与具有ECDH的"常规"DH不同,由此产生的秘密值始终相同,因为它仅取决于密钥对.我想我可以将此值用作对称密码的密钥,并加密另一个由我选择并使用该密钥加密数据的密钥(如果我想支持多个接收方).这是一个好方法吗?
我有一个复杂的对象网络连接QSharedPointers和QWeakPointers.有没有一种简单的方法来使用Boost.Serialization保存/加载它们?到目前为止我有这个:
namespace boost {
namespace serialization {
template<class Archive, class T>
void save(Archive& ar, QSharedPointer<T> const& ptr, unsigned version) {
T* sharedPointer = ptr.data();
ar & BOOST_SERIALIZATION_NVP(sharedPointer);
}
template<class Archive, class T>
void load(Archive& ar, QSharedPointer<T>& ptr, unsigned version) {
T* sharedPointer = 0;
ar & BOOST_SERIALIZATION_NVP(sharedPointer);
ptr = QSharedPointer<T>(sharedPointer);
}
template<class Archive, class T>
void save(Archive& ar, QWeakPointer<T> const& ptr, unsigned version) {
T* weakPointer = ptr.toStrongRef().data();
ar & BOOST_SERIALIZATION_NVP(weakPointer);
}
template<class Archive, class T>
void load(Archive& ar, QWeakPointer<T>& …Run Code Online (Sandbox Code Playgroud) 我正在寻找特定于游戏的网络设计和技巧.我知道一些问题,我对其中一些问题有一些部分解决方案,但可能存在我看不到的问题.我认为没有明确的答案,但我会接受我真正喜欢的答案.我可以想到4类问题.
信号不好
客户端发送的消息需要一些时间才能到达服务器.服务器不能只处理它们FCFS,因为这对于具有较高延迟的玩家是不公平的.对此的部分解决方案是消息的时间戳,但您需要两件事:
很多游戏都使用UDP,这意味着消息可能丢失.在这种情况下,他们会尝试根据已有的信息来估算游戏状态.在连接再次工作后,您如何知道估计的状态是否正确?
在MMO游戏中,服务器处理大量客户端.分配负载的最佳方法是什么?根据游戏中的位置?将一组客户端绑定到服务器?你能避免通过服务器发送一切吗?
球员离开
发生这种情况时,我看到了2种不同的行为.在大多数FPS游戏中,如果主持游戏的玩家(我猜他是服务器)离开了其他玩家无法玩.在大多数RTS游戏中,如果任何玩家离开,其他玩家可以继续玩而不用他.没有专用服务器怎么可能?每个人都知道完整的状态吗?他们是以某种方式转移服务器的角色吗?
获取信息
下一个问题可以通过专用服务器解决,但我很好奇是否可以在没有服务器的情况下完成.在很多游戏中,玩家不应该知道游戏的完整状态.RPS中的战争迷雾和FPS中的墙壁就是很好的例子.但是,他们需要知道某个操作是否有效.(例如,你可以从那里开枪给我,还是你在地图的另一边.)在这种情况下,客户需要验证对未知状态的更改.这听起来像是可以通过巧妙使用加密原语来解决的.有任何想法吗?
作弊
在受信任的客户端环境中,上述一些问题很容易,但不能假设.是否有解决方案可以在80%的普通用户中使用 - 20%的骗子环境?你真的可以制作一个有效的反作弊软件(并且不需要内核模块等荒谬的东西)吗?
我确实阅读了这些问题和一些答案/sf/ask/63111471/但其他答案链接到不可用/受限制的内容.这是一个独立于平台/操作系统的问题,但也欢迎针对特定平台/操作系统的解决方案.
我在几个预编译头文件和地址空间布局随机化不兼容的网站上阅读它.是什么让他们不相容?修复它需要什么?
我的问题是操作系统独立我听说这是linux上的grsecurity和更新的Windows版本的问题.(而且我不知道ASLR还有什么.)
c ×2
c++ ×2
algorithm ×1
anti-cheat ×1
aslr ×1
autocomplete ×1
boost ×1
cryptography ×1
encryption ×1
exec ×1
latency ×1
networking ×1
pointers ×1
qt4 ×1