当前位置: 首页 > news >正文

C++教程(初级,有基础)

C++教程(初级,有基础)

#include <iostream>
using namespace std;
int main()
{	/*对应printf("")*/cout << "Hello, world!" << endl;//cout << "Hello, world!" << "\n";return 0;
}
  • C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

  • C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。

  • C++ 是 C 的一个超集,任何合法的 C 程序都是合法的 C++ 程序。

  • 面向对象开发的四大特点:封装、抽象、继承、多态

  • 三个重要组成部分

    1. 核心语言:所有结构块
    2. C++标准库
    3. 标准库模板(STL)

基本语法

  • 对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 。对象是类的实例。
  • 类 - 类可以定义为描述对象行为/状态的模板/蓝图。
  • 方法 - 从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。
  • 即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。
#include <iostream>//必要的头文件
using namespace std;//用std命名的空间
// main() 是程序开始执行的地方
int main()
{cout << "Hello World"; // 输出 Hello World 对标printfreturn 0;
}

数据类型

type:         ************size**************
bool:         所占字节数:1    最大值:1        最小值:0
char:         所占字节数:1    最大值:        最小值:?
signed char:     所占字节数:1    最大值:        最小值:?
unsigned char:     所占字节数:1    最大值:?        最小值:
wchar_t:     所占字节数:4    最大值:2147483647        最小值:-2147483648
short:         所占字节数:2    最大值:32767        最小值:-32768
int:         所占字节数:4    最大值:2147483647    最小值:-2147483648
unsigned:     所占字节数:4    最大值:4294967295    最小值:0
long:         所占字节数:8    最大值:9223372036854775807    最小值:-9223372036854775808
unsigned long:     所占字节数:8    最大值:18446744073709551615    最小值:0
double:     所占字节数:8    最大值:1.79769e+308    最小值:2.22507e-308
long double:     所占字节数:16    最大值:1.18973e+4932    最小值:3.3621e-4932
float:         所占字节数:4    最大值:3.40282e+38    最小值:1.17549e-38
size_t:     所占字节数:8    最大值:18446744073709551615    最小值:0
string:     所占字节数:24
type:         ************size**************

typedef声明

typedef type newname; 
typedef int feet;//feet 是 int 的另一个名称:
feet distance;//int distance

枚举类型

enum color { red, green=5, blue };//blue=6 red=0

变量声明(extern)

  1. int a 声明,也是定义 需要建立存储空间
  2. extern int a 声明,不是定义 不需要建立存储空间,通过extern声明变量名而不定义它

extern 存储类 全局变量,对所有程序文件都可见,

  1. 对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。
  2. extern 是用来在另一个文件中声明一个全局变量或函数。

左值/右值

  1. 左值lvalue :可以出现在赋值号 左边或右边 int a=0;
  2. 右值rvalue :术语右值,存储在内存中某些地址的数值。只能出现在右边 10=20(报错)

作用域

  1. 在函数或块内部的局部变量 局部和全局同名时用局部保存在
  2. 在所有函数外部的全局变量 保存在静态存储单元
  3. 形式参数的函数参数定义中

常量

比c多一个bool:布尔常量共有两个,它们都是标准的 C++ 关键字:

  • true 值代表真。1
  • false 值代表假。0

存储类

  • auto 默认存储类 修饰局部变量
  • register 存储类 在寄存器中不是在RAM的局部变量,(一个寄存器大小)
  • static 存储类
    1. 在函数调用之间保持局部变量的值,每次调用该函数时,只初始化一次
    2. 用于全局变量,作用域在声明它的文件内
static int a=10;//a是全局变量可直接调用
int main(){while(a--){fun();}return 0;
}
void fun(void){static int b=5;//局部变量,值初始化一次为5,后面不会再重置b++;print("%d,%d",a,b);//%输出""内的内容,
}
9,6
8,7
7,8.....
  • extern 存储类 全局变量,对所有程序文件都可见,

    1. 对于无法初始化的变量,会把变量名指向一个之前定义过的存储位置。
    2. extern 是用来在另一个文件中声明一个全局变量或函数。
  • mutable存储类

    允许对象的成员替代常量:nutable成员可以通过const成员函数修改

  • thread_local存储类

    仅可在它在其上创建的线程上访问,在创建线程时创建,并在销毁线程时销毁

运算符

  • 算术运算符
  • 关系运算符
  • 逻辑运算符
  • 位运算符
  • 赋值运算符
  • 杂项运算符

循环

判断

函数

