原文出自  http://www.abcdocker.com/abcdocker/84

Cobar部署与测试

一、Cobar介绍

1.1功能概述:

Cobar是关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务。

1.1.1 Cobar核心功能:

Ø  分布式:Cobar的分布式主要是通过将表放入不同的库来实现:

1. Cobar支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分。

2. Cobar也支持将不同的表放入不同的库。

3. 多数情况下,用户会将以上两种方式混合使用这里需要强调的是,Cobar不支持将一张表,例如test表拆分成test_1, test_2, test_3…..放在同一个库中,必须将拆分后的表分别放入不同的库来实现分布式。

Ø  HA:

在用户配置了MySQL心跳的情况下,Cobar可以自动向后端连接的MySQL发送心跳,判断MySQL运行状况,一旦运行出现异常,Cobar可以自动切换到备机工作。但需要强调的是:

1. Cobar的主备切换有两种触发方式,一种是用户手动触发,一种是Cobar的心跳语句检测到异常后自动触发。那么,当心跳检测到主机异常,切换到备机,如果主机恢复了,需要用户手动切回主机工作,Cobar不会在主机恢复时自动切换回主机,除非备机的心跳也返回异常。

2. Cobar只检查MySQL主备异常,不关心主备之间的数据同步,因此用户需要在使用Cobar之前在MySQL主备上配置双向同步,详情可以参阅MySQL参考手册。

1.1.2 Cobar的注意事项

1.请注意表的拆分方式,一张表水平拆分多份到不同的库中,而不是放入同一个库中。

2.如果使用HA功能,请在MySQL主备之间配置双向同步

1.1.3目录结构

1.1.3.1基本目录

解压cobar安装包后,可以看到以下目录:

bin #包含Cobar的启动、重启、停止等脚本文件

conf #包含Cobar所有配置文件

lib #包含Cobar及其依赖的jar文件

logs #包含Cobar所有日志文件

1.1.3.2启动脚本

Cobar的所有启动停止脚本全部放在bin目录中,进入bin目录,可以看到:

startup.sh   #Linux环境启动脚本

startup.bat  #Windows环境启动脚本

restart.sh     #Linux环境重启脚本

shutdown.sh  #Linux环境停止脚本

1.1.3.3配置文件

Cobar的所有配置文件全部放在conf目录中,进入conf目录,可以看到:

  1. server.xml    #Cobar系统、用户、集群等相关配置
  2. rule.xml      #分布式规则定义
  3. log4j.xml     #日志相关配置
  4. schema.xml   #schema,dataNode,dataSource相关配置,其中:
  5. dataSource:数据源,表示一个具体的数据库连接,与一个物理存在的schema一一对应。
  6. dataNode:数据节点,由主、备数据源,数据源的HA以及连接池共同组成,可以将一个dataNode理解为一个分库。
  7. schema:cobar可以定义包含拆分表的schema(如schema1),也可以定义无拆分表的schema(如schema2)。
1.1.3.4配置文件详解:

略!请见官方文档!!!

二、Cobar配置及安装

下面我们将使用一个最简单的分库分表的例子来说明Cobar的基本用法,数据库schema如下图(该实例也可参考:Cobar产品首页)。

1.系统对外提供的数据库名是dbtest,并且其中有两张表tb1和tb2。

2.tb1表的数据被映射到物理数据库dbtest1的tb1上。

3.tb2表的一部分数据被映射到物理数据库dbtest2的tb2上,另外一部分数据被映射到物理数据库dbtest3的tb2上。

2.1环境准备

  1. 操作系统:Linux Centos6.7
  2. MySQL:5.5.49版本
  3. JDL:jdk-8u60-linux-x64.tar
  4. Cobar:cobar-server-1.2.7.tar

2.2分布式环境部署

