C++ 实用指南

news2024/11/18 7:47:36

C++ 发展得非常快!例如,C++ 标准的页数从 C++98/03 的 879 页增加到了 C++20 的 1834 页,多了近 1000 页!更重要的是,C++ 每次修订后,我们都会获得几十个新特性。你需要学习所有这些东西才能写出好代码吗?如何在当今的 C++ 世界中保持理智?

介   绍

你可能知道 C++ 是一种复杂的语言。我甚至发现了一整页 Wiki 是讲对 Cpp 的批判的。现代 C++ 甚至为生态添加了更多内容。

以下是我之前提到的规范页数的完整数据:

  • C++98/03-879,N1905,2005 年 10 月

  • C++11-1324,最后草案,N3337,2012 年 1 月

  • C++14-1368,最后草案,2014 年 11 月

  • C++17-1586,草案,N4606

  • C++20-1834,草案,N4861

看起来 C++17 几乎比 C++98/03“大”了 80%,而 C++ 的最新草案比 C++03 多了将近 1000 页。你可以抱怨增加的这些复杂性,想学好所有这些东西也很困难。但这有那么可怕吗?面对这样的情况,你能做些什么?

首先,我们来看看你在 C++ 中可能会遇到的一些问题。

一些问题

仅举几例:

  • 节奏太慢

  • 节奏太快

  • 特性的混乱 / 复杂性

  • 编译时间慢

  • 缺乏依赖管理

我们来仔细研究一下。

 节奏太慢

2017 年,我们迎来 C++17。虽然每三年就迎来一个新标准是很棒的,但许多开发人员抱怨新版本并不是每个人都期待的。

很多特性:比如概念(concept)、模块、范围(range)、协程(co-routine)……都没有被接受,我们至少需要再等三年才能让它们进入规范。

在 2020 年,C++20 已经准备就绪,并且这些重要特性将随编译器一起提供!但我们还是会抱怨合约(contract)还没加进来,反射(reflection)、执行器(executor)或网络(networking)仍在讨论中。它们可能出现在 C++23 甚至更高版本中。

看起来有些特性接受起来比较慢……而且总有东西值得抱怨。

 节奏太快

像往常一样,我们在这里可能有两种相互矛盾的意见。尽管对某些人来说升级节奏很慢,但对其他人来说却很难跟上变化。

你刚刚学习了 C++11/14……现在你就需要更新 C++17 的知识,然后 C++20 就在路上了。三年并不是那么短的时间,但请记住,编译器一致性、公司政策、团队指南可能会以不同的节奏前进。

你的公司是立即更新到最新的 C++ 版本还是等待几年?

特性的混淆 / 复杂性

只需阅读这条评论:

CallMeDonk:

我喜欢 C++。这是我的首选语言,但你必须承认,它对值类的“大杂烩”实现是很怪异的。包括我在内的大多数程序员更喜欢简单的、定义明确的语言结构,而不是奇怪和复杂的语法。

C++ 在各个方面都很清晰吗?可能不是……

以下是一些可能难以理解并可能让程序员糊涂的主题:

移动语义

移动语义的原则非常明确:不要复制,而是尝试“窃取”托管资源的内部结构,你应该获得不错的性能提升。但魔鬼都藏在细节中。

我不会写很多通用代码,所以幸运的是,我不必一直考虑移动语义。但是,当我遇到 move 和 const 时会很困惑——请参阅我上一篇关于该主题的 文章。我不相信所有 C++ 开发人员都会理解这里的规则。特别是你现在需要记住编译器生成的六个默认操作:默认构造器、析构函数、复制构造器、移动构造器、赋值运算符和移动赋值运算符。

Rvalues/xvalues/prvalues……myValues、fooValues

最后一个是我编的……但那么多值类别实在太让人头疼了!

在 C(或 C++98/03)中,你只需要知道左值与右值,现在它有点微妙了。

不过,问题是你是否需要记住它?

一些不错的评论:

c0r3ntin:

这很复杂,但不是每天都能遇到。这个值可以 address 吗?可以复制吗?可以移动吗?应该移动吗?只有在极少数情况下,你才需要主动去澄清并充分理解它们。(模板化库编写、热路径等)。大多数时候 C++ 并不比 java 或其他东西复杂。可悲的是大多数人都忘了这一点。C++ 可能是最复杂的语言,但是你可以编写非常好的代码而无需关心具体的细节。BigObject o=getBigObject();

初始化

现在有 18 种方式(从 C++17 开始)!

参阅:

C++ 中的初始化是疯狂的

https://www.reddit.com/r/cpp/comments/5p5ed7/initialization_in_c_is_bonkers/?fileGuid=HjDhgwWw6jPKDcCK;

r/cpp 线程

https://blog.tartanllama.xyz/initialization-is-bonkers/

模板(和模板推导)

当我看到 C++17 的所有变更时,我很迷茫;关于模板的细节太多了。

同样的情况发生在 C++20 中,我们迎来了一个重大且期待已久的改进:概念——它彻底改变了 C++。

然而,如果你想学习模板,一开始可能会不知所措。

 ABI

随着新特性列表的不断增长,“从头开始”修复 C++ 设计中的旧问题可能是很诱人的主题。但这种语言的原则是不能破坏旧代码,所以委员会非常严格,不喜欢改变已引入特性的路线。

这个问题没有正确的答案,但无论如何,一个经过充分讨论的主题要比仓促的举动更好。

 缺乏依赖管理工具

我们可以抱怨 C++ 没有“交付”一个很酷的依赖管理系统。但现实情况是,在可预见的未来,这可能都不会实现。拥有一个“标准”的包管理器是一个艰难的选择,尤其是它必须处理如此多的可用 C++ 的平台和系统。

 不够安全

前段时间,你可以读到提到这个问题的一些文章(这篇 和 这篇):

谷歌工程师本周表示,Chrome 代码库中大约 70% 的严重安全漏洞是内存管理和安全漏洞。

微软也是如此。由于大部分代码是 C 或 C++,所以每个人都指责 C++ 不够安全。

其他问题?

你在这种语言上遇到的主要问题都有哪些?

到目前为止,我们已经讨论了一些问题……那么如何应对它们呢?有机会解决这些问题吗?

如何保持理智

没有完美的编程语言;每种语言都有一些问题。以下是我关于如何处理现代 C++ 问题的建议:

  • 保持乐观

  • 使用最佳指南

  • 使用最好的工具

  • 跟上最新进展

  • 不要打开引擎盖

  • 使用你需要的

  • 增量变更

  • 最后的底线:你的旧代码仍然安全并且可以编译

保持乐观,语言在不断发展

没有人愿意使用旧的语法和结构来编写代码。我们已经看到很多关于 C++11 之前的旧版 C++ 的抱怨。人们花了将近 13 年的时间(从主要的 C++98 算起,不包括次要的 C++03)才提出新的主要版本:C++11。现在我们可以很高兴回到了正轨,每三年都会有一些变化。归根结底,你不能说你的语言已经死了。

虽然某些特性非常庞大,可能会带来混乱或需要学习更多东西,但实际情况其实很简单:

  • 在 C++03 之后添加的 1000 个新页面中的大部分用于标准库。这意味着你可以使用更多助手和子系统,而无需查找第三方库。这绝对会让你的生活更轻松。

  • 对于移动语义,你可以依赖库类型,因为它们会为你完成正确的工作。例如,你现在可以安全地返回std::vector并确保它可能被移动甚至被删除,而无需额外副本。

  • 至于模板,它变得越来越容易使用。概念让代码更安全,没有像 SFINAE 这样的技巧。更重要的是,我们有了constexprauto,让泛型代码更简单了(几乎就像常规代码一样)。

  • 至于安全性:在这里查看 C++ 指南的安全配置文件的自动化工具。C++ Core Check 中的新安全规则|C++ 团队博客。我们可以期待新的、更好的工具来执行代码分析甚至检测,以尽快发现潜在的安全问题。或者看这篇文章:使用静态分析原理缩小 Rust 和 C++ 之间的差距——SunnyChatterjee——CppCon

