c++入门一

参考:https://www.learncpp.com/cpp-tutorial/

  • When you finish, you will not only know how to program in C++, you will know how NOT to program in C++, which is arguably as important.

  • Tired or unhappy programmers make mistakes, and debugging code tends to take much longer than writing it correctly 。

如何最大化学习
1.手打,自己编译,可以让你最快熟悉变异警告和错误,想每一行代码作用,不懂就去深入
2.自己改bug,学会调适
3.用例子试验。改参数看看会发生啥
4.参加测验
5.用学到的内容自己编码

介绍编程语言

机器语言。CPU可以直接读写,0,1组成,每一个0/1是比特,组成命令的比特数量可能不同,一些CPU指令长度是32位,x86可变
由于不同CPU有不同指令集,因此为一种类型的CPU程序不能移植到另一种类型的CPU

汇编语言:每一条指令有缩写表示,可以用名称和其他数字。比机器语言容易读写,但是理解较难,需要重写
才能运行在不同指令集的硬件

高级语言:为了解决可读性和移植性问题,开发了新的编程语言。
编译(C,C++,Pascal):读取源代码,生成可执行程序
解释:更灵活,效率更低。直接执行指令,无需编译成可执行文件。
(java混合使用两者)

C/C++简介:

C语言由贝尔电话实验室的Dennis Ritchie于1972年开发,主要作为一种系统编程语言(一种用于编写操作系统的语言)。
C++(发音为“see plus plus”)由贝尔实验室的Bjarne Stroustrup开发,作为C语言的扩展,始于1979年。C++为C语言增加了许多新功能,它是一种面向对象的语言。
C 和 C++ 的基本设计理念可以概括为“信任程序员”——这既美妙又危险。C++旨在让程序员有高度的自由度来做他们想做的事。然而,这也意味着语言通常不会阻止你做一些没有意义的事情,因为它会假设你这样做是出于某种它不理解的原因。如果新程序员措手不及,可能会陷入很多陷阱。这就是为什么知道在C / C++中不应该做什么几乎与知道应该做什么一样重要的主要原因之一。

C++擅长什么?
C++在需要高性能和精确控制内存和其他资源的情况下表现出色。
电子游戏,实时系统,高性能金融应用(高频交易)
图形应用程序和抹零
办公应用
嵌入式软件‘音频和视频处理
AI,神经网络

介绍C++开发环境

1.定义要解决的问题
2.确定如何解决问题
很多时候,程序员会得到一个想法,坐下来,然后立即开始编写解决方案。这通常会生成属于不良类别的解决方案。
通常,良好的解决方案具有以下特征:straightforward,welldocumented,模块化构建,鲁棒性,意外情况时提供有用信息
当您坐下来立即开始编码时,您通常会想“我想做”,因此您可以实施最快实现目标的解决方案。这可能导致程序脆弱,以后难以更改或扩展,或者存在大量错误(技术缺陷)。

研究表明,程序员实际上只有20%的时间花在编写初始程序上。另外 80% 用于维护,包括调试(删除错误)、应对环境变化的更新(例如,在新操作系统版本上运行)、增强(提高可用性或功能的微小更改)或内部改进(提高可靠性或可维护性)。
因此,值得你花一点额外的时间(在你开始编码之前)思考解决问题的最佳方法,你正在做出什么假设,以及你如何计划未来,以便为自己节省大量的时间和麻烦。

3.编写程序

4.编译源代码
检查代码是否遵循C++语法规则,将C+源码转换为机器语言文件name.ojb

5.链接对象文件和库
获取编译器生成的所有文件,并将它们组合在单个可执行程序中。
除了能链接对象文件外,链接器还能链接库文件。(预编译代码集合,被打包以便其他程序重用)
C++核心语言实际上相当小而简洁(您将在这些教程中学到很多内容)。但是,C++还附带了一个称为C++标准库(通常缩写为标准库)的广泛库,该库提供了可在程序中使用的其他功能。C++标准库中最常用的部分之一是 iostream 库,它包含用于在显示器上打印文本和从用户获取键盘输入的功能。几乎每个编写C++程序都以某种形式使用标准库,因此标准库链接到您的程序中是很常见的。大多数链接器会在您使用标准库的任何部分后立即自动链接,
第三,,链接器确保正确解析所有跨文件依赖项。例如,如果在一个.cpp文件中定义某些内容,然后在另一个.cpp文件中使用它,则链接器会将两者连接在一起。如果链接器无法将引用连接到具有其定义的某些内容,则会收到链接器错误,并且链接过程将中止。
链接器完成链接所有对象文件和库后(假设一切顺利),您将拥有一个可执行文件,然后可以运行该文件!

