2023/6/8总结

news2024/11/30 6:35:02

MySQL必知必会

commitrollback 的差异是commit会提交,而rollback不会,就好像是撤回

使用保留点:

简单的rollback和commit语句就可以写入或者撤销整个事务处理,但是,只是对简单的事务处理才能这样做,更简单的事务处理可能需要部分提交或回退。

为了支持回退部分事务处理,必须能在事务处理块中合适的位置放置占位符。这样,如果需要回退,可以退回到某个占位符。

这些占位符称为保留点,为了创建占位符,可以使用:

语法:

保留点在事务处理完成,执行一条rollback或者commit后自动释放,也可以用release savepoint明确地释放保留点。

 如果需要回退:

回退语法:rollback to 保留点名称

 更改默认的提交行为:

MySQL默认行为是自动提交所有更改,如果想要MySQL不自动提交更改,需要使用以下语句。

设置回去是:

 

 字符集和校对顺序:

MySQL需要适应不同的字符集(不同的字母和字符),适应不同的排序和检索数据的方法。

  • 字符集为字母和符号的集合
  • 编码为某个字符集成员的内部表示
  • 校对为规定字符如何比较的指令。

校对的重要性:在数据的排序时,如果想要拿到自己想要的正确顺序,就需要校对

 

  •  给表指定字符集和校对

  • 对列进行指定字符集和校对

 如果需要用与创建表时不同的校对顺序排序特定的select语句:

 安全管理:

访问控制:

MySQL服务器的安全基础是,用户应该对他们需要的数据具有适当的访问权。

使用访问权的情况:

  • 多数用户只需要对表进行读和写,但是少数用户需要能创建表和删除表。
  • 某些用户需要读表,但是不需要更新表
  • 允许用户添加数据,但是不允许删除数据
  • 一些用户需要处理用户账号的权限,但是多数用户不需要。
  • 让用户通过存储过程访问数据,但是不能直接访问数据
  • 根据用户登录的地点限制对某些功能的访问。

MySQL的数据库的user表里面包含所有的用户账号。

创建用户账号:

 identified by 指定的口令为纯文本,MySQL将保存到user表之前对其进行加密,为了作为散列值指定口令,使用identified by password

使用grant或者insert grant语句也可以创建用户账户,但是一般来说creat user是最清楚和最简单的句子。此外也可以通过插入行列到user表来增加用户,但是为了安全起见,不建议这样做。MySQL用来存储用户账号信息的表极为重要,对它们的任何毁坏都可能严重地伤害到MySQL服务器。

重命名用户账户

 

rename user只在mysql5之后的版本支持。

删除用户账号:

 设置访问权限:

创建用户账号后,必须接着分配访问权限。新创建的用户账号没有访问权限。能登录MySQL,不能看到数据,不能执行任何数据库操作。

这是查看用户账号的权限:(目前还是看不懂)

 设置权限,使用grant语句,需要给出以下信息:

  • 要授予的权限
  • 被授予访问权限的数据库或者表
  • 用户名

 每个grant添加(或更新)用户的一个权限,MySQL读取所有的授权,并根据它们确定权限。

grant 的反向操作是revoke 用来撤销特定的权限。

是revoke而不是remove

 grant和revoke可以在几个层次上控制访问权限:

  • 整个服务器:grant all 和 revoke all
  • 整个数据库:on database.* 
  • 特定的表,使用on database.table 
  • 特定的列
  • 特定的存储过程
  • 具体的表: 

未来的授权:在使用grant 和 revoke ,用户账号必须存在, 但是所涉及的对象没有这个要求,这允许管理员在创建数据库和表之前设计和实现安全措施。但是这样做的副作用是,当某个数据库或者表被删除时(drop语句),相关的权限依然起作用。

简化授权:

可以通过累出各权限,将多条grant语句串在一起:

更改用户口令(密码)

书上说应该这样写:(但是一直没成功) 

 

 在不指定用户名时,set password更新当前登录用户的口令。

