centos 虚拟机拷贝
查看centos版本:
命令:$ cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core) 
在host文件中设置了节点:centos1 10.3.13.213  node1, centos2 10.3.13.197  node2, centos3 10.3.13.194  node3
 
linux的yum,rpm操作
 
安装yum源 yum install http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm 这个0.1-6已经是目前最新的yum源了
yum list | grep percona  查看当前安装的percona软件
 
检查是否安装有MySQL Server: 在安装percona之前需要将mysql以及mariadb删除
rpm -qa | grep mysql
rpm -qa | grep  mariadb
删除方法:
rpm -e mysql   #普通删除模式
rpm -e --nodeps mysql    #强行删除模式,如果使用上面命令删除时,提示有依赖的其它文件,则用该命令可以对其强行删除。
yum remove mariadb-libs-5.5.41-2.el7_0.x86_64
要注意的是mariadb也是不能存在的,有的话就要删除调,删除的时候有依赖关系,直接yum卸载
 
percona 提示密钥不匹配 https://www.bbsmax.com/A/MyJxLBjVJn/
 
清除yum缓存
yum clean all
yum --enablerepo=base clean metadata
yum --enablerepo=updates cleanmetadata
yum makecache fast
yum相关的配置文件:
1.etc/yum.conf配置文件
2.etc/yum.repos.d/目录下的众多.repo文件
yum install Percona-Server-server-57 --nogpgcheck   这样可以不用检查公钥
 
关闭防火墙
开放系统的3306端口   如果设置了防火墙的话,我们搭建的系统把防火墙已经关了
   firewall-cmd  --zone=public --add-port=3306/tcp --permanent
   firewall-cmd --reload
 
mysql操作:
启动 service mysql start 查看运行状态service mysql status 关闭service mysql stop 重启service mysql restart
 
修改root账户的默认密码
cat /var/log/mysqld.log | grep "A temporary password"  获取原始密码(系统生成的)
mysql_secure_installation   修改原始密码
 
删除percona 
rpm -qa|grep -i percona  找到包
yum remove percona-release-0.1-4.noarch 删除安装及其依赖
rm -rf /var/lib/mysql/ /etc/my.cnf 
注:这里将删除所有的数据文件(databases, tables, logs, etc.),
可能你环境中的datafile的位置并不是默认的/var/lib/mysql,而是其他的目录,卸载的时候根据实际情况删除文件
 
搭建percona cluster 集群环境
1 设置 vim /etc/selinux/config    SELINUX=disabled 参考:https://blog.csdn.net/chenhualeguan/article/details/54889571
 
在线安装
安装Persona仓库
yum install Percona-XtraDB-Cluster-57 --nogpgcheck 
在线安装太慢选择离线下载 
 
离线安装:
tar -vxf Percona-XtraDB-Cluster-5.7.25-rel28-31.35.1.Linux.x86_64.ssl101.tar.gz   
在官网下载,这里选择101 针对的是centos7   这个免安装的不知道怎么启动换了一个
 
tar -xvf Percona-XtraDB-Cluster-5.7.23-31.31-r438-el7-x86_64-bundle.tar
yum install *.rpm
 
发现安装有问题需要依赖包:
yum install perl-IO-Socket-SSL.noarch
yum install  perl-DBD-MySQL.x86_64
yum install  perl-Time-HiRes
yum install  openssl
yum install  openssl-devel
yum install  socat
 
安装   yum源用最新
yum install percona-xtrabackup-24.x86_64
将这些需要的依赖的软件包安装后,再运行yum install *.rpm 这样终于将集群服务安装好了。
目前所有安装的内容:
$ rpm -qa|grep -i percona                                                
Percona-XtraDB-Cluster-devel-57-5.7.23-31.31.2.el7.x86_64
percona-xtrabackup-24-2.4.13-1.el7.x86_64
Percona-XtraDB-Cluster-shared-57-5.7.23-31.31.2.el7.x86_64
Percona-XtraDB-Cluster-57-debuginfo-5.7.23-31.31.2.el7.x86_64
Percona-XtraDB-Cluster-57-5.7.23-31.31.2.el7.x86_64
percona-release-0.1-6.noarch
Percona-XtraDB-Cluster-shared-compat-57-5.7.23-31.31.2.el7.x86_64
Percona-XtraDB-Cluster-test-57-5.7.23-31.31.2.el7.x86_64
Percona-XtraDB-Cluster-garbd-57-5.7.23-31.31.2.el7.x86_64
Percona-XtraDB-Cluster-server-57-5.7.23-31.31.2.el7.x86_64
Percona-XtraDB-Cluster-client-57-5.7.23-31.31.2.el7.x86_64
Percona-XtraDB-Cluster-full-57-5.7.23-31.31.2.el7.x86_64
 
