http://www.mydbspace.com/?

p=324

Single Client Access Name (SCAN) is new feature of oracle 11gR2 grid infrastructure. This idea make client transparent to database servers. Any change in terms of adding deleting nodes and even moving database cluster to a new datacenter can be achieved without
changing anything in the client. That makes JDBC URL to use just a simple name to access the cluster independent of node name and database SIDs.

Scan listeners running on RAC only accept connections and pass them onto a Node listener.

When the client makes a connection, Connection packet is sent to a Scan listener. Connection is then redirected to a Node Listener. Node Listener forks the shadow process for the dedicated connection to use or passes the connection onto dispatcher for shared
server connection model.

The most intense operation a TNS listener does, the fork (bequeath) of a shadow process is completed by the Node listener.

Let us see how we can configure node listener for each of the database running on the RAC cluster. I have configured SCAN listener in 1521. I have two databases TST, PRD running on a two node cluster. My node names arerock,water.
These are the status of my SCAN listeners.

LISTENER_SCAN1 is no node water:

+ASM2:water.localdomain:oracle$ lsnrctl status LISTENER_SCAN1

LSNRCTL for Linux: Version 11.2.0.1.0 – Production on 01-AUG-2011 09:02:19

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
STATUS of the LISTENER
————————
Alias LISTENER_SCAN1
Version TNSLSNR for Linux: Version 11.2.0.1.0 – Production
Start Date 28-JUL-2011 13:50:50
Uptime 3 days 19 hr. 11 min. 50 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/app/grid/11.2.0.1/network/admin/listener.ora
Listener Log File /opt/app/grid/11.2.0.1/log/diag/tnslsnr/water/listener_scan1/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.203)(PORT=1521)))
Services Summary…
Service “PRD” has 2 instance(s).
Instance “PRD1″, status READY, has 1 handler(s) for this service…
Instance “PRD2″, status READY, has 1 handler(s) for this service…
Service “TST” has 2 instance(s).
Instance “TST1″, status READY, has 1 handler(s) for this service…
Instance “TST2″, status READY, has 1 handler(s) for this service…
The command completed successfully

LISTENER_SCAN2, LISTENER_SCAN3 are on node rock

+ASM1:rock.localdomain:oracle$ lsnrctl status LISTENER_SCAN2

LSNRCTL for Linux: Version 11.2.0.1.0 – Production on 01-AUG-2011 09:03:05

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2)))
STATUS of the LISTENER
————————
Alias LISTENER_SCAN2
Version TNSLSNR for Linux: Version 11.2.0.1.0 – Production
Start Date 28-JUL-2011 13:47:46
Uptime 3 days 19 hr. 15 min. 19 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/app/grid/11.2.0.1/network/admin/listener.ora
Listener Log File /opt/app/grid/11.2.0.1/log/diag/tnslsnr/rock/listener_scan2/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN2)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.201)(PORT=1521)))
Services Summary…
Service “PRD” has 2 instance(s).
Instance “PRD1″, status READY, has 1 handler(s) for this service…
Instance “PRD2″, status READY, has 1 handler(s) for this service…
Service “TST” has 2 instance(s).
Instance “TST1″, status READY, has 1 handler(s) for this service…
Instance “TST2″, status READY, has 1 handler(s) for this service…
The command completed successfully

+ASM1:rock.localdomain:oracle$

+ASM1:rock.localdomain:oracle$ lsnrctl status LISTENER_SCAN3

LSNRCTL for Linux: Version 11.2.0.1.0 – Production on 01-AUG-2011 09:01:12

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN3)))
STATUS of the LISTENER
————————
Alias LISTENER_SCAN3
Version TNSLSNR for Linux: Version 11.2.0.1.0 – Production
Start Date 28-JUL-2011 17:06:33
Uptime 3 days 15 hr. 54 min. 38 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/app/grid/11.2.0.1/network/admin/listener.ora
Listener Log File /opt/app/oracle/diag/tnslsnr/rock/listener_scan3/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_SCAN3)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.202)(PORT=1521)))
Services Summary…
Service “PRD” has 2 instance(s).
Instance “PRD1″, status READY, has 1 handler(s) for this service…
Instance “PRD2″, status BLOCKED, has 1 handler(s) for this service…
Service “TST” has 2 instance(s).
Instance “TST1″, status READY, has 1 handler(s) for this service…
Instance “TST2″, status READY, has 1 handler(s) for this service…
The command completed successfully