使用指南

如果你对 C++ 代码的许多方面都感到困惑,那么你应该查阅 C++ 核心指南。它由热心的 C++ 开发社区创建,主要编辑是 Herb Sutter 和 Bjarne Stroustrup。

看这里:

C++ 核心指南 @Github

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md?fileGuid=HjDhgwWw6jPKDcCK

这里有一个漂亮的网站:

C++ 核心指南:网站

https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines?fileGuid=HjDhgwWw6jPKDcCK

只需输入你面临的问题(例如return value),你就可以轻松找到建议——例如:指南:返回值

使用这些指南将为你节省大量时间,并且你可以非常快地学习一些好的模式。

还有工具!

感谢 Clang 以及其他平台上的开发速度提升,我们获得了如下工具:

  • ClangTidy(以前是 clang-modernise)

  • Clang Format

  • Clang Static Analyzer

  • VisualAssist

  • Clion/ResharperC++

  • VisualStudio——像 C++ Core Checker 这样的工具

  • PVS Studio

  • 用于 VisualStudio 的 Clang Power Tools

  • 新的 C++ 核心检查规则|C++ 团队博客

  • C++ 核心指南检查器参考|微软文档

  • 介绍 vcperf/timetrace,用于 C++ 构建时间分析|C++ 团队博客

  • C++ Core Check 中的新安全规则|C++ 团队博客——C++ 和 Rust 一样安全吗?

或者查看我关于其他工具的文章:

C++ 生态系统:编译器、IDE、工具、测试等

https://www.cppstories.com/2019/10/cppecosystem/?fileGuid=HjDhgwWw6jPKDcCK

虽然它不像其他语言(主要基于 Java 或基于.NET)那么好,但它正在变得越来越好。请记住,由于 C++ 语法复杂,因此很难实现即时分析代码的工具。

努力跟上最新进展

C++ 社区非常活跃。有很多博客、书籍、会议……甚至有可能在你所在的城市有本地社区。

首先,我建议去 isocpp.org 查看所有事件 / 新闻 / 文章。然后你可以查看 Meeting C++ 和有关本地 C++ 小组的信息。还有 reddit/cpp,你可以在那里看到一些最棒的 C++ 故事。

还有 CppCast——一个针对 C++ 开发人员的每周播客。

 

C++ 发展得非常快!例如,C++ 标准的页数从 C++98/03 的 879 页增加到了 C++20 的 1834 页,多了近 1000 页!更重要的是,C++ 每次修订后,我们都会获得几十个新特性。你需要学习所有这些东西才能写出好代码吗?如何在当今的 C++ 世界中保持理智?

介   绍

你可能知道 C++ 是一种复杂的语言。我甚至发现了一整页 Wiki 是讲对 Cpp 的批判的。现代 C++ 甚至为生态添加了更多内容。

以下是我之前提到的规范页数的完整数据:

  • C++98/03-879,N1905,2005 年 10 月

  • C++11-1324,最后草案,N3337,2012 年 1 月

  • C++14-1368,最后草案,2014 年 11 月

  • C++17-1586,草案,N4606

  • C++20-1834,草案,N4861

 

看起来 C++17 几乎比 C++98/03“大”了 80%,而 C++ 的最新草案比 C++03 多了将近 1000 页。你可以抱怨增加的这些复杂性,想学好所有这些东西也很困难。但这有那么可怕吗?面对这样的情况,你能做些什么?

首先,我们来看看你在 C++ 中可能会遇到的一些问题。

一些问题

仅举几例:

  • 节奏太慢

  • 节奏太快

  • 特性的混乱 / 复杂性

  • 编译时间慢

  • 缺乏依赖管理

我们来仔细研究一下。

 节奏太慢

2017 年,我们迎来 C++17。虽然每三年就迎来一个新标准是很棒的,但许多开发人员抱怨新版本并不是每个人都期待的。

