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

C++入门到进阶(图文详解,持续更新中)

C++入门到进阶(图文详解,持续更新中)

详解C++入门知识到进阶,配合图观看易于理解记录

文章目录

  • 目录

    C++入门到进阶(图文详解,持续更新中)

    文章目录

    前言

    一、数据

    (一)数据类型

    1.基本数据类型/内置数据类型

    2.自定数据类型/复合数据类型

    (1)数组

    (2)结构体

    (3)指针

    (二)C++常用运算符

    赋值运算符

    关系运算符

    逻辑运算符

    杂项运算符

    (三)数据的本地化存储

    1.准备工作:

    2.写流即向本地文件中写入数据该如何实现?

    (1)创建写流的对象或创建写流的变量

    (2)打开文件执行,准备执行写数据(称为开流)

    (3)对本地写数据

    (4)关闭流

    3.读流(即从本地文件中读取数据)

    (1)创建读流对象

    (2)打开文件准备读取数据(称为开流)

    (3)开始从本地读取数据

    (4)关闭流

    (5)存储案例展示:(存储数据到UserInfo的txt文本中,读取数据,新增数据,查找相关姓名、年龄、地址)

    二、函数

    (一)函数的声明和定义

    1.函数声明的作用

    2.函数的定义

    (二)函数传值

    1.传出数据(即返回值)

    2.传入数据(即传参)

    (1)什么是传参?

    (2)作用

    (3)类型

    3.关于形参在函数声明和函数定义中注意点

    4.默参

    5.函数重载

    6.传参方式

    三、内联函数

    (一)其它名称

    (二)怎么写一个内联函数

    (三)内联函数有什么用

    (四)内联函数的注意事项

    (五)内联的优缺点

    四、宏

    (一)作用

    (二)语法

    (三)分类

    1.简单宏

    2.带参数宏

    (四)卸载宏

    面向对象



前言

C++ 是一门高级语言,是一种编译型的语言,需要先把源代码先编译成机器语言的可执行程序,然后再执行可执行程序。这里就对C++知识进行探究


一、数据

(一)数据类型

1.基本数据类型/内置数据类型

整型:有符号与无符号

int

unsignedf int

long

unsigned long int

short int

ushort

byte

sbyte

long int

unsigned long int

浮点型/实型:

float

double

long double

字符型:

char

布尔型:

bool

2.自定数据类型/复合数据类型

(1)数组

存放一组同质类型的元素(同种类型)

(2)结构体
(3)指针

指向一个内存空间的地址

指针

数组指针

指针数组

函数指针

(二)C++常用运算符

赋值运算符

基本赋值运算符:=

复合赋值运算符:+=(加赋值)、-=(减赋值)、*=(乘赋值)、/=(除赋值)、%=(求余赋值)、 <<=(左移赋值)、>>=(右移赋值)、&=(按位与赋值)、|=(按位或赋值)、*A=(按位异或赋值)

关系运算符

== != < > <= >=

逻辑运算符

&& || !

杂项运算符

sizeof和三目运算符

(三)数据的本地化存储

1.准备工作:

实现本地化存储需要

头文件为:iostream,ofstream

引入头文件

#include<iostream>

#include<ofstream>

命名空间为:std

引入命名空间:

using namespace std;

2.写流即向本地文件中写入数据该如何实现?

使用ofstream的方法,操作步骤为:

(1)创建写流的对象或创建写流的变量

ofstream ofs;

(2)打开文件执行,准备执行写数据(称为开流)

ofs.open("abc.txt", ios::out);

(3)对本地写数据

string name;

getline(cin, name,'q');

ofs << name << endl;

(4)关闭流

ofs.close();

3.读流(即从本地文件中读取数据)

(1)创建读流对象

 ifstream ifs;

(2)打开文件准备读取数据(称为开流)

ifs.open("abc.txt", ios::in);

(3)开始从本地读取数据

方法1:
 char ValueArrays[1024]{};

 while (ifs >> ValueArrays)//非零即为真
    {
        cout << ValueArrays << endl;//这是字符串的打印
    }

方法2:

string str = " ";
    while (ifs >> str)
    {
        cout << str << endl;
    }

(4)关闭流

 ifs.close();

