环境参数:Linux:Centos6.5 Grid和Oracle:11.2.0.4
一、环境配置
1.配置Node1和Node2两个节点之间的网卡
Node1:

  1. [root@rac1 network-scripts]# cat ifcfg-eth0
  2. DEVICE=eth0
  3. HWADDR=08:00:27:E6:6A:DF
  4. TYPE=Ethernet
  5. UUID=543aef46-94aa-442f-9259-8584588c5e66
  6. ONBOOT=yes
  7. NM_CONTROLLED=yes
  8. BOOTPROTO=none
  9. IPADDR=192.168.8.221
  10. NETMASK=255.255.255.0
  11. GATEWAY=192.168.8.1
  12. DNS1=221.228.255.1
  13. [root@rac1 network-scripts]# cat ifcfg-eth1
  14. DEVICE=eth1
  15. HWADDR=08:00:27:72:5A:8F
  16. TYPE=Ethernet
  17. ONBOOT=yes
  18. NM_CONTROLLED=yes
  19. BOOTPROTO=none
  20. IPADDR=172.168.1.18

Node2:

  1. [root@rac2 network-scripts]# cat ifcfg-eth0
  2. DEVICE=eth0
  3. HWADDR=08:00:27:1B:D9:5A
  4. TYPE=Ethernet
  5. UUID=543aef46-94aa-442f-9259-8584588c5e66
  6. ONBOOT=yes
  7. NM_CONTROLLED=yes
  8. BOOTPROTO=none
  9. IPADDR=192.168.8.223
  10. NETMASK=255.255.255.0
  11. GATEWAY=192.168.8.1
  12. DNS1=221.228.255.1
  13. [root@rac2 network-scripts]# cat ifcfg-eth1
  14. DEVICE=eth1
  15. HWADDR=08:00:27:39:5F:8C
  16. TYPE=Ethernet
  17. ONBOOT=yes
  18. NM_CONTROLLED=yes
  19. BOOTPROTO=none
  20. IPADDR=172.168.1.19

2.配置/etc/hosts主机文件

  1. [root@rac1 network-scripts]# cat /etc/hosts
  2. 127.0.0.1 localhost
  3. ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
  4. #node1
  5. 192.168.8.221 rac1 rac1.oracle.com
  6. 192.168.8.222 rac1-vip
  7. 172.168.1.18  rac1-priv
  8. #node2
  9. 192.168.8.223 rac2 rac2.oracle.com
  10. 192.168.8.224 rac2-vip
  11. 172.168.1.19  rac2-priv
  12. #scan-ip
  13. 192.168.8.225 rac-cluster rac-cluster-scan

3.配置DNS(略,可以暂时不配置)

4.关闭防火墙

  1. service iptables stop
  2. chkconfig iptables off

5.关闭Selinux

  1. vim /etc/selinux/config
  2. SELINUX=disabled

6.创建用户和组

  1. --创建用户:
  2. groupadd -g 1000 oinstall
  3. groupadd -g 1200 asmadmin
  4. groupadd -g 1201 asmdba
  5. groupadd -g 1202 asmoper
  6. groupadd -g 1300 dba
  7. groupadd -g 1301 oper
  8. --创建组:
  9. useradd -u 1100 -g oinstall -G asmadmin,asmdba,asmoper grid
  10. useradd -u 1101 -g oinstall -G dba,oper,asmdba oracle
  11. --创建密码:
  12. passwd grid
  13. passwd oracle

7.配置用户的环境变量

