FaFu--练习复盘--3

4、指针的应用

4.1、三角形周长和面积计算程序

描述

        已知三角形的三条边的长度,求该三角形的周长和面积,如果三个边不能构成三角形,则三角形的周长和面积都为0。完成程序的编写。

输入

        输入1行,包含3个实数,各实数之间用空格隔开。

输出

        输出1行,包含2个实数(用一个空格隔开),分别是三角形的周长和面积,结果保留2位小数,第3位小数四舍五入。

输入样例 1                                                                 输出样例 1

5.968  5.123 7.63                              18.72 15.26

具体实现

#include<stdio.h>
#include<math.h>
void CalAreaAndPremiter(double a,double b,double c){double s=0,area=0,premiter=0;if(a+b>c&&a+c>b&&b+c>a){s=(a+b+c)/2;premiter=2*s;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("%.2lf %.2lf",premiter,area);}else printf("%.2lf %.2lf",premiter,area);
}
int main(){double a,b,c;scanf("%lf%lf%lf",&a,&b,&c);CalAreaAndPremiter(a,b,c);return 0;
}

4.2、三个实数排序程序

描述

        输入三个实数,从小到大输出该三个实数。完成程序的编写。

输入

        输入1行,包含3个实数,各实数之间用空格隔开。

输出

        输出1行,包含从小到大排列的3个实数,各实数之间用空格隔开。

输入样例 1                                                         输出样例 1

35.3  21.73  28.92                        21.73 28.92 35.30

具体实现

