struts中的几种类型的对象的区分

Posted by 猪头小队长 | 程序设计 | Wednesday 30 June 2004 12:40
在struts中(或者其他的基于MVC的WEB应用中)的几种常用对象如下:
  1. 业务对象(BO)
    1.1 实体业务对象(Entity)
    1.2 过程业务对象(Process)
    1.3 事件业务对象(Event)
  2. 数据传递对象/值对象(DTO/VO)
  3. FormBean
  4. 数据访问对象(DAO)
  5. POJO(或者可以翻译为纯Java对象?:))
  6. 持久化对象(PO)
这些对象构成了整个WEB应用程序的立体结构,结构图大概如下:

?̥?ṹͼ

    1. BO就是业务逻辑中所涉及的所有的对象,使用这些对象来进行逻辑操作。
      EJB中的EB就是一种实体业务对象
      EJB中的SB就是一种过程业务对象
      BO的可视范围在控制层和持久层之间。
    2. DTO主要是用来在不同层之间传递数据,是细粒度数据的粗粒度视图。 关于他和其他对象的差别见上图。
    3. FormBean是Html Form映射成的一个对象,主要是用来把Html Form中零散的数据封装起来,以对象的形式来提供OO方式的操作。
    4. DAO使底层数据访问逻辑与业务逻辑分离开,也就是说因为DAO的存在,才隔离开了数据的访问逻辑和业务逻辑,DAO从具体数据源中抽取数据,组成POJO,供BO使用,同时对BO传递过来的POJO,持久化到数据源中。
    5. POJO是和PO相区分的一种对象,POJO指的是纯Java的对象,他活动于业务层,由JVM来掌管其生死。
    6. PO是对应于数据源而存在的对象,它往上对应于POJO,往下对应于物理数据源。一般的,ORM提供这种PO,例如hibernate,通过它,使程序员感觉不到PO的存在,数据源自然的映射成了Java中的对象(POJO)。

[@more@]

重新编译内核10步走

Posted by 猪头小队长 | 程序设计 | Tuesday 29 June 2004 09:34

通常编译内核的几步:每步的作用不做赘述,根据命名也能猜个差不多,:)

  1. tar zxvf 压缩包:一般在/usr/src目录下
  2. make mrproper
  3. make menuconfig:注意这里要选择好各种支持,尤其是文件系统、各种驱动等。**
  4. make dep
  5. make clean
  6. make bzImage
  7. make modules
  8. make modules_install
  9. make install
  10. lilo:在进行这一步之前,最好先查看一下/etc/lilo.conf,确认能够正确启动的内核在列表里面,这样,如果新的内核不能启动的话,还可以使用备用内核。

[@more@]

Debian下的一个sources.list

Posted by 猪头小队长 | 程序设计 | Tuesday 29 June 2004 09:02
如果在apt-get update过程中出现了这个错误:
Reading Package Lists … Error!
E: Dynamic MMap ran out of room
…..
那么在文件/etc/apt/apt.conf中加入一行
APT::Cache-Limit 10000000;
这里,10000000=10M 更多:"man apt.conf"
—-/etc/apt/sources.list————————————
deb http://mirror.dlut.edu.cn/debian testing main contrib non-free
deb-src http://mirror.dlut.edu.cn/debian testing main contrib non-free
#deb http://debian.cn99.com/debian testing main contrib non-free
#deb-src http://debian.cn99.com/debian testing main contrib non-free
#deb http://mirrors.geekbone.org/debian testing main contrib non-free
#deb-src http://mirrors.geekbone.org/debian testing main contrib non-free
#deb http://203.178.137.175/debian/ unstable main non-free contrib
#deb-src http://203.178.137.175/debian/ unstable main non-free contrib
#deb http://ftp.jp.debian.org/debian/ unstable main non-free contrib
#deb-src http://ftp.jp.debian.org/debian/ unstable main non-free contrib
#deb http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free
#deb-src http://non-us.debian.org/debian-non-US unstable/non-US main contrib non-free
#deb http://security.debian.org/ stable/updates main contrib non-free
#deb ftp://ftp.skolelinux.no/skolelinux/ woody-test local
#deb http://http.us.debian.org/debian stable main contrib non-free
#deb http://http.us.debian.org/debian dists/proposed-updates/
#deb http://nonus.debian.org/ stable/non-US main contrib non-free
#deb ftp://debian.ustc.edu.cn/debian/ stable main contrib
deb ftp://debian.ustc.edu.cn/debian unstable main non-free contrib
deb-src ftp://debian.ustc.edu.cn/debian unstable main non-free contrib
deb ftp://debian.ustc.edu.cn/debian-non-US unstable/non-US main non-free contrib
deb-src ftp://debian.ustc.edu.cn/debian-non-US unstable/non-US main non-free contrib
deb ftp://debian.ustc.edu.cn/debian-uo sid marillat rareware misc ustc java firefly
deb-src ftp://debian.ustc.edu.cn/debian-uo sid marillat rareware misc ustc java firefly
———end—————————————–

