Oracle高级复制Step by Step

原创于2008年12月26日,2009年10月19日迁移至此。


Oracle 高级复制Step by Step
实施起因
某项目中遇到内外网数据库 同步的问题,假设电信机房和某机房网络物理隔绝,需要借助中间服务器进行数据库同步,这个中间服务器既可以是数据库服务器也可以是某种中间件或者某个程序。
因 为两头都是Oracle数据库,所以暂时先考虑使用数据库同步的机制来进行预研,当然仅仅是预研而已,距离实施还有一定距离,比如暂时只考虑数据库的单向 同步,少量数据的双向同步采用其他方法进行。另外一个目的是为了简化预研的难度,比如省略了发布模板(deployment template)和冲突解决方案(Conflict Resolution)。
    Master site(主站点)           Oracle实例为source
    Materialized view site(中间站点)Oracle实例为mid
Materialized view site Level2(目标站点)Oracle实例为dest
数据流方向为source->mid, mid->dest
    网络连通为source?mid,mid?dest;source<>dest
高级复制中的几个概念
1) replication object:复制对象,指需要作复制的对象(object),包括表,索引,
存储过程等等。复制对象的更新遵循事务一致性规则(transactionally consistent
manner)。
2) replication groups:复制组,是复制对象(replication object)的集合称为group,
oracle 以replication group 的形式来管理 复制。一个组可以包含多个模式的object,
一个模式也可以有多个组中的object,但是每个replication object 都只能属于一个
replication group。
3) replication sites:复制站点,包含两种类型,主体站点(master sites)和实
体化视图站点(materialized view sites)。一个site 可以担任一个replication
group 中的mater site 同时又担任另外一个replication group 中的materialized
view site,注意必须是另外一个组,而不能是同一个replication group。
4) scheduled links:一个数据库链接(database link),包含一个由用户定义的计划,
来将需要更新的事务推到其它的master sites,当创建scheduled link 的时候,oracle
将在本地任务队列中创建一个任务。
5) master definition site:主体定义站点,大部分的高级复制配置都需要在一个站
点上作,这个站点就是maserdef site
 
创建replication站点
设置master主站点
SQL> connect system/inxite@source
已连接。
SQL> --在主站点创建复制管理员帐号
SQL> create user repadmin identified by repadmin;
用户已创建。
SQL> --在主站点给该管理员赋予管理员权限
SQL> begin
  2    dbms_repcat_admin.grant_admin_any_schema(
  3      username=>'repadmin');
  4  end;
  5  /
PL/SQL 过程已成功完成。
SQL> --授予相应的权限
SQL> grant comment any table to repadmin;
授权成功。
SQL> grant lock any table to repadmin;
授权成功。
SQL> grant select any dictionary to repadmin;
授权成功。
SQL> --在主站点注册传播用户
SQL> begin
  2    dbms_defer_sys.register_propagator(
  3      username=>'repadmin');
  4  end;
  5  /
PL/SQL 过程已成功完成。
SQL> --在主站点注册接受用户
SQL> begin
  2    dbms_repcat_admin.register_user_repgroup(
  3      username=>'repadmin',
  4      privilege_type='receiver',
  5      list_of_gnames=>NULL);
  6  end;
  7  .
PL/SQL 过程已成功完成。
SQL> --设置清除延迟序列的job
SQL> begin
  2    dbms_defer_sys.schedule_purge(
  3      next_date=>sysdate,
  4      interval=>'sysdate+1/24',
  5      delay_seconds=>0);
  6  end;
  7  /
PL/SQL 过程已成功完成。
SQL> --在主站点创建代理物化视图管理员用户
SQL> connect system/inxite@source
已连接。
SQL> create user proxy_mviewadmin identified by proxy_mviewadmin;
用户已创建。
SQL> begin
  2    dbms_repcat_admin.register_user_repgroup(
  3      username=>'proxy_mviewadmin',
  4      privilege_type=>'proxy_snapadmin',
  5      list_of_gnames=>NULL);
  6  end;
  7  /
PL/SQL 过程已成功完成。
SQL> grant select_catalog_role to proxy_mviewadmin;
授权成功。
SQL>--创建代理刷新用户
SQL> create user proxy_refresher identified by proxy_refresher;
用户已创建。
SQL> grant create session to proxy_refresher;
授权成功。
SQL> grant select any table to proxy_refresher;
授权成功。
SQL> spool off

 
设置物化视图站点
SQL> --Connect as system at materialize view site at mid
SQL> set echo on
SQL> conn system/inxite@mid
已连接。
SQL> --在物化视图站点(中间站点)创建物化视图用户
SQL> --创建物化视图管理员
SQL> create user mviewadmin identified by mviewadmin;
用户已创建。
SQL> begin
  2    dbms_repcat_admin.grant_admin_any_schema(
  3      username=>'mviewadmin');
  4  end;
  5  /
PL/SQL 过程已成功完成。
SQL> grant comment any table to mviewadmin;
授权成功。
SQL> grant lock any table to mviewadmin;
授权成功。
SQL> grant select any dictionary to mviewadmin;
授权成功。
SQL> --创建传播者帐号
SQL> create user propagator identified by propagator;
用户已创建。
SQL> begin
  2    dbms_defer_sys.register_propagator(
  3      username=>'propagator');
  4  end;
  5  /
PL/SQL 过程已成功完成。
SQL> --创建刷新帐号
SQL> create user refresher identified by refresher;
用户已创建。
SQL> grant create session to refresher;
授权成功。
SQL> grant alter any materialized view to refresher;
授权成功。
SQL> --把物化视图管理员帐号注册为传播者
SQL> begin
  2    dbms_repcat_admin.register_user_repgroup(
  3      username=>'mviewadmin',
  4      privilege_type=>'receiver',
  5      list_of_gnames=>NULL);
  6  end;
  7  /
PL/SQL 过程已成功完成。
SQL>--创建公共数据库链接到master站点(source站点)
SQL> connect system/inxite@mid
已连接。
SQL> create public database link source using 'source';
数据库链接已创建。
SQL> conn mviewadmin/mviewadmin@mid
已连接。
SQL> create database link source connect to proxy_mviewadmin identified by proxy_mviewadmin;
数据库链接已创建。
SQL> select * from tab@source;
未选定行
SQL> --create the propagator/receiver database link;
SQL> connect propagator/propagator@mid;
已连接。
SQL> create database link source connect to repadmin identified by repadmin;
数据库链接已创建。
SQL> --Schedule purge at the mid materialized view site
SQL> conn mviewadmin/mviewadmin@mid
已连接。
SQL> begin
  2    dbms_defer_sys.schedule_purge(
  3      next_date=>sysdate,
  4      interval=>'sysdate+1/24',
  5      delay_seconds=>0,
  6      rollback_segment=>'');
  7  end;
  8  /