Node listener settings are:
On rock

+ASM1:rock.localdomain:oracle$ lsnrctl status LISTENER

LSNRCTL for Linux: Version 11.2.0.1.0 – Production on 01-AUG-2011 09:10:31

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))
STATUS of the LISTENER
————————
Alias LISTENER
Version TNSLSNR for Linux: Version 11.2.0.1.0 – Production
Start Date 28-JUL-2011 13:47:51
Uptime 3 days 19 hr. 22 min. 45 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/app/grid/11.2.0.1/network/admin/listener.ora
Listener Log File /opt/app/oracle/diag/tnslsnr/rock/listener/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.132)(PORT=1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.111)(PORT=1521)))
Services Summary…
Service “+ASM” has 1 instance(s).
Instance “+ASM1″, status READY, has 1 handler(s) for this service…
Service “PRD” has 1 instance(s).
Instance “PRD1″, status READY, has 1 handler(s) for this service…
The command completed successfully

On water

+ASM1:rock.localdomain:oracle$ lsnrctl status LISTENER_TST

LSNRCTL for Linux: Version 11.2.0.1.0 – Production on 01-AUG-2011 09:11:41

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_TST)))
STATUS of the LISTENER
————————
Alias LISTENER_TST
Version TNSLSNR for Linux: Version 11.2.0.1.0 – Production
Start Date 28-JUL-2011 13:47:56
Uptime 3 days 19 hr. 23 min. 45 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/app/grid/11.2.0.1/network/admin/listener.ora
Listener Log File /opt/app/oracle/diag/tnslsnr/rock/listener_tst/alert/log.xml
Listening Endpoints Summary…
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=LISTENER_TST)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.132)(PORT=1523)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.111)(PORT=1523)))
Services Summary…
Service “TST” has 1 instance(s).
Instance “TST1″, status READY, has 1 handler(s) for this service…
The command completed successfully

My local_listener and romte_listener settings are

PRD1:rock.localdomain:oracle$ si

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 09:05:23 2011

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> show parameter listener

NAME TYPE
———————————— ———————————
VALUE
——————————

local_listener string
(DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=rock
-vip)(PORT=1521))))
remote_listener string
rac-scan:1521
SQL>

TST1:rock.localdomain:oracle$ si

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 09:06:20 2011

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> show parameter listener

NAME TYPE
———————————— ———————————
VALUE
——————————

local_listener string
(DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=rock
-vip)(PORT=1523))))
remote_listener string
rac-scan:1521
SQL>

On node water:

TST2:water.localdomain:oracle$ si

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 09:07:53 2011

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL>
SQL> show parameter listener

NAME TYPE
———————————— ———————————
VALUE
——————————

local_listener string
(DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=wate
r-vip)(PORT=1523))))
remote_listener string
rac-scan:1521
SQL>

PRD2:water.localdomain:oracle$ si

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 09:08:33 2011

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> show parameter listener

NAME TYPE
———————————— ———————————
VALUE
——————————

local_listener string
(DESCRIPTION=(ADDRESS_LIST=(AD
DRESS=(PROTOCOL=TCP)(HOST=wate
r-vip)(PORT=1521))))
remote_listener string
rac-scan:1521
SQL>

This is how my environment looks like if I put it in picture.

From the SCAN listener status above, It is clear that all SCAN listeners are aware of the node listeners no matter where node listener is listening on (1523, 1521). PMON registers with SCAN listener based on the remote_listener setting on database. And PMON
also register with node listener based on the local listener settings. Local/node listener will always point to the local VIP for the node while the remote_listener will point to SCAN_NAME:Port.

Now let us try connecting with TAF enable connect string.

PRDTAF =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = PRD)
(FAILOVER_MODE=
(TYPE=select)
(METHOD=basic))))

TSTTAF =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = rac-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = TST)
(FAILOVER_MODE=
(TYPE=select)
(METHOD=basic))))