Node1:

  1. --grid用户:
  2. export PATH
  3. export TMP=/tmp
  4. export TMPDIR=$TMP
  5. export ORACLE_SID=+ASM1
  6. export ORACLE_BASE=/u01/grid
  7. export ORACLE_HOME=/u01/app/grid/11.2.0
  8. export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
  9. export TNS_ADMIN=$ORACLE_HOME/network/admin
  10. export PATH=/usr/sbin:$PATH
  11. export PATH=$ORACLE_HOME/bin:$PATH
  12. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  13. export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  14. export LANG=en_US
  15. export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
  16. umask 022
  1. --oracle用户:
  2. export PATH
  3. export TMP=/tmp
  4. export TMPDIR=$TMP
  5. export ORACLE_HOSTNAME=rac1
  6. export ORACLE_SID=orcl1
  7. export ORACLE_BASE=/u01/oracle
  8. export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
  9. export ORACLE_UNQNAME=orcl
  10. export TNS_ADMIN=$ORACLE_HOME/network/admin
  11. #export ORACLE_TERM=xterm
  12. export PATH=/usr/sbin:$PATH
  13. export PATH=$ORACLE_HOME/bin:$PATH
  14. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  15. export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  16. export LANG=en_US
  17. export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
  18. export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
  19. umask 022

Node2:

  1. --grid用户:
  2. export PATH
  3. export TMP=/tmp
  4. export TMPDIR=$TMP
  5. export ORACLE_SID=+ASM2
  6. export ORACLE_BASE=/u01/grid
  7. export ORACLE_HOME=/u01/app/grid/11.2.0
  8. export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
  9. export TNS_ADMIN=$ORACLE_HOME/network/admin
  10. export PATH=/usr/sbin:$PATH
  11. export PATH=$ORACLE_HOME/bin:$PATH
  12. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  13. export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  14. export LANG=en_US
  15. export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
  16. umask 022
  1. --oracle用户:
  2. export PATH
  3. export TMP=/tmp
  4. export TMPDIR=$TMP
  5. export ORACLE_HOSTNAME=rac2
  6. export ORACLE_SID=orcl2
  7. export ORACLE_BASE=/u01/oracle
  8. export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
  9. export ORACLE_UNQNAME=orcl
  10. export TNS_ADMIN=$ORACLE_HOME/network/admin
  11. #export ORACLE_TERM=xterm
  12. export PATH=/usr/sbin:$PATH
  13. export PATH=$ORACLE_HOME/bin:$PATH
  14. export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
  15. export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
  16. export LANG=en_US
  17. export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
  18. export NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'
  19. umask 022

8.创建所需目录

  1. mkdir -p /u01/grid
  2. mkdir -p /u01/app/grid/11.2.0
  3. mkdir -p /u01/oracle
  4. chown -R oracle:oinstall /u01
  5. chown -R grid:oinstall /u01/grid
  6. chown -R grid:oinstall /u01/app/grid/11.2.0
  7. chmod -R 775 /u01

9.配置limits.conf增加如配置

  1. vim /etc/security/limits.conf
  2. oracle           soft   nofile           1024
  3. oracle           hard   nofile           65536
  4. oracle           soft   nproc            2047
  5. oracle           hard   nproc            16384
  6. oracle           soft   stack            10240
  7. oracle           hard   stack            32768
  8. grid             soft   nofile           1024
  9. grid             hard   nofile           65536
  10. grid             soft   nproc            2047
  11. grid             hard   nproc            16384
  12. grid             soft   stack            10240
  13. grid             hard   stack            32768

10.修改内核参数

  1. --注意将原来参数shmmall和shmmax注释掉
  2. vim /etc/sysctl.conf
  3. fs.aio-max-nr = 1048576
  4. fs.file-max = 6815744
  5. kernel.shmall = 1073741824
  6. kernel.shmmax = 4398046511104
  7. kernel.shmmni = 4096
  8. kernel.sem = 250 32000 100 128
  9. net.ipv4.ip_local_port_range = 9000 65500
  10. net.core.rmem_default = 262144
  11. net.core.rmem_max = 4194304
  12. net.core.wmem_default = 262144
  13. net.core.wmem_max = 1048576
  14. --使sysctl生效
  15. sysctl -p

11.停止NTP服务

  1. service ntpd stop
  2. chkconfig ntpd off
  3. mv /etc/ntp.conf /etc/ntp.conf.bak

11.安装相关软件包

yum install gcc
compat-libstdc++-33 elfutils-libelf-devel glibc-devel glibc-headers
gcc-c++ libaio-devel libstdc++-devel pdksh compat-libcap1-*