(1)提前安装mysql,并提前在mysql /data/3306实例创建dbtest1库与tb1表,dbtest2库与tb2表,dbtest3库与tb2表,并且授权。

  1. mysql -uroot -poldboy123 -S /data/3306/mysql.sock
  2. mysql> grant all privileges on *.* to 'cobar'@'172.16.1.%' identified by 'oldboy123';
  3. mysql> flush privileges;
  4. create database dbtest1;
  5. create database dbtest2;
  6. create database dbtest3;
  7. use dbtest1;
  8. create table tb1(
  9. id int(4) not null,
  10. name char(20) not null,
  11. age tinyint(2) NOT NULL default '0',
  12. dept varchar(16) default NULL,
  13. primary key(id),
  14. KEY index_name(name)
  15. );
  16. use dbtest2;
  17. create table tb2 (
  18. id int(4) NOT NULL,
  19. name char(20) NOT NULL,
  20. PRIMARY KEY (id)
  21. );
  22. use dbtest3;
  23. create table tb2 (
  24. id int(4) NOT NULL,
  25. name char(20) NOT NULL,
  26. PRIMARY KEY (id)
  27. );

上传jdk和cobar的gz包到/home/oldboy/tools

(2)配置java环境

  1. cd /application/tools/
  2. tar xf jdk-8u60-linux-x64.tar.gz -C /application/
  3. ln -s /application/jdk1.8.0_60 /application/jdk
  4. sed -i.ori '$a export JAVA_HOME=/application/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar' /etc/profile
  5. source /etc/profile

(3)配置cobar环境

  1. cd /home/oldboy/tools
  2. tar xf cobar-server-1.2.7.tar.gz
  3. cp -a cobar-server-1.2.7 /application/
  4. mv /application/cobar-server-1.2.7 /application/cobar
  5. cd /application/cobar/
  6. cd conf

(4)配置cobar配置文件

1.配置schema.xml文件

  1. [root@db02 conf]# cat schema.xml
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <!--
  4.  - Copyright 1999-2012 Alibaba Group.
  5.  - 
  6.  - Licensed under the Apache License, Version 2.0 (the "License");
  7.  - you may not use this file except in compliance with the License.
  8.  - You may obtain a copy of the License at
  9.  - 
  10.  -      http://www.apache.org/licenses/LICENSE-2.0
  11.  - 
  12.  - Unless required by applicable law or agreed to in writing, software
  13.  - distributed under the License is distributed on an "AS IS" BASIS,
  14.  - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  - See the License for the specific language governing permissions and
  16.  - limitations under the License.
  17. -->
  18. <!DOCTYPE cobar:schema SYSTEM "schema.dtd">
  19. <cobar:schema xmlns:cobar="http://cobar.alibaba.com/">
  20.  
  21.   <!-- schema定义 -->
  22.   <schema name="dbtest" dataNode="dnTest1">  #这条规则意思是dbtest主要映射的是dnTest1库,也就是下面172.16.1.52:3306/dbtest1库
  23.     <table name="tb2" dataNode="dnTest2,dnTest3" rule="rule1" />  #tb2表则是按照规则rule1,被分配到dnTest2库(即172.16.1.52:3306/dbtest2库)和dnTest3库(即172.16.1.52:3306/dbtest3库)中
  24.   </schema>
  25.  
  26.   <!-- 数据节点定义,数据节点由数据源和其他一些参数组织而成。-->
  27.   <dataNode name="dnTest1"> 
  28.     <property name="dataSource">
  29.       <dataSourceRef>dsTest[0]</dataSourceRef>
  30.     </property>
  31.   </dataNode>
  32.   <dataNode name="dnTest2">
  33.     <property name="dataSource">
  34.       <dataSourceRef>dsTest[1]</dataSourceRef>
  35.     </property>
  36.   </dataNode>
  37.   <dataNode name="dnTest3">
  38.     <property name="dataSource">
  39.       <dataSourceRef>dsTest[2]</dataSourceRef>
  40.     </property>
  41.   </dataNode>
  42.  
  43.   <!-- 数据源定义,数据源是一个具体的后端数据连接的表示。-->
  44.   <dataSource name="dsTest" type="mysql">
  45.     <property name="location">
  46.       <location>172.16.1.52:3306/dbtest1</location>  #数据库的IP和端口号
  47.       <location>172.16.1.52:3306/dbtest2</location>
  48.       <location>172.16.1.52:3306/dbtest3</location>
  49.     </property>
  50.     <property name="user">cobar</property>  #数据库给cobar的用户名
  51.     <property name="password">oldboy123</property>  #数据库给cobar的密码
  52.     <property name="sqlMode">STRICT_TRANS_TABLES</property>
  53.   </dataSource>
  54.  
  55. </cobar:schema>