数据库维护:

备份数据:

解决方案:

  • 使用命令行实用程序MySQLdump转储所有数据库内容到某个外部文件,在进行常规备份钱这个实用程序应该正确地备份转储文件。
  • 可用命令行实用程序MySQLhotcopy从一个数据库复制所有数据(但是不是所有数据库引擎都支持这个实用程序)。
  • 可以使用MySQL的backup table或者select into outfile 转储所有数据到某个外部文件,这俩条语句都接受将要创建的系统文件名,此系统文件必须不存在,否则会出错。数据可以用restore table来复原。

进行数据库维护:

检查表键是否正确

 check table用来针对许多问题对表进行检查。在MyISAM表上还对索引进行检查。check table支持一系列的用于MyISAM表的方式。changed检查自最后一次检查以来改动过的表,extended执行最彻底的检查,fast只检查未正常关闭的表,medium检查所有被删除的链接并进行键检验,quick只进行快速扫描。

 如果MyISAM表访问产生不正确和不一致的结果,可能需要用repair table来修复相应的表。但是这条语句不应该多次使用,经常使用可能会有更大的问题要解决。

如果从一个表中删除大量数据,应该使用optimize table来收回所用的空间,从而优化表的性能。

改善性能:

  • 查看当前设置,可以使用show variables 和show status
  • MySQL是一个多用户多线程的DBMS,它经常同时执行多个任务,如果这些任务中的某一个执行缓慢,则所有请求都会执行缓慢。如果遇到这样的情况,可以使用show processlist显示所有活动进程(以及它们的线程ID和执行时间),可以用kill命令终结某个特定的进程(但是需要作为管理员登录)
  • 使用explain语句让MySQL解释它将如何执行一条select语句
  •  一般来说,存储过程执行得比一天一天地执行其中各条MySQL语句快。
  • 在导入数据时,应该关闭自动提交,如果要删除索引(包括fulltext索引),应该在导入完成后再重建它们。
  • 使用union语句比一系列复杂得or条件要好的多
  • 索引改善数据检索得性能,但是损害数据插入、删除和更新的性能。如果你的表只是要收集数据,则在有必要之前不要索引它们。
  • like很慢,最好使用fulltext而不是like

题解:

第三次题组 [Cloned] - Virtual Judge (vjudge.net)

1.这道题其实就是需要求出 a^c1+c2*b 是否存在这个c2让剩下的数字整除a

2.但是a=1的时候需要特判一下

#include<stdio.h>
int slove(long long n,long long a,long long b)
{
	if(a==1)
	{
		if((n-1)%b==0) return 1;
		else return 0;
	}
	long long num=1;
	int flag=0;
	while(num<=n)
	{
		if((n-num)%b==0)
		{
			flag=1;break;
		}
		num*=a;
	}
	return flag;
}
int main()
{
	//倍数、加起来相等
	long long t,i,j,n,a,b;
	scanf("%lld",&t);
	for(i=0;i<t;i++)
	{
		scanf("%lld%lld%lld",&n,&a,&b);
		if(slove(n,a,b)==1)
		{
			puts("Yes");
		}
		else puts("No");
	}
	
	return 0;
}

第三次题组 [Cloned] - Virtual Judge (vjudge.net)

1.这一题是算出区间,每次贪心取一个区间保留下来,然后对比顾客的适宜温度。

2,最高值的区间需要取到当前和之前的最小,后面好变化一点。最低值相反。

