1.MySQL概述
1.数据库基本概念:存储数据的仓库,数据是有组织的进行存储
2.数据库管理系统:操纵和管理数据库的大型软件
3.SQL:操作关系型数据库的编程语言,定义了一套操作型数据库统一标准
2.MySQL数据库
关系型数据库(RDBMS):
概念:建立在关系型模型基础上,由多张相互连接的二维表组成的数据库
好处:1.用表存储数据,方便维护
2.用SQL语言操作,标准统一,使用方便
基于表进行数据存储的数据库就是关系型数据库
3.分类
DDL:数据定义语言,用来定义数据库对象
DML:数据操作语言,用来对数据库表中的数据进行增删查
DQL:数据查询语言,用来潮汛数据库表中记录
DCL:数据控制语言,创建数据库用户,控制数据,库访问权限
4.DDL语言相关操作
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| biaoge |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> create database test;
Query OK, 1 row affected (0.01 sec)mysql> show databases;
+--------------------+
| Database |
+--------------------+
| biaoge |
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
6 rows in set (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| biaoge |
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
| test1 |
+--------------------+
7 rows in set (0.00 sec)
mysql> select database();
+------------+
| database() |
+------------+
| biaoge |
+------------+
1 row in set (0.00 sec)mysql> show tables;
+------------------+
| Tables_in_biaoge |
+------------------+
| testbiaoge |
+------------------+
1 row in set (0.00 sec)mysql> desc testbiaoge;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(50) | YES | | NULL | |
| ID | int | NO | PRI | NULL | |
| score | int | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
5.内部类
内部类
类里面:成员内部类 ,静态内部类(区别就是是否有static)
方法里面:匿名内部类,局部内部类(匿名内部类没有类名,局部内部类有)
class Outer{ //外部类public class Inner{ //内部类 (这里是成员内部类)int age = 1; }public void test(){Inner inner = new Inner();System.out.println(inner.age);}public static void main(String[] args){Outer outer = new Outer; //外部类对象创建Outer.Inner inner = outer.new Inner() //内部类对象的创建}
}
1.局部内部类
可以直接访问外部类的所有成员,包含私有的
不能添加访问修饰符,因为他的地位就是一个局部变量,但是可以用final修饰
作用域,仅仅在定义他的方法或者代码块里面
局部内部类访问外部类的成员–>直接访问
外部类访问局部内部类,在局部内部类的作用域内创建对象然后访问
局部内部类里的属性和外部类属性重名,怎么搞?solution:外部类名.this.属性名,你可能会有疑问,为什么不能直接this.属性名,因为局部内部类他始终是一个局部变量,创建它的对象只能在方法体内或者代码块内,调用的时候也是外部类的对象调用这个方法进而使用这个对象,所以用this.属性名的this指的是方法体中创建的局部内部类对象,但是你加上一个外部类名的话,就能表示这个this是外部类的对象
2.匿名内部类
2.1基于接口的匿名内部类
引入:一般情况下你要实现一个接口是写一个类实现接口,然后创建类的对象实例来使用。但是我现在的需求是只想使用一次,后面不再使用这个类,那我们就引入了匿名内部类
public class AnonymousInnerClass {public static void main(String[] args) {IA ia = new IA(){@Overridepublic void wang() {System.out.println("汪汪叫...."); }};}
}interface IA{void wang();
}
每日一题:
Watering the Fields
最小生成树模版题,但是需要进行路径压缩(状态压缩)不然会被卡TLE
#include<bits/stdc++.h>
using namespace std;
long long n;
long long c;
long long x[2005];
long long y[2005];
long long f[4000001];
long long cnt;
long long sum;
long long ans;
long long flag;
struct lu
{int a,b;long long w;
}q[4000005];int cha(int x)
{if(f[x] == x)return x;return f[x] = cha(f[x]);//路径压缩
}void bing(int r1,int r2)
{if(r1==r2)return ;f[r2]=r1;
}bool cmp(lu x,lu y)
{return x.w<y.w;
}int main()
{cin>>n>>c;for(int i=1;i<=n;i++)f[i]=i;for(int i=1;i<=n;i++){cin>>x[i]>>y[i];for(int j=1;j<i;j++){long long dis=((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));if(dis>=c){cnt++;q[cnt].a=i;q[cnt].b=j;q[cnt].w=dis;}}}if(cnt<n-1){printf("-1\n");return 0;}sort(q+1,q+1+cnt,cmp);for(int i=1;i<=cnt;i++){int x=cha(q[i].a);int y=cha(q[i].b);if(x!=y){bing(x,y);sum+=q[i].w;ans++;if(ans==n-1)break;}}if(ans==n-1)printf("%lld\n",sum);elseprintf("-1\n");return 0;
}