2.配置rule.xml文件

  1. [root@db02 conf]# cat rule.xml
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <!--
  4.  - Copyright 1999-2012 Alibaba Group.
  5.  - 
  6.  - Licensed under the Apache License, Version 2.0 (the "License");
  7.  - you may not use this file except in compliance with the License.
  8.  - You may obtain a copy of the License at
  9.  - 
  10.  -      http://www.apache.org/licenses/LICENSE-2.0
  11.  - 
  12.  - Unless required by applicable law or agreed to in writing, software
  13.  - distributed under the License is distributed on an "AS IS" BASIS,
  14.  - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  - See the License for the specific language governing permissions and
  16.  - limitations under the License.
  17. -->
  18. <!DOCTYPE cobar:rule SYSTEM "rule.dtd">
  19. <cobar:rule xmlns:cobar="http://cobar.alibaba.com/">
  20.  
  21.   <!-- 路由规则定义,定义什么表,什么字段,采用什么路由算法 -->
  22.   <tableRule name="rule1">
  23.     <rule>
  24.       <columns>id</columns>
  25.       <algorithm><![CDATA[ func1(${id}) ]]></algorithm>
  26.     </rule>
  27.   </tableRule>
  28.  
  29.   <!-- 路由函数定义 -->
  30.   <function name="func1" class="com.alibaba.cobar.route.function.PartitionByLong">
  31.     <property name="partitionCount">2</property>  #需要注意的就是这两行,对数据库插入大于512的会存储至dnTest3对应的库表中
  32.     <property name="partitionLength">512</property>
  33.   </function>
  34.  
  35. </cobar:rule>
  36. 3.配置server.xml文件
  37. [root@db02 conf]# cat server.xml
  38. <?xml version="1.0" encoding="UTF-8"?>
  39. <!--
  40.  - Copyright 1999-2012 Alibaba Group.
  41.  - 
  42.  - Licensed under the Apache License, Version 2.0 (the "License");
  43.  - you may not use this file except in compliance with the License.
  44.  - You may obtain a copy of the License at
  45.  - 
  46.  -      http://www.apache.org/licenses/LICENSE-2.0
  47.  - 
  48.  - Unless required by applicable law or agreed to in writing, software
  49.  - distributed under the License is distributed on an "AS IS" BASIS,
  50.  - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  51.  - See the License for the specific language governing permissions and
  52.  - limitations under the License.
  53. -->
  54. <!DOCTYPE cobar:server SYSTEM "server.dtd">
  55. <cobar:server xmlns:cobar="http://cobar.alibaba.com/">
  56.  
  57.   <!-- 系统参数定义,服务端口、管理端口,处理器个数、线程池等。 -->
  58.   <!--
  59.   <system>
  60.     <property name="serverPort">8066</property>
  61.     <property name="managerPort">9066</property>
  62.     <property name="initExecutor">16</property>
  63.     <property name="timerExecutor">4</property>
  64.     <property name="managerExecutor">4</property>
  65.     <property name="processors">4</property>
  66.     <property name="processorHandler">8</property>
  67.     <property name="processorExecutor">8</property>
  68.     <property name="clusterHeartbeatUser">_HEARTBEAT_USER_</property>
  69.     <property name="clusterHeartbeatPass">_HEARTBEAT_PASS_</property>
  70.   </system>
  71.   -->
  72.  
  73.   <!-- 用户访问定义,用户名、密码、schema等信息。 -->
  74.   <user name="cobar">
  75.     <property name="password">oldboy123</property>
  76.     <property name="schemas">dbtest</property>
  77.   </user>
  78.   <!--
  79.   <user name="root">
  80.     <property name="password">oldboy123</property>
  81.   </user>
  82.   -->
  83.  
  84.   <!-- 集群列表定义,指定集群节点的主机和权重,用于集群间的心跳和客户端负载均衡。 -->
  85.   <!--
  86.   <cluster>
  87.     <node name="cobar1">
  88.       <property name="host">127.0.0.1</property>
  89.       <property name="weight">1</property>
  90.     </node>
  91.   </cluster>
  92.    -->
  93.   
  94.   <!-- 隔离区定义,可以限定某个主机上只允许某个用户登录。 -->
  95.   <!--
  96.   <quarantine>
  97.     <host name="1.2.3.4">
  98.       <property name="user">test</property>
  99.     </host>
  100.   </quarantine>
  101.   -->
  102.  
  103. </cobar:server>
  104. #这里定义的帐号密码就是命令行登录数据库的帐号密码

