2024重生之回溯数据结构与算法系列学习(11)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】

欢迎各位彦祖与热巴畅游本人专栏与博客

你的三连是我最大的动力

以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]

专栏跑道一
 ➡️ MYSQL REDIS Advance operation


专栏跑道二
➡️ 24 Network Security -LJS 

​ 

专栏跑道三

➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]

专栏跑道四
➡️RHCE-LJS[Linux高端骚骚操作实战篇]

专栏跑道五

➡️数据结构与算法[考研+实际工作应用+C程序设计]

专栏跑道六 

➡️RHCSA-LJS[Linux初级及进阶骚技能]

上节回顾icon-default.png?t=O83Ahttps://netsecur-cloud-ljs.blog.csdn.net/article/details/142644784

目录

欢迎各位彦祖与热巴畅游本人专栏与博客

你的三连是我最大的动力

以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现]

专栏跑道一 ➡️ MYSQL REDIS Advance operation

专栏跑道二➡️ 24 Network Security -LJS 

专栏跑道三

➡️HCIP;H3C-SE;CCIP——LJS[华为、华三、思科高级网络]

专栏跑道四➡️RHCE-LJS[Linux高端骚骚操作实战篇]​编辑​

专栏跑道五

➡️数据结构与算法[考研+实际工作应用+C程序设计]

专栏跑道六 

➡️RHCSA-LJS[Linux初级及进阶骚技能]

上节回顾https://netsecur-cloud-ljs.blog.csdn.net/article/details/142644784

回溯数据结构与算法系列学习之栈和队列精题汇总

(6)题目:三角矩阵Q按行存储

解题思路:

代码实现:

(7)题目:二维数组按行存储​编辑

解题思路:

代码实现:

(8)题目:栈的应用Q——中缀表达式转成后缀表达式

解题思路:

代码实现:

(9)题目:利用栈实现斐波那契数列Q

解题思路:

代码实现:

(10)题目:栈的应用Q—后缀表达式的计算

解题思路:

代码实现:

(11)题目:将对称矩阵压缩保存到一维数组

解题思路:

代码实现:

回溯数据结构与算法系列学习之栈和队列精题汇总

