<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title></title>
    <description></description>
    <link>http://guyikun.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>Java Web 学习笔记---3(JDBC)</title>
        <author>guyikun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://guyikun.javaeye.com">guyikun</a>&nbsp;
          链接：<a href="http://guyikun.javaeye.com/blog/204659" style="color:red;">http://guyikun.javaeye.com/blog/204659</a>&nbsp;
          发表时间: 2008年06月17日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          JDBC是Java Web 应用程序开发中主要的API之一,负责对数据库的访问,再对数据库进行访问时java应用程序首先调用JDBC API,然后把访问语句提交给JDBC驱动器从而实现访问数据库的操作.<br />    JDBC主要包括了2个包:java.sql和javax.sql,他们几乎都是独立于数据库的.java.sql主要针对基本的数据库编程服务如连接,执行语句.javax.sql主要为数据库的高级操作提供接口和类,引入了容器管理的连接池和分布式事物等.<br />    JDBC软件包本身不能连接数据库,它只是一个API框架,需要通过数据库驱动程序或其他软件包提供方法.JDBC数据库驱动程序主要有JDBC-ODBC桥接驱动器,部分本机API的Java驱动器和纯Java驱动器.<br />JDBC API的核心组件有DriverManager类 ,Connection接口,Statement接口和ResultSet接口.<br />DriverManager类用于跟踪JDBC驱动程序并生成数据库连接.<br />Connection接口用于取得数据库信息,生成数据库语句并管理数据库连接.<br />Statement接口在基层连接运行SQL语句,生成结果集.<br />ResultSet接口用于访问SQL语句返回的数据,在读取结果时,可以使用next()方法定义每行数据并通过get()方法读取数据.<br /><br />    要访问数据库首先要装载驱动器,如<pre name="code" class="java">Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");</pre><br /><br />然后通过DriverManager类生成Connection对象连接数据库.如<pre name="code" class="java">String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=master";
Connection con = DriverManager.getConnection(url,"gyk","1234");</pre><br /><br />在数据库连接建立后可以通过Statement和PreparedStatement对象访问数据库.Statement对象允许执行简单的查询语句,executeQuery()方法执行简单的选择查询语句,并返回ResultSet对象,executeUpdate()方法执行INSERT,UPDATE,DELETE语句,返回int值,给出受查询影响的行数.如<pre name="code" class="java">Statement stmt=con.createStatement();
ResultSet rs=(ResultSet) stmt.executeQuery("SELECT*FROM customer");</pre><br /><br />PreparedStatement对象允许执行参数化的查询.如<pre name="code" class="java">
String sql = "SELECT*FROM customer where id=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1,"111");
ResultSet rs = ps.executeQuery();
</pre><br /><br />查询的结果一般就封装在ResultSet中,可以通过next()或getXXX()等方法读取数据.
          <br/>
          <span style="color:red;">
            <a href="http://guyikun.javaeye.com/blog/204659#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 17 Jun 2008 13:14:10 +0800</pubDate>
        <link>http://guyikun.javaeye.com/blog/204659</link>
        <guid>http://guyikun.javaeye.com/blog/204659</guid>
      </item>
      <item>
        <title>Java Web 学习笔记---2(JSP)</title>
        <author>guyikun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://guyikun.javaeye.com">guyikun</a>&nbsp;
          链接：<a href="http://guyikun.javaeye.com/blog/201078" style="color:red;">http://guyikun.javaeye.com/blog/201078</a>&nbsp;
          发表时间: 2008年06月06日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          JSP(Java Server Page)页面由HTML代码和Java代码组成,收到客户端请求后服务器对java代码进行处理,然后将生成的页面返回客户端浏览器.<br />一个JSP页面通常包含JSP指令,JSP脚本元素,JSP标准动作,JSP隐式对象.<br />JSP指令可分为三种类型:page指令(定义页面的一些属性,通知Servlet引擎有关JSP页面的一般设置),include指令(指定编译JSP页面时需要插入的文件名并成为JSP页面的一部分)和taglib指令(用来引入页面所要用到的标记库资源).<br /><pre name="code" class="java">...