#include<stdio.h>
#define Maxsize 510
int t[Maxsize],l[Maxsize],h[Maxsize];
int q,n,m;
int MAX(int a,int b)
{
	if(a>b) return a;
	return b;
}
int MIN(int a,int b)
{
	if(a<b) return a;
	return b;
}
int slove()
{
	int i,j,pret=0,prel=m,preh=m;
	int maxt,mint;
	for(i=1;i<=n;i++)
	{
		maxt=preh+(t[i]-pret);
		mint=prel-(t[i]-pret);
		if(l[i]>maxt||h[i]<mint) return 0;
		pret=t[i];
		prel=MAX(mint,l[i]);
		preh=MIN(maxt,h[i]);
	}
	return 1;
}
int main()
{
	int i,j;
	scanf("%d",&q);
	for(i=0;i<q;i++)
	{
		scanf("%d%d",&n,&m);
		for(j=1;j<=n;j++)
		{
			scanf("%d%d%d",&t[j],&l[j],&h[j]);
		}
		if(slove()) puts("YES");
		else puts("NO");
	}
}

第三次题组 [Cloned] - Virtual Judge (vjudge.net)

1.这道题目很简单就是求出对于长宽,多出来也不要少的a的倍数,相乘即可。

 

#include<stdio.h>
int main()
{
	long long n,m,a,res,i,j;
	scanf("%lld%lld%lld",&n,&m,&a);
	i=n/a;
	if(n%a!=0) i+=1;
	j=m/a;
	if(m%a!=0) j+=1;
	res=i*j;
	printf("%lld\n",res);
	return 0;
}

第三次题组 [Cloned] - Virtual Judge (vjudge.net)

1.这道题,其实是在求 n 到 1的区间内最多有几个 数字既要被n整除,又要能把前面整除

2.只要从1开始往后找最小的一个倍数,能够满足上面的条件即可。

#include<stdio.h>
#define Maxsize 1000010
int a[Maxsize];
int main()
{
	//找公因子
	int n,num=1,j=0,cur,k=0;
	scanf("%d",&n);
	while(num<n)
	{
		cur=num;
		a[k++]=num;
		for(j=2;j*cur<=n;j++)
		{
			if(n%(j*cur)==0&&((j*cur)%a[k-1]==0))
			{
				break;
			}
		}
		
		if(j*cur<=n) num=j*cur;
		else break;
	}
	
	printf("%d ",n);
	for(j=k-1;j>=0;j--)
	{
		printf("%d ",a[j]);
	}
}

第三次题组 [Cloned] - Virtual Judge (vjudge.net)

1. 暴力即可
 