(6)题目:三角矩阵Q按行存储

  • 解题思路:

  • TwoMapOneDim 函数将下三角矩阵的元素存储在一维数组中。OneDimIndex 函数用于根据行列索引从一维数组中获取对应的值,但为了正确性,需确保处理上三角的情况。PrintTwoDim 和 PrintOneDim 函数用于分别打印二维和一维数组的内容。在 main 函数中,首先定义了并打印了一个下三角矩阵,然后调用转换函数,将其存储到一维数组中并打印,最后获取特定位置的值并打印
  • 代码实现:

  • #include <iostream>
    using namespace std;// 将下三角矩阵按行存储在一维数组中
    void TwoMapOneDim(int arr[][3], int array[], int row, int col)
    {int k = 0; // 用于一维数组的索引// 遍历二维数组的每一行for (int i = 0; i < row; i++){// 遍历当前行的有效列(即下三角部分)for (int j = 0; j <= i; j++){array[k++] = arr[i][j]; // 将下三角元素存入一维数组}}// 在一维数组的最后一个位置存储该二维数组的右上角元素(示例中为999)array[k] = arr[0][col - 1];
    }// 按照索引从一维数组取值
    int OneDimIndex(int *array, int i, int j)
    {// 如果 i 大于等于 j,说明在下三角区域if (i >= j){return array[i * (i - 1) / 2 + j - 1]; // 根据公式计算下三角矩阵的一维索引}else{// 如果不在下三角区域,返回上三角部分的某个值(此处逻辑有误,应该是返回错误处理)return array[3 * (3 + 1) / 2]; // 这里应该是返回无效值,实际可能需要调整}
    }// 打印二维数组
    void PrintTwoDim(int arr[][3], int row, int col)
    {for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){cout << arr[i][j] << '\t'; // 按行打印每个元素}cout << endl; // 每行结束后换行}
    }// 打印一维数组
    void PrintOneDim(int *arr, int n)
    {for (int i = 0; i < n; i++){cout << arr[i] << '\t'; // 打印每个元素}cout << endl; // 打印结束后换行
    }int main()
    {// 初始化一个3x3的下三角矩阵int arr[3][3] = {{1, 999, 999}, {4, 2, 999}, {5, 6, 3}};// 创建一维数组以存储下三角矩阵的元素int array[3 * (3 + 1) / 2 + 1];// 打印原始二维数组PrintTwoDim(arr, 3, 3);// 将二维数组的下三角部分存储到一维数组中TwoMapOneDim(arr, array, 3, 3);// 打印存储下三角元素的一维数组PrintOneDim(array, 3 * (3 + 1) / 2 + 1);// 从一维数组中获取给定索引的值并输出(示例:获取坐标(1, 3)的值)cout << OneDimIndex(array, 1, 3); // 输出结果应该是999
    }
    

(7)题目:二维数组按行存储

  • 解题思路:

  • TwoMapOneDim 函数:输入参数:二维数组 arr、一维数组 array、行数 row 和列数 col。
    目的是将二维数组的所有元素按行存储到一维数组中。
    使用嵌套循环逐行逐列遍历二维数组,将每个元素赋值给一维数组。
    OneDimIndex 函数:输入参数:一维数组 array 和索引 i, j(表示二维数组的行和列)。
    目的是根据给定的行列索引计算在一维数组中的位置,并返回该位置的值。
    计算公式为 (i - 1) * 3 + (j - 1),其中 3 是列数,考虑到数组索引从0开始。
    PrintTwoDim 函数:输入参数:二维数组 arr、行数 row 和列数 col。
    目的是打印整个二维数组,每个元素之间用制表符分隔,行末换行。
    PrintOneDim 函数:输入参数:一维数组 arr 和元素个数 n。
    目的是打印一维数组的所有元素,元素之间用制表符分隔,最后换行。
    main 函数:定义了一个3x3的二维数组并初始化。
    创建了一维数组 array 存储元素。
    调用 PrintTwoDim 打印原始二维数组。
    调用 TwoMapOneDim 将二维数组元素存入一维数组。
    调用 PrintOneDim 打印一维数组的内容。
    最后调用 OneDimIndex 获取并打印一维数组在行3列2位置的值(应该为6)
  • 代码实现:

  • #include <iostream>
    using namespace std;// 将二维数组按行存储到一维数组中
    void TwoMapOneDim(int arr[][3], int array[], int row, int col)
    {int k = 0; // 用于一维数组的索引// 遍历二维数组的每一行for (int i = 0; i < row; i++){// 遍历当前行的每一列for (int j = 0; j < col; j++){array[k++] = arr[i][j]; // 将二维数组的元素存入一维数组}}
    }// 按照索引从一维数组取值
    int OneDimIndex(int *array, int i, int j)
    {return array[(i - 1) * 3 + j - 1]; // 根据行列索引计算一维数组的索引并返回对应的值
    }// 打印二维数组
    void PrintTwoDim(int arr[][3], int row, int col)
    {for (int i = 0; i < row; i++) // 遍历每一行{for (int j = 0; j < col; j++) // 遍历当前行的每一列{cout << arr[i][j] << '\t'; // 打印当前元素,使用制表符分隔}cout << endl; // 每行结束后换行}
    }// 打印一维数组
    void PrintOneDim(int *arr, int n)
    {for (int i = 0; i < n; i++) // 遍历一维数组的每个元素{cout << arr[i] << '\t'; // 打印当前元素,使用制表符分隔}cout << endl; // 打印结束后换行
    }int main()
    {// 初始化一个3x3的二维数组int arr[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};int array[9]; // 创建一维数组以存储9个元素(3x3)// 打印原始二维数组PrintTwoDim(arr, 3, 3);// 将二维数组的元素存储到一维数组中TwoMapOneDim(arr, array, 3, 3);// 打印存储在一维数组中的元素PrintOneDim(array, 9);// 获取并打印一维数组中指定位置的值(行3,列2)cout << OneDimIndex(array, 3, 2); // 输出结果应该是6
    }
    

(8)题目:栈的应用Q——中缀表达式转成后缀表达式

  • 解题思路:

  • >遇到操作数,将其直接加入后缀表达式>遇到界限符:如果是(,直接入栈如果是),则依次弹出栈内运算符将其加入后缀表达式直到遇到左括号
    >遇到运算符,依次弹出优先级高于或等于当前运算符的所有运算符,并加入后缀表达式
    直到遇到左括号或者是栈空>将栈中剩余运算符依次弹出,并加入后缀表达式
    
  • 代码实现:

  • #include <iostream>
    using namespace std;#define MAXSIZE 100  // 定义栈的最大容量// 定义栈的结构体
    typedef struct
    {char data[MAXSIZE];  // 存放栈元素的数组int top1 = -1;       // 栈顶指针,初始值为-1表示栈为空
    } Stack;// 判断栈是否为空
    bool StackEmpty(Stack s)
    {return s.top1 == -1;  // 如果栈顶指针为-1,说明栈为空
    }// 判断栈是否溢出
    bool StackOverflow(Stack s)
    {return s.top1 >= MAXSIZE;  // 如果栈顶指针大于等于最大容量,说明栈已满
    }// 压栈操作
    void Push(Stack &s, char x)
    {if (!StackOverflow(s))  // 检查栈是否溢出{s.data[++s.top1] = x;  // 将元素压入栈中,并更新栈顶指针}else{cout << "当前栈已满" << endl;  // 如果栈满,输出提示信息}
    }// 弹栈操作
    char Pop(Stack &s)
    {if (StackEmpty(s))  // 检查栈是否为空{return '\0';  // 返回'\0'表示栈为空}else{return s.data[s.top1--];  // 返回栈顶元素并更新栈顶指针}
    }// 将中缀表达式转为后缀表达式
    string InfixToSuffix(string infix)
    {Stack s;               // 创建一个栈用于存放运算符string suffix = "";    // 用于存放后缀表达式char op;               // 临时变量用于存放弹出的运算符// 遍历中缀表达式中的每个字符for (int i = 0; i < infix.length(); i++){// 遇到操作数(A-Z)直接加入后缀表达式if (infix[i] >= 'A' && infix[i] <= 'Z'){suffix += infix[i];}// 遇到左括号,直接入栈else if (infix[i] == '('){Push(s, infix[i]);}// 遇到右括号,依次弹出运算符直至遇到左括号else if (infix[i] == ')'){while (!StackEmpty(s)){op = Pop(s);if (op != '(')  // 如果不是左括号,将运算符加入后缀表达式{suffix += op;}else{break;  // 遇到左括号,停止弹栈}}}else{// 如果是乘号或者除号,只弹出优先级相同或更高的运算符if (infix[i] == '*' || infix[i] == '/'){while (!StackEmpty(s)){op = Pop(s);if (op == '(')  // 遇到左括号,停止弹栈{break;}else{// 碰到低级运算符(+ 或 -),弹出后再压回去if (op == '+' || op == '-'){Push(s, op);  // 将低级运算符压回栈中break;}else{suffix += op;  // 将高优先级运算符加入后缀表达式}}}}// 遇到加号或减号,将所有运算符弹出else if (infix[i] == '+' || infix[i] == '-'){while (!StackEmpty(s)){op = Pop(s);if (op == '(')  // 遇到左括号,停止弹栈{break;}else{suffix += op;  // 将运算符加入后缀表达式}}}// 将当前运算符压入栈中Push(s, infix[i]);}}// 将栈中剩余的运算符依次弹出while (!StackEmpty(s)){suffix += Pop(s);}return suffix;  // 返回生成的后缀表达式
    }int main()
    {string infix = "A+B*(C-D)-E/F";  // 示例中缀表达式cout << InfixToSuffix(infix);     // 输出转换后的后缀表达式
    }
    
  •  

(9)题目:利用栈实现斐波那契数列Q

  • 解题思路:

  • 斐波那契数列两种实现:>利用递归,无需多说>利用栈,就是找二叉树的叶子结点个数,不断将子节点压入栈中
    
  • 代码实现:

  • #include <iostream>
    using namespace std;#define MAXSIZE 100  // 定义栈的最大容量// 定义栈的结构体
    typedef struct
    {int data[MAXSIZE];  // 存储栈元素的数组int top1 = -1;      // 栈顶指针,初始值为-1表示栈为空
    } Stack;// 判断栈是否为空
    bool StackEmpty(Stack s)
    {return (s.top1 == -1);  // 如果栈顶指针为-1,说明栈为空
    }// 判断栈是否溢出
    bool StackOverflow(Stack s)
    {return (s.top1 >= MAXSIZE);  // 如果栈顶指针大于等于最大容量,说明栈已满
    }// 压栈操作
    void Push(Stack &s, int x)
    {if (!StackOverflow(s))  // 检查栈是否溢出{s.data[++s.top1] = x;  // 将元素压入栈中,并更新栈顶指针}else{cout << "当前栈已满" << endl;  // 如果栈满,输出提示信息}
    }// 弹栈操作
    int Pop(Stack &s)
    {if (StackEmpty(s))  // 检查栈是否为空{cout << "当前栈已空" << endl;  // 输出提示信息return '\0';  // 返回'\0'表示栈为空}else{return s.data[s.top1--];  // 返回栈顶元素并更新栈顶指针}
    }// 利用递归实现斐波那契数列
    int FibRecursion(int n)
    {if (n == 1 || n == 2)  // 基本情况:当 n 为 1 或 2 时,返回 1{return 1;}return FibRecursion(n - 1) + FibRecursion(n - 2);  // 递归调用计算斐波那契数
    }// 利用栈实现斐波那契数列
    int FibStack(int n)
    {Stack s;  // 初始化栈int result = 0;  // 用于存放结果Push(s, n);  // 将根节点压入栈中while (!StackEmpty(s))  // 当栈不为空时循环{int value = Pop(s);  // 将栈顶元素弹出// 计算叶子节点个数if (value == 1 || value == 2)  // 如果是基本情况{result += 1;  // 结果加一}// 将根节点的两个子节点压入栈中else{Push(s, value - 1);  // 将 n-1 压入栈Push(s, value - 2);  // 将 n-2 压入栈}}return result;  // 返回计算的结果
    }int main()
    {cout << FibRecursion(7) << endl;  // 输出递归方式计算的第 7 个斐波那契数cout << FibStack(7) << endl;       // 输出栈方式计算的第 7 个斐波那契数
    }
    
  •  

(10)题目:栈的应用Q—后缀表达式的计算

  • 解题思路:

  • >从左往右扫描下一个元素,直到处理完所有元素>若扫描到操作数则压入栈,并回到操作1,否则执行3>若扫描到运算符,则弹出两个栈顶元素,执行相应计算,运算结果压回栈顶,回到1
    
  • 代码实现:

  • #include <iostream>
    using namespace std;#define MAXSIZE 100  // 定义栈的最大容量// 定义栈的结构体
    typedef struct
    {double data[MAXSIZE] = {0.0};  // 存储栈元素的数组,初始值为0.0int top1 = -1;                  // 栈顶指针,初始值为-1表示栈为空
    } Stack;// 判断栈是否为空
    bool StackEmpty(Stack s)
    {return (s.top1 == -1);  // 如果栈顶指针为-1,说明栈为空,返回true
    }// 判断栈是否溢出
    bool StackOverflow(Stack s)
    {return (s.top1 >= MAXSIZE);  // 如果栈顶指针大于等于最大容量,说明栈已满,返回true
    }// 压栈操作
    void Push(Stack &s, double x)
    {if (!StackOverflow(s))  // 检查栈是否溢出{s.data[++s.top1] = x;  // 将元素压入栈中,并更新栈顶指针}else{cout << "当前栈已满" << endl;  // 如果栈满,输出提示信息}
    }// 弹栈操作
    double Pop(Stack &s)
    {if (StackEmpty(s))  // 检查栈是否为空{return '\0';  // 返回'\0'表示栈为空}else{return s.data[s.top1--];  // 返回栈顶元素并更新栈顶指针}
    }// 计算后缀表达式
    void CalSuffix(string suffix[])
    {Stack s;  // 创建栈,用于保存操作数for (int i = 0; i < 15; i++)  // 遍历后缀表达式中的每个元素{// 如果是运算数,将其压入栈if (suffix[i] != "+" && suffix[i] != "-" && suffix[i] != "*" && suffix[i] != "/"){Push(s, atoi(suffix[i].c_str()));  // 将字符串转换为整数并压入栈}// 如果是操作符,依次弹出两个操作数else{double oper1 = Pop(s); // 右操作数double oper2 = Pop(s); // 左操作数// 执行相应运算,将运算结果压入栈中if (suffix[i] == "+"){Push(s, oper2 + oper1);  // 加法}else if (suffix[i] == "-"){Push(s, oper2 - oper1);  // 减法}else if (suffix[i] == "*"){Push(s, oper2 * oper1);  // 乘法}else if (suffix[i] == "/"){Push(s, oper2 / oper1);  // 除法}}}// 最终栈顶元素即为结果cout << "最终结果为:" << Pop(s) << endl;  // 输出计算结果
    }int main()
    {// 待计算的后缀表达式string suffix[] = {"15","7","1","1","+","-","/","3","*","2","1","1","+","+","-"};CalSuffix(suffix);  // 调用计算后缀表达式的函数
    }
    
  •  

(11)题目:将对称矩阵压缩保存到一维数组

  • 解题思路:

  • 将二维数组转换为一维数组:TwoMapOneDim 函数接收一个二维数组,将其下三角矩阵的元素存储到传入的一维数组中。
    根据索引从一维数组获取值:OneDimIndex 函数根据行和列的索引计算出在一维数组中的位置,并返回该位置的值。
    打印二维数组:PrintTwoDim 函数用于打印传入的二维数组,格式化输出每个元素。
    打印一维数组:PrintOneDim 函数用于打印传入的一维数组,输出所有元素。
    主函数:在 main 中定义了一个 3x3 的二维数组,并创建一个足够大的数组来存储下三角矩阵的元素。
    调用打印函数展示二维数组,调用转换函数将下三角元素存入一维数组,再打印一维数组。
    最后,通过 OneDimIndex 函数输出特定位置的值。
  • 代码实现:

  • #include <iostream>
    using namespace std;// 将二维数组按行存储在一维数组中,保存下三角矩阵
    void TwoMapOneDim(int arr[][3], int array[], int row, int col)
    {int k = 0;  // 一维数组的索引for (int i = 0; i < row; i++)  // 遍历行{for (int j = 0; j <= i; j++)  // 遍历列,j的范围是从0到i(包括i),以获取下三角元素{array[k++] = arr[i][j];  // 将下三角元素存入一维数组中}}
    }// 按照索引从一维数组取值
    int OneDimIndex(int *array, int i, int j)
    {// 根据行和列的索引计算一维数组中的位置并返回该值if (i >= j){return array[i * (i - 1) / 2 + j - 1];  // 当i >= j时,使用这个公式}else{return array[j * (j - 1) / 2 + i - 1];  // 当i < j时,使用这个公式}
    }// 打印二维数组
    void PrintTwoDim(int arr[][3], int row, int col)
    {for (int i = 0; i < row; i++)  // 遍历每一行{for (int j = 0; j < col; j++)  // 遍历每一列{cout << arr[i][j] << '\t';  // 输出当前元素}cout << endl;  // 换行}
    }// 打印一维数组
    void PrintOneDim(int *arr, int n)
    {for (int i = 0; i < n; i++)  // 遍历一维数组{cout << arr[i] << '\t';  // 输出当前元素}cout << endl;  // 换行
    }int main()
    {int arr[3][3] = {{1, 4, 5}, {4, 2, 6}, {5, 6, 3}};  // 定义一个3x3的二维数组int array[3 * (3 + 1) / 2];  // 定义一维数组,大小为下三角矩阵的元素个数PrintTwoDim(arr, 3, 3);  // 打印二维数组TwoMapOneDim(arr, array, 3, 3);  // 将下三角矩阵元素存入一维数组PrintOneDim(array, 3 * (3 + 1) / 2);  // 打印一维数组cout << OneDimIndex(array, 1, 3);  // 输出一维数组中(1, 3)对应的值
    }
    

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

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

相关文章

APP自动化搭建与应用

APP自动化环境搭建 用于做APP端UI自动化&#xff0c;adb连接手机设备。 需要的工具java编辑器&#xff1a;jdk、Android-sdk软件开发工具组、appium的python客户端、nodes.js、夜神模拟器、apk包、uiautomatorviewer 第一步&#xff1a;安装sdk&#xff0c;里面包含建立工具bu…

一、机器学习算法与实践_06迭代法和KMeans、线性回归、逻辑回归算法笔记

0 迭代法 迭代法不仅是机器学习、深度学习的核心&#xff0c;也是整个人工智能领域的重要概念&#xff0c;其对于算法的设计和实现至关重要 0.1 适合场景 对于不能一次搞定的问题&#xff0c;将其分成多步来解决&#xff0c;逐步逼近解决方案 0.2 典型应用 KMeans 聚类算法…

9-贪心算法

PDF文档下载&#xff1a;LeetCode-贪心算法-java 参考&#xff1a;代码随想录 题目分类大纲如下&#xff1a; 贪心算法理论基础 什么是贪心&#xff1f; 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 贪心的套路&#xff08;什么时候用贪心&#xff…

【ECMAScript 从入门到进阶教程】第三部分:高级主题(高级函数与范式,元编程,正则表达式,性能优化)

第三部分&#xff1a;高级主题 第十章 高级函数与范式 在现代 JavaScript 开发中&#xff0c;高级函数与函数式编程范式正在逐渐成为开发者追求的目标。这种范式关注于函数的使用&#xff0c;消除副作用&#xff0c;提高代码的可读性和可维护性。 10.1. 高阶函数 高阶函数是…

【Python】文件及目录

文章目录 概要一、文件对象的函数1.1 open()函数1.2 文件对象的函数1.3 with语句 二、基于os和os.path模块的目录操作三、基于Pandas的文件处理3.1 Pandas读写各种类型文件 其他章节的内容 概要 本文主要将了打开文件的函数open()的参数&#xff0c;以及文件对象的函数&#x…

Vue2 + ElementUI + axios + VueRouter入门

之前没有pc端开发基础&#xff0c;工作需要使用若依框架进行了一年的前端开发.最近看到一个视频框架一步步集成&#xff0c;感觉颇受启发&#xff0c;在此记录一下学习心得。视频链接:vue2element ui 快速入门 环境搭建和依赖安装 安装nodejs安装Vue Cli使用vue create proje…

C/C++简单编译原理

我们写的头文件和.cpp文件究竟是如何在电脑中运行的&#xff1f; 先明确几个文件类型&#xff1a; 1、头文件&#xff08;.h .hpp&#xff09; 第三方头文件、系统头文件、自编头文件…… 2、编译单位&#xff08;.cpp .c cu&#xff09; 自己写的脚本文件 3、目标文件&…

JVM 系列知识体系全面回顾

经过几个月的努力&#xff0c;JVM 知识体系终于梳理完成了。 很早之前也和小伙伴们分享过 JVM 相关的技术知识&#xff0c;再次感谢大家支持和反馈。 最后再次献上 JVM系列文章合集索引&#xff0c;感兴趣的小伙伴可以点击查看。 JVM系列(一) -什么是虚拟机JVM系列(二) -类的…

ICPC-day2(圆方树)

圆方树 - OI Wiki (oi-wiki.org) F-Fief_"蔚来杯"2022牛客暑期多校训练营3&#xff08;重现赛&#xff09;山川四月 (nowcoder.com) 题目大意:给定一个无向图&#xff0c;每次询问两点x, y&#xff0c;求是否存在一个n的排列&#xff0c;使得第一个元素为x&#xf…

代码随想录 103. 水流问题

103. 水流问题 #include<bits/stdc.h> using namespace std;void dfs(vector<vector<int>>& mp, vector<vector<int>>& visit, int y, int x){if (visit[y][x] 1) return;visit[y][x] 1;if (y > 0){if (mp[y][x] < mp[y - 1][x…

计算机网络——http和web

无状态服务器——不维护客户端 怎么变成有状态连接 所以此时本地建立代理—— 若本地缓存了——但是服务器变了——怎么办&#xff1f;

vue 不是spa 单页面应用吗? 配置路由工作模式为history 后 ,为什么配置Nginx的 try_files 可以根据url 找到对应的文件?

免责申明 记录用&#xff0c;本人主要是后端,可能理解有误 Vue.js 是一个前端框架&#xff0c;主要用于构建单页面应用程序&#xff08;SPA&#xff09;。然而&#xff0c;Nginx 是一个服务器端的应用程序&#xff0c;负责处理 HTTP 请求并返回相应的资源。 当在 Vue.js 应用…

Pikachu-File Inclusion-远程文件包含

远程文件包含漏洞 是指能够包含远程服务器上的文件并执行。由于远程服务器的文件是我们可控的&#xff0c;因此漏洞一旦存在&#xff0c;危害性会很大。但远程文件包含漏洞的利用条件较为苛刻&#xff1b;因此&#xff0c;在web应用系统的功能设计上尽量不要让前端用户直接传变…

用java编写飞机大战

游戏界面使用JFrame和JPanel构建。背景图通过BG类绘制。英雄机和敌机在界面上显示并移动。子弹从英雄机发射并在屏幕上移动。游戏有四种状态&#xff1a;READY、RUNNING、PAUSE、GAMEOVER。状态通过鼠标点击进行切换&#xff1a;点击开始游戏&#xff08;从READY变为RUNNING&am…

深入理解C语言中的内存分配函数:malloc、calloc、realloc

目录&#xff1a; 前言1. malloc&#xff1a;分配内存块2. calloc&#xff1a;分配并初始化内存块3. realloc&#xff1a;重新分配内存块总结 前言 在C语言编程中&#xff0c;动态内存分配是一个非常重要的概念。它允许我们在程序运行时根据需要分配和释放内存&#xff0c;从而…

CSS | 响应式布局之媒体查询(media-query)详解

media type(媒体类型)是CSS 2中的一个非常有用的属性&#xff0c;通过media type我们可以对不同的设备指定特定的样式&#xff0c;从而实现更丰富的界面。media query(媒体查询)是对media type的一种增强&#xff0c;是CSS 3的重要内容之一。随着移动互联网的发展&#xff0c;m…

微信小程序中的 `<block>` 元素:高效渲染与结构清晰的利器

微信小程序中的 <block> 元素&#xff1a;高效渲染与结构清晰的利器 在微信小程序的开发中&#xff0c;<block> 元素扮演着举足轻重的角色。尽管它不会在页面中渲染任何可见的节点&#xff0c;但作为一个逻辑上的容器&#xff0c;<block> 在条件渲染和循环渲…

reactNative本地调试localhost踩坑

本地调试请求localhost的时候 1.要和电脑处在同一局域网下面&#xff08;同一个wifi&#xff09; 2.把baseURL的localhost改成命令行中ipconfig查询到的IPv4 地址 . . . . . . . . . . . . : &#xff08;例如&#xff09;192.168.1.103 如果报错Net Work Error&#xff0c;可…

C语言普及难度三题

先热个身&#xff0c;一个长度为10的整型数组&#xff0c;输出元素的差的max和min。 #include<stdio.h> int main() {int m[10],i0,max,min;for(i0;i<10;i){scanf("%d",&m[i]);}minm[0];maxm[0];for (i 0; i <10; i){if(min>m[i]) min m[i];i…

BMC pam认证的使用

1.说明 1.1 文档参考资料 https://www.chiark.greenend.org.uk/doc/libpam-doc/html/Linux-PAM_ADG.htmlhttp://www.fifi.org/doc/libpam-doc/html/pam_appl-3.htmlpdf文档: https://fossies.org/linux/Linux-PAM-docs/doc/adg/Linux-PAM_ADG.pdflinux-pam 中文文档pam 旧文p…