PL/SQL 过程已成功完成。
SQL> --Schedule push at the mid materialized view site
SQL> conn mviewadmin/mviewadmin@mid
已连接。
SQL> begin
  2    dbms_defer_sys.schedule_push(
  3      destination=>'source',
  4      interval=>'sysdate+1/24',
  5      next_date=>sysdate,
  6      stop_on_error=>false,
  7      parallelism=>0);
  8  end;
  9  /
PL/SQL 过程已成功完成。
SQL> --create proxy users at the mid materialized view site
SQL> --create proxy materialized view administrator
SQL> connect system/inxite@mid
已连接。
SQL> create user proxy_mviewadmin identified by proxy_mviewadmin;
用户已创建。
SQL> begin
  2    dbms_repcat_admin.register_user_repgroup(
  3      username=>'proxy_mviewadmin',
  4      privilege_type=>'proxy_snapadmin',
  5      list_of_gnames=>NULL);
  6  end;
  7  /
PL/SQL 过程已成功完成。
SQL> grant select_catalog_role to proxy_mviewadmin;
授权成功。
SQL> --Create the proxy refresher
SQL> create user proxy_refresher identified by proxy_refresher;
用户已创建。
SQL> grant create session to proxy_refresher;
授权成功。
SQL> grant select any table to proxy_refresher;
授权成功。
SQL> spool off

设置物化视图站点2
SQL> --connect as system at level 2 materialized view site dest
SQL> connect system/inxite@dest
已连接。
SQL> --create level2 materialized view site users at dest
SQL> create user mviewadmin identified by mviewadmin;
用户已创建。

SQL> begin
  2    dbms_repcat_admin.grant_admin_any_schema(
  3      username=>'mviewadmin');
  4  end;
  5  /
PL/SQL 过程已成功完成。
SQL> grant select any dictionary to mviewadmin;
授权成功。
SQL> --create the propagator
SQL> create user propagator identified by propagator;
用户已创建。
SQL> begin
  2    dbms_defer_sys.register_propagator(
  3      username=>'propagator');
  4  end;
  5  /
PL/SQL 过程已成功完成。
SQL> --create the refresher
SQL> create user refresher identified by refresher;
用户已创建。
SQL> grant create session to refresher;
授权成功。
SQL> grant alter any materialized view to refresher;
授权成功。
SQL> --create database links to master materialized view site
SQL> --create a public database link
SQL> connect system/inxite@dest
已连接。
SQL> create public database link mid using 'mid';
数据库链接已创建。
SQL> connect mviewadmin/mviewadmin@dest
已连接。
SQL> create database link mid connect to proxy_mviewadmin identified by proxy_mviewadmin;
数据库链接已创建。
SQL> select * from tab@mid;
未选定行
SQL> --create a propagator/receiver database link
SQL> connect propagator/propagator@dest
已连接。
SQL> create database link mid connect to mviewadmin identified by mviewadmin;
数据库链接已创建。
SQL> select * from tab@mid;
未选定行
SQL> --Schedule purge at level 2 materialized view site at dest site
SQL> conn mviewadmin/mviewadmin@dest
已连接。
SQL> begin
  2    dbms_defer_sys.schedule_purge(
  3      next_date=>sysdate,
  4      interval=>'sysdate+1/24',
  5      delay_seconds=>0,
  6      rollback_segment=>'');
  7  end;
  8  /
PL/SQL 过程已成功完成。
SQL> --Schedule push at the dest materialized view site
SQL> conn mviewadmin/mviewadmin@dest;
已连接。
SQL> begin
  2    dbms_defer_sys.schedule_push(
  3      destination=>'mid',
  4      interval=>'sysdate+1/24',
  5      next_date=>sysdate,
  6      stop_on_error=>false,
  7      delay_seconds=>0,
  8      parallelism=>0);
  9  end;
 10  /
PL/SQL 过程已成功完成。
SQL> spool off

 
创建主站点组
SQL> connect repadmin/repadmin@source;
已连接。
SQL> --create the test schema at source master site
SQL> --...
SQL> --create the master group
SQL> begin
  2    dbms_repcat.create_master_repgroup(
  3      gname=>'test_repg');
  4  end;
  5  /
PL/SQL 过程已成功完成。
SQL> --add object to master group
SQL>
SQL> BEGIN
  2  DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
  3  gname => 'test_repg',
  4  type => 'TABLE',
  5  name => 'test',
  6  sname => 'test',
  7  use_existing_object => TRUE,
  8  copy_rows => FALSE);
  9  END;
 10  /
PL/SQL 过程已成功完成。
SQL>
SQL> BEGIN
  2  DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
  3  gname => 'test_repg',
  4  type => 'TABLE',
  5  name => 'dept',
  6  sname => 'test',
  7  use_existing_object => TRUE,
  8  copy_rows => FALSE);
  9  END;
 10  /
PL/SQL 过程已成功完成。
SQL> BEGIN
  2  DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
  3  sname => 'test',
  4  name => 'test',
  5  type => 'TABLE',
  6  min_communication => TRUE);
  7  END;
  8  /
PL/SQL 过程已成功完成。
SQL> BEGIN
  2  DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
  3  sname => 'test',
  4  name => 'dept',
  5  type => 'TABLE',
  6  min_communication => TRUE);
  7  END;
  8  /
PL/SQL 过程已成功完成。
SQL> --start replication
SQL> begin
  2    dbms_repcat.resume_master_activity(
  3      gname=>'test_repg');
  4  end;
  5  /
PL/SQL 过程已成功完成。
SQL> spool off

创建物化视图组
 
SQL> conn test/test@source;
已连接。
SQL> create materialized view log on test.test;
实体化视图日志已创建。
SQL> create materialized view log on test.dept;
实体化视图日志已创建。
SQL> CONN system/inxite@mid;
已连接。
SQL> CREATE SMALLFILE TABLESPACE "test"
  2  DATAFILE 'E:/OracleDB/DBFILE01.DB' SIZE 200M AUTOEXTEND ON NEXT 200M MAXSIZE 8000M
  3  LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
