<?xml version="1.0" encoding="gb2312"?><rss version="2.0"><channel> <title>北大青鸟成都名流 文章 RSS</title><copyright><![CDATA[Powered by CixiBlog V3.0CityBlogV1.0]]></copyright><item><pubDate><![CDATA[2008-11-1 17:29:10]]></pubDate><title><![CDATA[定义DataTable架构]]></title><link><![CDATA[http://blog.cd-accp.com/User1/1013/Show.asp?/_articleid/1673.html]]></link><description><![CDATA[DataTable是描述内存结构中的一个表，它是一个二维的数据表结构，在定义DataTable架构的时候，应首先定义数据表的数所列(即字段)再添加行(即数据记录),在定义DataTable架构的时候，应为每个字段指定名称和数据类型，其中数据类型使用Type类的静态方法GetType指定.另外在向数据表中添加记录时，记录中各个字段的数据类型必须与指定字段的数据类型一致。 
    步骤：1：创建Windwos应用程序，名字随你便。
          2：在窗体中拖个DataGridView控件，至于事件怎么写随你便
    DataTable 是 ADO.NET 库中的核心对象。其他使用 DataTable 的对象包括 DataSet 和 DataView。
    下面就给的示列代码
            DataTable dt = new DataTable("管理员");
            DataColumn dcid = new DataColumn("ID");
            dcid.DataType = System.Type.GetType("System.Int64");
            dt.Columns.Add(dcid);
            DataRow row = dt.NewRow();
            DataColumn name = new DataColumn("名字");
            name.DataType = System.Type.GetType("System.String");
            dt.Columns.Add(name);
            row["ID"] = 123;
            row["名字"] = "abc";
            dt.Rows.Add(row);
            this.dataGridView1.DataSource = dt.DefaultView;
]]></description></item><item><pubDate><![CDATA[2008-10-23 18:08:44]]></pubDate><title><![CDATA[艺术的天堂]]></title><link><![CDATA[http://blog.cd-accp.com/User1/911/Show.asp?/_articleid/1672.html]]></link><description><![CDATA[艺术的天堂]]></description></item><item><pubDate><![CDATA[2008-10-9 11:14:50]]></pubDate><title><![CDATA[俞敏洪在北京大学2008年开学典礼上的演讲辞]]></title><link><![CDATA[http://blog.cd-accp.com/User1/595/Show.asp?/_articleid/1671.html]]></link><description><![CDATA[[color=Orange]各位同学、各位领导：

大家上午好！（掌声）

非常高兴许校长给我这么崇高的荣誉，谈一谈我在北大的体会。（掌声）
　　可以说，北大是改变了我一生的地方，是提升了我自己的地方，使我从一个农村孩子最后走向了世界的地方。毫不夸张地说，没有北大，肯定就没有我的今天。北大给我留下了一连串美好的回忆，大概也留下了一连串的痛苦。正是在美好和痛苦中间，在挫折、挣扎和进步中间，最后找到了自我，开始为自己、为家庭、为社会能做一点事情。
　　学生生活是非常美好的，有很多美好的回忆。我还记得我们班有一个男生，每天都在女生的宿舍楼下拉小提琴，（笑声）希望能够引起女生的注意，结果后来被女生扔了水瓶子。我还记得我自己为了吸引女生的注意，每到寒假和暑假都帮着女生扛包。（笑声、掌声）后来我发现那个女生有男朋友，（笑声）我就问她为什么还要让我扛包，她说为了让男朋友休息一下（笑声、掌声）。我也记得刚进北大的时候我不会讲普通话，全班同学第一次开班会的时候互相介绍，我站起来自我介绍了一番，结果我们的班长站起来跟我说：“俞敏洪你能不能不讲日语？”（笑声）我后来用了整整一年时间，拿着收音机在北大的树林中模仿广播台的播音，但是到今天普通话还依然讲得不好。
　　人的进步可能是一辈子的事情。在北大是我们生活的一个开始，而不是结束。有很多事情特别让人感动。比如说，我们很有幸见过朱光潜教授。在他最后的日子里，是我们班的同学每天轮流推着轮椅在北大里陪他一起散步。（掌声）每当我推着轮椅的时候，我心中就充满了对朱光潜教授的崇拜，一种神圣感油然而生。所以，我在大学看书最多的领域是美学。因为他写了一本《西方美学史》，是我进大学以后读的第二本书。
　　为什么是第二本呢？因为第一本是这样来的，我进北大以后走进宿舍，我有个同学已经在宿舍。那个同学躺在床上看一本书，叫做《第三帝国的兴亡》。所以我就问了他一句话，我说：“在大学还要读这种书吗？”他把书从眼睛上拿开，看了我一眼，没理我，继续读他的书。这一眼一直留在我心中。我知道进了北大不仅仅是来学专业的，要读大量大量的书。你才能够有资格把自己叫做北大的学生。（掌声）所以我在北大读的第一本书就是《第三帝国的兴亡》，而且读了三遍。后来我就去找这个同学，我说：“咱们聊聊《第三帝国的兴亡》”，他说：“我已经忘了。”（笑声）
　　我也记得我的导师李赋宁教授，原来是北大英语系的主任，他给我们上《新概念英语》第四册的时候，每次都把板书写得非常的完整，非常的美丽。永远都是从黑板的左上角写起，等到下课铃响起的时候，刚好写到右下角结束。（掌声）我还记得我的英国文学史的老师罗经国教授，我在北大最后一年由于心情不好，导致考试不及格。我找到罗教授说：“这门课如果我不及格就毕不了业。”，罗教授说：“我可以给你一个及格的分数，但是请你记住了，未来你一定要做出值得我给你分数的事业。”（掌声）所以，北大老师的宽容、学识、奔放、自由，让我们真正能够成为北大的学生，真正能够得到北大的精神。当我听说许智宏校长对学生唱《隐形的翅膀》的时候，我打开视频，感动得热泪盈眶。因为我觉得北大的校长就应该是这样的。（掌声）
　　我记得自己在北大的时候有很多的苦闷。一是普通话不好，第二英语水平一塌糊涂。尽管我高考经过三年的努力考到了北大——因为我落榜了两次，最后一次很意外地考进了北大。我从来没有想过北大是我能够上学的地方，她是我心中一块圣地，觉得永远够不着。但是那一年，第三年考试时我的高考分数超过了北大录取分数线七分，我终于下定决心咬牙切齿填了“北京大学”四个字。我知道一定会有很多人比我分数高，我认为自己是不会被录取的。没想到北大的招生老师非常富有眼光，料到了三十年后我的今天。（掌声）但是实际上我的英语水平很差，在农村既不会听也不会说，只会背语法和单词。我们班分班的时候，五十个同学分成三个班，因为我的英语考试分数不错，就被分到了A班，但是一个月以后，我就被调到了C班。C班叫做“语音语调及听力障碍班”。（ 笑声）
　　
　　我也记得自己进北大以前连《红楼梦》都没有读过，所以看到同学们一本一本书在读，我拼命地追赶。结果我在大学差不多读了八百多本书，用了五年时间（掌声）。但是依然没有赶超上我那些同学。我记得我的班长王强是一个书癖，现在他也在新东方，是新东方教育研究院的院长。他每次买书我就跟着他去，当时北大给我们每个月发二十多块钱生活费，王强有个癖好就是把生活费一分为二，一半用来买书，一半用来买饭菜票。买书的钱绝不动用来买饭票。如果他没有饭菜票了就到处借，借不到就到处偷。（笑声）后来我发现他这个习惯很好，我也把我的生活费一份为二，一半用来买书，一半用来买饭菜票，饭票吃完了我就偷他的。（笑声掌声）
　　毫不夸张地说，我们班的同学当时在北大，真是属于读书最多的班之一。]]></description></item><item><pubDate><![CDATA[2008-10-4 8:56:19]]></pubDate><title><![CDATA[Struts2]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1670.html]]></link><description><![CDATA[Struts2 将在Struts中的Action与Form融合在了一起,其中的核心之一就是拦截器的使用;

关于运行的服务器:由于许多服务器对struts2支持的不完善,(其中加入的dtd文件的支持http://struts.apache.org/dtds/struts-2.0.dtd),

我在运行时使用的Tomacat5.5.17,jBoss4.0都会报错,后来使用JBuilder自带的第三方的服务器问题解决,

其名称为:jakarta-tomcat-5.5.9;如果一定要用原来的服务器,请Online,Eclipse自动连接到Apach的网站上加载dtd的相关文件;


1.添加架包,struts2的核心架包有如下几个:antlr-2.7.2.jar,commons-validator-1.3.0.jar,freemarker-2.3.8.jar,

  ognl-2.6.11.jar,struts2-core-2.0.11.jar,xml-apis-1.0.b2.jar,xwork-2.0.4.jar;

2.添加web文件夹,创建BasicAction类文件同时继承自ActionSupport,在类文件的头部加入Annotation(注释),

 //其中的name代表的是页面的名字(默认即为小写),value代表解析后的值(以下为页面跳Action再跳页面)
  @Results({@Result(name="custom",type=NullResult.class,value="${custom}.jsp")})

 //由actin跳到页面
 @Results( { @Result(name = "page", type = NullResult.class, value = "${page}.jsp"),
//由actin跳到action
 @Result(name="action",type=ServletActionRedirectResult.class,value="${action}.html")})

 如果需要在页面之间传递或显示数据,需要在本类内部声明(名称任意),同时封装为字段;

 如果是Action跳Action,也是在本类中声明,同时声明一个返回为字符串的方法其参数也为字符串,通过setXXX(参数名),然后返回;

3.在同一文件夹下创建Login类文件,继承自BasicAction,声明属性(其名称需要与页面显示的数据的id一致);

4.struts.xml文件的配置:

<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration
 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
 <struts>
        //开发者模式
	<constant name="struts.devMode" value="true" />
        //自动加载配置文件
	<constant name="struts.configuration.xml.reload" value="true" />
        //指定文件的编码格式为GBK
	<constant name="struts.i18n.encoding" value="GBK" />
        //指定Action文件的访问路径为xxx.html
	<constant name="struts.action.extension" value="html" />
</struts>

3.web.xml文件的配置

<?xml version="1.0" encoding="gbk"?>
<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">
        //设置过滤器
	<filter>
		<filter-name>struts2</filter-name>
		<filt]]></description></item><item><pubDate><![CDATA[2008-10-4 8:55:49]]></pubDate><title><![CDATA[SSH框架(基于Spring2.0,Struts1.1,Hibernate3的框架技术)]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1669.html]]></link><description><![CDATA[文件的层次的特别的地方:

 1. domain: 实体层的类均实现Serializable(序列化);

    dao: 数据层Dao必须继承自HibernateDaoSupport;

    service: 业务层xxxService创建成接口类型,其内容只有一个(或多个)方法的声明,同时保持与Dao中的方法的一致;

   依然在业务层xxxServiceImp创建类文件,同时实现xxxService的所有的方法;同时它有一个私有的XxxDao属性,

   同时添加setXxxDao,getXxxDao;

   web: 在web层创建XxxAction类文件,它继承自DispatcherAction,有私有的XxxService属性,重写父类的execute方法,同时该为需要的名字,

   注意需要获得数据的地方使用xxxService来获得;

2.配置的步骤:

  1).为已经创建的工程添加SPRING的支持,通常的架包支持为:AOP,CORE,JDBC,REMOTING,TESTING,Hibernate Core,Hibernate Advance;

     在下一步中将applicationContext.xml改名为spring.xml; 在src文件夹下创建action.xml文件;

    其中action.xml文件的内容依次为:
   
    其中xml配置文件的书写为：

   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    
    <!-- 第一步:将DAO注入SPRING -->
    <bean id="familyDao" class="com.dao.FamilyDao">
        <property name="sessionFactory">
         <ref bean="sessionFactory"/>
        </property>
    </bean>

     <!-- 第二步:将SERVICE实现类注入进SPRING -->
   <bean id="loginTempService" class="com.dao.FamilyServiceImp">
        <property name="familyDao">
         <ref bean="familyDao"/>
        </property>
    </bean>

  <!-- 第三步:将SERVICE纳入事物代理的管理之下 -->
  <bean id="familyService" parent="transactionProxy">
     <property name="target">
      <ref bean="loginTempService"/>
     </property>
   </bean>

<!-- 最后将action注入进 spring -->
    <bean name="/login" class="com.web.LoginAction" singleton="false">
   <property name="familyService">
         <ref bean="familyService"/>
        </property>
  </bean>

  2).添加Hibernate支持,选择Core Libraries,Advanced Support Libraries,Spring 2.0 Persistance Core Libraries,

    同时选择将配置文件写入/WebRoot/WEB-INF/lib;在第二步中选择SpringConfigurationfile(appliactionContext.xml),

    在第三步选择Existing SpringConfiguration file,同时将sessionFactory的配置加入到Session Factory ID的文本框中;

    最后选择已经配置好的数据源,单击完成;

    其中spring.xml的文件配置如下:
    <!--头文件的声明:-->
  <?xml ver]]></description></item><item><pubDate><![CDATA[2008-10-4 8:55:12]]></pubDate><title><![CDATA[Hibernate:QBC查询]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1668.html]]></link><description><![CDATA[(还有更详尽的描述请查阅孙卫琴编著的<<精通Hibernate:Java对象持久化技术祥解>>)


Criteria(标准)

QBC查询与在以前在简单工厂模式中碰到的PrepareStatement类似,

可以借助它实现模糊查询，组合条件查询等等；

QBC查询的步骤:

1.通过Hibernate创建数据源,创建实体类，同时注意该类必须实现

  java.io.Serializable下的Serialzable接口;创建类的成员，一般情况下，
 
  请务必保持表的字段名称与实体类中的属性名相同;创建xxx.hbm.xml配置文件;

2.在自动生成的hibernate.cfg.xml中添加以下内容,

 <property name="hibernate.show_sql">true</property>//显示hibernate操作时的SQL语句
 <mapping resource="com/domain/animal.hbm.xml"/>//映射文件的路径为com/domain.animal/hbm.xml;

3.数据层的测试方法(在本例中Session的创建,关闭及Transaction的开启,关闭已经省略)

 在通常的Query查询中我们使用的语句为:

list=session.createQuery("From Animal where name='Dü?¨'").list();

或将上句一分为二：String sql="From Animal where name='熊猫'"; list=session.CreateQuery(sql).list();

 在使用QBC查询时我们使用的语句有所不同:

 Criteria criteria = session.createCriteria(Animal.class);\\获得实体类的对象

 list=criteria.add(Expression.eq("name", "Dü?¨")).list();

 \\为查询添加条件,同时转换成所需要的数据类型;其中eq代表相同的(Equal)，

  between代表在两者之间的范围;

  like像.....; 

  in 在....里;

  isEmpty为空

  isNotEmpty不为空

  le小于等于; 

  ne:不等于;

  ge:大于等于;
]]></description></item><item><pubDate><![CDATA[2008-10-4 8:54:19]]></pubDate><title><![CDATA[spring:AOP接口注入模式]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1667.html]]></link><description><![CDATA[1.AOP:即面向方面编程,切点编程(Aspect Object Programme)

2.AOP的实际含义是将所有实体类中共有的方法(或其他公共属性),

  通过接口的方式加以抽象,在实际使用中将这些公共的，已经部分加强的内容称为切点;

  在业务层访问时只是访问这些接口中定义的方法即可;

3.具体的配置:
 1).新建Web工程,建立相应的包;添加SPRING对工程的支持;

 2).在实体层(例如:com/domain)文件夹下建立一个接口,例如User,添加任意的方法;至少有一个输入;

 3).依然在该文件夹下新建一个类,必须使其实现前面的自己定义的接口及方法;例如:UserImpl(请注意其命名的方式);

 4).新建类文件,使其继承并实现org.springframework.aop.MethodBeforeAdvice中的MethodBeforeAdvice接口,

   重写其方法public void before(Method arg0, Object[] arg1, Object arg2);

 5).配置文件:
 
  <!-- 1.注入实体类 -->
	<bean id="targetBean" class="com.domain.PostImpl" />
	<!-- 2.注入AOP Before 增强器 -->
	<bean id="before" class="com.domain.PostBefore" />
   <!-- 3.注入AOP After   增强器 -->
   <bean id="after" class="com.domain.PostAfter"/>
   <!-- 4.配置前置切点匹配器 -->
	<bean id="advisor"
		class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
		<!-- 5.配置前置增强器 -->
		<property name="advice">
		<!-- 6.指向增强器所在的位置 -->
			<ref local="before" />
		</property>
      <!--7.需要对哪些实体类项目的方法进行提取增强-->
		<property name="patterns">
			<list>
				<value>com.domain.Post.sendPost</value>
			</list>
		</property>
	</bean>
	<!-- 配置后置切点匹配器 -->
	<bean id="test" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
	 <property name="advice">
	 <ref local="after"/>
	 </property>
	 
	 <property name="patterns">
			<list>
				<value>com.domain.Post.sendPost</value>
			</list>
		</property>
	</bean>

   <!--配置代理的实体类工厂  -->
	<bean id="factoryBean"
		class="org.springframework.aop.framework.ProxyFactoryBean">
		<!-- 配置要代理的接口 -->
		<property name="proxyInterfaces">
		<!-- 配置代理的实体类 -->
			<value>com.domain.Post</value>
		</property>
		
		
		<property name="target">
		<ref local="targetBean"/>
		</property>

     <!--拦截被增强的切点  -->
     <property name="interceptorNames">
     <list>
     <value>advisor</value>
     <value>test</value>
     </list>
     </property>
	</bean>