#include<stdio.h>
int main()
{	double a,b,c,d;scanf("%lf%lf%lf",&a,&b,&c);if(a>b){d=a;a=b;b=d;     //a、b的值互换,互换后a≤b}if(a>c){d=a;a=c;c=d;      //a、c的值互换,互换后a≤c}if(b>c){d=b;b=c;c=d;      //b、c的值互换,互换后b≤c}printf("%5.2lf %5.2lf %5.2lf\n",a,b,c);
}

4.3、 指针排序程序

描述

        用指针的方法将n个整数存入a数组中,再用指针的方法将a数组中的数据从小到大排序输出。完成程序的编写。

输入

        输入2行,第1行是一个整数n;第2行有n个整数,整数之间用空格隔开。

输出

        输出1行,包含n个从小到大的整数,整数之间用1个空格隔开。

输入样例 1                                                         输出样例 1

10                                        5 6 8 10 12 19 21 23 61 98
23 21 5 98 19 12 6 10 8 61

具体实现

#include "stdio.h"
#define N0 100
void sortP(int a[], int n){	int *pi, *pj, t;for(pi=a; pi<a+n-1; pi++){for(pj=a; pj<a+n-1-(pi-a); pj++){if(*pj > *(pj+1)){t = *pj;*pj = *(pj+1);*(pj+1) = t;}}}
}
int main(){int a[N0], n, *p;	scanf("%d", &n);						for(p=a; p<a+n; p++){scanf("%d", p);}	sortP(a, n);for(p=a; p<a+n-1; p++)printf("%d ", *p);printf("%d\n", *p);return 0;
}

4.4、 指向指针的指针排序程序

描述

        用指向指针的指针方法将n个字符串存入a数组,再用指向指针的指针方法将n个字符串从小到大排序输出。完成程序的编写。

输入

        输入n+1行,第1行是一个整数n;第2行到第n+1行每行有一个字符串。

输出

        输出n行,每行包含1个字符串,n个字符串从小到大排序输出。

输入样例 1                                                         输出样例 1

5                                         237MJ BNVC
asdkf3&  2345aoqwer                       KJ657KHL
KJHKlkdfd                                 KJH386skdfl
237MJ  BNVC                               KJHKlkdfd
KJH386skdfl                               asdkf3& 2345aoqwer
KJ657KHL

具体实现

#include <stdio.h>
#include <string.h>
const int N0=100;
void sortStrings(char a[][N0+1], int n ){char *pa[N0], **pi, **pj, t[N0+1];for(int i=0; i<n; i++)pa[i]=a[i];for(pi=&pa[0]; pi<&pa[0]+n-1; pi++){for(pj=&pa[0]; pj<&pa[0]+n-1-(pi-&pa[0]); pj++){if(strcmp(*pj, *(pj+1))>0){	strcpy(t, *pj);strcpy(*pj, *(pj+1));strcpy(*(pj+1), t);}}}	}
int main(){char a[N0][N0+1], *pa[N0], **p;int n, i;		scanf("%d ", &n);for(i=0; i<n; i++)pa[i]=a[i];	for(p=&pa[0]; p<&pa[0]+n; p++){gets(*p);}sortStrings(a, n);	for(p=&pa[0]; p<&pa[0]+n; p++){puts(*p);}return 0;
}

4.5、 查找最大整数程序

描述

        编写一个返回值为指针的函数,输出n个整数中的最大整数。完成程序的编写。

输入

        输入2行,第1行是一个整数n;第2行有n个整数,整数之间用空格隔开。

输出

        输出1行,包含1个整数,即n个数中最大的那个。

输入样例 1                                                         输出样例 1

10                                        98
23 21 5 98 19 12 6 10 8 61

具体实现

#include "stdio.h"
const int N0=100;
int *maxInt( int a[], int n ){int *p, *pm;pm=a;for(p=a+1; p<a+n; p++){if(*p > *pm){pm=p;}}return pm;	
}
int main(){int a[N0], n, *p;scanf("%d", &n);		for(p=a; p<a+n; p++)scanf("%d", p);p=maxInt( a, n );printf("%d\n", *p );return 0;
}

4.6、学生成绩排序程序

描述

        某班级有n个学生,每个学生都有3门课的成绩:语文、数学、英语。用指向结构体的指针将数据存入结构体数组,再编写一个返回值是指针的函数,输出总分最高的学生的学号和总分,如果有最高相同的总分,输出语文成绩高的那位,如果语文成绩仍然相同,则输出学号小的那位。完成程序的编写。

输入

        输入n+1行:第1行为一个正整数n,表示该班级的学生人数。第2到n+1行,每行有3个用空格隔开的数字,第j行的3个数字依次表示学号为j-1的学生的语文、数学、英语的成绩。每个学生的学号按照输入顺序编号为l~n(恰好是输入数据的行号减1)。

输出

        输出1行,每行有1个学号和1个总分,2个数据之间用空格隔开。

输入样例 1                         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        输出样例 1

6                                         3 264
78 44 40
91 91 82
93 91 80
61 88 33
98 46 83
76 93 67

具体实现

#include "stdio.h"
const int N0=500;
struct node{int no; // 学号int c,m,e,total;
};node *maxTotal(node a[], int n){node *pm, *p;pm = a;for(p=a+1; p<a+n; p++){	if(p->total > pm->total){pm = p;}else if(p->total == pm->total){if(p->c > pm->c){pm = p;}else if(p->c == pm->c){if(p->no < pm->no){pm = p;}}}}return pm;
}
int main(){node a[N0], *p;	int n, i;		scanf("%d", &n);for(p=a,i=1; p<a+n; p++,i++){scanf("%d%d%d", &p->c, &p->m, &p->e );p->total=p->c + p->m + p->e;		p->no=i;}								p=maxTotal( a, n );printf("%d %d\n", p->no, p->total);return 0;
}

4.7、 字符串中整数求和程序

描述

        将字符串中的正、负整数取出求和。如字符串“w&sk234 K3wzm3455kdf43dkf-56slk%9”中正、负整数取出的和=234+3+3455+43-56+9=3688,程序运行后输出3688。注意:

(1)需要考虑字符串中出现的正负号(+, -),即所有转换结果为正或负整数。

(2)空格为字符串的有效字符、不能忽略。例如,字符串"-□345.123"(□表示空格)应转换为-0,345,123三个整数,而不是-345和123两个整数!

(3)需要考虑'0'开始的数字字符串情况,比如"00035",应转换为整数35;"000"应转换为整数0;"00.0035"应转换为整数0和35(忽略小数点:mmm.nnn当成两个数mmm和nnn来识别)。

(4)不考虑转换后整数超出范围情况,即测试用例中可能出现的最大整数不会超过unsigned int可处理的范围;

(5)输入字符串不会超过100Bytes,请不用考虑超长字符串的情况。

完成程序的编写。

输入

        输入1行,一个字符串。

输出

        输出1个整数,是字符串中所有正、负整数的和。

输入样例 1                                                                 输出样例 1

w&sk234 K3wzm3455kdf43dkf-56slk%9              3688

具体实现

#include "stdio.h"
#include "string.h"
#include<iostream>
using namespace std;
int sumInt( char *s ){int sum=0, t=0, sign;	char *p=s;			bool inNumber=false;while(*p){if(!inNumber && *p>='0' && *p<='9'){inNumber = true;t = 0;if(p>s && *(p-1)=='-'){sign = -1;}else{sign = 1;}}if(inNumber && (*p < '0' ||  *p > '9')){inNumber = false;sum += t * sign;}if(inNumber){							   t = t*10 + (*p-'0');}p++;}if(inNumber){sum += t * sign;}return sum;
}int main(){char s[1000+1];                  cin.getline(s,1001);                        printf("%d\n", sumInt(s));	return 0;
}

4.8、 大正整数相加程序

描述

        求2个大正整数之和。完成程序的编写。

输入

        输入2行,每行是1个大正整数。

输出

        输出1个整数,是上面2个大整数的和。

输入样例 1                                                                         输出样例 1

45656834234234095782376907905623                   4565683432812444876471745770365893890352982340549798035

具体实现

#include <stdio.h>
#include<malloc.h>
#include <string.h>
#define MAXLEN 500
char num1[MAXLEN];
char num2[MAXLEN];
int i, j, n, r;
int L1, L2, L;
char *sum;
void reverse(char *s)
{n = strlen(s);i = 0, j = n - 1;while(i < j){char c = s[i];s[i] = s[j];s[j] = c;i++, j--;}
}
int main()
{r = n = 0;scanf("%s", num1);scanf("%s", num2);reverse(num1);reverse(num2);L1 = strlen(num1), L2 = strlen(num2);L = L1 > L2 ? L1 : L2;L += 2;sum = (char*)malloc(sizeof(char)*L);memset(sum, 0, L);L = L1 < L2 ? L1 : L2;for (i = 0; i < L; i++){n = num1[i] - '0' + num2[i] - '0';sum[i] = (r + n) % 10 + '0';r = (r + n) / 10;}if (L1 <= L2){while (i < L2){n = num2[i] - '0';sum[i] = (r + n) % 10 + '0';r = (r + n) / 10;i++;}}else{while (i < L1){n = num1[i] - '0';sum[i] = (r + n) % 10 + '0';r = (r + n) / 10;i++;}}if (r)sum[i] = r + '0';sum[i + 1] = 0;reverse(sum);printf("%s", sum);return 0;
}

4.9、 删除子字符串程序

描述

        在主字符串中删除所有子字符串。完成程序的编写。

输入

        输入2行,第1行是主字符串,第2行是子字符串。

输出

        输出1行,即删除所有子字符串后的主字符串。

输入样例                                                                                输出样例

hyuaaaabcad;dsj2390aaabcadldkaaaaabcaaabcade          hyua;dsj2390ldkaaaaabce
aaabcad

具体实现

#include<stdio.h>
#include<string.h>const int N0=1000;char *index(char s[],char *sub){int i =0,j=0;char *p=sub;if(*sub == '\0') return NULL;char *pi=s,*pj=sub;while(*pi && *pj)if(*pi == *pj){pi++;pj++;}else{pi = pi-(pj-sub)+1;pj=sub;}if(*pj =='\0')return pi-(pj-sub);elsereturn NULL;}
int main(){char s[N0+1],sub[N0+1],*p,*q;int sublen;gets(s);gets(sub);sublen=strlen(sub);while(p=index(s,sub)){q=p+sublen;while(*p++=*q++);}puts(s);return 0;
}

4.10、 字符串替换程序

描述

        输入3行字符串,分别是s字符串,t字符串和r字符串。如果s字符串中有包含t字符串,则用r字符串替换之。例如:s=“12aaabc3aaaaaabc#$%aaabc”,t=“aaabc”,r=“abc”,将s中的“aaabc”替换成“abc”之后,s=“12abc3aabc#$%abc”。输出替换之后的s字符串。完成程序的编写。

输入

        输入3行字符串,分别是s字符串,t字符串和r字符串。

输出

        输出将s字符串中包含的t字符串,用r字符串替换之,输出替换之后的s字符串。

输入样例 1                         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        输出样例 1

ALKJFOE23DLS67AFAOE                       ALKJFXYZ23DLS67AFAXYZ
OE
XYZ

具体实现

#include<stdio.h>
#include<string.h>const int N0=1000;char *index(char s[],char *sub){int i =0,j=0;char *p=sub;if(*sub == '\0') return NULL;char *pi=s,*pj=sub;while(*pi && *pj)if(*pi == *pj){pi++;pj++;}else{pi = pi-(pj-sub)+1;pj=sub;}if(*pj =='\0')return pi-(pj-sub);elsereturn NULL;}
void insStr(char *s,char *r ,char *p){char *pi,*pj;int i,j;int len=strlen(r);for(i=strlen(s);i>=p-s;i--)s[i+len]=s[i];for(i=p-s,j=0;r[j];i++,j++)s[i]=r[j];
}
int main(){char s[N0+1],t[N0+1],r[N0+1],*p,*p1,*q;int tlen;gets(s);gets(t);gets(r);tlen=strlen(t);while(p=p1=index(s,t)){q=p+tlen;while(*p++=*q++);insStr(s,r,p1);}	puts(s);return 0;}

4.11、 有序表合并去重程序

描述

        有2个从小到大已经排序好的(有序)表,每个结点的数据是1个整数,已知两个表的数据存放在带头结点的单向链表中,将2个有序表合并成1个新的有序表,要求新的有序表中去掉重复相同的数据。完成程序的编写。

输入

        输入4行,第1行有1个整数n,即第1个表的结点数,第2行有n个整数;第3行有1个整数m,即第2个表的结点数,第4行有m个整数。整数之间用空格隔开。

输出

        输出1行,将上述2个表的数据从小到大排序输出,数据中没有相同项,每个整数之后输出1个空格。

输入样例 1                                                                 输出样例 1

6                                              -5 3 6 8 11 25 43 67 84 92 96 99 
3 6 11 25 67 84
10
-5 3 8 25 25 43 67 92 96 99

具体实现

#include "stdio.h"
const int INF=0x7fffffff; //无穷大整数
struct ND
{	int data; struct ND *next; 
};ND *createLink( ) 
{	ND *head, *p;int n; head = p = new ND; scanf("%d", &n);while( n-- ){	p->next = new ND; p = p->next;  scanf("%d", &p->data); }p->next = NULL; return head;    
}
void printLink( ND *head ) 
{	ND *p=head->next;  if( p==NULL )return ;while( p ){	printf( "%d ",p->data );p=p->next;}printf("\n");
}void deleteLink( ND *head) 
{	ND *p=head;while( p ){	head = p->next;delete p;p = head;}
}ND * megerLink( ND *ha, ND *hb ) //合并2有序表,返回合并后链表头结点的地址
{	ND *pa=ha->next, *pb=hb->next, *hc, *pc;int data, lastData=INF; //lastData为上一个结点的数据项,用于判定是否有相同数据hc=pc=new ND;
//************************************************while(pa || pb){if(pa&&(pb==NULL || pa->data <= pb -> data)){data= pa->data;pa=pa->next; }else{data =pb->data;pb = pb->next;}if(data != lastData){pc->next=new ND;pc=pc->next;pc->data=data;lastData=data;}} pc->next=NULL;return hc;
//=================================================return hc;
}
int main()
{	ND *ha, *hb, *hc;//freopen( "sc6_6b.in", "r", stdin);//freopen( "sc6_6b.out", "w", stdout);ha = createLink();hb = createLink();hc = megerLink( ha, hb );printLink( hc );deleteLink( ha );deleteLink( hb );deleteLink( hc );return 0;}

4.12、 有序表交集合并程序

描述

        有2个从小到大已经排序好的(有序)表,每个结点的数据是1个整数,已知两个表的数据存放在带头结点的单向链表中,将2个有序表合并成1个新的有序表,并要求新表中仅包含2个原表的交集。完成程序的编写。

输入

        输入4行,第1行有1个整数n,即第1个表的结点数,第2行有n个整数;第3行有1个整数m,即第2个表的结点数,第4行有m个整数。整数之间用空格隔开

输出

        输出1行,将上述2个表数据的交集从小到大排序输出,每个整数之后输出1个空格。

输入样例 1                                                                 输出样例 1

7                                              3 25 67 92
3 6 11 25 67 84 92
10
-5 3 8 25 25 43 67 92 96 99

具体实现

#include "stdio.h"
const int INF=0x7fffffff; //无穷大整数
struct ND
{	int data; struct ND *next; 
};ND *createLink( ) 
{	ND *head, *p;int n; head = p = new ND; scanf("%d", &n);while( n-- ){	p->next = new ND; p = p->next;  scanf("%d", &p->data); }p->next = NULL; return head;    
}
void printLink( ND *head ) 
{	ND *p=head->next;  if( p==NULL )return ;while( p ){	printf( "%d ",p->data );p=p->next;}printf("\n");
}void deleteLink( ND *head) 
{	ND *p=head;while( p ){	head = p->next;delete p;p = head;}
}ND * megerLink( ND *ha, ND *hb ) //合并2有序表,返回合并后链表头结点的地址
{	ND *pa=ha->next, *pb=hb->next, *hc, *pc;int data, lastData=INF; //lastData为上一个结点的数据项,用于判定是否有相同数据hc=pc=new ND;
//************************************************while(pa || pb){if(pa&&(pb==NULL || pa->data<=pb->data)){if(pb&&pa->data==pb->data)data = pa->data;elsedata = -INF;pa=pa->next;}else{if(pa&& pa->data == pb->data)data=pa->data;elsedata =-INF;pb=pb->next;}if(data != -INF && data != lastData){pc->next=new ND;pc=pc->next;pc->data=data;lastData=data;}}pc->next=NULL;return hc;
}
int main()
{	ND *ha, *hb, *hc;
//	freopen( "sc6_6c.in", "r", stdin);
//	freopen( "sc6_6c.out", "w", stdout);ha = createLink();hb = createLink();hc = megerLink( ha, hb );printLink( hc );deleteLink( ha );deleteLink( hb );deleteLink( hc );return 0;
}

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

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

相关文章

大模型关键技术:上下文学习、思维链、RLHF、参数微调、并行训练、旋转位置编码、模型加速、大模型注意力机制优化、永久记忆、LangChain、知识图谱、多模态

大模型关键技术 大模型综述上下文学习思维链 CoT奖励建模参数微调并行训练模型加速永久记忆&#xff1a;大模型遗忘LangChain知识图谱多模态大模型系统优化AI 绘图幻觉问题从 GPT1 - GPT4 拆解GPTs 对比主流大模型技术点旋转位置编码层归一化激活函数注意力机制优化 大模型综述…

四种方法将 Docker Registry 迁移至 Harbor

Registry Docker Distribution Docker Distribution 是第一个是实现了打包、发布、存储和镜像分发的工具&#xff0c;起到 docker registry 的作用。&#xff08;目前 Distribution 已经捐赠给了 CNCF&#xff09;。其中 Docker Distribution 中的 spec 规范后来也就成为了 O…

在线WebOffce在HTML/VUE/Electron纯前端网页编辑Office之打开Word后自动处于修订模式

在线办公协同办公过程中&#xff0c;对于老板给出的文档修改&#xff0c;如果在错别字方面都要自己一个个字去看的话也太浪费时间了&#xff0c;其实word上就有一个修订模式&#xff0c;可以帮助大家高效完成文档的修改&#xff0c;在线WebOffce在HTML/VUE/Electron纯前端网页编…

Semaphone应用源码分析

Semaphone应用&源码分析 3.1 Semaphore介绍 sync&#xff0c;ReentrantLock是互斥锁&#xff0c;保证一个资源同一时间只允许被一个线程访问 Semaphore&#xff08;信号量&#xff09;保证1个或多个资源可以被指定数量的线程同时访问 底层实现是基于AQS去做的。 Semap…

pinia 的使用方法

使用方式&#xff08;选项式&#xff09; 1、在 mian.js 导入 pinia 里的 createPinia 函数。 2、app.use 这个 createPinia 函数的返回值。 // main.jsimport { createPinia } from pinia;app.use(createPinia()); 3、创建一个 js 文件&#xff08;该文件保存着共享的数据&…

Git和SVN

1、Git Git是一个分布式版本控制系统&#xff0c;由Linus Torvalds创建&#xff0c;用于有效、高速地处理从小到大的项目版本管理。Git是开源的&#xff0c;采取了分布式的版本库的方式&#xff0c;不需要服务器端软件就可以运行。 Git的核心概念 以下是Git中的一些核心概念…

《Python数据分析技术栈》第03章 02 数据结构(Structure of data)

02 数据结构&#xff08;Structure of data&#xff09; 《Python数据分析技术栈》第03章 02 数据结构&#xff08;Structure of data&#xff09; The data that we need to analyze could have any of the following structures, 我们需要分析的数据可能具有以下任何一种结…

RabbitMQ-数据持久化

一、持久化类型 1、交换机持久化&#xff08;SpringAMQP默认&#xff09; 2、队列持久化&#xff08;SpringAMQP默认&#xff09; 3、消息持久化 二、消息持久化 1、纯内存操作 如果采用纯内存操作&#xff0c;那么消息存储达到队列的上限之后&#xff0c;会有一个page ou…

开源进程/任务管理服务Meproc使用之HTTP API

本文讲述如何使用开源进程/任务管理服务Meproc的HTTP API管理整个服务。 Meproc所提供的全部 API 的 URL 都是相同的。 http://ip:port/proc例如 http://127.0.0.1:8606/proc在下面的小节中&#xff0c;我们使用curl命令向您展示 API 的方法、参数和请求正文。 启动任务 …

git 常规操作及设置

git 常规操作及设置 Git是一个分布式版本控制系统&#xff0c;可以用来跟踪文件的修改历史并与其他人进行协作开发。下面是一些常见的Git操作及设置&#xff1a; 初始化仓库&#xff1a;使用命令git init在当前目录创建一个新的Git仓库。 克隆仓库&#xff1a;使用命令git clo…

TCP/IP协议及配置、IP地址、子网掩码、网关地址、DNS与DHCP介绍

一、什么是服务器 能够为其他计算机提供服务的更高级的电脑 尺寸:Unit 1u1.75英寸44.45mm4.445cm IDC&#xff08;机房&#xff09; C/S结构 Client/Server客户端和服务端 二、TCP/IP协议 计算机与计算机之间通信的协议 三要素&#xff1a; IP地址 子网掩码 IP路由 I…

基于一次应用卡死问题所做的前端性能评估与优化尝试

问题背景 在上个月&#xff0c;由于客户反馈客户端卡死现象但我们远程却难以复现此现象&#xff0c;于是我们组织了一次现场上门故障排查&#xff0c;并希望基于此次观察与优化&#xff0c;为客户端开发提供一些整体的优化升级。当然&#xff0c;在尝试过程中&#xff0c;也发…

大模型实战营Day6 作业

基础作业 使用 OpenCompass 评测 InternLM2-Chat-7B 模型在 C-Eval 数据集上的性能 环境配置 conda create --name opencompass --clone/root/share/conda_envs/internlm-base source activate opencompass git clone https://github.com/open-compass/opencompass cd openco…

eMMC之分区管理、总线协议和工作模式

一、eMMC 简介 eMMC 是 embedded MultiMediaCard 的简称。MultiMediaCard&#xff0c;即MMC&#xff0c; 是一种闪存卡&#xff08;Flash Memory Card&#xff09;标准&#xff0c;它定义了 MMC 的架构以及访问 Flash Memory 的接口和协议。而eMMC 则是对 MMC 的一个拓展&…

android 13.0 Camera2 去掉后置摄像头 仅支持前置摄像头功能

1.概述 在定制化13.0系统rom定制化开发中,当产品只有一个前置摄像头单摄像头,这时调用相机时就需要默认打开前置摄像头就需要来看调用摄像头这块的代码,屏蔽掉后置摄像头的调用api就可以了,接下来就来具体实现相关功能的开发 2.Camera2 去掉后置摄像头 仅支持前置摄像头功…

【Docker】使用Docker安装Nginx及部署前后端分离项目应用

一、Nginx介绍 Nginx是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。它是由伊戈尔赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的&#xff0c;公开版本1.19.6发布于2020年12月15日。其将源代码以类BSD许可证的形式发布&#xff0c;因它…

数据结构---栈(Stack)

一、基本概念 栈是一种线性数据结构 二、特点 栈是"后进先出(LIFO---Last In First Out)"的数据结构(盘子的叠放&#xff1a;当服务员将新的盘子放在餐桌上时&#xff0c;他们通常会将盘子放在已有的盘子堆的顶部。当顾客用完盘子后&#xff0c;服务员会从堆顶取走…

PostgreSQL 100条命令

我会为您提供一些 PostgreSQL 中最常用的命令&#xff1a; 1. 创建数据库&#xff1a;CREATE DATABASE database_name; 2. 连接到数据库&#xff1a;\c database_name; 3. 创建表格&#xff1a;CREATE TABLE table_name (column1 datatype, column2 datatype, ...); 4. 插入数…

内网环境横向移动——利用windows服务

利用windows服务进行横向渗透主要是通过sc命令&#xff0c;但是注意这里跟之前windows远程命令相比多了一个条件&#xff0c;即当前主机需要为administrator权限。 sc命令 sc命令是XP系统中功能强大的DOS命令,SC命令能与“服务控制器”和已安装设备进行通讯。SC是用于与服务控…

SDCMS靶场通过

考察核心&#xff1a;MIME类型检测文件内容敏感语句检测 这个挺搞的&#xff0c;一开始一直以为检查文件后缀名的&#xff0c;每次上传都失败&#xff0c;上传的多了才发现某些后缀名改成php也可通过&#xff0c;png图片文件只把后缀名改成php也可以通过&#xff0c;之前不成功…