小编Ale*_*x Z的帖子

什么是SO_SNDBUF和SO_RECVBUF

你能解释一下究竟是什么SO_SNDBUFSO_RECVBUF选择吗?

好的,由于某种原因,操作系统会缓冲输出/输入数据,但我想澄清这个问题.

他们的角色(一般)是什么?

它们是每插槽缓冲区吗?

传输层的缓冲区(例如TCP缓冲区)和这些缓冲区之间是否存在连接?

使用流套接字(TCP)和使用无连接套接字(UDP)时,它们是否具有不同的行为/角色?

一篇好文章也会很棒.

我搜索了它,但没有找到任何有用的信息.

sockets windows network-programming

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

std :: vector-like类优化以容纳少量项目

在程序的一个时间关键部分,有一个类的成员看起来像这样:std :: vector m_vLinks; 在分析期间,我注意到大约99.98%的执行此向量仅包含0或1个项目.然而,在极少数情况下它可能会持有更多.根据探查器,这个向量肯定是一个瓶颈,所以我正在考虑如下优化:

  1. 使用类似矢量的界面制作手工制作的类
  2. 这个类将包含真正的大小,一个项目和指向向量的可选指针
  3. 在这种情况下,当vector保存1个项目时,将不会有任何动态内存分配,并且由于删除了一个间接,访问该项目也会(更快).
  4. 当我们需要持有更多数据时,动态分配向量
  5. 当然,这个向量不会提供一个存储块来保存所有项目(这里不需要),而且一些操作也会更复杂

在开始对这个东西进行原型设计以确定它是否有帮助之前,我想知道是否有人在某些第三方库中遇到了具有类似功能的自定义容器?

我已经考虑过boost :: array,但是不希望它强加的大小限制

c++ optimization stl micro-optimization

19
推荐指数
3
解决办法
5326
查看次数

C:处理大数字时避免溢出

我在C中实现了一些排序算法(排序整数),小心地uint64_t用来存储与数据大小有关的任何东西(因此也是计数器和东西),因为算法也应该用几千兆的数据集进行测试整数.

算法应该没问题,并且分配的数据量应该没有问题:数据存储在文件中,我们每次只加载很少的块,即使我们将内存缓冲区扼流到任何大小,一切也能正常工作.

使用高达4千兆字节的数据集进行测试(因此16GB的数据)工作正常(分类4Gint需要2228秒,约37分钟),但是当我们超过那个(即:8 Gints)时算法似乎没有停止(它是现在已经跑了大约16个小时).

我担心问题可能是由于整数溢出,也许循环中的计数器存储在32位变量上,或者我们可能正在调用一些与32位整数一起工作的函数.
还有什么呢?

有没有简单的方法来检查运行时是否发生整数溢出?

c linux 64-bit overflow

16
推荐指数
2
解决办法
3765
查看次数

std :: make_shared构造函数中的参数个数

在Visual Studio 2010/2011中缺少可变参数模板(仍然!)时,采用大量参数的构造函数可能会出现问题.例如,以下内容将无法编译:

    MyMaterials.push_back(std::make_shared<Material>(MyFacade,
                                                     name,
                                                     ambient,
                                                     diffuse,
                                                     specular,
                                                     emissive,
                                                     opacity,
                                                     shininess,
                                                     shininessStrength,
                                                     reflectivity,
                                                     bumpScaling,
                                                     maps,
                                                     mapFlags));
Run Code Online (Sandbox Code Playgroud)

,因为它有13个参数,我认为make_shared是从arg0限制到arg9.显而易见的解决方案是两部分构建,但我希望避免这种情况.除了使用new而不是make_shared 之外,还有其他可能吗?

谢谢.

c++ stl make-shared

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

亚马逊EC2和Prestashop

我们正面临亚马逊EC2和Prestashop的严重问题.

我们使用Amazon Elastic Beanstalk部署了Prestashop,并为媒体服务器设置了S3.当我们使用csv导入功能批量上传带有图像的产品时,我们面临以下问题.

  1. 新的EC2实例正在创建并丢失所有css和js文件(缓存),并且数据库中的媒体服务器正在清空.由于这一点,我们需要生成所有的css和js文件并每次都上传到S3服务器,因为之前生成的css和js现在是无用的.

  2. 下载图像时,如果创建了新的EC2实例,则也会丢失图像.

请帮助我们更好地解决上述问题.

最好的祝福,

amazon-s3 amazon-ec2 prestashop amazon-elastic-beanstalk

7
推荐指数
1
解决办法
779
查看次数

像PVS-Studio这样的工具用于C项目中的静态代码分析?

我正在寻找PVS-Studio工具的一些替代方案,以便在C项目中运行一些静态代码分析.你们有什么建议吗?

c static-analysis

5
推荐指数
1
解决办法
1227
查看次数

假审查数据集

互联网上有一些通常邮件垃圾邮件的数据集,但我需要带有虚假评论的数据集进行一些研究,我找不到任何一个.任何人都可以给我建议可以获得虚假评论数据集的地方吗?

nlp corpus review spam

5
推荐指数
1
解决办法
3440
查看次数

GCC的std :: string - 为什么如此奇怪的实现

当我看到在gcc中实现std :: string的方式时,我注意到sizeof(std :: string)正好等于指针的大小(x32 build中为4个字节,x64为8个字节).因为字符串应该保存一个指向字符串缓冲区的指针,并且它的长度是最小值,这使我认为GCC中的std :: string对象实际上是指向保存此数据的某个内部结构的指针.

因此,当创建新字符串时,应该发生一个动态内存分配(即使字符串为空).

除了性能开销之外,这还会导致内存开销(当我们分配非常小的内存块时会发生这种情况).

所以我只看到这种设计的缺点.我错过了什么?有什么好处,首先是这样实施的原因是什么?

string implementation gcc stl stdstring

4
推荐指数
1
解决办法
1653
查看次数