需要系统的设计一下违例系统

  违例即异常,正确的处理它有利于程序的健壮性和用户的友好性,学习日记现有的设计中没有系统的考虑这个问题。当把现在做的登录系统初步完成后,需要认真的考虑一下违例处理系统。系统的设计以实用为原则。不必追求复杂系统的设计原则。

  以后的新系统还要把这个认真的设计一下。

在ant中使用junit测试

  今天,ppig提交的junit,strutstestcase测试类的同时,修改了ant的build.xml,里面包含自动测试的脚本,可是最后一个运行测试的任务总是通不过,报告:

Buildfile: D:\learndiary\find_a_way\login\build.xml

compile:

compiletests:

runtests:

       [junit] BUILD FAILED: file:D:/learndiary/find_a_way/login/build.xml:111: Could not create task or type of type: junit.

Ant could not find the task or a class this task relies upon.

This is common and has a number of causes; the usual

solutions are to read the manual pages then download and

install needed JAR files, or fix the build file:

 - You have misspelt 'junit'.

   Fix: check your spelling.

 - The task needs an external JAR file to execute

   and this is not found at the right place in the classpath.

   Fix: check the documentation for dependencies.

   Fix: declare the task.

 - The task is an Ant optional task and optional.jar is absent

   Fix: look for optional.jar in ANT_HOME/lib, download if needed

 - The task was not built into optional.jar as dependent

   libraries were not found at build time.

   Fix: look in the JAR to verify, then rebuild with the needed

   libraries, or download a release version from apache.org

 - The build file was written for a later version of Ant

   Fix: upgrade to at least the latest release version of Ant

 - The task is not an Ant core or optional task

   and needs to be declared using <taskdef>.

Remember that for JAR files to be visible to Ant tasks implemented

in ANT_HOME/lib, the files must be in the same directory or on the

classpath

Please neither file bug reports on this problem, nor email the

Ant mailing lists, until all of these causes have been explored,

as this is not an Ant bug.

Total time: 1 second

解决办法:在环境变量的classpath中加上junit.jar的路径;或者在eclipse2.1环境中run ant->classpath->Runtime classpath中加上junit.jar的路径。

第一次开家长会

  成都来的教育专家张老师,讲幼儿的教育问题。

  总结一下:

  1、与孩子愉快的相处18年(因为这18年孩子跟孩子距离最近);

  2、多赏识孩子(赏识教育法);

  3、孩子的无理要求坚决不与满足;

  4、特别的请教孩子能不能体罚孩子:

  总体是不应该,应该在平时的教育中给孩子约定,比如:吃饭前孩子在玩玩具,提前15分钟就通知她两次把玩具收好,第三次正要吃饭时才去检查。如果没有遵守约定应该严厉的批评;要在孩子面前树立家长的威信;

  5、滥用批评和滥用表扬对孩子的成长都是不利的。

  6、世界教科文组织定义的教育:

   第一层次:做一个有尊严的人;

   第二层次:实现自己的愿望;

   第三层次:有益于社区和组织;

  思想:主观利已,客观利人。

  7、不要总拿自己的孩子跟别人的孩子比较,每个孩子都有自己的优点和缺点。

