一、数据源的由来

  在Java开发中,使用JDBC操作数据库的四个步骤如下:

      ①加载数据库驱动程序(Class.forName("数据库驱动类");)

      ②连接数据库(Connection con  = DriverManager.getConnection();)

      ③操作数据库(PreparedStatement stat = con.prepareStatement(sql);stat.executeQuery();)

      ④关闭数据库,释放连接(con.close();)

  也就是说,所有的用户都需要经过此四步进行操作,但是这四步之中有三步(①加载数据库驱动程序、②连接数据库、④关闭数据库,释放连接)对所有人都是一样的,而所有人只有在操作数据库上是不一样,那么这就造成了性能的损耗。

  那么最好的做法是,准备出一个空间,此空间里专门保存着全部的数据库连接,以后用户用数据库操作的时候不用再重新加载驱动、连接数据库之类的,而直接从此空间中取走连接,关闭的时候直接把连接放回到此空间之中。

  那么此空间就可以称为连接池(保存所有的数据库连接),但是如果要想实现此空间的话,则必须有一个问题要考虑?

      1、 如果没有任何一个用户使用连接,那么那么应该维持一定数量的连接,等待用户使用。

      2、 如果连接已经满了,则必须打开新的连接,供更多用户使用。

      3、 如果一个服务器就只能有100个连接,那么如果有第101个人过来呢?应该等待其他用户释放连接

      4、 如果一个用户等待时间太长了,则应该告诉用户,操作是失败的。

   如果直接用程序实现以上功能,则会比较麻烦,所以在Tomcat 4.1.27之后,在服务器上就直接增加了数据源的配置选项,直接在服务器上配置好数据源连接池即可。在J2EE服务器上保存着一个数据库的多个连接。每一个连接通过DataSource可以找到。DataSource被绑定在了JNDI树上(为每一个DataSource提供一个名字)客户端通过名称找到在JNDI树上绑定的DataSource,再由DataSource找到一个连接。如下图所示:
  
  那么在以后的操作中,除了数据库的连接方式不一样之外,其他的所有操作都一样,只是关闭的时候不是彻底地关闭数据库,而是把数据库的连接放回到连接池中去。
  如果要想使用数据源的配置,则必须配置虚拟目录,因为此配置是在虚拟目录之上起作用的。需要注意的是,如果要想完成以上的功能,在Tomcat服务器上一定要有各个数据库的驱动程序。

二、JNDI+Tomcat配置数据源的两种方式

2.1、全局jndi配置

  此种配置需要在server.xml中配置数据源,具体的配置步骤如下:

  1、在tomcat服务器的lib目录下加入数据库连接的驱动jar包

  

  2、修改tomcat服务器的conf目录下server.xml配置文件

  

  打开server.xml配置文件,可以看到里面自带的一个全局JNDI配置,如下图所示:

  

  编辑server.xml文件,添加全局JNDI数据源配置,配置如下:

 1 <!-- Global JNDI resources