配置pxc集群
vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
user=mysql
server-id=1 # PXC集群中MySQL实例的唯一ID,不能重复,必须是数字
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster  #PXC集群的名称
wsrep_node_name=node1  #当前节点的名称
wsrep_node_address=10.3.13.213  #当前节点的IP
wsrep_sst_method=xtrabackup-v2  #同步方法(mysqldump、rsync、xtrabackup
wsrep_sst_auth= sstuser:Abc_123456  #同步使用的帐户
pxc_strict_mode=ENFORCING  #同步严厉模式
binlog_format=ROW  #基于ROW复制(安全可靠)
default_storage_engine=InnoDB  #默认引擎
innodb_autoinc_lock_mode=2  #主键自增长不锁表
 
主节点操作:
在启动前现需要运行下:停止MySQL服务 service mysql stop  否则下面的运行不能启动
主节点的启动命令与从节点是有区别的。
systemctl start mysql@bootstrap.service
systemctl restart mysql@bootstrap.service
 
进入mysql进行操作:
#查看 root 密码
cat /var/log/mysqld.log | grep "A temporary password"
#修改 root 密码,建议先创建快照,以便恢复.
mysql_secure_installation
设置的新密码:Yl*1990929
 
进入数据库
mysql -uroot -p
在数据库库中查看当前状态:mysql> show status like 'wsrep%';
在结果中注意
| wsrep_incoming_addresses         | 10.3.13.213:3306                     | 目前集群中只有一个ip
| wsrep_cluster_size               | 1                                    | 目前node2和node3还没有加进来
 
 
登录数据库
mysql -uroot -p
创建、授权、同步账号
mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'Abc_123456';
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
mysql> FLUSH PRIVILEGES;
 
从节点启动:
systemctl start mysqld
这里在启动从节点的时候一直报错,通过查找/var/lib/mysql下的错误日志和查看主节点的innobackup.backup.log
发现是同步账户sstuser的权限问题,按照下面这篇文章的步骤可以解决。
 
 
 
问题:
   mysql 转移到percona 运行sql语句报错
   新节点加入到集群中,配置文件怎么整
   旧节点重新加入
 
pxc配置文件my.cnf
wsrep_provider:  指定Galera库的路径
wsrep_cluster_name:  Galera集群的名称
wsrep_cluster_address:Galera集群中各节点地址。地址使用组通信协议gcomm://(group communication)
wsrep_node_name:本节点在Galera集群中的名称
wsrep_node_address:本节点在Galera集群中的通信地址
wsrep_sst_method:state_snapshot_transfer(SST)使用的传输方法,可用方法有mysqldump、rsync和xtrabackup,前两者在传输时都需要对Donor加全局只读锁(FLUSH TABLES WITH READ LOCK),xtrabackup则不需要(它使用percona自己提供的backup lock)。强烈建议采用xtrabackup
wsrep_sst_auth:在SST传输时需要用到的认证凭据,格式为:"用户:密码"
pxc_strict_mode:是否限制PXC启用正在试用阶段的功能,ENFORCING是默认值,表示不启用
binlog_format:二进制日志的格式。Galera只支持row格式的二进制日志
default_storage_engine:指定默认存储引擎。Galera的复制功能只支持InnoDB
innodb_autoinc_lock_mode:只能设置为2,设置为0或1时会无法正确处理死锁问题
 
基于Galera协议的高可用方案:PXC
Galera是Codership提供的多主数据同步复制机制,可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可用及数据一致性。
 