表空间已创建。
SQL> CREATE USER "TEST" PROFILE "DEFAULT" IDENTIFIED BY "test" DEFAULT TABLESPACE "test" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
用户已创建。
SQL> GRANT "CONNECT" TO "TEST";
授权成功。
SQL> GRANT "DBA" TO "TEST";
授权成功。
SQL> GRANT "DELETE_CATALOG_ROLE" TO "TEST";
授权成功。
SQL> GRANT "EXECUTE_CATALOG_ROLE" TO "TEST";
授权成功。
SQL> GRANT "EXP_FULL_DATABASE" TO "TEST";
授权成功。
SQL> GRANT "GATHER_SYSTEM_STATISTICS" TO "TEST";
授权成功。
SQL> GRANT "IMP_FULL_DATABASE" TO "TEST";
授权成功。
SQL> GRANT "RESOURCE" TO "TEST";
授权成功。
SQL> GRANT "SCHEDULER_ADMIN" TO "TEST";
授权成功。
SQL> GRANT "SELECT_CATALOG_ROLE" TO "TEST";
授权成功。
SQL> GRANT CREATE PROCEDURE TO TEST;
授权成功。
SQL> GRANT CREATE SEQUENCE TO TEST;
授权成功。
SQL> GRANT CREATE VIEW TO TEST;
授权成功。
SQL> GRANT CREATE SYNONYM TO TEST;
授权成功。
SQL> GRANT ALTER SESSION TO TEST;
授权成功。
SQL> GRANT CREATE MATERIALIZED VIEW TO TEST;
授权成功。
SQL> GRANT ALTER ANY MATERIALIZED VIEW TO TEST;
授权成功。
SQL> GRANT CREATE DATABASE LINK TO TEST;
授权成功。
SQL> grant create session to test;
授权成功。
SQL> grant create table to test;
授权成功。
SQL> conn system/inxite@dest
已连接。
SQL> CREATE SMALLFILE TABLESPACE "test"
  2  DATAFILE 'E:/OracleDB/DBFILE01.DB' SIZE 200M AUTOEXTEND ON NEXT 200M MAXSIZE 8000M
  3  LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
表空间已创建。
SQL> CREATE USER "TEST" PROFILE "DEFAULT" IDENTIFIED BY "test" DEFAULT TABLESPACE "test" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK;
用户已创建。
SQL> GRANT "CONNECT" TO "TEST";
授权成功。
SQL> GRANT "DBA" TO "TEST";
授权成功。
SQL> GRANT "DELETE_CATALOG_ROLE" TO "TEST";
授权成功。
SQL> GRANT "EXECUTE_CATALOG_ROLE" TO "TEST";
授权成功。
SQL> GRANT "EXP_FULL_DATABASE" TO "TEST";
授权成功。
SQL> GRANT "GATHER_SYSTEM_STATISTICS" TO "TEST";
授权成功。
SQL> GRANT "IMP_FULL_DATABASE" TO "TEST";
授权成功。
SQL> GRANT "RESOURCE" TO "TEST";
授权成功。
SQL> GRANT "SCHEDULER_ADMIN" TO "TEST";
授权成功。
SQL> GRANT "SELECT_CATALOG_ROLE" TO "TEST";
授权成功。
SQL> GRANT CREATE SESSION TO TEST;
授权成功。
SQL> GRANT CREATE TABLE TO TEST;
授权成功。
SQL> GRANT CREATE PROCEDURE TO TEST;
授权成功。
SQL> GRANT CREATE SEQUENCE TO TEST;
授权成功。
SQL> GRANT CREATE VIEW TO TEST;
授权成功。
SQL> GRANT CREATE SYNONYM TO TEST;
授权成功。
SQL> GRANT ALTER SESSION TO TEST;
授权成功。
SQL> GRANT CREATE MATERIALIZED VIEW TO TEST;
授权成功。
SQL> GRANT ALTER ANY MATERIALIZED VIEW TO TEST;
授权成功。
SQL> GRANT CREATE DATABASE LINK TO TEST;
授权成功。
SQL> connect test/test@mid;
已连接。
SQL> create database link source connect to proxy_refresher identified by proxy_refresher;
数据库链接已创建。
SQL> select * from tab@source;
未选定行
SQL> --create the materialized view group
SQL> connect mviewadmin/mviewadmin@mid;
已连接。
SQL> begin
  2    dbms_repcat.create_mview_repgroup(
  3      gname=>'test_repg',
  4      master=>'source',
  5      propagation_mode=>'ASYNCHRONOUS');
  6  end;
  7  /
PL/SQL 过程已成功完成。
SQL> --create the refresh group
SQL> begin
  2    dbms_refresh.make(
  3      name=>'mviewadmin.test_repg',
  4      list=>'',
  5      next_date=>sysdate,
  6      interval=>'sysdate+1/24',
  7      implicit_destroy=>false,
  8      rollback_seg=>'',
  9      push_deferred_rpc=>true,
 10      refresh_after_errors=>false);
 11  end;
 12  /

PL/SQL 过程已成功完成。

SQL> --add object to the materialized view group
SQL> create materialized view test.test_mv1
  2  refresh fast with primary key for update
  3  as select * from test.test@source;
实体化视图已创建。
SQL> create materialized view test.dept_mv1
  2  refresh fast with primary key for update
  3  as select * from test.dept@source;
实体化视图已创建。
SQL> select * from test.dept_mv1;
ID         Name
---------------------------
1         market
2          finacial
SQL> begin
  2    dbms_repcat.create_mview_repobject(
  3      gname=>'test_repg',
  4      sname=>'test',
  5      name=>'test_mv1',
  6      type=>'SNAPSHOT',
  7      min_communication=>true
  8  );
  9  end;
 10  /
PL/SQL 过程已成功完成。
SQL> begin
  2    dbms_repcat.create_mview_repobject(
  3      gname=>'test_repg',
  4      sname=>'test',
  5      name=>'dept_mv1',
  6      type=>'SNAPSHOT',
  7      min_communication=>true);
  8  end;
  9  /
PL/SQL 过程已成功完成。
SQL> --add objects to the refresh group
SQL> BEGIN
  2  DBMS_REFRESH.MAKE (
  3  name => 'mviewadmin.test_refg',
  4  list => '',
  5  next_date => SYSDATE,
  6  interval => 'SYSDATE + 1/24',
  7  implicit_destroy => FALSE,
  8  rollback_seg => '',
  9  push_deferred_rpc => TRUE,
 10  refresh_after_errors => FALSE);
 11  END;
 12  /
PL/SQL 过程已成功完成。
SQL> BEGIN
  2  DBMS_REFRESH.ADD (
  3  name => 'mviewadmin.test_refg',
  4  list => 'test.test_mv1',
  5  lax => TRUE);
  6  END;
  7  /
PL/SQL 过程已成功完成。
SQL> BEGIN
  2  DBMS_REFRESH.ADD (
  3  name => 'mviewadmin.test_refg',
  4  list => 'test.dept_mv1',
  5  lax => TRUE);
  6  END;
  7  /
