结合openfans谈算法的重要性

不经意看到了程序员的一期算法专题,细细研读多位高手(包括李开复)的文字之后,对算法的重要性重新进行了反思。我研究生毕业 2 年,一直从事 J2EE 开发,由于项目的原因,很少需要自己去设计算法,甚至 stack tree 这些数据结构都很少使用。还好自己也不甘于平淡,如 Effective Java Practical Java Refactory Design Pattern 等等这些流行书还是抽空学习,这些书的确很是经典,对我的编码风格,模式的理解,设计能力都起到了很好的促进。也快速的由一个程序员成长为架构师(只是公司的,离真正的架构师还差得远)。

因为项目需要,去年下半年开始全面接触开源软件,使用了 spring maven hibernate ibatis 等众多开源软件,也对开源软件产生了浓厚的兴趣,于是拿这些开源软件做了 openfans ,一方面是推进开源软件在中国的使用的交流,一方面也为自己在实践中更多使用这些软件(因为没有项目和利益因素,可以做想做的事,用想用的软件)。使用这些开源软件倒很是顺利,很多软件拿来就能用,都有 sample ,简单使用还是不难的。

但一些关键的问题一直悬而未决!比如 tag 的设计:我现在简单的使用平铺的模型, tag 没有层次之分, tag 间产生双向关联。但这样是最符合 tag 特性的模型吗?如何对这些 tag 进行分类,如何定义 tag 的多级关联(如 spring hibernate 有关联, hibernate 又与持久层关联, spring 是否与持久层有间接关联,依次类推)。。。。。。而做出一个好的 tag 模型,可能就需要图论方面的知识。再比如用户相似度设计(号称是豆瓣的核心,难以复制):每个用户拥有了一些 tag ,如何根据这些 tag 定义用户的相似度,一个用户有 spring hibernate 2 tag ,一个用户有 spring ibatis 2 tag ,他们相似度为多少,如果每个人 tag 都很多,再加上权重的概念,问题又复杂的多。简单的做法就是每个用户 tag 一个个匹配,匹配的越多相似度越大,但这样设计一是不准确,二是时间复杂度很大,最坏情况为 n*n*m*m n 为用户数, m 为每个用户的 tag 数。

这些都需要扎实的算法基础。而我的基础就很薄弱:本科学的比文科还文科的专业,研究生又学的比较上层的东西( UML RUP PM 等,也都一知半解),选修了一门算法导论,又被 1000 多页的经典英文教材吓趴下了,上了几次课就直接放弃,没敢参加最后考试。现在想临时抱佛脚,谈何容易。

所以算法也并非没有用处,关键要看你在做什么,想做什么。想去 google 、百度不用会 spring ,算法基础扎实,只会 c 语言都行;一些行业如电信、金融也很是需要算法高手。而国内更多的企业做企业应用,一般是连连数据库,写写页面,最多引入些开源框架和软件,如 spring hibernate struts 等。这方面的需求较大,会了 spring ,省了公司的培训成本,自然还是给找工作加了一些砝码。

所以有时听到某些人对某项技术不以为然,说“这些东西有什么是我在几个星期学不会的”的时候,一方面是对其狂妄进行些鄙视,一方面也真要问问自己,我的核心价值到底在哪。这个问题很重要,涉及面很广,选择也很多,而我也只是有些模糊的答案,等以后再仔细写写。

不管如何,我是要开始研究算法了,得解决问题阿!先在 openfans 开个算法的 tag ,一边学一边积累,对算法有兴趣的同学也可以跟我一块进步。

PS :做个广告, blogjava 很多好的 bloger ,能否到 www.openfans.net 导入下 blog ,跟大家分享下你的感悟,谢谢!

posted @ 2006-07-12 15:01 pesome 阅读(2577) | 评论 (6)编辑 收藏

openfans新功能,欢迎大家使用

很不好意思,不是原创技术。做个广告,有不妥,欢迎管理员从首页拿掉。
    你是开源软件的爱好者,平时学习和使用这些软件,也不时写写
blog ,记下些心得。

你是开源软件的传播者,你希望更多的人了解和使用开源软件,希望你的文章被更多的人阅读,并展开更深刻的讨论。

你是开源软件的参与者,平时参与参与国外的开源项目,也希望中国能有更多的开源团体,大家一起做国人自己的开源软件。。。。。。

只要你对开源软件保持着一份热爱,欢迎来到 openfans(www.openfans.net)

