DAO的设计-使用泛型来避免重复DAO

DAO的全称是Data Access Object数据访问接口。数据访问:顾名思义就是与数据库打交道。夹在业务逻辑与数据库资源中间。

我大二时候写的一个小型管理系统,那时候老师开始强调分层和MVC的思想,当时我将DAO层分了开来,把所有与数据库的交互操作封装成对应的DAO类,这样最大的好处 是实现了封装和隔离,方便系统的迁移和重构。

分层、封装、接口化是一种基本的解决思路,无论是TCP/IP协议族,还是软件工程,都是很值得使用的方案。

那么接下来的问题就是DAO类的设计,我当时遇到的问题就是DAO类之间存在大量的冗余代码,用敏捷的角度来思考,这绝对是不允许存在的。

讲相同的方法抽象出来,这也是最常见的解决方案,最简单的例子就是函数的产生,其实也是对程序的一种抽象和提炼,避免冗余,达到复用效果。

在Java1.5出来之前,用Object来操作对象,实现方法复用,就可以达到上面的目的,但是,存在类型安全的问题。Java1.5提出了泛型的概念,类似与C+ +中的Template,Java运行环境帮助会检查类型的安全。

这里有一篇IBM资料库的文章,详细阐述了泛型在DAO设计的使用「不要重复DAO」<猛击这里打开>,作者PerMellqvist (per@mellqvist ...

more ...

禁止WordPress自动替换半角标点符号【转】

转载自「禁止WordPress自动替换半角标点符号 - 布语博客」<点击这里打开>

Wordpress虽好,可毛病也不少,今天发现WordPress会将半角标点符号自动转换成全角的,但并没有替换数据库里的信息,真搞不明白开发团队是怎么想的, 现将解决方法记录如下。

1、 编辑 wp-includes/formatting.php 文件,找到以下代码:

// static strings
$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
$curl = preg_replace($dynamic_characters, $dynamic_replacements, $curl);

正是 str_replace() 和 preg_replace() 两个函数在作怪。

2、 将相应语句注释,禁用自动替换功能:

// static strings
//$curl = str_replace($static_characters, $static_replacements, $curl);
// regular expressions
//$curl = preg_replace ...
more ...

WP速度小优化

今天实在无法忍受WP的速度,打开速度在10s-15s左右,好几个朋友反映,我咨询了一下小张,发现同一台服务器的网站速度都不错,那就是我的设置问题了。

参考了一下几篇速度优化博文,也对自己的博进行了简单的优化。

我没木木和万戈那样的本事,能几乎不用插件自己修改代码,我仅仅能稍微禁用一些插件,界面用的iNove,也不想做太多的改变。

我用FireBug查看了一下同服务器的其他网站,人家的连接数甚至高达80+,速度还比我快,我仔细检查,发现一些cnzz图片读取比较耗时。我在iNove的界面 下修改了end.php的代码,换上了文字代码,而不用去cnzz获取图片。

这样一来,似乎速度快了点。

我又删除了饭否的图片,这几天饭否也访问不了,留了也显示不出来。

我留下12个插件,分别是:Akismet, CodeColorer, Dagon Design Sitemap Generator, Google XML Sitemaps, Mail To Commenter, Shutter Reloaded, Super Switch, WordPress Related Posts, WP-PageNavi ...

more ...

MySQL Command Line Client乱码问题及解决方案

以前用MySQL时候都是可视化界面,如MySQL Admin使用,现在学着使用MySQL Command Line client,初次接触,就遇到乱码问题。

乱码是中文字符串的,Google后,找到一些解决方案。摘录如下:

引用自今天去祸害哪家的闺女呢?<猛击这里打开>

1:改变数据库的默认编码配置,在MYSQL的安装目录中,找到my.ini,修改默认编

码为:default-character-set=utf8

2:建立数据库时,CREATE DATABASE ms_db CHARACTER SET utf8 COLLATE

utf8_general_ci;

3:执行脚本:指定编码格式set names utf8(注意,不是UTF-8)

4:如果你采用的是外部接入的方式,在连接中确定请求的编码格式如:

jdbc:mysql://localhost:3306 /ms_db?

useUnicode ...

more ...

贴吧小结报告

终于完成了这个贴吧系统,虽然还有很多地方不完善,但是却包含了我很多心血和精力,也实践了我的很多想法。

具体的不说了,稍微说一下开发使用的技术:Java、Struts2、Hibernate、OGNL、Eclipse、Tomcat、MySQL、AJAX、jQue ry、SVN、UP开发模式、UML。

之中学习了很多内容,我恨兴奋,说起来这是我第一个完整写的一个网站系统,之前的asp啊,asp.NET多多少少借鉴了别人的代码。

终于知道其实资历代表着经验,很多东西只有自己试过才知道怎么做,这一块我太欠缺了,对于JaveEE开发,也终于开始有了接触,寒假回家3个星期,应该在Java的 本质技术上合Hibernate高级内容、设计模式上花时间了。

09_11_16 Update:

今天又check out了一下,然后加入About和Links,当初贴吧在课程设计之后就没有完善,现在加上这两个模块,也就能release了。

相关链接:

项目在Google Code托管 (你可以check out,不知道游客有没有权限,需要可以Mail我)

相关开发博客链接

more ...

再谈s:if的使用

上次遇到过的问题,费了好久才弄好,这次又遇到,有了一点新的体验。

中的判断,如果是数字判断一般都没有问题,问题会在字符串时候凸显出来。

尤其是中文字符串,几乎没有能够通过的,上一次是曲线救国,用了true和false着两个英文,如果非得用中文怎么办?

其实使用,就可以了,请注意,是单引号-双引号-中文-双引号- 单引号的顺序,这样才能够正确的解析中文字符串是否相等。

唔。。。终于可以做下一个部分了

more ...

贴吧中期进度汇报

查看sql更新版本,我才发现这个项目已经做了将近2个月了。

之前一个多月都是我有空就做做,一边要写OpenSSL的模型,还要应付平时学习和考试,最近的1个星期,才开始全身心投入的,使这个项目变成了一个课程设计,但决不 止于课程设计。

由于鸡鸡的加入,而且对原先设计的一些不满意,我用UP的方式重新对系统进行了设计,从用例到实际类图,都重新设计并加以重构。

这是一个很有意义的过程,我花了很多时间在UML的使用上,用的是StarUML(开始使用Rose,发现太难入门了),继烨负责用例,我是在设计完第一个迭代过程之 后进行编写代码的。

原计划是尽量设计之后再编码,但是由于时间关系被迫提前编码,这样,整个过程相对的倾向于敏捷,这其实也是我最开始想要的效果。

写着写着,越发的理解设计的重要性,往往一个小错误会影响很多改变,很多东西没有一定经验真的很难做优秀。

今天的代码提交到Google Code之后,基本接近我之前自己完成的程度,但我觉得这次的重构,使我学到了很多平时没接触到的东西。两个人的协作也使我完全体会到SVN的好处。

以上是贴吧中期报告。

相关链接:

PostBar in Google Project Host<猛击这里打开>

PostBar svn-readonly<

more ...

MYSQL数据类型长度常规的建库策略

无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。下面我 就将我的一点心得写出来跟大家分享。

一、数字类型

数字类型按照我的分类方法分为三类:整数类、小数类和数字类。

我所谓的「数字类」,就是指DECIMAL和NUMERIC,它们是同一种类型。它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的;他的值的每 一位(包括小数点)占一个字节的存储空间,因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定,在运算中不会「失真」,所以比较适合用于「价格」、 「金额」这样对精度要求不高但准确度要求非常高的字段。

小数类,即浮点数类型,根据精度的不同,有 FLOAT(单精度)和DOUBLE(双精度)两种。它们的优势是精确度,FLOAT可以表示绝对值非常小、小到约 1.17E- 38 (0.000...0117, 小数点后面有37个零)的小数,而DOUBLE更是可以表示绝对值小到约 ...

more ...

WordPress页面静态化

其实以前也使用了静态化,但是只是显示文章别名为数字的固定链接,这个对搜索引擎不太友好,也不是很容易识别。

今天我安装了一个插件wp-slug- translate,是偶爱偶家出品的<猛击这里打开>,感觉这位大大出了好几个很有用的插件,很是实用。

这个插件的作用是会自动把文章名转换为英文表示的名称,是通过Google翻译来做的,基本还是没有什么出入的,当然,也可以自己手动修改文章名。

我重新修改了一下固定链接的表示,修改成/%year%/%monthnum%/%day%/%postname%.html,这样看上去就像是伪静态了,例如本文的 地址为http://log4d.com/2009/06/22/wordpress-static-pages-of.html

这个插件一个缺点是不能修改已经存在的文章,那么如果要全部修改的话,只能自己手动修改,我用Google翻译一个一个修改,大约花了5分钟时间。如果自己的文章被别 人引用的比较多,那么建议不要修改以前的地址,否则会产生很多无效链接的。

more ...

WordPress 2.8发表文章空白解决办法

由于今天考四级(我悲剧的四级啊```)升级后就没有写过文章,并未发现这个问题。

今天写了一篇日志,发表后居然发现文章正文部分全部空白,这个问题可大发了,看别人WP2.8都没有问题啊,而且还不能切换到HTML编辑状态。正准备重新返回WP2 .7,检查了一下Google,发现了一片博文《与 Wordpress 2.8 有冲突的几个插件》<猛击这里打开>。

原来是Use Google Libraries的问题,升级之后就可以解决这个问题了。

more ...