登录命令:

  1. mysql -ucobar -poldboy123 -h172.16.1.52 -P8066

上面的说明:用户就是server.xml定义的用户cobar,密码也是配置文件里面的密码,cobar是用8066端口登录的,这个也是启用的java进程的端口号。

2.3分库分表测试阶段

  1. 启动cobar:
  2. /application/cobar/bin/startup.sh
  3. 查看启动结果:
  4. [root@db02 conf]# ps -ef|grep cobar
  5. root     10219     1  0 18:17 ?        00:00:16 /application/jdk/bin/java -Dcobar.home=/application/cobar -classpath /application/cobar/conf:/application/cobar/lib/classes:/application/cobar/lib/cobar-server-1.2.7.jar:/application/cobar/lib/log4j-1.2.16.jar -server -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+UseFastAccessorMethods -XX:+DisableExplicitGC -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75 com.alibaba.cobar.CobarStartup
  6. root     10251     1  0 18:47 ?        00:00:00 grep --color=auto cobar
  7. [root@db02 conf]# netstat -tulnap |grep 8066
  8. tcp6       0      0 :::8066                 :::*                    LISTEN      10219/java
  9. 使用cobar登录,简单测试一下:
  10. [root@db02 conf]# mysql -ucobar -poldboy123 -h172.16.1.52 -P8066
  11. 进入数据库执行测试操作:
  12. mysql> show databases;
  13. +----------+
  14. | DATABASE |
  15. +----------+
  16. | dbtest   |
  17. +----------+
  18. mysql> use dbtest;
  19. Database changed
  20. mysql> show tables;
  21. +------------------+
  22. | Tables_in_dbtest |
  23. +------------------+
  24. | tb2              |
  25. | tb1              |
  26. +------------------+
  27. mysql> insert into tb2(id,name) values(55,'oldgirl');  
  28. mysql> insert into tb2(id,name) values(520,'oldboy');    #520大于512,因此会被存储到3306实例的dbtest3库的tb2表下
  29. mysql> quit
  30. 然后进入3306实例里面查看:
  31. [root@db02 conf]# mysql -uroot -poldboy123 -S /data/3306/mysql.sock
  32. mysql> show databases;
  33. +--------------------+
  34. | Database           |
  35. +--------------------+
  36. | information_schema |
  37. | dbtest             |
  38. | dbtest1            |
  39. | dbtest2            |
  40. | dbtest3            |
  41. | mysql              |
  42. | oldboy             |
  43. | performance_schema |
  44. +--------------------+
  45. mysql> use dbtest3
  46. Database changed
  47. mysql> show tables;
  48. +-------------------+
  49. | Tables_in_dbtest3 |
  50. +-------------------+
  51. | tb2               |
  52. +-------------------+
  53. mysql> select * from tb2;
  54. +-----+--------+
  55. | id  | name   |
  56. +-----+--------+
  57. | 520 | oldboy |
  58. +-----+--------+
  59. 果然只有520存储到3306实例的dbtest3库的tb2表下