6.测试
   
   //声明实体类对象,调用方法;请留意这里使用的是在前面自己首先定义的那个接口
]]></description></item><item><pubDate><![CDATA[2008-10-4 8:54:02]]></pubDate><title><![CDATA[spring:简单实体Bean的注入&&实体工厂(BeanFactory)]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1666.html]]></link><description><![CDATA[简单实体Bean的注入:通常分为三种方式:

1)geter方式: 在核心配置文件中通过property结点中的name及value属性获得其在实体中的数值;
  注意在spring 1.0及spring 2.0标准中其配置书写的方式略有不同;
  spring 1.0中:
<property name="name">
<value>aqua</value>
</property>

 spring 2.0中: <property name="id" value="1"/>

2)构造函数方式:

3)静态注入方式:

实体工厂模式:利用反射的原理提供名称作为参数,返回实体的对象

    public Object getBean(String name)
	{
		if(name.equals("sun"))
		{
			return new Sun();
		}
		else if(name.equals("moon"))
		{
			return new Moon();
		}
		
		return null;
	}

spring 文件配置的步骤:(其中的spring-core.jar是必须要添加的包)
 1.添加对于spring 的文件的外部支持,如果是1.0,
 
  需要引入spring-aop.jar;  spring-beans.jar; spring-context.jar;
          spring-core.jar; spring-dao.jar;   spring-hibernate.jar;
          spring-jdbc.jar; spring-orm.jar;   spring-remoting.jar;
          spring-support.jar;

 2.对于spring 2.0 通常需要添加的包为(在1.0的架包的基础上):
    
          spring-agent.jar; spring-hibernate3.jar;   spring-ibatis.jar;
          spring-jca.jar;   spring-jdo.jar;          spring-jms.jar;
          spring-jpa.jar;   spring-tomcat-weaver.jar;spring-toplink.jar;

此外为了便于本地测试通常将applicationContext.xml放在src目录下;

引入org.springframework.context.support.ClassPathXmlApplicationContext包,

其中ClassPathXmlApplicationContext所产生的对象是为了在外部访问applicationContext.xml中的内