&lt;%@ page language="java" pageEncoding="ISO-8859-1"%>
...
&lt;%@ include file="login.jsp"%>
...
&lt;%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> 
...</pre><br />JSP脚本元素主要包括声明,表达式和代码段.声明语句放在&lt;%!...%>内,以分号结尾,表达式用来直接插入值到输出(&lt;%=request.getParameter("username")>).代码段指包括在&lt;%...%>标记内的java代码.<br /><br />JSP标准动作包括forward,include和useBean动作.<br />&lt;jsp:forward>动作用来提交请求<br /><pre name="code" class="java">&lt;jsp:forward page="login.jsp">
&lt;jsp:param name="user" value="bobby">
&lt;/jsp:forward></pre><br />&lt;jsp:param>是&lt;jsp:forward>的子属性,传递附加的请求参数<br />&lt;jsp:include>在请求页面时用来插入文件到特定页面(*include指令只能包含静态页面或文档的内容而include动作可用于包含动态生成的输出结果).<pre name="code" class="java">&lt;jsp:include page="register.jsp" flush="true">/</pre><br />&lt;jsp:useBean>用来寻找并装入现有JavaBean,它有4个属性,id定义唯一标识bean的实例,class属性指出要实现的bean的对象的类,scope属性指出bean的使用范围,beanName指出bean的引用名.也可以通过&lt;jsp:setProperty>和&lt;jsp:getProperty>定义或获取bean的属性值<pre name="code" class="java">...
&lt;jsp:useBean id="mybean" class="com.guyikun.MyBean" scope="session"/>
&lt;jsp:setProperty name="mybean" property="name" value="guyikun"/>
...
&lt;jsp:getProperty name="mybean" property="name"/>
&lt;%out.println(mybean.getName())%>
...</pre><br />JSP的隐式对象是包含在JSP表达式与代码段中的某些预定义变量,是Servlet的类或对象的接口,有request,response,out,session,application,config,page,pageContext,exception共9个隐式对象用来实现javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,javax.servlet.http.HttpSession等接口.
          <br/>
          <span style="color:red;">
            <a href="http://guyikun.javaeye.com/blog/201078#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 06 Jun 2008 23:00:57 +0800</pubDate>
        <link>http://guyikun.javaeye.com/blog/201078</link>
        <guid>http://guyikun.javaeye.com/blog/201078</guid>
      </item>
      <item>
        <title>Java Web 学习笔记---1(Servlet)</title>
        <author>guyikun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://guyikun.javaeye.com">guyikun</a>&nbsp;
          链接：<a href="http://guyikun.javaeye.com/blog/199677" style="color:red;">http://guyikun.javaeye.com/blog/199677</a>&nbsp;
          发表时间: 2008年06月03日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          一个完整的Java Web 通常由表示层,控制层,业务层及数据访问层组成.表示层通常由HTML和JSP页面构建,控制层一般用Servlet,业务逻辑层则是JavaBean或EJB,数据访问层组件是JDBC或Hibernate.Java Web 的各组件在配置文件(.xml)中声明后打包,部署到Java Web 服务器(Tomcat...)中运行.<br />    Servlet是用java编写的服务器端程序,由于是个java类,具有可移植,可扩展等优点.通过javax.servlet 和javax.servlet.http包获得java的支持.尤其是javax.servlet.http 包提供了针对HTTP协议的方法包括处理HTTP请求和响应(HttpServlet类),分别由doGet()和doPost()进行处理.<pre name="code" class="java">protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,java.io.IOException;
protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,java.io.IOException;</pre><br />对于客户请求的处理(HttpServletRequest类)<br /><pre name="code" class="java">HttpServletRequest request;
String name = request.getParameter("username");
</pre><br />以HTML形式把请求发送给客户(HttpServletResponse类)<br /><pre name="code" class="java">HttpServletResponse response;
response.sendredirect("index.jsp");</pre><br />记录当前Servlet中的用户会话(HttpSession类)<br /><pre name="code" class="java">HttpServletRequest request;
HttpSession session = request.getSession(true);</pre><br />把Servlet的请求提交或委派给另一资源(RequestDispatcher类),RequestDispatcher指向特定资源的URL,可通过HttpServletRequest 对象的getRequestDispatcher()方法生成.<pre name="code" class="java">RequestDispatcher rd = request.getRequestDispatcher("WELCOME.JSP");
rd.forward(request,response);</pre><br />由于在Java Web中Servlet通常作为控制器组件,需要在配置文件(web.xml)中进行声明.<br /><pre name="code" class="java">
web.xml
...
&lt;servlet>
 &lt;servlet-name>myServlet&lt;/servler-name>
 &lt;servlet-class>myServlet&lt;/servlet-class>
&lt;/servlet>
&lt;servlet-mapping>
 &lt;servlet-name>myServlet&lt;/servlet-name>
 &lt;url-pattern>/myServlet&lt;/url-pattern>
