需求:在同一个环境下新建Standby RAC库,即和Primary RAC在相同的磁盘组。

说明:生产环境一般不建议这样配置DG,因为存储层面是相同磁盘组,灾备的实际意义不大。我这里是用作读写分离。

基本信息:

db_name: jyzhao

Primary RAC db_unique_name:jyzhao

Standby RAC db_unique_name:jyzhaodg

Standby RAC instance_name: jyzhaodg1, jyzhaodg2

版本:GI 11.2.0.4 + DB 11.2.0.4

第一章 准备工作

1.1 ASM存储

1.2 配置tnsnames.ora

1.3 密码文件

第二章 源数据库备份

第三章 参数文件

3.1 修改主库参数文件

3.2 修改Standby RAC 参数

3.3 在ASM中创建standby的spfile

3.4 Standby RAC启动到nomount

第五章 rman恢复数据库

第六章 备库开启日志应用

第七章 创建standby log

第八章 检查资源状态

第一章 准备工作

1.1 ASM存储

确认RAC Standby存储是在和RAC Primary相同的ASM磁盘组内(PS:灾备效果不明显),创建RAC Standby存储目录(根据db_unique_name)

mkdir +DATA/JYZHAODG

mkdir +FRA/JYZHAODG

1.2 配置tnsnames.ora

cd $Oracle_HOME/network/admin/

cat tnsnames.ora

添加主库备库的连接信息(所有节点):

JYZHAO =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = oradb-scan)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = jyzhao)

)

)

jyzhaodg =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = oradb-scan)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = jyzhaodg)

)

)

1.3 密码文件

节点1:

export ORACLE_SID=jyzhaodg1

密码文件;

cd $ORACLE_HOME/dbs

orapwd file=orapwjyzhaodg1 password=oracle entries=5

或者直接copy之前的密码文件,然后mv重命名:

cp orapwjyzhao1 orapwjyzhaodg1

节点2:

export ORACLE_SID=jyzhaodg2

密码文件;

cd $ORACLE_HOME/dbs

orapwd file=orapwjyzhaodg2 password=oracle entries=5

或者直接copy之前的密码文件,然后mv重命名:

cp orapwjyzhao2 orapwjyzhaodg2

最后测试相互连接可用

sqlplus sys/oracle@jyzhao as sysdba

sqlplus sys/oracle@jyzhaodg as sysdba

第二章 源数据库备份

vi backup.sh

备份脚本如下:

rman target / <

run {

allocate channel c1 device type disk;

allocate channel c2 device type disk;

backup as compressed backupset database filesperset 1 format '/u01/orabak/salehrdb_%d_%T_%s.bak';

backup current controlfile format '/u01/orabak/control.bak';

release channel c1;

release channel c2;

}

EOF

后台执行备份任务:

nohup sh backup.sh &

注意:如果使用backup as copy database format方案,就不用再备份到磁盘后再恢复了,可以节省时间。

backup as copy 方案备份脚本 backupcp.sh内容如下:

rman target / <

run {

allocate channel c1 device type disk;

allocate channel c2 device type disk;

backup as copy database format '+DATA/JYZHAODG/DATAFILE/%u.dbf';

release channel c1;

release channel c2;

}

EOF

注意:这种方式,路径包含的目录需手动创建。

mkdir +DATA/JYZHAODG/DATAFILE

第三章 参数文件

3.1 修改主库参数文件

确认当前环境ORACLE_SID:

echo $ORACLE_SID

export ORACLE_SID=jyzhao1

根据spfile文件创建pfile:

create pfile='/tmp/pfile.ora' from spfile;

Primary RAC 添加参数

--为不停止primary RAC,所以尽可能动态修改参数:

show parameter log_archive_config

show parameter db_file_name_convert

show parameter log_file_name_convert

show parameter fal_client

show parameter fal_server

show parameter log_archive_dest_3

alter system set log_archive_config='dg_config=(jyzhao,jyzhaodg)';

alter system set db_file_name_convert='+DATA/jyzhaodg','+DATA/jyzhao' scope=spfile;

alter system set log_file_name_convert='+DATA/jyzhaodg','+DATA/jyzhao' scope=spfile;