添加一个实例测试:

  1. 启动新实例:
  2. [root@db02 conf]# data/3308/mysql start
  3. 登录数据库:
  4. [root@db02 conf]# mysql -uroot -poldboy123 -S /data/3308/mysql.sock
  5. mysql> grant all privileges on *.* to 'cobar'@'172.16.1.%' identified by 'oldboy123';
  6. mysql> flush privileges;
  7. create database dbtest1;
  8. create database dbtest2;
  9. create database dbtest3;
  10. use dbtest1;
  11. create table tb1(
  12. id int(4) not null,
  13. name char(20) not null,
  14. age tinyint(2) NOT NULL default '0',
  15. dept varchar(16) default NULL,
  16. primary key(id),
  17. KEY index_name(name)
  18. );
  19. use dbtest2;
  20. create table tb2 (
  21. id int(4) NOT NULL,
  22. name char(20) NOT NULL,
  23. PRIMARY KEY (id)
  24. );
  25. use dbtest3;
  26. create table tb2 (
  27. id int(4) NOT NULL,
  28. name char(20) NOT NULL,
  29. PRIMARY KEY (id)
  30. );
  31. 修改cobar的schema.xml配置文件:
  32. [root@db02 conf]# cat schema.xml
  33. <?xml version="1.0" encoding="UTF-8"?>
  34. <!--
  35.  - Copyright 1999-2012 Alibaba Group.
  36.  - 
  37.  - Licensed under the Apache License, Version 2.0 (the "License");
  38.  - you may not use this file except in compliance with the License.
  39.  - You may obtain a copy of the License at
  40.  - 
  41.  -http://www.apache.org/licenses/LICENSE-2.0
  42.  - 
  43.  - Unless required by applicable law or agreed to in writing, software
  44.  - distributed under the License is distributed on an "AS IS" BASIS,
  45.  - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  46.  - See the License for the specific language governing permissions and
  47.  - limitations under the License.
  48. -->
  49. <!DOCTYPE cobar:schema SYSTEM "schema.dtd">
  50. <cobar:schema xmlns:cobar="http://cobar.alibaba.com/">
  51.  
  52. <!-- schema定义 -->
  53. <schema name="dbtest" dataNode="dnTest1">
  54. <table name="tb2" dataNode="dnTest2,dnTest3" rule="rule1" />
  55. </schema>
  56.  
  57. <!-- 数据节点定义,数据节点由数据源和其他一些参数组织而成。-->
  58. <dataNode name="dnTest1">
  59. <property name="dataSource">
  60. <dataSourceRef>dsTest[0]</dataSourceRef>
  61. </property>
  62. </dataNode>
  63. <dataNode name="dnTest2">
  64. <property name="dataSource">
  65. <dataSourceRef>dsTest[1]</dataSourceRef>
  66. </property>
  67. </dataNode>
  68. <dataNode name="dnTest3">
  69. <property name="dataSource">
  70. <dataSourceRef>dsTest[2]</dataSourceRef>
  71. </property>
  72. </dataNode>
  73.  
  74. <!-- 数据源定义,数据源是一个具体的后端数据连接的表示。-->
  75. <dataSource name="dsTest" type="mysql">
  76. <property name="location">
  77. <location>172.16.1.52:3306/dbtest1</location>
  78. <location>172.16.1.52:3306/dbtest2</location>
  79. <location>172.16.1.52:3308/dbtest3</location>
  80. </property>
  81. <property name="user">cobar</property>
  82. <property name="password">oldboy123</property>
  83. <property name="sqlMode">STRICT_TRANS_TABLES</property>
  84. </dataSource>
  85.  
  86. </cobar:schema>

在登录cobar用户:

  1. [root@db02 conf]# mysql -ucobar -poldboy123 -h172.16.1.52 -P8066

mysql> insert into tb2(id,name) values(555,’qiangge’);

!!!!!#在插入信息的时候一定要在表名后面加(id,name),不然不能实现分布式储存的,只会同时写入两个表中,以至于成为双写。

再登录3308实例查看是否555,’qiangge’插入到dbtest3的tb2中:

  1. [root@db02 conf]# mysql -uroot -poldboy123 -S /data/3308/mysql.sock
  2. mysql> use dbtest3;
  3. mysql> select * from tb2;
  4. +-----+----------+
  5. | id| name     |
  6. +-----+----------+
  7. | 555 | qiangge2 |
  8. +-----+----------+