pxc优点:
1,服务高可用 多个节点的数据是相同的,只要最后一个节点可用,就还能运行。
1.同步复制,事务要么在所有节点提交或不提交。
2.多主复制,可以在任意节点进行写操作。
3.在从服务器上并行应用事件,真正意义上的并行复制。
4.节点自动配置。
5.数据一致性,不再是异步复制。
 
pxc缺点:
1,对InnoDB的事物控制是支持的,其他的不支持,5.7版本
   mysql> show engines; 可以查看事物的支持。
加入新节点,开销大。需要复制完整的数据。
不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上。
有多少个节点就有多少重复的数据。
 
 
PXC会使用大概是4个端口号
3306:数据库对外服务的端口号
4444:请求SST SST: 指数据一个镜象传输 xtrabackup , rsync ,mysqldump 在新节点加入时起作用
4567: 组成员之间进行沟通的一个端口号
4568: 传输IST用的。相对于SST来说的一个增量  ,节点下线,重启加入时起作用
名词:
WS:write set 写数据集
IST: Incremental State Transfer 增量同步
SST:State Snapshot Transfer 全量同步
 
 
节点接收sql 请求后,对于ddl 操作,在commit之前,由wsrep API 调用galera 库进行集群内广播,
所有其他节点验证成功后事务在集群所有节点进行提交,反之roll back。pxc 保证整个集群所有数据的强一致性,满足CAP理论中满足:Consistency 和  Availability
 
 
对搭建的三个节点的数据库进行测试:
mysql -uroot -p
在节点node3上  mysql> create database yl123_db;
在节点node2上  mysql> show databases; 会发现数据已经同步过去了
 
数据库设置权限:
mysql> set global validate_password_policy=0  设置安全级别,0 是最低的
mysql> set global validate_password_length=4; 设置最小的密码长度
mysql> set PASSWORD=PASSWORD('123456');  重新设置密码
赋予远程访问的权限:
mysql> grant all privileges  on *.* to root@'%' identified by "123456";  设置远程访问的权限
mysql>  flush privileges;
 
 
jdbc:mysql:loadbalance 连接mysql集群
 
ProxySQL是一个可以实现MySQL读写分离的轻量级工具
 
 
首先测试了下单个连接没有问题
jdbc.driver=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.password=123456
 
mysql分布式的jdbc连接
另外两个节点也需要设置远程访问的权限,然后把密码改掉试试
 
目前的操作是将三个数据库节点的root 密码都改为123456, 且都允许远程可读可写权限
spring中jdbc的配置:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.password=123456
能连接上数据库,且数据时同步的。
 
测试:
关闭node2 发现数据库集群还是可以正常使用
重启node2后,刚才更改的数据已经同步到node2中去了
 
 
新节点加入到集群中:
    新节点加入集群时,需要从当前集群中选择一个Donor节点来同步数据,也就是所谓的state_snapshot_tranfer(SST)过程。
SST同步数据的方式由选项wsrep_sst_method决定,一般选择的是xtrabackup。
    wsrep_sst_method:state_snapshot_transfer(SST)使用的传输方法,可用方法有mysqldump、rsync和xtrabackup,前两者在传输时都需要对Donor加全局只读锁(FLUSH TABLES WITH READ LOCK),xtrabackup则不需要(它使用percona自己提供的backup lock)。强烈建议采用xtrabackup
 
    必须注意,新节点加入Galera时,会删除新节点上所有已有数据,再通过xtrabackup(假设使用的是该方式)从Donor处完整备份
所有数据进行恢复。所以,如果数据量很大,新节点加入过程会很慢。而且,在一个新节点成为Synced状态之前,不要同时加入其它新
节点,否则很容易将集群压垮。如果是这种情况,可以考虑使用wsrep_sst_method=rsync来做增量同步,既然是增量同步,最好保证
新节点上已经有一部分数据基础,否则和全量同步没什么区别,且这样会对Donor节点加上全局read only锁
 
    如果是集群是新搭建的,或者说直接使用SST的方式加入新节点,那么新节点的配置就直接按照前面的主节点配置来就可以了,只是把wsrep_node_address改成