链接库

链接库(Library)是预先编译好的可重用代码的集合,可以通过链接到应用程序中来实现功能的共享和重用。链接库通常包含函数、类、数据结构等代码和数据资源,通过将其与应用程序进行链接,可以在应用程序中调用这些库中提供的功能。

链接库有两种主要类型:静态链接库和动态链接库。

静态链接库(Static Library):

静态链接库在编译时被链接到应用程序中,形成一个独立的可执行文件。这意味着应用程序会包含链接库的所有代码和数据,使得应用程序能够独立运行。
使用静态链接库的优点是简单、方便,无需额外的运行时环境依赖。但缺点是每个使用该库的应用程序都会复制一份库的代码和数据,造成代码冗余和文件占用空间增加。
动态链接库(Dynamic Link Library,DLL):

动态链接库在运行时被加载到内存中,多个应用程序可以共享同一个动态链接库的实例。这意味着不同的应用程序可以共享同一个库,从而减少了内存开销和磁盘空间。
使用动态链接库的优点是节省内存和磁盘空间,同时可以通过更新动态链接库来修复和改进库中的功能。但缺点是应用程序在运行时需要依赖相应的动态链接库文件,如果缺少或版本不匹配会导致运行错误。
链接库广泛应用于软件开发中,可以提供各种功能和服务,例如数据库操作、图形界面、网络通信等。常见的链接库包括标准库(如C++标准库、C标准库)、第三方库(如OpenCV、Boost)、操作系统提供的库(如Windows API)等。

要在项目中使用链接库,通常需要将库文件与应用程序进行链接,并在代码中引用相应的头文件来访问库中的函数和数据结构。具体的链接方法和引用方式取决于开发环境和编程语言。
6.Testing 测试
7.Debugging 调试

IDE介绍

Integrated development environments (IDEs)

visual studio (选择C++桌面开发,了Windows 10 SDK(或Windows 11 SDK))

在这里插入图片描述
Code::Blocks (for Linux or Windows)
Blocks。Code::Blocks是一个免费的,开源的,跨平台的IDE,可以在Linux和Windows上运行。
某些 Linux 安装可能缺少使用 Code::Block 运行或编译程序所需的依赖项。:sudo apt-get install build-essential.

Visual Studio Code

是经验丰富的开发人员的热门选择,因为它快速,灵活,开源,适用于多种编程语言,并且可用于许多不同的平台。缺点是VS Code比此列表中的其他选项更难正确配置(在Windows上,也更难安装)。

编译第一个程序program

Projects 项目:
通常从一个项目开始,每个项目project对应一个程序program

控制台项目:
控制台项目意味着我们将创建可以从Windows,Linux或Mac控制台运行的程序。

默认情况下,控制台应用程序没有图形用户界面 (GUI),它们将文本打印到控制台,从键盘读取输入,并编译为独立的可执行文件。

IDE 中的编译、生成、重新生成、清理和运行/启动选项之间有什么区别?

编译代码文件时,IDE 可能会缓存生成的对象文件。这样,如果将来再次编译程序,则不需要重新编译任何未修改的代码文件 - 可以重用上次缓存的对象文件。这可以显著加快编译时间(以一点磁盘空间为代价)。

Build :生成编译项目或工作区/解决方案中所有已修改的代码文件,然后将目标文件链接到可执行文件中。如果自上次生成以来未修改任何代码文件,则此选项不执行任何操作。

Clean:删除所有缓存的对象和可执行文件,以便下次生成项目时,将重新编译所有文件并生成新的可执行文件。

Rebuild :clean+build

Compile:重新编译单个代码文件(无论它以前是否已缓存)。此选项不会调用链接器或生成可执行文件。

Run/start :执行上一次build生成的可执行文件。一些IDE会(比如Visual Studio)在run之前build确保运行的是代码最新版本

一些常见的C++问题