很多特性:比如概念(concept)、模块、范围(range)、协程(co-routine)……都没有被接受,我们至少需要再等三年才能让它们进入规范。

在 2020 年,C++20 已经准备就绪,并且这些重要特性将随编译器一起提供!但我们还是会抱怨合约(contract)还没加进来,反射(reflection)、执行器(executor)或网络(networking)仍在讨论中。它们可能出现在 C++23 甚至更高版本中。

看起来有些特性接受起来比较慢……而且总有东西值得抱怨。

 节奏太快

像往常一样,我们在这里可能有两种相互矛盾的意见。尽管对某些人来说升级节奏很慢,但对其他人来说却很难跟上变化。

你刚刚学习了 C++11/14……现在你就需要更新 C++17 的知识,然后 C++20 就在路上了。三年并不是那么短的时间,但请记住,编译器一致性、公司政策、团队指南可能会以不同的节奏前进。

你的公司是立即更新到最新的 C++ 版本还是等待几年?

特性的混淆 / 复杂性

只需阅读这条评论:

CallMeDonk:

我喜欢 C++。这是我的首选语言,但你必须承认,它对值类的“大杂烩”实现是很怪异的。包括我在内的大多数程序员更喜欢简单的、定义明确的语言结构,而不是奇怪和复杂的语法。

C++ 在各个方面都很清晰吗?可能不是……

以下是一些可能难以理解并可能让程序员糊涂的主题:

移动语义

移动语义的原则非常明确:不要复制,而是尝试“窃取”托管资源的内部结构,你应该获得不错的性能提升。但魔鬼都藏在细节中。

我不会写很多通用代码,所以幸运的是,我不必一直考虑移动语义。但是,当我遇到 move 和 const 时会很困惑——请参阅我上一篇关于该主题的 文章。我不相信所有 C++ 开发人员都会理解这里的规则。特别是你现在需要记住编译器生成的六个默认操作:默认构造器、析构函数、复制构造器、移动构造器、赋值运算符和移动赋值运算符。

Rvalues/xvalues/prvalues……myValues、fooValues

最后一个是我编的……但那么多值类别实在太让人头疼了!

在 C(或 C++98/03)中,你只需要知道左值与右值,现在它有点微妙了。

不过,问题是你是否需要记住它?

一些不错的评论:

c0r3ntin:

这很复杂,但不是每天都能遇到。这个值可以 address 吗?可以复制吗?可以移动吗?应该移动吗?只有在极少数情况下,你才需要主动去澄清并充分理解它们。(模板化库编写、热路径等)。大多数时候 C++ 并不比 java 或其他东西复杂。可悲的是大多数人都忘了这一点。C++ 可能是最复杂的语言,但是你可以编写非常好的代码而无需关心具体的细节。BigObject o=getBigObject();

初始化

现在有 18 种方式(从 C++17 开始)!

参阅:

C++ 中的初始化是疯狂的

https://www.reddit.com/r/cpp/comments/5p5ed7/initialization_in_c_is_bonkers/?fileGuid=HjDhgwWw6jPKDcCK;

r/cpp 线程

https://blog.tartanllama.xyz/initialization-is-bonkers/

模板(和模板推导)

当我看到 C++17 的所有变更时,我很迷茫;关于模板的细节太多了。

同样的情况发生在 C++20 中,我们迎来了一个重大且期待已久的改进:概念——它彻底改变了 C++。

然而,如果你想学习模板,一开始可能会不知所措。

 ABI

随着新特性列表的不断增长,“从头开始”修复 C++ 设计中的旧问题可能是很诱人的主题。但这种语言的原则是不能破坏旧代码,所以委员会非常严格,不喜欢改变已引入特性的路线。

这个问题没有正确的答案,但无论如何,一个经过充分讨论的主题要比仓促的举动更好。

 缺乏依赖管理工具