对应节点的IP即可,而对于已经运行了一段事件的集群,新加入节点使用SST传送全量数据的方式同步的代价比较高,所以下面讨论一个IST方式加入新节点同步数据的方式
 
旧节点加入到集群中:
    如果旧节点加入Galera集群,说明这个节点在之前已经在Galera集群中呆过,有一部分数据基础,缺少的只是它离开集群时的数据。
这时加入集群时,会采用IST(incremental snapshot transfer)传输机制,即使用增量传输。但注意,这部分增量传输的数据源是Donor
上缓存在GCache文件中的,这个文件有大小限制,如果缺失的数据范围超过已缓存的内容,则自动转为SST传输。如果旧节点上的数据和Donor
上的数据不匹配(例如这个节点离组后人为修改了一点数据),则自动转为SST传输。关于GCache以及Galera是如何判断数据状态的,本文不展开
描述,可参见Understanding GCache in Galera
 
    节点在退出集群后, 从新加入的时候, 如果这个故障节点的ip 在自己的配置文件 wsrep_cluster_address 的选项中的第一个ip .
那么这个节点是永远都无法再加入这个集群了.参考:http://blog.itpub.net/133735/viewspace-2140548/
 
PXC集群安装部署指南
当前的虚拟机版本:
   CentOS Linux release 7.5.1804 (Core)
注意:下面的操作需要在每一个节点上进行。
1、开放系统3306,4444,4567,4568端口
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    firewall-cmd --zone=public --add-port=4444/tcp --permanent
    firewall-cmd --zone=public --add-port=4567/tcp --permanent
    firewall-cmd --zone=public --add-port=4568/tcp --permanent
    firewall-cmd --reload
 
2、设置 vim /etc/selinux/config    
    SELINUX=disabled  
    需要reboot重启后生效
 
3、检查是否安装有MySQL Server: 在安装percona之前需要将mysql以及mariadb删除
    rpm -qa | grep mysql
    rpm -qa | grep  mariadb 查找是否有mysql或mariadb存在
    删除方法:
    rpm -e mysql   #普通删除模式
    rpm -e --nodeps mysql    #强行删除模式
    yum remove mariadb-libs-5.5.41-2.el7_0.x86_64
    要注意的是mariadb也是不能存在的,有的话就要删除,删除的时候有依赖关系,直接yum卸载
 
4、安装
    目前安装的版本是5.7
    在线安装
    <1>安装yum源
    <2>安装依赖包以及备份所需的包
       yum install  perl-IO-Socket-SSL.noarch
       yum install  perl-DBD-MySQL.x86_64
       yum install  perl-Time-HiRes
       yum install  openssl
       yum install  openssl-devel
       yum install  socat
       yum install percona-xtrabackup-24.x86_64 (备份用到的软件)
       yum install Percona-XtraDB-Cluster-57
    离线安装
       下载安装 perl-IO-Socket-SSL.noarch、 perl-DBD-MySQL.x86_64、 perl-Time-HiRes
               openssl、 openssl-devel、socat、percona-xtrabackup-24.x86_64 rpm安装包
       在官网下载http://www.percona.com/
       tar -xvf Percona-XtraDB-Cluster-5.7.23-31.31-r438-el7-x86_64-bundle.tar
       yum install *.rpm
 
5、配置文件 my.cnf
   vim /etc/my.cnf
    [mysqld]
    datadir=/var/lib/mysql
    user=mysql
    wsrep_provider=/usr/lib64/galera3/libgalera_smm.so   指定Galera库的路径
    wsrep_cluster_name=pxc-cluster  #PXC集群的名称
    wsrep_cluster_address=gcomm://10.3.13.213,10.3.13.197,10.3.13.194 
    集群中各节点地址。地址使用组通信协议gcomm://(group communication)
    wsrep_node_name=node1  #当前节点的名称
    wsrep_node_address=10.3.13.213  #当前节点的IP(这里也可以填写host文件中ip对应的名称)
    wsrep_sst_method=xtrabackup-v2  #同步方法(mysqldump、rsync、xtrabackup)
    wsrep_sst_auth= sstuser:Abc_123456  #同步使用的帐户,格式为:"用户:密码"
    pxc_strict_mode=ENFORCING  #同步严厉模式 
    binlog_format=ROW  #基于ROW复制(安全可靠)
    default_storage_engine=InnoDB  #默认引擎
    innodb_autoinc_lock_mode=2  #主键自增长不锁表 
  注:
  wsrep_cluster_address配置节点的ip,注意在配置当前节点的值时,不要将当前节点的ip放在第一个
 