PL/SQL 过程已成功完成。
SQL> --create materilized view logs at the master materialized view site
SQL> connect test/test@mid;
已连接。
SQL> create materialized view log on test.test_mv1;
实体化视图日志已创建。
SQL> create materialized view log on test.dept_mv1;
实体化视图日志已创建。
SQL> connect test/test@dest;
已连接。
SQL> create database link mid connect to proxy_refresher identified by proxy_refresher;
数据库链接已创建。
SQL> select * from tab@mid;
未选定行
SQL> --create the materialized view group
SQL> connect mviewadmin/mviewadmin@dest;
已连接。
SQL> begin
  2    dbms_repcat.create_mview_repgroup(
  3      gname=>'test_repg',
  4      master=>'mid',
  5      propagation_mode=>'ASYNCHRONOUS');
  6  end;
  7  /
PL/SQL 过程已成功完成。
SQL> --create the refresh group
SQL> BEGIN
  2  DBMS_REFRESH.MAKE (
  3  name => 'mviewadmin.test_refg',
  4  list => '',
  5  next_date => SYSDATE,
  6  interval => 'SYSDATE + 1/24',
  7  implicit_destroy => FALSE,
  8  rollback_seg => '',
  9  push_deferred_rpc => TRUE,
 10  refresh_after_errors => FALSE);
 11  end;
 12  /
PL/SQL 过程已成功完成。
SQL> --add objects to the materialized view group
SQL> create materialized view test.test_mv2
  2  refresh fast with primary key for update
  3  as select * from test.test_mv1@mid;
实体化视图已创建。
SQL> create materialized view test.dept_mv2
  2  refresh fast with primary key for update
  3  as select * from test.dept_mv1@mid;
实体化视图已创建。
SQL> --add the materialized view to the materialized view group
SQL> begin
  2    dbms_repcat.create_mview_repobject(
  3      gname=>'test_repg',
  4      sname=>'test',
  5      name=>'test_mv2',
  6      type=>'SNAPSHOT',
  7      min_communication=>true);
  8  end;
  9  /
PL/SQL 过程已成功完成。
SQL>
SQL> begin
  2    dbms_repcat.create_mview_repobject(
  3      gname=>'test_repg',
  4      sname=>'test',
  5      name=>'dept_mv2',
  6      type=>'SNAPSHOT',
  7      min_communication=>true);
  8  end;
  9  /
PL/SQL 过程已成功完成。
SQL> --add objects to the refresh group
SQL> begin
  2    dbms_refresh.add(
  3      name=>'mviewadmin.test_refg',
  4      list=>'test.test_mv2',
  5      lax=>true);
  6  end;
  7  /
PL/SQL 过程已成功完成。
SQL> begin
  2    dbms_refresh.add(
  3      name=>'mviewadmin.test_refg',
  4      list=>'test.dept_mv2',
  5      lax=>true);
  6  end;
  7  /
PL/SQL 过程已成功完成。
SQL> spool off