容;]]></description></item><item><pubDate><![CDATA[2008-10-4 8:53:44]]></pubDate><title><![CDATA[简单的Js方式实现页面的技术(文件读写)]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1665.html]]></link><description><![CDATA[<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>

<!--pageEncoding中文显示-->

<%@ page import="java.io.*"%>

<!--由于在函数中需要进行文件的读写,故需要在页面中导入IO包的支持-->
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<base href="<%=basePath%>">

		<title>My JSP 'index.jsp' starting page</title>
		<meta http-equiv="pragma" content="no-cache">
		<meta http-equiv="cache-control" content="no-cache">
		<meta http-equiv="expires" content="0">
		<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
		<meta http-equiv="description" content="This is my page">
		<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
	</head>

    <!--声明方式,其中定义的变量为成员变量(全局变量),可以在整个页面中使用;

      而使用<%%>方式定义的变量为局部变量;-->

     <!--在本例中num用来累计访问者的数量-->

	<%!int num = 0;
	File file = new File("count.txt");
	synchronized void Com() {
		num++;
		if (!file.exists()) {
			try {
				file.createNewFile();
				FileOutputStream out = new FileOutputStream("count.txt");
				DataOutputStream data = new DataOutputStream(out);
				data.writeInt(num);
				out.close();
				data.close();
			} catch (IOException x) {
			}
		}
		else{
		try{
		FileInputStream in=new FileInputStream("count.txt");
		DataInputStream data=new DataInputStream(in);
	      num=data.readInt();
	      num++;
	      in.close();
	      data.close();
		}catch(IOException a){}
		}
	}%>
	
	<% 
	 Com();
	%>

	<body bgcolor="cyan">
	
	<h1>您是本站的第<%=num%>位访客</h1>
	</body>
</html>]]></description></item><item><pubDate><![CDATA[2008-10-4 8:53:26]]></pubDate><title><![CDATA[Hibernate:UserType(用户自定义类型)]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1664.html]]></link><description><![CDATA[1.定义用户自定义的数据类型,前提的准备:

(1)创建普通的类文件同时需要实现Serializable接口;继承UserType并实现其中的方法

(2) 创建类文件所对应的配置文件xxx.hbm.xml;

(3) 引入架包:commons-lang.jar;

2.重写的方法:
(1).public int[] sqlTypes()                 //返回整形数组的长度

(2).public Class returnedClass() //将JAVA的数据类型转换成对应的类

(3).public boolean equals(Object x, Object y ) throws HibernateException 

   //比较数据库中的数据(VARCHAR)与要添加的数据(STRING)是否完全相同

(4).public Object nullSafeGet(ResultSet rs, String[] names, Object owner) 

   //将字符串数据取出,转换成List类型,用parse方法进行转换

(5).private List parse(String value)  

   //该方法将数据库里取出来的类型转换成你想要的JAVA类型

 (6).public void nullSafeSet(PreparedStatement st, Object value, int index)   

   //将List转成字符串类型,用assemble进行转换

 (7). private String assemble(List emailList) 

 //该方法可以将任何java类型转换数据库里的任何一种类型,这里说白了就是做成字符串

 (8).public Object deepCopy(Object value) throws HibernateException 

      //深度复制,将对象转换成List,再转换成ArrayList;

3.配置文件的书写
  
  在xxx.hbm.xml中依然与普通的hibernate的配置中相同,hibernate.cfg.xml中的配置文件中的<mapping>使用resource属性配置]]></description></item><item><pubDate><![CDATA[2008-10-4 8:53:06]]></pubDate><title><![CDATA[Hibernate:Annotration(注释)配置]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1663.html]]></link><description><![CDATA[1.添加架包的支持(只有JAVA EE 5及Hibernate3.3才支持 annotations注解)

 添加hibernate3.3的包,支持
 hibernate3.jar,      
 hibernate-annotations.jar,
 hibernate-commons-annotations.jar,
 hibernate-entitymanager.jar,

2.配置文件的书写
 
  在配置文件hibernate,cfg.xml中,<mapping>结点元素中请使用class属性,而不是在前面的resource;
   
  并且文件之间使用.连接,而不是使用/;

3.相关属性的配置

  创建实体类(创建普通的实体类不需要继承自Serializable接口);
  
 在实体类的名称前面需要添加两个属性 @Entity,@Table

 (两者均继承自javax.persistence.Entity,javax.persistence.Table)

 主键前面需要三个属性:
        @Id                //主键,并且首字母必须大写
	@Column(name="id") //数据库表中对应字段的列名,如果与实体类的属性值相同，则可以省略;
	@GeneratedValue(strategy=GenerationType.IDENTITY)  //生成值,生成的方式为自增
 
一对多中的一:(除了正常的字段值之外,要将"多"对应的类作为集合作为属性,而在其"多"对应的数据

库表中要填加一个外键)
   
   @OneToMany   //one指的是本类,Many指的是子集
   @Cascade(value={CascadeType.ALL}) //级连增删改查
   @JoinColumn(name = "person_id") //指的是在address表里生成的外键

 多对一中的多:

   @ManyToOne
   private Student student;

多对多中主方:
 
   @ManyToMany(targetEntity=Student.class)  //指明多对多属性,targetEntity表示目标的实体类
   @Cascade(value={CascadeType.ALL})        //级联操作  
   @JoinTable                               //指明中间表
   (
  name="teacher_student",                             //指明中间表的名称
  joinColumns={@JoinColumn(name="teacher_id")},       //在关系表中以teacher为主的外键
  inverseJoinColumns={@JoinColumn(name="Student_id")} //在关系表中以student为主的外键
   )

   private Set<Student> student;              //指明Set集合属性

多对多的次要一方:

  @ManyToMany                                 //多对多属性
  (
 mappedBy="student"		                //与主表中的哪个字段对应
   )

  private Set<Teacher> teacher;               //指明Set属性]]></description></item><item><pubDate><![CDATA[2008-10-4 8:52:47]]></pubDate><title><![CDATA[复杂Hibernate：继承类权限模型]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1662.html]]></link><description><![CDATA[继承类的权限模型

  数据库表:

   1. 用户表: 包含ID，NAME，TYPE；三个字段分别代表编号,名称,类型;

   2. 资源表: 包含ID，NAME，两个字段分别代表编号，名称;

   3. 关系表:  包含_user,resource两个字段;

   4. 用户与资源之间是多对多的关系;

  实体类:

  1. 抽象用户类:   包含ID，NAME字段;
  2. 资源类:       包含ID，NAME, Set<User> 分别表示编号,名称,用户类集合
  3. 普通客户类:   继承自用户类，自身只有Set<Resource>;代表资源类集合
  4. 管理员用户类: 同样继承自用户类,自身只有Set<Resource>;代表资源类集合

  对应关系:

  抽象用户类-->具体用户类为一对多的关系;  1--N

  具体用户类-->资源类多对多的关系;        N--N


  
  配置文件:

  1.同以往的配置文件不同的是只需要增加user.hbm.xml和resource.hbm.xml;

  2.在user.hbm.xml配置文件中需要配置<discriminator column="type"/>(discriminator:鉴别器)表示需要用哪一个字段类区别用户；
 
    务必 需要将它定义在property字段的前面;

  3. 注意在Set节点上不需要使用inverse属性来设置;在这里的关系数据的添加是通过在方法的调用中实现的;

    <subclass discriminator-value="o" name="com.domain.user.Operator">      //discriminator-value:鉴别器的值;
    <set name="resource" lazy="false" table="user_resource" cascade="all">  
    <key column="_user"/>
    <many-to-many column="resource" class="com.domain.role.Resource"/>
    </set>
    </subclass>


  关于算法:

   主要区别在与添加新的信息时的区别: 使用的是session.saveOrUpdate(user);//如果数据已经存在就更新，否则就添加;
  
   调用算法:

    更新权限步骤 

    1：添加页面到资源表里
    2：从用户表里取得要更新权限的角色
    3：从资源表里取得可用资源
    4：设置角色和资源的关系 
    5：对角色使用saveOrUpdate方法]]></description></item><item><pubDate><![CDATA[2008-10-4 8:52:28]]></pubDate><title><![CDATA[最简单的HIBERNATE配置]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1661.html]]></link><description><![CDATA[1.命名规范:请务必在定义数据表及实体类时注意:表的字段名称必须与实体中的属性的值完全相同(建议全为小写);

  表名前加下划线,这样做的好处是避免与SQL命令中的关键字发生冲突；

2.添加数据库的连接
  在工程的右边的上半部分,在蓝色MyEclipse图标的左边的带星的图标,左键单击它,选择My Eclipse Data Explorer;

  在新页面的左边My Eclpise Derby,右键单击它,选择New,在Driver templete下拉列表中选择核实的数据库工具,

  如Microsoft SQL Server,在Driver name文本框中输入一个合适的名字如datasource;在Connection URL:中修改其内容,

  本例使用MS的直连,其URL为:jdbc:microsoft:sqlserver://localhost:1433;dataBaseName=person;(其中dataBaseName=person为数据库的名称);
  
  User name,Password分别为连接数据库所需要的用户名及密码;Driver JARs代表需要的额外的驱动包,通过Add JREs可将需要的驱动包导入进来；同时也可以
 
  通过Remove按钮移除不合适的驱动包;上述如果确认无误时,可通过单击Test Driver来测试一下连接是否正确,如果弹出对话框显示Database connection successfully established,

  表示连接成功!

3.添加Hibernate架包;选择空白处右键单击鼠标,选择MyEclipse->Add Hibernate Capabilities;在弹出的选项卡中,Hibernate3.1为默认选中,
 
  在中间的空白区域中Hibernate3.1 Core libraries为默认选中,手动复选Hibernate Advanced Support Libraries为选中状态;其他默认设置保持不变,单击下一步，

  在下一个选项卡中询问我们是否改变hibernate.cfg.xml的文件的路径的保存位置,为了我们方便在本地时随时的测试,这里不做修改继续单击下一步;

  在DataSource单选按钮中选择Use JDBC Driver,在DB Driver下那列表框中选择我们在上一步中在Driver name所输入的名字; 继续单击下一步,

  我们不需要按照向导生成Sessionfactory class所以不选择该选项,单击完成 !

4.实体类及映射文件的生成,与原先的普通实体类有所区别的是我们在hibernate 的工程中添加的实体类必须要实现java.io.Serializable这个接口;
  
  实现接口的方法及类的属性声明这里就不再赘述；类的配置文件：在与实体类同一个包下,创建xxx.hbm.xml文件,其中的xxx代表实体名，

  通常其首字符要求大写，新建过程:右键单击所在包，New->XML Basic Templete->填写文件名，如Man.hbm.xml->Create XML file from a DTD file

  ->Select XML Catalog entry 选择 -//Hibernate/Hibernate Mapping DTD 3.0//EN->下一步-> 完成

<hibernate-mapping>
<class name="com.domain.family.Sister" table="_sister">  //class代表实体类的名称；table代表数据库的表名；
<id name="id">                                                                       //编号 name为属性名称,如果数据库中的表中的字段的名称与实体中不一致，
                                                                                               //需要column属性
<generator class="native"/>                                                  //generator 增加的方式，native代表自然增长 ；
</id>
<property name="name" />                                ]]></description></item><item><pubDate><![CDATA[2008-10-4 8:52:06]]></pubDate><title><![CDATA[Struts1中Form与 Action及继承关系]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1660.html]]></link><description><![CDATA[1.基础的配置

FORM: 最简单的表单 ActionForm 自定义的表单可继承成为其子类;除了继承之外先想需要注册编号;

private static final long serialVersionUID = -3634386404935335211L;

ACTION: 声明一些字段，一般情况下其名称需要与前台页面上的标签元素的property的名称相同;

最简单的Action()(包名:org.apache.struts.action.Action);重写其execute方法;

.XML 配置文件:
   <form-beans> 
   <form-bean name="form" type="com.web.form.MyForm">
   //(name的名称为其别名,type实际上是form所在文件的绝对路径)
   </form-bean>
   </form-beans>

 <action-mappings>
   <action 
   name="form"                    //与form表单的名称保持一致
   type="com.web.action.Action"   //action文件所在的绝对路径
   path="/login">                 //相对路径
   </action>                      
  </action-mappings>


2.进阶配置
  FORM:动态表单(可以直接在配置文件中添加配置)

  <form-beans>
   <form-bean name="form" type="org.apache.struts.validator.DynaValidatorActionForm">
   <form-property name="name" type="java.lang.String"></form-property>     
    
  //配置参数其名称需要与页面的标签的property的名称一致
   <form-property name="password" type="java.lang.String"></form-property>
   </form-bean>
   </form-beans>
   

  ACTION: DispatchAction
 
  重写execute方法同时该为自己需要的,名称;如果页面上action="/login?method=login",

  那么action必定存在一个login


  .XM配置文件
  <action path="/login"                  //相对路径
  attribute="form"                       //属性
  name="form"                            //表单的别名
  type="com.web.action.DispatcherAction" //action所在的绝对路径
  parameter="method"                     
  
  //参数 对应的表单中action="/login?method=login"
  input="/login.jsp"                      //错误显示输出的页面
  validate="true">                        //是否需要验证
  </action>

ApplicationResources.properties(十六进制文件)

# Resources for parameter 'ApplicationResources'
# Project validator

errors.required={0} \u4e0d\u80fd\u4e3a\u7a7a!!         

//键=值的Map映射形式,此处使用了中文编码方式;

//在JDK安装文件bin目录下有一个native2ascii.exe的可执行文件;把中文输入后按下回车键;

//中文所对应的十六进制编码就出现啦!!

errors.minlength={0} \u4e0d\u80fd\u5c11\u4e8e {1} \u4f4d\u5b57\u7b26

form.name=<font color=red size='3'>\u59d3\u54]]></description></item><item><pubDate><![CDATA[2008-10-4 8:51:29]]></pubDate><title><![CDATA[使用Structs实现文件的上传]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1659.html]]></link><description><![CDATA[1.定义页面表单;除了正常的action之外,enctype(技术控制类型)="multipart/form-data",

  在此为固定格式;

2.添加<html:file property="file"  />标签，注意property属性的名称必须与form中的定义的名称保持

  一致;

3.定义自己的form,务必声明一个FormFile类型的字段,其名称与页面表单中的file标签中的property的名
  称必须相同;

4.在action中将ActionForm强转成自己定义的form类型;

          String name=fr.getFile().getFileName();  //获得文件的名称
          int size=fr.getFile().getFileSize();     //获得文件的大小
          System.out.println("文件名称:"+name);    //输出文件的名称
          System.out.println("文件大小:"+size);    //输出文件的大小
	    
	  //实例化文件对象
	  FormFile f=(FormFile)fr.getFile();
	  //获得文件的二进制数据
          byte[] data=f.getFileData();
          //文件输出
          FileOutputStream out=new FileOutputStream("e:/"+f.getFileName());
          out.write(data);
          System.out.println("上传成功!");

5.有关action的问题

  (1).如果自己定义的action是继承自Action则需要重写其父类的execute方法,需要在其头部加上@override关键字; 

  (2).如果自己定义的action是继承自DispatcherAction则需要将其父类execute方法的名称改为某一个在方法名称

      (需要与页面中action="/login?method=login"的method后的名称一致),其头部的@override关键字需要去掉;

 
  
  关于单选按钮/复选框按钮的遍历

1.在页面中定义radio单选标签;例如:
      <html:radio property="sex" value="男"></html:radio>  //property代表参数名称,value为其值

      <html:radio property="sex" value="女"></html:radio>  //如果一组radio标签中需要只有一个被选中，则它们的property名称相同;

2. 在页面中定义<html:multibox>复选框标签

     <html:multibox property="check" value="中国" />   //property代表参数名称,value为其值;但在自己定义的表单中使用
    
     String[] che;来保存其值;

3.在action中遍历单选按钮/复选框
     
     单选按钮的值可以通过对象.getSex()的方法来获得;复选框按钮的值需要先保存为字符串数组对象，

     再通过for循环找到每过选中的对象的值
]]></description></item><item><pubDate><![CDATA[2008-10-4 8:50:58]]></pubDate><title><![CDATA[将HTML文件变为JSP文件]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1658.html]]></link><description><![CDATA[1.新建网页文件;如text.html;

  如下为实例代码:
<html>
<body>
<table>
  <tr>
    <td>用户名:
    </td>
    
     <td><input type="text">
    </td>
  </tr>
</table>
</body>
</html>

2.将该文件导入到Eclipse的工程文件中;并且将形如<%@ page language="java" pageEncoding="gbk"%>的标签

  文件加入其中;修改text.html的文件名为text.jsp;运行浏览器;运行正常;]]></description></item><item><pubDate><![CDATA[2008-10-4 8:50:16]]></pubDate><title><![CDATA[Structs表单的多个按钮的提交与LookUpDispatcher]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1657.html]]></link><description><![CDATA[
   LookUpDispatcher(继承自DispatchAction) 同一页面提交不同请求

1.创建一个自定义Action继承自LookUpDispatcher;打开本页面,
 
  已经存在一个重写的方法:protected Map getKeyMethodMap();声明Map对象并将键和值通过put方法添
  加其中;打开文件ApplicationResources.properties;添加命令login=\u767b\u5f55 其中左边为Map中
  的键,右边为其值;

2.新建页面,包含一个表单,两个按钮;其中表单的action的名称与struts-config.xml中action中的
  attribute和path保持一致;两个按钮的property必须相同并且其名称与struts-config.xml中的  
  parameter名称保持一致;

3.执行步骤:表单提交时,先是找到表单提交按钮中property 的名称->struts-config.xml中的
 
  parameter的名称->ApplicationResources.properties中等号右边的值与表单中按钮的value是否相同

  ->ApplicationResources.properties中等号左边的值为Map中的键-->自定义Action中的Map(k,m),其中

  的k与ApplicationResources.properties等号左边的值相同,m与自定义Action中的方法名相同->执行自
  
  定义Action中相应的方法;]]></description></item><item><pubDate><![CDATA[2008-10-4 8:49:57]]></pubDate><title><![CDATA[JSP普通工程变为WEB工程]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1656.html]]></link><description><![CDATA[
1.创建Web项目;

2.在其根目录下添加src,web文件夹;在web文件夹下添加lib,classes两个文件夹，同时添加一个web.xml文本文件;

3.右键单击src文件夹,在弹出菜单中选择Build Path选项,继续选择子选项Use as Souse Folder;(转变为存放源文件的文件夹);

4.右键单击工程,选择Build Path/Configure Build Path,再选择Source子选项卡,在最下方添加类文件的存放的位置;

  例如:"test/web/WEB-INF/classes";选择Libraries子选项卡,选择Add Library按钮,添加所需要的架包;]]></description></item><item><pubDate><![CDATA[2008-10-4 8:49:37]]></pubDate><title><![CDATA[手动配置JDK && 手动配置Tomacat]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1655.html]]></link><description><![CDATA[手动配置JDK

1.右键单击我的电脑;选择高级选项卡,选择环境变量,新增JAVA_HOME，CLASSPATH变量,

  JAVA_HOME="C:\Program Files\Java\jdk1.6.0_04",

2.CLASSPATH="%JAVA_HOME%";



手动配置Tomacat:

1.找到Tomacat所在文件目录;找到conf文件夹;打开server.xml文件;找到语句

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->后,第一个8080端口，将8080修改为任意端口,请不要使用1433或MS等特

殊端口; 

2.修改服务器所在路径; 
<!-- Define the default virtual host Note: XML Schema validation will not work with Xerces 2.2.-->;

  添加内容:<Context path="" docBase="E:\my\test\web"/>; 其中path=""代表任意端口]]></description></item><item><pubDate><![CDATA[2008-10-4 8:49:11]]></pubDate><title><![CDATA[Struts1.1表单验证及配置]]></title><link><![CDATA[http://blog.cd-accp.com/User0/201/Show.asp?/_articleid/1654.html]]></link><description><![CDATA[
 Structs的验证 validator及其配置(请务必使用Structs 1.1版本,如果是1.2或1.3可能会出现无法响应的问题)

1.在工程文件夹的WebBoot/WEB-INF 下找到 validator-rules.xml(验证规则的配置文件);

2.复制其中的头文件 <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules 

  Configuration1.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">，请留意其中的文件的版本号;

3.依然在WebBoot/WEB-INF下新建validation.xml文件,将刚才的头文件复制到该文件的头部;

  同时增加根目录信息<form-validation></form-validation>;

4.在根文件中增加
<formset>                                             //表单设置开始
<field property="name" depends="required,minlength">  //字段结点; property代表字段名称,必须与页面中的字段中的名称相同;
                                                      //depends代表需要验证所采用的方法名称;可在validator-rules.xml中找到;
<arg0 key="sForm.name" />                             //参数所需验证的表单的字段;arg0代表validator-rules.xml中的参数的顺序;
<arg1 key="${var:minlength}" resource="false"/>       //${var:minlength}代表自定义的参数,通常取名与要验证的方法名相同;                                                                     //resource="false"代表不使用源文件中的参数作为显示
<var>                                                 //定义参数结点开始
<var-name>minlength</var-name>                        //定义参数的名称
<var-value>6</var-value>                              //定义参数的值
</var>                                                //定义参数结点结束
</field>                                              //字段结点结束
</form>                                               //表单结点结束
</formset>                                            //表单设置开始

5.在struts-config.xml中action结点中添加 attribute="sForm"其名称与form-bean中表单的name名称相同; input="/login.jsp"代表

  验证的错误所需显示的页面;validate="true"代表需要验证;

6.在<message-resources/>结点之后添加

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">

<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/></plug-in>

(可在validator-rules.xml中复制);

7.在需要验证的页面的相应位置添加<html:errors>标签;添加property="name";

8.在ApplicationResources.properties文件中添加从validator-rules.xml的验证的规则]]></description></item><item><pubDate><![CDATA[2008-9-19 16:02:14]]></pubDate><title><![CDATA[策略设计模式]]></title><link><![CDATA[http://blog.cd-accp.com/User1/1013/Show.asp?/_articleid/1653.html]]></link><description><![CDATA[创建一个能够根据所传递参数的对象的不同而具有不同行为的方法，被称为策略设计模式。]]></description></item><item><pubDate><![CDATA[2008-9-19 15:53:16]]></pubDate><title><![CDATA[接口与工厂《Java编程思想》]]></title><link><![CDATA[http://blog.cd-accp.com/User1/1013/Show.asp?/_articleid/1652.html]]></link><description><![CDATA[接口是实现多重继承的途径，而生成遵循某个接口的对象的典型方式就是工厂方法设计模式。这与直接调用构造器不同，我们在工厂对象上调用的是创建方法，而该工厂对象将生成接口的某个实现的对象。]]></description></item><item><pubDate><![CDATA[2008-9-10 14:33:42]]></pubDate><title><![CDATA[人的一生]]></title><link><![CDATA[http://blog.cd-accp.com/User1/595/Show.asp?/_articleid/1651.html]]></link><description><![CDATA[上帝创造了 驴子并告诉牠︰ 
你将从早到晚不停的工作，背负重物。 
你只能吃草，你将不会拥有智慧。 
你有50 年的寿命，你是一只驴子！ 

驴子回答说︰我是只驴子， 
但活50 年太久了，让我活20 年就好了！ 
于是上帝给了牠 20年的寿命 

  
上帝创造了 狗并告诉牠 ： 
你必须替人类看家，你是人类最忠实的朋友， 
你只能吃人类给你的任何东西。 
而你可以有25 年的寿命，你是一只狗！ 

狗回答说：活 25年太久了， 
让我活10 年就好了！ 
于是上帝给了牠 10年的寿命。 
  
上帝创造了 猴子并告诉牠： 
你必须在树上跳来跳去， 
做一些蠢事让人开心。 
你有20年的寿命，你是只猴子！ 

猴子回答说：上帝，活20 年太久了， 
让我活10年就好了！ 
上帝也同意了。 
  
最后，上帝创造了 人类并告诉他： 
你是人类，地球上唯一的理性生物， 
你将运用智慧去控制其它的动物并主宰世界。 
而你可以有20年的寿命。 

人类说：上帝，我是人类， 
但20 年的寿命实在不够， 
何不把驴子放弃的 30年、 
狗放弃的 15年、及 猴子 放弃的10年都给我呢？ 

一言为定, 上帝回答。 
从此 ，人类过了20年人样的 生活。 
结婚后花了 30年像只驴子一样的背负重担。 
当他的孩子离家后，又花了 15年如狗一般的看家、 
吃任何别人给他的东西、 然后渐渐老去而退休。 
剩下的10年，他像猴子般的在屋子和孩子间转来转去， 
尽做些蠢事为的是取悦儿孙]]></description></item><item><pubDate><![CDATA[2008-9-4 9:09:17]]></pubDate><title><![CDATA[选择比努力更重要]]></title><link><![CDATA[http://blog.cd-accp.com/User1/595/Show.asp?/_articleid/1650.html]]></link><description><![CDATA[一个人要走自己的路，本身没有错，关键是怎样走；走自己的路，让别人说，也没有借，关键是走的路是否正确。年轻人，你要永远记住：选择比努力更重要。

不同的观念最终导致了不同的人生！

思路决定出路，观念决定贫富。

要想快速取得成功，就必须站在巨人的肩膀上，借助别人和平台的力量，能够使我们更快地达到成功

首先，选择实际上是为自己找一个适合自己的方向，如果方向选错了，所做的努力是为错误而做准备。

如果目标选择错误，越努力，离失败就越近，离成功就越远。虽然目标选择正确也并不意味成功，但正确的目标选择+不懈的努力才能接近和达到目标]]></description></item><item><pubDate><![CDATA[2008-8-17 19:03:27]]></pubDate><title><![CDATA[最会折磨老公的老婆]]></title><link><![CDATA[http://blog.cd-accp.com/User1/895/Show.asp?/_articleid/1649.html]]></link><description><![CDATA[[color=Blue][/color][size=2]第一名：处女座 

处女座一定是精神虐待，因为她们是经常、时时刻刻、分分秒秒，只要是她在意的事，她就会一直啐
啐念；而且很多处女座喜欢发表高见，而且她会跟你辨论，若是你不同意她的意见，她就会跟你一直
辩，直到她觉得你被她说服，所以其实对另外一半男生，尤其是粗枝大叶一点的男生，简直每天都活
在梦魇当中。 

第二名：天蝎座
天蝎一般来说对老公还满好的，但是如果你让天蝎不爽的话，她可是会整死你的，因为天蝎的强迫性
很强，她要的东西她就会弃而不舍，所以很多天蝎座的女生甚至会追查另一半的行踪，那身为她们的
老公，你每天都在精神轰炸当中。 

第三名：天秤座
天秤座的女生就是对朋友好过对男朋友或对另外一半，就是她很重视你，但是重视你的方法不见得是
对你好，那有时候你若不小心将她惹生气了，她又会冷的很快，就觉得你这样子我没有办法跟你相
处，而且她一旦动了怒，你就很难讨好她，所以有的时候男生会觉得天秤女非常的任性，而且一旦你
踩到她的尾巴，她就会跟你没完没了。 

第四名：双子座 

双子座表面上都是很为另外一半著想，可是因为双子座自己的情绪控管非常的不稳定，所以当她情绪
好跟情绪不好时，简直是判若两人；因为她在外面可能已经忍受了很多事，然後她心情很不好的时
候，她在另外一半的面前就特别不想伪装自己，那如果她有气要发洩，就会发洩在自己老公的身上，
然而这样会让老公觉得怎麼今天早上是情天、晚上又雨天，就是常常都抓不住双子老婆的感觉。 

第五名：狮子座 

狮子座口头上一定要赢这是最麻烦的地方，其实他要的不过就是口头占上风，但是因为她看起来凶
了，男生就会觉得好恐怖哦！而且很多狮子座也会在别人的面前表现出她占上风的样子，尤其是她没
有自信的时候，特别喜欢在众人面前损损她的老公，或者是叫她老公演奴才一下好满足她，所以她有
一点像在走钢索，就是一边命令著老公，一边又很怕老公生气，可是她还是要演母老虎的样子给你
看，所以有一点卒仔。[/size][/size]]]></description></item><item><pubDate><![CDATA[2008-8-17 18:53:47]]></pubDate><title><![CDATA[做职场的“万人迷”男人]]></title><link><![CDATA[http://blog.cd-accp.com/User1/895/Show.asp?/_articleid/1648.html]]></link><description><![CDATA[要做一个职场的“万人迷”男人，你知道条件是什么吗？其条件应包括以下这些。　　干净是性感

　　干净，是性感的必备。记住，女性非常在乎你的脸是否看上去干净利落。而留着油腻长发和满脸胡茬的男子，往往是自恋却无法得到爱恋的另类分子。

　　醉酒令人生厌

　　卡萨布兰卡的褒嘉嘴角叼着的那支烟，和沧桑而不屑的表情打动了所有女人，会喝酒的男人或许有故事有内涵；抽雪茄的男人，更懂品位，但醉酒显然不是，如果不幸你趁着醉意动手动脚，就更让人憎恶了。

　　专注工作令人敬

　　你可以平时吊儿郎当没一句正经话，像个大大咧咧的败家子，但一定要让女人知道，你在工作时是万分严谨、认真、负责的。一个女人，总是希望她爱的男人专注、优秀，无论哪一方面，都能配得上她的爱。

　　不要打扮成孔雀

　　据说电眼男人梁朝伟只穿阿玛尼。作为男性，懂得搭配永远比堆砌名牌更重要。

　　永远不要忽视服装和外貌带给你的影响力，这是别人正确认识你的第一途径。但过分追求会丧失你的男子气，令人怀疑你的成熟程度，所以清醒地塑造个人风格最为重要。

　　不要做“三不”男人

　　你要做个“不主动，不拒绝，不负责”的“三不”男人吗？Out！连最有名的浪荡子强尼？戴普都过起了居家日子，你还玩什么真实与大胆的游戏？别以为女人已经潇洒到真正不在乎一张纸，如果你连负这个责任的勇气都没有，那才是不折不扣的懦弱。别再为自己中年还单身沾沾自喜，看看周围，朋友们和你的昔日情敌，基本都“尘埃落定”。一个心爱的女人，像稀世珍宝一样难求，只有敢爱的男人，才能赢得女人的真心。

　　绅士风度是美德

　　商业社会是一个分秒必争的社会是吗？

　　但是绅士风度永远受人欢迎，哪怕仅仅是客气的关照，也可以留给人美好的印象。在欧洲、美国，一些全球著名的财富人士同样会给女士们送上香槟和赞美。浪漫比务实更重要―――请谨记这点，不然，就继续做成功的商业人士和不成功的情人吧。

　　别成男版祥林嫂

　　感情是一件你情我愿的事，分手只是缘分的问题。作为一个刚感情破裂的男人，你可以不理智，但没必要不理智到在所有人面前去做男版祥林嫂，那样只能让你成为别人眼中的猥琐男人。要知道宽容和沉默，有时是男人最为重要的美德。

]]></description></item><item><pubDate><![CDATA[2008-8-6 11:46:15]]></pubDate><title><![CDATA[jsEclipse使用简介]]></title><link><![CDATA[http://blog.cd-accp.com/User0/341/Show.asp?/_articleid/1647.html]]></link><description><![CDATA[nterakt提供的jseclipse是最先进的javascript编辑器之一jseclipse是针对eclipse开发平台的免费插件它支持的功能有：代码完成大纲浏览错误报告代码换行，等等 
多 亏了eclipse的插件架构，jseclipse的安装非常简单选择helpsoftware updatesfind and install，打开eclipse的插件安装向导选择search for new features to install并单击next
现 在，install窗口就应该出现了单击new remote site按钮，并在弹出窗口的name文本框中输入interakt online，在url文本框中输入http://www.interaktonline.com/，然后单击ok按钮现在，安装窗口应该如图2-1所 示，其列表中应该包含interakt online
需要注意的是，jseclipse需要java 1.5或更高版本对余下的安装步骤统统单击next就可完成jseclipse的安装之后，重新启动eclipse，确保插件安装正确

[img]/userupload/user0/341/20088642280141.jpg[/img]
图2-1 把interakt online添加为远程站点后的eclipse install窗口
安 装好jseclipse之后，就可以开始编写javascript了jseclipse把所有以.js为扩展名的文件都识别为javascript源文 件选择filenewfile，并输入一个以.js结尾的文件名，就可以创建一个新的javascript源文件创建好新的javascript 源文件后，就可以开始编写javascript代码了
在jseclipse中编辑javascript时，你首先会注意到的就是它所提供的javascript关键字突出显示功能同样需要注意的是，outline视图中会包含javascript代码的大纲，显示出源文件中定义的对象所包含的方法
图2 -2展示了在jseclipse打开的javascript源文件项目中有两个javascript文件：department.js和 employee.js在源代码编辑器中打开的是employee.js文件在窗口左端的navigator面板中的javascript文件有它们 自己的图标，当前打开的源代码的大纲被展示在窗口右端的outline面板中
jseclipse 能做的不仅仅是这些就像之前讨论过的那样，一直以来最具生产力的功能之一就是智能代码完成jseclipse为用户自定义的javascript对象 提供了智能代码完成功能图2-3演示了这种代码完成功能department.js文件含有一个简单的函数用来创建employee对象的一个实例 然后，可通过圆点符号获得这个对象的方法当键入圆点符号时，jseclipse会自动显示代码完成窗口

[img]/userupload/user0/341/20088642350609.jpg[/img]
图2-2 jseclipse源代码编辑器
[img]/userupload/user0/341/20088642362705.jpg[/img]
图2-3 jseclipse提供对javascript对象的代码完成
jseclipse也提供对内置的javascript对象的代码完成，如datestringdocument和window，等等
jseclipse 还提供扩展其自带的代码完成功能的方法可以编写一个简单的xml文件，在其中定义对某个类型的对象应该出现的代码完成列表事实上，默认的 jseclipse发行版本就使用xml文件定义其对内置javascript对象的代码完成代码清单2-1列出了object.xml文件的内容，这 个文件就定义了对基本javascript对象的代码完成
代码清单2-1 object.xml为基本javascript对象定义代码完成

这 个object.xml文件放在jseclipse安装目录的library目录中在这个目录中，还可以找到定义了各种javascript对象的代码 完成的xml文件可以修改这些文件来满足你的需要更妙的是，可以创建自己的xml文件，描述你已经编写好的javascript文件可以为在你的组 织中共享的javascirpt文件编写一组xml文件来提供代码完成功能jseclipse的帮助中给出了一个创建自定义的代码完成库的很好的例子 打开eclipse的help菜单并找到jseclipse extending the code completion一节，就可以访问到这个]]></description></item><item><pubDate><![CDATA[2008-8-5 0:43:25]]></pubDate><title><![CDATA[为MM量身定做的C语言程序]]></title><link><![CDATA[http://blog.cd-accp.com/User0/341/Show.asp?/_articleid/1646.html]]></link><description><![CDATA[result love(boy, girl)
　　 {
　　　 if( boy.有房() and boy.有车() ) 
　　　 { 
　　　　 boy.set(nothing); 
　　　　 return girl.嫁给(boy); 
　　　 } 
　　　 if( girl.愿意等() ) 
　　 { 
　　　 while(!(boy.赚钱 > 100,000 and girl.感情 > 8 ) ) 
　　　 { 
　　　　 for( day=1; day <=365; day++)
　　　　 { 
　　　　　 if( day == 情人节 ) 
　　　　　　 if( boy.givegirl(玫瑰) ) 
　　　　　　　 girl.感情++; 
　　　　　　 else 
　　　　　　　 girl.感情--; 
　　　 
　　　　　 if( day == girl.生日) 
　　　　　　 if( boy.givegirl(玫瑰) ) 
　　　　　　　 girl.感情++; 
　　　　　　 else 
　　　　　　　 girl.感情--; 
　　　　　　　 boy.拼命赚钱(); 
　　　　　 } 
　　　　 } 
　　　　 if( boy.有房() and boy.有车() ) 
　　　　 { 
　　　　　 boy.set(nothing); 
　　　　　 return girl.嫁给(boy); 
　　　　 } 
　　　　 年龄++; 
　　　　 girl.感情--; 
　　　 } 
　　　 return girl.goto( another_boy); 
　　 } 
]]></description></item><item><pubDate><![CDATA[2008-8-5 0:40:02]]></pubDate><title><![CDATA[程序员保持身心健康的八种方式——一定要看哟]]></title><link><![CDATA[http://blog.cd-accp.com/User0/341/Show.asp?/_articleid/1645.html]]></link><description><![CDATA[[align=center] [b][u]程序员保持身心健康的八种方式[/u][/b][/align]

   程序员是一个辛苦的行业，长时间面对的只是需要解决的问题，更不要提开发期限和无理取闹的客户了，这样的工作简直无以承受。怎么办呢我们？我们热爱编程，乐于创建功能……我们喜欢那种将一堆代码弄成像Facebook或者Digg那样的赚钱工具的感觉。

　 也正由于程序员所带给我们的一切，这工作仍让我们欲罢不能。这种情况下，如何处理工作带来的压力便成了一项技巧。以下分享我的一些方式，以保持你的身心健康。

懂得何时走开

　一般来说程序员大多有定力、做事有条理。我们不愿意承认失败，当不顺时我们也不愿走开。但当你已在一个问题上花费了太长时间的时候，最好的选择是走开，清醒头脑。出去走两步，等你平静下来（不再急躁）再回到办公桌上。

出去吃午餐……

　以前我习惯每天在电脑前吃饭——我会浏览我常去的网页、发几封个人电邮。当越来越多的客户认识我之后，我的午餐时间被一个接一个的电话打断，我也不再有我自己的时间。不要让你的午餐时间成为另一种形式的工作时间！离开办公桌出去吃饭。

……但要吃的健康

　 健康的身体健康的头脑。在桌上吃点甜甜圈什么的（指快餐）确实很方便，但休息一下吃得健康点。吃得很单调不营养会让人觉得忧虑甚至沮丧（我觉得在麦当劳吃快餐自尊心会很低）。我建议吃得营养丰富——这会让你充实，而且给你足够的营养，从而不会觉得累或虚弱。

忘掉家庭电脑

　度过焦头烂额的一天，远离你的家庭电脑——你的个人编程可以等到第二天。而且你个人的编程会比工作问题更让你抓狂，那显然不是你应当要的。就好好度过晚上吧。

一个非技术的兴趣/锻炼

　最好是对非电脑相关的爱好有激情。身体锻炼更好，能让你保持体形。我经常听到许多程序员句句不离电脑有关的话题——暂时离开编程的圈子吧！找个其他兴趣！学做饭、玩棋牌、足球……

抽点时间跟朋友一起

　朋友通常是兴趣广泛远不仅限于电脑的。安排个周末跟朋友一起，一起去野外烧烤、看电影、玩电子游戏、踢足球、或者只是一起走走。光发条信息可不算！

休假

　 当工作上的一切都变得很不顺的时候，不要担心使用你的假期——它将使你彻底远离无法承受的工作。你不必去国外度假也不必旅行，如果你愿意待在家里也没关系。休假的关键是不工作。

考虑编程是否适合你

　　如果你在原则上没有了主意，而且编程工作影响了你的家庭、健康、心智，那就放弃吧。外边工作有的是，其他职业对你而言可能更好。要知道编程并不是一切，你不必因为工作而一忍再忍。

]]></description></item><item><pubDate><![CDATA[2008-8-5 0:36:30]]></pubDate><title><![CDATA[JAVA常见异常]]></title><link><![CDATA[http://blog.cd-accp.com/User0/341/Show.asp?/_articleid/1644.html]]></link><description><![CDATA[[align=center]JAVA常见异常[/align]


1. java.lang.nullpointerexception 
　　这个异常大家肯定都经常遇到，异常的解释是"程序遇上了空指针"，简单地说就是调用了未经初始化的对象或者是不存在的对象，这个错误经常出现在创建图片，调用数组这些操作中，比如图片未经初始化，或者图片创建时的路径错误等等。对数组操作中出现空指针，很多情况下是一些刚开始学习编程的朋友常犯的错误，即把数组的初始化和数组元素的初始化混淆起来了。数组的初始化是对数组分配需要的空间，而初始化后的数组，其中的元素并没有实例化，依然是空的，所以还需要对每个元素都进行初始化（如果要调用的话）
　　2. java.lang.classnotfoundexception 
　　这个异常是很多原本在jb等开发环境中开发的程序员，把jb下的程序包放在wtk下编译经常出现的问题，异常的解释是"指定的类不存在"，这里主要考虑一下类的名称和路径是否正确即可，如果是在jb下做的程序包，一般都是默认加上package的，所以转到wtk下后要注意把package的路径加上。
　　3. java.lang.arithmeticexception 
　　这个异常的解释是"数学运算异常"，比如程序中出现了除以零这样的运算就会出这样的异常，对这种异常，大家就要好好检查一下自己程序中涉及到数学运算的地方，公式是不是有不妥了。
　　4. java.lang.arrayindexoutofboundsexception 
　　这个异常相信很多朋友也经常遇到过，异常的解释是"数组下标越界"，现在程序中大多都有对数组的操作，因此在调用数组的时候一定要认真检查，看自己调用的下标是不是超出了数组的范围，一般来说，显示（即直接用常数当下标）调用不太容易出这样的错，但隐式（即用变量表示下标）调用就经常出错了，还有一种情况，是程序中定义的数组的长度是通过某些特定方法决定的，不是事先声明的，这个时候，最好先查看一下数组的length，以免出现这个异常。
　　5. java.lang.illegalargumentexception 
　　这个异常的解释是"方法的参数错误"，很多j2me的类库中的方法在一些情况下都会引发这样的错误，比如音量调节方法中的音量参数如果写成负数就会出现这个异常，再比如g.setcolor(int red,int green,int blue)这个方法中的三个值，如果有超过２５５的也会出现这个异常，因此一旦发现这个异常，我们要做的，就是赶紧去检查一下方法调用中的参数传递是不是出现了错误。
　　6. java.lang.illegalaccessexception 
　　这个异常的解释是"没有访问权限"，当应用程序要调用一个类，但当前的方法即没有对该类的访问权限便会出现这个异常。对程序中用了package的情况下要注意这个异常。
　　其他还有很多异常，我就不一一列举了，我要说明的是，一个合格的程序员，需要对程序中常见的问题有相当的了解和相应的解决办法，否则仅仅停留在写程序而不会改程序的话，会极大影响到自己的开发的。关于异常的全部说明，在api里都可以查阅。

算术异常类：ArithmeticExecption
空指针异常类：NullPointerException
类型强制转换异常：ClassCastException
数组负下标异常：NegativeArrayException
数组下标越界异常：ArrayIndexOutOfBoundsException
违背安全原则异常：SecturityException
文件已结束异常：EOFException
文件未找到异常：FileNotFoundException
字符串转换为数字异常：NumberFormatException

操作数据库异常：SQLException

输入输出异常：IOException

方法未找到异常：NoSuchMethodException
java.lang.AbstractMethodError
抽象方法错误。当应用试图调用抽象方法时抛出。
java.lang.AssertionError
断言错。用来指示一个断言失败的情况。
java.lang.ClassCircularityError
类循环依赖错误。在初始化一个类时，若检测到类之间循环依赖则抛出该异常。
java.lang.ClassFormatError
类格式错误。当Java虚拟机试图从一个文件中读取Java类，而检测到该文件的内容不符合类的有效格式时抛出。
java.lang.Error
错误。是所有错误的基类，]]></description></item><item><pubDate><![CDATA[2008-7-25 21:16:35]]></pubDate><title><![CDATA[我又回来了]]></title><link><![CDATA[http://blog.cd-accp.com/User1/1013/Show.asp?/_articleid/1643.html]]></link><description><![CDATA[一直无闲暇来写什么博客这东东,总觉得很是麻烦,然而有的时候心血来潮(当然不是月经来潮,记得上学那会校长曾经这么说过!搞得全校师生乐翻了天!^_^)想要写点什么?
    然而每次提起键盘,思绪在大脑里酝酿的时候却又不知从何而写起了.做人或许就是这样,一个矛盾的结合体!当矛增长的时候,而盾也出来牵制了矛,使人痛不欲生啊,当然了,这样说或许有点夸大了点.但事实却是这样.
    唉,什么时候才能如愿呢?]]></description></item><item><pubDate><![CDATA[2008-7-22 17:54:26]]></pubDate><title><![CDATA[DOM浅析]]></title><link><![CDATA[http://blog.cd-accp.com/User1/1190/Show.asp?/_articleid/1642.html]]></link><description><![CDATA[DOM是文档对象化模型（Document Object Model）的简称。使用过DHTML对象模型的开发者一定能非常熟练地操作HTML页面上的每个标记内容，但如果借助DOM技术，我们就可以通过更加直接而且简易的方式达到同样的目的。

　　一、概要 

　　DOM技术被Internet EXPlorer 5.0及以上版本的浏览器所支持，它采取一种非常直观且一致的方式将HTML文档进行模型化处理，并借此提供访问、导航和操作页面的简易编程接口。通过DOM技术，我们不仅能够访问和更新页面的内容及结构，而且还能操纵文档的风格样式。DOM由W3C组织所倡导，这样，大多数浏览器都将最终支持这项技术。 

　　DOM和DHTML对象模型的比较

　　可以这么说，DOM是从DHTML对象模型发展而来的。但更准确而言，DOM更象是对DHTML对象模型进行了根本变革的产物。 

　　借助DHTML对象模型技术，我们能够单独地访问并更新HTML页面上的对象，每个HTML标记通过它的ID和NAME属性被操纵，每个对象都具有自己的属性、方法和事件，通过方法操纵对象，通过事件触发因果过程。 

　　DOM则要比DTHML对象模型功能更全面，它提供了一个对整个文档的访问模型，而不仅仅再局限于单一的HTML标记（Tag）范围内。DOM将文档描绘为一个树形（Tree）结构，Tree的每个节点表现为一个HTML标记或者HTML标记内的文本项。树形结构精确地描述了HTML文档中标记间以及文本项间的相互关联性，这种关联性包括child（孩子）类型、parent（双亲）类型和兄弟（sibling）类型。 

　　使用DHTML对象模型访问和更新HTML页面内容时，不可避免地需要查询相关技术手册。因为HTML对象很多，每个HTML对象又有很多的属性、方法和事件。但是采用DOM技术访问和更新HTML页面内容时，任何手册都可以放在一边了。首先查看一下HTML源代码，推算出页面的Tree结构模型；然后，按照层次结构关系操纵需要的属性。比如要更新页面上的文本项内容，如果采用DTHML对象模型，需要使用到innerHTML属性，但必须要注意并不是所有的HTML对象都支持innerHTML属性；如果采用DOM技术，只要修改相关Tree节点都具有的nodeValue属性值即可。 

　　DOM技术使我们可以方便地沿着文档的树型结构在上、下以及一侧方向做节点导航，从页面的任何地方开始，使用child、parent或者sibling三种关联性组成的表达式代表页面的另外地方。而DTHML对象模型不包含Tree结构，所以也就不具备页面对象的相互导航功能。当我们从一个标记对象开始时，不可能用关联表达式来表达相近的标记。虽然对于某些标记，比如 <TABLE> ，DHTML对象模型可以提供特殊的属性和方法存取相关内容，但实现方式和效果远不如DOM技术显得一致化和直观化。采用DTHML对象模型访问<TABLE> 中的单元（cell）内容时，首先要查询手册确定单元的坐标值i、j，然后再通过表达式tableObj.rows[i].cells[j].innerHTML实现访问。但对于DOM来说，访问TABLE每个单元的内容将变得非常简单，只需要建立一个节点导航表达式就可以。 

　　另外，DOM技术允许我们操纵文档的Tree结构，这包括创建新节点（nodes）、删除存在的节点以及在Tree中移动节点。实际上，这就是执行创建新标记（tags）、删除存在的标记以及在文档中移动标记的过程。DTHML对象模型则不允许更改文档结构，我们只能操纵现有的对象。 

　　与DHTML对象模型相比较，DOM只有一个缺憾：DOM不能支持事件处理，而DTHML对象模型对于文档对象则拥有一个广泛的事件处理功能

       二、DOM的常用属性和方法:

              1.用于处理XML文档的DOM元素属性:

                     childNodes:返回当前元素的所有子元素的数组.

                     firstChild:返回当前元素的第一个下级子元素.

                     lastChild:返回当前元素的最后一个下级子元素.

                     parentNode:返回元素的父节点.

                     previousSibling:返回当前元素的前一个兄弟元素.

                     nextSibling:返回当前元素的下一个兄弟元素.

                     n]]></description></item><item><pubDate><![CDATA[2008-7-22 12:29:10]]></pubDate><title><![CDATA[JavaScript面向对象编程]]></title><link><![CDATA[http://blog.cd-accp.com/User1/1190/Show.asp?/_articleid/1641.html]]></link><description><![CDATA[面向对象对象的编程，是Java、C#等众多面向对象的编程语言支持的基本特性。
	继承、封装、多态是三种基本特性。面向对象的编程使我们更好地用程序代码描述客观世界，比起面向过程的函数式开发效率更高，也更能够把精力集中到业务中来。今天，我就面向JavaScript的OOP谈一些自己的想法。以下文档中简称JS。
	一、前言
		动态网页技术分为客户端和服务器端。服务器端的技术如ASP、PHP、JSP。
	这些活动服务器技术它们都是以某中编程语言为支持，在"服务器端"因时因需地对数据实现动态存取。而客户端对这些数据作展示地无疑是HTML,HTML天生是静态的。有了服务器端技术的支持。对于客户而言，他已经感觉到了动态交互的存在，然而这种交互是建立在Client和Server的频繁往复代价之上的。
	Web设计有一条金科玉律:尽量减少服务器端和客户端的往返交互。基于此目的，以胖客户形式出现的Web客户端出现了。当然任何事情物极必反，我们不可能使Web的胖客户端去做服务器的事情，否则我们有回归到了C/S架构程序设计的原点。
	而实现客户端动态技术的常用编程语言无疑是javascript和vbscript.javascript是一种被广泛支持的脚本语言.而vbscript目前主要运行在IE里面.下面我们讨论javascript的面向对象特性.
 二、JavaScript OOP
	(一)、OOP的一些基本概念。
		面向对象的编程经常有以下概念：类、对象、属性、方法。那么，javascript是否也有这些概念呢？回答是当然有，我们就是要讨论这些概念在javascript中的实现方法。
		1.类和对象:Java和C++和C#等强类型的编程语言他们为了实现面向对象的概念，采取的方案是定义类，然后采用new关键字实例化类的对象。javascript中没有类的概念，取而代之的是"原型"这样一个概念。也就是说在OOP语言里面的 类与对象在javascript里面对应的原型和对象.如下:
	OOP(Java、C++、C#):	类	--->	对象
	JavaScript:			原型 --->	对象

	但是我们并不需要定义这个原型,而定义一个构造函数，通过这个函数构造对象.而这个构造器上就有这个原型对象,如下代码:
	<script type="text/javascript">	
	//对象的构造函数
	function Person(){
	}
	//显示这个构造器上的原型对象是否为空
	alert(Person.prototype != null);
</script>
	2.原型和对象成员的动态性:
		不同强类型的OOP语言,类的成员是在类定义时确定，在运行时候不可以修改或删除,我们把这种对成员的访问行为称为早期绑定。js原型和对象的成员完全可以在运行时候动态确定，我把这种对成的访问行为称为晚绑定。毫无疑问，晚绑定效率低于早绑定。其实在Java语言中面向对象中的多态特性就是一种晚期绑定。在JS中如下:
	2.1.对象上的晚期绑定:
		<script type="text/javascript">		
			function Pet(){
				//早属性邦定
				this.number = "pet_001";
				this.name = "tigger";
			}
			var p = new Pet();
			//晚邦定添加属性成员
			p.age = 2;
			//晚邦定添加方法成员
			p.speak=function(){
				alert(this.name + " 汪汪!!!");
			}	
			p.speak();
		</script>		
	2.2.原型上的晚期绑定:
		<script type="text/javascript">		
			function Pet(){
				//早期属性邦定
				this.number = "pet_001";
				this.name = "tigger";
			}
			var p = new Pet();
			//晚邦定添加属性成员
			Pet.prototype.age = 2;
			//晚邦定添加方法成员
			Pet.prototype.speak=function(){
				alert(this.name + " 汪汪!!!");
			}	
			p.speak();
		</script>			
	如果构造器有一个原型对象，则由该构造器创建的对象都都必须复制自该原型对象,如下代码:
	<script typ]]></description></item><item><pubDate><![CDATA[2008-7-22 10:29:51]]></pubDate><title><![CDATA[SQL Server 里的函数]]></title><link><![CDATA[http://blog.cd-accp.com/User1/969/Show.asp?/_articleid/1640.html]]></link><description><![CDATA[数据库里要使用到的函数简介]]></description></item><item><pubDate><![CDATA[2008-7-21 22:34:40]]></pubDate><title><![CDATA[hehe]]></title><link><![CDATA[http://blog.cd-accp.com/User1/895/Show.asp?/_articleid/1639.html]]></link><description><![CDATA[[marquee]呵，非常感谢哈／．．偶终于明白咯[/marquee]
]]></description></item><item><pubDate><![CDATA[2008-7-16 22:17:11]]></pubDate><title><![CDATA[Y2要来咯....]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1637.html]]></link><description><![CDATA[S2算完咯,Y2就来咯....]]></description></item><item><pubDate><![CDATA[2008-7-16 19:42:21]]></pubDate><title><![CDATA[我的新日志]]></title><link><![CDATA[http://blog.cd-accp.com/User1/467/Show.asp?/_articleid/1635.html]]></link><description><![CDATA[“开源社区充满创意和活力的人”
]]></description></item><item><pubDate><![CDATA[2008-7-16 16:34:25]]></pubDate><title><![CDATA[被称为世上最经典的25句话]]></title><link><![CDATA[http://blog.cd-accp.com/User1/595/Show.asp?/_articleid/1634.html]]></link><description><![CDATA[１，记住该记住的，忘记该忘记的。改变能改变的，接受不能改变的。 

２，能冲刷一切的除了眼泪，就是时间，以时间来推移感情，时间越长，冲突越 淡，仿佛不断稀释的茶。 

３，怨言是上天得至人类最大的供物，也是人类祷告中最真诚的部分。 

４，智慧的代价是矛盾。这是人生对人生观开的玩笑。 

５，世上的姑娘总以为自己是骄傲的公主（除了少数极丑和少数极聪明的姑娘例外）。 

６，如果敌人让你生气，那说明你还没有胜他的把握。 

７，如果朋友让你生气，那说明你仍然在意他的友情。 

８，令狐冲说“有些事情本身我们无法控制，只好控制自己。” 

９，我不知道我现在做的哪些是对的，那些是错的，而当我终于老死的时候我才知道这些。所以我现在所能做的就是尽力做好待着老死。 

１０，也许有些人很可恶，有些人很卑鄙。而当我设身为他想象的时候，我才知道：他比我还可怜。所以请原谅所有你见过的人，好人或者坏人。 

１１，鱼对水说你看不到我的眼泪，因为我在水里．水说我能感觉到你的眼泪，因为你在我心里。 

１２，快乐要有悲伤作陪，雨过应该就有天晴。如果雨后还是雨，如果忧伤之后还是忧伤．请让我们从容面对这离别之后的离别。微笑地去寻找一个不可能出现的你！ 

１３，死亡教会人一切，如同考试之后公布的结果——虽然恍然大悟，但为时晚矣~！ 

１４，你出生的时候，你哭着，周围的人笑着；你逝去的时候，你笑着，而周围的人在哭！一切都是轮回!!!! 我们都在轮回中!!!! 

１５，男人在结婚前觉得适合自己的女人很少，结婚后觉得适合自己的女人很多。 

１６，于千万人之中，遇见你所遇见的人；于千万年之中，时间的无涯荒野里，没有早一步，也没有晚一步，刚巧赶上了 。 

１７，每个人都有潜在的能量，只是很容易:被习惯所掩盖，被时间所迷离,被惰性所消磨。 

１８，人生短短几十年，不要给自己留下了什么遗憾，想笑就笑，想哭就哭，该爱的时候就去爱，无谓压抑自己。 

１９，《和平年代》里的话：当幻想和现实面对时，总是很痛苦的。要么你被痛苦击倒，要么你把痛苦踩在脚下。 

２０，真正的爱情是不讲究热闹不讲究排场不讲究繁华更不讲究嚎头的。 

２１，生命中，不断地有人离开或进入。于是，看见的，看不见的；记住的，遗忘了。生命中，不断地有得到和失落。于是，看不见的，看见了；遗忘的，记住了。然而，看不见的，是不是就等于不存在？记住的，是不是永远不会消失？ 

２２，我们确实活得艰难，一要承受种种外部的压力，更要面对自己内心的困惑。在苦苦挣扎中，如果有人向你投以理解的目光，你会感到一种生命的暖意，或许仅有短暂的一瞥，就足以使我感奋不已。 

２３，我不去想是否能够成功,既然选择了远方,便只顾风雨兼程；我不去想,身后会不会袭来寒风冷雨,既然目标是地平线,留给世界的只能是背影。 

２４，后悔是一种耗费精神的情绪.后悔是比损失更大的损失,比错误更大的错误.所以不要后悔 。 

２５，日出东海落西山，愁也一天，喜也一天；遇事不钻牛角尖，人也舒坦，心也舒坦。]]></description></item><item><pubDate><![CDATA[2008-7-13 16:20:36]]></pubDate><title><![CDATA[S2就这样结束咯....]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1632.html]]></link><description><![CDATA[S2结束咯!]]></description></item><item><pubDate><![CDATA[2008-7-12 14:28:59]]></pubDate><title><![CDATA[c#简单创建html文件创建器]]></title><link><![CDATA[http://blog.cd-accp.com/User1/911/Show.asp?/_articleid/1631.html]]></link><description><![CDATA[<<html文件的创建器>>,这个工具可以帮你自动生成html的标准代码,也可自定义是否包含JavaScript的标签等等..下面是源代码..]]></description></item><item><pubDate><![CDATA[2008-7-10 0:17:31]]></pubDate><title><![CDATA[IOC容器实现探索(C#)]]></title><link><![CDATA[http://blog.cd-accp.com/User1/1190/Show.asp?/_articleid/1630.html]]></link><description><![CDATA[不得不佩服微软对反射技术的封装,非常简单易用.反射的运用与尝试不在是少数人所为.以此来实现IOC思想的容器,如果仅就技术实现角度而言,真实垂手可得.
    时间关系,只有后续了......]]></description></item><item><pubDate><![CDATA[2008-7-7 23:53:33]]></pubDate><title><![CDATA[谈C#反射的运用]]></title><link><![CDATA[http://blog.cd-accp.com/User1/1190/Show.asp?/_articleid/1629.html]]></link><description><![CDATA[请在下面框中选中摘要的内容]]></description></item><item><pubDate><![CDATA[2008-6-30 23:18:00]]></pubDate><title><![CDATA[Java||Java.io包]]></title><link><![CDATA[http://blog.cd-accp.com/User1/957/Show.asp?/_articleid/1627.html]]></link><description><![CDATA[Java||Java.io包]]></description></item><item><pubDate><![CDATA[2008-6-30 22:01:44]]></pubDate><title><![CDATA[每天的日子...]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1626.html]]></link><description><![CDATA[每天都生活得很规律.]]></description></item><item><pubDate><![CDATA[2008-6-27 1:33:52]]></pubDate><title><![CDATA[数据库的连接(侨联)]]></title><link><![CDATA[http://blog.cd-accp.com/User1/895/Show.asp?/_articleid/1625.html]]></link><description><![CDATA[package untitled1;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2008</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class Frame1 {
       public class connectna {
        static final String JTDS_DRIVER = "sun.jdbc.odbc.jdbcodbcDriver";
        static final String JTDS_NAME = "jdbc:odbc:test";

//创建连接
        public static Connection getconnectna() {
            Connection dbConnection = null;
            try {
                Class.forName(JTDS_DRIVER);
                dbConnection = DriverManager.getConnection(JTDS_NAME);
            } catch (ClassNotFoundException ex) {
                ex.printStackTrace();
            }
            return dbConnection;
        }
    }
//关闭连接
    public static void closeConnection(Connection dbconnection){
        try{
            if(dbconnection != null && (!dbconnection.isClosed())){
                dbconnection.close();
            }
        }catch(SQLException sqlEx){
            sqlEx.printStackTrace();
        }
    }

    public static void closeResultSet(ResultSet res){
        try{
            if(res != null){
                res.close();
            }
        }catch(SQLException sqlEx){
            sqlEx.printStackTrace();
        }
    }

    public static void closePreparedStatement(PreparedStatement pStatement){
        try{
            if(pStatement != null){
                pStatement.close();
            }
        }catch(SQLException sqlEx){
            sqlEx.printStackTrace();
        }
    }
}]]></description></item><item><pubDate><![CDATA[2008-6-27 1:29:36]]></pubDate><title><![CDATA[数据库的连接(直连)]]></title><link><![CDATA[http://blog.cd-accp.com/User1/895/Show.asp?/_articleid/1624.html]]></link><description><![CDATA[package connect;

import java.sql.PreparedStatement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Connection;
import java.sql.SQLException;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2008</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class connectna{
    static final String JTDS_DRIVER = "net.sourceforge.jtds.jdbc.Driver";
    static final String JTDS_URL =
            "jdbc:jtds:sqlserver://localhost:1433/angel";
    static final String USERNAME = "sa";
    static final String PASSWORD = "sa";

    /**
     * 创建一个数据库连接对象
     * @return Connection
     */
    public static Connection getConnection() {
        Connection dbConnection = null;

        try {
            Class.forName(JTDS_DRIVER);
            dbConnection = DriverManager.getConnection(JTDS_URL, USERNAME,
                    PASSWORD);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return dbConnection;
    }

    /**
     * 关闭数据库连接
     * @param dbConnection Connection
     */
    public static void closeConnection(Connection dbConnection) {
        try {
            if (dbConnection != null && (!dbConnection.isClosed())) {
                dbConnection.close();
            }
        } catch (SQLException sqlEx) {
            sqlEx.printStackTrace();
        }
    }

    public static void closeResultSet(ResultSet res) {
        try {
            if (res != null) {
                res.close();
            }
        } catch (SQLException sqlEx) {
            sqlEx.printStackTrace();
        }
    }

    public static void closePreparedStatement(PreparedStatement pStatement) {
        try {
            if (pStatement != null) {
                pStatement.close();
            }
        } catch (SQLException sqlEx) {
            sqlEx.printStackTrace();
        }
    }
}]]></description></item><item><pubDate><![CDATA[2008-6-27 1:28:10]]></pubDate><title><![CDATA[数据类型的转换]]></title><link><![CDATA[http://blog.cd-accp.com/User1/895/Show.asp?/_articleid/1623.html]]></link><description><![CDATA[1 如何将字串 String 转换成整数 int?  

A. 有两个方法: 

1). int i = Integer.parseInt([String]); 或  
i = Integer.parseInt([String],[int radix]); 

2). int i = Integer.valueOf(my_str).intValue();  

注: 字串转成 Double, Float, Long 的方法大同小异.  


2 如何将整数 int 转换成字串 String ?  


A. 有叁种方法: 

1.) String s = String.valueOf(i); 