alter system set fal_client='jyzhao';

alter system set fal_server='jyzhaodg';

alter system set log_archive_dest_3='service=jyzhaodg valid_for=(online_logfiles,primary_role) db_unique_name=jyzhaodg';

--暂时defer传输链路,防止此时主库告警生成相关错误

SQL> alter system set log_archive_dest_state_3=defer;

3.2 修改Standby RAC 参数

根据主库之前导出的参数文件修改备库的参数文件:

cp /tmp/pfile.ora /tmp/pfile_std.ora

vi /tmp/pfile_std.ora

*._high_priority_processes='LMS*'

*.audit_file_dest='/u01/app/oracle/admin/jyzhaodg/adump'

*.audit_trail='db'

*.cluster_database=true

*.compatible='11.2.0.4.0'

*.control_files='+DATA/jyzhaodg/controlfile/current.260.931878631','+FRA/jyzhaodg/controlfile/current.256.931878631'

*.db_block_size=8192

*.db_create_file_dest='+DATA'

*.db_domain=''

*.db_name='jyzhao'

*.db_recovery_file_dest='+FRA'

*.db_recovery_file_dest_size=4621074432

*.diagnostic_dest='/u01/app/oracle'

*.dispatchers='(PROTOCOL=TCP) (SERVICE=jyzhaoXDB)'

jyzhaodg2.instance_number=2

jyzhaodg1.instance_number=1

*.log_archive_format='%t_%s_%r.dbf'

*.memory_target=313286272

*.open_cursors=300

*.processes=150

*.remote_listener='oradb-scan:1521'

*.remote_login_passwordfile='exclusive'

jyzhaodg2.thread=2

jyzhaodg1.thread=1

jyzhaodg2.undo_tablespace='UNDOTBS2'

jyzhaodg1.undo_tablespace='UNDOTBS1'

#add

db_unique_name='jyzhaodg'

log_archive_config='dg_config=(jyzhao,jyzhaodg)'#db_unique_name

db_file_name_convert='+DATA/jyzhao','+DATA/jyzhaodg'

log_file_name_convert='+DATA/jyzhao','+DATA/jyzhaodg'

standby_file_management=auto

fal_client='jyzhaodg'#tnsnames.ora

fal_server='jyzhao'#salehrdb

log_archive_dest_3='service=jyzhao valid_for=(online_logfiles,primary_role) db_unique_name=jyzhao'

主要是注意后面#add之后的内容。

3.3 在ASM中创建standby的spfile

在ASM中创建standby的spfile,并确定各节点的参数文件内容指向磁盘中的spfile。

节点1:

echo $ORACLE_SID

export ORACLE_SID=jyzhaodg1

create spfile='+DATA/jyzhaodg/spfilejyzhaodg.ora' from pfile='/tmp/pfile_std.ora';

--

cat initjyzhaodg1.ora

SPFILE='+DATA/jyzhaodg/spfilejyzhaodg.ora'

节点2:

echo $ORACLE_SID

export ORACLE_SID=jyzhaodg2

cat initjyzhaodg2.ora

SPFILE='+DATA/jyzhaodg/spfilejyzhaodg.ora'

创建adump目录(所有节点)

mkdir -p /u01/app/oracle/admin/jyzhaodg/adump

3.4 Standby RAC启动到nomount

节点1:

echo $ORACLE_SID

export ORACLE_SID=jyzhaodg1

startup nomount

节点2:

echo $ORACLE_SID

export ORACLE_SID=jyzhaodg2

startup nomount

第四章 rman恢复控制文件

在Primary RAC上创建备库使用的控制文件:

echo $ORACLE_SID

export ORACLE_SID=jyzhao1

SQL> alter database create standby controlfile as '/tmp/control01.ctlbak';

在Standby RAC的节点1上恢复控制文件并启动到mount:

echo $ORACLE_SID

export ORACLE_SID=jyzhaodg1

restore controlfile from '/tmp/control01.ctlbak';

alter database mount;

crosscheck backupset;

--如果是之前copy到磁盘组的备份没加载到控制文件中,可以手动catalog

catalog start with '+data/jyzhaodg/DATAFILE';

--同样,如果是之前的备份集没加载到控制文件中,一样手动catalog

