DDOS防御专家-提供超强DDoS高防/CC防护/大流量清洗服务!
当前位置:主页 > 高防服务器 > 正文

ddos防御_免备案高防主机_打不死

ddos防御_免备案高防主机_打不死

在C/C++中,BAT大企业如何防御ddos攻击,如果您想使用另一个文件中定义的函数、变量、类型或宏,则使用"包含"语句。include语句有效地告诉编译器其他地方存在的资源。包含语句是C/C++程序员用来将系统分解成单独的模块的主要机制之一。当然,我们希望头文件也是模块化的,因此当另一个头文件定义相关类型、变量等时,一个头文件将包含另一个头文件,而另一个头文件可能有自己的include语句,等等。如果您给gcc-H选项,gcc将打印此include树的文本版本。include树可以惊人地大,即使对于一般的程序也是如此。例如,规范的"hello world"C程序只包含一个头文件:stdio.h。但是,在Linux系统上编译"hello world"会生成一个包含19个头文件的include树(树可能因系统而异),如图所示:请注意,某些头文件(例如"wordsize.h")在树中出现多次,因为它们包含在不同的文件中。我们可以通过使用一个节点来表示给定文件的所有包含内容,从而使可视化更加简洁;这给了我们一个图,而不是一个树,其中有16个头文件节点,而不是19个。为什么"包含图表"很重要?#包含图是查看代码依赖的一种方法。它可以快速查看.c/.cpp文件使用的库或模块。include图也对软件维护有影响。对#include图形中任何头文件的更改都会触发.c/.cpp文件的重建。(较大的include图表示更频繁地重新编译。)原则上,对头的更改可能会破坏以传递方式包含它的.c/.cpp文件。因此,当.c/.cpp文件中包含图形更改时,谨慎的开发人员将重新测试.c/.cpp文件中的功能。大型的包含图使得分离出一段用于单元测试或用于其他上下文的代码变得更加困难。大型的include图可能会减慢(甚至崩溃)编译器的速度。很容易忘记,从技术上讲,include在编译头文件之前会将头文件的全部内容粘贴到一个.c/.cpp文件中。例如,高防cdn节点,一旦预处理阶段完成,美国高防cdn云加速,helloworld程序将从7行增加到839行。(您可以使用gcc中的-E选项进行自己的比较。)一个大的#include图为编译器提供了更多要分析和处理的文本,并且可以对编译时间产生显著影响。Doxygen和cinclude2dot可以生成graphviz可以渲染为图像的图形文件。但是,由于include graph可能会变得非常大,所以我需要更适合大型数据集的方法。CodeSonar包括一个强大的可视化工具,它支持各种布局选项,可以处理数十万个节点。CodeSonar可视化调用图,但是底层的可视化技术可以用来查看任何类型的层次图。通过一点黑客攻击,我可以将"gcc-H"的输出提供给它,并生成本文中包含的图像。上图显示了"include"图中每个头文件的文件名。但是,标准的头文件被分组到目录中,这些目录提供了有关头文件用途的提示。我们可以在可视化中包含这些分组,从而为我们提供更多信息:这将显示/usr/include/bits、/usr/include/gnu等文件。当然,cdn防御和ddos硬防,对于比"hello world"功能更大的程序,include图会变得更大。以下是Apache HTTPD的main.c的include图:include图包含162个头文件。按目录分组文件显示更多结构:图形足够大,我们无法在这个缩放级别看到单个文件名,但是您仍然可以看到目录名。(CodeSonar可视化工具是交互式的,因此您可以放大和缩小以设置所需的详细程度)。您可以在"hello world"#include graph:/usr/include/bits、../gnu和../sys中看到一些相同的标准目录。您还可以看到,httpd和apr(apacheportableruntime)目录中有许多头文件,它们以橙色突出显示。"Hello World"和Apache HTTPD都是用C编写的,而不是C++。由于使用模板,C++程序通常具有较大的包含图(再次,参见算永的早期帖子,以获得复杂模板的示例)。Boost可能是最重模板的库。我编译了一个小型的C++程序,包含4个包含两个Boost标题:#包括#包括#包括#包括得到的#include图包含了令人印象深刻的602个头文件。(图形太大,无法在缩小的图像中包含文件名。)我们可以按目录分解,就像前面两个include图一样。对于这张图片,防御ddos限制端口,我选择了一种不同的布局算法("Cluster"而不是"Flow",对于CodeSonar的用户来说),因为大型图形需要更密集的布局,因此您仍然可以看到目录名。"boost"目录以橙色显示。602个头文件中的451个是各种Boost子目录中的Boost头文件,而剩余的151个在标准头目录中。Boostţinclude图生动地说明了一小组Šinclude语句可能只是冰山一角的标题集。它还表明,修剪不需要的include语句可能会导致整个include图的大幅度缩减。当然,include图是否太大取决于上下文。像Boost这样的头密集型库所提供的额外功能通常值得较长的编译时间。而依赖于标准的头文件(通常不会发生显著变化),比依赖于经常更改的头文件风险更小。但是,工程师需要了解"包含"图形,以便对其大小是否可接受做出明智的判断。可视化是给工程师提供这种意识的一个很好的方法。对自由静态分析和高级静态分析的区别感兴趣吗?看看我们的指南"高级静态分析C++"在这里:hbspt.cta公司.\u relativeUrls=真;hbspt.cta.负荷(582328,'42fd5967-604d-43ad-9272-63d7c9d3b48f',{});

版权保护: 本文由 DDOS防御专家 原创,转载请保留链接: /ddos/61126.html

DDoS防御专家简介孤之剑
国内资深白帽子二十人组成员,前BAT资深网络安全工程师,知名网络安全站点板块大神,每年提交Google及微软漏洞,原sina微博负载插件开发者,现在整体防御复合攻击长期接受1-4.7T攻击,CC防护自主开发指纹识别系统,可以做到99.9999%的无敌防御。
  • 文章总数
  • 8149136访问次数
  • 建站天数

    QQ客服

    400-0797-119

    X