Setup logging with Log4j using Struts 1.2.4 on Tomcat 4.1.3

  在用中文搜索不到你想要东西时(http://www.learndiary.com/disDiaryContentAction.do?searchDiaryID=1343&goalID=1343&naviStr=a10a60a0167),就用英文吧,有时给你十分满意的答案。昨天,花了许多时间来搜struts下log4j的使用,找到的答案还是没有能解决问题。今天,就用“struts log4j”两个关键字,一下就找到了我要找的东西:)

转自:http://www.mobilefish.com/developer/struts/struts_quickguide_log4j.html

Setup logging with Log4j using Struts 1.2.4 on Tomcat 4.1.3.

Information:

none

Operating system used:

Windows XP Home Edition Version 5.1 SP 2

Software prerequisites:

Log4j 1.2.9

Struts 1.2.4

Tomcat 4.1.3

Procedure:

Download and unzip Log4j.

In the unzipped log4j directory copy file C:\Tools\logging-log4j-1.2.9\dist\lib\log4j-1.2.9.jar to your Struts project: <my_project>\WEB-INF\lib\log4j-1.2.9.jar

Create a log4j.properties file.

As an example you can put the following lines in the log4j.properties file:

log4j.rootLogger=ERROR, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=[%5p] %d{mm:ss} (%F:%M:%L)%n%m%n%n

Remark: The ConversionPattern creates the following message:

[ERROR] 02:44 (com.mobilefish.DemoAction execute:95)

This is my message.

Put the log4j.properties file in the following location:

<my_project>\WEB-INF\classes\log4j.properties

Note: In some situations the log4j.properties can not be located by the application server. To find out if this is the case set the -Dlog4j.debug=true.

In the quick guide "Loading the log4j.properties file" serveral solutions are mentioned how to solve this problem.

Add the following lines in your Java code:

package com.mobilefish;

// Please note the following: Struts 1.2.4 uses commons-logging

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

public class DemoAction extends Action {

      private static Log log = LogFactory.getLog("com.mobilefish.DemoAction");

      public ActionForward execute(

         ActionMapping mapping,

         ActionForm form,

         HttpServletRequest request,

         HttpServletResponse response)

         throws Exception {

         log.debug("This is my debug message.");

         log.info("This is my info message.");

         log.warn("This is my warn message.");

         log.error("This is my error message.");

         log.fatal("This is my fatal message.");

      }

}

Start the application server and run your web application.

Because log4j.rootLogger=ERROR (see log4j.properties file), the following messages are displayed in the console:

[ERROR] 23:35 (DemoAction.java:execute:69)

This is my error message.

[FATAL] 23:35 (DemoAction.java:execute:69)

This is my fatal message.

Note 1. Loggers can be assigned to the following ORDERD levels:

ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF

Note 2. To enable all log messages:

log4j.rootLogger=ALL

Be warned: the struts code and your web applications log messages are logged.

Note 3. To disable all log messages:

log4j.rootLogger=OFF

知识的快速获取的必要性

  一个非常简单的小问题,由于我们没有经验,往往搞得焦头烂额。而在已经经历过的人的口里,也许就是几个字的工夫。所以,不要对提问的朋友的不起眼的小问题哧之以鼻。

  我们提倡钻研精神,更提倡互助和共享的精神。

  你有两个苹果,我有两个梨,我们互相交换一下,两个人都吃到了苹果和梨。

凡事多检查自己

  我们总喜欢站在自己的角度思考问题,争执问题。这就是矛盾的源泉。

  这几天,家庭环境很不顺心,今天又跟家人争吵,一气之下,不到上班时间就跑到单位上来了。

  静下心来想想,凡事要多检查自己,自己检查完了,再去检查对方。我想,只有这样,才是解决问题的办法。

学习日记精神,开发小组精神

  学习日记精神:

  1、学习到永远;

  2、不怕犯错,不怕面对错,不怕改错;

  

  开发小组精神:

  1、做好每一个小事和细节;

  2、团结就是力量;

  3、乐于其中;

  4、勇于提交代码;

  5、快速提交,快速迭代;

  6、小增量,密集版本发布;

mysql从4.11开始支持子查询(转帖)

  我用的mysql4.0.14,试验可以在插入语句中使用子查询,如:

insert into learndiary_login.user

  (SELECT userID,userName,psd,email

  FROM websitedb.user

  where userid<30)

  但是其它的子查询不行:

select * from

  (select userID*2 AS u1,userName as u2,

    psd as u3,email as u4) as t

where u1>50 

下面的文章说mysql从4.11开始支持子查询,正文如下:

关于MySQL嵌套查询的技巧   [ 2005-10-11 14:57:12 | 5iuu ]

许多人都觉得MySQL不支持嵌套查询,其实MySQl从4.11版后已经完全支持嵌套查询了,那么下面我举些简单的嵌套查询的例子吧(源程序来自MySQL User Manual):

1. SELECT语句的子查询:

语法: SELECT ... FROM (subquery) AS name ...

先创建一个表:

CREATE TABLE t1 (s1 INT, s2 CHAR(5), s3 FLOAT);

INSERT INTO t1 VALUES (1,'1',1.0);

INSERT INTO t1 VALUES (2,'2',2.0);

我们就可以进行以下的嵌套查询了:

SELECT sb1,sb2,sb3

FROM (SELECT s1 AS sb1, s2 AS sb2, s3*2 AS sb3 FROM t1) AS sb

WHERE sb1 > 1;

结果是: 2, '2', 4.0.

我们知道下面语句是不会得到正确结果的,因为对经过Group by排序的集合进行求均值是不能得到正确答案的:

SELECT AVG(SUM(column1)) FROM t1 GROUP BY column1

所以我们可以通过下面的嵌套查询实现同样的效果:

SELECT AVG(sum_column1)

FROM (SELECT SUM(column1) AS sum_column1

FROM t1 GROUP BY column1) AS t1;

2.行的子查询(Row Subquery):

看下面的例子:

SELECT * FROM t1 WHERE ROW(1,2) = (SELECT column1, column2 FROM t2);

这个查询是返回column1等于column2的结果行。Row函数中的1和2相当于构造参数。想必Blogjava上的同志对这些应该比较清楚,也不去详细介绍了。

3.使用Exist和Not Exist参数

这里的Exist和Not Exist用途及用法和在其他没有什么大的区别,我就简单举几个范例好了:

范例一: SELECT DISTINCT store_type FROM Stores

WHERE EXISTS (SELECT * FROM Cities_Stores

WHERE Cities_Stores.store_type = Stores.store_type);

范例二: SELECT DISTINCT store_type FROM Stores

WHERE NOT EXISTS (SELECT * FROM Cities_Stores

WHERE Cities_Stores.store_type = Stores.store_type);

范例三: 这个例子中嵌套使用了Not Exist语法,稍微注意一下:

SELECT DISTINCT store_type FROM Stores S1

WHERE NOT EXISTS (

SELECT * FROM Cities WHERE NOT EXISTS (

SELECT * FROM Cities_Stores

WHERE Cities_Stores.city = Cities.city

AND Cities_Stores.store_type = Stores.store_type));

4.条件关联关系查询:

解释起来麻烦,直接看例子吧:

SELECT column1 FROM t1 AS x

WHERE x.column1 = (SELECT column1 FROM t2 AS x

WHERE x.column1 = (SELECT column1 FROM t3

WHERE x.column2 = t3.column1));

跟其他数据库做法是一样的。

5.其他使用方法和注意:

除了上面这些还有很多很多,不过就不去细讲了,因为这些跟别的数据库差不多,只是为了给大家一个参考,提提就够了。

SELECT (SELECT s1 FROM t2) FROM t1;

SELECT (SELECT s2 FROM t1);

支持子查询的语法有:SELECT,INSERT,UPDATE,DELETE,SET和DO。

子查询可以使用任何普通查询中使用的关键词:如DINSTINCT,GROUP BY,LIMIT,ORDER BY,UNION,ALL,UNION ALL等。可以使用<,>, <=, >=, =, <>运算符进行比较,也可以使用ANY ,IN和SOME进行集合的匹配。

Tags:MySQL相关日志: JSP连接mysql数据库攻略    [2005-10-21 PM | 日积月累]

 

引用通告地址 (0):[本站声明:此文章来源于网络,如果未属名,可能此文被转摘多次,原作者不详,如果您认为侵权,请联系我。我将在第一时间按要求做出处理,并消除影响。][字体大小:大 中 小] [ 收藏此页到 365KEY | 博采 | 人人网摘 ]

http://www.GuoBlog.com/trackback.asp?tbID=694

http://www.GuoBlog.com/trackback.asp?tbID=694&CP=GBK

(转帖)UML中聚集(Aggregation)与组合(Composition)的区别

UML中聚集(Aggregation)与组合(Composition)的区别

Posted on 2005-04-20 20:03 黄金狮子旗下 阅读(1199) 评论(8)  编辑 收藏 收藏至365Key 所属分类: UML设计 

书上是这样描述的:聚集是关联中的一种,聚集对象由部分对象组成;组合又是一种特殊的聚集。在一个组合对象中,部分对象只能作为组成对象的一部分与组合对象同时存在。

即是说,组合是“当聚集对象和它的组成对象之间是具有强关联的一种特殊聚集”,组合对象的关键特征是部分对象只能存在于组合对象之中,并且部分体的寿命可能比组合体短,但组合体消亡,部分体也必然消亡。

我们举例来说明:

聚集

电脑可以由显示器、CPU、主板、硬盘、键盘、鼠标等聚集而成。在这种关系里面,各个组成部分是可以分拆开独立存在的。

组合

衬衣是由主体、衣领、袖口、衣袖、钮扣等组合而成。在这种关系里面,衣袖或者衣领等如果拆分开来并不能算是一个独立的主体,不具有价值了。

树是由树干、树根、树枝、树叶等组合而成的。这里面树叶可以先于树消亡,但如果树被砍掉,那么树叶也没有存在价值了。

多数参考资料上都是上面叙述的那样解释的,不过我觉得理解起来还是有些难度:电脑我把他砸了,电脑坏了,那你说各个组成部分到底是一起消亡了还是没消亡呢?也许应该说至少没有被砸坏的部分还是可以独立使用的;可若这样说的话,那我衬衣破了个洞,我要把衬衣裁减为各个部分,那其他部分是不是也可以拿去拼装为新的衣服?

所以,后来我自己是这样理解的,不知道对不对,大家可以给我指正:同类的几个聚集对象里面的组成对象是可以互换的(比如电脑里面的配件);而同类的几个组合对象里面的组成对象是不能够互换的(正所谓强关联嘛,所以这件衬衣的袖口换到另一件上面不科学;这棵树的叶子也没法装到另一棵树上面去)。

Feedback

# re: UML中聚集(Aggregation)与组合(Composition)的区别   

2005-04-20 21:03 by idior

这个概念一向分的不是很清楚。 很多大家也争论过 , 没什么结果。

# re: UML中聚集(Aggregation)与组合(Composition)的区别   

2005-04-20 21:46 by neuhawk

好像去年高程考这个!

# re: UML中聚集(Aggregation)与组合(Composition)的区别   

2005-04-20 22:06 by 生活、工作

这样理解好像也不大对吧。

# re: UML中聚集(Aggregation)与组合(Composition)的区别   

2005-04-21 00:37 by 常建昭

我觉的这样理解是错的。。。

把电脑砸了(呵呵,想法不错。),你的主板,CPU等还是独立的。。你不能把那些概念给想成物理上的消失,我认为那是种抽象的概念。。你可以把你举的树的例子引用进来,你把电脑砸了,零件还是有用的。。你砸的目标是电脑,而非个别零件。。

# re: UML中聚集(Aggregation)与组合(Composition)的区别   

2005-04-21 08:48 by 黄金狮子旗下

to 常建昭:

你说的是,我就是觉得那部分比较容易混淆,所以故意写成那样的。我真正的理解是下面最后一段嘛。

# re: UML中聚集(Aggregation)与组合(Composition)的区别   

2005-04-21 12:38 by 安琪儿

按照我的理解,上面举的两例似乎都应属于组合。

组合是强关联的聚集,电脑配件从一台电脑中分离出来后,仍然需要进行再次组装才能发挥作用。也可以这样理解组合,它是对所有部件的整合,相互依赖。即便此组合内部分割开来,若要有效,仍然会出现类似的彼组合。

再举个单纯的聚集的例子,一个班级有许多个独立的个体,当班级不存在时,个体仍能单独发挥个人作用。此时整体和部分就不遵从相互依赖的规则,是一种弱关联。

总之,聚集和组合主要体现在关联强度上的不同。

# re: UML中聚集(Aggregation)与组合(Composition)的区别   

2005-04-22 01:08 by 吴正杰

UML宝典上面说明: 生命周期不同

组合在聚集中用来说明部件的生存周期取决于整体即集合的生存周期。

# re: UML中聚集(Aggregation)与组合(Composition)的区别   

2005-05-04 15:58 by 无名

感觉这里边有一个应用环境的问题,就目前看,人的器官和人体之间是组合关系,那时因为器官移植技术还不够发达,如果将来器官移植技术发展了,器官和人体之间可能就成为组合关系了。