ZeroBlue

留出时间,让自己微笑。
posts - 6, comments - 12, trackbacks - 0, articles - 0
   :: 首页 ::  :: 联系 ::  :: 管理

2006年8月30日

数据库锁的概念,类型,排锁语句:
锁是数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性。 我们知道,多个用户能够同时操纵同一个数据库中的数据,会发生数据不一致现象。即如果没有锁定且多个用户同时访问一个数据库,则当他们的事务同时使用相同的数据时可能会发生问题。这些问题包括:丢失更新、脏读、不可重复读和幻觉读。

找出表A中M字段大于500,Y(日期)早于当前数据库一天,X字段取值不重复的记录:
select * from A where x in
(select x from A group by x having count(x)=1)
and m >500 and y < getdate()-1;

从表A中统计X字段的不同取值数并只把记录数多于5的找出:
select * from A where x in (select x from A group by x having count(x)>5)

设表B结构与表A相同,将B中n字段值大于500的记录插入A
insert into A select * from B where n>500


对表A,建立和删除M,N字段联合唯一索引:
CREATE UNIQUE  INDEX myclumn_index ON A(x,y)
DROP INDEX A.myclumn_index 
 注意:当你的内存容量或硬盘空间不足时,也许你不想给一个表增加索引。对于包含索引的数据库,SQL Sever需要一个可观的额外空间。例如,要建立一个聚簇索引,需要大约1.2倍于数据大小的空间。要看一看一个表的索引在数据库中所占的空间大小,你可以使用系统存储过程sp_spaceused,对象名指定为被索引的表名。

posted @ 2007-03-01 20:32 zeroblue 阅读(252) | 评论 (0)编辑 收藏

节选自《程序员》2006年第9期《茶杯里的风暴》一文,作者:金尹。如下:
  P2P网络向传统应用的渗透,将对Ruby、Python这些新兴的编程语言提出巨大的挑战。首先在P2P网络中单个运算节点上的程序并不需要像Web服务那样保持24×7稳定,也不需要支持大容量并发计算。Ruby、Python这些语言的快速开发优势得以显著地体现,他们将是未来桌面的主力开发语言。其次,为了共享P2P覆盖网上分散的计算资源,分布式计算所需的容错能力、分布式存储格式、算法、支持库乃至语言级别的支持都纳入到新语言的规划当中;最后,到我们的计算机上出现越来越多的客户端小程序时,为每一个程序开启一个庞大的虚拟机将是一个非常糟糕的办法,那么在共享虚拟机上,我们如何提供对多核的支持?而这些多核的虚拟机特性又如何从语言层面、支持库层面展现给开发者,同时又不失去语言的简洁特性?这些都是我们不能回避的话题!
  AJAX、Ruby窜红并非是一场茶杯里的风暴,而是巨大冰山的一角。无论是服务端还是客户端,并行/分布式计算的巨大需求都向编程语言提出严峻的挑战。然而目前大多数的编程语言设计之初并不关注并行/分布式计算,这些语言中的许多经典特性(比如OO)在并行/分布式计算上变成了捆住程序员的锁链。工欲善其事,必先利其器。在并行/分布式计算领域中我们必须抛弃原有的经验、习惯、以一种新的思维面对新的世界。

  再回过头来看看下面这篇文章:
         http://www.cnblogs.com/sharenet/archive/2006/05/18/403517.aspx

posted @ 2006-09-01 14:49 zeroblue 阅读(1577) | 评论 (7)编辑 收藏

Step 1:配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation
="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>

    
<display-name>springapp</display-name>
        
    
<servlet>
        
<servlet-name>springMVC</servlet-name>
        
<servlet-class>
            org.springframework.web.servlet.DispatcherServlet
        
</servlet-class>
        
<load-on-startup>1</load-on-startup>
    
</servlet>

    
<servlet-mapping>
        
<servlet-name>springMVC</servlet-name>
        