catalog start with '/u01/orabak/';

查看此时standby记录的各文件路径是否符合预期:

SQL> select name from v$datafile;

NAME

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

+DATA/jyzhaodg/datafile/system.256.931878537

+DATA/jyzhaodg/datafile/sysaux.257.931878537

+DATA/jyzhaodg/datafile/undotbs1.258.931878537

+DATA/jyzhaodg/datafile/users.259.931878537

+DATA/jyzhaodg/datafile/undotbs2.264.931878827

+DATA/jyzhaodg/datafile/dbs_d_jingyu.268.937515173

6 rows selected.

SQL> select member from v$logfile;

MEMBER

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

+DATA/jyzhaodg/onlinelog/group_2.262.931878637

+FRA/jyzhao/onlinelog/group_2.258.931878639

+DATA/jyzhaodg/onlinelog/group_1.261.931878635

+FRA/jyzhao/onlinelog/group_1.257.931878637

+DATA/jyzhaodg/onlinelog/group_3.265.931879021

+FRA/jyzhao/onlinelog/group_3.259.931879023

+DATA/jyzhaodg/onlinelog/group_4.266.931879027

+FRA/jyzhao/onlinelog/group_4.260.931879029

8 rows selected.

SQL> select name from v$tempfile;

NAME

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

+DATA/jyzhaodg/tempfile/temp.263.931878661

SQL> select name from v$controlfile;

NAME

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

+DATA/jyzhaodg/controlfile/current.288.937645851

+FRA/jyzhaodg/controlfile/current.275.937645851

发现日志文件有不符合预期的路径,进行修正:

SQL> show parameter convert

NAME TYPE VALUE

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

db_file_name_convert string +DATA/jyzhao, +DATA/jyzhaodg

log_file_name_convert string +DATA/jyzhao, +DATA/jyzhaodg

SQL> alter system set log_file_name_convert='+DATA/jyzhao','+DATA/jyzhaodg','+FRA/jyzhao','+FRA/jyzhaodg' scope=spfile;

SQL> shutdown immediate;

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

SQL> startup mount;

ORACLE instance started.

Total System Global Area 313159680 bytes

Fixed Size 2252824 bytes

Variable Size 222302184 bytes

Database Buffers 83886080 bytes

Redo Buffers 4718592 bytes

Database mounted.

SQL> select member from v$logfile;

MEMBER

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

+DATA/jyzhaodg/onlinelog/group_2.262.931878637

+FRA/jyzhaodg/onlinelog/group_2.258.931878639

+DATA/jyzhaodg/onlinelog/group_1.261.931878635

+FRA/jyzhaodg/onlinelog/group_1.257.931878637

+DATA/jyzhaodg/onlinelog/group_3.265.931879021

+FRA/jyzhaodg/onlinelog/group_3.259.931879023

+DATA/jyzhaodg/onlinelog/group_4.266.931879027

+FRA/jyzhaodg/onlinelog/group_4.260.931879029

8 rows selected.

第五章 rman恢复数据库

Standby RAC节点1:

确定ORACLE_SID变量:

echo $ORACLE_SID

export ORACLE_SID=jyzhaodg1

a. 如果是使用从备份集恢复的方式

vi restore.sh

rman target / < db_restore.log

run {

allocate channel d1 type disk;

allocate channel d2 type disk;

restore database;

release channel d1;

release channel d2;

}

exit;

EOF!

nohup sh restore.sh &

b. 如果是直接使用copy到磁盘组的

直接switch database to copy即可。

RMAN> switch database to copy;

using target database control file instead of recovery catalog

datafile 1 switched to datafile copy "+DATA/jyzhaodg/datafile/0eru6m4s.dbf"

datafile 2 switched to datafile copy "+DATA/jyzhaodg/datafile/0fru6m4s.dbf"

datafile 3 switched to datafile copy "+DATA/jyzhaodg/datafile/0hru6meo.dbf"

datafile 4 switched to datafile copy "+DATA/jyzhaodg/datafile/0iru6mg5.dbf"

datafile 5 switched to datafile copy "+DATA/jyzhaodg/datafile/0jru6mg6.dbf"

