数据库------mysql

安装:

linux----centos7:

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。

安装mysql

1.下载并安装mysql官方的yum Repository

[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

使用yum进行安装:

[root@localhost ~]# yum -y install mysql57-community-release-el7-10.noarch.rpm

2.开始安装myql服务器:

[root@localhost ~]# yum -y install mysql-community-server

这一步会花费不少的时间,请耐心等待,安装完之后就会覆盖掉之前的mariadb

mysql数据库的设置:

3.启动mysql:

[root@localhost ~]# systemctl start  mysqld.service

查看mysql运行状态:

[root@localhost ~]# systemctl status mysqld.service

4.找出mysql的root用户密码,通过在日志文件中查找:

[root@localhost ~]# grep "password" /var/log/mysqld.log

5.进入数据库:

[root@localhost ~]# mysql -uroot -p

输入上面查询到的初始密码,之后不能做任何事情,只有在修改了默认密码之后才能够操作数据库:

6.修改密码:

常见的修改密码的方法有:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new password';
mysql> set password for 'root@localhost'=password('Newpassword4!')

但是都会遇到一个问题:

这时候我们必须要用其他的方法:

mysql> set password=password('123456')

此时还是会遇到一个新的问题:

新密码设置过于简单,这个原因是mysql有密码设置的规范,具体是与validate_password_policy的值有关

所以我们先设置一个符合规则的密码,包含大小写数字和符号的密码:

这样我们才能够进行查看密码规则和其他的操作:

或者使用如下的命令修改密码:

[root@localhost ~]#mysqladmin -u root password "new_password";

MySQL完整的初始密码规则可以通过如下命令查看:

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password_check_user_name | OFF |
| validate_password_dictionary_file | |
| validate_password_length | 8 |
| validate_password_mixed_case_count | 1 |
| validate_password_number_count | 1 |
| validate_password_policy | MEDIUM |
| validate_password_special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.01 sec)

validate_password_policy:密码策略,默认为MEDIUM策略

validate_password_dictionary_file:密码策略文件,策略为STRONG才需要

validate_password_length:密码最少长度

validate_password_mixed_case_count:大小写字符长度,

至少1个  validate_password_number_count :数字至少1个

validate_password_special_char_count:特殊字符至少1个  上述参数是默认策略MEDIUM的密码检查规则。

我们修改一下里面的参数:

mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=4;

这样我们就能够设置简单的密码:1234,或者root

7.配置默认编码:uft8

首先我们看一下mysql默认的编码:

mysql> show variables like '%character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:

[mysqld]
character_set_server=utf8
init_connect='SET NAMES uft8'

重新启动mysql服务,查看看数据库编码,如下所示:

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

8.设置mysql开机启动:

[root@localhost ~]# systemctl enable mysqld
[root@localhost ~]# systemctl daemon-reload

默认配置文件路径:

配置文件:/etc/my.cnf

日志文件:/var/log//var/log/mysqld.log

服务启动脚本:/usr/lib/systemd/system/mysqld.service

socket文件:/var/run/mysqld/mysqld.pid

windows下安装mysql:

windows上安装mysql相对来说要简单的多,只要下载mysql对应的安装包,

MySQL Installer 下载 
mysql-installer-community-5.7.19.0.msi:https://dev.mysql.com/downloads/file/?id=471661

然后运行exe文件进行安装,需要注意的如下:

一般我们选择Custom;

next之后我们会看到下面这个界面:

有的时候他会下载失败,install fail,:The action ‘Install’ for product ‘MySQL Server 5.7.19’ failed.

这是因为我们电脑里面没有安装Visual Studio2013运行库,

32位的Visual C++ Redistributable Packages for Visual Studio 2013!!!注意是32位的。即使你的电脑是64位的

安装网址: https://www.microsoft.com/zh-cn/download/details.aspx?id=40784

之后就设置登录密码,顺利安装成功。

安装成功,进行验证,开始菜单中打开MySQL命令行工具

mysql数据类型

分为:数值,时间和字符(串)类型

数值类型:

类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1 字节 (-128,127) (0,255) 小整数值
SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
FLOAT 4 字节 (-3.402 823 466 E+38,1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度
浮点数值
DOUBLE 8 字节 (1.797 693 134 862 315 7 E+308,2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度
浮点数值
DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

时间类型:

类型 大小
(字节)
范围 格式 用途
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
YEAR 1 1901/2155 YYYY 年份值
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 1970-01-01 00:00:00/2037 年某时 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

字符类型:

类型 大小 用途
CHAR 0-255字节 定长字符串
VARCHAR 0-65535 字节 变长字符串
TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
TINYTEXT 0-255字节 短文本字符串
BLOB 0-65 535字节 二进制形式的长文本数据
TEXT 0-65 535字节 长文本数据
MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
LONGTEXT 0-4 294 967 295字节 极大文本数据

常用操作:(命令结束之后一定要加分号)

查看数据库:show databases;

进入mysql数据库:use mysql;

查看这个库中有什么表:show tables;

查看表的结构:desc 表名;or show columns from 数据表

查看表中数据:select * from 表名 (\G);加上\G,就变成了竖着的显示

创建一个新用户:

  use mysql;    mysql库里面有mysql自带的用户表,它存了账户的所有信息

    我们查询mysql中的user表的User字段,就可以看到你现在的数据库中有多少个用户

    

  grant all on test.* to 'xiaoming'@'localhost' identified by 'xiaoming123'

    all:分配给用户的权限,有Select,Insert,Update,Delete,Create,Drop,Re load,Shutdown,Process,File,Grant,References,Index,Alter

    test.*:为数据库test的所有表分配的用户。所有就是*.*

    ‘xiaoming’@'localhost' indentified by 'xiaoming123':用户名为xiaoming,密码xiaoming123

查看创建用户的权限:show grants for 用户名

创建数据库:create database 数据库名 charset utf8

查看创建的数据库的编码:show create database 数据库名

删除数据库:drop database 数据库名

创建数据表:

create table student(
id int auto_increment,
name char(32) not null,
age int not null,
register_date date not null,
primary key(id)
);

如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。

AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。

PRIMARY KEY关键字用于定义列为主键。 同时如果使用多列来定义主键,列间以逗号分隔。

插入数据:

insert into student(name,age,register_date) values ("xiaoming",22,"1996-09-20");

查询数据:

SELECT column_name,column_name FROM table_name [WHERE Clause][LIMIT N] [OFFSET M ]

查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件

使用星号(*)代替其他字段,SELECT语句会返回表的所有字段数据

使用 WHERE 语句来包含任何条件

LIMIT 属性设定返回的记录数

OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0,

OFFSET不能单独使用

offset必须在limit后面添加

where子句:

模糊查询:like: binary '%Li'  只匹配大写

更新数据(Update):

UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]

删除数据(delete):

DELETE FROM table_name [WHERE Clause]

mysql排序:

SELECT field1, field2,...fieldN table_name1, table_name2...  ORDER BY field1, [field2...] [ASC [DESC]]
使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。

mysql的group by:

SELECT column_name, function(column_name)  FROM table_name
WHERE column_name operator value
GROUP BY column_name;

统计总数:在最后加一个with rollup

mysql alter命令:我们需要修改数据表名或者修改数据表字段时,就需要使用到MySQL ALTER命令。

删除,添加或修改表字段

alter table student drop register_date; #从student表删除register_date字段
alter table student add telephere int(11) not null; #添加phone字段
alter table student modify sex enum("M","F") not null; #修改sex

修改字段类型和名称:(modify和change)

modify修改字段的类型,如把char(1)变成char(10):

alter table student modify sex int(10)  

change语句:在使用change之后紧跟着的是要修改的字段名,然后制定新字段名及类型:

alter table student change sex gender char(32) default 'M';

修改表名:

alter table student rename to student1;

关于外键“:用于关联两个表:  

我们创建第二个表:

create table study_record(
id int not null auto_increment,
day int not null,
status char(32) not null default 'YES',
stu_id int(11) not null,
primary key(`id`),
key `fk_student_key` (`stu_id`),
constraint `fk_student_key` foreign key (`stu_id`) references `student` (`id`));

首先我们看一下student表中的数据:

现在我们为study_record插入数据

但是当我们输入的stu_id不在student表中的id范围时:

Mysql 连接(left join, right join, inner join ,full join)

JOIN 按照功能大致分为如下三类:

  • inner join(内连接,或等值连接):获取两个表中字段匹配关系的记录。
  • left join(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
  • right join(右连接): 与 right join 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。

首先我们创建两个数据表:

mysql> select * from A;
+---+
| a |
+---+
| 1 |
| 2 |
| 3 |
| 4 |
+---+
mysql> select * from B;
+---+
| b |
+---+
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
+---+

inner join:内连接,就是查询出两个表的共同元素(交集)  

select * from A inner join B on A.a = B.b;
select A.*,B.* from A,B where A.a = B.b; +---+---+
| a | b |
+---+---+
| 3 | 3 |
| 4 | 4 |
+---+---+

left join:就是查询出两个表的不同元素(差集)  

mysql> select * from A left join B on A.a = B.b;
+---+------+
| a | b |
+---+------+
| 3 | 3 |
| 4 | 4 |
| 1 | NULL |
| 2 | NULL |
+---+------+

先把A中的数据取出来,然后看B中有没有相同的数据,如果有就对应取出,没有的数据就用NULL

right join:

mysql> select * from A right join B on A.a = B.b;
+------+---+
| a | b |
+------+---+
| 3 | 3 |
| 4 | 4 |
| NULL | 5 |
| NULL | 6 |
| NULL | 7 |
| NULL | 8 |
+------+---+

效果和select * from B left join A on A.a=B.b一样的效果

full join:

(mysql不直接支持),即select * from A full join B on A.a = B.b会报错

但是:

mysql> select * from A left join B on A.a = B.b union select * from A right join B on A.a = B.b;
+------+------+
| a | b |
+------+------+
| 3 | 3 |
| 4 | 4 |
| 1 | NULL |
| 2 | NULL |
| NULL | 5 |
| NULL | 6 |
| NULL | 7 |
| NULL | 8 |
+------+------+
8 rows in set (0.00 sec)

通过这种方法间接的实现了full join

事务

MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样就需要用到多条sql语句,但是如果在执行sql语句中突然死机断电,还没有把所有语句执行完,那就会有问题。这样,这些数据库操作语句就构成一个事务!

在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。同时事务用来管理insert,update,delete语句

事务的4个条件(ACID):

  Atomicity(原子性):一组事务,要么成功;要么撤回。

  Consistency(稳定性):有非法数据(外键约束之类),事务撤回。

  Isolation(隔离性):事务独立运行。一个事务处理后的结果,影响了其他事务,那么其他事务会撤回。事务的100%隔离,需要牺牲速度。

  Durability(可靠性):软、硬件崩溃后,InnoDB数据表驱动会利用日志文件重构修改。可靠性和高速度不可兼得, innodb_flush_log_at_trx_commit选项 决定什么时候把事务保存到日志里。

mysql> select * from student;
+----+-----------+-----+---------------+--------+
| id | name | age | register_date | gender |
+----+-----------+-----+---------------+--------+
| 1 | xiaoming | 22 | 1996-09-20 | NULL |
| 3 | xiaoliang | 21 | 1995-09-25 | NULL |
| 5 | linhuahua | 27 | 1993-06-07 | NULL |
| 9 | xiaoming | 26 | 1993-06-02 | NULL |
| 11 | haha | 26 | 2011-01-01 | M |
+----+-----------+-----+---------------+--------+
5 rows in set (0.00 sec) mysql> begin; #开始一个事务 mysql> insert into student (name,age,register_date,gender) values("wangsen",25,"2016-09-22","M"); mysql> insert into student (name,age,register_date,gender) values("wangqing",26,"2016-09-12","F"); mysql> select * from student;
+----+-----------+-----+---------------+--------+
| id | name | age | register_date | gender |
+----+-----------+-----+---------------+--------+
| 1 | xiaoming | 22 | 1996-09-20 | NULL |
| 3 | xiaoliang | 21 | 1995-09-25 | NULL |
| 5 | linhuahua | 27 | 1993-06-07 | NULL |
| 9 | xiaoming | 26 | 1993-06-02 | NULL |
| 11 | haha | 26 | 2011-01-01 | M |
| 12 | wangsen | 25 | 2016-09-22 | M |
| 13 | wangqing | 26 | 2016-09-12 | F |
+----+-----------+-----+---------------+--------+
7 rows in set (0.00 sec) mysql>rollback; 回滚 , 这样数据是不会写入的 mysql> select * from student;
+----+-----------+-----+---------------+--------+
| id | name | age | register_date | gender |
+----+-----------+-----+---------------+--------+
| 1 | xiaoming | 22 | 1996-09-20 | NULL |
| 3 | xiaoliang | 21 | 1995-09-25 | NULL |
| 5 | linhuahua | 27 | 1993-06-07 | NULL |
| 9 | xiaoming | 26 | 1993-06-02 | NULL |
| 11 | haha | 26 | 2011-01-01 | M |
+----+-----------+-----+---------------+--------+
5 rows in set (0.00 sec)

如果一切操作正常的话,用mysql> commit;进行提交就可以了,这个时候你所插入的数据就能够正常的插入到数据库中了

索引

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。

数据表可以有很多的字段,但是主键只有一个,索引可以有多个,比如:个人信息表,每个人可以包含多个字段:姓名,年龄,性别,生日等等,一个个人信息有50列,我们最关注的也就是姓名和身份证号,我们可以对这两个字段做两个索引。索引就是通过哈希的形式把一列的数据转成数字,然后再排序,通过二分查找查找数据。这样检索速度就提高了。

索引分单列索引和组合索引。

  单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。

  组合索引,即一个索引包含多个列。

创建索引时,你需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录。

索引的缺点:

  虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。建立索引会占用磁盘空间的索引文件

查看一个表的索引:

show index from student;

+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| student | 0 | PRIMARY | 1 | id | A | 7 | NULL | NULL | | BTREE | | |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+

一个表中的主键自动就是索引,主键就是一种索引,默认的

创建索引:

CREATE INDEX indexName ON table(username(length));  
mysql> create index index_name on student(name(32));

mysql> show index from student;
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| student | 0 | PRIMARY | 1 | id | A | 6 | NULL | NULL | | BTREE | | |
| student | 1 | index_name | 1 | name | A | 4 | NULL | NULL | | BTREE | | |
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
2 rows in set (0.00 sec)

在创建表的时候就添加索引:

create table tablename(
id int not null,
username varchar(16) not null,
index [indexName] (username(length))
);

删除索引:

drop index [indexName] on tablename

唯一索引:

索引列的值必须唯一,但是允许有空值。如果是组合索引,则列值的组合必须唯一。

创建,删除索引等操作就是在前面的普通索引之前加一个unique:如创建唯一索引|:create unique index indexName on tablename(username(length))

以上就是mysql的一些基本操作,谢谢

python---mysql 学习笔记的更多相关文章

  1. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  2. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  3. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  4. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  5. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

  6. Python Click 学习笔记(转)

    原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发 ...

  7. 初识mysql学习笔记

    使用VMVirtualBox导入Ubuntu后,可以通过sudo apt-get install mysql-server命令下载mysql. 在学习过程中,我遇到了连接不上Xshell的问题.最终在 ...

  8. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  9. Python Flask学习笔记之模板

    Python Flask学习笔记之模板 Jinja2模板引擎 默认情况下,Flask在程序文件夹中的templates子文件夹中寻找模板.Flask提供的render_template函数把Jinja ...

  10. Python Flask学习笔记之Hello World

    Python Flask学习笔记之Hello World 安装virtualenv,配置Flask开发环境 virtualenv 虚拟环境是Python解释器的一个私有副本,在这个环境中可以安装私有包 ...

随机推荐

  1. 51nod-1526-贪心+Trie

    题目链接在这 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 收藏 关注 班里有n个同学.老师为他们选了n个笔名.现在要把这些笔 ...

  2. grunt,gulp,webpack前端打包工具的特性

    1.http://www.cnblogs.com/lovesong/p/6413546.html (gulp与webpack的区别) 2.http://blog.csdn.net/qq_3231263 ...

  3. 【Java】Serializable 接口

     本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/p/4356840.html 参考资料: http://xiebh.iteye.com/b ...

  4. Qt 中使用智能指针

    教研室的项目,就是用Qt做个图形界面能收发数据就可以了,但是创建数据管理类的时候需要各种new, delete,很小心了但是内存使用量在不断开关程序之后函数会长,由于用的是gcc 4.7.*  所以好 ...

  5. canvas - 柱子效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  6. C++纯虚函数实现

    纯虚函数就是一个在基类中的虚函数,差别只是在一般的虚函数声明的后面加了"=0",虚函数允许函数通过与函数体之间的联系在运行时才建立,也就是在运行时才决定如何动作,称为运行时的多态性 ...

  7. [leetcode]_根据二叉树的先序遍历(后序遍历) + 中序遍历 重建二叉树

    题目1:Construct Binary Tree from Preorder and Inorder Traversal 给定一棵二叉树的先序遍历和中序遍历,求重建二叉树. 思路: 1.先序遍历的第 ...

  8. Arcgis Desktop连接GIS Servers报错“Proxy server got bad address from remote server ...”

    今天打开Arcgis Desktop时突然发现连接GIS Servers报错“Proxy server got bad address from remote server ...” 网上查找到解决方 ...

  9. ubuntn 配置webpy nginx

    webpy环境搭建 在开始webpy搭建之前,有必要熟悉一下什么是fastcgi,因为搭建环境时都是使用这个模式去运行webpy程序的,具体的fastcgi描述可以参考各种百科:fastcgi协议官网 ...

  10. 重温CLR(二)生成、部署以及程序集

    将类型生成到模块中 class Program { static void Main(string[] args) { Console.WriteLine("Hi"); } } 该 ...