(5)存储案例展示:(存储数据到UserInfo的txt文本中,读取数据,新增数据,查找相关姓名、年龄、地址)
#include <iostream>
#include<fstream>  
#include<string>
#include"User.h"
/*
预处理
#include中的" "和<>的使用
<>:代表的导入C++库文件
“ ”:先检索是否有没有自己写的头文件,如果检索不到自己写的头文件,会自动查找C++库,找不到就报错
*/using namespace std;
void Save()
{using namespace std;ofstream ofs;ofs.open("abc.txt", ios::out);string name;getline(cin, name,'q');ofs << name << endl;ofs.close();}
int name_index = 0;
void Add(string nameArrays[])//name是一个形参,需要一个string 类型数组的地址
{string name = " ";cin >> name;nameArrays[name_index] = name;name_index++;ofstream ofs;ofs.open("abc.txt", ios::out);for (int i = 0; i < name_index; i++){ofs << nameArrays[i] << endl;}ofs.close();
}void GetValue()
{using namespace std;//1. 创建对象ifstream ifs;//2. 开流ifs.open("abc.txt", ios::in);//3.读取数据,方法1//3.1数据本地读取出来了,需要找到一个容器去存放读取出来的数据char ValueArrays[1024]{};//3.2开始取出数据,并将本地数据在数据中while (ifs >> ValueArrays)//非零即为真{cout << ValueArrays << endl;//这是字符串的打印}ifs.close();cout << "---------" << endl;//3.读取数据,方法2//3.1数据本地读取出来了,需要找到一个容器去存放读取出来的数据//读取不走回头路ifs.open("abc.txt", ios::in);string str = " ";while (ifs >> str){cout << str << endl;}ifs.close();cout << "--------" << endl;//3.读取数据,方法3 借助一个ifstream里的一个函数getlineifs.open("abc.txt", ios::in);char buf[1024]{};while (ifs.getline(buf, sizeof(buf)))//getline是ifstream下的一个函数,用于获取到一行数据,函数的第一个参数是用于接收一行数据的字符数组,//第二个参数是用于接收数据的容器的大小{cout << buf << endl;}ifs.close();cout << "--------" << endl;//3.读取数据,方法4 借助一个string里的一个函数getlineifs.open("abc.txt", ios::in);string str_buf = {};while (getline(ifs, str_buf)){cout << str_buf << endl;}ifs.close();cout << "--------" << endl;//3.读取数据,方法5 借助一个ifstream里的一个函数eofifs.open("abc.txt", ios::in);char eof_buf[1024]{};while (!ifs.eof()){ifs >> eof_buf;cout << eof_buf << endl;}ifs.close();
}void SetValue()
{string name = " ";string age = " ";string address = " ";cout << "请输入姓名:" << endl;cin >> name;cout << "请输入年龄:" << endl;cin >> age;cout << "请输入地址:" << endl;cin >> address;ofstream ofs;ofs.open("Value.txt", ios::out);ofs << name << "  ";ofs << age << "  ";ofs << address << endl;ofs.close();
}void SelValue()
{string r_name = " ";string r_age = " ";string r_address = " ";ifstream ifs;ifs.open("Value.txt", ios::in);while (ifs >> r_name && ifs >> r_age && ifs >> r_address){cout << "姓名:" << r_name << ",年龄:" << r_age << ",地址:" << r_address << endl;}ifs.close();
}//增加用户
User uArray[6] = {};
int uSize = 0;
void AddUser()
{string name;int age;string address;cout << "输入姓名:" << endl;cin >> name;cout << "输入年龄:" << endl;cin >> age;cout << "输入地址:" << endl;cin >> address;User uInstance;uInstance.name = name;uInstance.age = age;uInstance.address = address;uArray[uSize] = uInstance;uSize++;ofstream ofs;ofs.open("UserInfo.txt", ios::out);for (int i = 0; i < uSize; i++){ofs << uArray[i].name << " ";ofs << uArray[i].age << " ";ofs << uArray[i].address << endl;}ofs.close();
}int Find(string name)
{for (int i = 0; i < uSize; i++){if (uArray[i].name == name){return i;}}return -1;
}//查询所有人的所有信息
void SelAllUser()
{ifstream ifs;ifs.open("UserInfo.txt", ios::in);//is_open判断上一行代码中打开的文件是否存在//存在返回真,不存在返回假/*if (ifs.is_open()){cout << "文件存在" << endl;}elsecout << "文件不存在" << endl;*/if (!ifs.is_open()){cout << "文件不存在" << endl;return;//文件不存在,下方逻辑不用执行}char buf[1024];ifs >> buf;if (ifs.eof()){cout << "文件存在,但没数据" << endl;return;//下方逻辑无需进行}ifs.close();ifs.open("UserInfo.txt", ios::in);int i = 1;string name;int age;string address;while (ifs >> name && ifs >> age && ifs >> address){cout << "第" << i << "人的姓名是" << name << ",年龄是" << age << ",地址是" << address << endl;}}
//查询某个人的所有信息
void SelUser()
{cout << "输入名字" << endl;string sel_name = " ";cin >> sel_name;int index = Find(sel_name);//Find()会返回一个int类型的值if (index != -1) {}//ifstream ifs;ifs.open("UserInfo.txt", ios::in);string name = " ";int age = 0;string address = " ";while (ifs >> name && ifs >> age && ifs >> address){if (name == sel_name){cout << "用户名为:" << name << ",年龄是:" << age << ",地址是:" << address << endl;}}
}
//初始化
int Init()
{ifstream ifs;ifs.open("UserInfo.txt", ios::in);if (!ifs.is_open()){cout << "文件不存在" << endl;return -1;//文件不存在,下方逻辑不用执行}char buf[1024];ifs >> buf;if (ifs.eof()){cout << "文件存在,但没数据" << endl;return -1;//下方逻辑无需进行}ifs.close();ifs.open("UserInfo.txt", ios::in);int i = 0;string name;int age;string address;while (ifs >> name && ifs >> age && ifs >> address){uArray[i].name = name;uArray[i].age = age;uArray[i].address = address;i++;}return i;
}
int main()
{   //string str = {};//getline(cin, str, 'q');//控制台输入数据,赋值到str中,按q键再按回车键结束//getline(cin, str, '\t');//控制台输入数据,赋值到str中,按Tab键然后再按回车结束//cout << str << endl;//Save();//GetValue();//SetValue();// SelValue();int addIndex = Init();while (true) {cout << "添加:1,查询:2,退出:0" << endl;int selecter;cin >> selecter;switch (selecter){case 0:exit;break;case 1:AddUser();break;case 2:SelAllUser();break;}}system("pause");
}

二、函数

(一)函数的声明和定义

1.函数声明的作用

代表的是函数的出生位置(占位置的),如果在文件最上方的位置声明了函数,不用担心函数和函数之间互相调用编译不通过的问题

2.函数的定义

为函数声明写函数体(写逻辑)

注 :可能出现的bug,函数只有声明,没有定义,这个函数却被调用了,被编译时期的异常error

(二)函数传值

1.传出数据(即返回值)

(1)作用:在函数内传数据出函数

(2)样式

返回类型 函数名称(参数)

{

        return 对应返回类型的值;

        //此处的return有双重作用:

        1.跳转语句(跳出函数)

        2.返回值

}

(3)可以返回的值:

1.对应返回类型的值

2.对应返回类型的变量

3.带同种返回类型返回值的函数调用——先执行函数调用,再返回值

2.传入数据(即传参)

(1)什么是传参?

传参就是实参传入形参

(2)作用

在函数外部传入数据到函数内部

(3)类型

形参:在函数声明和定义的时候写的是行参

实参:在函数调用的时候 传递的值是实参

实参的种类:

对应形参类型的值

对应形参类型的变量

带同种返回类型返回值的函数调用,即先执行函数调用,再传参数(实参传参数)

3.关于形参在函数声明和函数定义中注意点

  • 声明的形参参数名称和定义的形参参数名称

  • 可以不一样声明的时候可以省略参数名称

  • 如果存在函数的默参,默认是必须写在函数声明位置的,不可以在声明和定义中都写一遍默参

4.默参

作用:函数可以在声明或者定义的时候给出默认的逻辑执行

  • 关于默参的放置位置说明

    • 如果只有一个默参

      • 放在参数结尾处(最右侧)

    • 如果有多个默参

      • 从右到左依次给出默参,中间不可以隔开使用

        • 错误演示:void Function(int i=10,int a,bool b=false)

        • 正确演示::void Function(int i=10,int a=10,bool b=false)

5.函数重载

  • 函数名相同,但是函数参数(参数类型)不同,通过传入不同的实参,调用不同的函数,执行不同的功能

  • 注意:

    • 函数返回值不参与函数重载的过程

    • 如果被重载的函数中出现了默参

      • 建议不要写成重载函数

      • 如果不接受建议,就需要保证默参的几个参数类型与其他被重载的函数的参数不一致

6.传参方式

(1)值传递:值传递只能影响本函数,值的修改不会影响其他的功能,也不会影响到实参

(2)地址传递

(3)引用传递

三、内联函数

(一)其它名称

1.内联函数

2.在线函数

3.编译时期展开函数

(二)怎么写一个内联函数

inline声明和定义都需要添加在类中,当一个函数的声明和定义放在一起的时候,默认这个函数是内联函数

(三)内联函数有什么用

简单的逻辑写在内联函数中,可以有效提高程序的执行速度

(四)内联函数的注意事项

switch for while do while这种较为复杂的逻辑不要放在内联函数中

代码尽量不要超过10行

(五)内联的优缺点

用空间换时间

实现的是在编译时期,逻辑的复制粘贴,而不是函数跳转

四、宏

(一)作用

实现文本替换,可以一定程度上减少记忆负担

(二)语法

简单宏:

#define <宏名> <文本内容>

例:#define MINNUMBER 0.01

带参:

#define 宏名 (参数列表) 文本内容

例:#define function(x)    x*x

(三)分类

1.简单宏

添加宏:#define 宏名 文本内容

2.带参数宏

添加宏:#define 宏名(参数列表) 文本内容

在使用宏的时候将实参(数或者变量) 传给形参

(四)卸载宏

#undef 被卸载宏名

五、别名

数据类别名

typedef :为数据类型取别名(将复杂的数据类型修改为简单易读的名称)

六、作用域

(一)全局域

1.函数:

全局函数

2.变量:

全局变量:可以不初始化,系统会帮助初始化,但在实际项目开发中,建议程序员手动初始化

3.如果存在命名冲突怎么解决?

添加命名空间namespace全局变量

(二)成员域

1.函数:

成员函数:如果成员函数的声明和定义放在了一起,这个成员函数将被处理为内联函数

2.变量:

成员变量(成员属性):可以不初始化,系统会帮助初始化,但在实际项目开发中,建议程序员手动初始化

(三)局部域

变量:局部变量,必须初始化

(四)语句域

if...else while for do...while 循环中创建的变量

{ }

七、随机数

1.导入头文件

2.添加随机种子

3.使用随机数

参考源码:

面向对象

待更新.....

相关文章:

C++入门到进阶(图文详解,持续更新中)

C入门到进阶&#xff08;图文详解&#xff0c;持续更新中&#xff09; 详解C入门知识到进阶&#xff0c;配合图观看易于理解记录 文章目录 目录 C入门到进阶&#xff08;图文详解&#xff0c;持续更新中&#xff09; 文章目录 前言 一、数据 &#xff08;一&#xff09;数据类…...

【React Hooks原理 - useRef】

概述 在Function Component项目中当我们需要操作dom的时候&#xff0c;第一时间想到的就是使用useRef这个Hook来绑定dom。但是这个仅仅是使用这个Hook而已&#xff0c;为了更好的学习React Hooks内部实现原理&#xff0c;知其所以然。所以本文根据源码从useRef的基础使用场景一…...

MVC之 IHttpModule管道模型《二》

》》》注意&#xff1a;在http请求的处理过程中&#xff0c;只能调用一个HttpHandler&#xff0c;但可以调用多个HttpModule。 HTTP Modules ASP.NET请求处理过程是基于管道模型的&#xff0c;这个管道模型是由多个HttpModule和HttpHandler组成&#xff0c;当请求到达HttpMod…...

2025上海纺织助剂展会+上海织物整理剂展

2025上海纺织助剂展会上海织物整理剂展 2025第十二届中国&#xff08;上海&#xff09;纺织助剂及织物整理剂展览会 时间: 2025年4月23-25日 地点:上海跨国采购会展中心&#xff08;光复西路2739号&#xff09; 展会简介&#xff1a; 2025第12届中国&#xff08;上海&#…...

中科亿海微亮相慕尼黑上海电子展

7月8-10日&#xff0c;备受瞩目的全球电子行业盛会“慕尼黑上海电子展”以空前规模启幕&#xff0c;汇聚了超过1600家参展企业&#xff0c;涵盖了从终端产品制造商到元器件供应商、组装/系统供应商、EMS、ODM/OEM、材料供应商及生产设备供应商的完整产业链。中科亿海微电子科技…...

Spring boot 2.0 升级到 3.3.1 的相关问题 (一)

文章目录 Spring boot 2.0 升级到 3.3.1 的相关问题 &#xff08;一&#xff09;拦截器Interceptor的变动问题介绍解决方案 WebMvcConfigurerAdapter 自定义Mvc配置问题介绍解决方案 Spring boot 2.0 升级到 3.3.1 的相关问题 &#xff08;一&#xff09; 拦截器Interceptor的…...

数据分析——Python网络爬虫(四){爬虫库的使用}

爬虫库 爬虫的步骤urllib库发送请求两种方法案例 爬虫的步骤 #mermaid-svg-h5azjtPInpsU2ZpP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-h5azjtPInpsU2ZpP .error-icon{fill:#552222;}#mermaid-svg-h5azjtPInps…...

C++客户端Qt开发——信号和槽

三、信号和槽 1.信号和槽概述 在Qt中&#xff0c;用户和控件的每次交互过程称为一个事件。比如"用户点击按钮”是一个事件&#xff0c;"用户关闭窗口”也是一个事件。每个事件都会发出一个信号&#xff0c;例如用户点击按钮会发出"按钮被点击"的信号&…...

基于双向长短期记忆 BiLSTM 实现股票单变量时间序列预测(PyTorch版)

前言 系列专栏:【深度学习&#xff1a;算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域&#xff0c;讨论了各种复杂的深度神经网络思想&#xff0c;如卷积神经网络、循环神经网络、生成对…...

微信小程序毕业设计-汽车维修项目管理系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…...

学习大数据DAY16 PLSQL基础语法5

目录 异常 自定义异常的格式 raise_application_error 处理异常 预定义异常 SQLcode和SQLerrm 非预定义异常 作业 触发器 触发器基本概念 DML触发器 DML触发器使用 instead of 触发器 管理触发器 作业2 函数、过程和包 函数 过程 参数 1. in 参数 2.out 参…...

LabVIEW心电信号自动测试系统

开发了一种基于LabVIEW的心电信号自动测试系统&#xff0c;通过LabVIEW开发的上位机软件&#xff0c;实现对心电信号的实时采集、分析和自动化测试。系统包括心电信号采集模块、信号处理模块和自动化测试模块&#xff0c;能够高效、准确地完成心电信号的测量与分析。 硬件系统…...

最值得推荐的10款Windows软件!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频播放量破百万https://aitools.jurilu.com/1.音乐播放器——Dopamine Dopamine是一款音乐播放器&#xff0c;设计简洁美观。它支持多种音频格式&#xff0c;包括wav、mp3、ogg…...

游戏视频是后期配音好还是边录边配 游戏视频怎么剪辑制作才能火 视频剪辑免费软件

游戏视频后期配音是先配还是先剪&#xff1f;游戏视频后期配音没有统一的准则&#xff0c;可以先配&#xff0c;也可以后配&#xff0c;主要是根据内容而定。游戏视频剪辑在游戏玩家中十分流行&#xff0c;那么&#xff0c;游戏视频怎么剪辑制作&#xff1f;下面让我们以具体的…...

配置 Node.js 内存限制

配置 Node.js 内存限制 Node.js 应用程序通常需要配置堆内存的大小以优化性能和避免内存溢出问题。你可以通过命令行参数、环境变量或系统属性来设置 Node.js 的内存限制。下面将分别介绍在 Windows、Linux 和 macOS 系统下的配置方法。 Windows 系统 1. 命令行参数方式 在…...

ORA-12518: TNS: 监听程序无法分发客户机连接

ORA-12518: TNS: 监听程序无法分发客户机连接 OracleService 服务停止了&#xff0c;启动就好了...

2.5 计算机网络

声明&#xff1a;文章参考的《系统架构设计师教程&#xff08;第二版&#xff09;》&#xff0c;如有侵权&#xff0c;本人将立即修改和删除。 利用通信线路将地理上分散的、具有独立功能的计算机系统和通信设备按不同的形式连接起来&#xff0c;并依靠网络软件以及通信协议实现…...

同三维T80004ESL编码器视频使用操作说明书:高清HDMI编码器,高清SDI编码器,4K超清HDMI编码器,双路4K超高清编码器

同三维T80004ESL编码器视频使用操作说明书&#xff1a;高清HDMI编码器&#xff0c;高清SDI编码器&#xff0c;4K超清HDMI编码器&#xff0c;双路4K超高清编码器 同三维T80004ESL编码器视频使用操作说明书&#xff1a;高清HDMI编码器&#xff0c;高清SDI编码器&#xff0c;4K超清…...

「ETL趋势」分区支持PostgreSQL、Greenplum、Gauss200, 定时任务支持Kettle

FineDataLink作为一款市场上的顶尖ETL工具&#xff0c;集实时数据同步、ELT/ETL数据处理、数据服务和系统管理于一体的数据集成工具&#xff0c;进行了新的维护迭代。本文把FDL4.1.9最新功能作了介绍&#xff0c;方便大家对比&#xff1a;&#xff08;产品更新详情&#xff1a;…...

vue 前端项目调用后端接口记录

axios中不同的类型的请求附带数据使用的关键字 请求类型关键字示例GETparamsaxios({ method: get, url: example.com, params: { key: value } })POSTdataaxios({ method: post, url: example.com, data: { key: value } })PUTdataaxios({ method: put, url: example.com, dat…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...