我们可以抱怨 C++ 没有“交付”一个很酷的依赖管理系统。但现实情况是,在可预见的未来,这可能都不会实现。拥有一个“标准”的包管理器是一个艰难的选择,尤其是它必须处理如此多的可用 C++ 的平台和系统。

 不够安全

前段时间,你可以读到提到这个问题的一些文章(这篇 和 这篇):

谷歌工程师本周表示,Chrome 代码库中大约 70% 的严重安全漏洞是内存管理和安全漏洞。

微软也是如此。由于大部分代码是 C 或 C++,所以每个人都指责 C++ 不够安全。

其他问题?

你在这种语言上遇到的主要问题都有哪些?

到目前为止,我们已经讨论了一些问题……那么如何应对它们呢?有机会解决这些问题吗?

如何保持理智

没有完美的编程语言;每种语言都有一些问题。以下是我关于如何处理现代 C++ 问题的建议:

  • 保持乐观

  • 使用最佳指南

  • 使用最好的工具

  • 跟上最新进展

  • 不要打开引擎盖

  • 使用你需要的

  • 增量变更

  • 最后的底线:你的旧代码仍然安全并且可以编译

保持乐观,语言在不断发展

没有人愿意使用旧的语法和结构来编写代码。我们已经看到很多关于 C++11 之前的旧版 C++ 的抱怨。人们花了将近 13 年的时间(从主要的 C++98 算起,不包括次要的 C++03)才提出新的主要版本:C++11。现在我们可以很高兴回到了正轨,每三年都会有一些变化。归根结底,你不能说你的语言已经死了。

虽然某些特性非常庞大,可能会带来混乱或需要学习更多东西,但实际情况其实很简单:

  • 在 C++03 之后添加的 1000 个新页面中的大部分用于标准库。这意味着你可以使用更多助手和子系统,而无需查找第三方库。这绝对会让你的生活更轻松。

  • 对于移动语义,你可以依赖库类型,因为它们会为你完成正确的工作。例如,你现在可以安全地返回std::vector并确保它可能被移动甚至被删除,而无需额外副本。

  • 至于模板,它变得越来越容易使用。概念让代码更安全,没有像 SFINAE 这样的技巧。更重要的是,我们有了constexprauto,让泛型代码更简单了(几乎就像常规代码一样)。

  • 至于安全性:在这里查看 C++ 指南的安全配置文件的自动化工具。C++ Core Check 中的新安全规则|C++ 团队博客。我们可以期待新的、更好的工具来执行代码分析甚至检测,以尽快发现潜在的安全问题。或者看这篇文章:使用静态分析原理缩小 Rust 和 C++ 之间的差距——SunnyChatterjee——CppCon

使用指南

如果你对 C++ 代码的许多方面都感到困惑,那么你应该查阅 C++ 核心指南。它由热心的 C++ 开发社区创建,主要编辑是 Herb Sutter 和 Bjarne Stroustrup。

看这里:

C++ 核心指南 @Github

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md?fileGuid=HjDhgwWw6jPKDcCK

这里有一个漂亮的网站:

C++ 核心指南:网站

https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines?fileGuid=HjDhgwWw6jPKDcCK

只需输入你面临的问题(例如return value),你就可以轻松找到建议——例如:指南:返回值

使用这些指南将为你节省大量时间,并且你可以非常快地学习一些好的模式。

还有工具!

感谢 Clang 以及其他平台上的开发速度提升,我们获得了如下工具:

  • ClangTidy(以前是 clang-modernise)

  • Clang Format

  • Clang Static Analyzer

  • VisualAssist

  • Clion/ResharperC++

  • VisualStudio——像 C++ Core Checker 这样的工具

  • PVS Studio

  • 用于 VisualStudio 的 Clang Power Tools

  • 新的 C++ 核心检查规则|C++ 团队博客

  • C++ 核心指南检查器参考|微软文档

  • 介绍 vcperf/timetrace,用于 C++ 构建时间分析|C++ 团队博客

  • C++ Core Check 中的新安全规则|C++ 团队博客——C++ 和 Rust 一样安全吗?

或者查看我关于其他工具的文章:

C++ 生态系统:编译器、IDE、工具、测试等

https://www.cppstories.com/2019/10/cppecosystem/?fileGuid=HjDhgwWw6jPKDcCK

虽然它不像其他语言(主要基于 Java 或基于.NET)那么好,但它正在变得越来越好。请记住,由于 C++ 语法复杂,因此很难实现即时分析代码的工具。

努力跟上最新进展

C++ 社区非常活跃。有很多博客、书籍、会议……甚至有可能在你所在的城市有本地社区。

首先,我建议去 isocpp.org 查看所有事件 / 新闻 / 文章。然后你可以查看 Meeting C++ 和有关本地 C++ 小组的信息。还有 reddit/cpp,你可以在那里看到一些最棒的 C++ 故事。

还有 CppCast——一个针对 C++ 开发人员的每周播客。


 【公众号】:奇牛编程

C语言和C++入门教程

【C语言】五小时快速入门C语言:【C语言】五小时快速入门C语言

【C语言】零基础到项目实战(交换机项目):https://nxv.xet.tech/s/2bnZ5w

【C++】实战入门:智能婚恋交友系统:【C++】实战入门:智能婚恋交友系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/11548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机毕业设计】旅游网站ssm源码

下载链接:https://download.csdn.net/download/licongzhuo/87051535https://download.csdn.net/download/licongzhuo/87051535 一、系统截图(需要演示视频可以私聊) 摘 要 随着人民生活水平的提高,旅游业已经越来越大众化,而旅游业的核心是信息,不论是…

Redis数据结构之——跳表skiplist

写在前面 以下内容是基于Redis 6.2.6 版本整理总结 一、跳表(skiplist) 如何理解跳表?在了解跳表之前,我们先从普通链表开始,一点点揭开跳表的神秘面纱~ 首先,普通单链表来说,即使链表是有序…

第2-3-4章 上传附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

文章目录5.3 接口开发-上传附件5.3.1 接口文档5.3.2 代码实现5.3.3 接口测试5.3 接口开发-上传附件 第2-1-2章 传统方式安装FastDFS-附FastDFS常用命令 第2-1-3章 docker-compose安装FastDFS,实现文件存储服务 第2-1-5章 docker安装MinIO实现文件存储服务-springboot整合minio…

MindMaster思维导图及亿图图示会员 超值获取途径

MindMaster思维导图及亿图图示会员 超值获取途径 会员九折优惠方法分享给大家!如果有需要,可以上~ 以下是食用方法: MindMaster 截图 亿图图示 截图 如果需要MindMaster思维导图或者亿图图示会员,可按照如下操作领取超值折扣优惠…

SaaS系统平台赋能大健康产业互联网变革,助力企业提升市场占有率

当前,数字化浪潮正在重塑大健康产业。随着全国多个重要省市的数字医疗、数字医保等措施正火热展开,我国大健康产业的数字化转型进程正在提速,这也为新一轮的行业洗牌带来新的发展机遇。 大健康产业数字化转型痛点:传统医疗信息化…

消息队列之kafka

1.先部署zookeeper集群 2.了解zookeeper 分布式服务系统框架:存储业务服务节点的元数据及状态信息并 负责通知zookeeper上注册服务节点给客户端 一、Zookeeper 概述 官方下载地址:archive.apache.org/dist/zookee… 1.1 Zookeeper 定义 Zookeeper…

使用KNN进行手写体识别和iris数据集分类

文章目录手写体识别iris数据集分类手写体识别 首先使用load_digits将数据加载,这里的数据集有1797个样本,前1384个训练数据而后面的413个样本作为测试集,每个数据集中的样本是8*8像素的图像和一个[0, 9]整数的标签。紧接着输出64个样本的图像…

【Egg从基础到进阶】二:安装本地Mysql

什么是数据库: 数据库是用于将数据持久化存储的一个容器,并且在这个容器处于云端,而不是像游览器的本地存储一样,数据只是针对你当前所在游览器。游览器的存储是一对一的。而线上数据库的存储是一对多的,或者是多对多的…