2 Documentation at /docs/jndi-resources-howto.html
3 -->
4 <GlobalNamingResources>
5 <!-- Editable user database that can also be used by
6 UserDatabaseRealm to authenticate users
7 -->
8 <Resource name="UserDatabase" auth="Container"
9 type="org.apache.catalina.UserDatabase"
10 description="User database that can be updated and saved"
11 factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
12 pathname="conf/tomcat-users.xml" />
13 <!--
14 |- name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,
15 为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一个jdbc的关于oracle的命名服务。
16 |- auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效
17 |- type:此名称所代表的类型,现在为javax.sql.DataSource
18 |- maxActive:表示一个数据库在此服务器上所能打开的最大连接数
19 |- maxIdle:表示一个数据库在此服务器上维持的最小连接数
20 |- maxWait:最大等待时间。10000毫秒
21 |- username:数据库连接的用户名
22 |- password:数据库连接的密码
23 |- driverClassName:数据库连接的驱动程序
24 |- url:数据库连接的地址
25 -->
26 <!--配置Oracle数据库的JNDI数据源-->
27 <Resource
28 name="jdbc/oracle"
29 auth="Container"
30 type="javax.sql.DataSource"
31 maxActive="100"
32 maxIdle="30"
33 maxWait="10000"
34 username="lead_oams"
35 password="p"
36 driverClassName="oracle.jdbc.driver.OracleDriver"
37 url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>
38
39 <!--配置MySQL数据库的JNDI数据源-->
40 <Resource
41 name="jdbc/mysql"
42 auth="Container"
43 type="javax.sql.DataSource"
44 maxActive="100"
45 maxIdle="30"
46 maxWait="10000"
47 username="root"
48 password="root"
49 driverClassName="com.mysql.jdbc.Driver"
50 url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&amp;characterEncoding=utf-8"/>
51
52 <!--配置SQLServer数据库的JNDI数据源-->
53 <Resource
54 name="jdbc/sqlserver"
55 auth="Container"
56 type="javax.sql.DataSource"
57 maxActive="100"
58 maxIdle="30"
59 maxWait="10000"
60 username="sa"
61 password="p@ssw0rd"
62 driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
63 url="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"/>
64
65 </GlobalNamingResources>

  经过以上的两个步骤,全局JNDI数据源就配置好了,在上述的server.xml文件中,分别配置了Oracle、MySQL、SQLServer这三种数据库的全局JNDI数据源。

2.2、全局jndi数据源测试

  1、创建一个JNDI测试项目JNDITest,在web.xml中添加JNDI配置的资源引用

  

  web.xml的配置如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app version="2.5"
3 xmlns="http://java.sun.com/xml/ns/javaee"
4 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
6 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
7 <welcome-file-list>
8 <welcome-file>index.jsp</welcome-file>
9 </welcome-file-list>
10
11 <!--
12 JNDI配置的资源引用:
13 • res-ref-name:表示引用资源的名称
14 • res-type:此资源对应的类型为javax.sql.DataSource
15 • res-auth:容器授权管理
16 -->
17 <!--Oracle数据库JNDI数据源引用 -->
18 <resource-ref>
19 <description>Oracle DB Connection</description>
20 <res-ref-name>oracleDataSource</res-ref-name>
21 <res-type>javax.sql.DataSource</res-type>
22 <res-auth>Container</res-auth>
23 </resource-ref>
24
25 <!--MySQL数据库JNDI数据源引用 -->
26 <resource-ref>
27 <description>MySQL DB Connection</description>
28 <res-ref-name>mysqlDataSource</res-ref-name>
29 <res-type>javax.sql.DataSource</res-type>
30 <res-auth>Container</res-auth>
31 </resource-ref>
32
33 <!--SQLServer数据库JNDI数据源引用 -->
34 <resource-ref>
35 <description>SQLServer DB Connection</description>
36 <res-ref-name>sqlserverDataSource</res-ref-name>
37 <res-type>javax.sql.DataSource</res-type>
38 <res-auth>Container</res-auth>
39 </resource-ref>
40
41 </web-app>

  2、映射JNDITest项目的虚拟目录

  在tomcat的\conf\Catalina\localhost下(没有目录就新建)创建一个xml文件,文件名必须和项目名相同,测试JNDI数据源的web项目的项目名称是:JNDITest,所以xml文件的命名就叫JNDITest.xml,如下图所示:

  

  编辑JNDITest.xml,配置如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3 jndi配置方法(tomcat):