#include<stdio.h>
#define Maxsize 100010
int a[Maxsize];
int main()
{
	long long n,i,j,sum1=0,sum2=0;
	scanf("%lld",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(i=0,j=n-1;i<j&&i<n&&j>=0;)
	{
		if(sum1>sum2)
		{
			sum2+=a[j];
			j--;
		}
		else if(sum2>sum1)
		{
			sum1+=a[i];
			i++;
		}
		else 
		{
			sum1+=a[i];
			sum2+=a[j];
			i++;
			j--;
		}
	}
	if(i==j&&sum1==sum2)
	{
		i++;
	}
	else if(i==j&&sum1<sum2)
	{
		i++;
	}
	printf("%lld %lld\n",i,n-i);
	return 0;
}

第三次题组 [Cloned] - Virtual Judge (vjudge.net)

1.这个题目,搞了很久才懂得题目意思(是因为没有认真看) 

2.题目很简单,就是说,给出的直线必须满足,是俩条平行于x轴和y轴的直线,不算是直线,是线段,线段的端点必须要被俩条直线都包含,是包含,更严格一点是端点必须在这些坐标中出现俩次。下面这样就不算,必须规规矩矩是一个矩形。

#include<stdio.h>
typedef struct node
{
	int x1,y1,x2,y2;	
}NODE;
int main()
{
	int i,j,m=0,n=0,f=0,k=0;
	int a[8][2]={0},count[8]={0};
	NODE p[4];
	for(i=0;i<4;i++)
	{
		scanf("%d%d%d%d",&p[i].x1,&p[i].y1,&p[i].x2,&p[i].y2);
		if(p[i].x1==p[i].x2&&p[i].y1==p[i].y2) f=1;
	    else if(p[i].x1==p[i].x2)
		{
			m++;
			//与y轴平行
		}
		else if(p[i].y1==p[i].y2)
		{
			n++;
			//与x轴平行
		}
		else f=1;
		
		for(j=0;j<k;j++)
		{
			if(p[i].x1==a[j][0]&&p[i].y1==a[j][1]) 
			{
				count[j]++;
				break;
			}
		}
		if(j>=k) 
		{
			a[j][0]=p[i].x1;
			a[j][1]=p[i].y1;
			count[j]++;
			k++;
		}
		
		for(j=0;j<k;j++)
		{
			if(p[i].x2==a[j][0]&&p[i].y2==a[j][1]) 
			{
				count[j]++;
				break;
			}
		}
		if(j>=k) 
		{
			a[j][0]=p[i].x2;
			a[j][1]=p[i].y2;
			count[j]++;
			k++;
		}
	}
	
	if(f||k!=4) 
	{
		puts("NO");
		return 0;
	}
	
	if(m!=2&&n!=2)
	{
		puts("NO");
		return 0;
	}
	
	for(i=0;i<4;i++)
	{
		if(count[i]!=2)
		{
			puts("NO");
			return 0;
		}
	}
	puts("YES");
	return 0;
}

第三次题组 [Cloned] - Virtual Judge (vjudge.net)

1.这是求负数在m内个数字能取得最大的和

2.排序计算即可。

#include<stdio.h>
#include<algorithm>
#define Maxsize 110

using namespace std;

int main()
{
	int n,m,i,x,j=0,res=0;
	int a[Maxsize];
	scanf("%d%d",&n,&m);
	//n是电视的数量,m是bob能拿的数量
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	sort(a,a+n);
	for(i=0;i<m;i++)
		if(a[i]<0)
		{
			res+=-a[i];
		}
	printf("%d\n",res);
	return 0;
}

第三次题组 [Cloned] - Virtual Judge (vjudge.net)

1.这道题也是排序,然后看对应b的数组是不是递增的就行

#include<stdio.h>
#include<algorithm>
#define Maxsize 100010

using namespace std;

typedef struct node
{
	int a,b;
}NODE;
bool cmp(NODE x,NODE y)
{
	if(x.a<y.a) return true;
	return false;
}
int main()
{
	int n,i;
	NODE p[Maxsize];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d%d",&p[i].a,&p[i].b);
	}
	
	sort(p,p+n,cmp);
	//找到一对,根据价格排序吧
//	for(i=0;i<n;i++)
//	{
//		printf("%d ",p[i].a);
//	}
//	puts("");
//	for(i=0;i<n;i++)
//	{
//		printf("%d ",p[i].b);
//	}
	for(i=1;i<n;i++)
	{
		if(p[i].b<p[i-1].b)
		{
			puts("Happy Alex");
			return 0;
		}
	}
	puts("Poor Alex");
	return 0;
}

第三次题组 [Cloned] - Virtual Judge (vjudge.net)

1.注意这道题说的是至少有几个说谎的人,而不是一定有几个人。

2.所有我们计数,再计算和,判断,减去这些说真话,剩下就是说谎话的。

#include<stdio.h>
#define Maxsize 110
int main()
{
	int t,n,i,j,k;
	int a[Maxsize];
	scanf("%d",&t);
	while(t--)
	{
		int flag=-1;
		int count[Maxsize]={0};
		scanf("%d",&n);
		for(i=0;i<n;i++)
		{
			scanf("%d",&a[i]);
			count[a[i]]++;
		}
		//i个人说有a[i]个骗子,判断他是不是骗子
		//说真话的说的是重复的数字,除去说真话的说的个数
		//其他人的个数是说谎话的人
		for(i=0,k=0;i<=n;i++)
		{
			//当前的
			k+=count[i];
			if(i==n-k) flag=i; 
		}
		printf("%d\n",flag);
	}
	return 0;
}

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

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

相关文章

chatgpt赋能python:Pythontypedef:介绍及使用方法