非常方便的注册后,你就可以点击“提交 feed ”,只要输入你的 rss 地址(由于时间原因,还没做直接从 web 地址发现 feed ),就可以将你的 feed 加入,同时我们对一些网站提供了简单的匹配(如 blogjava ,只需输入你在 blogjava 的用户名,系统会自动匹配成你在 blogjava feed )。完成后,点击“立即导入”,就可以将你的文章入库,点击“最新日志”可以查看。以后系统会每日定期读取你的 feed ,自动将新的文章加入。由于你提供的是 rss ,内容应该是文章的简短描述(视你的 blog 提供商而定),而且我们会为每篇文章提供原文链接,直接指向你的 blog 原文。

导入的日志一般是没有进行分类的,不方便大家的查找。在每篇日志上都有个“我要推荐”链接,点击并输入你认为适合的标签(如 spring hibernate cms )等,就可以把这篇日志形成文章,放在相应的标签下,永久保存。需要学习 spring hibernate cms 的后来者,可以方便的查找到标签和软件,找到你的文章,进而进入你的 blog

同时你也可以发表文章,推荐软件,创建和加入小组,进行评论。。。。。。我们会不断完善功能,给大家提供更方便的功能和更好的用户体验。

由于现在人员较少,开发进度较慢。但先做个广告,下一步会做 digg ,提供对软件、文章、用户等的 digg 。做对一些标签的 rss ,如 springframework 网站的 rss ,自动获取 spring 的版本更新信息。还要完善小组功能好友功能,给大家提供一个方便交流的平台。

网站拿 java 的一堆开源软件做成,同时本身也是开源软件,希望参与的同学可以 email pesome@gmail.com ,大家一块为推动开源软件在中国的发展做出自己的贡献。

posted @ 2006-06-09 12:42 pesome 阅读(1328) | 评论 (6)编辑 收藏

maven换到jdk1.5的问题解决

  前面openfans用的JDK1.4,今天下决心换成1.5了。运行倒是好好的,在jetty下也没有什么问题。一不小心点了下eclipse里我做的mvn eclipse:eclipseExternal Tools,就开始maven了。停也没用了,等着吧。结果报错:D:\javaproject\openfans\main\src\org\openfans\domain\Group.java:[29,19] -source 1.3 中不支持泛型(请尝试使用 -source 1.5 以启用泛型)。看了看mavenbat,会自动使用环境变量配置的jdk,应该没问题啊。还好我网上认识人多,想起alin用的jdk1.5,就问他怎么回事。发过来这个:

< plugin >

       < artifactId > maven-compiler-plugin </ artifactId >

              < configuration >

                  < source > 1.5 </ source >

                  < target > 1.5 </ target >

              </ configuration >

</ plugin >

我一看就明白了, mvn 时是用 1.3 给我编译的,得告诉它用 1.5 。拷到 pom 文件中,再 mvn eclipse:eclipse 搞定。问题是很快解决了,同时却留下了很多思考:

1. 技术没有止境,做人一定要谦虚。 Maven2 我用的也算比较早,还曾经被白衣说是对maven2的推广做了贡献的,自己也颇以为然。而现在这个简单的问题却不知道了,还得google或问人解决。还好我一直比较谦虚(本身也没啥可骄傲的资本),否则要狂被鄙视了。

2. 技术的推广要不遗余力,好的东西要让大家都知道。 Maven2 我也只是使用,了解并不深入(项目中碰到了的知道,没碰到的就不懂了),但我是到处推荐,碰到个人就说这个好。这下很多朋友都知道了,也引入项目实践了。一方面他们用的舒服,提高了效率,有点问题还可以向我这个所谓的maven2高手请教,我自是“知无不言,言无不尽”;另一方面,他们也许就碰到其它问题了,然后知道如何解决,在我碰到类似问题时,就可以向他们请教了。你看,多好的良性循环,想想都美滋滋的。

3. 多进行知识共享,大家的智慧比个人强。 这是从更高的角度看了,通过知识的共享,能迅速集合大家的经验和智慧,让个体更快的进行学习,少走弯路。你共享自己知识的同时,也能获得别人的成果。如果你知道谁spring比较强,谁hibernate比较强,谁在用maven,而且碰到问题能看他们的文章或直接向他们请教,做起项目来是不是都安心的多。可能有人说有google,但google信息量太大,而且很多文章是处处转载千篇一律,经常半天找不到东西。我是深有体会,所以想到做openfans,做一个知识共享的平台,并做到去糟取精。现在还远远达不到要求,但我会努力的。