return_type function_name( parameter list )
{body of the function
}
  • **返回类型:**一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void
  • **函数名称:**这是函数的实际名称。函数名和参数列表一起构成了函数签名。
  • **参数:**参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
  • **函数主体:**函数主体包含一组定义函数执行任务的语句。

函数参数

传值调用(默认)

把参数的实际值赋值给函数的形式参数。这种情况下,修改函数内的形式参数对实际参数没有影响。

#include <iostream>
using namespace std;// 函数声明
void swap(int x, int y);
// 函数定义
void swap(int x, int y)
{int temp;temp = x; /* 保存 x 的值 */x = y;    /* 把 y 赋值给 x */y = temp; /* 把 x 赋值给 y */return;
}
int main ()
{// 局部变量声明int a = 100;int b = 200;cout << "交换前,a 的值:" << a << endl;cout << "交换前,b 的值:" << b << endl;// 调用函数来交换值swap(a, b);cout << "交换后,a 的值:" << a << endl;cout << "交换后,b 的值:" << b << endl;return 0;
}
交换前,a 的值: 100
交换前,b 的值: 200
交换后,a 的值: 100
交换后,b 的值: 200 

在函数内改变了xy的值,但实际ab没变

指针调用

把参数的地址复制给形式参数,修改形参会记录到参数地址中,再调用该地址,指会变

// 函数定义
void swap(int *x, int *y)
{int temp;temp = *x;    /* 保存地址 x 的值 */*x = *y;        /* 把 y 赋值给 x */*y = temp;    /* 把 x 赋值给 y */return;
}
#include <iostream>
using namespace std;// 函数声明
void swap(int *x, int *y);int main ()
{// 局部变量声明int a = 100;int b = 200;cout << "交换前,a 的值:" << a << endl;cout << "交换前,b 的值:" << b << endl;/* 调用函数来交换值* &a 表示指向 a 的指针,即变量 a 的地址 * &b 表示指向 b 的指针,即变量 b 的地址 */swap(&a, &b);cout << "交换后,a 的值:" << a << endl;cout << "交换后,b 的值:" << b << endl;return 0;
}
交换前,a 的值: 100
交换前,b 的值: 200
交换后,a 的值: 200
交换后,b 的值: 100
引用调用

把引用的地址复制给形参,引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。

// 函数定义
void swap(int &x, int &y)
{int temp;temp = x; /* 保存地址 x 的值 */x = y;    /* 把 y 赋值给 x */y = temp; /* 把 x 赋值给 y  */return;
}
#include <iostream>
using namespace std;// 函数声明
void swap(int &x, int &y);int main ()
{// 局部变量声明int a = 100;int b = 200;cout << "交换前,a 的值:" << a << endl;cout << "交换前,b 的值:" << b << endl;/* 调用函数来交换值 */swap(a, b);cout << "交换后,a 的值:" << a << endl;cout << "交换后,b 的值:" << b << endl;return 0;
}// 函数定义
void swap(int &x, int &y)
{int temp;temp = x; /* 保存地址 x 的值 */x = y;    /* 把 y 赋值给 x */y = temp; /* 把 x 赋值给 y  */return;
}
交换前,a 的值: 100
交换前,b 的值: 200
交换后,a 的值: 200
交换后,b 的值: 100

数字

中的函数

序号函数 & 描述
1double cos(double); 该函数返回弧度角(double 型)的余弦。
2double sin(double); 该函数返回弧度角(double 型)的正弦。
3double tan(double); 该函数返回弧度角(double 型)的正切。
4double log(double); 该函数返回参数的自然对数。
5double pow(double, double); 假设第一个参数为 x,第二个参数为 y,则该函数返回 x 的 y 次方。
6double hypot(double, double); 该函数返回两个参数的平方总和的平方根,也就是说,参数为一个直角三角形的两个直角边,函数会返回斜边的长度。
7double sqrt(double); 该函数返回参数的平方根。
8int abs(int); 该函数返回整数的绝对值。
9double fabs(double); 该函数返回任意一个浮点数的绝对值。
10double floor(double); 该函数返回一个小于或等于传入参数的最大整数。

随机数

  1. rand()返回一个伪随机数 生成随机数之前要调用srand()函数
int main ()
{int i,j;// 设置种子srand( (unsigned)time( NULL ) );/* 生成 10 个随机数 */for( i = 0; i < 10; i++ ){// 生成实际的随机数j= rand();cout <<"随机数: " << j << endl;}return 0;
}

数组

多维数组

type name[size1][size2]...[sizeN];

指向数组的指针

