我正在阅读有关服务器架构的评论.
http://news.ycombinator.com/item?id=520077
在这篇评论中,这个人说了三件事:
这些都是真的吗?
还有另一篇文章标题为"为什么事件是一个坏主意(对于高并发服务器)"
shared_ptr是Boost库中的引用计数智能指针.
引用计数的问题在于它不能处理循环.我想知道如何用C++解决这个问题.
请不要这样的建议:"不要制作周期",或"使用weak_ptr".
编辑
我不喜欢只使用weak_ptr的建议,因为很明显,如果你知道你会创建一个循环,那么你就不会有问题.如果在运行时生成shared_ptrs,您也无法知道编译时会有一个循环.
所以,请自行删除使用weak_ptr的答案,因为我特别要求不要那些答案......
这是在C++中制作可变大小结构的最佳方法吗?我不想使用vector,因为初始化后长度不会改变.
struct Packet
{
unsigned int bytelength;
unsigned int data[];
};
Packet* CreatePacket(unsigned int length)
{
Packet *output = (Packet*) malloc((length+1)*sizeof(unsigned int));
output->bytelength = length;
return output;
}
Run Code Online (Sandbox Code Playgroud)
编辑:重命名变量名称和更改的代码更正确.
我使用这些规则制作了终极笑发生器.你能用聪明的方式用自己喜欢的语言实现它吗?
在每次迭代时,都会发生以下转换.
H -> AH
A -> HA
AA -> HA
HH -> AH
AAH -> HA
HAA -> AH
Run Code Online (Sandbox Code Playgroud)
n = 0 | H
n = 1 | AH
n = 2 | HAAH
n = 3 | AHAH
n = 4 | HAAHHAAH
n = 5 | AHAHHA
n = 6 | HAAHHAAHHA
n = 7 | AHAHHAAHHA
n = 8 | HAAHHAAHHAAHHA
n = 9 | AHAHHAAHAHHA
n = ...
Run Code Online (Sandbox Code Playgroud) 我见过这样的方法:
void SomeClass::someMethod() const;
Run Code Online (Sandbox Code Playgroud)
这个const声明做了什么,它如何帮助优化程序?
编辑
我看到之前已经问过这个问题的第一部分...... 但是,它仍然没有回答第二部分:这将如何优化程序?
我注意到的一件事是,如果我不洁净地杀死一个消费者(模仿一个崩溃的程序),服务器会认为这个消费者仍然存在很长时间.结果是每个其他消息都将被忽略.
例如,如果您杀死消费者1次并重新连接,则将忽略1/2消息.如果您杀死另一个消费者,则将忽略2/3消息.如果你杀了第3个,那么将忽略3/4个消息,依此类推.
我试过打开确认,但它似乎没有帮助.我找到的唯一解决方案是手动停止服务器并重置它.
有没有更好的办法?
如何重新创建此方案
我正在制作一个C++程序.
我对C++最大的烦恼之一就是它假定的平台独立性.
你们都可能知道,在Windows中编译Linux C++程序和在Linux中编译Linux C++程序几乎是不可能的,而不会产生大量的神秘错误和平台特定的包含文件.
当然你可以随时切换到像Cygwin和wine这样的仿真,但我问你,有没有别的办法?
有时我仍然试图将过程代码转换为功能代码.
是否有一个功能成语/片段列表映射到程序习语/片段?
编辑
由于似乎没有这些片段的集中式网站,我将其转变为社区维基.请在此粘贴任何程序 - >功能片段.
我听说有些语言通过"展开解释器循环"从解释到编译.
假设我为ast树提供了以下伪c代码解释器.
int interpret(node)
{
switch(node) {
case PLUS:
return interpret(child(0))+interpret(child(1));
case MINUS:
return interpret(child(0))-interpret(child(1));
}
}
Run Code Online (Sandbox Code Playgroud)
如何展开此循环以创建已编译的程序?
我看到你们所有人都在低调,因为我不知道我在说什么,但这里有一篇来自维基百科的文章,其中说明了我所描述的内容.
"因子最初只被解释,但现在已完全编译(非优化编译器基本上解开了解释器循环"
c compiler-construction optimization interpreter programming-languages
我正在使用WebClient()使用C#.
我正在测试发送的标头,我注意到会自动添加以下标头.
Connection : Keep-Alive
Run Code Online (Sandbox Code Playgroud)
有什么办法可以删除吗?