12.配置共享存储

for i in b c d e f g ;
do
echo "KERNEL==\"sd*\", BUS==\"scsi\", PROGRAM==\"/sbin/scsi_id
--whitelisted --replace-whitespace --device=/dev/\$name\",
RESULT==\"`/sbin/scsi_id --whitelisted --replace-whitespace
--device=/dev/sd$i`\", NAME=\"asm-disk$i\", OWNER=\"grid\",
GROUP=\"asmadmin\",
MODE=\"0660\""      >>
/etc/udev/rules.d/99-oracle-asmdevices.rules
done

--执行
/sbin/start_udev

13.上传并解压grid和oracle安装包(略)

二、Grid软件安装

1.安装grid,以grid用户登录,并执行./runInstaller进入安装界面

2.进入界面选择跳过软件更新,点击Next

2.选择Grid Infrastructure,点击Next:

3.选择高级安装,点击Next

4.默认Englist,点击Next

5.去掉Configure GNS选项,点击Next

6.点击Add选项,输入对应参数,参考/etc/hosts文件中配置

7.点击SSH Connectivity,输入grid的密码,点击Setup等待配置完成,然后点击Next

8.确认网络接口,eth0为Public,eth1为Private

9.选择Oracle ASM,点击Next

10.输入Disk Group Name,点击Change Discovery Path,在弹出的对话框中输入磁盘的路径,点击OK

11.选择ASM磁盘,点击Next

11.输入口令密码,点击Next


12.选择不使用IPMI,点击Next

13.默认选择,点击Next

14.确认Grid的安装路径,其中Grid软件的ORACLE_HOME不能是ORACLE_BASE的子目录

15.默认Inverntory,点击Next

16.该错误可以从Grid的安装文件的rpm目录下获取,Node1和Node2都安装即可,Device Checks for ASM可忽略

17.进入安装Grid安装前的概要信息界面,点击Install进行安装

18.根据红框中信息,现在Node1节点执行2个脚本,Node1节点全部执行完毕后,再在Node2上分别执行2个脚本,全部执行完毕后,点击OK,执行下一步

脚本执行结果如下

Node1:

  1. [root@rac1 rpm]# /u01/app/oraInventory/orainstRoot.sh
  2. Changing permissions of /u01/app/oraInventory.
  3. Adding read,write permissions for group.
  4. Removing read,write,execute permissions for world.
  5. Changing groupname of /u01/app/oraInventory to oinstall.
  6. The execution of the script is complete.
  1. [root@rac1 rpm]# /u01/app/11.2.0/grid/root.sh
  2. Performing root user operation for Oracle 11g
  3. The following environment variables are set as:
  4. ORACLE_OWNER= grid
  5. ORACLE_HOME= /u01/app/11.2.0/grid
  6. Enter the full pathname of the local bin directory: [/usr/local/bin]:
  7. Copying dbhome to /usr/local/bin ...
  8. Copying oraenv to /usr/local/bin ...
  9. Copying coraenv to /usr/local/bin ...
  10. Creating /etc/oratab file...
  11. Entries will be added to the /etc/oratab file as needed by
  12. Database Configuration Assistant when a database is created
  13. Finished running generic part of root script.
  14. Now product-specific root actions will be performed.
  15. Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
  16. Creating trace directory
  17. User ignored Prerequisites during installation
  18. Installing Trace File Analyzer
  19. OLR initialization - successful
  20. root wallet
  21. root wallet cert
  22. root cert export
  23. peer wallet
  24. profile reader wallet
  25. pa wallet
  26. peer wallet keys
  27. pa wallet keys
  28. peer cert request
  29. pa cert request
  30. peer cert
  31. pa cert
  32. peer root cert TP
  33. profile reader root cert TP
  34. pa root cert TP
  35. peer pa cert TP
  36. pa peer cert TP
  37. profile reader pa cert TP
  38. profile reader peer cert TP
  39. peer user cert
  40. pa user cert
  41. Adding Clusterware entries to upstart
  42. CRS-2672: Attempting to start 'ora.mdnsd' on 'rac1'
  43. CRS-2676: Start of 'ora.mdnsd' on 'rac1' succeeded
  44. CRS-2672: Attempting to start 'ora.gpnpd' on 'rac1'
  45. CRS-2676: Start of 'ora.gpnpd' on 'rac1' succeeded
  46. CRS-2672: Attempting to start 'ora.cssdmonitor' on 'rac1'
  47. CRS-2672: Attempting to start 'ora.gipcd' on 'rac1'
  48. CRS-2676: Start of 'ora.cssdmonitor' on 'rac1' succeeded
  49. CRS-2676: Start of 'ora.gipcd' on 'rac1' succeeded
  50. CRS-2672: Attempting to start 'ora.cssd' on 'rac1'
  51. CRS-2672: Attempting to start 'ora.diskmon' on 'rac1'
  52. CRS-2676: Start of 'ora.diskmon' on 'rac1' succeeded
  53. CRS-2676: Start of 'ora.cssd' on 'rac1' succeeded
  54. ASM created and started successfully.
  55. Disk Group SYSTEMDG created successfully.
  56. clscfg: -install mode specified
  57. Successfully accumulated necessary OCR keys.
  58. Creating OCR keys for user 'root', privgrp 'root'..
  59. Operation successful.
  60. CRS-4256: Updating the profile
  61. Successful addition of voting disk 03bd9e6851cf4fb4bf4c92e24a3d71cc.
  62. Successful addition of voting disk 362f2cfb5b3d4f29bf319c668e0efbe4.
  63. Successful addition of voting disk 57659c53f4284fbdbfeabafb20c3fbdd.
  64. Successfully replaced voting disk group with +SYSTEMDG.
  65. CRS-4256: Updating the profile
  66. CRS-4266: Voting file(s) successfully replaced
  67. ## STATE File Universal Id File Name Disk group
  68. -- ----- ----------------- --------- ---------
  69. 1. ONLINE 03bd9e6851cf4fb4bf4c92e24a3d71cc (/dev/asm-diskb) [SYSTEMDG]
  70. 2. ONLINE 362f2cfb5b3d4f29bf319c668e0efbe4 (/dev/asm-diskc) [SYSTEMDG]
  71. 3. ONLINE 57659c53f4284fbdbfeabafb20c3fbdd (/dev/asm-diskd) [SYSTEMDG]
  72. Located 3 voting disk(s).
  73. CRS-2672: Attempting to start 'ora.asm' on 'rac1'
  74. CRS-2676: Start of 'ora.asm' on 'rac1' succeeded
  75. CRS-2672: Attempting to start 'ora.SYSTEMDG.dg' on 'rac1'
  76. CRS-2676: Start of 'ora.SYSTEMDG.dg' on 'rac1' succeeded
  77. Configure Oracle Grid Infrastructure for a Cluster ... succeeded

Node2:

  1. [root@rac2 grid]# /u01/app/oraInventory/orainstRoot.sh
  2. Changing permissions of /u01/app/oraInventory.
  3. Adding read,write permissions for group.
  4. Removing read,write,execute permissions for world.
  5. Changing groupname of /u01/app/oraInventory to oinstall.
  6. The execution of the script is complete.
  1. [root@rac2 grid]# /u01/app/11.2.0/grid/root.sh
  2. Performing root user operation for Oracle 11g
  3. The following environment variables are set as:
  4. ORACLE_OWNER= grid
  5. ORACLE_HOME= /u01/app/11.2.0/grid
  6. Enter the full pathname of the local bin directory: [/usr/local/bin]:
  7. Copying dbhome to /usr/local/bin ...
  8. Copying oraenv to /usr/local/bin ...
  9. Copying coraenv to /usr/local/bin ...
  10. Creating /etc/oratab file...
  11. Entries will be added to the /etc/oratab file as needed by
  12. Database Configuration Assistant when a database is created
  13. Finished running generic part of root script.
  14. Now product-specific root actions will be performed.
  15. Using configuration parameter file: /u01/app/11.2.0/grid/crs/install/crsconfig_params
  16. Creating trace directory
  17. User ignored Prerequisites during installation
  18. Installing Trace File Analyzer
  19. OLR initialization - successful
  20. Adding Clusterware entries to upstart
  21. CRS-4402: The CSS daemon was started in exclusive mode but found an active CSS daemon on node rac1, number 1, and is terminating
  22. An active cluster was found during exclusive startup, restarting to join the cluster
  23. Configure Oracle Grid Infrastructure for a Cluster ... succeeded

19.临近执行完毕时,报了一个INS-20802的这种错误,导致这个错误的原因是在/etc/hosts中配置了SCAN的地址,尝试ping这个地址信息,如果可以成功,则这个错误可以忽略。

20.最后单击Close,完成Grid软件在Node1和Node2的安装操作

三、安装Oracle软件

1.安装oracle,以oracle用户登录,并执行./runInstaller进入安装界面

2.直接点击Next

3.选择跳过软件更新,点击Next

4.选则只安装数据库软件,点击Next

5.点击SSH Connectivity,输入Oracle的密码,点击setup,有如下提示,说明成功

6.默认English,点击Next

7.选择Enterprise Edition

8.默认路径,点击Next

9.选择Oracle用户组,默认选择,点击Next

10.Swap size错误增大即可,SCAN错误前面说过,选择Ignore all,点击Next

11.Oracle安装概要信息,点击Next

12.分别在Node1和Node2执行脚本

13.最后点击Close安装完成

四、创建ASM磁盘组

1.以grid用户登录,输入asmca命令,弹出ASM配置界面,点击Create

2.输入Disk Group Name,点击OK,会提示创建成功

3.创建成功后,会发现多出来一行记录,但是在state只显示MOUNTED(1of2)

4.点击Mount ALL,成功后state显示MOUNTED(2of2),点击Exit退出

五、安装数据库实例

1.使用Oracle用户登录,执行dbca命令,弹出如下界面,选择第一项,点击Next

2.点击创建数据库选项,点击Next

3.根据工作中的实际情况选择对应的模板,这里以默认模板为例

4.选择rac1和rac2,输入orcl实例名,点击Next

5.根据实际情况选择是否配置EM,点击Next

6.配置Oracle相关密码,点击Next

7.选择存储ASM,默认选择之前创建的磁盘组,点击Next

8.根据实际情况选择是否启用闪回恢复区,如果启用,需要在asmca中配置闪回区或放入到DATADG中,这里不配置

9.根据实际选择,这里不选择,点击Next

10.这里着重注意下配置正确的字符集,根据实际生产要求,点击Next

11.默认选择数据库存储信息,点击Next

12.点击Finish,开始创建数据库

13.最后完成数据库创建

版权声明:本文为博主原创文章,未经博主允许不得转载

http://blog.csdn.net/u011364306/article/details/50555098

Centos6.5安装Oracle11.2.0.4 RAC(完整版)的更多相关文章

  1. CentOS6.8 安装 Oracle11.2.0.4

    1. 安装操作系统 安装的时候选择中文+英文支持 注意分区: swap sda盘做系统盘 sdb盘做数据盘 配置完成后的服务器分区路径信息: [root@dbserver ~]# df -h File ...

  2. CentOS-6.4-DVD系统中安装Oracle-11.2.0.4

    完整版见https://jadyer.github.io/2014/05/18/centos-install-oracle/ /** * CentOS-6.4-DVD系统中安装Oracle-11.2. ...

  3. Windows8安装Oracle11.2.0.1-0624,附带 DBCA建库、netca创建监听、配置PLSQL、定义客户端的环境变量 NLS_LANG、定义客户端的环境变量 TNS_ADMIN01

    Windows8安装Oracle11.2.0.1                                         操作系统:Windows 8 企业版 64bit Oracle:11. ...

  4. redhat7.2静默安装Oracle11.2.0.4

    redhat7.2静默安装Oracle11.2.0.4我们将oracle安装到/opt/oracle目录下,后面的环境变量则以此为基础.一.设置主机hosts映射vi /etc/hosts[plain ...

  5. RHEL7或CentOS7安装11.2.0.4 RAC碰到的问题

    RHEL7或CentOS7安装11.2.0.4 RAC碰到的问题 随着Linux 版本的普及,但Oracle数据库主流版本仍是11gR2, 的支持不很完美,在Linux 上安装会遇到几处问题,以此记录 ...

  6. centos6.8安装cdh5.10.0(离线版)

    Centos6.8安装CDH5 相关包的下载地址: Cloudera Manager地址:http://archive.cloudera.com/cm5/cm/5/ CDH安装包地址:http://a ...

  7. centos6.5安装nginx1.16.0

    参考:   centos7 编译安装nginx1.16.0( 完整版 ) https://blog.csdn.net/weixin_37773766/article/details/80290939  ...

  8. Oracle11.2.0.4 RAC安装文档

    1 环境配置 参考官方文档<Grid Infrastructure Installation Guide for Linux> 1.1 软件环境 操作系统: [root@howe1 ~]# ...

  9. centos6.5安装配置zabbix3.0.3

    1.首先要准备LAMP环境. (1)安装php Zabbix 3.0对PHP的要求最低为5.4,而CentOS6默认为5.3.3,完全不满足要求,故需要利用第三方源,将PHP升级到5.4以上 rpm ...

随机推荐

  1. 小程序canvas截图组件

    最近做一个小程序的过程中,需要用到截图功能,网上搜了一下,发现没有符合要求的,就自己搞了个组件,方便复用. 目前功能很简单,传入宽高和图片路径即可,宽高是为了计算截图的比例,只支持缩放和移动. 实现思 ...

  2. xcode6的项目中虚拟键盘无法弹出

    这是因为Xcode6中的模拟器键盘设置跟之前的版本不一样了.之前版本是模拟器的键盘和电脑的键盘都可以使用,但是Xcode6的模拟器键盘只能使用一种,即要么是模拟器键盘,要么是电脑键盘.快捷键切换键盘类 ...

  3. PHP CLI应用的调试原理

    我们在Eclipse里选中一个PHP文件,右键选择Debug As->PHP CLI Application. 所谓CLI应用,是指这种脚本文件不需要任何Web服务器即可运行,当然, PHP运行 ...

  4. flask_SQLAlchemy 中常用的过滤和执行器

    常用的SQLAlchemy查询过滤器 过滤器 说明 filter() 把过滤器添加到原查询上,返回一个新查询 filter_by() 把等值过滤器添加到原查询上,返回一个新查询 limit 使用指定的 ...

  5. Python3简明教程(三)—— 运算符和表达式

    运算符 什么是运算符? 举个简单的例子 4 +5 = 9 . 例子中,4 和 5 被称为操作数,"+" 称为运算符. Python支持以下类型的运算符: 算术运算符 关系运算符 赋 ...

  6. 必知干货:Web前端应用十种常用技术你全都知道吗?

    Web前端应用十种常用技术,随着JS与XHTML的应用普及,越来越多的web界面应用技术出现在网站上,比如我们常见的日历控件,搜索下拉框等,这些web界面应用技术大大的丰富了网站的表现形式,本文将为您 ...

  7. 创建线程的三种方式_Callable和Runnable的区别

    Java 提供了三种创建线程的方法 通过实现Runnable接口 通过继承Thread接口 通过Callable和Future创建线程 通过实现 Runnable 接口来创建线程 public cla ...

  8. function语句注意事项

    function语句 在Javascript中定义一个函数,有两种写法: function foo() { } 和 var foo = function () { } 两种写法完全等价.但是在解析的时 ...

  9. 树状数组 || POJ 3321 Apple Tree

    一道dfs序+树状数组的题 因为并没有get到dfs序以及对树状数组也不熟练卡了很久orz dfs序: in和out是时间戳 dfs序可以将树转化成为一个序列,满足区间 -> 子树 然后就可以用 ...

  10. JAVA中等待所有线程都执行结束(转2)

    场景: package com.java4all.mypoint; import java.util.concurrent.CountDownLatch; public class ThreadTes ...