被欧美公司垄断近 20 年,中国工业软件的机会在哪里?

【CSDN 编者按】工业软件,又被称之为是现代工业体系的“大脑”。近年来,在政府、企业、从业者等各方的齐心协力之下,中国工业软件市场规模不断壮大,逐渐成为“制造大国”。然而,站在全球的角度来看,相较一些…

使用小程序制作一个飞机大战小游戏

此文主要基于微信小程序制作一个飞机大战小游戏,上手即用,操作简单。 一、创建小程序二、页面实现三、代码块一、创建小程序 访问微信公众平台,点击账号注册。 选择小程序,并在表单填写所需的各项信息进行注册。 在开发管理选择开…

rancher部署nginx服务

前言:目前主流的开发模式是前后端分离,前端也会单独打包进行部署,一般就是把前端打包好的文件放到nginx目录下,和nginx一起部署,最终通过nginx来访问。 通用的dockerfile文件,用来构建nginx镜像 FROM ngi…

如何从测试新手变成测试大牛

如何从测试新手变成测试大牛,作为一个刚入行的测试新手,如何让自己提升自身能力,变成一个无所不能的测试大牛,本文将从多个方面来告诉你努力的方向,希望能帮助到你。 一:扎实的测试理论知识 作为一个测试人&#xff0…

nvcc编译器之编译内幕(chapter 23)

目录 2. 编译阶段(步骤) 2.1 NVCC预定义宏 2.2 NVCC编译步骤 2.3 NVCC支持的文件后缀 2.4 支持的编译阶段 3. CUDA 编译内幕 2. 编译阶段(步骤) 2.1 NVCC预定义宏 __NVCC__ 在编译C/C/CUDA源文件时定义 __CUDACC__ 在编译…

[附源码]java毕业设计教师教学评价系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

java之你真正了解抽象类和接口嘛?

🎇🎇🎇作者: 小鱼不会骑车 🎆🎆🎆专栏: 《java练级之旅》 🎓🎓🎓个人简介: 一名专科大一在读的小比特,努力学习编程是我…

Nexus私服仓库Linux、Windows部署教程

Nexus 概述 Nexus 是 Sonatype 公司发布的一款仓库(Repository)管理软件,常用来搭建 Maven 私服,所以也有人将 Nexus 称为“Maven仓库管理器”。 主流的 Maven 仓库管理器主要有以下 3 种:Apache Archiva、JFrog Arti…

软考信息安全工程师案列分析

1.第一题 1.动态存储区,分配存储空间和释放存储空间 3.让argv[]中的第9个字符是十进制65即可。 4.缓冲区溢出漏洞,使用安全的strcpy函数,检测边界 第二题 第三题 1.保证M完整性 不能交换,先hash摘要可以减少加密的计算量。 2.实现…

STM8S系列基于STVD开发,自定义printf函数+TIM5精确延时函数模块化工程示例

STM8S系列基于STVD开发,自定义printf函数TIM5精确延时函数模块化工程示例🎬功能演示 ✨本例也是结合了网络上收集来的printf自定义内容,将其功能模块化,方便移植使用,灵活性很强。 📚相关篇内容《STM8S903…

leetcode:792. 匹配子序列的单词数【子序列二分优化模板 + 大的字符串不变的二分优化】

目录题目截图题目分析ac code总结题目截图 题目分析 简单的子序列判断需要on,那么最后最坏就是omn,25 * 10 ^ 7爆炸因此需要优化子序列判断注意到此时的大字符串是同一个记录每个字母出现的下标遍历word,找到下一个最近的字母出现的位置&…

C++【C++11】

文章目录一、统一的列表初始化1.用{}来初始化元素2.initializer_list二、自动类型推断3.auto4.decltype三、指针5.nullptr6.范围for四、STL中的一些新变化1.新增加的容器2.容器内部的变化一、统一的列表初始化 1.用{}来初始化元素 在C98中,标准允许使用花括号{}对…