<url-pattern>/page/*</url-pattern>
    
</servlet-mapping>

</web-app>
servlet-mapping定义所有以/page/开头的url请求都会被spring 的DispatcherServlet处理转发。默认情况下DispatcherServlet会读取<servlet-name>-servlet.xml文件的配置信息初始化,该文件中urlMapping的定义决定当前请求转发给哪个controller来处理。

Step2:定义/WEB-INF/springMVC-servlet.xml
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>
    
<!-- 方法名解析器 -->
    
<bean id="InternalPathMethodNameResolver"
        class
="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver" />
        
    
<!-- 视图解析器 -->
    
<bean id="viewResolver"
        class
="org.springframework.web.servlet.view.InternalResourceViewResolver">
        
<property name="viewClass">
            
<value>org.springframework.web.servlet.view.JstlView</value>
        
</property>
    
</bean>
    
    
<bean id="controller" class="com.controller.IndexController">
        
<property name="methodNameResolver">
            
<ref bean="InternalPathMethodNameResolver" />
        
</property>
    
</bean>

    
<bean id="urlMapping"
        class
="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        
<property name="mappings">
            
<props>
                
<prop key="/controller/*">controller</prop>
            
</props>
        
</property>
    
</bean>
</beans>
urlMapping定义/controller/开头的url请求由名字为controller的控制器来处理,因为是多动作处理器,所以要定义MethodNameResolver来告诉springMVC应该调用controller的哪个方法,这里用的是InternalPathMethodNameResolver,该方法名解释器会把整个URL中最后一个"/"和最后一个"."之间的部分作为要调用的方法名

Step3:定义controller类并继承MultiActionController 
package com.controller;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.multiaction.MultiActionController;

public class IndexController extends MultiActionController {
    
    
public ModelAndView method1(HttpServletRequest request,
            HttpServletResponse respnose) 
throws ServletException, IOException {
        Map model 
= new HashMap();
        model.put(
"message""你调用的是方法1");
        
return new ModelAndView("/index.jsp""model", model);
    }

    
    
public ModelAndView method2(HttpServletRequest request,
            HttpServletResponse respnose) 
throws ServletException, IOException {
        Map model 
= new HashMap();
        model.put(
"message""你调用的是方法2");
        
return new ModelAndView("/index.jsp""model", model);
    }

}


通过配置文件,访问上面这个controller中某个方法的url即为:localhost:8080/page/controller/方法名


Step4:/index.jsp
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt"%> 


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head></head>  
<body>

    
<c:out value="${model.message}"/>
</body>
</html>
因为InternalPathMethodNameResolver方法名解释器会把整个URL中最后一个"/"和最后一个"."之间的部分作为要调用的方法名,所以你可以在这个URL后面加任意文件格式的后缀,比如:
localhost:8080/page/controller/method1.jsp

localhost:8080/page/controller/method2.html
很爽吧,和真实的URL地址一样。


另:开发环境:MyEclipse5.0M2+tomcat5.5
  需要用到spring.jar和jstl.jar两个包。

附:源代码下载

posted @ 2006-08-31 13:39 zeroblue 阅读(10044) | 评论 (3)编辑 收藏

 

package  com.schedule;

import  java.io.BufferedReader;
import  java.io.FileOutputStream;
import  java.io.IOException;
import  java.io.InputStreamReader;
import  java.io.OutputStreamWriter;
import  java.net.HttpURLConnection;
import  java.net.MalformedURLException;
import  java.net.URL;
import  java.util.HashMap;
import  java.util.Iterator;
import  java.util.Map;

public   class  StaticPageService  {
    
private  Map < String, String >  urlMap;

    
private  String realPath;

    
public   void  createFile()  {
        
if  (urlMap  ==   null {
            
throw   new  NullPointerException( " The url map is should not be null! " );
        }

        Iterator
< String >  keys  =  urlMap.keySet().iterator();
        String inputLine;
        String enter 
=   " \n " ;
        StringBuffer buffer 
=   new  StringBuffer();
        
try   {
            
while  (keys.hasNext())  {
                String key 
=  keys.next();
                URL url 
=   new  URL(key);
                HttpURLConnection uc 
=  (HttpURLConnection) url.openConnection();
                BufferedReader in 
=   new  BufferedReader( new  InputStreamReader(uc.getInputStream()));
                
if (buffer.length() > 0 )buffer.delete( 0 ,buffer.length());
                
while  ((inputLine  =  in.readLine())  !=   null {
                    buffer.append(inputLine);
                    buffer.append(enter);
                }

                String file 
=  realPath  +  urlMap.get(key);
                OutputStreamWriter fw 
=   new  OutputStreamWriter(
                        
new  FileOutputStream(file),  " GBK " );
                fw.write(buffer.toString());
                in.close();
                fw.close();
            }

        }
  catch  (MalformedURLException e)  {
            e.printStackTrace();
        }
  catch  (IOException e)  {
            e.printStackTrace();
        }

    }


    
/**
     * 
@param  urlMap
     *            the urlMap to set
     
*/

    
public   void  setUrlMap(Map < String, String >  urlMap)  {
        
this .urlMap  =  urlMap;
    }


    
/**
     * 
@param  realPath
     *            the realPath to set
     
*/

    
public   void  setRealPath(String realPath)  {
        
this .realPath  =  realPath;
    }


    
public   static   void  main(String[] args)  {
        StaticPageService service 
=   new  StaticPageService();
        Map
< String, String >  urlMap  =   new  HashMap < String, String > ();
        
// map的key为要生成静态页面的url,value为生成后的静态文件保存的路径
        urlMap.put( " http://localhost:8080/index.jsp " " /temp/index1.html " );
        urlMap.put(
" http://www.yahoo.com.cn/ " " /temp/index2.html " );
        
// 此参数用来设置当前Web应用的真实路径
        service.setRealPath( " d: " );
        service.setUrlMap(urlMap);
        service.createFile();
    }


}

posted @ 2006-08-30 11:33 zeroblue 阅读(1025) | 评论 (2)编辑 收藏

  最近学习的兴趣很浓,昨夜本想look look专业方面的东东。打开笔记本发现没声音,初以为是软件故障,故重装驱动,不灵。怀疑中了病毒,于是升级最新补丁、杀毒。果然报告有病毒,操刀杀之,依旧不灵。嗯,是不是因为病毒破坏了系统文件?干脆Ghost恢复,我做了系统备份,哇哈哈。
  一番折腾,重新启动电脑,……涛声依旧……。此时方才大悟,是硬件本身出了问题,不会修,只有对着哭的份了。
  算了,用台式机。丫竟然一到windows画面就重启!!打开机箱,细细检查了一通,把零件拔下重插,开机,照旧。此时我已经有点脑充血了。
  拿出手头的工具盘,检查磁盘时提示有N处数据错误,无法恢复。只好忍痛格掉C盘,进行磁盘检查,然后Ghost恢复。谁知Ghost恢复后的系统竟然无法启动。彻底崩溃。
  只好全新安装操作系统,以下的动作全然是幽灵附体,本人毫无知觉。
  此时凌晨一点,万籁寂静,只余一男子独立桌前,欲哭无泪……

posted @ 2006-08-30 11:20 zeroblue 阅读(261) | 评论 (0)编辑 收藏