1 环境清理以及安装

1.1  mysql旧版本清除

准备5台虚拟机,分配如下

mysql管理结点:xuegod1.cn IP:192.168.10.31  (安装server、client)

mysql数据结点:xuegod2.cn IP:192.168.10.32  (安装server、client)

mysql数据结点:xuegod3.cn IP:192.168.10.33  (安装server、client)

msyqlSQL结点:xuegod4.cn IP:192.168.10.34  (安装server、client)

msyqlSQL结点:xuegod5.cn IP:192.168.10.35  (安装server、client)

首先使用如下命令来清理之前操作系统自带的mysql安装:

[root@xuegod1 ~]# yum remove -y mysql

然后使用如下命令:

[root@xuegod1 ~]# rpm -qa|grep mysql

mysql-libs-5.1.73-7.el6.x86_64

对于找到的2个剩余mysql包,请按照如下的命令格式予以删除:

[root@xuegod1 ~]# rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64

最后删掉下列文件:

01. rm -rf /var/lib/mysql/*

02. rm -rf /etc/my.cnf

03. rm -rf /etc/init.d/mysqld

1.2  mysql cluster版本安装及准备工作

1 将MySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar放到某个目录下(譬如/package) 下面,并且执行如下命令解压:

tar -xvfMySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar

得到如下文件清单:

MySQL-Cluster-client-gpl-7.3.4-1.el6.x86_64.rpm

MySQL-Cluster-devel-gpl-7.3.4-1.el6.x86_64.rpm

MySQL-Cluster-embedded-gpl-7.3.4-1.el6.x86_64.rpm

MySQL-Cluster-server-gpl-7.3.4-1.el6.x86_64.rpm

MySQL-Cluster-shared-compat-gpl-7.3.4-1.el6.x86_64.rpm

MySQL-Cluster-shared-gpl-7.3.4-1.el6.x86_64.rpm

MySQL-Cluster-test-gpl-7.3.4-1.el6.x86_64.rpm

也可以在PC端解压,只上传server和client的rpm包

通过scp命令讲server和client  rpm包传到每一台服务器

[root@xuegod1 ~]# scp MySQL-Cluster-server-gpl-7.4.11-1.el6.x86_64.rpm MySQL-Cluster-client-gpl-7.4.11-1.el6.x86_64.rpm 192.168.10.32:/root/

2  每一台主机都要安装mysql集群软件包(server\client)批量安装

开启所有服务器会话,在xshell右下角选择全部会话,然后在下面的框里面输入命令回车

tar -xvf  MySQL-Cluster-gpl-7.3.4-1.el6.x86_64.rpm-bundle.tar

批量安装mysql集群软件包(server\client)

yum -y install MySQL-Cluster-server-gpl-7.4.11-1.el6.x86_64.rpm

rpm -ivh MySQL-Cluster-client-gpl-7.4.11-1.el6.x86_64.rpm

会生成两个主要的命令文件:ndb_mgmd 和ndb_mgm

[root@xuegod63 ~]# whichndb_mgm

/usr/bin/ndb_mgm

[root@xuegod63 ~]# rpm -qf/usr/bin/ndb_mgm

MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64

[root@xuegod63 ~]# whichndb_mgmd

/usr/sbin/ndb_mgmd

[root@xuegod63 ~]# rpm -qf/usr/sbin/ndb_mgmd

MySQL-Cluster-server-gpl-7.3.7-1.el6.x86_64

还会生成用户:mysql

[root@xuegod63 ~]# id mysql

uid=495(mysql)gid=489(mysql) groups=489(mysql)

1.3 创建文件夹

分如下三个雷来创建对应的文件夹

管理节点创建:

[root@xuegod1 ~]# mkdir /var/lib/mysql-cluster  /var/run/mysqld/

数据节点存放数据:

[root@xuegod2 ~]# mkdir /var/run/mysqld

[root@xuegod3 ~]# mkdir /var/run/mysqld

SQL节点: 可不用文件授权  (进程PID目录)

[root@xuegod4 ~]# mkdir /var/run/mysqld

[root@xuegod5 ~]# mkdir /var/run/mysqld

1.4 授权

管理节点授权:

[root@xuegod1 ~]# chown mysql.mysql -R  /var/lib/mysql-cluster/ /var/run/mysqld/

数据节点授权:

[root@xuegod2 ~]# chown mysql.mysql -R /var/lib/mysql/ /var/run/mysqld/

[root@xuegod3 ~]# chown mysql.mysql -R /var/lib/mysql/ /var/run/mysqld/

SQL节点授权:

[root@xuegod4 ~]# chown mysql.mysql -R /var/lib/mysql/ /var/run/mysqld/

[root@xuegod5 ~]# chown mysql.mysql -R /var/lib/mysql/ /var/run/mysqld/

1.5  查看mysql root用户密码

注意:当安装完毕MySQL-Cluster-server-gpl包后,将出现如下

提示信息,提醒我们整个cluster安装后的初次超级账户密码存在/root/.mysql_secret这个文件当中。

[root@xuegod1 ~]# cat /root/.mysql_secret

# The random password set for the root user at Wed May 10 16:57:54 2017 (local time): 4plZLpSfizLjKSBm

2 搭建mysql集群

2.1  配置各主机

2.1.1 xuegod1创建管理节点配置文件

[root@xuegod1 ~]vim /var/lib/mysql-cluster/config.ini #写入以下内容

[ndbddefault]

NoOfReplicas=2 #数据写入数量。2表示两份

DataMemory=200M #配置数据存储可使用的内存

IndexMemory=100M #索引给100M

[ndb_mgmd]

id=1

datadir=/var/lib/mysql-cluster #管理结点的日志

HostName=192.168.10.31 #管理结点的IP地址。本机IP

######data node options: #存储结点

[ndbd]

HostName=192.168.10.32

DataDir=/var/lib/mysql #mysql数据存储路径

id=2

[ndbd]

HostName=192.168.10.33

DataDir=/var/lib/mysql #mysql数据存储路径

id=3

# SQLnode options: #关于SQL结点

[mysqld]

HostName=192.168.10.34

id=4

[mysqld]

HostName=192.168.10.35

id=5

在这个文件里,我们分别给五个节点分配了ID,这有利于更好的管理和区分各个节点。当然,要是不指定,MySQL也会动态分配一个

2.1.2 xuegod2数据节点

[root@xuegod2 /]# vim /etc/my.cnf         #xuegod3配置一样

[mysqld]

datadir=/var/lib/mysql                    #mysql数据存储路径

ndbcluster                              #启动ndb引擎

ndb-connectstring=192.168.10.31           # 管理节点IP地址

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[mysql_cluster]

ndb-connectstring=192.168.10.31           #管理节点IP地址

2.1.3 SQL节点配置

[root@xuegod4 ~]# vim /etc/my.cnf  #xuegod5配置一样

[mysqld]

ndbcluster                         #启动ndb引擎

ndb-connectstring=192.168.10.31    #管理节点IP地址

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

[mysql_cluster]

ndb-connectstring=192.168.10.31           #管理节点IP都中

说明:数据节点和SQL节点配置文件区别,就多一行,数据节点有: datadir=/var/lib/mysql              #mysql数据的存储路径,SQL节点上没有。

2.2 MySQL Cluster启动

初次启动命令以及用户密码更改调整:(严格按照次序启动)

先启动:管理节点服务-->数据节点服务-->SQL节点服务

关闭:关闭管理节点服务,关闭管理节点服务后,nbdb数据节点服务会自动关闭-->手动把sql节点服务管理。

执行初次启动前请先确认 将两台机器的防火墙关闭(service iptables stop 或者 设定 防火墙端口可通,两个端口即通讯端口1186、数据端口3306 )

2.2.1 xuegod1上启动管理节点命令

[root@xuegod1 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini # mysql cluster 后台运行进程

#尽量不要把管理结点、 数据结点、存储结点 配置在同一台机子上,否则一个挂了,就全挂了。

查看端口号:

[root@xuegod1 ~]# netstat -anput|grep 1186

tcp        0      0 0.0.0.0:1186                0.0.0.0:*                   LISTEN      2380/ndb_mgmd

tcp        0      0 127.0.0.1:1186              127.0.0.1:49343             ESTABLISHED 2380/ndb_mgmd

tcp        0      0 192.168.10.31:1186          192.168.10.33:48587         ESTABLISHED 2380/ndb_mgmd

tcp        0      0 192.168.10.31:1186          192.168.10.32:35434         ESTABLISHED 2380/ndb_mgmd

tcp        0      0 192.168.10.31:1186          192.168.10.33:48586         ESTABLISHED 2380/ndb_mgmd

tcp        0      0 192.168.10.31:1186          192.168.10.32:35435         ESTABLISHED 2380/ndb_mgmd

tcp        0      0 127.0.0.1:49343             127.0.0.1:1186              ESTABLISHED 2380/ndb_mgmd

2.2.2 xuegod2和xuegod3启动数据节点服务

[root@xuegod2 ~]# ndbd --initial

2017-05-10 09:34:21 [ndbd] INFO     -- Angel connected to '192.168.10.31:1186'

2017-05-10 09:34:21 [ndbd] INFO     -- Angel allocated nodeid: 2

[root@xuegod3 ~]# ndbd --initial

2017-05-10 05:54:38 [ndbd] INFO     -- Angel connected to '192.168.10.31:1186'

2017-05-10 05:54:38 [ndbd] INFO     -- Angel allocated nodeid: 3

2.2.3 xuegod4和xuegod5启动SQL结点服务

[root@xuegod4 ~]# mysqld_safe --defaults-file=/etc/my.cnf &

[root@xuegod5 ~]# mysqld_safe --defaults-file=/etc/my.cnf &

查看mysql集群状态:

[root@xuegod1 ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

---------------------

[ndbd(NDB)]     2 node(s)

id=2 @192.168.10.32  (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0, *)

id=3 @192.168.10.33  (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0)

[ndb_mgmd(MGM)]         1 node(s)

id=1 @192.168.10.31  (mysql-5.6.29 ndb-7.4.11)

[mysqld(API)]   2 node(s)

id=4 @192.168.10.34  (mysql-5.6.29 ndb-7.4.11)

id=5 @192.168.10.35  (mysql-5.6.29 ndb-7.4.11)

2.3 数据同步

因为默认密码比较坑人,我们就需要在此之前改一下两台机器mysql的密码。

2.3.1  xuegod5修改mysql root密码

[root@xuegod5 ~]# cat /root/.mysql_secret

# The random password set for the root user at Wed May 24 02:31:53 2017 (local time): Imzb3KPGbjHYxIAl

[root@xuegod5 ~]# mysql -uroot -pImzb3KPGbjHYxIAl

mysql> show database;

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database' at line 1

mysql> set password=password('123456');

Query OK, 0 rows affected (0.01 sec)

mysql> exit;

Bye

[root@xuegod5 ~]# mysql -uroot -p123456                #测试登录

mysql> grant all privileges on *.* to cluster@"%" identified by "123456";  #授权

Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

2.3.2  xuegod4修改mysql root密码

[root@xuegod4 ~]# cat /root/.mysql_secret

# The random password set for the root user at Wed May 24 03:08:52 2017 (local time): 4r4jBIWfcedp753c

[root@xuegod4 ~]# mysql -uroot -p4r4jBIWfcedp753c

mysql> set password=password('123456');

Query OK, 0 rows affected (0.00 sec)

mysql> exit

Bye

[root@xuegod4 ~]# mysql -uroot -p123456

mysql> grant all privileges on *.* to cluster@"%" identified by "123456";

Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec

3 测试

模拟外部机器的一个客户端插入数据

[root@xuegod1 ~]# mysql -ucluster -p123456 -h 192.168.10.34

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| ndbinfo            |

| performance_schema |

| test               |

+--------------------+

5 rows in set (0.00 sec)

mysql> create database db;

Query OK, 1 row affected (0.12 sec)

mysql> use db;

Database changed

mysql> create table test(id int) engine=ndb;

Query OK, 0 rows affected (0.34 sec)

mysql> insert into test values(1000);

Query OK, 1 row affected (0.02 sec)

mysql> select * from test;

+------+

| id   |

+------+

| 1000 |

+------+

1 row in set (0.01 sec)

登录另一台sql节点查看

[root@xuegod1 ~]# mysql -ucluster -p123456 -h 192.168.10.35

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| db                 |

| mysql              |

| ndbinfo            |

| performance_schema |

| test               |

+--------------------+

6 rows in set (0.02 sec)

mysql> use db;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select * from test;

+------+

| id   |

+------+

| 1000 |

+------+

1 row in set (0.01 sec)

停掉一个节点测试:

[root@xuegod5 ~]# mysqladmin -uroot -p123456 shutdown

ndb_mgm> show

Cluster Configuration

---------------------

[ndbd(NDB)]     2 node(s)

id=2 @192.168.10.32  (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0, *)

id=3 @192.168.10.33  (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0)

[ndb_mgmd(MGM)]         1 node(s)

id=1 @192.168.10.31  (mysql-5.6.29 ndb-7.4.11)

[mysqld(API)]   2 node(s)

id=4 @192.168.10.34  (mysql-5.6.29 ndb-7.4.11)

id=5 (not connected, accepting connect from 192.168.10.35)

再启动节点

[root@xuegod5 ~]# mysqld_safe --defaults-file=/etc/my.cnf &

ndb_mgm> show

Cluster Configuration

---------------------

[ndbd(NDB)]     2 node(s)

id=2 @192.168.10.32  (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0, *)

id=3 @192.168.10.33  (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0)

[ndb_mgmd(MGM)]         1 node(s)

id=1 @192.168.10.31  (mysql-5.6.29 ndb-7.4.11)

[mysqld(API)]   2 node(s)

id=4 @192.168.10.34  (mysql-5.6.29 ndb-7.4.11)

id=5 @192.168.10.35  (mysql-5.6.29 ndb-7.4.11)

4 关闭服务

关闭mysql集群顺序: 关闭管理节点服务-》 关闭管理节点时,数据结点服务自动关闭 –》 需要手动关闭SQL结点服务

关闭管理节点:

[root@xuegod1 ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> shutdown

Connected to Management Server at: localhost:1186

Node 3: Cluster shutdown initiated

Node 2: Cluster shutdown initiated

Node 3: Node shutdown completed.

Node 2: Node shutdown completed.

3 NDB Cluster node(s) have shutdown.

Disconnecting to allow management server to shutdown.

ndb_mgm> exit

[root@xuegod1 ~]# ps -aux|grep ndbd  #查看不到,说明数据节点已经被关

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root       2476  0.0  0.0 103316   836 pts/1    S+   22:06   0:00 grep ndbd

手动关闭SQL节点服务

[root@xuegod4 ~]# mysqladmin -uroot -p123456 shutdown

[root@xuegod5 ~]# mysqladmin -uroot -p123456 shutdown

或方法二kill掉

[root@xuegod4 ~]# ps -axu|grep mysql

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root       4142  0.0  0.1 106244  1392 pts/0    S    08:22   0:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/my.cnf

mysql      4253  2.8 44.6 951048 448728 pts/0   Sl   08:22   0:00 /usr/sbin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid

root       4293  0.0  0.0 103316   836 pts/2    S+   08:23   0:00 grep mysql

[root@xuegod4 ~]# kill  -9 4142

[root@xuegod4 ~]# kill  -9 4253

[root@xuegod5 ~]# ps -aux|grep mysql

Warning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.8/FAQ

root       4306  0.0  0.1 106244  1392 pts/2    S    07:46   0:00 /bin/sh /usr/bin/mysqld_safe --defaults-file=/etc/my.cnf

mysql      4417  0.5 44.8 1279896 450652 pts/2  Sl   07:46   0:00 /usr/sbin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid

root       4446  0.0  0.0 103316   836 pts/1    S+   07:47   0:00 grep mysql

[root@xuegod5 ~]# kill -9 4306

[root@xuegod5 ~]# kill -9 4417

5 总结

再次启动,mysql集群启动

[root@xuegod1 ~]# ndb_mgmd -f /var/lib/mysql-cluster/config.ini

[root@xuegod2 ~]# ndbd

[root@xuegod3 ~]# ndbd

[root@xuegod4 ~]# mysqld_safe --defaults-file=/etc/my.cnf &

[root@xuegod5~]# mysqld_safe --defaults-file=/etc/my.cnf &

查看mysql集群状态:

[root@xuegod1 ~]# ndb_mgm

-- NDB Cluster -- Management Client --

ndb_mgm> show

Connected to Management Server at: localhost:1186

Cluster Configuration

---------------------

[ndbd(NDB)]     2 node(s)

id=2 @192.168.10.32  (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0, *)

id=3 @192.168.10.33  (mysql-5.6.29 ndb-7.4.11, Nodegroup: 0)

[ndb_mgmd(MGM)]         1 node(s)

id=1 @192.168.10.31  (mysql-5.6.29 ndb-7.4.11)

[mysqld(API)]   2 node(s)

id=4 @192.168.10.34  (mysql-5.6.29 ndb-7.4.11)

id=5 @192.168.10.35  (mysql-5.6.29 ndb-7.4.11)

ndb_mgm>

2-18-搭建mysql集群实现高可用的更多相关文章

  1. MySQL集群架构:MHA+MySQL-PROXY+LVS实现MySQL集群架构高可用/高性能-技术流ken

    MHA简介 MHA可以自动化实现主服务器故障转移,这样就可以快速将从服务器晋级为主服务器(通常在10-30s),而不影响复制的一致性,不需要花钱买更多的新服务器,不会有性能损耗,容易安装,不必更改现有 ...

  2. 超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数

    超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数 介绍galera cluster原理的文章已经有一大堆了,百度几篇看一看就能有相关了解,这里就不赘述了.本文主 ...

  3. hadoop 集群HA高可用搭建以及问题解决方案

    hadoop 集群HA高可用搭建 目录大纲 1. hadoop HA原理 2. hadoop HA特点 3. Zookeeper 配置 4. 安装Hadoop集群 5. Hadoop HA配置 搭建环 ...

  4. 浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)

    1.熟悉几个组件 1.1.apache     —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 ...

  5. 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  6. 15套java架构师、集群、高可用、高可扩 展、高性能、高并发、性能优化Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

  7. Nginx+Zuul集群实现高可用网关

    代码参考:https://github.com/HCJ-shadow/Zuul-Gateway-Cluster-Nginx Zuul的路由转发功能 前期准备 搭建Eureka服务注册中心 服务提供者m ...

  8. Quartz学习笔记:集群部署&高可用

    Quartz学习笔记:集群部署&高可用 集群部署 一个Quartz集群中的每个节点是一个独立的Quartz应用,它又管理着其他的节点.这就意味着你必须对每个节点分别启动或停止.Quartz集群 ...

  9. Dubbo入门到精通学习笔记(十五):Redis集群的安装(Redis3+CentOS)、Redis集群的高可用测试(含Jedis客户端的使用)、Redis集群的扩展测试

    文章目录 Redis集群的安装(Redis3+CentOS) 参考文档 Redis 集群介绍.特性.规范等(可看提供的参考文档+视频解说) Redis 集群的安装(Redis3.0.3 + CentO ...

随机推荐

  1. USB 3.0规范中译本 第5章 机械结构

    本文为CoryXie原创译文,转载及有任何问题请联系cory.xie#gmail.com. 本章定义USB 3.0连接器和线缆组件的form, fit 和 function.包括以下方面: • 连接器 ...

  2. Hook技术简介(有用SDK写的例子)

    钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的.当消息到达后,在目标窗口处理函数之前处理它.钩子机 ...

  3. php函数实现显示几秒前,几分钟前,几天前等方法(网络上什么都有)

    php函数实现显示几秒前,几分钟前,几天前等方法(网络上什么都有) 一.总结 网络上面什么函数都有 二.php函数实现显示几秒前,几分钟前,几天前等方法 现在很多网站的时间显示都很人性化,不再是单纯的 ...

  4. 【b602】金明的预算方案

    Time Limit: 1 second Memory Limit: 50 MB [问题描述] 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈妈 ...

  5. innodb_data_file_path参数误修改解决方法

    如果innodb_data_file_path参数被修改乱了,不知道原来值的大小,这样启动是会报错的.知道原来大小方法: 方法一:操作系统下ls -l看到原来大小,直接用ls -l显示的大小,复制即可 ...

  6. Scrapy系列教程(1)------命令行工具

    默认的Scrapy项目结构 在開始对命令行工具以及子命令的探索前,让我们首先了解一下Scrapy的项目的文件夹结构. 尽管能够被改动,但全部的Scrapy项目默认有类似于下边的文件结构: scrapy ...

  7. [Angular] Create a simple *ngFor

    In this post, we are going to create our own structure directive *ngFor. What it should looks like i ...

  8. [NativeScript] Create new application and run emulator

    Install: npm i -g nativescript Create: tns create <app_name> --ng Run: tns emulate ios List al ...

  9. WIN32汇编语言中位图的使用

    说到位图.我们事实上非常早就接触过.从最早接触计算机,我们应该就知道有图片这个东西,然后再进一步说,图片在电脑上有好几种格式比方jpg. gif .png.pcx.bmp等等,当中bmp格式的图片文件 ...

  10. 选课 - 树型DP(孩子兄弟建树法)

    题目描述 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了 N(N<300)门的选修课程,每个学生可选课程的数量 M 是给定的.学生选修了这M门课并考核通 ...