4 将此文件放置在tomcat\conf\Catalina\localhost下(没有目录就新建)
5 -->
6 <!--映射JNDITest项目的虚拟目录-->
7 <Context docBase="D:/MyEclipse8.5/workspace/JNDITest/WebRoot" debug="0" reloadable="false">
8 <!--引用Oracle数据库的JNDI数据源-->
9 <ResourceLink name="oracleDataSource" global="jdbc/oracle" type="javax.sql.DataSource"/>
10 <!--引用mysql数据库的JNDI数据源-->
11 <ResourceLink name="mysqlDataSource" global="jdbc/mysql" type="javax.sql.DataSource"/>
12 <!--引用sqlserver数据库的JNDI数据源-->
13 <ResourceLink name="sqlserverDataSource" global="jdbc/sqlserver" type="javax.sql.DataSource"/>
14 </Context>

  3、测试从JNDI数据源获取数据库连接

  配置完数据源连接池之后,就可以按照以下的步骤进行访问:

    • 初始化名称查找上下文

    • 通过JNDI名称找到DataSource

    • 通过DataSource取得一个连接

    • 操作数据库

    • 关闭数据库,关闭的时候是将连接放回到连接池之中

  jsp测试页面代码如下:

  1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %>
3
4 <!DOCTYPE HTML>
5 <html>
6 <head>
7 <title>JNDI数据源测试</title>
8 </head>
9
10 <body>
11 <%
12 Connection connOracle = null;
13 try {
14 //1、初始化名称查找上下文
15 Context ctx = new InitialContext();
16 //InitialContext ctx = new InitialContext();亦可
17 //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟的是DataSource名
18 /*
19 DataSource名在web.xml文件中的<res-ref-name>oracleDataSource</res-ref-name>进行了配置
20 <!--Oracle数据库JNDI数据源引用 -->
21 <resource-ref>
22 <description>Oracle DB Connection</description>
23 <res-ref-name>oracleDataSource</res-ref-name>
24 <res-type>javax.sql.DataSource</res-type>
25 <res-auth>Container</res-auth>
26 </resource-ref>
27 */
28 DataSource ds = (DataSource)ctx.lookup("java:comp/env/oracleDataSource");
29 //3、通过DataSource取得一个连接
30 connOracle = ds.getConnection();
31 out.println("Oracle Connection pool connected !!");
32 //4、操作数据库
33 } catch (NamingException e) {
34 System.out.println(e.getMessage());
35 } catch (SQLException e) {
36 e.printStackTrace();
37 } finally {
38 //5、关闭数据库,关闭的时候是将连接放回到连接池之中
39 connOracle.close();
40 }
41 %>
42 <hr/>
43 <%
44 Connection connMySQL = null;
45 try {
46 //1、初始化名称查找上下文
47 Context ctx = new InitialContext();
48 //InitialContext ctx = new InitialContext();亦可
49 //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面跟的是DataSource名
50 /*
51 DataSource名在web.xml文件中的<res-ref-name>mysqlDataSource</res-ref-name>进行了配置
52 <!--MySQL数据库JNDI数据源引用 -->
53 <resource-ref>
54 <description>MySQL DB Connection</description>
55 <res-ref-name>mysqlDataSource</res-ref-name>
56 <res-type>javax.sql.DataSource</res-type>
57 <res-auth>Container</res-auth>
58 </resource-ref>
59 */
60 DataSource ds = (DataSource)ctx.lookup("java:comp/env/mysqlDataSource");
61 //3、通过DataSource取得一个连接
62 connMySQL = ds.getConnection();
63 out.println("MySQL Connection pool connected !!");
64 //4、操作数据库
65 } catch (NamingException e) {
66 System.out.println(e.getMessage());
67 } catch (SQLException e) {
68 e.printStackTrace();
69 } finally {
70 //5、关闭数据库,关闭的时候是将连接放回到连接池之中
71 connMySQL.close();
72 }
73 %>
74 <hr/>
75 <%
76 Connection connSQLServer = null;
77 try {
78 //1、初始化名称查找上下文
79 Context ctx = new InitialContext();
80 //InitialContext ctx = new InitialContext();亦可
81 //2、通过JNDI名称找到DataSource,对名称进行定位java:comp/env是必须加的,后面的是DataSource名
82 /*
83 DataSource名在web.xml文件中的<res-ref-name>sqlserverDataSource</res-ref-name>进行了配置
84 <!--SQLServer数据库JNDI数据源引用 -->
85 <resource-ref>
86 <description>SQLServer DB Connection</description>
87 <res-ref-name>sqlserverDataSource</res-ref-name>
88 <res-type>javax.sql.DataSource</res-type>
89 <res-auth>Container</res-auth>
90 </resource-ref>
91 */
92 DataSource ds = (DataSource)ctx.lookup("java:comp/env/sqlserverDataSource");
93 //3、通过DataSource取得一个连接
94 connSQLServer = ds.getConnection();
95 out.println("SQLServer Connection pool connected !!");
96 //4、操作数据库
97 } catch (NamingException e) {
98 System.out.println(e.getMessage());
99 } catch (SQLException e) {
100 e.printStackTrace();
101 } finally {
102 //5、关闭数据库,关闭的时候是将连接放回到连接池之中
103 connSQLServer.close();
104 }
105 %>
106 </body>
107 </html>

  运行结果如下:

  

  除了可以在Jsp页面中编写java代码测试JNDI数据源连接之外,还有一种比较简单的方式就是使用JSTL标签库提供的sql标签进行测试,测试代码如下:

 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2 <%--引入JSTL标签库 --%>