datafile 6 switched to datafile copy "+DATA/jyzhaodg/datafile/0gru6men.dbf"

第六章 备库开启日志应用

确认Primary RAC的日志传输链路打开:

echo $ORACLE_SID

export ORACLE_SID=jyzhao1

SQL> alter system set log_archive_dest_state_3=enable;

Standby RAC节点1在mount状态下开启日志应用:

echo $ORACLE_SID

export ORACLE_SID=jyzhaodg1

SQL> alter database recover managed standby database disconnect from session;

第七章 创建standby log

停止备库应用:

SQL> alter database recover managed standby database cancel;

查看日志信息:

SQL> select * from v$Log;

GROUP# THREAD# SEQUENCE# BYTES BLOCKSIZE MEMBERS ARC STATUS FIRST_CHANGE# FIRST_TIME NEXT_CHANGE# NEXT_TIME

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

1 1 69 52428800 512 2 YES CURRENT 2450934 03-MAR-17 2.8147E+14

2 1 0 52428800 512 2 YES UNUSED 2440706 03-MAR-17 2450934 03-MAR-17

3 2 0 52428800 512 2 YES UNUSED 2440817 03-MAR-17 2450939 03-MAR-17

4 2 36 52428800 512 2 YES CURRENT 2450939 03-MAR-17 2.8147E+14

SQL> col member for a70

SQL> select group#, type, member from v$logfile;

GROUP# TYPE MEMBER

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

2 ONLINE +DATA/jyzhaodg/onlinelog/group_2.298.937648563

2 ONLINE +FRA/jyzhaodg/onlinelog/group_2.278.937648565

1 ONLINE +DATA/jyzhaodg/onlinelog/group_1.297.937648559

1 ONLINE +FRA/jyzhaodg/onlinelog/group_1.279.937648561

3 ONLINE +DATA/jyzhaodg/onlinelog/group_3.299.937648567

3 ONLINE +FRA/jyzhaodg/onlinelog/group_3.389.937648569

4 ONLINE +DATA/jyzhaodg/onlinelog/group_4.300.937648573

4 ONLINE +FRA/jyzhaodg/onlinelog/group_4.390.937648573

8 rows selected.

根据检查结果,合理为数据库添加standby logfile:

alter database add standby logfile thread 1 group 11 ('+DATA','+FRA') size 52428800;

alter database add standby logfile thread 1 group 12 ('+DATA','+FRA') size 52428800;

alter database add standby logfile thread 1 group 13 ('+DATA','+FRA') size 52428800;

alter database add standby logfile thread 2 group 21 ('+DATA','+FRA') size 52428800;

alter database add standby logfile thread 2 group 22 ('+DATA','+FRA') size 52428800;

alter database add standby logfile thread 2 group 23 ('+DATA','+FRA') size 52428800;

添加完再次查看:

SQL> select group#, type, member from v$logfile;

GROUP# TYPE MEMBER

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

2 ONLINE +DATA/jyzhaodg/onlinelog/group_2.298.937648563

2 ONLINE +FRA/jyzhaodg/onlinelog/group_2.278.937648565

1 ONLINE +DATA/jyzhaodg/onlinelog/group_1.297.937648559

1 ONLINE +FRA/jyzhaodg/onlinelog/group_1.279.937648561

3 ONLINE +DATA/jyzhaodg/onlinelog/group_3.299.937648567

3 ONLINE +FRA/jyzhaodg/onlinelog/group_3.389.937648569

4 ONLINE +DATA/jyzhaodg/onlinelog/group_4.300.937648573

4 ONLINE +FRA/jyzhaodg/onlinelog/group_4.390.937648573

11 STANDBY +DATA/jyzhaodg/onlinelog/group_11.301.937648773

11 STANDBY +FRA/jyzhaodg/onlinelog/group_11.391.937648775

12 STANDBY +DATA/jyzhaodg/onlinelog/group_12.302.937648777

GROUP# TYPE MEMBER

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

12 STANDBY +FRA/jyzhaodg/onlinelog/group_12.392.937648779

13 STANDBY +DATA/jyzhaodg/onlinelog/group_13.303.937648779

13 STANDBY +FRA/jyzhaodg/onlinelog/group_13.393.937648781