2.) String s = Integer.toString(i);  

3.) String s = "" + i;  

注: Double, Float, Long 转成字串的方法大同小异. 
]]></description></item><item><pubDate><![CDATA[2008-6-27 1:25:36]]></pubDate><title><![CDATA[渺茫]]></title><link><![CDATA[http://blog.cd-accp.com/User1/895/Show.asp?/_articleid/1622.html]]></link><description><![CDATA[最近好懒哦!文章都没有...
前途好渺茫........]]></description></item><item><pubDate><![CDATA[2008-6-26 0:08:37]]></pubDate><title><![CDATA[Java||Java.util包]]></title><link><![CDATA[http://blog.cd-accp.com/User1/957/Show.asp?/_articleid/1621.html]]></link><description><![CDATA[Java||Java.util包]]></description></item><item><pubDate><![CDATA[2008-6-25 19:38:53]]></pubDate><title><![CDATA[一个好的底层代码....]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1620.html]]></link><description><![CDATA[今天得到咯一个比较好的底层代码.]]></description></item><item><pubDate><![CDATA[2008-6-23 19:33:56]]></pubDate><title><![CDATA[分层的重要性....]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1619.html]]></link><description><![CDATA[分层........]]></description></item><item><pubDate><![CDATA[2008-6-22 22:18:27]]></pubDate><title><![CDATA[今天学咯很多....]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1618.html]]></link><description><![CDATA[.......]]></description></item><item><pubDate><![CDATA[2008-6-22 14:25:23]]></pubDate><title><![CDATA[Java||Java.lang包]]></title><link><![CDATA[http://blog.cd-accp.com/User1/957/Show.asp?/_articleid/1617.html]]></link><description><![CDATA[Java||Java.lang包]]></description></item><item><pubDate><![CDATA[2008-6-22 12:23:01]]></pubDate><title><![CDATA[ASP]]></title><link><![CDATA[http://blog.cd-accp.com/User0/209/Show.asp?/_articleid/1616.html]]></link><description><![CDATA[呵呵.多多指教!]]></description></item><item><pubDate><![CDATA[2008-6-21 13:02:06]]></pubDate><title><![CDATA[Java||异常]]></title><link><![CDATA[http://blog.cd-accp.com/User1/957/Show.asp?/_articleid/1615.html]]></link><description><![CDATA[Java||异常]]></description></item><item><pubDate><![CDATA[2008-6-20 18:11:01]]></pubDate><title><![CDATA[教育浅谈]]></title><link><![CDATA[http://blog.cd-accp.com/User0/21/Show.asp?/_articleid/1614.html]]></link><description><![CDATA[教育投资问题的浅显剖析------网络交流心得]]></description></item><item><pubDate><![CDATA[2008-6-18 17:34:08]]></pubDate><title><![CDATA[当幸福来敲门]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1613.html]]></link><description><![CDATA[当幸福来敲门]]></description></item><item><pubDate><![CDATA[2008-6-17 16:22:53]]></pubDate><title><![CDATA[简单的普法教育]]></title><link><![CDATA[http://blog.cd-accp.com/User0/21/Show.asp?/_articleid/1612.html]]></link><description><![CDATA[我国刑法第二百七十条规定，将他人的遗忘物或者埋藏物非法占为己有，数额较大，拒不交出的，按侵占罪处罚。]]></description></item><item><pubDate><![CDATA[2008-6-16 21:49:05]]></pubDate><title><![CDATA[这期到最后咯....]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1611.html]]></link><description><![CDATA[S2就快结束咯..]]></description></item><item><pubDate><![CDATA[2008-6-13 22:03:30]]></pubDate><title><![CDATA[Java||面向对象的概念和Java实现]]></title><link><![CDATA[http://blog.cd-accp.com/User1/957/Show.asp?/_articleid/1610.html]]></link><description><![CDATA[Java||面向对象的概念和Java实现]]></description></item><item><pubDate><![CDATA[2008-6-13 21:38:18]]></pubDate><title><![CDATA[记性不杂好....]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1609.html]]></link><description><![CDATA[............]]></description></item><item><pubDate><![CDATA[2008-6-11 21:25:14]]></pubDate><title><![CDATA[C#中用正则表达式来验证邮箱...]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1608.html]]></link><description><![CDATA[今天写一个登录,要验证邮箱...]]></description></item><item><pubDate><![CDATA[2008-6-11 3:20:47]]></pubDate><title><![CDATA[.Net中变量的命名和属性]]></title><link><![CDATA[http://blog.cd-accp.com/User0/263/Show.asp?/_articleid/1607.html]]></link><description><![CDATA[static readonly与const的变量，作用是一样的，无论访问修饰符是不是public，还是其它(private、protected、internal），变量名称一般为大写，中间以下划线。 

　　public static readonly int MAX_HEIGHT; 
　　public const int MIN_HEIGHT = 10; 

　　有些程序员对大写不敏感，上例中，MAX_HEIGHT用Max_Height代替也未尝不可，甚至MaxHeight也可以。在.Net类库中，int.MaxValue与int.MinValue便是这样定义的。 

　　const常量更确切的说是编译时常量，因为它在运行时是不存在的，在编译中所有变量引用将被实际值替掉。而static readonly则不然，它在运行时也是存在的。从原理上讲，论效率const优于static readonly。但是在一个比较在的项目中，在dll局部升级时，如果改变了某个const变量的值，而未升级的dll如果也有这个const变量的 话，显而易见这时候问题将是产生。如果因此而升级全部dll，反而不值。所以在大型、多变应用中，建议使用static readonly代替const。其微乎其微的效率的减损对比升级布置可能出现的问题还是可以接受的。 

　　除了以上两种静态只读和常量变量之外，其它变量命名均以下划线开始，访问修改符为private(不建议命名为internal、protected，更不建议命名为public)： 

　 private static int _maxHeight; 
　　private int _minHeight; 

如果其命名不前置下划线，易与参数变量混淆。 

　　对于下面这种定义： 

　　private int _minHeight = default(int); 
　　public int MinHeight 
　　{ 
　 　set{ 
　 　_minHeight = value; 
　 　} 
　 　get{ 
　 　return _minHeight; 
　 　} 
　　} 



　　初学者可能觉得有点画蛇添足，不如直接命名为： 

　　public int MinHeight; 这样岂不简单，干吗还要用getter和setter封装起来，额外的函数调用也使效率有损。 

　　有时候在开发项目时，开始时我们要画的可能只是一条蛇，但是项目后期需求变了，改画一条龙了。所以在项目初期画蛇的时候添上一对足还是很有远见的。 

　　getter与setter(属性存取器)可以像方法一样封装逻辑并且像变量一样使用，建议所有非静态只读和常量，定义为 private，然后给其添加相应属性存取器，用于赋值与读取。在其它方法体内（包涵类外与类内），不建议直接读写变量。即使它目前可以被直接读写，我们 也要通过调用属性存取器也调用。这一点有点麻烦，但很重要，很高老手有时也会犯错误。如下所示： 

　　private int _minHeight = int.MinValue; 
　　public int MinHeight//或者是protected、internal，甚至是private 
　　{ 
　 　set{ 
　 　_minHeight = value; 
　 　//即使这里目前没有其它处理逻辑 
　 　} 
　 　get{ 
　 　return _minHeight; 
　 　} 
　　} 
　　public void Method1(int minHeight) 
　　{ 
　 　this.MinHeight = minHeight;//在这里不要使用this._minHeight直接读写 
　 　// 
　　} 

　　即使变量的访问是受保护的或者或者是私有的，也要使用属性存取器。 

　　原则是：对于变量的读取，要用属性存取器封装，无论其访问修饰符如何，即使其属性存取器内除了存取目前没有任何其它逻辑。]]></description></item><item><pubDate><![CDATA[2008-6-11 3:20:07]]></pubDate><title><![CDATA[如何制定和执行职业发展目标?]]></title><link><![CDATA[http://blog.cd-accp.com/User0/263/Show.asp?/_articleid/1606.html]]></link><description><![CDATA[是不是所有的技术人员都能在未来的某一天成为部门经理，架构师或者创业者呢？ 
假设只要IT工业无限制地按照从前的发展速度发展，金字塔上会有足够的位置给现在的IT人。 
如果在这些头衔上再加一个“杰出的”，又会有怎样的比例呢？ 
我觉得不会超过5%。 

就像所有创业的企业都期望自己能赚钱，赚大钱一样。 
可惜的是，长期统计的数据证明，95%的创业企业会在5年内死掉。 

所有的初入门的程序员，或者已经工作了2-3年的程序员都希望能够按照自己的职业规划，尽早地达到目标。 

职业发展目标的设定很重要,执行更加重要!!! 

我坚定地支持以下几个观点： 
- 每个人有权利也应该去追逐自己的梦想，这是每个人不可被剥夺的权利； 
- 每个人应该明白自己的优势劣势机会威胁，目前所有能够利用的资源，合理规划自己的发展道路； 
- 每个人都确实需要一段时间的扎扎实实地打基础和积累。 
- 在追逐自己梦想的时候，要考虑自己的发展方向如何与团队的发展结合，做到双赢； 
- 在公司暂且不能满足所有发展所需的条件的时候，通过团队合作，辛勤劳动创造条件。 
- 按照正确的发展轨迹，规划道路并发展自己，而不是盲目地为了工资提升或者某个主管位子快速改变自己的轨迹。 

只有能坚定目标,正确执行的人,才能获得成就. 
记住Steve Jobs说的这些话吧，无论你做什么，如果做到了这些，一定会成为非常了不起的人。 
-追求卓越 
成功没有捷径。你必须把卓越转变成你身上的一个特质。最大限度的发挥你的天赋、才能、技巧，把其他所有人甩在你后面。高标准严格自己，把注意力集中在那些将会改变一切的细节上。变得卓越并不艰难 - 从现在开始尽自己最大能力去做 - 你会发现生活将给你惊人的回报。 

做我所爱 
-去寻找一个能给你的生命带来意义、价值和让你感觉充实的事业。拥有使命感和目标感才能给生命带来意义、价值和充实。这不仅对你的健康和寿命有益处，而且即使在你处于困境的时候你也会感觉良好。在每周一的早上，你能不能利索的爬起来并且对工作日充满期待？如果不能，那么你得重新去寻找。你会感觉得到你是不是真的找到了。 

-初学者的心态 
不要迷惑于表象而要洞察事务的本质，初学者的心态是行动派的禅宗。所谓初学者的心态是指，不要无端猜测、不要期望、不要武断也不要偏见。初学者的心态正如一个新生儿面对这个世界一样，永远充满好奇、求知欲、赞叹。 

-为自己而活 
你的时间有限，所以不要为别人而活。不要被教条所限，不要活在别人的观念里。不要让别人的意见左右自己内心的声音。最重要的是，勇敢的去追随自己的心灵和直觉，只有自己的心灵和直觉才知道你自己的真实想法，其他一切都是次要。 


很多时候，前进的路上有很多“捷径”，比如工作两年就可以做经理，工作三年可以做CTO之类的。警惕，许多违背常理的发展轨迹，也许欲速则不达。（步步高的董事长段永平转型投资后,用ID"Fast is Slow"“快就是慢”拍下了与巴菲特的一顿午餐机会。） 

一个人如果能真正领悟到,自己喜欢做什么,如何最大限度地发挥自己的特质. 
只要自己在不断地做正确的事,保持很好的速度,一定能成为卓越的技术人才.]]></description></item><item><pubDate><![CDATA[2008-6-11 3:19:36]]></pubDate><title><![CDATA[解密中国IT人十大职业现状]]></title><link><![CDATA[http://blog.cd-accp.com/User0/263/Show.asp?/_articleid/1605.html]]></link><description><![CDATA[中国IT工程师大多数对当前薪酬收入状况不是很满意，数据显示，有68%的人群持不满意态度，认为以自己当前的能力与付出应该拿更高的薪酬，只有21%人群对当前收入水平持满意态度，认为当前的薪酬是自己业务能力的真实反映，另外有11%人群比例持无所谓态度。 



一、IT工程师两大压力：个人成长和经济状况 
当前压力集中在个人发展与经济状况，两要素占总比72%，其次是家庭状况、公司管理机制和工作任务。 

二、网络工程师平均学历偏低培训需求巨大 
网络工程师平均学历普遍偏低，大专及以下学历中，网工所占比重非常大，该人群急需工作中继续充电。 

三、培训机构不受信赖八成工程师提升靠自学 
IT工程师中选择自学充电的人群占到81%，其次，靠培训机构来提升的人群只占13%，而远程教育只占到3%。 

四、中国IT工程师拥有量最多的是等考证书 
等考是IT工程师参与度最高的专业认证，近四成IT工程师拥有等考证书。此外依次是软考、思科、微软。 

五、IT工程师获取信息几乎全靠互联网 
互联网是IT工程师获取技术信息的最主要渠道，该类人群占比高达94.6%，其中近7成技术人忠爱BBS。 

六、2成IT工程师不访问国外网站语言是障碍 
只有24%的IT工程师经常访问国外网站来获取更多技术信息。另有20%人群从不访问国外网站，语言是障碍。 

七、85%网络工程师对IT产品采购有话语权 
45%左右的IT工程师对产品采购有建议权，27%的工程师有指导作用，另外有13%的工程师具有直接采购权。 

八、6成多IT工程师热爱当前职业 
64%的IT工程师喜爱自己的工作，认为这是自己实现梦想的职业，另外4%的工程师希望能有机会换个职业。 

九、IT工程师认为职业道德比管理能力更重要 
IT工程师认为，专业技术、工作经验和职业道德是应该具备的首要素质，其次是个人素养和管理能力。 

十、中国IT工程师健康状况令人担忧 
77%的IT工程师人群每天休息时间在6-8小时，此外，6成一年内的IT工程师每天休息时间仅为4小时。]]></description></item><item><pubDate><![CDATA[2008-6-11 3:18:04]]></pubDate><title><![CDATA[身处两难境地，PHP 该走向何方？]]></title><link><![CDATA[http://blog.cd-accp.com/User0/263/Show.asp?/_articleid/1604.html]]></link><description><![CDATA[在过去的六个月甚至更长的时间里，我至少在为三家公司寻找 PHP 开发者。我和一些程序员聊过，收到了一些反馈，甚至还面试了几个人，但是我却从来没有推荐过任何人。

在我解释之前，先别抨击我的要求太高。我并不是在寻找火箭科研人员，也不是找同样高端的开发者，我甚至都不打算找一个高级的 PHP 开发者。只要有足够的水平来维护 CakePHP 和 WordPress 这两个项目的人就够了，更何况，它们还是开源的。

我理解并不是每个人都使用过 CakePHP 和 WordPress 来做开发。我也明白熟悉这些代码和通读相关文档都需要一些时间。更知道不是每个人都熟悉开源软件开发模型，不是每个人都在团队里工作过，所以，熟悉版本控制软件，文档编辑工具和 bug 跟踪等等都不在要求范围之内。

但是我不明白的是，为什么那些自称使用 PHP 和 MySQL ，至少开发过两个 web 项目的人，却不能用纸笔写出最简单的代码？为什么有数年 PHP 开发和团队领导经验的“高级 web 工程师”，面对没有 Dreamweaver 的开发环境时却一无是处？那些至少拥有一个计算机科学学士学位的开发者，却还在崇尚冒泡排序法？为什么程序员不再回答技术问题，反而开始向潜在的雇主讲述面试经历？为什么拥有数年团队合作经验的技术人员，在面试时哪怕是被问到最简单的技术问题，都会茫然不知所措？

如果你想知道上面这些问题的答案，这里正好有个例子。比如说，有个简单的问题：“stack (也称为 FILO ) 和 queue (也称为 pipe 或者 FIFO) 两者之间有什么不同？”答案就已经明显地隐藏在问题之中了，不是么？

这些自称有好几年开发工作和项目经验的应聘者，在面试时通常会遇到一些简单的程序问题。比如下面这个问题：“使用 PHP 创建一个存储人物信息的列表，人物信息包括姓名、年龄和性别，向其中添加三个样本。然后按列表中的男性名字的字母序排出一个列表，如果不使用数据库会有额外加分。”每个应聘者只有一张纸，一支笔，和无限制的答题时间。但是在这六个月里，我还从没看过有人能手写代码解决这些问题。

我们通过所有的招聘网站、报纸、各地社区和职业介绍所来寻找应聘者，结果却是无一成功。现在我们只需要三个人，但是在不久的将来空缺将更多。

这就像塞浦路斯 (地中海东部一岛国，人口约82万) 上的人力资源状况一样，需求大于供给，但是仍然无济于事。所以我也希望你们了解我的感受。

想讨论塞浦路斯这个在科技领域里又小又不注目的国家，你们还是得等一等吧。去年我去了希腊博主露营会，今年我又去了阿姆斯特丹的下一代网络大会。在这两个大会上，我和来自欧洲和美国的朋友们都聊过。我也访问过各地的社区和招聘网站。我的感受是，这不仅仅是和塞浦路斯所面临的问题一样。当然，因为其地理原因和科技水平地位，塞浦路斯的情况确实是比其他地区要严重一些。

现在，我仍然在花费大量的时间来寻找 PHP 开发者，但是同时我也在思考这个问题的根源。PHP 看起来是种很流行的语言，但是为会在寻找一个好的 PHP 开发者时会遇到这样的问题呢？我得出这样一种理论，也许称其为一系列的假设和推测比较好。

PHP 是丑陋的语言

我本人认识一些优秀的开发者，我也读过更多优秀开发者的博客文章。尽管他们常常使用 PHP ，有些还把 PHP 作为日常开发基础语言，但是我却从来不记得他们其中有任何人说过喜欢 PHP 语言。如果在新项目时有开发语言的选择的可能，他们会选择 Java，C，Python，Perl，Ruby on Rails，Haskell等等，但就是不会选择 PHP 。PHP 有它的优势，但是却不是一种漂亮和方便的开发语言。

PHP 是面向新手的语言

PHP 之所以如此流行，原因之一就是它是面向新手的语言，人们可以不需要任何编程基础就开始编写 PHP 应用程序。 大多数应用提供商会提供 PHP 开发程序给你，而这些程序每个月的激活费不过是少之又少。你可以在任何文本编辑器里写 PHP 程序，所以你也不需要高性能的机器或是昂贵的 IDE 。HPH.net 开发网站上有所有你所需要的开发文档和实例，所以你也不必在学校苦学，更不必和开发者网站签订使用协议。对编程新手来说，所有这些都是让 PHP 吸引力十足的原因。

PHP 回避了某些问题

大多数我认识的优秀程序都有一定的 PHP 水平，而那些差劲的程序也学习过一些 PHP。但是对于优秀程序员来说，PHP 既不是他们的所在领域的第一位语言，也不是他们的发展方向。而我所知道的大部分差劲程序员，却只了解 PHP 这一种语言，而且他们并不精通 PHP。所以，对于优秀程序员来说，学习和使用 PHP 不过是一时需求；而对于那些差劲者]]></description></item><item><pubDate><![CDATA[2008-6-10 21:49:29]]></pubDate><title><![CDATA[今天很忙.......]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1603.html]]></link><description><![CDATA[今天没得其他的事,但是很忙....]]></description></item><item><pubDate><![CDATA[2008-6-9 19:14:19]]></pubDate><title><![CDATA[.............]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1602.html]]></link><description><![CDATA[这两天粽子吃多咯,但是吃咯那么多还是觉得老师那天发给我的哪个好吃些..
也许是那天饿了吧..]]></description></item><item><pubDate><![CDATA[2008-6-9 17:20:06]]></pubDate><title><![CDATA[珍爱生命，热爱生活，重建美好家园。]]></title><link><![CDATA[http://blog.cd-accp.com/User1/595/Show.asp?/_articleid/1601.html]]></link><description><![CDATA[[img]/userupload/user1/595/200861346501205.gif[/img]]]></description></item><item><pubDate><![CDATA[2008-6-8 20:27:41]]></pubDate><title><![CDATA[很有一样的一天.......]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1600.html]]></link><description><![CDATA[今天我就毕业一年咯.....]]></description></item><item><pubDate><![CDATA[2008-6-6 22:12:10]]></pubDate><title><![CDATA[我的HTML]]></title><link><![CDATA[http://blog.cd-accp.com/User1/969/Show.asp?/_articleid/1599.html]]></link><description><![CDATA[HTML课程结束了

今天考试]]></description></item><item><pubDate><![CDATA[2008-6-6 20:39:30]]></pubDate><title><![CDATA[2008年3月留影]]></title><link><![CDATA[http://blog.cd-accp.com/User1/969/Show.asp?/_articleid/1597.html]]></link><description><![CDATA[[img]/userupload/user1/969/20086674364985.jpg[/img]]]></description></item><item><pubDate><![CDATA[2008-6-6 20:16:52]]></pubDate><title><![CDATA[你们之间是什么图形]]></title><link><![CDATA[http://blog.cd-accp.com/User1/969/Show.asp?/_articleid/1596.html]]></link><description><![CDATA[走在路上突然想到这个问题

连闯了红灯都不知道。。。。

所以回来的时候就想要写下来，以安慰一下闯红灯时受到的惊吓]]></description></item><item><pubDate><![CDATA[2008-6-5 21:49:45]]></pubDate><title><![CDATA[今天的雨好大.....]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1595.html]]></link><description><![CDATA[.............]]></description></item><item><pubDate><![CDATA[2008-6-5 10:49:54]]></pubDate><title><![CDATA[html||课程总结]]></title><link><![CDATA[http://blog.cd-accp.com/User1/957/Show.asp?/_articleid/1594.html]]></link><description><![CDATA[html||课程总结]]></description></item><item><pubDate><![CDATA[2008-6-4 22:32:33]]></pubDate><title><![CDATA[项目......]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1593.html]]></link><description><![CDATA[做项目....]]></description></item><item><pubDate><![CDATA[2008-6-3 21:03:34]]></pubDate><title><![CDATA[需求分析....]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1592.html]]></link><description><![CDATA[...........]]></description></item><item><pubDate><![CDATA[2008-6-3 18:41:55]]></pubDate><title><![CDATA[C# COM 口通讯]]></title><link><![CDATA[http://blog.cd-accp.com/User1/624/Show.asp?/_articleid/1591.html]]></link><description><![CDATA[using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Threading;

public class ComPort
{
    static bool _continue;
    static SerialPort _serialPort;
    public static void Main(string[] args)
    {
        string name;
        string message;
        StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
        Thread readThread = new Thread(Read);
        // Create a new SerialPort object with default settings.
        _serialPort = new SerialPort();
        // Allow the user to set the appropriate properties.
        _serialPort.PortName = SetPortName(_serialPort.PortName);
        _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate);
        _serialPort.Parity = SetPortParity(_serialPort.Parity);
        _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits);
        _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits);
        _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake);
        // Set the read/write timeouts
        _serialPort.ReadTimeout = 500;
        _serialPort.WriteTimeout = 500;
        _serialPort.Open();
        _continue = true;
        readThread.Start();
        Console.Write("Name: ");
        name = Console.ReadLine();
        Console.WriteLine("Type QUIT to exit");
        while (_continue)
        {
            message = Console.ReadLine();
            if (stringComparer.Equals("quit", message))
            {
                _continue = false;
            }
            else
            {
                _serialPort.WriteLine(
                    String.Format("<{0}>: {1}", name, message));
            }
        }
        readThread.Join();
        _serialPort.Close();
    }
    public static void Read()
    {
        while (_continue)
        {
            try
            {
                string message = _serialPort.ReadLine();
                Console.WriteLine(mes]]></description></item><item><pubDate><![CDATA[2008-6-3 18:41:16]]></pubDate><title><![CDATA[(C#)在.NET 2.0 中使用 BackgroundWorker 组件]]></title><link><![CDATA[http://blog.cd-accp.com/User1/624/Show.asp?/_articleid/1590.html]]></link><description><![CDATA[在.NET 2.0 中使用 BackgroundWorker 组件
在WinForm中经常遇到一些费时的操作界面，比如统计某个磁盘分区的文件夹或者文件数目，如果分区很大或者文件过多的话，处理不好就会造成“假死”的情况，或者报“线程间操作无效”的异常，为了解决这个问题，可以使用委托来处理，在.net2.0中还可以用BackgroundWorker类。 

BackgroundWorker可以让窗体异步地完成一个操作。在我们需要执行诸如『数据库事务』或者『图片下载』之类的操作时，这个功能非常有用。此时，我们的可以让用户界面停止响应（或者隐藏起来直到操作结束）。在这篇文章中，我会一步一步教会你如何在.NET 2.0程序中使用BackgroundWorker组件以便处理较耗时的操作。示例程序使用C#编写。 
与往常一样，我们创建一个测试工程，取名为"TestBGW"，使之只包含一个窗体("FormBGW"): 

图1. 
我们将使用BackgroundWorker完成一些数据库的事务操作（比如，获取一些DataTable）。首先拖一个BackgroundWorker组件到我们窗体上。 

图2. 
我们将用DataTable来设置DataGridView1的DataSource属性。我们还应该刷新我们的用户界面，并告诉用户:所有的操作已经全部“OK”，他/她不用再操心啦。因此，我们还要需要一个StatusStrip和一个Timer. 

图3. 
为了让用户看到我们的处理过程正在运行之中，我们将用到toolStripProgressBar1: 

图4. 
用toolStripStatusLabel1和toolStripStatusLabelTime是来向用户显示处理过程的状态和已经花费的时间。 
我们窗体看上去是这样子的: 


图5. 
为了模拟数据库的事务操作，我们将用到GetData.dll（当然你也可以连接到一个真实的数据库；这个模拟的目的只是为了测试而已）。出于这个目的，我们把GetData.dll添加到引用中，然后写因getDataTable方法: 

private DataTable getDataTable(int Rows) 
{ 
    GetData.GetDataHelp getData = new GetData.GetDataHelp(); 
    return (getData.getDataSetCities(Rows).Tables[0]); 
} 



我们调用RunWokerAsync方法开始我们的异步操作: 



private void FormBGW_Activated(object sender, EventArgs e) 
{ 
    backgroundWorker1.RunWorkerAsync(); 
} 



BackGroundWorker组件有三个事件: 

图6. 



DoWork事件发生在RunWokerAsync方法被调用时。在这个事件的处理函数中，我们“完成”那些的耗时的工作（我们载入至少100000行数据以便使我们的处理过程变得“耗时”），并通知用户载入工作正在进行中，最后将我们的DataTable置为我们的异步操作的结果。 



private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) 
{ 
    DataTable dt; 
    toolStripStatusLabel1.Text = "Loading ... " + "Thanks for your patience"; 
    dt = getDataTable(1000000); 
    e.Result = dt; 
} 



就我们面对的情况而言（我是指真实的情况，即从数据库获得一些DataTable的情况），我们没办法“插入”处理过程以“追踪”已获取的数据行数量（一行接一行）。当然，我们同样也没有办法知道，根据我们的请求最终可以从数据库获得多少数据行。所以呢，我们不会用DoWorkEventArgs（译注:应为BackgroudWorker的笔误）的ReportProgress 方法来触发ProgressChanged事件。我们将用Timer1，向用户显示处理过程正在进行中(我们将把 toolStripProgressBar1“增加”到最大程度，然后再从最短长度继续开始；就是说，我们会制造一些循环）。因此我们给 timer1_Tick加上下面的代码: 
]]></description></item><item><pubDate><![CDATA[2008-6-3 18:40:27]]></pubDate><title><![CDATA[C# MD5,SHA1加密]]></title><link><![CDATA[http://blog.cd-accp.com/User1/624/Show.asp?/_articleid/1589.html]]></link><description><![CDATA[C# MD5,SHA1加密
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace ConsoleApplication5
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入待加密的内容：");
            Console.WriteLine();
            string strSrc = Console.ReadLine().ToString();
            Console.WriteLine();
            Console.WriteLine("你输入的内容是：" + strSrc);
            Console.WriteLine();
            Console.WriteLine("MD5加密后编码：" + MD5_Hash(strSrc));
            Console.WriteLine();
            Console.WriteLine("SHA1加密后编码：" + SHA1_Hash(strSrc));
            Console.WriteLine();
            Console.ReadLine();
            //Console.WriteLine("MD5加密后编码：" + UserMd5("16"));
            //Console.WriteLine();
            //Console.WriteLine("SHA1加密后编码：" + cncrypto(strSrc));
            //Console.WriteLine();
            //Console.WriteLine(Ge***5Str("8"));
        }
        //MD5
        static public string MD5_Hash(string str_md5_in)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] bytes_md5_in = UTF8Encoding.Default.GetBytes(str_md5_in);
            byte[] bytes_md5_out = md5.ComputeHash(bytes_md5_in);
            string str_md5_out = BitConverter.ToString(bytes_md5_out);
            str_md5_out = str_md5_out.Replace("-", "");
            return str_md5_out;
        }
        //SHA1
        static public string SHA1_Hash(string str_sha1_in)
        {
            SHA1 sha1 = new SHA1CryptoServiceProvider();
            byte[] bytes_sha1_in = UTF8Encoding.Default.GetBytes(str_sha1_in);
            byte[] bytes_sha1_out = sha1.ComputeHash(bytes_sha1_in);
            string str_sha1_out = BitConverter.ToString(bytes_sha1_out);
            str_sha1_out = str_sha1_out.Replace("-", "");
            return str_sha1_out;
        }
        //static public string cncrypto(str]]></description></item><item><pubDate><![CDATA[2008-6-3 18:39:53]]></pubDate><title><![CDATA[C#：从DataGridView控件托放数据到TreeView控件]]></title><link><![CDATA[http://blog.cd-accp.com/User1/624/Show.asp?/_articleid/1588.html]]></link><description><![CDATA[C#：从DataGridView控件托放数据到TreeView控件
在datagridview的mousedown事件中开始 托放。
然后在treeview 的 DragEnter 中接收托放。
最后在treeview的 DragDrop 中处理托放结果。
注：treeview的allowdrop属性要设置为 true。

1        private void dataGridView1_MouseDown(object sender, MouseEventArgs e)
2        {
3            if (e.Button == MouseButtons.Right)
4            {
5                DataGridView.HitTestInfo info = dataGridView1.HitTest(e.X, e.Y);
6                
7                if (info.RowIndex >= 0)
8                {
9                    DataGridViewRow dr = (DataGridViewRow)
10                          dataGridView1.Rows[info.RowIndex];
11                    if (dr != null)
12                        dataGridView1.DoDragDrop(dr, DragDropEffects.Copy);
13                }
14            }
15        }
16
17        private void treeView1_DragEnter(object sender, DragEventArgs e)
18        {
19            e.Effect = DragDropEffects.Copy;
20        }
21
22        private void treeView1_DragDrop(object sender, DragEventArgs e)
23        {
24            if (e.Data.GetDataPresent(typeof(DataGridViewRow)))
25            {                
26                Point p = treeView1.PointToClient(new Point(e.X, e.Y));
27                TreeViewHitTestInfo index = treeView1.HitTest(p);
28
29                if (index.Node != null)
30                {
31
32                    DataGridViewRow drv = (DataGridViewRow)e.Data.GetData(typeof(DataGridViewRow));
33                    index.Node.Text = "Drop: " + drv.Cells[0].ToString();
34            
35                }
36            }
37        } 
]]></description></item><item><pubDate><![CDATA[2008-6-3 18:38:19]]></pubDate><title><![CDATA[c#用回车键实现TAB功能]]></title><link><![CDATA[http://blog.cd-accp.com/User1/624/Show.asp?/_articleid/1587.html]]></link><description><![CDATA[c#用回车键实现TAB功能
方法:把Form的KeyPreView设为true，然后在Form的KeyPress事件中增加下列代码即可： 
      if (e.KeyChar == '\r') 
      this.SelectNextControl(this.ActiveControl, true, true, true, true); 
这个方法我认为最简洁. 
]]></description></item><item><pubDate><![CDATA[2008-6-3 18:37:47]]></pubDate><title><![CDATA[符合web标准的嵌入Flash的方法]]></title><link><![CDATA[http://blog.cd-accp.com/User1/624/Show.asp?/_articleid/1586.html]]></link><description><![CDATA[符合web标准的嵌入Flash的方法
如何让网页中嵌入的Flash标签也符合web标准。目前还没有一个完美的解决办法，这篇文章中，我们将Flash嵌入标签写入js文件中，通过变量传递参数的办法来回避不符合标准的标签。  
　　请注意，这只是一个变通的方法，换汤不换药，并未能最终解决存在的问题，通过验证只是一种表象，这样的思路是不是可取，在实际操作中请大家自行斟酌。 
　　首先建立一个JS文件flash.js。写入如下代码： 
function swf(file,w,h) { 
    document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.Macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="'+w+'" height="'+h+'"> '); 
    document.write('<param name="movIE" value="' + file + '">'); 
    document.write('<param name="quality" value="high"> '); 
    document.write('<param name="wmode" value="transparent"> '); 
    document.write('<param name="menu" value="false"> '); 
    document.write('<embed src="' + file + '" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="'+w+'" height="'+h+'"></embed> '); 
    document.write('</object> '); 
} 
　　上面的js脚本定义了一个函数swf，并设置三个变量，它们分别是：flile文件链接，w宽度，h高度。在XHTML中向这个函数传递变量即可实现flash的嵌入。如下代码： 
<div id="flash"> 
    <script type="text/javascript" language="javascript">swf('filename.swf','500','220');</script> 
</div> 

　　建立id为flash的div作为一容器，在其内部嵌入js脚本，变量依次为：文件路径、宽度、高度。 
　　看下面的全部代码： 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
<title>符合web标准的嵌入Flash的方法</title> 
<script type="text/javascript" language="javascript" src="flash.js"></script> 
<style type="text/CSS"> 
#flash { width:500px; margin:50px auto; border:5px solid #03c;} 
</style> 
</head> 
<body> 
<div id="flash"> 
    <script type="text/javascript" language="javascript">swf('filename.swf','500','220');</script> 
</div> 
</body> 
</html> 
]]></description></item><item><pubDate><![CDATA[2008-6-3 18:35:51]]></pubDate><title><![CDATA[C#使用OLEDB将EXCEL文件导入到SQL SERVER中]]></title><link><![CDATA[http://blog.cd-accp.com/User1/624/Show.asp?/_articleid/1585.html]]></link><description><![CDATA[//****************使用OLEDB将EXCEL文件导入到SQL SERVER中。*******************
        //private OleDbConnection m_XLSConn;
        //private OleDbDataAdapter m_XLSAdapter;
        //private DataTable GetDataFromXLS(string s_FileName)
        //{
        //    string s_ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + s_FileName + ";Extended Properties = Excel 8.0";
        //    string s_SQLSelect = "select * from jx";
        //    m_XLSConn = new OleDbConnection(s_ConnString);
        //    m_XLSAdapter = new OleDbDataAdapter(s_SQLSelect, m_XLSConn);
        //    DataTable m_dtXLS = null;
        //    try
        //    {
        //        m_dtXLS = DataTable();
        //        m_XLSConn.Open();
        //        m_XLSAdapter.Fill(m_dtXLS);
        //    }
        //    catch (Exception exc)
        //    {
        //        throw exc;
        //    }
        //    finally
        //    {
        //        if (m_XLSConn.State == ConnectionState.Open)
        //            m_XLSConn.Close();
        //    }
        //    return m_dtXLS;
        //}

        private void simpleButton6_Click_1(object sender, EventArgs e)
        {
            try
            {
                int i;
                string only;
                SqlConnection conn = new SqlConnection("Data Source=172.16.112.20\\jweb;Initial Catalog=db_OA;Persist Security Info=True;User ID=sa;Password=");
                only = "select count(*) from JobINcentive where  姓名 like '%" + cmbName.Text.Trim().ToString() + "%' and 日期='" + lblData.Text.Trim().ToString() + "'";
                SqlCommand onlycmm = new SqlCommand(only, conn);
                conn.Open();
                i = (int)onlycmm.ExecuteScalar();
                conn.Close();
                if (lblData.Text == "" || cmbName.Text == "" || cmbName.Text == "--=请选择=--")
                {
                    MessageBox.Show("日期和姓名必须填写，并且必须和将导入的报表中相同，否则将出现想现不到的结果，请慎重！", "导入条件不全", MessageBoxBu]]></description></item><item><pubDate><![CDATA[2008-6-3 18:35:20]]></pubDate><title><![CDATA[c#读写ini文件]]></title><link><![CDATA[http://blog.cd-accp.com/User1/624/Show.asp?/_articleid/1584.html]]></link><description><![CDATA[//==================创建INI文件读写函数====================== 
        //调用kernel32.dll中的两个API：WritePrivateProfileString，GetPrivateProfileString来实现对ini文件的读写 
        [DllImport("kernel32")] 
        private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); 
        [DllImport("kernel32")] 
        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); 
        public void IniWriteValue(string Section, string Key, string Value, string filepath)  //对ini文件进行写操作的函数 
        { 
            WritePrivateProfileString(Section, Key, Value, filepath); 
        } 
        public string IniReadValue(string Section, string Key, string filepath)    //对ini文件进行读操作的函数 
        { 
            StringBuilder temp = new StringBuilder(255); 
            int i = GetPrivateProfileString(Section, Key, "", temp, 255, filepath); 
            return temp.ToString(); 
        } 
        //==================开始写入INI文件操作==================== 
        public void writeIniFileSqlServer() 
        { 
            //label13.Text = ""; 
            string iniFile = "DBC.ini"; 
            string iniFilePath = Application.StartupPath + "\\" + iniFile; 
            if (!System.IO.File.Exists(iniFilePath)) 
            { 
                System.IO.File.CreateText(iniFilePath); 
            } 
            if (comboBox4.Text == "") 
            { 
                MessageBox.Show("请选择一种类型的数据库", "选择错误", MessageBoxButtons.OK, MessageBoxIcon.Error); 
            } 
            else if (comboBox4.Text == "Sql Server") 
            { 
                try 
                { 
                    IniWriteValue("OLEDB for Sql Server", "Microsoft Sql Server Database Sources",textBox4.Text + "\\" + textBox5.Text + ";Initial Catalog=" + textBox6.Text + ";Persist Security Info=True;User ID=" + textBox7.Text + ";Password=" + textBox8.Text, iniFilePath); 
       ]]></description></item><item><pubDate><![CDATA[2008-6-3 18:34:36]]></pubDate><title><![CDATA[给图片加水印jsp]]></title><link><![CDATA[http://blog.cd-accp.com/User1/624/Show.asp?/_articleid/1583.html]]></link><description><![CDATA[package com.free; 

import java.awt.*; 
import java.awt.image.*; 
import java.io.*; 
import javax.swing.*; 
import com.sun.image.codec.jpeg.*; 
public class WaterMark { 
    /** 
      * 给图片添加水印 
    * @param filePath 需要添加水印的图片的路径 
    * @param markContent 水印的文字 
    * @param markContentColor 水印文字的颜色 
    * @param qualNum 图片质量 
    * @return 
    */ 
    public boolean createMark(String filePath,String markContent,Color markContentColor,float qualNum) 
    { 
    
    //图片 
    ImageIcon imgIcon=new ImageIcon(filePath); 
        Image theImg =imgIcon.getImage(); 
        int width=theImg.getWidth(null); 
        int height= theImg.getHeight(null); 
        BufferedImage bimage = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB); 
        
        
//      水印图片 
        ImageIcon imgIcon1=new ImageIcon("f://ee.gif"); 
        Image theImg1 =imgIcon1.getImage(); 
      
        
        
        Graphics2D g=bimage.createGraphics(); 
        g.setColor(markContentColor); 
        g.setBackground(Color.white); 
        g.drawImage(theImg, 0, 0, null ); 
        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,1f)); //添加图片水印 
        g.drawImage(theImg1,0,0,null); 
        g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER)); 
//        g.drawString(markContent,width-200,height-10); //添加水印的文字和设置水印文字出现的内容 和位置 
        g.dispose(); 
        try{ 
        FileOutputStream out=new FileOutputStream(filePath); 
        JPEGImageEncoder encoder =JPEGCodec.createJPEGEncoder(out); 
        encoder.encode(bimage); 
        out.close(); 
        }catch(Exception e) 
        { return false; } 
        return true; 
    } 
    public static void main(String[] args) { 
    WaterMark wm = new WaterMark(); 
    if (wm.createMark("f://yy.jpg","<h1>[url]http://www.free-120.com[/url]<h1>",Color.RED,80f)) 
    { 
        System.out.println("添加水印成功！"); 
    } 
    else 
    { 
        System]]></description></item><item><pubDate><![CDATA[2008-6-3 18:32:17]]></pubDate><title><![CDATA[[C#]钩子拦截键盘输入]]></title><link><![CDATA[http://blog.cd-accp.com/User1/624/Show.asp?/_articleid/1582.html]]></link><description><![CDATA[钩子(Hook)，是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以****指定窗口的某种消息，而且所****的窗口可以是其他进程所创建的。当消息到达后，在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
可惜，.NET 目前不支持全局钩子，这是最最最郁闷的事情了。

internal enum HookType //枚举，钩子的类型

{

//MsgFilter = -1,

//JournalRecord = 0,

//JournalPlayback = 1,

Keyboard = 2,

//GetMessage = 3,

//CallWndProc = 4,

//CBT = 5,

//SysMsgFilter = 6,

//Mouse = 7,

//Hardware = 8,

//Debug = 9,

//Shell = 10,

//ForegroundIdle = 11,

//CallWndProcRet = 12,

//KeyboardLL = 13,

//MouseLL = 14,

};



IntPtr _nextHookPtr; //记录Hook编号


3、引入必须的API

[DllImport("kernel32.dll")]
static extern int GetCurrentThreadId(); //取得当前线程编号的API



[DllImport("User32.dll")]

internal extern static void UnhookWindowsHookEx(IntPtr handle); //取消Hook的API



[DllImport("User32.dll")]

internal extern static IntPtr SetWindowsHookEx(int idHook, [MarshalAs(UnmanagedType.FunctionPtr)]

HookProc lpfn, IntPtr hinstance, int threadID); //设置Hook的API



[DllImport("User32.dll")]

internal extern static IntPtr CallNextHookEx(IntPtr handle, int code, IntPtr wparam, IntPtr lparam);

//取得下一个Hook的API

4、声明一个实现的委托

internal delegate IntPtr HookProc(int code, IntPtr wparam, IntPtr lparam);

5、添加自己的Hook处理过程


IntPtr MyHookProc(int code, IntPtr wparam, IntPtr lparam)

{

if( code < 0 ) return CallNextHookEx(_nextHookPtr,code, wparam, lparam);

//MSDN教育我们code小于0必须放行
//添加自己的处理动作
return (IntPtr)0;//如果默认对话框过程处理此消息，则为零值；如果默认对话框过程忽略此消息，则为非零值。

}



6、添加加入Hook链和从Hook链中取消的函数



public void SetHook()

{

if( _nextHookPtr != IntPtr.Zero ) //已经钩过了



return;



HookProc myhookProc = new HookProc(MyHookProc); //声明一个自己的Hook实现函数的委托对象



_nextHookPtr = SetWindowsHookEx((int)HookType.Keyboard, myhookProc , IntPtr.Zero ,

GetCurrentThreadId()); //加到Hook链中

}



public void UnHook()

{

if( _nextHookPtr != IntPtr.Zero )

{

UnhookWindowsHookEx(_nextHookPtr); //从Hook链中取消



_nextHookPtr = IntPtr.Zero;]]></description></item><item><pubDate><![CDATA[2008-6-3 10:00:04]]></pubDate><title><![CDATA[面试技巧转载]]></title><link><![CDATA[http://blog.cd-accp.com/User0/21/Show.asp?/_articleid/1581.html]]></link><description><![CDATA[面试技巧转载]]></description></item><item><pubDate><![CDATA[2008-6-2 21:41:25]]></pubDate><title><![CDATA[项目......]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1580.html]]></link><description><![CDATA[还是做项目...]]></description></item><item><pubDate><![CDATA[2008-6-2 12:42:13]]></pubDate><title><![CDATA[隐藏在XP中的一个秘密武器，可以完整清除垃圾文件]]></title><link><![CDATA[http://blog.cd-accp.com/User1/412/Show.asp?/_articleid/1579.html]]></link><description><![CDATA[隐藏在XP中的一个秘密武器，可以完整清除垃圾文件

你有用过Windows內置的清理磁碟功能吗？它并不能完全地清洗Windows內不需要的档案，因为它的功能被隐藏了，本篇將会把它被封印了的功能完全打开。

适用的视窗版本 除了Win95及Win98外，這个方法均适用於Win98se、Win2000、WinME、WinXP


Windows本身的「清理磁碟」工具是非常好用的工具，但是单单执行「清理磁碟」并不能完全发挥「清理磁碟」的功能。

現在介紹兩个「清理磁碟」工具的指令：

首先在「开始」>「运行」 然后输入：cleanmgr /sageset:99

特別模式「清理磁碟」工具會執行，你会发觉多了很多清理选择，选择你想要清理的档案，通常全部都可以刪除，完成你的选择后再按「确定」。然后再打开「开始」>「运行」

输入：
cleanmgr /SAGERUN:99 ----->执行]]></description></item><item><pubDate><![CDATA[2008-6-2 12:41:31]]></pubDate><title><![CDATA[qq小优化]]></title><link><![CDATA[http://blog.cd-accp.com/User1/412/Show.asp?/_articleid/1578.html]]></link><description><![CDATA[腾讯QQ里都有个TIMPlatform.exe文件，而且每次开QQ都用自动开启它，多了系统一个进程，也占用了内存。于是我把它删掉了，好像没有什么影响~

TIMPlatform.exe是QQ和Tencent Messenger共同使用的外部应用开发接口管理程序，属于QQ 2004不可或缺的底层核心模块。如果删除该程序，QQ 2004将丧失与周边功能模块以及外部应用程序相互调用的功能。
  结合TIMPlatform.exe外部应用接口的开发将为大家带来更加丰富多彩的各种应用！大家无需顾虑，尽可安全放心地使用！


TIMPlatform.exe，这个进程据说是TS公司为了防止同样的QQ多次同时登陆
正是这样，所以只可以关闭和删掉，一个QQ可以同时多次登陆，这样升级也快

去除方法：

点开始-运行-dcomcnfg.exe
组件服务-我的电脑-DCOM配置
按 是
找到 QQMAIN CREAT OR COMPONENT 右键单击 属性
切到 安全性 标签
选 启动激活权限-自定义-编辑
将 组或用户名称里的3项也就是所有的用户权限全部选为拒绝
然后确定到底就OK
以后开QQ就不会有TIMPlatform.exe这个进程了~~2M的内存就这么省下咯]]></description></item><item><pubDate><![CDATA[2008-6-2 12:39:15]]></pubDate><title><![CDATA[教你QQ密码如何用汉字！]]></title><link><![CDATA[http://blog.cd-accp.com/User1/412/Show.asp?/_articleid/1577.html]]></link><description><![CDATA[先问问大家：你的ＱＱ密码是用什么来设的？ 
不多全是：　字母，数字及一些特殊符号吧．．．　
不过，你想过没有？　用”汉字”也能来当密码使用？　 
　 
用汉字来当ＱＱ密码，这样做的话，首先第一就是安全！一般的木马**是不会盗走你的ＱＱ汉字密码的，包话键盘监察软件也是不可能记下载的密码了哦!
如果大家在登录ＱＱ时，留意的话，会注意到地ＱＱ登陆窗口填写密码框处，只能填入”英文”形式下的字符，即可你把输入法切换到”智能ＡＢＣ”或”五笔”输入时，还是跟”英文”下是一样的效果，即你只能输入英文输入法状态下的字符，无法输入汉字！ 
下面，大家跟我一起来打造我们的汉字密码！ 

百度页面 www.baidu.com　 
然后，输入你想要的汉字（密码）进行一下搜索即可.
这里主要看你的地址栏！

这里，以”尉迟”两字以例，介绍一下吧！ 
在百度页面中，输入”尉迟”两个字进行搜索．
在打开的页面中，我们会发现地址为：
http://www.baidu.com/s?ie=gb2312 ... E%BE%B3%D9&ct=0 
我们要的就是”wd＝”字段后面的内容！
这里”wd=”后面的内容为 %CE%BE%B3%D9&ct
去掉%及小写字母． 
我们仅要”CEBEB3D9" 
这就是十六进制的代码哦。由于一个汉字在十字进制中是以“４个符号代表的”，所以我们得到的是８个符号。　 
（小知识：如果是４个汉字，那么就会得到４＊４＝１６个符号，我建义大家多多学习哦） 
现在你明白了吗？上面我们讲的这些就是说： 
“尉”字的十六进制代码为　CEBE　 “迟”字的十六进制代码为　B3D9 
我们下面的工作就是把这十六进制转换到十进制中！这里，我们用我们系统自带的“计算器”即可。

打开“开始”－－程序－－附件－－“计算器” 
先设置一下计算器，在“查看”下选中“科学型”即可！ 
好了，我们选中“十六进制”选项，输入“尉”字的十六进制代码　CEBE 
然后，再选中“十进制”即可轻松的换转成攻啦。 

我们会看到“尉”字的“十进制”代码为　５２９２６ 
以同样的方法得到“迟”字的代码为　４６０４１ 
现在工作已经完毕。下面我们打开记事本，来试验一下我们得到的十进制代码吧！ 
打开记事本后，　下面我们输入我们的内容。 
先按住Alt键别放开，然后输入　５２９２６　，再松开Alt键，这时“尉”字就已经出现在记事本上了，再按住Alt，输入46041　松开Alt后，“迟”字也碰上去了！　怎么样？　呵 
下面快快登陆你的ＱＱ吧！　登陆后，进入修改密码！　然后修改成汉字密码即可。 
然后再用这种输入密码方式登陆ＱＱ即可。 
在这里我要提醒一下哦，由于一个汉字在电脑中占两个字符。所以用这种方式输入的汉字密码中，一个汉字会显示两个星号＊哦。你也可以注意一下。 
大家听懂了吗？　最后，我再说一下，由于此操作的复杂性，在此操作前，一定要先申请密码保护哦！一旦误操作，可以方便的找回密码。否则，别说是黑客了，就是你自己也无法找回啦。 
]]></description></item><item><pubDate><![CDATA[2008-6-1 12:51:11]]></pubDate><title><![CDATA[网页编程||处理表单和表单元素时间]]></title><link><![CDATA[http://blog.cd-accp.com/User1/957/Show.asp?/_articleid/1576.html]]></link><description><![CDATA[网页编程||处理表单和表单元素时间]]></description></item><item><pubDate><![CDATA[2008-6-1 12:04:06]]></pubDate><title><![CDATA[今天是儿童节....]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1575.html]]></link><description><![CDATA[今天是儿童节...]]></description></item><item><pubDate><![CDATA[2008-5-31 11:43:37]]></pubDate><title><![CDATA[接着小小项目...]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1574.html]]></link><description><![CDATA[今天没得其他的事.....]]></description></item><item><pubDate><![CDATA[2008-5-30 21:35:16]]></pubDate><title><![CDATA[小小项目.....]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1573.html]]></link><description><![CDATA[S2进入最后阶段咯...]]></description></item><item><pubDate><![CDATA[2008-5-30 14:38:46]]></pubDate><title><![CDATA[网页编程||JavaScript中的浏览器对象]]></title><link><![CDATA[http://blog.cd-accp.com/User1/957/Show.asp?/_articleid/1572.html]]></link><description><![CDATA[网页编程||JavaScript中的浏览器对象]]></description></item><item><pubDate><![CDATA[2008-5-28 23:11:42]]></pubDate><title><![CDATA[汶川！朋友！孩子！]]></title><link><![CDATA[http://blog.cd-accp.com/User1/1084/Show.asp?/_articleid/1571.html]]></link><description><![CDATA[四川腹地小城——汶川。 
14点28分 
全世界的目光聚集到了这个名不见经传的小城镇……

天空灰蒙蒙的，浑噩的大雨浸透着这里的土地， 
敲打着万众的心……

一切本应是这么的光灿、美好。 
幸福触手可及， 
人们像往日一样，或雍懒的拥抱幸福， 
或忙碌的实现未来，或沐浴在知识的海洋， 
或播种在肥沃的田埂……

一切是那么的平常，那么的平常……
仅仅几分钟，几分钟， 
地震山摇，周遭剧烈的晃动， 
天空阴霾着，狂风呼啸，大雨滂沱。 
却掩盖不住周围凄厉的哀号声。 
活着的、死了的、 
挣扎的、彷徨的， 
废墟中，人头攒动……
崭新的教学楼没有了，
什么也没有了....

]]></description></item><item><pubDate><![CDATA[2008-5-28 22:56:35]]></pubDate><title><![CDATA[四川汶川地震感人散文诗—生死不离]]></title><link><![CDATA[http://blog.cd-accp.com/User1/1084/Show.asp?/_articleid/1570.html]]></link><description><![CDATA[生死不离  
生死不离，你的梦落在哪里  
想着生活继续  
天空失去美丽，你却等待明天站起  
无论你在哪里，我都要找到你  
血脉能创造奇迹  
你的呼喊就刻在我的血液里 ....................  

]]></description></item><item><pubDate><![CDATA[2008-5-28 20:59:27]]></pubDate><title><![CDATA[地震之后....]]></title><link><![CDATA[http://blog.cd-accp.com/User0/253/Show.asp?/_articleid/1569.html]]></link><description><![CDATA[地震已过....]]></description></item></channel></rss>