double *p;
double runoobAarray[10];p = runoobAarray;
*(runoobAarray + 4)//访问 runoobAarray[4] 

传递数组给函数

  • 通过指定不带索引的数组名来传递一个指向数组的指针。

  • C++ 传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。

  • 声明函数形式参数

    1. 形式参数是一个指针:

      void myFunction(int *param)
      {
      .
      .
      .
      }
      
    2. 形式参数是一个已定义大小的数组:

      void myFunction(int param[10])
      {
      .
      .
      .
      }
      
    3. 形式参数是一个未定义大小的数组:

      void myFunction(int param[])
      {
      .
      .
      .
      }
      

从函数返回数组

C++ 不允许返回一个完整的数组作为函数的参数。但是可以通过指定不带索引的数组名来返回一个指向数组的指针。

字符串

C++ 提供了以下两种类型的字符串表示形式:

  • C 风格字符串
  • C++ 引入的 string 类类型
  • 函数
序号函数 & 目的
1strcpy(s1, s2); 复制字符串 s2 到字符串 s1。
2strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。连接字符串也可以用 + 号,例如: string str1 = "runoob"; string str2 = "google"; string str = str1 + str2;
3strlen(s1); 返回字符串 s1 的长度。
4strcmp(s1, s2); 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0。
5strchr(s1, ch); 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
6strstr(s1, s2); 返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。

指针

指针是一个变量,其值为另一个变量的地址

type *var-name;

C++ 指针详解

在 C++ 中,有很多指针相关的概念,这些概念都很简单,但是都很重要。下面列出了 C++ 程序员必须清楚的一些与指针相关的重要概念:

概念描述
C++ Null 指针C++ 支持空指针。NULL 指针是一个定义在标准库中的值为零的常量。
C++ 指针的算术运算可以对指针进行四种算术运算:++、–、+、-
C++ 指针 vs 数组指针和数组之间有着密切的关系。
C++ 指针数组可以定义用来存储指针的数组。
C++ 指向指针的指针C++ 允许指向指针的指针。
C++ 传递指针给函数通过引用或地址传递参数,使传递的参数在调用函数中被改变。
C++ 从函数返回指针C++ 允许函数返回指针到局部变量、静态变量和动态内存分配。

Null指针

没有确切的地址时赋Null(为0的常量)

指针的算术运算

ptr++(加一个类型的长度)

ptr–(减一个类型的长度)

指针vs数组

指针指向的地址不能修改地址的值(地址中的值可以修改)

数组中的值可以修改

指针数组

int *ptr[MAX];

指向指针的指针

int **var;//c中有解释

传递指针给函数

传递指针给函数,需要声明函数参数为指针类型。

从函数返回指针

引用

int i = 17;
int&  r = i;

区分指针

  • 不存在空引用。引用必须连接到一块合法的内存。
  • 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
  • 引用必须在创建时被初始化。指针可以在任何时间被初始化。

把引用作为参数

比传参安全

void swap(int& x, int& y);

把引用作为返回值

和返回其他值一样

时间和日期

在头文件中

基本的输入输出

头文件函数和描述
该文件定义了 cin、cout、cerrclog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
该文件通过所谓的参数化的流操纵器(比如 setwsetprecision),来声明对执行标准化 I/O 有用的服务。
该文件为用户控制的文件处理声明服务。我们将在文件和流的相关章节讨论它的细节。
/*输出*/
cout << "Value of str is : " << str << endl;
/*输入*/
cin >> name;
/*标准错误流,cerr 对象是非缓冲的,且每个流插入到 cerr 都会立即输出。*/cerr << "Error message : " << str << endl;
/*标准日志流对象是缓冲的。这意味着每个流插入到 clog 都会先存储在缓冲区,直到缓冲填满或者缓冲区刷新时才会输出。*/clog << "Error message : " << str << endl;

数据结构

  • 定义结构

    struct Books
    {char  title[50];char  author[50];char  subject[100];int   book_id;
    } book;
    
  • 访问结构成员

    Book.title

  • 结构作为函数参数

   Book Book1;strcpy( Book1.title, "C++ 教程");strcpy( Book1.author, "Runoob"); strcpy( Book1.subject, "编程语言");Book1.book_id = 12345;cout << "书标题 : " << book.title <<endl;cout << "书作者 : " << book.author <<endl;cout << "书类目 : " << book.subject <<endl;cout << "书 ID : " << book.book_id <<endl;
  • 只想结构的指针
struct Books *struct_pointer;
struct_pointer = &Book1;
struct_pointer->title;
  • typedef(起别名)

相关文章:

C++教程(初级,有基础)

C教程&#xff08;初级&#xff0c;有基础&#xff09; #include <iostream> using namespace std; int main() { /*对应printf("")*/cout << "Hello, world!" << endl;//cout << "Hello, world!" << "\n&q…...

字符编码及转换

什么是字符编码字符编码&#xff08;Character encoding&#xff09;也称字集码&#xff0c;是把字符集中的字符&#xff0c;编码为指定集合中的某一对象&#xff08;例如&#xff1a;比特模式、自然数序列、8位组或者电脉冲&#xff09;&#xff0c;以便文本在计算机中存储或者…...

redis原理

文章目录一、Redis数据结构1.1.动态字符串SDS1.2 intset1.3 Dict1.4 ZipList1.5 QuickList1.6 SkipList1.7 RedisObject二、Redis五大基本数据类型底层2.1.String2.2.List2.3.Set2.4.ZSet2.4.Hash三、Redis网络模型3.1.用户空间和内核空间3.2.阻塞IO3.3.非阻塞IO3.4.IO多路复用…...

kettle开发-Day37-SQ索引优化

前言&#xff1a;在上一个生产项目中&#xff0c;有个单表数据超249G了&#xff0c;里面存储的数据时间跨度就1年左右&#xff0c;那为啥会出现这种情况呢&#xff1f;数据来源为&#xff0c;一个生产基地所有电表的每分钟读数&#xff0c;一个基地大概500个电表左右&#xff0…...

【camera之3a】AE

文章目录sensorAEsensor 分辨率 常见分辨率的感性表述即30万、100万、200万&#xff0c;正确表述应为0.3M、1M、2M&#xff0c;其中M代表百万&#xff0c;是像素单位。sensor分辨率即指在单位面积上&#xff0c;像素的个数&#xff0c;数值越大 &#xff0c;则代表像素点越多&…...

Docker-Consul概述以及集群环境搭建

一、Docker consul概述容器服务更新与发现&#xff1a;先发现再更新&#xff0c;发现的是后端节点上容器的变化&#xff08;registrator&#xff09;&#xff0c;更新的是nginx配置文件&#xff08;agent&#xff09;egistrator&#xff1a;是consul安插在docker容器里的眼线&a…...

性能技术分享|Jmeter+InfluxDB+Grafana搭建性能平台(四)

四、Jmeter配置InfluxDB4.1 后端监听器(BackendListener)介绍1、什么是后端监听器(BackendListener)&#xff1f;源码给出的解释是&#xff1a;BackendListener是一种异步监听并获取到测试结果的实现类。也就是说发出的如http等响应请求的结果&#xff0c;都会被封装在SampleRe…...

图数据建模基础

Neo4j 图的组件 节点&#xff08;Nodes&#xff09;标签&#xff08;Labels&#xff09;关系&#xff08;Relationships&#xff09;属性&#xff08;Properties&#xff09;建模过程 了解领域并为应用程序定义特定用例&#xff08;问题&#xff09;。开发初始图形数据模型。 对…...

nodejs篇 process模块

目录 前言 监听回调 beforeExit 、exit、uncaughtException beforeExit exit uncaughtException Process常用属性 stdout stdin process方法 process.cwd()&#xff0c;process.chdir() process.nextTick() process.exit() process.kill() 前言 process是nodejs提…...

JavaScript高级程序设计读书分享之3章——3.4数据类型

JavaScript高级程序设计(第4版)读书分享笔记记录 适用于刚入门前端的同志 ECMAScript 有 6 种简单数据类型&#xff08;也称为原始类型&#xff09;&#xff1a;Undefined、Null、Boolean、Number、String 和 Symbol&#xff08;es6新增&#xff09;。 还有一种复杂数据类型叫…...

棱形打印--进阶2(Java)

棱形打印 问题 * *** ***** ******* ********* ******* ***** *** * * * …...

清除 git 所有历史提交记录,使其为新库

清除 git 所有历史提交记录&#xff0c;使其为新库需求方案需求 基于以前的仓库重新开发&#xff0c;这样可保留以前的配置等文件&#xff0c;但是需要删除全部的历史记录、tag、分支等。 方案 创建新的分支 使用 --orphan 选项&#xff0c;可创建1个干净的分支&#xff08;无…...

pyTorch下载和cuda下载以及学习笔记

pytorch官方网站&#xff0c;cuda官方网站 CUDA下载&#xff1a;https://developer.nvidia.com/cuda-toolkit-archive CUDNN下载&#xff1a;https://developer.nvidia.com/rdp/cudnn-download pytorch下载&#xff1a;pytorch.org 任务管理器中只显示CUDA占用的专用内存&#…...