[@more@]

hibernate的Configuration的两种常见写法的区别

Posted by 猪头小队长 | 程序设计 | Saturday 26 June 2004 22:00

第一种:
SessionFactory sessionFactory = new Configuration().addClass( Cat.class ).buildSessionFactory();

第二种:
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

这两种写法的第一步都是new Configuration(),这步的时候,会需要hibernate.properties 这个文件,也就是说不管使用哪种写法,如果没有这个文件,控制台将会打印hibernate.properties not found,但是打印了这个信息并不是说hibernate配置错误(例如你采用第二种方法的时候)。

下面表格中的总结只是正确的解决方案之一,并不是说只可以按照如下的表格中的方法操作。例如:你也可以在第一种方法中使用hibernate.cfg.xml还有需要注意的是:如果使用了第一种方法,就不要同时使用第二种,反之亦然。也就是hibernate.properties和hibernate.cfg.xml不共戴天,这样会比较单纯、清晰

第一种

第二种

所用配置文件 xxx.hbm.xml
hibernate.properties
xxx.hbm.xml
server.xml & hibernate.cfg.xml
datasource 写在hibernate.properties文件写在server.xml中中,不需要hibernate.cfg.xml文件。
注意的是:在hibernate.properties中需要把JNDI Datasource注释掉
写在server.xml中,同时需要配置hibernate.cfg.xml。使二者的JNDI名字一致。
配置文件的位置 xxx.hbm.xml需要放到和class同一目录,不管是否有package都要这样做。hibernate.properties放在WEB-INF/classes目录下 server.xml为tomcat的配置文件,他的位置无需再叙,其他配置文件均需放在WEB-INF/classes目录下

[@more@]

使用JBuidler设计界面的一个小技巧

Posted by 猪头小队长 | 程序设计 | Friday 11 June 2004 23:13
使用JBuilder设计界面的时候,比如有4个JTextField的文本输入框,要求输入四个姓名,按照JBuilder的做法,一般是:
JTextField a4 = new JTextField();
JTextField a3 = new JTextField();
JTextField a2 = new JTextField();
JTextField a1 = new JTextField();
而这样做的一点不好的地方是处理起来比较麻烦,也就是不能使用循环来处理这些功能相似的控件的功能,很显然,这样做可能更好一些:
JTextField[] a = new JTextField[]{new JTextField(),new JTextField(),new JTextField(),new JTextField()};
但是这样做又带来一个缺点:在这样修改完的时候,切换到design视图,你会发现那几个JTextField显示不出来,可能是JBuilder对这种初始化的方式没有做处理,也就是在程序还没有运行的时候,它还不能识别这种声明方式,而这样的话对界面的设计就会带来一些不便,解决办法是:
JTextField[] a = new JTextField[]{new JTextField(),new JTextField(),new JTextField(),new JTextField()};
JTextField a1 = a[0];
JTextField a2 = a[1];
JTextField a3 = a[2];
JTextField a4 = a[3];
看到这里就会明白了,用a1。。。a4来骗design视图,而在代码中我们需要使用这些控件的时候,直接使用那个数组就可以了。
这样做也没有生成多余的对象,对性能来说应该影响不大。

[@more@]

mysql的一个拒绝访问错误的解决

Posted by 猪头小队长 | 程序设计 | Friday 11 June 2004 22:56
在一台服务器上用jsp+mysql用得好好的,后来在这台机器上又配了一个mail,所以修改了/etc/hosts这个文件,增加一个主机名。mail也配置完毕,没有什么异常。
直到昨天,重新启动了一下机器,结果jsp访问数据库的时候出现错误:Server configuration denies access to data source.
凭经验这是数据库的用户或者权限设置不正确,可是这个数据库一直好用,并且没有动过,但是还是复查了一遍,没有发现问题,用的是root登录
在字符模式下mysql -u root -p来进行mysql的数据库管理一切正常,服务器的3306端口也开着,不知道错误在哪里。
后来,telnet localhost 3306,结果出现:KHost ‘mail.xxx.xxx.xxx’ is not allowed to connect to this MySQL serverConnection closed by foreign host.
这个mail.xxx.xxx.xxx是新加入的域名,本来应该是localhost的,于是知道了错误大概在什么地方了,于是登入数据库:
GRANT ALL PRIVILEGES ON *.* to root@mail.xxx.xxx.xxx identified by ”;FLUSH PRIVILEGES;
之后一切恢复正常。
原来,mysql以为client host是mail.xxx.xxx.xxx而不是localhost,而mysql原来的配置是只允许localhost访问。鬼就处在/etc/hosts文件中:
127.0.0.1 mail.xxx.xxx.xxx localhost.localdomain localhost
这样,可能是mail.xxx.xxx.xxx这个hostname优先被使用,结果就出错了,:(

[@more@]