Python typedef: 介绍及使用方法 Python作为一种高级编程语言&#xff0c;支持定义类型别名&#xff0c;可以给现有类型起一个新的名字&#xff0c;从而提高代码的可读性和可维护性。在本文中&#xff0c;我们将介绍Python中的typedef概念及其使用方法。 什么是Python typede…

BiFormer实战:使用BiFormer实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整算法设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试热力图可视化展示…

【新申请】新SRRC容易Fail点分享 2.4G和5.8G的干扰规避判定方法

新SRRC容易Fail点分享 一、2.4G 产品针对于高信道边带变严格了&#xff0c;在之前带外杂散limit为-80dBm/Hz的基础上增加了一段2483.5MHz-2500MHz限值为-40dBm/MHz, 计算可得-100dBm/Hz, 限值严格了20dB。 二、2.4G和5.8G低频发射杂散变严&#xff0c;新规2.4G和5.8G限值变为…

三相PWM整流器有限集模型预测电流控制MATLAB仿真模型

三相PWM整流器有限集模型预测电流控制MATLAB仿真模型-Matlab文档类资源-CSDN文库https://download.csdn.net/download/weixin_56691527/87881809模型简介&#xff1a; 整流器交流侧为三相对称电压&#xff0c;220V/50Hz&#xff0c;直流侧为760V&#xff0c;且电压可调。其中模…

Java 八股文-基础篇

Java 基础 一、Java 概述 1.什么是 Java&#xff1f; Java 是一门面向对象的编程语言&#xff0c;不仅吸收了 C语言的各种优点&#xff0c;还摒弃了 C里难以理解的多继承、指针等概念&#xff0c;因此 Java 语言具有功能强大和简单易用两个特征。Java 语言作为静态面向对象编…

树莓派安装 VScode 与卸载 VScode

0. 实验准备 一个带有系统的树莓派&#xff08;有屏幕更好&#xff09; 一台联网的电脑&#xff0c;且可以使用 VNC 登录树莓派&#xff08;与屏幕二选一&#xff09; 一个可以与树莓派交互文件的软件、如&#xff1a;MobaXterm&#xff08;推荐&#xff09;、WinSCP 1. 获取…

ch7_1指令系统

计算机硬件与软件之间的接口&#xff0c; 指令系统。 1.机器指令 1.1 指令的格式 指令的格式是什么&#xff1f; 操作码&#xff0c;地址码&#xff0c;寻址方式&#xff1b; 指令的字长&#xff0c;可以分为固定字长&#xff0c;可变字长&#xff1b; 操作码的长度可以是…

chatgpt赋能python:Python下Maskout

Python下Maskout Python下Maskout是一种图像处理技术&#xff0c;用于去除图像中的特定区域或对象。Maskout通常用于图像分割&#xff0c;图像合成&#xff0c;深度学习等方面&#xff0c;在许多应用程序中都有很高的需求。本文将向您介绍Python下如何实现Maskout&#xff0c;…

读改变未来的九大算法笔记07_搜索引擎

1. 车库轶事 1.1. 1939年 1.1.1. 戴夫休利特&#xff08;Dave Hewlett&#xff09; 1.1.1.1. 惠普&#xff08;Hewlett-Packard&#xff09; 1.2. 1976年 1.2.1. 蒂夫乔布斯&#xff08;Steve Jobs&#xff09;和史蒂夫沃兹尼亚克&#xff08;Steve Wozniak&#xff09; …

chatgpt赋能python:PythonPip(包管理器):即插即用的方式

Python Pip&#xff08;包管理器&#xff09;: 即插即用的方式 Python Pip是Python的包管理器&#xff0c;目的是为了简化Python包的安装和管理。Python Pip让用户可以轻松地添加、更新和删除Python包。 安装Pip 在安装Python的时候&#xff0c;一般情况下&#xff0c;Pip就…

遗留的 AppSec 工具迷失在云端