[oracle@linux1 admin]$ sqlplus system/oracle@TSTTAF

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 08:51:11 2011

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> select instance_name from v$instance;

INSTANCE_NAME
—————-
TST2

SQL>

Now my connection to TST went to TST2 instance on node water.

+ASM2:water.localdomain:oracle$ lsnrctl services LISTENER_SCAN1

LSNRCTL for Linux: Version 11.2.0.1.0 – Production on 01-AUG-2011 08:52:17

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))
Services Summary…
Service “PRD” has 1 instance(s).
Instance “PRD1″, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rock-vip)(PORT=1521)))
Service “TST” has 2 instance(s).
Instance “TST1″, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rock-vip)(PORT=1523)))
Instance “TST2″, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=water-vip)(PORT=1523)))
The command completed successfully

+ASM2:water.localdomain:oracle$ lsnrctl services LISTENER_TST

LSNRCTL for Linux: Version 11.2.0.1.0 – Production on 01-AUG-2011 15:54:45

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_TST)))
Services Summary…
Service “TST” has 1 instance(s).
Instance “TST2″, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:1 refused:0 state:ready
LOCAL SERVER
The command completed successfully

Now the established connection count is 1 for LISTENER_TST. But for SCAN listener established connection count actually increased on LISTENER_SCAN3. That means LISTENER_SCAN3 actually received the request from client and forwarded to LISTENER_TST on water.

+ASM1:rock.localdomain:oracle$ lsnrctl services LISTENER_SCAN2

LSNRCTL for Linux: Version 11.2.0.1.0 – Production on 01-AUG-2011 15:56:58

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN2)))
Services Summary…
Service “PRD” has 2 instance(s).
Instance “PRD1″, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:1 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rock-vip)(PORT=1521)))
Instance “PRD2″, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=water-vip)(PORT=1521)))
Service “TST” has 2 instance(s).
Instance “TST1″, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rock-vip)(PORT=1523)))
Instance “TST2″, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=water-vip)(PORT=1523)))
The command completed successfully
+ASM1:rock.localdomain:oracle$ lsnrctl services LISTENER_SCAN3

LSNRCTL for Linux: Version 11.2.0.1.0 – Production on 01-AUG-2011 15:57:06

Copyright (c) 1991, 2009, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN3)))
Services Summary…
Service “PRD” has 2 instance(s).
Instance “PRD1″, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rock-vip)(PORT=1521)))
Instance “PRD2″, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=water-vip)(PORT=1521)))
Service “TST” has 2 instance(s).
Instance “TST1″, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:0 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=rock-vip)(PORT=1523)))
Instance “TST2″, status READY, has 1 handler(s) for this service…
Handler(s):
“DEDICATED” established:1 refused:0 state:ready
REMOTE SERVER
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=water-vip)(PORT=1523)))
The command completed successfully
+ASM1:rock.localdomain:oracle$

Now let us see how the failover works

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 16:00:10 2011

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> select instance_name from v$instance;

INSTANCE_NAME
—————-
TST2

SQL>

Now issue a ‘shutdown abort’ on TST2.

TST2:water.localdomain:oracle$ si

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 16:02:24 2011

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> shutdown abort;
ORACLE instance shut down.
SQL>

Let us see if my connection failed over to TST1 on node rock. Yes it did without an issue.

[oracle@linux1 admin]$ sqlplus system/oracle@TSTTAF

SQL*Plus: Release 11.2.0.1.0 Production on Mon Aug 1 16:00:10 2011

Copyright (c) 1982, 2009, Oracle. All rights reserved.

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
With the Partitioning, Real Application Clusters, Automatic Storage Management, OLAP,
Data Mining and Real Application Testing options

SQL> select instance_name from v$instance;

INSTANCE_NAME
—————-
TST2

SQL> select instance_name from v$instance;

INSTANCE_NAME
—————-
TST1

SQL>

Now we can pass the SCAN name and port to application installer or admin team and create as many node listeners as required. We don’t need to let application team to know different connection string and port for different databases on same RAC cluster. You
can note that I used SCAN (rac-scan) and port (1521) for both my databases. I segregated my listeners on 1521 and 1523 to PRD and TST databases respectively.