参考文档:
Oracle?? Database Advanced Replication 10g Release 2 (10.2)
Oracle?? Database Advanced Replication Management API Reference 10g Release 2 (10.2)
关于Advanced Replication 的初步研究
ITPUB个人空间6}AR`?0|.n e 4qX NrPA6517 ITPUB个人空间(H'@(xkz�{X{_ ITPUB个人空间0~w:D4[`;D:s7m_ ITPUB个人空间']2]"mT t e ITPUB个人空间 X-o],?w2F TG'q5Pj#w p }J%D6517 F0l yv IJ6517 s�`L w q1Sn*w6517 ITPUB个人空间't!s�~#mtmw~/p g3N,ah5M5b6517 Z9Ojm}(]Hj6517 ITPUB个人空间w;W @1o3vE!nZ ITPUB个人空间E^W9`.B7S4r�]a ITPUB个人空间6S^;z.[ ~l }/5@x ITPUB个人空间5uOh ~4h?D ITPUB个人空间|F9N�JywH Lj&[c%M~�D`6517 ITPUB个人空间#CIN"~5]lY Itye-B"elo6517 ITPUB个人空间 AdOqe9aJ+O6p 6|Sa}7]h C6517 ITPUB个人空间0v*L2g-`�nM)X0jA8x?-? zE[C.P-Y)`t-c;f6517 &m2j3Y8H$@6517 ITPUB个人空间o'pz^9GE$Q x-K4ZC Znv4s7Y o,j6517 ITPUB个人空间�B*O p*Qg9yg:wzE M7Y&f ~)]D`G6517 ITPUB个人空间-q0AX X,HX"kK ITPUB个人空间#t`tw,e5C^ ITPUB个人空间8Bhj3Wt&N1k? j$y!J ITPUB个人空间 Sd~j'M 5J/u)P u&~/`+m6517 ITPUB个人空间vw7jn0E$G^J[#e ITPUB个人空间~`Y/#h 7|@/Q'FWY6517 ITPUB个人空间:jD0UHt &E%l/l5Xza8Jg S6517 ITPUB个人空间vVSN'P4u$j1t ITPUB个人空间c6B+z,[,RE+ji+BB $B Wa7Q/^F#_6517 ITPUB个人空间 /6G1tQCg"uQ�nH ITPUB个人空间-u9C2d~ |T %l6`3^8I r L~6517 6T!?(P3f[:p6517 -F;o L%}&i Ph7RR6517 iR(NqD@6517 p3B6U~0t1Lj QJ-~6517 O&U#Q*p5Jbj-Pz6517 NP'vd0e:{Il2H1il6517 m3p[Hhx2c@7~Z6517 GF Vv~D6517 /uz"U a;Y M0FD�/N6517 R3@*cR9X6517 '}5U//7ws$N)YgC6517 @;nS.O�A4V6517 z+b!@]xWn1o]e`X9M6517 7W#Uf�M ^V0{8M#i/6517 ITPUB个人空间-}0]gX:C*} l%qIJ ITPUB个人空间-d oQf%R fG3~ ApVOM j4G_k0G'Z6517 x&sy3L {6517 ITPUB个人空间D`$fA J ~N Z~.jU//6517 ITPUB个人空间-jn3Tr4K;h5L5lh ITPUB个人空间8G~N VE+_%o#is ITPUB个人空间h2o)BPg%Q8v!b.Q$Y TZ K J~9Te0asI|6517 ITPUB个人空间c&X L)Ef1U ITPUB个人空间.?t iV(v)T ITPUB个人空间2B QlzhgQs ITPUB个人空间(M3v-|4/vr#Hi!`t+j ITPUB个人空间!n@1_I9bm ;im~o'r/W5M;U0/Ec6517 'c5m#bVS'SKv6517 ITPUB个人空间oLA&p_#n ,Qp2qrI r)_)U6517 yQ;U7E i1t{2T1p L,o6517 ITPUB个人空间Pw/K^*Y%dC ITPUB个人空间wPmr-o%x&HhR ITPUB个人空间!i'PRVw!LQc 1En} f5M ?WY hy6517 9rbtp`{6517 ITPUB个人空间0Ve.T�qu4[ &^7b|#h#o n#t6517 "oJT&j{"Z ZpO6517 UY`8^u#Y9I*}Q_6517 ITPUB个人空间F6j k3q B[ ITPUB个人空间&W9Ys!g&B;B/qp ITPUB个人空间"f(R['?"j#C ITPUB个人空间1MO)c]"{-u ITPUB个人空间(OY B!Gm"oYT Z%z{!j_*~$L)?6517 ITPUB个人空间!Y^$B.z'uG#qYd 3FIe5J OpC6517 ITPUB个人空间-m ~5g+hzL4I"p%CpS ITPUB个人空间d4g&tDW�~0O yBD0s%e l6517 ITPUB个人空间t u AK{&M)]oG+AO -T?(a"_%ek9|m!M$Kr6517 vO HZdlqk6517 ITPUB个人空间;cur1HZ7q%Qq ITPUB个人空间pE-Q A p U 0uA"e)mE?�VD6517 ,`B$L#J j~5Kz6517 )?$s!KO;P6517 8m6?'F6a)@6e O uvn`6517 :uv,f0M0jvJ t y6517 ITPUB个人空间g$P/XYw5s(w*N :kriso[6eW;t6517 ITPUB个人空间8F0L E @6N{t1} ^"I,nR/qm6517 N;Zi9~){H:}*b.p^2t6517 cUL)h)qz$RFT,R6517 ITPUB个人空间 d|'q/fkZ ITPUB个人空间6j4?2n{ ]I/KHz'w 0pGJ5z/T&A m%L6517 *|j J-W8`V} u&Y6517 ITPUB个人空间]#q m&E2b`(e X:` ITPUB个人空间+/6z0F-a$O0cQ$P,h ^ z {,NGd5iL6517 ITPUB个人空间 ?3]T)_4S.OB/k6j ITPUB个人空间%sJ){G#D3ED)r ITPUB个人空间S-KTo @ ITPUB个人空间3TJ/sH!X ITPUB个人空间!Z3Y5V(N `i ITPUB个人空间S rU6o7NR$/c8z ITPUB个人空间 TF^ |w`a1vz +Tc6u2x.T6517 ITPUB个人空间Hb*oW)Y9z ~6?N ` 6YH;T V5R6517 ;X5ii |QF!o8z6517 ITPUB个人空间 tMjIx`T $h3/H1w9W6517 ITPUB个人空间 c p6Z:W%E (L V|O'V3w~ {*l6517 LTX~2{)~ A6517 ITPUB个人空间n;j$X~ Kk *o/e(a)vga2q[6517 ITPUB个人空间6x` e-/C?g0HH 3yK wt L V%G6517 (?ie T*o6517 M2YCx])E6517 ITPUB个人空间 _#IaH+{z)t&^ ITPUB个人空间 l$G xfN @#bB X Xb)W]m.A6517 ITPUB个人空间q(ap"FaF4x ]2c0w $I(u/kyy"W7g~"PE6517 0Q;M+S)Vo"D1N&U6517 0b;wRrr9` Q!Y6517 B q+Ts,{@D6517 ITPUB个人空间yD8]sA:} ?G9GR-c CaMc]0P'M6517 ITPUB个人空间�Aaj/Sc/cl (I8Q�T_Z:d5w6517 ITPUB个人空间#WUh}�Ge*j9]7C9d Kf y1ws R0b6517 ITPUB个人空间5R+c@uA3AKp ITPUB个人空间;Tre+N-C*{6[ 9~1f9l,v2A(B]�o.aav6517 ITPUB个人空间Do M#rH#b4?B5e7U M suJ*u a-D6517 hib%p0qO6517 ITPUB个人空间Xpv/Y�E5B:{ ITPUB个人空间H!K8C9l�P!kP}1] ITPUB个人空间i1ok/e:L@l _ ?g h7Xt(E�{ba6517 ITPUB个人空间G+e]%I~K%h ITPUB个人空间4f xr�J z1|BT ITPUB个人空间 O RX/@I7ij+@3X ITPUB个人空间 i8u;A/D3nRy (M?N7U!Cc1j6517 !R/n,UsO Z P6517 ITPUB个人空间(`'~ p)TQ6r@2V t 9?'F�g/x:R,A6517 ITPUB个人空间7w?,j/k,Rk ITPUB个人空间1n#/HhY+_ |mXs}-D6517 P+b_)G-M0Z ox)/ A6517 ITPUB个人空间#dcs{:gSy &T$sBg0qZ7k8S6517 p~mYrm6517 Y2E,/ A&{6517 ITPUB个人空间�@v-i*l�jw -T/(h3uOW*XY6517 ITPUB个人空间P#Jn-u:O ITPUB个人空间[9{ PZGG a[j2[AKc:l$Y`6517 a+}ii-OP8s,~6517 ITPUB个人空间6Q&M3z+HbJ]�h B} ITPUB个人空间[L(y*^ h.wQ0N ITPUB个人空间4b|x&h;Np.a5{ M 4D7f-]!W cF1IWpu%dn6517 ITPUB个人空间-/ E2S�ynt(TDd2E iJr4CT@e{g~_6517 ?/qfpAHl&j6517 7^]k8xdIE2T6517 4~ mrg4T*G4l6517 ITPUB个人空间$w.~p1HF_,H ITPUB个人空间 @N1Y C$W*Tp RJ7Z.][F6jap6517 )f7Xh rf vq6517 ?^peb NJ%{6517 ITPUB个人空间wI3RM eC ITPUB个人空间 Fi[| pi/M~4C #N&qMs+IZ6517 h-R/g8f7T{1cD6517 ITPUB个人空间q(s/D;R$_OP 8yR6rDrTu-yAZ6517 8d [/JX p'd�m6517 ITPUB个人空间 `d#YVQEC "I[nW?6l%Js6517 pqJ-/;l6517 ITPUB个人空间b"Py&o3l tQ$uY"K]0o `6517 ITPUB个人空间pn LTY&n,y E-R+Ly2e$l6517 ITPUB个人空间N,oF8ym0/G/x ITPUB个人空间!X|Sf8rn.j�N'w6OAw ^QC[7{];_4M4S6517 *C3e[v U(zko } @L P6517 ITPUB个人空间y%Pshd7L ITPUB个人空间&aN{k'j X6_,S*u*}-~/3/f;p6517 5{,SpTu6517 ITPUB个人空间n F/@.r$u.tg6k:B ITPUB个人空间*@s+`g,l)nE 'F8y f`sX|'H6517 5T] md~T%M/b)J8g6517 ITPUB个人空间[.Dq/$lc!^#S4m ITPUB个人空间,wD"w1R ?/:`;H &T:x9OsFL*{+{6517 ITPUB个人空间 KH!x9L E!DI _ 6p1V2s'Ki^XF_,O)h6517 ITPUB个人空间1GV"N5h,@7|L8G S}%cD&C6em6517 ITPUB个人空间�N;Fi}?7tqk ITPUB个人空间:j;nr!qn.BrL 0y3EJAzH)j6517 ITPUB个人空间8A*BCed)k p6oY ITPUB个人空间;mC5J.taZ L t:K ITPUB个人空间8a2/v|q 'k fD)P*P L#M-`n6517 ITPUB个人空间My g;tb3a]9g"x 6D&emi%|b6517 C8Y/{1^R4F6@G"V4Pe&f6517 ITPUB个人空间,p(h$us8~"n ITPUB个人空间`&L(v:^ ng+F ITPUB个人空间d2HU0M}6A V? ITPUB个人空间](d @$oKRY:q'dX ITPUB个人空间8[&h uK;H/w�XmJ8Y*k ITPUB个人空间7myu9ah2LOL 1jj{.x:`&gL7z6517 j2UE-}/v/P(~-c4F6517 9s4`Z;RAh9q)F6517 ITPUB个人空间!xt)Cf0Q1@1~,Eu ITPUB个人空间`/Lo[ j`7k"G�U ITPUB个人空间(_6Z_.i:~!]1B*a ITPUB个人空间~;gV7x6Go/~1VL ITPUB个人空间!rOZ*wR~r |%w ITPUB个人空间Wv+U`6Y g"T -G�j-v1|(y'v&O6517 C |`/Zzb9Zy6517 o7? T0t:vM6517 ~.Y$A(wo3@4m^4x6517 ITPUB个人空间:h7H9?*I,jl W ITPUB个人空间G4P7T EOw&` Za7[},q&C"~6517 '?ey'KR4_.kw6517 Uo+MYHT#@+A O"f*D,R6517 ITPUB个人空间b:v#JL P5hA4c*B ITPUB个人空间*K}(f"_?.z ITPUB个人空间G9Y q I.H/]*b ITPUB个人空间O r?@ v�J EcDr�j&Ry6517 W+my.u0N9Uy6517 N.n'cQ9fs b/Ie9X&}6517 ITPUB个人空间ejH&C0fl|Q ITPUB个人空间%^ob2a3a)o RNS ,@�C,i�c8/1Y$/c [6517 ITPUB个人空间wt&g&it:D)mA0P C J#Y:l:?Q6517 ITPUB个人空间s dN�Y4IV`*Aa.I ITPUB个人空间6s Ib2a#X.p r,Z7Ar(P&f x6517 ITPUB个人空间}7{�yf{gpV ITPUB个人空间H yQ;A;M?$n &F8WA4@ }&GJ/d L6517 ,wE9yU0m0x}v6517 ITPUB个人空间/v&tx4u? ITPUB个人空间u iC0U-E9B ([p&N:n6/*U%FX7l6517 KBUPv%s;b v6517 ITPUB个人空间$TH4i)H pR| ITPUB个人空间7Ffh#X!E ITPUB个人空间o8] RI'~)} ITPUB个人空间2dZ1h0C;I/ex:S7Yh -FmnIh g2U^6517 @3u�T0E8DgqC6517 YP:PFc;l6517 ITPUB个人空间8Rlj'g/[w+d1c*?s BI&L[B6517 s&is4F'zf jK+H;h,D6517 ITPUB个人空间&o8Kr5i*O| /jcMu!j;xs6517 ITPUB个人空间v-RO8X0u ITPUB个人空间o8i F&g!v*{rN ITPUB个人空间P/wXnW:/&Zxa p&S5D;X;L j0`t6517 #IX Z(C%L I$HtC6517 ;jQsZs6517 ITPUB个人空间(h"D9j6V,_ ITPUB个人空间/N/b*YE{ %oSQ"B)n(J&G/4x I6517 [o c"A`X6517 ITPUB个人空间I+]cc.q6D [;cum6} ITPUB个人空间4X` `[R 5uT*rS [iR6517 ITPUB个人空间g`2WG e6/!hF3l] !lY8w;[$_3mT*b2o,S6517 ITPUB个人空间+hjC)y@/hpH ITPUB个人空间9f'D^ F4e5s @"P)A_Q 0`^#I*qz6517 j&g5N^9q;r4k2}-A+p6517 l3c;f9f"@ly6517 $Y_#w d/Op3i1nC6517 ITPUB个人空间+A]R^R]R0o 5I0fr/@jY4fx6517 a9V6`9W P9ZL6517 ITPUB个人空间5/3~!y xj1Z ITPUB个人空间Rz&JH�p8c ITPUB个人空间4s.`N;A(p7k@ E2[9B8ljBjgO6517 ITPUB个人空间c#Uk)bR s T7@m Z.IsM6517 t+K)^x Dg&J[F6517 ITPUB个人空间4E$r1kI�i%|:P ITPUB个人空间J8ca$Fa!~2a#n;o ITPUB个人空间`DW g1A6H ITPUB个人空间7[X h6O6},XGj4lc2M ITPUB个人空间+d5p7c[/ ITPUB个人空间6Z~w"bm&bq#Q*D pJ)Y4Z ~1v6/mh6517 ITPUB个人空间 Q$k8?3]3K#JP} %@8s5Q-P,P3~&G5e_6517 ITPUB个人空间:T"O+lL%y)N/Ea h7_T#{ ]5e@6517 WU)Y7Q]6517 ITPUB个人空间Y LG V:S6dJ ITPUB个人空间Q4c+lrh)uXo )}]9G!t5e#pXGOkx&A6517 ITPUB个人空间4g~7V ^%n8z liJ,b-{6517 RBRx4d`/NM)Q6517 ITPUB个人空间xz#OWX-d+`7G *}2I4ny!d-{)na6517 ITPUB个人空间)YSIf-XN)| q Z|F,e6517 ?!hyA*G v[7I;Mq6517 ITPUB个人空间"ctT!{u/c!} ITPUB个人空间2iV.X+v#y)y:VrA 5~;ffZk%H,o @6517 A;z%RY&m;Ll6517 l]a)C Jwq+}E6517 ITPUB个人空间!u4]i2q)T6n�q_~ b:L'XB"`~'v6517 ITPUB个人空间_8u^D3r1?U.F k-n ITPUB个人空间4A.kqZ~W .G'E.KSq5X/r8P3]6517 C#PadOq6517 ITPUB个人空间 OsC)v.] / ITPUB个人空间'X [@@/:{;{l )k8te0P,_,vj(E {6517 ITPUB个人空间#/Nc] v ITPUB个人空间%q8j*oI@,h Et SBW qd@6?g6517 ITPUB个人空间6/C2G2c:DYR ITPUB个人空间//u�g*{^ N FA anL'c7L|I/T6517 "}DLt]ty6517 0`_J0H Th#R6517 ITPUB个人空间 |/W/eC HR ~~ ITPUB个人空间/q0M"X!O;O9`8X'N0L@QK RkIt /3B|;N%y6517 T$i%N5A+FP @V~6517 ITPUB个人空间TS2xjU jA"vilU2?6517 ITPUB个人空间"Z#@ r [!~Tk~/r ITPUB个人空间#WMWmS2~/~ [(MoJ9y6517 OR+rf)USM+g1Z6517 b_z,H[:`t'S6517 ITPUB个人空间C{vC%]k8O+a ITPUB个人空间1PsSD/Co1Ub1^ ITPUB个人空间*KlG3S.}E/sX ITPUB个人空间y-`b~bn;j6]zm +TkgS |'J!z7t {T6517 b7/ gCUgW3][O6517 1k zfcjlDLT6517 5x B(?A'q |.b7O9s�FG6517 ^^`]S3sf6uh6w?6517 G f2a;ye4u@"a6517 jU0il(r,m0V%j(K+G5?-G6517 4dp nsS2uZ.F([6517 Q|�L9h]&i8K6517 ITPUB个人空间*c;`j^6o9H ITPUB个人空间)D$DwEU*I ITPUB个人空间?c I cS4JM1l&V ITPUB个人空间H}G+sc0nu ITPUB个人空间2I*r xm1g&N@*u5yO;v/y ,dw/PadI*Mt6517 @{l+q"aTq6517 ITPUB个人空间5D,~4N;w)}P'e_ o 2oX1F^Dh}d3Q6517 ITPUB个人空间xSk$WtG 3u{gD#K2R'[NlVN |6517 ITPUB个人空间 }E,YN Q [9/4f ;|?eN+w$S*JtOV,n"v6517 ITPUB个人空间#G9]S*f;A@/.@�U ITPUB个人空间rtKi�X ITPUB个人空间-[7K9v S9@8v~ )s E6](P8q6bzN1~;g6517 -g&X:]sZ}?]B6517 4}0i1/0Y+WG5x6517 U'mk`7]%dp D6517 ITPUB个人空间F]Sb;A0mEp tW2N{-a}o|l d6z6517 inmgv6517 ITPUB个人空间7T7K!GBp+dF�q'Lm.Z ^ ITPUB个人空间J q9['t3iP�~I sUW.PC(?Z T-]e6517 ITPUB个人空间t,J v,cY4C!e*T8P ]:rKIM i5h6517 ITPUB个人空间0gi-S0l8F_ a{i0[�o/ ?j6517 ITPUB个人空间4Hci~cN ITPUB个人空间a/qM L8k5iC ITPUB个人空间z#o#OA/@ O /r0Z$O,Aa U#ED6517 -rHV"HiVX6517 ITPUB个人空间8eR#?fo$i%a3{ T2~%ek#sK)N6517 X7_9I#M@Vw6517 )m.w~F-x,` _k ?)M6517 aX3[q8lz4Z f�u6517 ITPUB个人空间.s kO5E2` |kp)wa@FR*jic6517 5|7K|;Dk3d6517 ITPUB个人空间kx*su.c&Z v? ITPUB个人空间pm[lD Jt,h9e*[ j!f ITPUB个人空间F l3@~~ ITPUB个人空间|8t ^J? D [a*p/L.g$_N u6517 ITPUB个人空间j] wS&[:yke(S#x0y ITPUB个人空间2y&~9pZ)/aB Z RPhi9A|6517 }o zp�L+xO6517 MS+W*u8s)z8gp.P6517 D6k$? V2} B6517 (bUf.G$KD(S6517 ITPUB个人空间N'~VT$jwXv %d*Y*Fe6_6517 1ZG xbT EOb6517 ^KA Y1g6517 ITPUB个人空间yu([#d%q6F7^!eL�G8~}r ITPUB个人空间b~�p6C-N-xB2Z1@)V I$W ITPUB个人空间/[aB%n1I(]5a ITPUB个人空间QKRc]!Xw ITPUB个人空间3da3y+tm!owi ITPUB个人空间0f:LFk4oV [-R Z9D&I2tl0[B#cMJ*Ek6517 ITPUB个人空间&N,]hZ9N O rXk ITPUB个人空间 W|n%t0H.vB ITPUB个人空间0V)m C)R9Yc7C�?`@ OW g?o u,X"A:p [ V6517 ITPUB个人空间s{~CQd/ .~/y ui{6X]6517 ITPUB个人空间"p+J5^o(zX0p Q`k )Z7b)W8x:x4XTr0Jbe6517 ITPUB个人空间}e bE#W(g1[ yf%fq ITPUB个人空间s6[oMLw$n5]%I P.jm}T!sn^6517 ITPUB个人空间s4YW(p.n G�Q*`3~ s6AY6517 l6g]*R |L@6517 X o Y;V#X9J&h6517 KAPwj.v!?!KE6517 ITPUB个人空间P1kbm Rc$J1k$o ITPUB个人空间Ha Gi^0F ITPUB个人空间0z K+`/w dT ?j!KwES?_w6517 ITPUB个人空间 vw8q1@THNX ITPUB个人空间5c ~o%aE'|+@ U'T0?L B3h ]hM%F.o4v6517 ITPUB个人空间m(lD4H Y5{/2O,BMf ITPUB个人空间 B(KqxI ly 'T)C%~ZC;]6517 K&d2|h6O6517 ITPUB个人空间KNk"M"g ITPUB个人空间-LuH6HDLp Q ITPUB个人空间+Q9N*M]?MY8Oakt^ ITPUB个人空间;F2b2e @s+dr h.h C7ML*}"L(He;Z~"f6517 1h.g4M"BKv6517 ITPUB个人空间0I8JXc.CB$rt+I E1X^5t4J%uKo6517 L8P4Qv.r�@�f(Oto6517 ITPUB个人空间z6|!_t6K/[q ITPUB个人空间-bd?!H;Dao$t!L ITPUB个人空间,w1oTZ'h"Q u X5/9D@q6517 %o j:J'i6m6517 ITPUB个人空间3t V9i;ku ITPUB个人空间SxX f3ld %T9k]XRS0_6K[6517 G C H/R ~5s,R6517 ITPUB个人空间%`3i}W2Rx)p(U ITPUB个人空间gO V!J+J/;Q#G ITPUB个人空间}-|jupF.|u�C8u1O8w ITPUB个人空间[j%Z`+r.B/ Wm !z5?C,I1nZ6517 ITPUB个人空间 [O-ep5N+U K ITPUB个人空间AP9]9C/R3s8_ @+w0m6xF:w6517 Xx3{9IA0w6yg�b2o6517 $K_Fe f'F%YWD$~*QL.e6517 Wf4UC,~+K-w6517 ITPUB个人空间3Ag;ED?w']0c(oX ITPUB个人空间9m Rv5WM:G;Q9U:c ;rZTf&]$V:N(]R6517 e;O;h~J W'qN[6517 c1z3?4]J*y6517 w/`-qcR1T6W&tT6517 ITPUB个人空间"Ge eL `i3X#s ITPUB个人空间XbyR8Cf D ITPUB个人空间VB8|2Q0Mg7]6y UA4]*V+|:Q7E)/7m6517 -k)s:BDG6517 ITPUB个人空间+t7UK/OK o*x;h ITPUB个人空间,tf/p h)g*A3~v/ ,O+atj[(k6517 ITPUB个人空间 yj(vz#~0_|0{(r:]r ITPUB个人空间%AA$wC/yqu7J ITPUB个人空间? ['w7`)MzQ ITPUB个人空间4Wv I&fsd ITPUB个人空间 n0GX5Rp'd S;gI1W qwgv;]6517 ITPUB个人空间9pD-G a4_E(D{%s ITPUB个人空间1cByS*@4?x 4W O P]%E$s.~xQ*T F n6517 ITPUB个人空间-_1t xWs'u+Ne 8Q:L%c-lUC/d6517 ITPUB个人空间N;M/x]? x$X/oo_4F{v6517 ITPUB个人空间1o6f9mE6n *Sd-[nh6517 2NDjV]/t6517 A(z,Mm1re1Z7h]6517 1d.AA8YR Ikr6517 ITPUB个人空间0Z~k/n4rd"`` 'l*Jc*nO6517 ITPUB个人空间gc'e*yY*jN ITPUB个人空间}4L0H8wu;S5d,G SR? ;a;g)]CrQf,ZN(|'bL6517 5xPTi}D9C J)b6517 ITPUB个人空间ir*o0Y!mr2[i v(f&M[7x(I i6517 ITPUB个人空间f6x�^ ES"c1k6x4s C,z ITPUB个人空间1^{c/rmIz y8n4C"j2i4Q tUc6517 ]+|?{ z&}(g7s�C6517 ~l-s ?F {d9o6517 ITPUB个人空间[*azw%f ITPUB个人空间$_9E)y"pI*e G1[i3O'QJ6517 NkV$o~2`//x;k|6517 6n{tjt:{#qv6517 9h$W"BwX"F6R6517 ITPUB个人空间9}8y/Gf+N&|p5` ITPUB个人空间3D/P2n}6sv"@l)[)}h 2/3~$v%C5i-h-l$p6517 uM0| s+Kpu)/H9w$O6517 ITPUB个人空间#Er3`QXGM8i n1K ;V!t"pA;[jPf+Vv!X3W6517 9?!^'g v{-iF:`6517 :jDB+e-y{*b@dM6517 ITPUB个人空间}/�m#_om_ / ITPUB个人空间*BU)BM3U.e5i�^;G�f ITPUB个人空间1V7?H*YrX8DY ITPUB个人空间@a2D&W&I:W-F%SM ITPUB个人空间R'~�t*T eer G3]/i f}9V6517 ITPUB个人空间y.` d0`Z0m :_nHnz3z |6517 J+L5] X] X%j6517 2Q| v$w/J;}+m6K�//6517 2ZM8y9@@FG]k6517 ITPUB个人空间]3mC/2CL} NePL-P9k?F6517 f:F6D�V.]`I:dQ6517 /@?q2r5V!I7qV6517 jj4i+U!j#B6517 ITPUB个人空间1b#Z'H1K'e;l1x?.v ITPUB个人空间ZL {7}B8L ~y/V*R d6517 ITPUB个人空间d8eb'Y+Z}#}l *H rk#]AM6517 ITPUB个人空间JKg:md-Z s ITPUB个人空间;v,s U&Bfn/^ Y-BN�uq7LBEB6517 ITPUB个人空间8` N]y:P ?+C uS'cf�rU3~6517 q BKe!T5a+E6517 ;j2^.g$V$X }6517 ITPUB个人空间 |5Eh|p6G 8TTf9U+B }2?G v6517 @Fu l�IR]+J6517 3@HvS x5ot1W6517 !]i aD9QhC6s6517 ITPUB个人空间 F#f$_zw"Cg /f!H ~ RLD6517 ITPUB个人空间4Ku�ZSx/gj ITPUB个人空间:o%dJ2g}k#i/8K d? SI:TOIaB6517 ITPUB个人空间G:L0ND}m2[ ITPUB个人空间7j n/Y0B,Y/4[+Dt p/AqN0Q7x0Sz6517 x.k9K;be$Sl v)w6517 ITPUB个人空间ev|7t}S4? A`6L0f0VB6517 ITPUB个人空间 A-n;`!i&N L v ITPUB个人空间w { yao-Q xid2Q+qW[]6517 K [G6[P6t8Hq|6517 -K"mB+E/6517 ITPUB个人空间:j4]6fX /Rv-yT,@P 5i%dp,a'KNVJ'B8X6517 ;R Ku&ad/X9?2C;B6517 boX%Q-e"vfr6517 U+_?](U hW6517 %Z^%b*C/6o Wx]P3h2R6517 ITPUB个人空间B3/Wl)SjJk#R 4X]+Jmc/s1n*{6517 )pP!{k-NV,p1x6517 4U[``'i8Vq$|*k6517 fz B)S:]q*d3M6517 U1L~%YD0a%V,b_ H6517 ITPUB个人空间[f q([gRU

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python与大数据分析

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值