6、启动主节点
   systemctl start mysql@bootstrap.service
注:第一个节点的启动命令与后面节点的启动命令是不一样的
 
7、在主节点进入mysql进行操作(更改密码,授予权限)
    #查看 root 密码
    cat /var/log/mysqld.log | grep "A temporary password"
    #修改 root 密码,建议先创建快照,以便恢复.
    mysql_secure_installation
    进入数据库
    mysql -uroot -p
    设置root密码访问权限
    mysql> set global validate_password_policy=0  设置安全级别,0 是最低的
    mysql> set global validate_password_length=4; 设置最小的密码长度
    mysql> set PASSWORD=PASSWORD('123456');  重新设置密码
    赋予远程访问的权限:
    mysql> grant all privileges  on *.* to root@'%' identified by "123456";  设置远程访问的权限
    mysql>  flush privileges;
    创建、授权、同步账号
    mysql> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'Abc_123456';
    mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';
    mysql> FLUSH PRIVILEGES;
8、从节点启动
    systemctl start mysqld
9、查看数据库状态
   查看本机的mysql状态
   systemctl status mysqld
   在数据库库中查看当前状态:mysql> show status like 'wsrep%';
   | wsrep_incoming_addresses         | 10.3.13.213:3306   当前在集群中的节点ip                    
   | wsrep_cluster_size               | 1                  集群中节点个数
 
基于Galera协议的高可用方案:PXC
优点:
1、服务高可用 多个节点的数据是相同的,只要最后一个节点可用,就还能运行。
   无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作,不受影响。
2、同步复制,事务要么在所有节点提交或不提交。各节点间无延迟且节点宕机不会导致数据丢失。
3、多主复制,可以在任意节点进行写操作。
4、在从服务器上并行应用事件,真正意义上的并行复制。
5、节点自动配置。无需手工备份当前数据库并拷贝至新节点。
6、数据一致性,不再是异步复制。
7、PXC最大的优势:强一致性、无同步延迟
8、应用程序的兼容性:无需更改应用程序
缺点:
1、对InnoDB的事物控制是支持的,其他的不支持,5.7版本
2、加入新节点,开销大。需要复制完整的数据。新加入节点采用SST时代价高;
3、不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上。
4、有多少个节点就有多少重复的数据。
5、写入效率取决于节点中最弱的一台,因为PXC集群采用的是强一致性原则,一个更改操作在所有节点都成功才算执行成功。
   集群吞吐量/性能取决于短板;
6、所有表都要有主键;
7、锁冲突、死锁问题相对更多
8、不支持LOCK TABLE等显式锁操作;
9、不支持XA;
                 
    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
     
 
 