posted @ 2006-05-29 17:11 pesome 阅读(3977) | 评论 (4)编辑 收藏

openfans领域模型驱动的尝试

领域模型驱动( Domain Driven Design ),很热的名词。 Openfans ,不太热的网站。今天俺就借着很热的 ddd ,给不太热的 openfans 再造点势。 Openfans 就不多介绍了,网站用 spring+hibernate 为核心的一堆开源软件构建。有了 spring IOC hibernate ORM ,打着 ddd 的旗号也就名正言顺了很多。先声明其实俺对 ddd 的理解也多是道听途说,没有什么系统的学习过,倒是和 Joe 阿牛讨论过几次,颇有受益,他对这个理解还是很深刻的。

言归正传,就讲 openfans 现在经 ddd 思想改造过的模型。整体上看还是普通的三层架构体系:展现层、业务层、持久层。展现层用 spring mvc ,力图做到只是展示相关,避免出现业务逻辑。再具体细分,就是 jsp 页面只有展示逻辑,主要使用 jstl 完成显示功能。 Controller 负责从页面获得参数、把数据传回页面、控制页面流传和调用业务层的接口。持久层使用 hibernate ,在设计上我不是按 dao 方式为每个对象建立相应的 dao ,也不是 ddd 推荐的每个 domain 一个 repository ,而是分成了 Persistence Fetcher2 个接口。 Persistence 处理持久相关如 save remove 方法, Fetcher 则处理 get 相关。这样分的原因也很简单, persistence 是很稳固的,对象都可以共用一个接口如 save Object ),而 fetcher 就千变万化,需要分页、排序等接口。