3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
4 <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
5 <!DOCTYPE HTML>
6 <html>
7 <head>
8 <title>JNDI数据源连接测试</title>
9 </head>
10
11 <body>
12 <h3>Oracle JNDI数据源测试</h3>
13 <%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>
14 <sql:query var="rs" dataSource="oracleDataSource">
15 <%--Oracle JNDI数据源测试 SQL--%>
16 SELECT * FROM LEAD_OAMS_DBSOURCES
17 </sql:query>
18 <%--使用c:forEach标签遍历查询结果集rs中的每一行--%>
19 <c:forEach var="row" items="${rs.rows}">
20 <%--${row.字段名}获取字段的值--%>
21 ${row.RESOURCEID}---${row.DBSOURCE_NAME}---${row.DBSOURCE_TYPE}<br/>
22 </c:forEach>
23 <hr/>
24 <h3>MySQL JNDI数据源测试</h3>
25 <%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>
26 <sql:query var="rs" dataSource="mysqlDataSource">
27 <%--MySQL JNDI数据源测试 SQL--%>
28 select * from ld_user
29 </sql:query>
30 <%--使用c:forEach标签遍历查询结果集rs中的每一行--%>
31 <c:forEach var="row" items="${rs.rows}">
32 <%--${row.字段名}获取字段的值--%>
33 ${row.id}---${row.username}---${row.password}<br/>
34 </c:forEach>
35 <hr/>
36 <h3>SQLServer JNDI数据源测试</h3>
37 <%--使用sql:query标签发送SQL语句去数据库查询数据,查询的结果集保存到rs变量当中,dataSource属性指明使用的数据源--%>
38 <sql:query var="rs" dataSource="sqlserverDataSource">
39 <%--SQLServer JNDI数据源测试 SQL--%>
40 select * from t_demo
41 </sql:query>
42 <%--使用c:forEach标签遍历查询结果集rs中的每一行--%>
43 <c:forEach var="row" items="${rs.rows}">
44 <%--${row.字段名}获取字段的值--%>
45 ${row.id}---${row.time}<br/>
46 </c:forEach>
47 </body>
48 </html>

  运行结果如下:

  

2.3、非全局jndi配置

  非全局JNDI数据源是针对某一个Web项目配置的数据源,具体的配置步骤如下:

  1、在tomcat服务器的lib目录下加入数据库连接的驱动jar包

   2、针对具体的web项目映射虚拟目录,然后在虚拟目录映射的配置文件中配置JNDI数据源

  还是以上面的JNDITest项目为例子进行说明

  在tomcat目录下的\conf\Catalina\localhost目录下创建一个JNDITest.xml文件,如下图所示:

  

  编辑JNDITest.xml文件,添加对JNDITest项目的虚拟目录的映射和JNDI数据源的配置

 1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3 jndi配置方法(tomcat):