随着应用程序开发步伐的加快&#xff0c;IT 和安全团队正在对旧的应用程序安全(AppSec) 工具失去信心。 根据 Backslash 对 300 名 CISO、AppSec 经理和工程师的调查&#xff0c;遗留工具无法跟上并陷入永远的追赶游戏。 影响是深远的&#xff0c;大多数组织都看到云原生 App…

2023中兴捧月图像赛道-任意尺度盲超分初赛第三方案

任意尺度盲超分-初赛第三方案 吐槽篇方案篇一、左脚踩右脚二、梯度攻击 建议篇 吐槽篇 正文内容.正式讲述方案之前&#xff0c;容我先吐槽两句&#xff0c;真tm的是比赛&#xff0c;纯纯ex人。学历厂就别打着以赛招聘的口号&#xff0c;要985计算机的直接去他们学校里宣讲嘛&am…

限制docker日志

为啥要清理服务器上docker容器的日志&#xff1f; 因为是服务器的磁盘空间资源有限&#xff0c;由于docker容器在启动的时候没有限制&#xff0c;导致运行的docker容器随着时间的推移产生的日志越来越多&#xff0c;最后把服务磁盘资源耗尽&#xff0c;服务器的磁盘满了会导致…

MySQL实战:如何设计一个常用的后台管理系统的数据库结构

部分数据来源&#xff1a;ChatGPT 什么是后台管理系统&#xff1f; 后台管理系统是指用于管理和维护网站或应用程序的后台界面系统&#xff0c;通常包含用户管理、权限管理、数据管理等功能&#xff0c;能够方便快捷地管理网站或应用程序。常见的后台管理系统有Cms、OA等&am…

元素的alt和title属性相关细节知识

文章目录 I. 引言alt和title属性的作用和原理元素的alt和title属性的区别 II. 元素的alt属性元素的alt属性alt属性的作用alt属性的使用场景引用实例说明alt属性的应用 III. 元素的title属性元素的title属性title属性的作用title属性的使用场景引用实例说明title属性的应用 IV. …

chatgpt赋能python:Python新手必备:如何下载Jupyter

Python新手必备&#xff1a;如何下载Jupyter 如果你正在寻找一个强大而简单的Python编程环境&#xff0c;那么Jupyter可能是你需要的软件。Jupyter是一种交互式的编程环境&#xff0c;让你可以在浏览器中创建和共享笔记本&#xff0c;适合编写数据分析、机器学习、人工智能等方…

chatgpt赋能python:Python编程必备之OpenCV库下载与安装

Python编程必备之OpenCV库下载与安装 作为目前最热门的计算机视觉库之一&#xff0c;OpenCV在人工智能领域中发挥着巨大的作用。而Python作为一门强大的编程语言&#xff0c;在OpenCV的使用上也有其独特的优势。本文将介绍Python如何下载和安装OpenCV库&#xff0c;以及如何引…

chatgpt赋能python:Pythonpip安装库教程

Python pip安装库教程 Python是一个高级编程语言&#xff0c;具有丰富的库和模块&#xff0c;而pip是Python官方推荐的包管理工具&#xff0c;可以轻松地安装、升级和卸载各种库。 什么是pip pip是Python包管理工具&#xff0c;用于安装Python中的第三方库。pip可以轻松地安…

⑦电子产品拆解分析-6600mA充电宝

⑦电子产品拆解分析-6600mA充电宝 一、功能介绍二、电路分析以及器件作用1、锂电池充放电和USB输出2、主控IC部分电量 三、数据资料汇总以及参考 一、功能介绍 ①提供USB的5V1A和5V2A功率输出&#xff1b;②充电使用micro USB对锂电池充电&#xff1b;③充电宝总容量6600MA电量…

chatgpt赋能python:Python如何设计UI:最佳实践和关键洞察

Python如何设计UI&#xff1a;最佳实践和关键洞察 作为一种支持多种编程范式和用途的高级语言&#xff0c;Python已经成为了许多技术创造者和创业者的首选工具之一。但是&#xff0c;Python最初并不是为了动态用户界面&#xff08;Dynamic User Interface&#xff0c;简称UI&a…