这样设计是与业务层架构相关的。我采用的是 domain 对象(简称 DO + 一层薄薄 façade 的方式。 DO 处理自身的逻辑,包括持久功能。本身 DO 是没有持久能力的,需要依靠注入的 persistence 接口,这里就体现按 Persistence Fetcher 分开的一个好处, persistence 所有 DO 可以共用一个,给编程带来了方便。 Openfans 中采用的是 DO 继承一个抽象 PersistentObject 类的方式,这样 DO 方便的获得了注入的能力和持久的能力。这样做有何优缺点还需要做些讨论,为了方便我也就先这么用。 PersistentObject 代码如下:

public abstract class PersistentObject implements NeedPersist {

       private Persistence persistence;

 

       public void save() {

              persistence.save(this);

 

       }

 

       public void remove() {

              persistence.remove(this);

       }

 

       public void setPersistence(Persistence persistence) {

              this.persistence = persistence;

       }

 

       public Persistence getPersistence() {

              return persistence;

       }

}

这样 DO 只需要注入 persistence 就获得了持久的能力,而且可以把这种能力往下传递。 DO 获得了持久能力,就有点接近富血模型的想法了,他能够处理一些业务,做持久然后调用引用对象的业务和持久方法 ( 从另外的角度看持久与业务其实是分不开的 ) 。这样把业务封装在了领域本身,更适于用领域对象出发的方式去思考问题。领域层的 façade 主要是为了 Transaction 管理和隐藏 DO 接口。这样 DO 的业务方法都可以设置成 friendly ,仅相互间可见。 Façade 就放在 domain 包中,它负责给 DO 注入 persistence bean ,调用 DO 的接口,提供给 controller 一个 use case 级别的接口,同时它也代理 fetcher 的接口。

有了这个架构,实现起来也不复杂,要配置的 bean 很少(现在还没有使用 spring 2.0 DO 配置在容器中)。设计就从 DO 出发,明确它的属性和方法,让 hibernate 自己生成数据库表。

       这样设计也算是一次尝试吧,其中肯定有很多考虑不周的地方,需要不断的讨论和改进。

posted @ 2006-05-22 18:28 pesome 阅读(1372) | 评论 (4)编辑 收藏

jetty与maven集成

     摘要: 自己做个小项目,使用了 maven2 ,一直使用 tomcat ,但很不方便。采用直接改 server.xml 指向项目路径的方法,但这样要求把编译路径改向 WEB-INF/classes ,而且要求把需要的 jar 放到 WEB-I...  阅读全文

posted @ 2006-05-15 11:19 pesome 阅读(2035) | 评论 (0)编辑 收藏

bea usergroup归来

今天下午去参加了上海的 bea usergroup 大会,主题是深入极限编程,感觉还是受益良多的。这次大会有 yanger 主持,少了很多的商业气息,只是在中间休息阶段问了一些有关 bea 产品的问题。关于 bea 我也不大熟,平时用的都是 ibm 的一套,也就不多评论了。

一共 3 speaker ,第一个是 thoughtworks 的资深顾问,讲了些 xp 要注意的地方,并配了些照片和图表,讲如何实施 xp ,还是有些收获的。第二个是阿里巴巴的性能测试专家,讲了如何进行性能测试,如模拟用户,确定负载等等。人挺牛的,但想想阿里巴巴每天 1 个亿的 pv(page view) ,他都搞得定,咱也没话说。

第三个出场的就是这篇文章的重点了,讲的的确很好,而且很有新意。这位是红工厂的老板,在中国工作几年,然后去加拿大开始了他的 xper 之路,回国后做出了自己的 JDO 实现。他的主题就是结合自己的经历,讲授一个 xper 的成长过程。因为是亲身所感,他讲出来很是实在,加上时不时幽它一默,如:上班让打游戏感觉很爽,跟印度美媚 pair programmer 却感觉很累。。。。。。让人在会意的微笑中体味他当时的感受和成长,同时加深对 xp 的一些实践的实际认识。

他并没有讲 xp 所涉及的所有要素,只是强调了 pp 和沟通的重要性以及测试优先和重构是程序员的基本素质这几个方面。他很是关注沟通的精神甚至一个人的性格要素,他认为好的 programmer 应该乐于去沟通,勇于承认不足,并能主动去向同伴或团队寻求解答(而不是首先去 google )。同时他对 xp 的精神提出了自己的看法,也是以人为本,但是另一种意义上的以人为本。他半开玩笑的说,以人为本并不是给你更多的工资,让你上班打游戏,让你 happy 的工作,而是把以前对流程的关注更多转到开发人员上面,让开发人员具备一个 xper 应有的素质。他通过亲身体验说明了一个好的 xper 即使不在 xp 的团队中,也能创造更快的开发效率,更高的代码质量和更少的加班。关于这点我也很是认同并有一些亲身的实践:通过测试先行,不断重构和努力消除重复代码,是能大大优化代码结构,提高代码质量,减少 bug 率的,而相应的反而会提高开发效率。

也许目前国内还较少有真正能实施 xp 的团队,我们也很难真的在项目中进行 xp 的完整实践。但只要我们接受 xp 的思想,在平时的实践中就采用一些 xp 推荐的方式,如测试优先、重构、持续集成、乐于沟通等等,先把自己变成一个合格的 xper ,那么在真的有机会实施 xp 的时候,我们就能更快的融入团队,更好的用 xp 的精髓指引项目走向成功。

posted @ 2006-04-15 23:30 pesome 阅读(1563) | 评论 (3)编辑 收藏

校庆一日(继续)

接着昨天的写。

出了大楼,师弟带我们到新建好的南门去看看。这不是凯旋门的模仿吗?厚重的大理石砌出中间一大两边一小的空透长门,再加上一些简单的雕饰,中间的下面却立了很大石碑,刻上学校的名字,再围上一些花,阻止人的通行,顿时减少了很多宏伟的气势。但这样却便于照相,好多同学三五成群往石碑前一站,然后很好取景:人面鲜花相映,加上“凯旋门”的气势和石碑的明喻,很有纪念意义。“凯旋门”两旁是弧形的长廊,仿欧洲古典主义建筑风格,一排排石柱过去,凭添了不少文化气息。

从“凯旋门”往校园里走,眼前一片开阔,是一大片草坪,有几个足球场大。草坪上有不少学生,或站成一圈玩飞盘,或几个人围坐打扑克,或几个人乱卧其上感受草的气息。我们走进看看,一块块醒目的小牌上都有一句颇有意味的话语“小草在休息,请勿打扰”。本意大家都明白,但看这么多人在上面,也就暂且从众一把。我们也打扰了一下小草,我还忍不住在上面打了个滚。同时在想:这么大的一块草坪,花费不菲,如果只是看看,未免可惜了点,好像国外的草坪也并不禁止人踩踏的,只要不在上面做剧烈运动,如踢足球之类,应该也不会带来很大的影响。

沿着路往东走,右边都是新建的教学区和学院大楼,风格很是统一。经过一座小桥,往下看去,河水缓缓流过,旁边一个小的岸边广场,河岸边有沿河走道,一直往远方延续。在草坪的绿色基调下又多出一些点缀,真是风景这边独好。我又在心底感叹:真是适合谈情说爱的好地方,可惜我们那时没有,只有西边一个小的人工湖,晚上拥挤的很。再往东就看到一个红漆的仿古大门,是把老校区的大门 copy 过来了。照样门前一对石狮,也是适合摄影留恋的地方。

大家到这也就慢慢散去了,大部分打的走了。我的爱车还在学院门口停着呢,于是又跟几个同学往里走。一边聊聊工作的事情,一边大家好像有默契的往以前的宿舍楼所在走去。走了好远,过了一个地道,来到以前的宿舍楼下。又翻新了,涂上浅黄色涂料,加上四角的红砖墙装饰。可惜原本就整体感觉不佳,就好像一个丑媳妇,涂上再多胭脂水粉也变不成美女一样。忍不住从下往上张量以前我住的宿舍,阳台挂了件运动衫,里面还是有位运动健将的。

又得睡觉了,还没写完,明天继续。

posted @ 2006-04-09 22:53 pesome 阅读(826) | 评论 (6)编辑 收藏

校庆一日

今天是母校 110 周年校庆,同学一块回去看看阔别了快 2 年的校园。我可是有车一族,便开车回去看看,不远的路,开了 1 个小时,挺累,是自行车。早听说短短 2 年,学校扩大了好几倍,但真的到了还是颇有感慨。从东边一个门进去,一直往西骑,新造的大楼一座座被抛在后面,完全是陌生的感觉。好久才唤回一些熟悉的记忆,原来是到了以前的东区了。我以前在西区住,到东区的新教学楼上课,就感觉远的厉害,走路需要十多分钟的。现在看来,自行车应该是每个学生的必需品。到了西边还是热闹了很多,有了校庆的气氛,随处可见坐满校友的大巴和各种款式的轿车。等俺有钱了,也开辆小车来显显,我心里嘀咕着。

因为赶时间去聚会,所以也无心流连,骑车直奔饭店。老同学好久不见,免不了一些客套寒暄, 2 年时间毕竟太短,大家也没有太大的变化,没有谁一下飞黄腾达的。席间觥筹交错,自不必说。有 2 个研二的师弟,便吃完带我们四处走走,首先就去看我们毕业后才落成的软件大楼。

这时我的车发挥优势了,他们得做校内巴士,绕好大一圈的,我就沿着一条直线直接骑过去。根据师弟的描述,来到一座银灰色玻璃幕墙的大楼前,停好车,他们还没到,便在外面转悠转悠。五层楼高,挺现代的设计,对一些细部处理的也不错,有挑台,凹进,凸出,显得整个立面挺丰满。这里插一句:我本科是在这学建筑设计的,可惜没天赋,学了个半吊子,只好改行。

等了会,他们才姗姗来迟,大家一块进去看看。厅很大,展出了很多学生的成果,挺不错的,有自己开发的工作流,有拿 spring+hibernate+velocity 做的项目,有自己做的负载均衡服务器。。。。。。二点感受,一是学校教的还不错,是在培养学生的实际能力,跟社会接轨;二是开源软件深入人心,在校的学生也都在使用了。看了他们的实验室,全 dell 的液晶,空间按公司的 cube 方式布置,大家议论说比他们的办公环境还好,于是纷纷感叹,生不逢时,晚来几年就好了。

得睡觉了,先写这么多,明天接着写。

posted @ 2006-04-08 23:57 pesome 阅读(752) | 评论 (1)编辑 收藏

sf上将cvs切换成svn经验

Sf cvs 一直不好,也不知道什么原因 . 前面听白衣说过,可以一键切换到 svn. 今天就试了试,找了半天,在 admin-> svn 下找到了 migrate 这个链接,点一下进入 migrate 界面,什么都不用改,直接点下面的确认按钮就搞定。这时的状态是 wating ,号称要等 1-3 小时才能搞定。我等不及,隔了一会就刷新,结果状态已经变成 complete 了。

svn 地址为 :https://svn.sourceforge.net/svnroot/openfans/
然后拿小海龟试了下 , 可以访问 . svn eclipse 插件下载也成功了 , 通过 updatesite 可以下载这个插件 (http://www.polarion.org/projects/subversive/download/update-site/) 。打开插件窗口,界面跟 cvs 基本类似,我先试 commit 功能,正好把前面 cvs 的本机改动提交上去。

结果报 403 forbiden 错。 Google ,看到白衣也碰到同样问题,结果迁到 scud 上去了。我只好点些老外的论坛回复看,看到一个解决问题的回复。号称要 admin->member ,我便照做,一看多了个 svn permission 框,把自己的先勾上, Update 。然后重新 commit ,搞定。 Sf svn 速度飞快,比 cvs 快多了,这下也省得自己搞 svn 了。把这个成功经验写出来,也可以给后面的人一个参考。

posted @ 2006-04-05 12:15 pesome 阅读(1764) | 评论 (1)编辑 收藏

openfans快速配置指南

应牛牛和 lucky 的要求,写一份 openfans 的快速配置指南,也就是介绍如何在你的机器上把下载下来的 openfans 跑起来。首先使用 maven ,需要下载 maven www.openfans.net 里可以输入 maven 进行搜索,有它的介绍和主页,还有我写的一篇简单的 maven 上手文章。

如果使用 eclipse ,在项目根目录,也就是 pom.xml 所在目录,运行 mvn eclipse:eclipse( 如初次使用,会花较长时间到网上下载 plugin jar ,建议去喝杯咖啡 ) mvn eclipse:eclipse 会生成 .class .project 文件,可以进入项目的 build path 查看,会自动将 output 路径设为 target/classes 。默认数据库使用 mysql ,如果希望马上运行,则创建一个新数据库,可以命名为 openfans ,如果 mysql 采用默认安装,则用户名 root ,密码为空,可以无需更改 jdbc 配置文件。要更改也很简单,在 main/src 下面有一个 jdbc.properties 文件,可以在这里更改数据库类型和用户名密码。这里有一句 hibernate.hbm2ddl.auto=update ,表示 hibernate 会自动更新建表语句,也就是新运行或更新了 hbm 文件再运行, hibernate 都会自动帮你完成数据表的重建工作,这样你可以不用再考虑数据库建表脚本了。

如果想在 tomcat 里直接运行,则可以执行 mvn package ,会运行所有 test case 。目前的 test case 通过继承 AbstractTransactionalDataSourceSpringContextTests ,能够方便的实现数据库回滚,在 BaseTest 类下有一句 this.setDefaultRollback(false) ,如果希望通过程序填充数据,就 uncomment 它。这里有一个地方要注意一下,就是 web/WEB-INF/urlrewrite.xml ,这是 urlrewrite 的配置文件, urlrewrite 的描述在 openfans 网站里有,可以通过搜索 urlrewrite 快速的找到。因为我把文档根设为“ / ”,所以有 <to type="redirect">/view$1.html\?id=$2</to> ,如果文档根是 openfans 则需在 /view 前加上 /openfans ,然后再运行 mvn package 。测试全部通过,就会在 target 目录下生成 openfans-o.1.war ,将这个 war 放到 tomcat webapps 下,启动 tomcat ,应该就能通过 http://localhost:8080/openfans 访问了(假定你采用默认端口 8080 )。

如果进行开发,可以安装 eclipse-tomcat 插件,插件也可以在 openfans 网站输入 tomcat 进行搜索。可以在 tomcat conf/Catalina/localhost 下创建一个 openfans.xml ,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<Context path="/openfans" reloadable="true" docBase="D:/javaproject/openfans/web">

</Context>

docBase 改成你的 openfans 所在的路径。
   这里因为pom文件定义的默认输出位置为target,需改为web-inf/classes,这时会有一个src冲突,需把src/web/里的web-inf/classes exclude掉就可以了。
然后在
eclipse 启动 tomcat ,同样可以通过 http://localhost:8080/openfans 访问了。用这种方式启动 tomcat 可以进行调试。

 

posted @ 2006-04-01 21:05 pesome 阅读(3502) | 评论 (11)编辑 收藏

仅列出标题
共5页: 上一页 1 2 3 4 5 下一页 
<2024年6月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

导航

统计

公告

主要记录作者在学习java中的每一步足迹。除非特别说明,所有文章均为本blog作者原创,如需转载请注明出处和原作者,如用于商业目的,需跟作者本人联系。
欢迎大家访问:

常用链接

留言簿(16)

随笔分类

随笔档案

文章分类

文章档案

相册

收藏夹

java技术

人间百态

朋友们的blog

搜索

最新评论

阅读排行榜

评论排行榜