4 将此文件放置在tomcat\conf\Catalina\localhost下(没有目录就新建)
5 -->
6
7 <Context docBase="D:/MyEclipse8.5/workspace/JNDITest/WebRoot" debug="0" reloadable="false">
8 <!--
9 |- name:表示以后要查找的名称。通过此名称可以找到DataSource,此名称任意更换,但是程序中最终要查找的就是此名称,
10 为了不与其他的名称混淆,所以使用jdbc/oracle,现在配置的是一个jdbc的关于oracle的命名服务。
11 |- auth:由容器进行授权及管理,指的用户名和密码是否可以在容器上生效
12 |- type:此名称所代表的类型,现在为javax.sql.DataSource
13 |- maxActive:表示一个数据库在此服务器上所能打开的最大连接数
14 |- maxIdle:表示一个数据库在此服务器上维持的最小连接数
15 |- maxWait:最大等待时间。10000毫秒
16 |- username:数据库连接的用户名
17 |- password:数据库连接的密码
18 |- driverClassName:数据库连接的驱动程序
19 |- url:数据库连接的地址
20 -->
21 <!--配置Oracle数据库的JNDI数据源-->
22 <Resource
23 name="oracleDataSource"
24 auth="Container"
25 type="javax.sql.DataSource"
26 maxActive="100"
27 maxIdle="30"
28 maxWait="10000"
29 username="lead_oams"
30 password="p"
31 driverClassName="oracle.jdbc.driver.OracleDriver"
32 url="jdbc:oracle:thin:@192.168.1.229:1521:lead"/>
33
34 <!--配置MySQL数据库的JNDI数据源-->
35 <Resource
36 name="mysqlDataSource"
37 auth="Container"
38 type="javax.sql.DataSource"
39 maxActive="100"
40 maxIdle="30"
41 maxWait="10000"
42 username="root"
43 password="root"
44 driverClassName="com.mysql.jdbc.Driver"
45 url="jdbc:mysql://192.168.1.144:3306/leadtest?useUnicode=true&amp;characterEncoding=utf-8"/>
46
47 <!--配置SQLServer数据库的JNDI数据源-->
48 <Resource
49 name="sqlserverDataSource"
50 auth="Container"
51 type="javax.sql.DataSource"
52 maxActive="100"
53 maxIdle="30"
54 maxWait="10000"
55 username="sa"
56 password="p@ssw0rd"
57 driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver"
58 url="jdbc:sqlserver://192.168.1.51:1433;DatabaseName=demo"/>
59 </Context>

  3、在web项目的web.xml文件中引用配置好的JNDI数据源

 1  <!--
2 JNDI配置的资源引用:
3 • res-ref-name:表示引用资源的名称
4 • res-type:此资源对应的类型为javax.sql.DataSource
5 • res-auth:容器授权管理
6 -->
7 <!--Oracle数据库JNDI数据源引用 -->
8 <resource-ref>
9 <description>Oracle DB Connection</description>
10 <res-ref-name>oracleDataSource</res-ref-name>
11 <res-type>javax.sql.DataSource</res-type>
12 <res-auth>Container</res-auth>
13 </resource-ref>
14
15 <!--MySQL数据库JNDI数据源引用 -->
16 <resource-ref>
17 <description>MySQL DB Connection</description>
18 <res-ref-name>mysqlDataSource</res-ref-name>
19 <res-type>javax.sql.DataSource</res-type>
20 <res-auth>Container</res-auth>
21 </resource-ref>
22
23 <!--SQLServer数据库JNDI数据源引用 -->
24 <resource-ref>
25 <description>SQLServer DB Connection</description>
26 <res-ref-name>sqlserverDataSource</res-ref-name>
27 <res-type>javax.sql.DataSource</res-type>
28 <res-auth>Container</res-auth>
29 </resource-ref>

  经过以上3个步骤,针对具体web项目配置的JNDI数据源就算是配置好了。具体的测试和上述测试全局JNDI数据源的方式是一样的!

