Web
记录一些关于Web开发和应用方面的一些信息。
根据Spring注释确定包命名规则
Jul 19th
包的命名规则很多,说法也很多,但再怎么变也脱离不了三层架构这一说法,至少目前可以这么说。
在说新的规则之前,先说下我熟悉的老的命名规则。
表现层命名为:com.iguoer.web
如果使用Struts的话,会命名为:com.iguoer.web.action
如果使用Spring MVC的话,会命名为:com.iguoer.web.controller
业务层一般命名有两种
com.iguoer.service 和 com.iguoer.business
数据层一般命名为:com.iguoer.dao
使用hibernate的话,就有com.iguoer.dao.hibernate
根据有些解释三层架构的图上说,穿越三层的是一个叫domain域的东西,所以就有了
com.iguoer.domain
实体被称为持久化对象
所以有了com.iguoer.domain.po
组装后给页面有值对象,所以有了com.iguoer.domain.vo
一般工具类被放在com.iguoer.util中
应用程序放在com.iguoer.app中
我现在根据Spring的注释,重新写一个包的命名,当然这首先建立在你对三层架构的熟悉上。
com.iguoer.app 应用程序
com.iguoer.combo 组合对象,传给页面,相当于com.iguoer.domain.vo
com.iguoer.controller MVC中的控制,Spring的注释@controller
com.iguoer.controller.admin 管理员表现层
com.iguoer.controller.filter 表现层的过滤器
com.iguoer.entity 实体,相当于com.iguoer.domain.po Spring的注释@entity
com.iguoer.repository 储藏室,相当于数据层,类似com.iguoer.dao Spring的注释@repository
com.iguoer.security 保密包,说明这里的东西尤为重要
com.iguoer.service 业务层,服务层,相当于com.iguoer.business Spring的注释@service
com.iguoer.util 工具类
注:上面所说的表现层,其实指的只是MVC设计模式中的控制
项目开发部署
Jul 18th
1、下载开发工具
1> Eclipse
下载开发工具eclipse-jee-ganymede(
http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/ganymede/SR2/eclipse-jee-ganymede-SR2-win32.zip)解压到 D:\Program Files\eclipse-ganymede
http://download.actuatechina.com/eclipse/technology/epp/downloads/release/ganymede/SR2/eclipse-jee-ganymede-SR2-win32.zip
选择workspace目录为D:\workspace
2> Resin
http://www.caucho.com/download/
http://www.caucho.com/download/resin-3.1.8.zip
3> nginx
http://nginx.net/
http://sysoev.ru/nginx/nginx-0.7.61.zip
4> mysql
Windows MSI Installer (x86)
http://www.mysql.com/
http://dev.mysql.com/downloads/mysql/5.0.html#win32
http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.0/mysql-5.0.83-win32.zip
http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQLGUITools/mysql-gui-tools-5.0-r17-win32.msi
5>memcached for win32
http://www.splinedancer.com/memcached-win32/
2、Eclipse插件下载地址
1> Hibernate Tools
#http://download.jboss.org/jbosstools/updates/development
http://download.jboss.org/jbosstools/updates/stable/
选择安装
#Tools Development Release和Hibernate Tools
FreeMarker IDE
Hibernate Tools
2> Spring IDE
http://springide.org/updatesite
3> SVN
http://subclipse.tigris.org/update_1.6.x
4> Javascript
http://download.macromedia.com/pub/labs/jseclipse/autoinstall/
以下是项目辅助的插件
5> checkstyle
http://eclipse-cs.sourceforge.net/update
6> findbug
http://findbugs.cs.umd.edu/eclipse
XX的优点
Jul 16th
- 异步消息机制处理用户动态
- 点击数用日志统计
- Squid+Memcached缓存机制(及时刷新)
- 读写分离(*)
- 索引文件伪静态实现半动态化(延时刷新)
- 使用Javascript框架(jQuery)实现页面效果
- 目录采用树形结构(树路径)-自定义目录
- 容许一定数据的冗余(不能是排序或搜索数据)。
在Java中,把字符串转换成Unicode码
Jun 17th
我是碰到这样一样情况,由于我使用了jQuery.getScript(),来进行跨域,不过遇到有些浏览器的编码编码不一致,导致乱码。
这样处理的好处是,避免了乱码的问题。
只是服务器端的代码,和网上的代码一样,不过我加了个
StringUtils.leftPad()
方法处理,这样就解决了每个字符都转化为四位的Unicode编码,在浏览器端用 unescape(blogLoginInfo.nicknameUnicode.replace(/\\/g,”\%”)); 就可以解码。
服务器端转码代码如下:
/**
* 把字符转换成Unicode编码
* @param str
* @return
*/
public static String toUnicode(final String str) {
String result = "";
for (int i = 0; i < str.length(); i++) {
int charInt = str.charAt(i);
result += "\\u" + StringUtils.leftPad(Integer.toHexString(charInt), 4, "0");
}
return result;
}
批量删除某个前缀的表[MySQL]
Apr 9th
由于本站点尝试过安装了BBS和其它一个博客,但又被我卸载了,现在想把这些有特殊前缀的表全部删掉。好像MySQL本身没有这个功能,所以找方法取而代之。
先运行下面的SQL语句:
select concat('drop table ', table_name, ';') from information_schema.tables where table_name like 'bbs_%';
然后得到一个drop table bbs_* 的列表,很简单了,到控制台跑一遍就可以了。
[译]所有网站都应该使用的10个SEO方法
Apr 7th
原文:10 SEO elements all websites should have
说真的,你不需要为更好的搜索引擎排名而去请一个专家来优化你的网站。毕竟,搜索引擎优化(SEO)不是一件复杂的事情。只要花费一些阅读和努力就可以自己学习和做搜索引擎优化。
但是,在开始真正的SEO工作(整个SEO运动的方向)之前我们需要了解,我们尝试完成什么样的目标呢?我们的目标关键字是什么?谁是我们的竞争对手?在我们开始任何SEO之前,运动关键字搜索都是最重要的准备工作。
对你的网站或者博客来说,搜索关键字就像罗盘的角色一样起着决定性的作用。一个恰当的搜索关键字显示了你所在的行业所从事的和发展的方向,因此,你应该关注一些普遍的行业关键字。
简单来说,这就是告诉你怎么做一个关键字搜索呢?
- 使用Google Keyword Tool 得到一个关键字关系表。
- 检查每个关键字在搜索引擎结果页(SERP)有多少个页面被抓到,这将作为一个数据依据。
- SERP排前面的网站你的主要竞争对手,学习他们。
- 去学习什么是需要的,对每个关键字用关键字工具去检查他的所有字数。
- 一些好的关键字搜索工具:Word Tracker 和 Keyword Discovery(原文作者喜欢的)。
那么,你现在有了一个粗略的竞争思路。对于初学者来说,这最聪明的方法是在一个小的或中等的池塘里捕捉一条大鱼(The smart approach is to be a big fish in a small/average pond – for starters),你应该把你的工作重点放到有节制的需求和低竞争(moderate demands and low competition)的关键字上。
除了支持和需求,搜素关键字也应该主动提供一些有价值的信息给你的网页设计者。举个简单的例子,一个在线出售鞋子的网站,我能肯定你有如此的问题:什么品牌的鞋子将被搜索,鞋子应该怎样按品牌、季节还是尺寸分类?
随着你开展完你的关键字搜索工作这些问题将应刃而解。你将看见根据品牌查询的有“DC 鞋”、“jordan 鞋”、“nike 鞋”;同时,搜索者也根据不同的运动或季节查找鞋,比如:“芭蕾舞鞋”,“安全鞋”,“保龄球鞋”,“舞鞋”等等。
在你开展搜索引擎工作的最后,你应该能够生成一个目标关键字的列表。现在是关注你的SEO工作的时候了。为了更好的开展工作,这有10条建议帮助你马上提高你的博客或网站的SEO质量。
立刻提高你的网站的SEO质量的10条建议:
- 默认页(index.html,index.php等等)可用和多关键字的URL
- 可信赖的网页主机
- 多关键字的Title和标题标签
- 在图片上有Alt标签信息
- 适当结构化的内部链接
- 外部链接
- XML站点地图
- 有WWW和没有WWW的域名讨论
- Robots.txt
- 内容是关键
还没有翻译完,待续……
[转]Best Practices for Speeding Up Your Web Site
Apr 3rd
Best Practices for Speeding Up Your Web Site
http://developer.yahoo.com/performance/rules.html
《网络营销实战密码》作者的博客
Mar 29th
下面介绍一个http://www.chinamyhosting.com/seoblog/的链接,这个博客主的主题是“介绍和研究搜索引擎优化SEO技术,Zac的SEO优化及网络营销,电子商务,网站推广运营思考。”博客主还出了本书《网络营销实战密码》,我没有买这本书,不知道具体内容是什么,对这方面感兴趣的朋友可以尝试着买本阅读下。但不管怎么样,这个博客不错。
还有这个博客的一片文章积累的力量值得大家学习。
用最简明的语言传播技术
Mar 23rd
我在Fenny的博客逛了一段时间了,Fenny是个从事数据库的前辈,就职于Alipay,博客里保存了很多关于Web系统架构和数据库架构的信息。
Fenny的理念是用简约的技术取得最大的收益,对我们这些搞技术的来说,简单实用是一种境界。
这句话使我想到了我刚学习Java的时候,大家都推荐我看《Thinking In Java》,都说这么书有多好,其实过去了2、3后来看这段学习的历程,我不推荐这本书,更建议大家去看我学习过的一本书《SCJP认证和培训指导》。
《Tink In Java》太过于长篇大论,洋洋洒洒N多页,把一些简单的东西搞得过于复杂,吓倒了一遍想致力于Java开发的人。应该使用简明的通俗易懂的语言来描述技术,Java的门槛还没跨入,就被对初学者来说的难以理解的面向对象搞得焦头烂额,处处碰壁。当然,这倒可以凸显Java有多么的高深莫测。
这不是传播技术,是在卖纸。

