小编Mr.*_*ith的帖子

XCode显示函数参数热键

我在Visual Studio中没有想到如何在XCode中做的少数事情之一列出了函数的参数.我现在用Google搜索了几次,仍然没有找到答案.

如果我开始输入,例如round(我得到一个参数列表及其返回类型.但是,如果我已经输入了代码

x = round(y);
Run Code Online (Sandbox Code Playgroud)

我转到它,我不知道如何显示参数信息而无需重新输入.有谁知道这个热键怎么样?

xcode hotkeys objective-c

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

删除std :: string中的空格

在C++中,有一种简单的方法:

这个std :: string

\t\tHELLO WORLD\r\nHELLO\t\nWORLD     \t
Run Code Online (Sandbox Code Playgroud)

成:

HELLOWORLDHELLOWORLD
Run Code Online (Sandbox Code Playgroud)

c++ string removing-whitespace c++11

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

TCP延迟确认的解决方法是什么?

我发布了一个在线(基于网格)的视频游戏,它使用TCP协议来确保服务器 - 客户端网络拓扑中的可靠通信.我的游戏工作得相当好,但遭遇的延迟高于预期(类似的TCP游戏似乎在将延迟保持在最低限度方面做得更好).

在调查时,我发现运行Microsoft Windows(而不是Mac OS X客户端)的客户端的延迟仅意外高.此外,我发现如果Windows客户端设置TcpAckFrequency=1在注册表中并重新启动他们的计算机,他们的延迟就会变得正常.

看来我的网络设计没有考虑延迟确认:

不考虑延迟确认,Nagle算法和Winsock缓冲的交互的设计可以极大地影响性能.(http://support.microsoft.com/kb/214397)

但是,我发现几乎不可能在我的游戏(或任何游戏)中考虑延迟确认.根据MSDN,Microsoft TCP堆栈使用以下标准来决定何时在接收的数据包上发送一个ACK:

  • 如果在延迟计时器到期(200ms)之前接收到第二数据包,则发送ACK.
  • 如果在接收到第二数据包之前有数据要在与ACK相同的方向上发送并且延迟计时器到期,则ACK与数据段搭载并立即发送.
  • 当延迟计时器到期(200ms)时,发送ACK.

(http://support.microsoft.com/kb/214397)

阅读本文,可以假设Microsoft TCP堆栈上延迟确认的解决方法如下:

  1. 禁用Nagle算法(TCP_NODELAY).
  2. 禁用套接字的发送缓冲区(SO_SNDBUF= 0),以便send可以预期调用发送数据包.
  3. 在呼叫时send,如果不希望立即发送更多数据,则send再次使用将被接收器丢弃的单字节数据进行呼叫.

利用这种方法,接收器将在与先前数据分组大致相同的时间接收第二数据分组.因此,ACK应该立即从接收方发送到发送方(模拟TcpAckFrequency=1注册表中的内容).

但是,从我的测试来看,这个改进的延迟只有注册表编辑的一半左右.我错过了什么?


问:为什么不使用UDP?

答:我选择了TCP,因为我发送的每个数据包都需要到达(并按顺序); 如果丢失(或变得无序),则没有值得重传的数据包.只有当数据包可以被丢弃/无序时,UDP才能比TCP更快!

c c# c++ winsock

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

跨平台随机数发生器

当您需要能够从种子生成随机数时,并保证它在不同版本的.NET Framework和Mono Framework中是相同的数字,以及跨不同的体系结构(x86,x64),你是什么做?

我目前正在考虑在文件中存储数百万个随机字节,以用作此问题的临时解决方案,但我认为可能有更好的方法(希望不会太复杂).

c# random

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

长时间运行过程暂停

我在Visual Studio 2010 IDE中以调试模式(F5)在Windows Server GoDaddy VPS上运行.NET 2.0控制台应用程序.

应用程序定期冻结(好像垃圾收集器暂时暂停执行)但是在极少数情况下它永远不会恢复执行!

几个月来我一直在对此进行描述,并且我的想法已经不多了.

  • 应用程序尽可能快地运行(它使用100%的CPU使用率),但处于正常优先级.它也是多线程的.
  • 当应用程序冻结时,我可以通过暂停/取消暂停进程来使用VS2010 IDE解冻它(因为它在调试器中运行).
  • 当我暂停冻结过程时,上次执行的位置似乎无关紧要.
  • 冻结时,CPU使用率仍为100%.
  • 解冻后,它会完全运行,直到下一次冻结.
  • 服务器可能在冻结之间运行70天,或者它可能只能在24小时内运行.
  • 内存使用率保持相对稳定; 没有任何内存泄漏的证据.

任何人都有任何提示,以诊断究竟发生了什么?

.net c# windows multithreading garbage-collection

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

ASP.NET工作线程的大部分活动时间是否处于阻塞状态?

我正在尝试确定ASP.NET工作线程的作用.我的IIS 7安装默认允许最多25个工作线程,而我本来会将其设置为1.

当用户请求.aspx页面时,我理解该请求将检索工作线程.但是,该页面上每个图像的加载是否也会占用工作线程?一旦检索到图像,检索它的工作线程是否也负责将其传输给用户(通过blocking-tcp-socket?)?

c# asp.net

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

将全宽转换为半宽

在C#中,如何将使用全角形式字符的字符串转换为半宽形式字符?

例如,userInput如下所示,我想转换?????????????Stackoverflow:

string userInput= "?????????????";
//string userInput= "Stackoverflow";
Run Code Online (Sandbox Code Playgroud)

c# unicode

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

私下实施协议?

可能重复:
私下符合协议

我的一类尝试将自己注册为它创建的NSXMLParser对象的委托.但是,我不认为我希望我的类公开披露它实现NSXMLParserDelegate协议,因为NSXMLParser对象是仅在类中使用的私有变量.

我是否有权避免公开协议,如果是这样,我如何实现协议而不公开该类协议?

cocoa-touch objective-c

10
推荐指数
1
解决办法
3135
查看次数

传递STL容器会复制吗?

我不记得传递一个STL容器是否复制了容器,或者只是另一个别名.如果我有几个容器:

std::unordered_map<int,std::string> _hashStuff;
std::vector<char> _characterStuff;
Run Code Online (Sandbox Code Playgroud)

我想将这些变量传递给一个函数,我可以这样做:

void SomeClass::someFunction(std::vector<char> characterStuff);
Run Code Online (Sandbox Code Playgroud)

或者这会复制unordered_map/ vector?我想我可能需要使用shared_ptr.

void SomeClass::someFunction(std::shared_ptr<std::vector<char>> characterStuff);
Run Code Online (Sandbox Code Playgroud)

c++ c++11

10
推荐指数
3
解决办法
6464
查看次数

将指针转换为参考,成本高昂?

可能重复:
在C++中取消引用指针有多贵?

如果我有一个指向对象的指针,那么Object *ptr;我想把它传递给void foo(Object& obj)我理解我需要编写的形式的方法:

foo(*ptr);
Run Code Online (Sandbox Code Playgroud)

但为什么要解除引用ptr?通过它不是没有意义foo(ptr);吗?我担心*ptr可能会制作原始对象的副本,或者至少不仅仅是传递到foo地址来使用.

任何人都可以为我清除这个吗?是否传递*ptr了一个潜在的瓶颈,因为代码期望这个代码表现得像函数一样快void foo(Object *obj);并且通过调用foo(ptr)

c++ c++11

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