一般运行时问题

  1. 执行程序时,控制台窗口闪烁,然后立即关闭
    首先,添加或确保以下行靠近程序的顶部(Visual Studio 用户,请确保这些行出现在“pch.h”或 #include“stdafx.h”#include 之后,如果存在):
#include <iostream>
#include <limits>

其次,在 main() 函数的末尾添加以下代码(在 return 语句之前):

std::cin.clear(); // reset any error flags
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // ignore any characters in the input buffer until we find an enter character
std::cin.get(); // get one more char from the user

这将导致程序等待用户按某个键,然后再继续,这将使您有时间在操作系统关闭控制台窗口之前检查程序的输出。

  1. 我运行了我的程序并得到了一个窗口,但没有输出。
    您的病毒扫描程序或反恶意软件可能会阻止执行。尝试暂时禁用它,看看这是否是问题所在。

  2. 我的程序可以编译,但无法正常工作。我该怎么办?
    调试它

一般编译时问题

  1. 编译程序时,收到有关未解析的外部符号_main或_WinMain@16的错误
    这意味着你的编译器找不到你的 main() 函数。所有程序都必须包含 main() 函数。

  2. 我正在尝试使用 C++11/14/17/XX 功能,但它不起作用
    如果您的编译器较旧,则它可能不支持该语言的这些最新添加功能。在这种情况下,请升级编译器。

  3. 当尝试使用 cin、cout 或 endl 时,编译器会说 cin、cout 或 endl 是“未声明的标识符”
    请确保在文件顶部附近包含以下行:

#include <iostream>

其次,确保每次使用 cin、cout 和 endl 都以“std::”为前缀。

std::cout << "Hello world!" << std::endl;

如果这不能解决您的问题,则可能是您的编译器已过期,或者安装已损坏。尝试重新安装和/或升级到最新版本的编译器。

  1. 当尝试使用 endl 结束打印的行时,编译器说 end1 是“未声明的标识符”
    确保不要将endl中的字母l(小写L)误认为数字1。endl都是字母。确保您的编辑器使用的字体清楚地表明字母小写 L、大写 i 和数字 1 之间的差异。此外,在许多非编程字体中,字母大写字母 o 和数字零很容易混淆。

  2. 编译程序时,出现“文件末尾没有换行符”错误
    C++ 标准要求所有源 (.cpp) 文件都以换行符结尾。

C++ 标准要求所有源 (.cpp) 文件都以换行符结尾

  1. c:\vcprojects\test.cpp(263) :fatal error C1010: unexpected end of file while looking for precompiled header directive

当 Microsoft Visual C++ 编译器设置为使用预编译标头,但C++代码文件中的一个(或多个)未 #include“stdafx.h”或 #include“pch.h”作为代码文件的第一行时,会发生此错误。我们建议的解决方法是关闭预编译标头

  1. “1MSVCRTD.lib(exe_winmain.obj) : error LNK2019: unresolved external symbol _WinMain@16 referenced in function “int __cdecl invoke_main(void)” (?invoke_main@@YAHXZ)”

您可能已经创建了 Windows 图形应用程序,而不是控制台应用程序。重新创建项目,并确保将其创建为 Windows(或 Win32)控制台项目。

  1. “Cannot find or open the PDB file”

这是一个警告,而不是错误,因此它不会影响您的程序。但是,这很烦人。要修复它,请进入调试菜单 -> 选项和设置 ->符号,然后选中“Microsoft符号服务器”。

配置编译器:构建配置

生成配置(也称为生成目标)是项目设置的集合,用于确定 IDE 将如何生成项目。构建配置通常包括可执行文件的名称、IDE 将在哪些目录中查找其他代码和库文件、是保留还是删除调试信息、让编译器优化程序的程度等内容。通常,您需要将这些设置保留为其默认值,除非您有特定原因需要更改某些内容。

在 IDE 中创建新项目时,大多数 IDE 将为您设置两种不同的生成配置:发布配置和调试配置。

  • 调试配置旨在帮助您调试程序,通常是编写程序时将使用的配置。此配置关闭所有优化,并包含调试信息,这使程序更大、更慢,但更易于调试。默认情况下,通常选择调试配置作为活动配置。

  • 发布配置旨在在向公众发布程序时使用。此版本通常针对大小和性能进行了优化,并且不包含额外的调试信息。由于发布配置包括所有优化,因此此模式对于测试代码的性能也很有用

修改构建配置:
每当更新项目设置时,请对所有生成配置进行更改

配置编译器:编译器扩展

建议关闭编译器扩展:
编写使用编译器扩展的程序允许您编写与C++标准不兼容的程序。使用非标准扩展的程序通常不会在其他编译器(不支持这些相同的扩展)上编译,或者如果它们这样做,它们可能无法正常运行。

配置编译器:警告和错误级别

当你编写程序时,编译器将检查以确保你遵循了C++语言的规则

如果您做了一些明显违反语言规则的事情,在编译过程中,编译器将发出一个错误,提供包含错误的行号,以及一些关于预期内容与发现内容的文本。实际错误可能位于该行或前一行。识别并修复错误代码行后,可以再次尝试编译。

在其他情况下,编译器可能会发现看似错误的代码,但编译器无法确定(记住座右铭:“相信程序员”)。在这种情况下,编译器可以选择发出警告。警告不会停止编译,而是向程序员发出似乎不对劲的通知。

Best practice 最佳实践:
不要让警告堆积如山。在遇到它们时解决它们(就好像它们是错误一样)。否则,有关严重问题的警告可能会在有关非严重问题的警告中丢失。

在极少数情况下,可能需要显式告诉编译器不要为相关代码行生成特定警告。

提高警告级别

默认情况下,大多数编译器只会生成有关最明显问题的警告。但是,您可以要求编译器更加自信地为它发现奇怪的事情提供警告。

1.在“解决方案资源管理器”窗口中右键单击项目名称,然后选择“属性”

2.在“项目”对话框中,首先确保“配置”字段设置为“所有配置”。

3.然后选择“C/C++ >常规”选项卡,并将“警告级别”设置为“级别 4”(/W4)

Best practice 最佳实践:
启用“将警告视为错误”。这将强制您解决导致警告的所有问题。

将“将警告视为错误”设置为“是 (/WX)”。

配置编译器:选择语言标准

有许多不同的C++版本可用(C++98、C++03、C++11、C++14、C++17、C++20、C++23 等),您的编译器如何知道要使用哪一个?通常,编译器会选择一个默认标准。通常,默认值不是最新的语言标准 - 许多默认为C++14,它缺少许多最新和最强大的功能。

如果您希望使用不同的语言标准(您可能会这样做),则必须配置 IDE/编译器才能这样做。

语言标准的代码名称:最终的语言标准以其最终确定的年份命名(例如C++17于2017年定稿)。

您应该选择哪种语言标准?
在专业环境中,通常会选择比最新标准落后一两个版本的语言标准(例如,如果 C++20 是最新版本,则表示 C++14 或 C++17)。这样做通常是为了确保编译器制造商有机会解决缺陷,以便充分理解新功能的最佳实践。在相关的情况下,这也有助于确保更好的跨平台兼容性,因为某些平台上的编译器可能无法立即提供对较新语言标准的完全支持。

若要选择语言标准,请打开项目,然后转到“项目”菜单>“(应用程序的名称)属性”,然后打开“配置属性”>“C/C++ > 语言”。

导出配置

每次创建新项目时都必须重新选择所有设置选项,这很麻烦。幸运的是,大多数 IDE 都提供了一种导出设置的方法。这通常是通过使用所需的设置创建新的项目模板,然后在创建新项目时选择该项目模板来完成的。

在 Visual Studio 中,此选项可通过 Project -> 导出模板获得。选择“项目模板”,添加名称和可选描述(例如C++20控制台应用程序),然后单击“完成”。下次创建新项目时,您会看到此模板显示在项目模板列表中。使用此模板创建新项目后,它可能无法打开任何文件。可以通过转到“解决方案”-> <项目名称>->源文件-> <模板名称>.cpp,在“解决方案资源管理器”窗口中打开.cpp文件。

.cpp 与.h文件关系运行/启动从以前的生成执行可执行文件。某些 IDE(例如 Visual Studio)会在执行“运行”之前调用“构建”,以确保您运行的是最新版本的代码

在C++中,通常使用.cpp文件和.h文件(或者.hpp文件)组合来管理代码。这种文件组织方式常被称为分离式编译。

.cpp文件包含实际的源代码实现。它包含类的方法定义、函数的具体实现等。

.h文件(或者.hpp文件)是头文件,它包含类、结构和函数的声明。头文件中通常只包含类成员函数的原型、变量的声明和必要的宏定义等。可以将头文件看作是对应源文件的接口。

基本上,.cpp文件包含了实现,而.h文件包含了声明。头文件的目的是在不暴露实现细节的情况下,向其他源文件提供访问类和函数的接口。

在编译过程中,编译器会将.cpp文件编译为目标文件,然后将多个目标文件链接在一起形成可执行文件。头文件的声明用于验证代码的正确性并确保符号解析正确。

因此,.cpp文件和.h文件之间的关系是,.cpp文件包含了具体实现,而.h文件提供了接口声明。头文件通过#include预处理指令来引入,以便在编译过程中能够访问到相应的声明。

OPENCV

配置环境
https://blog.csdn.net/ycx_ccc/article/details/123258001

报错dll找不到
https://blog.csdn.net/op_chaos/article/details/114023937

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

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

相关文章

软考高级架构师——6、软件架构设计

像学写文章一样&#xff0c;在学会字、词、句之后&#xff0c;就应上升到段落&#xff0c;就应追求文章的“布局谋 篇”&#xff0c;这就是架构。通俗地讲&#xff0c;软件架构设计就是软件系统的“布局谋篇”。 人们在软件工程实践中&#xff0c;逐步认识到了软件架构的重要性…

HarmonyOS Codelab 优秀样例——购物应用,体验一次开发多端部署魅力

一. 样例介绍 本篇Codelab基于自适应布局和响应式布局&#xff0c;实现购物应用在手机、折叠屏、平板不同屏幕尺寸设备上按不同设计显示。通过三层工程结构组织代码&#xff0c;实现一次开发&#xff0c;多端部署 。 手机运行效果如图所示&#xff1a; 折叠屏运行效果图&#x…

C语言:大小端字节序存储

一、大小端字节序存储介绍 大端字节序存储模式&#xff1a;把一个数据低位字节处的数据存放在高地址处&#xff0c;数据高位字节处的数据存放在低地址处 小端字节序存储模式&#xff1a;把一个数据低位字节处的数据存放在低地址处&#xff0c;数据高位字节处的数据存放在高地址…

MATLAB中isequal函数转化为C语言

背景 有项目算法使用matlab中isequal函数进行运算&#xff0c;这里需要将转化为C语言&#xff0c;从而模拟算法运行&#xff0c;将算法移植到qt。 MATLAB中isequal简单介绍 语法 tf isequal(A,B) tf isequal(A1,A2,...,An) 说明 如果 A 和 B 等效&#xff0c;则 tf is…

【Python】PySpark 数据计算 ⑤ ( RDD#sortBy方法 - 排序 RDD 中的元素 )

文章目录 一、RDD#sortBy 方法1、RDD#sortBy 语法简介2、RDD#sortBy 传入的函数参数分析 二、代码示例 - RDD#sortBy 示例1、需求分析2、代码示例3、执行结果 一、RDD#sortBy 方法 1、RDD#sortBy 语法简介 RDD#sortBy 方法 用于 按照 指定的 键 对 RDD 中的元素进行排序 , 该方…

用 ChatGPT 写代码太省时间了

几个月前&#xff0c;我们聊过陶哲轩使用 ChatGPT 辅助解决数学问题。当时&#xff0c;他觉得虽然测试结果不太令人满意&#xff0c;但也并没有对 ChatGPT 持完全否定的态度。他觉得&#xff0c;像 ChatGPT 这类大型语言模型在数学中可以用来做一些半成品的语义搜索工作&#x…

(超简单)将图片转换为ASCII字符图像

将一张图片转换为ASCII字符图像 原图&#xff1a; 效果图&#xff1a; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileWriter; import java.io.IOException;public class ImageToASCII {/*** 将图片转换为A…

保姆级教程之SABO-VMD-SVM的西储大学轴承诊断

之前写过一篇优化核极限学习机的轴承诊断&#xff0c;今天再出一期基于SVM的轴承诊断。 依旧是包含了从数据处理&#xff0c;到减法优化器SABO算法优化VMD参数&#xff0c;再到支持向量机的故障诊断&#xff0c;实现故障诊断的全流程&#xff0c;其他类型的故障诊断均可参考此流…

阿里云对象存储oss-文件上传过程详解(两种方式)

阿里云对象存储oss-文件上传过程详解{两种方式} 方式一(最新代码,时间:2023/8/27)(1)如何配置系统变量(2)完整代码 方式二(跟黑马最新教程同代码)(1)在复制下来的代码中(2)完整代码 方式一(最新代码,时间:2023/8/27) 问题:需要配置系统变量才能够使用 (1)如何配置系统变量 以wi…

服务器挂机赚钱之Traffmonetizer教程挂机,利用闲置的Vps赚钱

互联网VPS赚钱的项目traffmonetizer挂机&#xff0c;原理就是traffmonetizer通过共享闲置的带宽售卖给平台&#xff0c;然后平台将产生的收益就归你。如果你有闲置的vps服务器都可以通过traffmonetizer挂机赚钱。 VPS赚钱开始注册 实话实说吧&#xff0c;这个就是来拉人头的&…

linux深入理解多进程间通信

1.进程间通信 1.1 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件…

Dockerfile 使用教程

1.Dockerfile 1.1 什么是Dockerfile Dockerfile可以认为是 Docker镜像的描述文件&#xff0c;是由一系列命令和参数构成的脚本 。主要作用是 用来构建docker镜像的构建文件 。 通过架构图可以看出通过DockerFile可以直接构建镜像 1.2 Dockerfile解析过程 构建镜像步骤&#xf…

手机怎么剪视频?分享一些剪辑工具和注意事项

视频剪辑是一种将多个视频片段进行剪切、合并和编辑的技术&#xff0c;它可以帮助我们制作出精彩的视频作品。如今&#xff0c;随着智能手机的普及&#xff0c;我们可以随时随地使用手机进行视频剪辑。本文将为大家介绍一些手机剪辑工具和注意事项&#xff0c;帮助大家更好地进…

Java:Springboot和React中枚举值(数据字典)的使用

目录 1、开发中的需求2、实现效果3、后端代码4、前端代码5、接口数据6、完整代码7、参考文章 1、开发中的需求 开发和使用过程中&#xff0c;通常会涉及四个角色&#xff1a;数据库管理员、后端开发人员、前端开发人员、浏览者 数据库使用int类型的数值进行存储&#xff08;e…

快速为RPG辅助工具MTool增加更多快捷键(一键保存等)

起源&#xff1a;MTool是个好工具&#xff0c;本身固然好用&#xff0c;但是它本身的快捷键功能很少&#xff0c;虽然内置了一个录制工具&#xff0c;但是一个个的录&#xff0c;又麻烦&#xff0c;一般人也难以掌握 本文用快速方法增加更多快捷键&#xff0c;可以做到一键保存…

基于粒子群算法的考虑需求响应的风-光-柴-储容量优化配置

目录 文章摘要&#xff1a; 研究背景&#xff1a; 考虑柔性负荷的风、光、柴、储微电网模型&#xff1a; 储能配置模型&#xff1a; 粒子群算法&#xff1a; 运行结果&#xff1a; 1. 全年运行效果展示&#xff1a; 2. 典型日运行效果&#xff1a; Matlab代码数据分享…

【前端demo】CSS border-radius可视化 原生实现

文章目录 效果原理代码 前端demo系列目录&#xff1a;https://blog.csdn.net/karshey/article/details/132585901 效果 效果预览&#xff1a;https://codepen.io/karshey/pen/zYyBPBR 参考&#xff1a; Fancy Border Radius Generator (9elements.github.io) https://borde…

测试开发【Mock平台】09开发:项目管理(五)搜索、删除和Table优化

【Mock平台】为系列测试开发教程&#xff0c;从0到1编码带你一步步使用Spring Boot 和 Antd React框架完成搭建一个测试工具平台&#xff0c;希望作为一个实战项目对各位的测试开发学习之路有帮助&#xff0c;大奇一个专注测试技术干货原创与分享的家伙。 Mock平台系统项目基本…

数据集学习笔记(六):目标检测和图像分割标注软件介绍和使用,并转换成YOLO系列可使用的数据集格式

文章目录 一、目标检测1.1 labelImg1.2 介绍1.3 安装1.4 使用1.5 转换1.6 验证 二、图像分割2.1 labelme2.2 介绍2.3 安装2.4 使用2.5 转换2.6 验证 一、目标检测 1.1 labelImg 1.2 介绍 labelImg是一个开源的图像标注工具&#xff0c;用于创建图像标注数据集。它提供了一个…

iOS 设置下载部分文件,如何获取完整文件的大小

在视频的需求中&#xff0c;遇到这样一个需求&#xff0c;播放一视频的时候&#xff0c;要预下载 后面10条视频&#xff0c;但是只下载后面十条视频的前面1M 实现方法 1 创建请求时设置cacheLength resource [[IdiotResource alloc] init];resource.requestURL task.request…