21 STANDBY +DATA/jyzhaodg/onlinelog/group_21.304.937648783

21 STANDBY +FRA/jyzhaodg/onlinelog/group_21.394.937648783

22 STANDBY +DATA/jyzhaodg/onlinelog/group_22.305.937648785

22 STANDBY +FRA/jyzhaodg/onlinelog/group_22.395.937648787

23 STANDBY +DATA/jyzhaodg/onlinelog/group_23.306.937648787

23 STANDBY +FRA/jyzhaodg/onlinelog/group_23.396.937648789

20 rows selected.

继续开启备库应用,确定恢复完成日志没报错信息后取消日志应用,打开数据库,开启ADG:

alter database recover managed standby database disconnect from session;

alter database recover managed standby database cancel;

alter database open;

alter database recover managed standby database using current logfile disconnect from session;

查看DG同步状态:

SQL> SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;

OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS FOR DATAGUAR GUARD_S

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

READ ONLY WITH APPLY PHYSICAL STANDBY NOT ALLOWED NO DISABLED NONE

SQL> set lines 1000

SQL> select * from v$dataguard_stats;

NAME VALUE UNIT TIME_COMPUTED DATUM_TIME

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

transport lag +00 00:09:37 day(2) to second(0) interval 03/03/2017 10:03:20 03/03/2017 10:03:13

apply lag +00 00:09:38 day(2) to second(0) interval 03/03/2017 10:03:20 03/03/2017 10:03:13

apply finish time day(2) to second(3) interval 03/03/2017 10:03:20

estimated startup time 40 second 03/03/2017 10:03:20

--可以在Primary RAC上归档当前日志模拟业务切换归档:

SQL> SELECT OPEN_MODE, DATABASE_ROLE, SWITCHOVER_STATUS, FORCE_LOGGING, DATAGUARD_BROKER, GUARD_STATUS FROM V$DATABASE;

OPEN_MODE DATABASE_ROLE SWITCHOVER_STATUS FOR DATAGUAR GUARD_S

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

READ WRITE PRIMARY TO STANDBY NO DISABLED NONE

SQL> alter system archive log current;

System altered.

--再次在Standby RAC上查看DG同步状态:

SQL> r

1* select * from v$dataguard_stats

NAME VALUE UNIT TIME_COMPUTED DATUM_TIME

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

transport lag +00 00:00:00 day(2) to second(0) interval 03/03/2017 10:04:45 03/03/2017 10:04:44

apply lag +00 00:00:00 day(2) to second(0) interval 03/03/2017 10:04:45 03/03/2017 10:04:44

apply finish time day(2) to second(3) interval 03/03/2017 10:04:45

estimated startup time 40 second 03/03/2017 10:04:45

至此,已完成RAC Standby库在同环境下的创建。

第八章 检查资源状态

我们可以将RAC Standby也加入到crs资源中:

[oracle@oradb23 ~]$ srvctl add database -d jyzhaodg -o $ORACLE_HOME -i jyzhaodg1 -n jyzhao

[oracle@oradb23 ~]$ srvctl add instance -d jyzhaodg -i jyzhaodg1 -n oradb23

[oracle@oradb23 ~]$ srvctl add instance -d jyzhaodg -i jyzhaodg2 -n oradb24

--启动数据库

[oracle@oradb23 ~]$ srvctl start database -d salehrdg

--查看资源状态:

[grid@oradb23 ~]$ crsctl stat res -t

总结:同环境下搭建Standby RAC,最重要的注意事项就是一定要细心,操作前确保自己操作的是正确的ORACLE_SID,备库的路径也要反复确认无误再操作。

