MySql服务基础
[root@localhost ~]# yum remove -y mysql mysql-server
yum -y install ncurses-devel
2.Mysql5.5需要cmake编译安装,所以先安装cmake包
[root@localhost ~]# tar zxf cmake-.tar.gz -C /usr/src/ [root@localhost ~]# cd /usr/src/cmake-/ [root@localhost cmake-]# ./configure [root@localhost cmake-]#gmake && gmake install
3源码编译及安装
[root@localhost ~]# groupadd mysql [root@localhost ~]# useradd -M -s /sbin/nologin mysql -g mysql //创建运行用户
4.解包
[root@localhost ~]# tar zxf mysql-.tar.gz -C /usr/src/ [root@localhost ~]# cd /usr/src/mysql-/
5.配置
[root@localhost mysql-]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc
6.编译并安装
[root@localhost mysql-]# make && make install
- -DCMAKE_INSTALL_PREFIX:指定将mysql数据库程序安装到某目录下,如目录/usr/local/mysql
- -DSYSCONFDIR:指定初始化参数文件目录
- -DDEFAULT_CHARSET:指定默认使用的字符集编码,如utf8。
- -DDEFAULT_COLLATION:指定默认使用的字符集校对规则,utf8_genneral_ci是适用于UTF-8字符集的通用规则
-DWITH_EXTRA_CHARSETS:指定额外支持的其他字符集编码
[root@www ~]# cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf //复制配置文件模板 cp: overwrite `/etc/my.cnf'? y
[root@www ~]# chown -R mysql.mysql /usr/local/mysql/ //修改属主属组
[root@www ~]# /usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ //以mysql用户初始化数据库 [root@www ~]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile //设置环境变量 [root@www ~]# . /etc/profile //立即生效 [root@www ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld //添加启动脚本 [root@www ~]# chmod +x /etc/init.d/mysqld //添加执行权限 [root@www ~]# chkconfig --add mysqld //添加到服务 [root@www ~]# /etc/init.d/mysqld start Starting MySQL.... [ OK ] [root@www ~]# netstat -anpt |grep mysql tcp /mysqld
注:mysql服务器默认通过TCP 3306端口提供服务,通过编辑/etc/my.cnf配置文件中【mysqld】配置段的 "port = 3306"行,可以更改监听端口
访问mysql数据库
mysql数据库系统也是一个经典的C/S(客户端/服务器)架构的应用,要访问mysql数据库使用专门的客户端软件。
1、登录mysql服务器
[root@localhost ~]# mysql -u root //-u 选项用于指定认证用户 [root@localhost ~]# mysqladmin -u root password " //更改mysql密码
mysql> show databases; //查看当前服务器中有哪些库 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ rows in set (0.00 sec) mysql>
mysql> use mysql; //进入mysql库 Database changed mysql> show tables; //查看此库里有哪些表 +---------------------------+ | Tables_in_mysql | +---------------------------+ | columns_priv | | db | | event | | func | | general_log | | help_category | | help_keyword | | help_relation | | help_topic | | host | | ndb_binlog_index | | plugin | | proc | | procs_priv | | proxies_priv | | servers | | slow_log | | tables_priv | | time_zone | | time_zone_leap_second | | time_zone_name | | time_zone_transition | | time_zone_transition_type | | user | +---------------------------+ rows in set (0.00 sec) mysql>
mysql> use mysql; //进入库 Database changed mysql> describe user; //查看表结构 +------------------------+-----------------------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------------------+-----------------------------------+------+-----+---------+-------+ | Host | ) | NO | PRI | | | | User | ) | NO | PRI | | | | Password | ) | NO | | | | | Select_priv | enum('N','Y') | NO | | N | | | Insert_priv | enum('N','Y') | NO | | N | | | Update_priv | enum('N','Y') | NO | | N | | | Delete_priv | enum('N','Y') | NO | | N | | | Create_priv | enum('N','Y') | NO | | N | | | Drop_priv | enum('N','Y') | NO | | N | | | Reload_priv | enum('N','Y') | NO | | N | | | Shutdown_priv | enum('N','Y') | NO | | N | | | Process_priv | enum('N','Y') | NO | | N | | | File_priv | enum('N','Y') | NO | | N | | | Grant_priv | enum('N','Y') | NO | | N | | | References_priv | enum('N','Y') | NO | | N | | | Index_priv | enum('N','Y') | NO | | N | | | Alter_priv | enum('N','Y') | NO | | N | | | Show_db_priv | enum('N','Y') | NO | | N | | | Super_priv | enum('N','Y') | NO | | N | | | Create_tmp_table_priv | enum('N','Y') | NO | | N | | | Lock_tables_priv | enum('N','Y') | NO | | N | | | Execute_priv | enum('N','Y') | NO | | N | | | Repl_slave_priv | enum('N','Y') | NO | | N | | | Repl_client_priv | enum('N','Y') | NO | | N | | | Create_view_priv | enum('N','Y') | NO | | N | | | Show_view_priv | enum('N','Y') | NO | | N | | | Create_routine_priv | enum('N','Y') | NO | | N | | | Alter_routine_priv | enum('N','Y') | NO | | N | | | Create_user_priv | enum('N','Y') | NO | | N | | | Event_priv | enum('N','Y') | NO | | N | | | Trigger_priv | enum('N','Y') | NO | | N | | | Create_tablespace_priv | enum('N','Y') | NO | | N | | | ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | | | ssl_cipher | blob | NO | | NULL | | | x509_issuer | blob | NO | | NULL | | | x509_subject | blob | NO | | NULL | | | max_questions | ) unsigned | NO | | | | | max_updates | ) unsigned | NO | | | | | max_connections | ) unsigned | NO | | | | | max_user_connections | ) unsigned | NO | | | | | plugin | ) | YES | | | | | authentication_string | text | YES | | NULL | | +------------------------+-----------------------------------+------+-----+---------+-------+ rows in set (0.00 sec)
创建及删除库和表
mysql> create database bai; //创建新的库bai Query OK, row affected (0.01 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | bai | | mysql | | performance_schema | | test | +--------------------+ rows in set (0.00 sec)
注:刚创建的数据库是空的,其中不包含任何表,在/usr/local/mysql/data 目录下会自动生成一个与新建的库名相同的空文件夹。
创建新的表
create table语句:用于在当前库中的创建新的表,需指定数据表名称作为参数。并定义该表格所使用的各字段。基本格式如下
create table 表名 (字段1名称 类型,字段2名称 类型,.....,primary key (主键名))
mysql> create table user (user_name ) not ) default '', primary key (user_name)); Query OK, rows affected (0.06 sec)
删除一个数据表
drop table 语句:用于删除库中的表, 指定 库名,表名 作为参数;若只指定表名参数,则需先通过执行 use 语句切换到目标库。列如,执行以下操作可以删除 bai库中的users表。
mysql> drop table user; //删除user表 Query OK, rows affected (0.01 sec) mysql> show tables; Empty set (0.00 sec) mysql>
删除一个数据库
drop database语句:用于删除指定的库,需要指定库名作为参数。列如,执行以下操作可以删除名为bai的库
mysql> show databases; //查看原有的库 +--------------------+ | Database | +--------------------+ | information_schema | | bai | | mysql | | performance_schema | | test | +--------------------+ rows in set (0.00 sec) mysql> drop database bai; //删除bai库 Query OK, rows affected (0.01 sec) mysql> show databases; //验证已删除 +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | test | +--------------------+ rows in set (0.00 sec) mysql>
管理表中的数据记录
1.插入数据记录
insert into 语句:用于向表中插入新的数据记录。语句格式如下所示。
insert into 表名(字段1,字段2,....) values(字段1的值,字段2的值,..........)
执行以下操作将会想bai库中的user表插入一条记录:用户名为"zhangsan",对应的密码为"123456",注意valuse部分的值应与面前指定的各字段逐一对应,
mysql> insert into user (user_name,user_passwd) values ('); Query OK, row affected (0.00 sec)
2.select语句:用于从指定的表中查找符合条件的数据记录。mysql数据库支持标准的sql查询语句,语句格式如下所示。
select 字段名1,字段名2,..... from 表名 where 条件表达式
mysql> select * from user; +-----------+-------------+ | user_name | user_passwd | +-----------+-------------+ | lisi | | | zhangsan | | +-----------+-------------+ rows in set (0.00 sec)
注:通配符*:表示所有字段
mysql> use bai;
Database changed
mysql> select user_name,user_passwd from user where user_name= 'zhangsan'; //查看zhangsan的用户信息
+-----------+-------------+
| user_name | user_passwd |
+-----------+-------------+
| zhangsan | 123456 |
+-----------+-------------+
1 row in set (0.01 sec)
mysql>
3.修改数据记录
update语句:用于修改,更新表中的数据记录。语句格式如下所示。
update 表名 set 字段名 1=字段值1 [,字段值2=字段值2] where 条件表达式
执行以下操作可以修改user表中用户名为 zhangsan 的记录,将密码子串设为空值。验证记录内容可以发现zhangsan用户的密码串值已变为空白。
mysql> update user set user_passwd=PASSWORD('') where user_name= 'zhangsan'; Query OK, row affected (0.00 sec) Rows matched: Changed: Warnings: mysql> select * from user; +-----------+-------------+ | user_name | user_passwd | +-----------+-------------+ | lisi | | | zhangsan | | +-----------+-------------+ rows in set (0.00 sec) mysql>
在mysql数据库服务器中,用于访问数据库的各种用户(如root)信息都保存在mysql库的user表中,熟练的管理员可以直接修改其中的数据记录,列如,修改数据库管理员登录密码,如下
mysql> update mysql.user ') where user= 'root'; Query OK, rows affected (0.00 sec) Rows matched: Changed: Warnings: mysql> flush privileges; //刷新用户授权信息 Query OK, rows affected (0.01 sec)
4.删除数据记录
delete 语句:用于删除表中指定的数据记录,语句格式如下所示。
delete from 表名 where 条件表达式
执行以下操作可以删除user表中的用户名为lisi的数据记录,验证记录内容可以发现lisi用户的数据记录已经消失
mysql> delete from user where user_name='lisi'; Query OK, row affected (0.00 sec) mysql> describe user; +-------------+----------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------+------+-----+---------+-------+ | user_name | ) | NO | PRI | NULL | | | user_passwd | ) | YES | | | | +-------------+----------+------+-----+---------+-------+ rows in set (0.00 sec) mysql> select * from user; +-----------+-------------+ | user_name | user_passwd | +-----------+-------------+ | zhangsan | | +-----------+-------------+ row in set (0.00 sec)
三、维护mysql数据库
mysql数据库系统的维护工作主要包含用户权限的设置,数据库的备份与恢复。
1.数据库的用户授权
mysql数据库的root用户账号拥有对所有库表的全部权限,频繁使用root账号会为数据库服务器带来一定的安全风险。生产环境中,通常会建立一些低权限的用户,只负责一部分库,表的管理和维护操作,甚至可以对查询,修改,删除记录等各种操作做进一步的细化限制,从而将数据库的风险降至最低。
1.授予权限
grant语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,grant语句将会创建新的用户,否则;grant语句用于修改用户信息。语句格式如下所示:
grant 权限列表 on 库名.表名 to 用户名@来源地址 [ identified by '密码' ]
执行以下操作可以添加一个名为'baishuchao'的数据库用户,并允许其从本机的访问,对bai库中所有表具有查询权限,验证密码为'123456',使用grant语句授权的用户记录,会保存到mysql库的user,db,host,tables_priv等相关表中,无须刷新即可生效。
mysql> grant '; Query OK, rows affected (0.00 sec)
[root@localhost ~]# mysql -u baishuchao -p123456 //验证 baishuchao用户登录 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id Server version: -log Source distribution Copyright (c) , , Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | bai | | test | +--------------------+ rows in set (0.00 sec) mysql>
[root@localhost ~]# mysql -u root -p123456 //验证root用户登录
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 35
Server version: 5.5.22-log Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| bai |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql>
注:baishuchao用户权限小
列:在企业服务器的应用中,数据库与网站服务器有时候是相互独立的。因此在mysql服务器中。应根据实际情况创建新的用户权限,允许授权用户从网站服务器访问数据库,通常的做法是,创建一个或多个库,并授予所有权限,限制访问的来源ip地址。例如,执行以下操作可以新建web库,并授权ip为192.168.1.1的主机连接,用户名为dbuser,密码为123456,允许在web库中执行所有权限。
mysql> create database web; //创建web库 Query OK, row affected (0.00 sec) mysql> grant all on web.* to '; //创建用户并授予权限 Query OK, rows affected (0.00 sec) mysql>
2.查看权限
show grants语句:专门用来查看数据库用户的授权信息,通过for子句可指定查看的用户对象(必须与授权时使用的对象名称一致),语句格式如下:
show grants for 用户名@来源地址
执行以下操作可以查看用户dbuser 从主机192.168.1.1 访问数据库时的权限信息。其中usage权限对应的授权记录中包含了用户的连接密码字串
mysql> show grants for 'dbuser'@'192.168.1.1'; +-----------------------------------------------------------------------------------------------------------------+ | Grants for dbuser@192.168.1.1 | +-----------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'dbuser'@'192.168.1.1' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' | | GRANT ALL PRIVILEGES ON `web`.* TO 'dbuser'@'192.168.1.1' | +-----------------------------------------------------------------------------------------------------------------+ rows in set (0.00 sec) mysql>
3.撤销权限
revoke语句:用于撤销指定用户的数据库权限,撤销权限后的用户仍然可以连接到mysql服务器,但将被禁止执行对应的数据库操作。语句格式如下所示。
revoke 权限列表 on 数据库名.表名 from 用户名@来源地址
执行以下操作可以撤销用户baishuchao从本机访问数据库bai的所有权限。
mysql> revoke all on bai.* from 'baishuchao'@'localhost'; Query OK, rows affected (0.00 sec)
验证一: mysql> show grants for 'baishuchao'@'localhost'; +-------------------------------------------------------------------------------------------------------------------+ | Grants for baishuchao@localhost | +-------------------------------------------------------------------------------------------------------------------+ | GRANT USAGE ON *.* TO 'baishuchao'@'localhost' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' | | GRANT SELECT ON `user`.* TO 'baishuchao'@'localhost' | +-------------------------------------------------------------------------------------------------------------------+ rows in set (0.00 sec)
验证二:
[root@localhost ~]# mysql -u baishuchao -p123456
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 36
Server version: 5.5.22-log Source distribution
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| test |
+--------------------+
2 rows in set (0.00 sec)
mysql>
二、数据库的备份与恢复
及时备份数据库是信息安全管理的重要工作内容之一。mysql数据库的备份可以采用多种方式。列如,直接打包数据库文件夹/usr/local/mysql/data,或者使用专用的导出工具。下面以mysql自带的倾倒工具mysqldump为例,分别介绍数据库的备份与恢复的操作方法。
1.备份数据库
通过mysqldump命令可以将指定的库,表或全部的库导出为sql脚本,便于该命令在不同版本的mysql服务器上使用。列如,当需要升级mysql服务器时,可以先用mysqldump命令将原有库信息导出,然后直接在升级后的mysql服务器中导入即可。
1)执行导出操作
使用mysqldump命令导出数据时,默认会直接在终端显示,若要保存到文件,还需要结合shell的> 重定向输出操作,命令格式如下所示:
格式一:导出指定库中的部分表
mysqldump [选项] 库名 [表名1] [表名2] ... > /备份路径/备份文件名
格式二:导出一个或多个完整的库(包括其中所有的表)
mysqldump [选项] --databases 库名1 [库名2] ... > /备份路径/备份文件名
格式三:备份mysql服务器中所有的库
mysqldump [选项] --all-database > /备份路径/备份文件名
其中,常用的选项包括"-u","-p",分别用于指定数据库用户名,密码。列如,以下操作分别使用格式1,格式2,将mysql库中的user表导出为mysql-user.sql文件,将整个bai库导出为bai.sql文件,所有操作均为root用户的身份进行验证。
[root@localhost ~]# mysqldump -u root -p mysql user > mysql-user.sql Enter password: [root@localhost ~]# mysqldump -u root -p --databases bai > bai.sql
若需要备份整个mysql服务器中的所有库,应使用格式3.当导出的数据量较大时,可以添加‘--opt’选项优化执行速度。列如,执行以下操作将创建备份文件 all-data.sql,其中包括mysql服务器中的所有库
[root@localhost ~]# mysqldump -u root -p --opt --all-databases > all-data.sql Enter password: [root@localhost ~]#
2)查看备份文件内容
通过mysqldump工具导出的sql脚本是文本文件,其中"/*...*/"部分或以"--"开头的行表示注释信息,使用grep,less,cat等文本工具可以查看脚本内容。列如:执行以下操作可以过滤出bai.sql脚本中的数据库操作语句。
[root@localhost ~]# grep -v "^--" bai.sql | grep -v "^/" | grep -v "^$" CREATE DATABASE /*!32312 IF NOT EXISTS*/ `bai` /*!40100 DEFAULT CHARACTER SET utf8 */; USE `bai`; DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `user_name` ) NOT NULL, `user_passwd` ) DEFAULT '', PRIMARY KEY (`user_name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; LOCK TABLES `user` WRITE; INSERT INTO `user` VALUES ('zhangsan',''); UNLOCK TABLES; [root@localhost ~]#
3)恢复数据库
使用mysqldump命令导出的sql备份脚本,在需要恢复时可以通过mysql命令对其进行导入操作。命令格式如下所示。
mysql [选项] [库名] [表名] < /备份路径/备份文件名
当备份文件中只包含表的备份,而不包括创建库的语句时,则执行导入操作时必须指定库名,且目标库必须存在。例如,执行以下操作可以从备份文件mysql-user.sql中将表导入test库。
[root@localhost ~]# mysql -u root -p test < mysql-user.sql Enter password: [root@localhost ~]# mysql -u root -p123456 //验证导入结果 Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id Server version: -log Source distribution Copyright (c) , , Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> use test; Database changed mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | user | +----------------+ row in set (0.00 sec) mysql>
MySql服务基础的更多相关文章
- [php入门] 3、WAMP中的集成MySQL相关基础操作
前言:本文以小白视角了解WAMP集成开发环境中的MYSQL,涉及的面广而浅,算是导读性质. 1.启动运行熟悉WAMP中的MySQL 先有库.再有表.数据最终以记录的形式插入表中.其中对数据进行操作使用 ...
- 不停止MySQL服务增加从库的两种方式
不停止MySQL服务增加从库的两种方式 转载自:http://lizhenliang.blog.51cto.com/7876557/1669829 现在生产环境MySQL数据库是一主一从,由于业务量访 ...
- 【MySQL】MySQL无基础学习和入门之一:数据库基础概述和实验环境搭建
数据库基础概述 大部分互联网公司都选择MySQL作为业务数据存储数据库,除了MySQL目前还有很多公司使用Oracle(甲骨文).SQLserver(微软).MongoDB等. 从使用成本来区分可以 ...
- MySQL 面试基础
相关:http://blog.csdn.net/u013252072/article/details/52912385 http://blog.csdn.net/zhangliang ...
- 不停止MySQL服务增加从库的两种方式【转载】
现在生产环境MySQL数据库是一主一从,由于业务量访问不断增大,故再增加一台从库.前提是不能影响线上业务使用,也就是说不能重启MySQL服务,为了避免出现其他情况,选择在网站访问量低峰期时间段操作. ...
- MySQL数据库基础
MySQL数据库基础 本文的所有操作是基于CMD环境,MySQL通过在命令行中输入SQL语句对数据库进行操作.配置问题可参考<打通MySQL的操作权限>中的内容,该文算是针对前期的环境配置 ...
- Mysql常用基础操作(备忘录)
常常忘记mysql的一些命令行操作,甚至于说,比较复杂的sql格式记不住或忘记了,也可能根本不会考虑去记,因此,做一下汇总,当下次出现恍惚时不至于去百度挨个找,有时就是记不起来,但是只要给点药引子,立 ...
- MySQL学习基础知识1
什么是数据库? 数据库就是存储数据的仓库. 存储方式: 变量 无法永久存储 文件处理,可以永久存储,弊端:文件只能在自己的计算机读写,无法被分享(局域网除外) 数据库分类: 1.关系型数据库 提供某种 ...
- MySQL数据库基础学习
MySQL基础知识 ----------- MySQL数据库简介 内存:一断电数据就没有了---------数据库:可以实现数据的持久化存储,有完整的管理系统管理,方便查询--------- DB:数 ...
随机推荐
- C# Listview 第一列不能居中
/********************************************************************** * C# Listview 第一列不能居中 * 说明: ...
- libvirtError: no connection driver available for qemu:///system 解决办法
今天部署了一套K版的OpenStack环境后,启动nova-compute后,日志里狂报如下错误(因为其内部有定时任务需要去连libvirtd进程): 2015-08-14 10:01:00.061 ...
- jq中的三元运算结构
三元运算的结构为:Boolean?值1:值2.它的第一个参数必须为布尔值.
- 整理的一些免费的Android项目实战系列视频教程
http://blog.itpub.net/29737144/viewspace-1212539/
- jquery保存用户名和密码到cookie里面
http://blog.sina.com.cn/s/blog_633ad0ae0101guij.html
- MATLAB符号运算
1.符号运算 使用MATLAB可以进行多项式乘除运算,也可以进行因式分解. 例1. 多项式乘除运算(x+3)3 >> syms x;>> expand((x+3)^3) ans ...
- UVa 1584 Circular Sequence --- 水题
UVa 1584 题目大意:给定一个含有n个字母的环状字符串,可从任意位置开始按顺时针读取n个字母,输出其中字典序最小的结果 解题思路:先利用模运算实现一个判定给定一个环状的串以及两个首字母位置,比较 ...
- 《Java程序设计》第二次实验报告
20145220 <Java程序设计>第二次实验报告 课程:Java程序设计 指导教师:娄嘉鹏 实验日期:2016.04.12 实验名称:Java面向对象程序设计 实验内容 初步掌握单元测 ...
- HDU-5806 NanoApe Loves Sequence Ⅱ(two-pointer或二分)
题目大意:给一个整数序列,统计<k,m>子序列的数目.<k,m>序列是满足第k大的数字不比m小的连续子序列. 题目分析:维护一个不小于m的数的个数的后缀和数组,可以枚举序列起点 ...
- poj2762 强连通+拓扑序
题意:有 n 个房间,不同房间之间有单向通道,问是否任意两个房间 A .B 都可以从 A 到 B 或从 B 到 A(有一条有就可以). 在这题中,如果一些点是在同一个强连通分量中,那么这些点肯定能够相 ...