SCAN listener and Node listener – How does it work的更多相关文章

  1. org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException: Listener threw exception

    RabbitMQ   报出的错! org.springframework.amqp.rabbit.listener.exception.ListenerExecutionFailedException ...

  2. Oracle Net Listener Parameters (listener.ora)(转)

    12/20 7 Oracle Net Listener Parameters (listener.ora) This chapter provides a complete listing of th ...

  3. default listener is not configured in grid infrastructure home

    Oracle Restart enable database creation requries Default listener configured and running in Grid Inf ...

  4. Troubleshooting Guide for ORA-12541 TNS: No Listener

    Server side checks (not platform specific): 1)  Check the result on the server using tnsping to the ...

  5. JavaWeb——Listener

    一.基本概念 JavaWeb里面的listener是通过观察者设计模式进行实现的.对于观察者模式,这里不做过多介绍,大概讲一下什么意思. 观察者模式又叫发布订阅模式或者监听器模式.在该模式中有两个角色 ...

  6. [Java] JSP笔记 - Listener 监听器

    Java Web 开发时,可以使用 Listener 来监听来监听一些事件,从而实现一些功能.实际上这个监听器,原理就是 Delphi 中大家常用的各种事件. 1. 那么,监听器的主要用途用哪些呢: ...

  7. Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)解决

    环境:Windows 2008 R2 + Oracle 10.2.0.3 应用最新bundle patch后,扫描依然报出漏洞 Oracle Database Server 'TNS Listener ...

  8. web.xml 中的listener、 filter、servlet 加载顺序及其详解

    在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰. 首先可以肯定的是 ...

  9. ORACLE清理、截断监听日志文件(listener.log)

    在ORACLE数据库中,如果不对监听日志文件(listener.log)进行截断,那么监听日志文件(listener.log)会变得越来越大,想必不少人听说过关于"LISTENER.LOG日 ...

随机推荐

  1. Java发送http请求发送json对象

    直接上代码: http工具类: public static String httpPostWithjson(String url, String json) throws IOException { ...

  2. vbox虚拟机复制&&虚拟机指定静态IP

    一.复制镜像(假设源镜像已经用桥接方式,可以访问互联网). 注意需要重新生成mac地址 二.复制完成,启动复制好的镜像(注意,此时的镜像无法联网) vi /etc/udev/rules.d/70-pe ...

  3. PAT甲级——A1023 Have Fun with Numbers

    Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, wit ...

  4. [原创]iFPGA-Cable FT2232H Xilinx / Altera / Lattice 三合一JTAG & UART调试器-详细使用说明

    iFPGA-Cable调试器使用说明 全文分为6部分: 第0部分:实物.连线及其驱动安装说明 第1部分:Xilinx JTAG 第2部分:UART 第3部分:Altera JTAG 第4部分:Latt ...

  5. GitBook的使用方法

    ---恢复内容开始--- 由于近期工作中使用gitbook编写讲义,现把出现的问题总结下: 1 . gitbook的安装 Gitbook与word等办公软件类似,能够编写文档,Gitbook中编写文档 ...

  6. TZ_09_自定义Spring-security

    1.Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架 2.安全包括两个主要操作. “认证”,是为用户建立一个他所声明的主体 ...

  7. TZ_06_SpringMVC_拦截器的配置

    1. 拦截器的概述 1>. SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术. 2>. 可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方 ...

  8. vw单位相关

    1.相对于视口的宽度.视口被均分为100单位的vw h1 { font-size: 8vw; } 如果视口的宽度是200mm,那么上述代码中h1元素的字号将为16mm,即(8x200)/100 2.相 ...

  9. 组合数学起步-排列计数[ZJOI2010][BZOJ2111]

    <题面> 数据范围:$1 \leq N \leq 10^6, P \leq 10^9 $ 这个题…… 以为是排列,其实是组合 题目中说是从所有排列中找到Magic的,就是 $p_{i/2} ...

  10. 淘宝镜像(CNPM)安装

    淘宝镜像安装:开始-运行-填写cmd,回车键确定- 输入"npm install -g cnpm --registry=https://registry.npm.taobao.org&quo ...