Cobar部署与测试相关推荐

  1. lzg_ad:使用Virtual PC 部署和测试XP Embedded 发布镜像

    注意: 本文将假设你已经熟悉并会使用Virtual PC. 如果对Visual PC的使用方法还不了解,请参考: http://www.petri.co.il/virtual_create_virtu ...

  2. 【区块链】Truffle 部署 编译 测试 智能合约 的 完整实践操作

    本文首发自我的CSDN博客,原文链接如下 blog.csdn.net/diandianxiy- 目标 搭建开发环境 创建一个Truffle项目 编写智能合约 编译转移智能合约 测试智能合约 创建用户界 ...

  3. Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装、部署和测试

    Ubuntu 18.04上进行HyperLedger Fabric 1.2.0环境及链码安装.部署和测试 1.环境安装 HyperLedger Fabric 1.2.0环境的安装推荐一篇博客:http ...

  4. NATS服务器部署及测试

    版权声明:本文为博主chszs的原创文章,未经博主允许不得转载. https://blog.csdn.net/chszs/article/details/51002444 NATS服务器部署及测试 作 ...

  5. jpql hql_无需部署即可测试JPQL / HQL

    jpql hql 您是否曾经想在不完全部署应用程序的情况下测试JPQL / HQL? 我们今天在这里看到的是适用于任何JPA实现的简单解决方案:Hibernate,OpenJPA,EclipseLin ...

  6. 无需部署即可测试JPQL / HQL

    您是否曾经想在不完全部署应用程序的情况下测试JPQL / HQL? 我们今天在这里看到的是适用于任何JPA实现的简单解决方案:Hibernate,OpenJPA,EclipseLink等. 这篇文章中 ...

  7. Openstack入门篇(十一)之neutron服务(控制节点)的部署与测试

    1.Neutron的介绍 Neutron 为整个 OpenStack 环境提供网络支持,包括二层交换,三层路由,负载均衡,防火墙和 *** 等.Neutron 提供了一个灵活的框架,通过配置,无论是开 ...

  8. HCIBench_2.3.1部署_VSAN_测试工具

    HCIBench_2.3.1部署_VSAN_测试工具 https://blog.csdn.net/fq3758/article/details/106216549 版权 前话:近期做VSAN性能测试, ...

  9. 安装部署(七) HBase集群安装部署与测试

    HBase集群安装部署与测试 Hadoop 2.7.2  Spark 2.0.0 Kafka 0.10.0.0 HBase 1.2.2 Zookeeper 3.4.8 参考: http://www.t ...

最新文章

  1. 给动态生成的按钮添加ajax,Ajax/Javascript动态创建按钮的问题
  2. Python导出Excel图表
  3. mysql5.6.40升级到mysql8.0.11 的步骤
  4. java填空题 在非静态成员方法中_Java学习(四): 类的使用
  5. idea 设置单行注释样式(不在行首注释)
  6. Nginx负载均衡策略之轮询与加权轮询
  7. 删除的文件如何恢复?一个技巧就解决
  8. java异常总结---1.java.lang.ClassNotFoundException: org.springframework.orm.hibernate4.support.OpenSessio
  9. 为什么需要跨境ERP系统?
  10. 客户让无数销售员卑躬屈膝的四大陷阱
  11. [华为机试真题][2014]63.等式变换
  12. 解决tableExport导出Excel过程中中文乱码和没有响应的问题
  13. PPT转图片/PDF-实用干货
  14. webpack中swipe的安装和使用
  15. PHP - 垃圾回收机制收集
  16. CTF主办方指南之对抗搅屎棍
  17. edge的扩展插件如何在chrome里面使用?
  18. 无法启用网络发现和文件共享或共享无法访问
  19. 浏览器预检请求返回400 has been blocked by CORS policy: Response to preflight request doesn’t pass access cont
  20. 基金什么时候买入好?

热门文章

  1. 如何查看oracle压力,oracle压力测试之orabm
  2. 【youcans 的 OpenCV 例程200篇】117. 形态学操作之顶帽运算
  3. 【OpenCV 例程200篇】87. 频率域钝化掩蔽
  4. python处理表格数据教程_python利用Excel读取和存储测试数据完成接口自动化教程...
  5. MySQL8.0.19下载安装及配置详细步骤
  6. liunx-mysql-password重置(初始化)
  7. spring注解大全
  8. 【递归与递推】青蛙过河
  9. 新建文件的UID和GID
  10. a=a+b和a+=b的区别