&lt;/servlet-mapping>
...</pre>
          <br/>
          <span style="color:red;">
            <a href="http://guyikun.javaeye.com/blog/199677#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 03 Jun 2008 11:48:16 +0800</pubDate>
        <link>http://guyikun.javaeye.com/blog/199677</link>
        <guid>http://guyikun.javaeye.com/blog/199677</guid>
      </item>
      <item>
        <title>BDD简介---2</title>
        <author>guyikun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://guyikun.javaeye.com">guyikun</a>&nbsp;
          链接：<a href="http://guyikun.javaeye.com/blog/199317" style="color:red;">http://guyikun.javaeye.com/blog/199317</a>&nbsp;
          发表时间: 2008年06月02日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          由上述我们可以知道，BDD是由1个或2个终端节点（0或1）出度为2（low(u)和high(u)）图所组成的，它把BDT从2n 个节点进行裁减，从而减少空间复杂度，然而却增加了时间复杂度，为使其了更有效，我们引入OBDD和R（O）BDD的概念。<br />    OBDD（Ordered Binary Decision Digram）是所有BDD路径都是基于给定线性序列的BDD。如图2 就是 遵循x1&lt;y1&lt;x2&lt;y2的线性序列。     <br />    R（O）BDD则满足：a 没有2个不同得节点u,v使之满足 var(u)=var(v),low(u)=low(v),high(u)=high(v)<br />                           b 没有节点u拥有相同的后继，即low(u)¹higt(u)<br />    如图3：<br /><img src="C:\Documents and Settings\gyk\桌面\bdd-picture\111.bmp" /><br />    R（O）BDD有些有趣的特性,它提供了一种紧凑,高效的布尔表示,对于所有函数<br />f: Bn à B总有一个R（O）BDD去表述,同时由于R（O）BDD总为真或假,对它的测试也是在有限时间范围内的(NP--完全),它的终端节点总是一个布尔值,非终端节点则是INF表达式,分别表示:<br />              t0 = 0<br />              t1 = 1<br />tu = var(u)à thigh(u) , tlow(u)    ,u是节点变量<br /><br />    另外如果是有序的BDD,我们把与每个节点u有关的函数fu映射到(b1,b2…bn)ÎBn 满足 tu[b1/x1,b2/x2,……bn/xn].我们可以得到以下引理<br />    引理1:对于任何函数 f: Bn à B总有一个ROBDD去表述,u是变量有序的x1&lt;x2…&lt;xn 且 fu = f(x1,x2…xn).<br />对于变量的有序选择对ROBDD的构建有重要的影响,如我们如果按x1&lt;x2&lt;y1&lt;y2的序列构造(x1&lt;=>y1) ∧(x2&lt;=>y2),可得<br /><img src="C:\Documents and Settings\gyk\桌面\bdd-picture\333.bmp" /><br />    有了ROBDD的概念后,就可以使BDD的算法更容易被表述,例还是对(x1&lt;=>y1) ∧(x2&lt;=>y2 按照x1&lt;y1&lt; x2&lt;y2的有序表述(图2),同时对节点u标号,我们可以得到如下表: <br /><img src="C:\Documents and Settings\gyk\桌面\bdd-picture\1.jpg" /><br />   由此,我们得到了一个更为简便的BDD表述.
          <br/>
          <span style="color:red;">
            <a href="http://guyikun.javaeye.com/blog/199317#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 02 Jun 2008 10:36:34 +0800</pubDate>
        <link>http://guyikun.javaeye.com/blog/199317</link>
        <guid>http://guyikun.javaeye.com/blog/199317</guid>
      </item>
      <item>
        <title>BDD简介 ---1</title>
        <author>guyikun</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://guyikun.javaeye.com">guyikun</a>&nbsp;
          链接：<a href="http://guyikun.javaeye.com/blog/198052" style="color:red;">http://guyikun.javaeye.com/blog/198052</a>&nbsp;
          发表时间: 2008年05月28日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          BDD(Binary Decision Digrams)是最新流行于人工智能模型诊断方面的一种求解算法,主要用于诊断求解,配置和约束满足等方面,下面我将对BDD做一下简单的介绍.<br />    在学习BDD之前首先要有一点离散数学的基本概念,知道∧,∨,﹁,=>,&lt;=>等基本符号的意义和各范式的表达,定义if-then-else 操作为:  x=>y0,y1 = (x∧y0) ∨(x∧y1)<br />所以x=>y0,y1 为真时当且仅当x ,y0同为真或x为假,y1为真.从这种if-then-else 操作演化来的形式被称作if-then-else Normal Form(INF).我们指定布尔表达式t[0/x],不难发现,对于t的山农扩展 t = x =>t[1/x],t[0/x] 是基于x的布尔值的,而对于任何的布尔表达式都可以转化为INF的表示方式.<br />例如:给定布尔表达式 t = (x1&lt;=>y1) ∧(x2&lt;=>y2) .我们可以通过对变量x1,x2,y1,y2的选择设定找到一个INF表达从而实现山农扩展.我们给定:<br />      t    =  x1  => t1  ,  t0<br />      t0   =  y1  => 0   ,  t00<br />      t1   =  y1  => t11  ,  0<br />      t00  =  x2  => t001 ,  t000<br />      t11  =  x2  => t111 ,  t110<br />      t000 =  y2 => 0 , 1<br />      t001 =  y2 => 1 ,0<br />      t110 =  y2 => 0 ,1<br />      t111 =  y2 => 1,0<br /><img src="C:\Documents and Settings\gyk\桌面\bdd-picture\dt.bmp" alt="" /><br />               图1 决策树<br />    从上图我们可以看到决策树其实就是一个完全的二叉树,可以说是对所有可能性的一种枚举,但是不难发现,给定中很多变量取值都是相同的,如我们可以用t000取代t110…,而对于子表达式的等价取代我们就可以得到一个图,BDD(Binary Decision Digrams)图! 通过取代,我们可以得到:<br />      t    =  x1  => t1  ,  t0<br />      t0   =  y1  => 0   ,  t00<br />      t1   =  y1  => t00  ,  0<br />      t00  =  x2  => t001 ,  t000<br />      t000 =  y2 => 0 , 1<br />      t001 =  y2 => 1 ,0<br /><img src="C:\Documents and Settings\gyk\桌面\bdd-picture\bdd.bmp" alt="" /><br />    从而一个简单的BDD就出来了.
          <br/>
          <span style="color:red;">
            <a href="http://guyikun.javaeye.com/blog/198052#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Wed, 28 May 2008 23:57:00 +0800</pubDate>
        <link>http://guyikun.javaeye.com/blog/198052</link>
        <guid>http://guyikun.javaeye.com/blog/198052</guid>
      </item>
  </channel>
</rss>