oracle standby rac,同一环境下新建Standby RAC库相关推荐

  1. oracle rac 主备 轮训,RAC+DATAGUARD环境下主备切换

    RAC+DATAGUARD环境下主备切换 环境介绍 该文档的操作步骤适用于Primary DB为RAC,Standby DB为single instance的 环境,在执行操作前要确保主库的物理备份完 ...

  2. windows环境下新建.txt文件,使其默认以UTF-8编码

    问题的引出: windows环境下新建.txt文件,默认以ANSI格式编码.这种格式编码的文件,放到ubuntu上很可能会乱码. 于是我就想,如何设置windows,才能使新建的.txt文件默认以UT ...

  3. python环境下paillier同态密码库踩坑记录

    python环境下paillier同态密码库环境搭建 前言 1. Paiilier库和Python版本的选择(非常重要) 2. 安装gmpy2 3. 安装PHE 4.安装NumPy 5. 测试 前言 ...

  4. 多种虚拟机环境下安装Oracle11g RAC

    1.安全环境与网络规划 1.1.安装环境 RAC节点操作系统:Linux 6.4 x8664 Cluster software:Oracle Grid Infrastructure 11gr2(11. ...

  5. 如何在win10+VS2017环境下新建一个简单的WDF示例程序

    上一课我们在win10系统+VS2017开发环境下搭建了WDK驱动程序开发环境的搭建,详见我的博客[如何在win10+VS2017环境下安装USB驱动开发套件WDK],今天我们来尝试建立一个最简单的K ...

  6. Linux环境下的LD_PRELOAD:库预加载

    LD_PRELOAD详解 RToax 2020年9月 1. LD_PRELOAD的作用 系统在运行过程中,会首先加载该环境变量指定的函数库(在libc.so之前加载),如果函数库内包含了程序中执行的函 ...

  7. linux安装中文字体 yum,CentOS 7.6环境下安装中文字体库

    这样的对象依赖于本地的字段.新装的linux没有安装字段库,和相应的字体. 1.fc-list查看字体库 2.yum -y install fontconfig安装 3.安装好后/usr/share目 ...

  8. 在windows环境下配置gitlab本地代码库

    题外话:最近在从事一个NLP算法课题.因为我负责的模块偏重弄理论,更倾向于做为团队竞争力的技术储备,故而与其他模块的交流并不多.一个人做久了,发现欠下的技术债越来越多,要是不好好整理代码,之后的窟窿可 ...

  9. android源码环境下编译fourthling.cling库的依赖问题

    记录下,编译fourthline.cling静态库的依赖问题. 1,因为需要在android的源码环境下调试依赖cling的投屏,需要将fourthline.cling编译为静态库. 首先预制依赖的. ...

最新文章

  1. python装饰器-python装饰器简介---这一篇也许就够了(推荐)
  2. python课程与c+课程有什么不同-大一选编程课是选Python还是c?
  3. php离开界面监听,js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)...
  4. python飞机大战3关BOSS
  5. 南昌网络赛E Interesting Series
  6. 你说,辽宁输在哪了?
  7. CanFestival应用
  8. leetcode实践:通过链表存储两数之和
  9. Spring Boot 2.x 多数据源配置之 JPA 篇
  10. 苹果内容拦截器在哪_苹果全家桶,真的有别人说的那么香吗?
  11. elementUI + vue实现 Excel筛选功能
  12. qq企业邮箱登录服务器,腾讯邮箱登录入口(腾讯企业邮箱免费用户申请)
  13. 简要介绍各种键盘布局
  14. MYSQL数据库版本更新
  15. 海信电视买哪个型号好 2023海信电视系列机型选购推荐
  16. 北航计算机2018年保研推免经历
  17. 中投民生:股市实战小技巧,股民必看
  18. 线上flink任务重启报错(Hadoop问题)java.lang.NumberFormatException: For input string: “30s“
  19. 双十一来了——策略模式Strategy
  20. 未来十年万亿美元的云“风口”,亚马逊云科技再次加速“起飞”

热门文章

  1. 15款android设备上的代码编辑器,超级方便!
  2. js调用本地摄像头拍照截图,提交后台
  3. C++程序设计案例实训教程第3章
  4. react render相关 【类组件、函数组件 】
  5. 进入BeOS的花花世界 系列三
  6. 解决VS编译中文报错 error C2001:常量中有换行符
  7. 将大写字母转化为小写字母
  8. 问题 E: 1.10 旅行时间  根据火车的出发时间和到达时间,编写程序计算整个旅途所用的时间。
  9. datagridview 获取选中行号 数据,判断是不是选中了一行
  10. 【测试与自动化】介绍-框架-Jest-覆盖率-异步代码-e2e-Vue测试