PXC部署,配置,操作原理的更多相关文章

  1. Jenkins部署配置简介

    前段时间研究了一下自动化测试,因而接触到了Jenkins,今天有时间进行一下Jenkins部署配置相关知识的总结分享 前言:由于本次只是实验性研究,采用Windows环境,因此Jenkins可以通过下 ...

  2. TOMCAT的安装部署配置(配图解)

    TOMCAT的安装部署配置 前提已经成功搭建配置JDK 下载好压缩包后,直接解压至某一目录下,目录中不能包含中文 双击安装文件,出现如下界面 点击[NEXT],出现如下界面 点击[I AGREE],出 ...

  3. PL/SQL安装部署配置(配图解)

    PL/SQL安装部署配置 下载好安装包之后,双击exe程序 双击安装程序,出现如下页面 点击[NEXT],出现如下界面 选择[I Accept...],点击[NEXT],出现如下界面 选择安装路径,点 ...

  4. JDK的安装及部署配置(配图解)

    JDK的安装及部署配置 双击安装文件,出现如下界面 点击[下一步]出现如下界面,更改安装路径(建议安装至D盘), 点击[下一步],出现如下界面,修改文件夹名. 点击[确定],耐心等待 直至出现如下界面 ...

  5. linux后台server开发环境的部署配置和验证(nginx+apache+php-fpm+FASTCGI(C/C++))

    linux后台server开发环境部署配置 引言 背景 随着互联网业务的不断增多.开发环境变得越来越复杂,为了便于统一server端的开发部署环境,特制定本配置文档. 使用软件 CentOS 6.3( ...

  6. 7、Web应用程序中的安全向量 -- 使用Retail部署配置

    该方法不需要胡乱地编辑各个配置设置,而是利用了ASP.NET特性:Retail部署配置. 部署配置是服务器的machine.config文件(在%windir%\Microsoft.NET\Frame ...

  7. HAproxy部署配置

    HAproxy部署配置 拓扑图 说明: haproxy服务器IP:172.16.253.200/16 (外网).192.168.29.140/24(内网) 博客服务器组IP:192.168.29.13 ...

  8. Logstash+Kibana部署配置

    Logstash是一个接收,处理,转发日志的工具.支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型. 典型的使用场景下(ELK): 用Elasticsearc ...

  9. centos6.3部署配置LVS主从

    LVS是Linux Virtual Server的简写,即Linux虚拟服务器,是一个虚拟的服务器集群系统.这个项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.它的官方网址 ...

  10. saltstack部署配置

    共计使用三台虚拟机进行部署实验,系统环境:centos7.3 在master上进行部署配置: 配置主机名 [root@localhost ~]# hostname salt-master [root@ ...

随机推荐

  1. python生成四位随机数

    有些时候需要发送短信给用户生成四位随机数字,这里在python中我们可以根据python自带的标准库random和string来实现. random下有三个可以随机取数的函数,分别是choice,ch ...

  2. Golang 简单 http 代理转发

    程序基本实现了对http的完整转发,目前暂不支持https windows需要在设置中的网络>代理设置为手动,并开启代理服务器,填写ip和端口 // httpForward package ma ...

  3. Voyager下的Settings方法

    设置网站标题,logo,描述: 自定义setting字段,添加group为文章,key为title的字段: 添加成功: 前端页面写法: <img src="{{ Voyager::im ...

  4. centos7重启后/etc/resolv.conf 被还原解决办法

    每次重启服务器后,/etc/resolv.conf文件就被自动还原了,最后发现是被Network Manager修改了. 查看Network Manager服务状态 systemctl status ...

  5. pre-commit钩子,代码质量检查

    目前基本使用三款js代码质量检查工具: jslint, jshint, eslint.许多IDE里面也有对应的检查插件,在每次ctrl + s 保存文件的时候,检查当前文件是否符合规范,保证代码质量. ...

  6. 阿里大鱼短信发送 FOR DT

    //增加了参数$action 来标志发送的是什么短信 注册短信 验证码短信 提示短信等 function send_sms($mobile, $message, $word = 0, $time = ...

  7. 【HIHOCODER 1055】 刷油漆(树上背包)

    描述 小Ho有着一棵灰常好玩的树玩具!这棵树玩具是由N个小球和N-1根木棍拼凑而成,这N个小球都被小Ho标上了不同的数字,并且这些数字都是处于1..N的范围之内,每根木棍都连接着两个不同的小球,并且保 ...

  8. STM8时基单元

    STM8时基单元 时基单元包含: 16位向上/向下计数器 16位自动重载寄存器 重复计数器 预分频器 (图29:STM8 时基单元) 16位计数器,预分频器,自动重载寄存器和重复计数器寄存器都可以通过 ...

  9. BZOJ 2217: [Poi2011]Lollipop

    若sum可行 sum-2一定可行 序列和为ans 找出和ans奇偶性不同的最大的ans,即最靠左或最靠右的1的位置 更新答案 有spj #include<cstdio> using nam ...

  10. UVa 1452 递推 Jump

    约瑟夫变形,先计算出3个数时,最后三个数字的编号. 然后以这三个数为起点,就可以递推出n个数对应的最后三个数字的编号. 递推公式都是一样的. #include <iostream> #in ...