JNDI学习总结(2)——JNDI数据源的配置的更多相关文章

  1. JNDI学习总结(一)——JNDI数据源的配置

    一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Connec ...

  2. JNDI学习总结(一)——JNDI数据源的配置(转)

    一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)   ②连接数据库(Conn ...

  3. JNDI学习总结(一)——JNDI数据源的配置

    原文地址:http://www.cnblogs.com/xdp-gacl/p/3951952.html 一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动 ...

  4. Spring学习笔记之六(数据源的配置)

    1.前言 上一篇博客分析了,Spring中实现AOP的两种动态代理的机制,以下这篇博客.来解说一下Spring中的数据源的配置.  2.DAO支持的模板类 Spring提供了非常多关于Dao支持的模板 ...

  5. JNDI学习总结——Tomcat下使用C3P0配置JNDI数据源

    一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar

  6. JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源

    com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载D ...

  7. JNDI学习总结(4)——Tomcat下使用Druid配置JNDI数据源

    com.alibaba.druid.pool.DruidDataSourceFactory实现了javax.naming.spi.ObjectFactory,可以作为JNDI数据源来配置. 一.下载D ...

  8. JNDI数据源局部配置(解决Cannot create JDBC driver of class '' for connect URL 'null')

    最开始,我是借鉴 孤傲苍狼的JNDI教程去做的,他讲得很详细,但是坏处也就是因为他讲的太详细.查了很多书,都是建议说不要用全局去配置JNDI,一是要修改tomcat的server.xml,容易破坏to ...

  9. JNDI数据源的配置

    一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下:   ①加载数据库驱动程序(Class.forName("数据库驱动类");)   ②连接数据库(Conn ...

随机推荐

  1. ArcGIS api for javascript——明确的创建图层列表

    描述 本例展示了如何确切地创建一个地图服务里的图层列表.这个列表由HTML checkboxe组成,可用用于开关图层的可见性. 函数updateLayerVisibility()包含开关图层的逻辑.函 ...

  2. Intel Media SDK 性能測试

    经过測试,发如今windows 7上 i3 i5 上Intel Media SDK 1080P仅仅能解6路,720P仅仅能解8路, 不知大家有没有測试过?

  3. Python使用Redis实现一个简单作业调度系统

    Python使用Redis实现一个简单作业调度系统 概述 Redis作为内存数据库的一个典型代表,已经在非常多应用场景中被使用,这里仅就Redis的pub/sub功能来说说如何通过此功能来实现一个简单 ...

  4. HDU4565 So Easy! 矩阵高速幂外加数学

    easy 个屁啊,一点都不easy,题目就是要求公式的值,但是要求公式在最后的取模前的值向上取整.再取模,无脑的先试了高速幂 double  fmod来做,结果发现是有问题的.这题要做肯定得凑整数,凑 ...

  5. 在Fedora18上配置个人的Hadoop开发环境

    在Fedora18上配置个人的Hadoop开发环境 1.    背景 文章中讲述了类似于"personalcondor"的一种"personal hadoop" ...

  6. Spring MVC 待学习---新特性

    Spring3.1新特性 一.Spring2.5之前,我们都是通过实现Controller接口或其实现来定义我们的处理器类.   二.Spring2.5引入注解式处理器支持,通过@Controller ...

  7. Gallery滑动一页(一个Item)效果

    本文主要介绍如何使用Gallery只滑动一页以及其实现原理. Demo APK 可以方便的查看效果,在各大应用商店搜索 trinea android 下载即可,如:Google Play. 可运行代码 ...

  8. decimal.ToString("#0.00")与decimal.ToString("#.##")的区别

    decimal decTemp = 2.1m; Console.WriteLine(decTemp.ToString("#0.00")); //输出2.10 Console.Wri ...

  9. appid、appkey、appsecret、accesstoken,消息模板

    app_id, app_key, app_secret , 对于平台来说, 需要给你的 你的开发者账号分配对应的权限:1. app_id 是用来标记你的开发者账号的, 是你的用户id, 这个id 在数 ...

  10. ES6学习笔记(八)第七种类型Symbol

    1.概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突.比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突.如果有一种 ...