【学习总结】IMU预积分推导

本文仅用于记录自己学习总结。记录IMU预积分推导过程&#xff0c;不包含具体原理。 符号表示 RRR: 表示旋转矩阵 vvv: 表示速度 ppp: 表示位移 ExpExpExp: 指数映射&#xff0c;将旋转向量映射为旋转矩阵 w~\widetilde{w}w: 角速度观测值 f~\widetilde{f}f​: 加速度观测值 bg…...

天猫商城自动化python脚本(仅供初学者学习使用)

作者&#xff1a;Eason_LYC 悲观者预言失败&#xff0c;十言九中。 乐观者创造奇迹&#xff0c;一次即可。 一个人的价值&#xff0c;在于他所拥有的。可以不学无术&#xff0c;但不能一无所有&#xff01; 技术领域&#xff1a;WEB安全、网络攻防 关注WEB安全、网络攻防。我的…...

代码随想录第十一天(459)

文章目录459. 重复的子字符串答案思路暴力破解移动匹配459. 重复的子字符串 也不知道为啥这个提示简单题…… 答案思路 暴力破解 例如&#xff1a;abcabc 移位一次&#xff1a;cabcab 移位两次&#xff1a;bcabca 移位三次&#xff1a;abcabc 现在字符串和原字符串匹配了…...

线程及线程池学习

1 线程和进程的区别&#xff1f;进程&#xff1a;进程指正在运行的程序。线程&#xff1a;线程是进程中的一个执行单元&#xff0c;负责当前进程中程序的执行&#xff0c;一个进程中至少有一个线程。同一个进程中的多个线程之间可以并发的执行。2 创建线程有哪几种方式&#xf…...

SpringBoot整合(四)整合Ehcache、Redis、Memcached、jetcache、j2cache缓存

​ 企业级应用主要作用是信息处理&#xff0c;当需要读取数据时&#xff0c;由于受限于数据库的访问效率&#xff0c;导致整体系统性能偏低。 ​ 为了改善上述现象&#xff0c;开发者通常会在应用程序与数据库之间建立一种临时的数据存储机制&#xff0c;该区域中的数据在内存…...

想要的古风女生头像让你快速get

如今我看到很多人都喜欢用古风女生当作头像&#xff0c;那么今天我就来教大家如何快速得到一张超美的古风女生头像~ 上图就是我使用 APISpace 的 AI作画(图像生成)服务 快速生成的古风女生头像&#xff0c;不仅可以限定颜色&#xff0c;还可以选择『宝石镶嵌』或『花卉造型』这…...

传统企业数字化转型,到底难在哪里?

数字化转型过程中面临最大的挑战和问题是什么&#xff1f;这篇整理了企业在数字化转型过程中普遍面临的9大问题和挑战以及如何解决这些问题&#xff0c;希望能够对各位企业数字化转型有多启发和帮助。 01 企业数字化转型三大现状 在梳理企业数字化转型问题之前&#xff0c;我想…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...

API网关Kong的鉴权与限流:高并发场景下的核心实践

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中&#xff0c;API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关&#xff0c;Kong凭借其插件化架构…...

恶补电源:1.电桥

一、元器件的选择 搜索并选择电桥&#xff0c;再multisim中选择FWB&#xff0c;就有各种型号的电桥: 电桥是用来干嘛的呢&#xff1f; 它是一个由四个二极管搭成的“桥梁”形状的电路&#xff0c;用来把交流电&#xff08;AC&#xff09;变成直流电&#xff08;DC&#xff09;。…...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤&#xff1a; 第一步&#xff1a; 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为&#xff1a; // 改为 v…...

AxureRP-Pro-Beta-Setup_114413.exe (6.0.0.2887)

Name&#xff1a;3ddown Serial&#xff1a;FiCGEezgdGoYILo8U/2MFyCWj0jZoJc/sziRRj2/ENvtEq7w1RH97k5MWctqVHA 注册用户名&#xff1a;Axure 序列号&#xff1a;8t3Yk/zu4cX601/seX6wBZgYRVj/lkC2PICCdO4sFKCCLx8mcCnccoylVb40lP...

React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构

React 实战项目&#xff1a;微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇&#xff01;在前 29 篇文章中&#xff0c;我们从 React 的基础概念逐步深入到高级技巧&#xff0c;涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析

目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork&#xff08;创建个人副本&#xff09;步骤 2: Clone&#xff08;克隆…...