君子博学而日参省乎己 则知明而行无过矣

博客园 首页 新随笔 联系 订阅 管理
  1057 随笔 :: 381 文章 :: 141 评论 :: 169万 阅读

06 2012 档案

摘要:信息的飞速增长,使搜索引擎成为人们查找信息的首选工具,Google、百度、中国搜索等大型搜索引擎一直是人们讨论的话题。随着搜索市场价值的不断增加,越来越多的公司开发出自己的搜索引擎,阿里巴巴的商机搜索、8848的购物搜索等也陆续面世,自然,搜索引擎技术也成为技术人员关注的热点。 搜索引擎技术的研究,国外比中国要早近十年,从最早的Archie,到后来的Excite,以及altvista、overture、google等搜索引擎面世,搜索引擎发展至今,已经有十几年的历史,而国内开始研究搜索引擎是在上世纪末本世纪初。在许多领域,都是国外的产品和技术一统天下,特别是当某种技术在国外研究多年而国内才开. 阅读全文
posted @ 2012-06-30 19:11 刺猬的温驯 阅读(277) 评论(0) 推荐(0) 编辑

摘要:概率论只不过是把常识用数学公式表达了出来。——拉普拉斯记得读本科的时候,最喜欢到城里的计算机书店里面去闲逛,一逛就是好几个小时;有一次,在书店看到一本书,名叫贝叶斯方法。当时数学系的课程还没有学到概率统计。我心想,一个方法能够专门写出一本书来,肯定很牛逼。后来,我发现当初的那个朴素归纳推理成立了——这果然是个牛逼的方法。——题记目录0. 前言1. 历史 1.1 一个例子:自然语言的二义性 1.2 贝叶斯公式2. 拼写纠正3. 模型比较与贝叶斯奥卡姆剃刀 3.1 再访拼写纠正 3.2 模型比较理论(Model Comparasion)与贝叶斯奥卡姆剃刀(Bayesian Occam’s Razo 阅读全文
posted @ 2012-06-30 18:48 刺猬的温驯 阅读(366) 评论(0) 推荐(0) 编辑

摘要:作者:阮一峰上一次,我介绍了贝叶斯推断的原理,今天讲如何将它用于垃圾邮件过滤。========================================贝叶斯推断及其互联网应用作者:阮一峰(接上文)七、什么是贝叶斯过滤器?垃圾邮件是一种令人头痛的顽症,困扰着所有的互联网用户。正确识别垃圾邮件的技术难度非常大。传统的垃圾邮件过滤方法,主要有"关键词法"和"校验码法"等。前者的过滤依据是特定的词语;后者则是计算邮件文本的校验码,再与已知的垃圾邮件进行对比。它们的识别效果都不理想,而且很容易规避。2002年,Paul Graham提出使用"贝叶 阅读全文
posted @ 2012-06-30 18:37 刺猬的温驯 阅读(196) 评论(0) 推荐(0) 编辑

摘要:作者:阮一峰一年前的这个时候,我正在翻译Paul Graham的《黑客与画家》。那本书大部分谈的是技术哲学,但是第八章却写了一个非常具体的技术问题----如何使用贝叶斯推断过滤垃圾邮件(英文版)?说实话,我没完全看懂那一章。那时,交稿截止日期已经过了,没时间留给我去啃概率论教科书了。我只好硬着头皮,按照字面意思把它译了出来。虽然交稿了,译文质量也还可以,但是心里很不舒服,下决心一定要搞懂它。一年过去了,我读了一些概率论文献,逐渐发现贝叶斯推断并没有想象的那么难。相反的,它的原理部分实际上很容易理解,甚至不需要用到高等数学。下面就是我的学习笔记。需要声明的是,我并不是这方面的专家,数学其实是我的 阅读全文
posted @ 2012-06-30 18:35 刺猬的温驯 阅读(198) 评论(0) 推荐(0) 编辑

摘要:简介:本文将探讨 Apache Lucene —— 性能卓越、功能全面的文本搜索引擎库。我们将学习 Lucene 架构及其核心 API。学习如何使用 Lucene 进行跨平台全文本搜索、建立索引、显示结果,以及如何扩展搜索。简介Lucene 是一个开源、高度可扩展的搜索引擎库,可以从 Apache Software Foundation 获取。您可以将 Lucene 用于商业和开源应用程序。Lucene 强大的 API 主要关注文本索引和搜索。它可以用于为各种应用程序构建搜索功能,比如电子邮件客户端、邮件列表、Web 搜索、数据库搜索等等。Wikipedia、TheServerSide、jGu 阅读全文
posted @ 2012-06-30 13:22 刺猬的温驯 阅读(293) 评论(0) 推荐(0) 编辑

摘要:简介:Lucene 是基于 Java 的全文信息检索包,它目前是 Apache Jakarta 家族下面的一个开源项目。在这篇文章中,我们首先来看如何利用 Lucene 实现高级搜索功能,然后学习如何利用 Lucene 来创建一个健壮的 Web 搜索应用程序。在本篇文章中,你会学习到如何利用 Lucene 实现高级搜索功能以及如何利用 Lucene 来创建 Web 搜索应用程序。通过这些学习,你就可以利用 Lucene 来创建自己的搜索应用程序。架构概览通常一个 Web 搜索引擎的架构分为前端和后端两部分,就像图一中所示。在前端流程中,用户在搜索引擎提供的界面中输入要搜索的关键词,这里提到的用 阅读全文
posted @ 2012-06-30 13:19 刺猬的温驯 阅读(215) 评论(0) 推荐(0) 编辑

摘要:简介:Lucene 是一个基于 Java 的全文检索工具包,你可以利用它来为你的应用程序加入索引和检索功能。Lucene 目前是著名的 Apache Jakarta 家族中的一个开源项目,下面我们即将学习 Lucene 的索引机制以及它的索引文件的结构。在这篇文章中,我们首先演示如何使用 Lucene 来索引文档,接着讨论如何提高索引的性能。最后我们来分析 Lucene 的索引文件结构。需要记住的是,Lucene 不是一个完整的应用程序,而是一个信息检索包,它方便你为你的应用程序添加索引和搜索功能。架构概览图一显示了 Lucene 的索引机制的架构。Lucene 使用各种解析器对各种不同类型的 阅读全文
posted @ 2012-06-30 12:00 刺猬的温驯 阅读(194) 评论(0) 推荐(0) 编辑

摘要:简介:本文首先介绍了 Lucene 的一些基本概念,然后开发了一个应用程序演示了利用 Lucene 建立索引并在该索引上进行搜索的过程。Lucene 简介Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。目前已经有很多应用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的帮助系统的搜索功能。Lucene 能够为文本类型的数据建立索引,所以你只要能把你要索引的数据格式转化的文本的, 阅读全文
posted @ 2012-06-30 11:29 刺猬的温驯 阅读(140) 评论(0) 推荐(0) 编辑

摘要:摘要本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题... 阅读全文
posted @ 2012-06-29 09:30 刺猬的温驯 阅读(271) 评论(0) 推荐(0) 编辑

摘要:Memcached 是什么?Memcached是一种集中式Cache,支持分布式横向扩展。这里需要解释说明一下,很多开发者觉得Memcached是一种分布式缓存系统,但是其实Memcached服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键做分区存储,而这个区就是Memcached服务端的一个或者多个实例,如果将客户端也囊括到Memcached中,那么可以部分概念上说是集中式的。其实回顾一下集中式的构架,无非两种情况:一是节点均衡的网状(JBoss Tree Cache),利用JGroup的多播通信机制来同步数据;二是Master-Slaves模式(分布式文件系统),由Maste 阅读全文
posted @ 2012-06-29 01:51 刺猬的温驯 阅读(293) 评论(0) 推荐(0) 编辑

摘要:百分点推荐引擎是国内领先的推荐技术平台,专注于为电子商务和资讯网站提供SaaS模式的个性化推荐服务,提高网站的整站转化率和用户黏度。本文将从电子商务网站的实际需求出发,介绍百分点推荐引擎架构设计和搭建。需求当下,个性化时代的潮流势不可挡,业界普遍意识到了推荐是网站的一项基本服务。但是,人们对推荐该如何来做,也就是推荐技术本身,还不甚了解。我们经常会遇到这样的疑问:“购买过该商品的用户还购买过哪些商品这种推荐,不是一个SQL语句就搞定了吗?”其实不然,推荐技术远远不是这么简单。广义上讲,推荐技术属于数据挖掘和机器学习范畴,这也意味着好的推荐服务依赖于科学的推荐算法和大量的学习数据。对于电子商务和 阅读全文
posted @ 2012-06-29 01:05 刺猬的温驯 阅读(257) 评论(0) 推荐(0) 编辑

摘要:持续集成引擎Hudson Hudson 是一个可扩展的持续集成引擎。主要用于:1.持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。2.监控一些定时执行的任务。Hudson拥有的特性包括: 易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。 易于配置-所有配置都是通过其提供的web界面实现。 集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。 生成JUnit/TestNG测试报告。 分布式构建支持-Hudson能够让多台计算机一起构建/测试。... 阅读全文
posted @ 2012-06-28 00:52 刺猬的温驯 阅读(448) 评论(0) 推荐(0) 编辑

摘要:摘要:本篇文章继续讲述在Eclipse中使用JUnit4进行单元测试。上一篇文章中我们介绍了两个Fixture标注,分别是@Before和@After,我们来看看他们是否适合完成如下功能:有一个类是负责对大文件(超过500兆)进行读写,他的每一个方法都是对文件进行操作。换句话说,在调用每一个方法之前,我们都要打开一个大文件并读入文件内容,这绝对是一个非常耗费时间的操作。如果我们使用@Before和@After,那么每次测试都要读取一次文件,效率及其低下。这里我们所希望的是在所有测试一开始读一次文件,所有测试结束之后释放文件,而不是每次测试都读文件。JUnit的作者显然也考虑到了这个问题,它给出 阅读全文
posted @ 2012-06-24 21:28 刺猬的温驯 阅读(225) 评论(0) 推荐(0) 编辑

摘要:摘要:本篇文章继续讲述在Eclipse中使用JUnit4进行单元测试。 在测试类中用到了JUnit4框架,自然要把相应地Package包含进来。最主要地一个Package就是org.junit.*。把它包含进来之后,绝大部分功能就有了。还有一句话也非常地重要“import static org.junit.Assert.*;”,我们在测试的时候使用的一系列assertEquals方法就来自这个包。大家注意一下,这是一个静态包含(static),是JDK5中新增添的一个功能。也就是说,assertEquals是Assert类中的一系列的静态方法,一般的使用方式是Assert. assertEq. 阅读全文
posted @ 2012-06-24 21:27 刺猬的温驯 阅读(221) 评论(0) 推荐(0) 编辑

摘要:摘要:本篇文章讲述在Eclipse中使用JUnit4进行单元测试。 首先,我们来一个傻瓜式速成教程,不要问为什么,Follow Me,先来体验一下单元测试的快感! 首先新建一个项目叫JUnit_Test,我们编写一个Calculator类,这是一个能够简单实现加减乘除、平方、开方的计算器类,然后对这些功能进行单元测试。这个类并不是很完美,我们故意保留了一些Bug用于演示,这些Bug在注释中都有说明。该类代码如下:package andycpp;public class Calculator ...{private static int result; //静态变量,用于存储运行结果publ.. 阅读全文
posted @ 2012-06-24 21:24 刺猬的温驯 阅读(369) 评论(0) 推荐(0) 编辑

摘要:有两种方案:* VisualSVN Server,安装更简单、更直观:http://www.visualsvn.com/server/download/* 传统的Subversion 服务器程序:一、准备工作1、获取 Subversion 服务器程序到官方网站(http://subversion.tigris.org/)下载最新的服务器安装程序。目前最新的是1.5版本,具体下载地址在:http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100&expandFolder=8100&folderID 阅读全文
posted @ 2012-06-24 01:51 刺猬的温驯 阅读(267) 评论(0) 推荐(0) 编辑

摘要:Svn是一个开源的版本控制系统Subversion的简称。Subversion 管理着随时间改变的数据。 这些数据放置在一个中央资料档案库 (repository) 中。 这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。 这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。SVN版本控制需要SVN服务器(可下载SVN安装或安装VisualSVN Server)和SVN客户端软件(Subclipse即Eclipse的SVN客户端插件或者TortoiseSVN)。TortoiseSVN使用帮助和下载http://www.williamlong.info/archives/1 阅读全文
posted @ 2012-06-24 01:45 刺猬的温驯 阅读(253) 评论(0) 推荐(0) 编辑

摘要:SVN是常用的一种常见的版本控制软件。SVN中检出(check out) 和 导出(export) 的区别主要有如下几条:check out跟check in对应,export跟import对应。check out导出获得文件后,导出的文件仍处于SVN版本控制中,与版本库保持关联,比如你可以进行Svn Update或者Svn Commit操作。同时导出文件夹下有一个.svn的隐藏文件夹,存储着一些版本的元数据信息。export 简单导出一个版本的数据,导出的文件脱离SVN版本控制,修改后无进行Update和Commit操作。导出文件夹下没有.svn目录。 阅读全文
posted @ 2012-06-24 01:22 刺猬的温驯 阅读(721) 评论(0) 推荐(0) 编辑

摘要:关于SVNSvn是什么?Svn官方网站;Svn客户端;Svn在线视频帮助。Subversion是什么?SVN是一种版本管理系统,前身是CVS,是开源软件的基石。即使在沟通充分的情况下,多人维护同一份源代码的一定也会出现混乱的情况,版本管理系统就是为了解决这些问题。Subversion能做什么?SVN像时光机器一样,可以让你回到过去。因此凡是你认为可能需要恢复以前样子的工作都可以用SVN来管理。比如程序员编程、美工做图、翻译、异地监控工作进度,可以说SVN不仅在软件工程领域发挥重大作用,在其他行业也用重要用途。例如两个人合作翻译一本书、几个人设计一个工程图纸,svn不仅可以让你的工作恢复以前的状 阅读全文
posted @ 2012-06-24 01:21 刺猬的温驯 阅读(309) 评论(0) 推荐(0) 编辑

摘要:Nexus简介Nexus是Sonatype推出的强大Maven仓库管理器产品,要比以前TSS上介绍的Artifactory要好使用的多,也是一个拆箱即用的Java App,内嵌Jetty容器和Java Wrapper做Windows服务,安装简单到解压然后双击install即可。更详细的帮助手册请上官方网站查看,这里推荐一个翻译中的书籍——《Maven权威指南》(在线阅读英文版,中文版),一本全面介绍Maven的书,其中也有介绍Nexus的章节,猛击这。Nexus的优点这里得啰嗦一下(摘抄自Maven中文Blog):代理远程仓库。配置Nexus代理中央仓库,其它任何公开的Maven仓库,将你组 阅读全文
posted @ 2012-06-24 00:57 刺猬的温驯 阅读(631) 评论(0) 推荐(0) 编辑

摘要:一个团队要真正用好Maven,repository私服是免不了的,否则team mate们多好奇的目光,都会全部消耗在漫长的jar下载中。 以前介绍过一个搭建私服的简朴但很笨的办法--将雷锋同志下载好的.m2/repository目录整个上传到任意的Web服务器中。其实世上多的是专业的maven私服搭建器,见TheServiceSide的文章--Setting Up a Maven Repository。 我用的是Artifactory,忽然间觉得,Java的服务应用啥时候终于变得这么好用了,什么都不用装,不用配,双击artifactory.bat,自己就会启动Jetty Web服务器,典型的 阅读全文
posted @ 2012-06-24 00:46 刺猬的温驯 阅读(2212) 评论(0) 推荐(0) 编辑

摘要:今天在创建一个新的Maven项目时,在其中添加了很多依赖。刚开始为了避免错误就每添加一次,保存一下,Eclipse就会下载相应的包。最后为了加快速度就把剩下的包全部添加了,再次保存就出现了Missing artifact错误,就连以前正常的包也出现了这个问题。 于是一个个删除新添加的依赖,当删除了一个叫做quartz-all的依赖后,一切都正常了。然后把其他依赖都添加上,也是正常的。于是去本地的repository查看quartz-all的详细信息,发现里面只有一个quartz-all.jar,而其他目录同时还包含一个相应的pom文件。初步判定是这里的问题。然后去远程的仓库查看,也没有pom. 阅读全文
posted @ 2012-06-24 00:37 刺猬的温驯 阅读(596) 评论(0) 推荐(0) 编辑

摘要:在开发过程中,有时候会使用到公司内部的一些开发包,显然把这些包放在外部是不合适的。另外,由于项目一直在开发中,这些内部的依赖可能也在不断的更新。可以通过搭建公司内部的Maven服务器,将第三方和内部的依赖统一管理。这里使用Nexus来搭建本地的Maven服务器,过程比较简单。一、安装服务器1、下载我们可以在nexus的官网上找到它的相关介绍,下载地址是:http://nexus.sonatype.org/downloads/,在这里可以找到最新的版本,如果需要以前的版本,在官网上应该也可以找到下载地址。我下载的是:nexus-oss-webapp-1.8.0-bundle.tar.gz。关于. 阅读全文
posted @ 2012-06-24 00:36 刺猬的温驯 阅读(236) 评论(0) 推荐(0) 编辑

摘要:(接上篇)在新创建了项目之后,可以看到目录结构: 从图中可以看出,Maven自动将项目源文件和测试用例分别放到了不同的目录下,但是却使用了相同的包名。这样生成可执行的产品时,就比较容易将产品代码和测试代码隔离开;同时测试用例也可以直接引用同一包中被测试的类,既符合了JUnit的规范,也使程序更易读。 正如上图中标示,新建项目的JRE默认为J2SE-1.4,这会导致1.5之后的一些新特性得不到支持。可以通过下面的方法修改:2、使用Maven管理依赖在以往的开发中,我一般都会把用到的依赖都放到一个文件夹下,需要什么就像里面添加什么,然后和源文件一同放入到SVN中。其他开发人员在检出项目时会把这些包 阅读全文
posted @ 2012-06-24 00:35 刺猬的温驯 阅读(193) 评论(0) 推荐(0) 编辑

摘要:写在前面 自从参加了4月份的QCon以后,持续集成的念头一直在脑海中浮现。时隔四个月之后,终于有了实践的机会。在此,首先应该感谢头儿们的大力支持。记得参加Scrum的培训时,最开始提到的一个障碍就是来自上层。因为上层希望看到的是实实在在的成果,如果现有的开发模式和质量管理系统已经有了比较好的效果,他们就不太愿意尝试新的模式。而这次正是有了头儿们的理解和支持,我才能放开手脚、“无所顾忌”地尝试这些新手段。其次,应该感谢我的天才同事们。因为,每次即使小小的改动都会给他们的开发带来一些不便,但是他们都会毫无抱怨地接受,并且总能给出一些我意想不到的想法,帮助我不断地改善这个系统。虽然当前的CI系统还存 阅读全文
posted @ 2012-06-24 00:34 刺猬的温驯 阅读(245) 评论(0) 推荐(0) 编辑

摘要:Spring mvc 目前支持5个tag,分别是 mvc:annotation-driven,mvc:interceptors,mvc:view-controller, mvc:resources和mvc:default-servlet-handlermvc:annotation-driven注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,及一系列缺省的messageconverter(需要classpath中有相应的lib包的支持。) 相当于以下配置的效果【mvc:annotation-driven 阅读全文
posted @ 2012-06-24 00:14 刺猬的温驯 阅读(493) 评论(0) 推荐(0) 编辑

摘要:Lucene通过Spatial包提供了对基于地理位置的全文检索的支持,最典型的应用场景就是:“搜索中关村附近1公里内的火锅店,并按远近排序”。使用Lucene-Spatial添加对地理位置的支持,和之前普通文本搜索主要有两点区别: 1. 将坐标信息转化为笛卡尔层,建立索引[java]view plaincopyprint?privatevoidindexLocation(Documentdocument,JSONObjectjo)throwsException{doublelongitude=jo.getDouble("longitude");doublelatitude= 阅读全文
posted @ 2012-06-23 23:36 刺猬的温驯 阅读(514) 评论(0) 推荐(0) 编辑

摘要:简介:不管是通过支持 GPS 的智能手机查找最近的咖啡馆,还是通过社交站点查找附近的朋友,或是查看特定城市中运输某种商品的所有货车,越来越多的人和企业都使用位置感知的搜索服务。创建位置感知搜索服务通常属于昂贵的专用解决方案的一部分,并且一般由地理空间专家完成。不过,很流行的开源搜索库 Apache Lucene 和强大的 Lucene 搜索服务器 Apache Solr 最近添加了空间位置功能。Lucene 和 Solr 专家 Grant Ingersoll 将逐步向您介绍空间搜索的基础知识,并演示如何利用这些功能来增强您的下一个位置感知应用程序。地理位置在空间搜索中至关重要!地理位置不仅在地 阅读全文
posted @ 2012-06-23 23:30 刺猬的温驯 阅读(1316) 评论(0) 推荐(0) 编辑

摘要:两个比较稳定的maven mirror <mirror> <id>jboss-public-repository-group</id> <mirrorOf>central</mirrorOf> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public</url> </mirror> <mirror> <id&g 阅读全文
posted @ 2012-06-23 11:34 刺猬的温驯 阅读(28588) 评论(2) 推荐(0) 编辑

摘要:最近学习Maven,发现其真的很强大,所以学一点也记一点。使用Maven的最大好处在于:生成工程骨架和管理JAR包依赖。Maven自带了很多的工程骨架,想自定义骨架可以使用交互式命令:Xml代码mvnarchetype:generate我的是Maven 2.2.1版本,系统自带的骨架一共有41个:Xml代码1:internal->appfuse-basic-jsf(AppFusearchetypeforcreatingawebapplicationwithHibernate,SpringandJSF)2:internal->appfuse-basic-spring(AppFusea 阅读全文
posted @ 2012-06-23 11:07 刺猬的温驯 阅读(689) 评论(0) 推荐(0) 编辑

摘要:一.背景Maven2 的基本原理很简单,采用远程仓库和本地仓库以及 pom(project object model).xml ,将 pom.xml 中定义的 jar 文件从远程仓库下载到本地仓库,各个应用使用同一个本地仓库的 jar ,同一个版本的 jar 只需下载一次,而且避免每个应用都去拷贝 jar 。如图 1 。同时它采用了现在流行的插件体系架构,只保留最小的核心,其余功能都通过插件的形式提供,所以在执行 maven 任务时,才会自动下载需要的插件。这个特性也为客户系统的升级带来的很大的方便,客户每次升级的时候可以使用maven的远程部署功能自动下载最新的系统组件(jar),并重新打包 阅读全文
posted @ 2012-06-23 11:02 刺猬的温驯 阅读(383) 评论(0) 推荐(0) 编辑

摘要:环境:Ubuntu 8.10, tomcat6, mave2maven2有一个把web应用部署到tomcat下的插件 tomcat-maven-plugin , 我们可以使用这个插件把web应用一键式的部署到一个远程的tomcat中。插件的url: http://mojo.codehaus.org/tomcat-maven-plugin/1、要打开tomcat的manager功能这里要注意的问题是,如果你的web应用使用了虚拟主机,如www.test.com,那么你需要把manager在www.test.com下也部署一个。虚拟主机和应用的部署这里就不说明了。访问: http://www.te 阅读全文
posted @ 2012-06-23 10:38 刺猬的温驯 阅读(274) 评论(0) 推荐(0) 编辑

摘要:aven 2.0.9版本,JDK 1.5.012,Eclipse 3.4版本,在使用maven打包时,经常会报GBK编码不支持,重新clean一下项目,然后再maven clean一下,基本上都能解决这个问题,但这个总归不是一个彻底的解决办法,最后查了一下maven,终于找到解决办法:Pom.xml中配置了编译插件:?123456789101112131415<plugin><artifactId>maven-compiler-plugin</artifactId><version>2.0.2</version><configu 阅读全文
posted @ 2012-06-23 10:29 刺猬的温驯 阅读(299) 评论(0) 推荐(0) 编辑

摘要:软件版本:maven 2.2 tomcat 6.0,Eclipse 3.4首先是建立环境,tomcat、maven、m2eclipse都不说了,这不配好,剩下的你也别看了。都准备好了,那我们就一步一步的开始了。管理自己的tomcat.到tomcat的安装目录中,F:\J2EE\apache-tomcat-6.0.24\conf在其中增加一个用户定义,默认是没有用户的,结果如下:?12345<tomcat-users><user username="admin" password="password" roles="manage 阅读全文
posted @ 2012-06-23 10:27 刺猬的温驯 阅读(359) 评论(0) 推荐(0) 编辑

摘要:简介:持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。本文正是从持续集成的基本概念入手,通过具体实例,介绍了如何基于 Jenkins 快速搭建持续集成环境。持续集成概述什么是持续集成随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题。尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火,如何能再不断变化的需求中快速适应和保证软件的质量也显得尤其的重要。持续集成正是针对这一类问题的一种软件开发实践。它 阅读全文
posted @ 2012-06-22 14:22 刺猬的温驯 阅读(1263) 评论(0) 推荐(0) 编辑

摘要:最近雷镇同学将Martin Fowler先生的著名论文《持续集成》第二版翻译成中文并发布出来,掀起了国内对于持续集成理论和实践讨论的新的高潮。笔者在本文中将全面对比持续集成论文前后两版的异同,分析并展示ThoughtWorks在持续集成领域的理论和实践方面的研究成果,以图对国内企业实施持续集成起到参考和借鉴作用。需要说明的是,本文所介绍的内容毕竟限于笔者的水平,并且主要是ThoughtWorks内部开发和对外咨询实践的总结,所以未必对读者所遇到的情况是适用的,请自行甄别。《持续集成》第二版虽然是最近才翻译出来,但是实际上Martin Fowler先生完成此文是在5年前的事情。这五年恰好是Tho 阅读全文
posted @ 2012-06-22 13:24 刺猬的温驯 阅读(215) 评论(0) 推荐(0) 编辑

摘要:去年10月份Apache Maven发布了3.0正式版,而在上个月的22号,Eclipse基金会宣布了Eclipse 3.7(Indigo)的发布,该版本Eclipse最大的新特性之一就是集成了Maven。下载Eclipse IDE for Java Developers版本的用户会发现,Eclipse已经能够自动识别Maven项目了。Indigo中内置的Maven版本是3.0.2,这在一定程度上说明Maven 3已经非常稳定了。不过我相信一定还有很多Maven 2用户在犹豫是否升级,本文会介绍一些Maven 3最重要的特性,旨在帮助读者扫除疑虑,尽早享受Maven 3所能带来的各种便利。确保 阅读全文
posted @ 2012-06-22 13:18 刺猬的温驯 阅读(273) 评论(0) 推荐(0) 编辑

摘要:“打包“这个词听起来比较土,比较正式的说法应该是”构建项目软件包“,具体说就是将项目中的各种文件,比如源代码、编译生成的字节码、配置文件、文档,按照规范的格式生成归档,最常见的当然就是JAR包和WAR包了,复杂点的例子是Maven官方下载页面的分发包,它有自定义的格式,方便用户直接解压后就在命令行使用。作为一款”打包工具“,Maven自然有义务帮助用户创建各种各样的包,规范的JAR包和WAR包自然不再话下,略微复杂的自定义打包格式也必须支持,本文就介绍一些常用的打包案例以及相关的实现方式,除了前面提到的一些包以外,你还能看到如何生成源码包、Javadoc包、以及从命令行可直接运行的CLI包。P 阅读全文
posted @ 2012-06-22 13:14 刺猬的温驯 阅读(344) 评论(0) 推荐(0) 编辑

摘要:我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的。进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven- compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码。用户可以通过两种方式调用Maven插件目标。第一种方式是将插件目标与生命周期阶段(lifecycle phase)绑定,这样用户在命令 阅读全文
posted @ 2012-06-22 13:05 刺猬的温驯 阅读(248) 评论(0) 推荐(0) 编辑

摘要:我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven-compiler-plugin完成的。进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven-compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码。用户可以通过两种方式调用Maven插件目标。第一种方式是将插件目标与生命周期阶段(lifecycle phase)绑定,这样用户在命令行只 阅读全文
posted @ 2012-06-22 13:03 刺猬的温驯 阅读(271) 评论(0) 推荐(0) 编辑

摘要:Maven面临的挑战软件行业新旧交替的速度之快往往令人咂舌,不用多少时间,你就会发现曾经大红大紫的技术已经成为了昨日黄花,当然,Maven也不会例外。虽然目前它基本上是Java构建的事实标准,但我们也能看到新兴的工具在涌现,比如基于Goovy的Gradle,而去年Hibernate宣布从Maven迁移至Gradle这一事件更是吸引了不少眼球。在此之前,我也听到了不少对Maven的抱怨,包括XML的繁冗,不够灵活,学习曲线陡峭等等。那Gradle是否能够在继承 Maven优点的基础上,克服这些缺点呢?带着这个疑问,我开始阅读Gradle的文档并尝试着将一个基于Maven的项目转成用Gradle构 阅读全文
posted @ 2012-06-22 12:55 刺猬的温驯 阅读(491) 评论(0) 推荐(0) 编辑

摘要:自动化集成测试的角色本专栏的上一篇文章讲述了Maven与持续集成的一些关系及具体实践,我们都知道,自动化测试是持续集成必不可少的一部分,基本上,没有自动化测试的持续集成,都很难称之为真正的持续集成。我们希望持续集成能够尽早的暴露问题,但这远非配置一个 Hudson/Jenkins服务器那么简单,只有真正用心编写了较为完整的测试用例,并一直维护它们,持续集成才能孜孜不倦地运行测试并第一时间报告问题。自动化测试这个话题很大,本文不想争论测试先行还是后行,这里强调的是测试的自动化,并基于具体的技术(Maven、 JUnit、Jetty等)来介绍一种切实可行的自动化Web应用集成测试方案。当然,自动化 阅读全文
posted @ 2012-06-22 12:52 刺猬的温驯 阅读(340) 评论(0) 推荐(0) 编辑

摘要:相信很多读者和我一样,最早接触到持续集成的概念是来自Martin的著名文章《持续集成》,该文最早发布于2000年9月,之后在2006年进行了一次修订,它清晰地解释了持续集成的概念,并总结了10条实践,它们分别为:只维护一个源码仓库自动化构建让构建自行测试每人每天向主干提交代码每次提交都应在持续集成机器上构建主干保持快速的构建在模拟生产环境中测试让每个人都能轻易获得最新的可执行文件每个人都能看到进度自动化部署原始文章距今已10年有余,这在软件行业中算是很长的时间了,但我们都能看到Martin总结的这些实践依旧闪耀着光芒,依旧有很多团队在努力实践它们并得到了丰厚的回报,当然也有很多团队因为各种原因 阅读全文
posted @ 2012-06-22 12:49 刺猬的温驯 阅读(245) 评论(0) 推荐(0) 编辑

摘要:作者:Martin Fowler 译者:滕云原文发布时间:2006年5月1日 翻译时间:2012年2月25日原文链接:http://www.martinfowler.com/articles/continuousIntegration.html(此翻译已获原作者同意,事实上你不必这么做的,但请参考此FAQ中相关条款) 持续集成是一种软件开发实践,在实践中项目成员频繁地进行集成,通常每个成员每天都会做集成工作,如此,每天整个项目将会有多次集成。每次集成后都会通过自动化构建(包括测试)来尽快发现其中的错误。许多团队都发现这种方法大大地减少了集成问题并且能够快速地开发出高内聚性的软件。本文简要... 阅读全文
posted @ 2012-06-22 12:40 刺猬的温驯 阅读(223) 评论(0) 推荐(0) 编辑

摘要:在本专栏的上一篇文章POM重构之增还是删中,我们讨论了一些简单实用的POM重构技巧,包括重构的前提——持续集成,以及如何通过添加或者删除内容来提高POM的可读性和构建的稳定性。但在实际的项目中,这些技巧还是不够的,特别值得一提的是,实际的Maven项目基本都是多模块的,如果仅仅重构单个POM而不考虑模块之间的关系,那就会造成无谓的重复。本文就讨论一些基于多模块的POM重构技巧。重复,还是重复程序员应该有狗一般的嗅觉,要能嗅到重复这一最常见的坏味道,不管重复披着怎样的外衣,一旦发现,都应该毫不留情地彻底地将其干掉。不要因为POM不是产品代码而纵容重复在这里发酵,例如这样一段代码就有重复:< 阅读全文
posted @ 2012-06-22 12:23 刺猬的温驯 阅读(264) 评论(0) 推荐(0) 编辑

摘要:重构是广大开发者再熟悉不过的技术,在Martin Fowler的《重构——改善既有代码的设计》一书中,其定义为“重构(名词):对软件内部结构的一种调整,目的是在不改变软件之可察行为前提下,提高其可理解性,降低其修改成本.”以及“重构(动词):使用一系列重构准则(手法),在不改变软件之可察行为前提下,调整其结构.”。重构能够改善软件设计,使代码更易读,更容易找出bug,并帮助你更快速地编码。较之于一般的代码来说,Maven的POM简单很多,不过随着项目的成长,模块的增多,POM的内容也会变多,这个时候,我们可以对POM进行重构,在保持构建成功的前提下,简化POM内容,使其更简洁易懂。前提大家都知 阅读全文
posted @ 2012-06-22 10:48 刺猬的温驯 阅读(258) 评论(0) 推荐(0) 编辑

摘要:坐标是什么?为什么要规划?坐标是Maven最基本的概念,它就像每个构件的身份证号码,有了它我们就可以在数以千万计的构件中定位任何一个我们感兴趣的构件。举个最简单的例子,如果没有坐标,使用JUnit的时候,用户就需要去下载依赖jar包,用依赖的方式,简单配置使用如junit:junit:4.8.2就可以了。这里第一个junit是groupId,第二个junit是artifactId,4.8.2是version。Maven的很多其他核心机制都依赖于坐标,其中最显著的就是仓库和依赖管理。对于仓库来说,有了坐标就知道在什么位置存储构件的内容,例如junit:junit:4.8.2就对应仓库中的路径/j 阅读全文
posted @ 2012-06-22 10:36 刺猬的温驯 阅读(294) 评论(0) 推荐(0) 编辑

摘要:简介:尽管 Ant 对于构建 Java 程序而言是事实上的标准工具,但这个工具在许多方面都不胜任项目管理任务。相反,Ant 提供的东西,Maven(出自 Apache Jakarta 项目的高级项目管理工具)都能提供,而且更多。Java 开发人员 Charles Chan 将介绍 Maven 的特性,并循序渐进地指导您进行一次完整的 Maven 项目设置。目前,绝大多数开发人员都把 Ant 当作 Java 编程项目的标准构建工具。遗憾的是,Ant 的项目管理工具(作为make的替代工具)不能满足绝大多数开发人员的需要。通过检查 Ant 构建文件,很难发现项目的相关性信息和其它元信息(如开发人员 阅读全文
posted @ 2012-06-21 12:42 刺猬的温驯 阅读(261) 评论(0) 推荐(0) 编辑

摘要:Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。概述:对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又是执行最基础工作的劳动人民——拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。对于Java程序员来说,不需要在为每一个new操作去写配对的delete/free,不容易出现内容泄漏和内存溢出错误,看起来由JVM管理内存一切都很美好。不过,也正是因为Java程序员把内存控制的权力交给了JVM,一旦出现泄漏和溢出,如果不了解JVM是怎样使用内存的,那排查错误将会是一件非常困难的事 阅读全文
posted @ 2012-06-21 09:10 刺猬的温驯 阅读(257) 评论(0) 推荐(0) 编辑

摘要:Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。概述: 说起垃圾收集(Garbage Collection,下文简称GC),大部分人都把这项技术当做Java语言的伴生产物。事实上GC的历史远远比Java来得久远,在1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期,人们就在思考GC需要完成的3件事情:哪些内存需要回收?什么时候回收?怎么样回收? 经过半个世纪的发展,目前的内存分配策略与垃圾回收技术已经相当成熟,一切看起来都进入“自动化”的时代,那为什么我们还要去了解GC和内存分配.. 阅读全文
posted @ 2012-06-21 09:09 刺猬的温驯 阅读(194) 评论(0) 推荐(0) 编辑

摘要:1 Java技术与Java虚拟机说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图所示:图1 Java四个方面的关系运行期环境代表着Java... 阅读全文
posted @ 2012-06-21 09:06 刺猬的温驯 阅读(340) 评论(0) 推荐(0) 编辑

摘要:下面是使用JXM协议配置的简单的操作步骤,详细内容可以阅读文章后的参考资料。1.远程主机(1)修改JMX服务的配置文件: 在JDK的根目录/jre/lib/management中,将jmxremote.password.template另存为jmxremote.password。用文件编辑软件按编辑jmxremote.password去掉 # monitorRole QED # controlRole R&D 前面的#注释,保存。 如果当前系统属于AIX、Linux或者Solaris系统还需要更改jmxremote.access和jmxremote.password的权限为只读写,命. 阅读全文
posted @ 2012-06-21 08:53 刺猬的温驯 阅读(7606) 评论(0) 推荐(0) 编辑

摘要:为了解决RCP客户端与后台业务层交互的问题,我找到了Spring提供的Http Invoker。给我的感觉就是:不用知道,一用吓一跳,居然会如此简单!为了确保文章简明性和程序的可运行性,我抽出了Http Invoker的基本框架,做了一个简单的演示程序来演示Http Invoker的工作过程(附源代码)。About Http InvokerSpring开发小组意识到在RMI服务和基于HTTP的服务(如Hessian和Burlap)之间的空白。一方面,RMI使用Java标准的对象序列化,但很难穿越防火墙;另一方面,Hessian/Burlap能很好地穿过防火墙工作,但使用自己私有的一套对象序列化 阅读全文
posted @ 2012-06-20 08:55 刺猬的温驯 阅读(851) 评论(0) 推荐(0) 编辑

摘要:Http Invoker使用HTTP传送物件,传送时使用Java的序列化机制来传送,由于透过HTTP传送,所以 在使用它们时要搭配Spring Web框架来使用,也就是使用到DispatcherServlet,可以改写 Hessian、 Burlap,只要修改一下service‐config.xml就可以了:• service‐config.xml<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"& 阅读全文
posted @ 2012-06-20 08:34 刺猬的温驯 阅读(483) 评论(0) 推荐(0) 编辑

摘要:RMI (Remote Method Invocation)是从 JDK 1.1 开始就出现的 API 功能,它让客户端在使用远 端物件所提供的服务时,就如何使用本地物件一样,然而 RMI 在使用时必须一连串繁复的手续, 像是服务介 面在定义时必须继承 java.rmi.Remote 介面、服务 Server 在实作时必须继承 java.rmi.UnicastRemoteObject 类 别、必须使用 rmic 指令产生 stub 与 skeleton 等,设定上 手续繁杂。您可以在 Spring 中透过 org.springframework.remoting.rmi.RmiServiceE 阅读全文
posted @ 2012-06-20 08:33 刺猬的温驯 阅读(333) 评论(0) 推荐(0) 编辑

摘要:Hessian、Burlap是由Caucho Technology(http://www.caucho.com/)所提出,透过HTTP实现的远 程服务。 Hessian是将物件以中性的二进位讯息使用HTTP进行传送,而不若RMI使用Java的序列化格式,由 于该二进位讯息是中性的,因此不受限于某种程式语言所实现的客户端或伺服端,二进位资料在 传输时所需的频宽较小是其优点。Burlap则是将物件以XML文件格式进行传送,XML文件且有较高的可读性,只要应用程式可以剖 析XML文件就可以解读所接收的讯息,当然也不受限于某种语言所实现的客户端与伺服端。在Spring中使用Hessian及Burlap 阅读全文
posted @ 2012-06-20 08:26 刺猬的温驯 阅读(1047) 评论(0) 推荐(0) 编辑

摘要:Spring框架对远程访问技术提供了很好的集成机制,Spring目前支持的技术包括:1. Remote Method Invocation (RMI)。通过 RmiProxyFactoryBean和RmiServiceExporter,Spring支持以java.rmi.Remote和java.rmi.RemoteException 定义的传统RMI接口,提供经由RMI的透明访问;2.Spring内置的HTTP invoker远程调用机制。Spring开发团队意识到在RMI服务和基于HTTP的服务(如Hessian和Burlap)之间的空白。一方面,RMI使用Java标准的对象序列化,但很难穿 阅读全文
posted @ 2012-06-20 08:19 刺猬的温驯 阅读(311) 评论(0) 推荐(0) 编辑

摘要:Java远程通讯可选技术及原理在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了,在这篇blog中我们将来一探究竟,抛砖引玉,欢迎大家提供更多的实现远程通讯的技术和原理的介绍。基本原理要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面去看,网络通信需 阅读全文
posted @ 2012-06-20 08:04 刺猬的温驯 阅读(443) 评论(0) 推荐(0) 编辑

摘要:今天用spring的rmi,启动似乎不注册rmi服务。最后手工的加载bean,成了。 晕,在配置头的时候设置default-lazy-init="true",延迟加载的说。 顺便贴代码 服务器端配置文件<!--服务--><beanid="myService"class="org.spring.rmi.yoara.MyServiceImpl"/><!--RmiServiceExporter此类封装了生成stub的方法,大大简化代码--><beanid="serviceExporter& 阅读全文
posted @ 2012-06-20 07:38 刺猬的温驯 阅读(1764) 评论(0) 推荐(0) 编辑

摘要:Hessian和Burlap都是基于HTTP的,解决了RMI头疼的防火墙问题。并且它们都是非常轻量级的,足以在内存或空间受限制的环境下使用,例如applet和无线设备。 Hessian是基于二进制码的传输方式,Burlap是基于XML的传输方式,前者在网络传输的上具有优势,后者在没有实现Hessian(JAVA)语言或可读性上更具优势。 废话不多,最关心的是怎么配置,既然有spring做框架,就舍弃配置繁琐的纯Hessian和Burlap的方式。这两者的配置方式是大同小异的。需要导入两个包dist/modules/spring-webmvc.jar和/lib/caucho/hessian.j. 阅读全文
posted @ 2012-06-20 07:34 刺猬的温驯 阅读(1424) 评论(0) 推荐(0) 编辑

摘要:SpringFramework中有对RMI,Hessian,Burlap,JAX-RPC,JAX-WS.JMS的服务支持,更方便的用于开发异构的服务系统,自身也有HTTPinvoker技术提供远端服务.以下示例来自SpringFramework-doc文档, 我们先建立用于测试的实体、服务接口类: publicclassAccountimplementsSerializable{privateStringname;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}}publicinte 阅读全文
posted @ 2012-06-19 23:07 刺猬的温驯 阅读(4407) 评论(0) 推荐(0) 编辑

摘要:转载自 http://www.iteye.com/topic/908016 一 前言 工作环境中,大部分功能,都是基于服务(SOA模式)的,因此用到了rmi.使用他的目的就是让分布式的开发变的简单,同时提高了项目的扩展性,可维护性,可读性. rmi有很多种,例如:1)远程方法调用(RMI)2)Spring自己的HTTP invoker3)EJB4)Web Services......本文选择了spring的rmi接口进行分布式开发应用.具体用哪种rmi,我们还需要深入的挖掘.本文不作讨论. 至于具体哪里简单呢?需要朋友们深入了解java的远程方法调用(RMI).服务端的接口要继承java.rm 阅读全文
posted @ 2012-06-19 23:02 刺猬的温驯 阅读(367) 评论(0) 推荐(0) 编辑

摘要:在成功的将hessian server端也和spring结合后,从整个分布式应用的架构可以看出,无论是服务端与客户端共有的业务接口,还是服务端业务实现类,以及客户端访问远程服务的应用代码里,已经没有一行关于远程操作的代码了。也就是spring让我们的分布式业务开发完全无关于远程访问协议了,这样我们就可以埋头开发服务端和客户端的业务接口、实现、应用等等,二不必关心远程调用究竟要怎么实现。很明显,这也是AOP(面向方面的编程)的一个比较完美的应用,它使远程访问接口和业务逻辑完全无耦合的分开了。设想一下,如果某天我们有需要,远程访问的接口要从rmi、jax-rpc、hessian、httpinvok 阅读全文
posted @ 2012-06-19 22:43 刺猬的温驯 阅读(718) 评论(0) 推荐(0) 编辑

摘要:最近一期的《programmer》里几乎从头至尾在讲关于“J2EE without EJB”的事情,可怜的ejb啊,居然被描述成了遗产系统的重要组成部分。。。其实有上面的结论,无外乎现在java里面的新技术已经几乎能完全取代ejb的优点,而克服ejb的缺点,entity bean和有状态的session bean已经机乎被视为垃圾,hibernate和spring大行其到,看看最进n期《programmer》中篇幅的比重就知道了。本来我个人的感觉是hibernate取代了entity bean,spring取代了session bean,但是ejb的远程调用用hibernate和spring的 阅读全文
posted @ 2012-06-19 22:42 刺猬的温驯 阅读(470) 评论(0) 推荐(0) 编辑

摘要:一、简介 Hessian是一个由Caucho Technology开发的轻量级二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。下面以hessian-3.0.20版本为例演示如何将Hessian整合到Spring中。二、配置详解 1、在web.xml中的配置Xml代码<context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/config/applicationContext.xml,/WEB-INF/Hessian-s 阅读全文
posted @ 2012-06-19 22:32 刺猬的温驯 阅读(3998) 评论(0) 推荐(0) 编辑

摘要:简介相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议(Binary),因为采用的是二进制协议,所以它很适合于发送二进制数据。Hessian通常通过Web应用来提供服务,因此非常类似于WebService。只是它不使用SOAP协议。Hessian通过Servlet提供远程服务。需要将匹配某个模式的请求映射到Hessian服务。Spring的DispatcherServlet可以完成该功能,DispatcherServlet可将匹配模式的请求转发到Hessian服务。Hessian的server端提供一个servlet基类, 用来处理发送的请求,而Hessian的这个 阅读全文
posted @ 2012-06-19 22:08 刺猬的温驯 阅读(337) 评论(1) 推荐(0) 编辑

摘要:Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。 三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时. 阅读全文
posted @ 2012-06-18 18:15 刺猬的温驯 阅读(178) 评论(0) 推荐(0) 编辑

摘要:刚接触web service,好不容易找到一篇spring-ws的例子,还琢磨了好长一段时间,很多概念性的问题都没弄清楚。只能依葫芦画瓢,照搬过来,稍微修改了一下,使结构更加清晰,原文出自http://fuxueliang.javaeye.com/blog/175184#。 基本环境: JDK6、Tomcat 6.0、MyEclipse 6.6、spring 2.0、spring-ws-1.5.51、spring-ws-servlet.xml这个地方出现了一段插曲,hello.wsdl放在WEB-INF下老是报错,说hello.wsdl找不到,后来放到classpath下才OK。 创建一个.. 阅读全文
posted @ 2012-06-14 17:48 刺猬的温驯 阅读(2361) 评论(2) 推荐(0) 编辑

摘要:四种操作xml的方式: SAX, DOM, JDOM ,DOM4J1. 介绍1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准。DOM是以层次结构组织的节点或信息片断的集合。这个层次结构允许开发人员在树中寻找特定信息。分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作。由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的。DOM以及广义的基于树的处理具有几个优点。首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改。它还可以在任何时候在树中上下导航,而不是像SAX那样是一次性的处理。DO. 阅读全文
posted @ 2012-06-14 16:49 刺猬的温驯 阅读(182) 评论(0) 推荐(0) 编辑

摘要:事实上网络编程简单的理解就是两台计算机相互通讯数据而已.对于程序员而言,去掌握一种编程接口并使用一种编程模型相对就会显得简单的多了.Java SDK提供一些相对简单的Api来完成这些工作.Socket就是其中之一.对于Java而言.这些Api存在与java.net 这个包里面.因此只要导入这个包就可以准备网络编程了. 网络编程的基本模型就是客户机到服务器模型.简单的说就是两个进程之间相互通讯,然后其中一个必须提供一个固定的位置,而另一个则只需要知道这个固定的位置.并去建立两者之间的联系..然后完成数据的通讯就可以了.这里提供固定位置的通常称为服务器,而建立联系的通常叫做客户端.基于这个简单的模 阅读全文
posted @ 2012-06-14 12:05 刺猬的温驯 阅读(266) 评论(0) 推荐(0) 编辑

摘要:memcached是什么? memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 为首开发的一款软件。现在已成为 mixi、 hatena、 Facebook、 Vox、LiveJournal等众多服务中 提高Web应用扩展性的重要因素。 许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。 但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、 网站显示延迟等重大影响。 这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。 一... 阅读全文
posted @ 2012-06-14 02:30 刺猬的温驯 阅读(332) 评论(0) 推荐(0) 编辑

摘要:上一篇文章讨论了Redis的常用数据类型与存储机制,本文会讨论一下Redis的复制功能以及Redis复制机制本身的优缺点以及集群搭建问题。 Redis复制流程概述Redis的复制功能是完全建立在之前我们讨论过的基于内存快照的持久化策略基础上的,也就是说无论你的持久化策略选择的是什么,只要用到了Redis的复制功能,就一定会有内存快照发生,那么首先要注意你的系统内存容量规划,原因可以参考我上一篇文章中提到的Redis磁盘IO问题。Redis复制流程在Slave和Master端各自是一套状态机流转,涉及的状态信息是:Slave 端:REDIS_REPL_NONEREDIS_REPL_CONNECT 阅读全文
posted @ 2012-06-14 02:16 刺猬的温驯 阅读(1723) 评论(0) 推荐(0) 编辑

摘要:上一篇Redis文章对其适用场景与特点进行了一个概括的分析,本文将对Redis的常见数据类型的使用场景以及在内存优化方面和性能优化方面做一些详细的分析。 Redis常用数据类型Redis最为常用的数据类型主要有以下五种:StringHashListSetSorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存管理中是如何描述这些不同数据类型的:首先Redis内部使用一个redisObject对象来表示所有的key和value,redisObject最主要的信息如上图所示:type代表一个value对象具体是何种数据类型,encoding是不同数据类型在red 阅读全文
posted @ 2012-06-14 02:12 刺猬的温驯 阅读(653) 评论(1) 推荐(1) 编辑

摘要:传统MySQL+ Memcached架构遇到的问题实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。 Memcached与MySQL数据库数据一致性问题。 Memcached数据命中率低或down机,大量访问直接穿透到DB,MySQL无法支撑。 跨机房cache同步问题。 众多NoSQL百花齐放,如何选择最近几年,业界不断... 阅读全文
posted @ 2012-06-14 02:09 刺猬的温驯 阅读(319) 评论(0) 推荐(0) 编辑

摘要:本文主要介绍Rest风格的Web Services。1.什么是REST?REST 是由 Roy Fielding 在他的论文《Architectural Styles and the Design of Network-based Software Architectures》中提出的一个术语。REST 是英文 Representational State Transfer 的缩写,有中文翻译为“具象状态传输”(参考:《SIP/IMS网络中的Representational State Transfer (REST)和数据分布》)。可以将REST归纳如下:1.1首先REST只是一种风格,不是一 阅读全文
posted @ 2012-06-12 11:17 刺猬的温驯 阅读(265) 评论(0) 推荐(0) 编辑

摘要:一种思维方式影响了软件行业的发展。REST软件架构是当今世界上最成功的互联网的超媒体分布式系统。它让人们真正理解我们的网络协议HTTP本来面貌。它正在成为网络服务的主流技术,同时也正在改变互联网的网络软件开发的全新思维方式。AJAX技术和Rails框架把REST软件架构思想真正地在实际中很好表现出来。今天微软也已经应用REST并且提出把我们现有的网络变成为一个语义网,这种网络将会使得搜索更加智能化。 REST与HTTP协议 REST软件架构是由Roy Thomas Fielding博士在2000年首次提出的。他为我们描绘了开发基于互联网的网络软件的蓝图。REST软件架构是一个抽象的概念,是一种 阅读全文
posted @ 2012-06-12 11:11 刺猬的温驯 阅读(193) 评论(0) 推荐(0) 编辑

摘要:HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。本文首先介绍 HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。HttpClient简介HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功 阅读全文
posted @ 2012-06-08 00:38 刺猬的温驯 阅读(212) 评论(0) 推荐(0) 编辑

摘要:这篇文章原作者不知何故,在几个关键点上一笔带过,想要让例子运行起来,得费自己好大功夫才能搞定,去年我搞好了一次,没记博客,结果服务器不知怎么原来东西没了,这次我是花了2天时间搞定的,记下来一是为自己备忘,也希望能帮助那些还在苦闷的同行者。1:Taste 的安装与简单的 Demo 实现这一部分还是写的比较好的,基本按照文档操作就能看到结果2:使用 Taste 构建推荐引擎实例 – 电影推荐引擎这一部分就比较头痛了,我也无法一一详细描述,中间有很多困难之处。首先从原文下载作者提供的代码,导入到eclipse,我的eclipse是Eclipse Java EE IDE for Web Develop 阅读全文
posted @ 2012-06-08 00:21 刺猬的温驯 阅读(300) 评论(0) 推荐(0) 编辑

摘要:Web 2.0 的一个核心思想就是“群体智慧”,即基于大众行为,为每个用户提供个性化的推荐。这使得如何让用户能更快速更准确的获得所需要的信息,成为了 Web 应用成败的关键。Apache Mahout 是 ASF(Apache Software Foundation)的一个较新的开源项目,提供机器学习领域的一些经典算法的高效实现。本文主要讲述如何基于 Apache Mahout 来构建社会化推荐引擎,帮助 Web 应用开发者更高效的实现个性化推荐功能,从而提高最终用户满意度。推荐引擎简介推荐引擎利用特殊的信息过滤(IF,Information Filtering)技术,将不同的内容(例如电影、 阅读全文
posted @ 2012-06-08 00:15 刺猬的温驯 阅读(298) 评论(0) 推荐(0) 编辑

摘要:智能推荐大都基于海量数据的计算和处理,然而我们发现在海量数据上高效的运行协同过滤算法以及其他推荐策略这样高复杂的算法是有很大的挑战的,在面对解决这个问题的过程中,大家提出了很多减少计算量的方法,而聚类无疑是其中最优的选择之一。 聚类 (Clustering) 是一个数据挖掘的经典问题,它的目的是将数据分为多个簇 (Cluster),在同一个簇中的对象之间有较高的相似度,而不同簇的对象差别较大。聚类被广泛的应用于数据处理和统计分析领域。Apache Mahout 是 ASF(Apache Software Foundation) 的一个较新的开源项目,它源于 Lucene,构建在 Hadoop 阅读全文
posted @ 2012-06-08 00:09 刺猬的温驯 阅读(254) 评论(0) 推荐(0) 编辑

摘要:本系列的第一篇为读者概要介绍了推荐引擎,下面几篇文章将深入介绍推荐引擎的相关算法,并帮助读者高效的实现这些算法。 在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法。它以其方法模型简单,数据依赖性低,数据方便采集 , 推荐效果较优等多个优点成为大众眼里的推荐算法“No.1”。本文将带你深入了解协同过滤的秘密,并给出基于 Apache Mahout 的协同过滤算法的高效实现。Apache Mahout 是 ASF 的一个较新的开源项目,它源于 Lucene,构建在 Hadoop 之上,关注海量数据上的机器学习经典算法的高效实现。集体智慧和协同过滤什么是集体智慧集体智慧 阅读全文
posted @ 2012-06-08 00:06 刺猬的温驯 阅读(223) 评论(0) 推荐(0) 编辑

摘要:随着 Web 技术的发展,使得内容的创建和分享变得越来越容易。每天都有大量的图片、博客、视频发布到网上。信息的极度爆炸使得人们找到他们需要的信息将变得越来越难。传统的搜索技术是一个相对简单的帮助人们找到信息的工具,也广泛的被人们所使用,但搜索引擎并不能完全满足用户对信息发现的需求,原因一是用户很难用恰当的关键词描述自己的需求,二是基于关键词的信息检索在很多情况下是不够的。而推荐引擎的出现,使用户获取信息的方式从简单的目标明确的数据的搜索转换到更高级更符合人们使用习惯的上下文信息更丰富的信息发现。“探索推荐引擎内部的秘密”系列将带领读者从浅入深的学习探索推荐引擎的机制,实现方法,其中还涉及一些基 阅读全文
posted @ 2012-06-07 22:41 刺猬的温驯 阅读(139) 评论(0) 推荐(0) 编辑

摘要:表征状态转移(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。宗旨REST 从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。获得这些表征致使这些 阅读全文
posted @ 2012-06-07 22:19 刺猬的温驯 阅读(299) 评论(0) 推荐(0) 编辑

摘要:转载http://www.ibm.com/developerworks/cn/web/wa-restful/index.htmlSpring,构建 Java™ 平台和 Enterprise Edition (Java EE) 应用程序的著名框架,现在在其模型-视图-控制器(Model-View-Controller ,MVC)层支持具象状态传输 (REST)。RESTful web 服务根据客户端请求生成多个具象(representations)很重要。在本篇文章中,学习使用 HttpMessageConverter 生成多个具象。代码示例展示如何使用 RestTemplate 和 HttpM 阅读全文
posted @ 2012-06-07 17:19 刺猬的温驯 阅读(1370) 评论(0) 推荐(0) 编辑

摘要:跟随 Web Service 一路走来, 记忆中的 Apache SOAP, Apache Axis, XFire, 标准化的JAX-RPC, JAX-WS, 到后来半路杀出的的 Spring-WS, CXF一切刚刚开始,一切望尘莫及,短命是纯技术的特征。RPC 的平台局限性,SOAP 的类型 bind 的易脆性, JAX-WS 工具的信赖度, Spring-WS contract first 使一个小时可以完成(甚至在IDE中十分钟可以完成)的工作,要整一天,还要到看到 JUnit 的 Green bar 才算数。已经标准化的JAX-RS,证明 RESTful 已经成为SOA加架的主流,以至 阅读全文
posted @ 2012-06-07 16:46 刺猬的温驯 阅读(8078) 评论(0) 推荐(0) 编辑

摘要:1. Controller 代码非常简单Java代码packageorg.pprun.hjpetstore.web.rest;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;importorg.pprun.hjpetstore.persistence.jaxb.Products;importorg.pprun.hjpetstore.service.rest.HjpetstoreService;importorg.springframework.beans.factory.annot 阅读全文
posted @ 2012-06-07 16:44 刺猬的温驯 阅读(614) 评论(0) 推荐(0) 编辑

摘要:一个简单的基于注解的 Controller使用过低版本 Spring MVC 的读者都知道:当创建一个 Controller 时,我们需要直接或间接地实现 org.springframework.web.servlet.mvc.Controller 接口。一般情况下,我们是通过继承 SimpleFormController 或 MultiActionController 来定义自己的 Controller 的。在定义 Controller 后,一个重要的事件是在 Spring MVC 的配置文件中通过 HandlerMapping 定义请求和控制器的映射关系,以便将两者关联起来。来看一下基于注 阅读全文
posted @ 2012-06-07 15:36 刺猬的温驯 阅读(281) 评论(0) 推荐(0) 编辑

摘要:lucene特点及作用文章里就不说了,网上有的是。我就简单说下个人理解,正常 sql 查询时:name like '%继中%' 想必大家一定明白这样不会走索引的,然后就在多行数据级别查询相应时间会很慢,对吧,因为数据库在一行行扫呢。所以我们自然会想到怎样能让它走索引?解决方案之一:lucene出来了。其实它就是帮你把文章拆分成若干个关键词,这样以便按关键词查询时能通过关键词直接查询来锁定哪些文章匹配该关键词并快速返回。说再直白点,就是 sql语句的查询不用like ,而是 name ='继中',这样就走索引了,所以就快了而已。下面来说正题,spring框架下配置 阅读全文
posted @ 2012-06-07 15:33 刺猬的温驯 阅读(4078) 评论(0) 推荐(0) 编辑

摘要:本文内容遵从CC版权协议转载请注明出自matrix67.com这篇文章是漫话中文分词算法的续篇。在这里,我们将紧接着上一篇文章的内容继续探讨下去:如果计算机可以对一句话进行自动分词,它还能进一步整理句子的结构,甚至理解句子的意思吗?这两篇文章的关系十分紧密,因此,我把前一篇文章改名为了《漫话中文自动分词和语义识别(上)》,这篇文章自然就是它的下篇。我已经在很多不同的地方做过与这个话题有关的演讲了,在这里我想把它们写下来,和更多的人一同分享。什么叫做句法结构呢?让我们来看一些例子。“白天鹅在水中游”,这句话是有歧义的,它可能指的是“白天有一只鹅在水中游”,也可能指的是“有一只白天鹅在水中游”。不 阅读全文
posted @ 2012-06-07 12:22 刺猬的温驯 阅读(817) 评论(0) 推荐(0) 编辑

摘要:本文内容遵从CC版权协议转载请注明出自matrix67.com 记得第一次了解中文分词算法是在Google 黑板报上看到的,当初看到那个算法时我彻底被震撼住了,想不到一个看似不可能完成的任务竟然有如此神奇巧妙的算法。最近在詹卫东老师的《中文信息处理导论》课上再次学到中文分词算法,才知道这并不是中文分词算法研究的全部,前前后后还有很多故事可讲。在没有建立统计语言模型时,人们还在语言学的角度对自动分词进行研究,期间诞生了很多有意思的理论。中文分词的主要困难在于分词歧义。“结婚的和尚未结婚的”,应该分成“结婚/的/和/尚未/结婚/的”,还是“结婚/的/和尚/未/结婚/的”?人来判断很容易,要交给计算 阅读全文
posted @ 2012-06-07 12:21 刺猬的温驯 阅读(485) 评论(0) 推荐(0) 编辑

摘要:改进排名的主流技术之一是借助于人工,专家能准确描述对网站的信任程度、轻易识别出垃圾。虽然人工可以很容易识别这些垃圾,但评估所有页面但代价很昂贵、是不可行的,所以就提出了一种半自动化技术方案。 TrustRank便应势而生,TrustRank是一种由斯坦福大学和雅虎研究人员提出的链接分析技术。TrustRank算法基本思想是在为网页排名时,要考虑到该页面所在站点的信任指数和权威性。 TrustRank算法应对轻易操纵google排名、提升搜索结果质量的作弊手段。实施这一方法极大地增加了短时间操作排名的难度,迅速改善了搜索结果的质量。所有要以TrustRank值作为网页排名的重要依据,页面的T.. 阅读全文
posted @ 2012-06-07 11:16 刺猬的温驯 阅读(847) 评论(0) 推荐(0) 编辑

摘要:HillTop也是搜索引擎结果排序的专利,是Google工程师Bharat在2001年发明的。Google的排序规则经常在变化,但变化最大的一次也就是2003年的基于HillTop算法的优化。 HillTop算法的指导思想和PageRank的一致,都通过网页被链接的数量和质量来确定搜索结果的排序权重。但HillTop认为只计算来自具有相同主题的相关文档链接对于搜索者的价值会更大:即主题相关网页之间的链接对于权重计算的贡献比主题不相关的链接价值要更高。Bharat称这种对主题有影响的文档为“专家”文档,从这些专家文档页面到目标文档的链接决定被链接网页的权重值。 Hilltop算法定义一个网站.. 阅读全文
posted @ 2012-06-07 11:15 刺猬的温驯 阅读(254) 评论(0) 推荐(0) 编辑

摘要:HITS(Hyperlink-Induced Topic Search)是由Kleinberg在90年代末提出的基于链接分析的网页排名算法。该算法与查询相关。 用HITS算法评估网页质量,可得到内容权威度(Authority)和链接权威度(Hub)。内容权威度与网页自身直接提供内容信息的质量相关,网页被引用得越多,其内容权威度越高;而链接权威度与网页提供的超链接的质量相关,引用内容质量高的网页越多,网页的链接权威度越高。 一个好中心网页应该指向很多权威性网页,而一个好的权威性网页则应该被很多好的中心性网页所指向。对整个Web集合而言,Authority和Hub是相互依赖、相互加强、相互优化.. 阅读全文
posted @ 2012-06-07 11:14 刺猬的温驯 阅读(336) 评论(0) 推荐(0) 编辑

摘要:TF-IDF(term frequency–inverse document frequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随著它在文件中出现的次数成正比增加,但同时会随著它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜寻引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜寻引擎还会使用基于连结分析的评级方法,以确定文件在搜寻结果中出现的顺序。 TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,. 阅读全文
posted @ 2012-06-07 11:13 刺猬的温驯 阅读(537) 评论(0) 推荐(0) 编辑

摘要:Google的Lawrence Page和Sergey Brin为PageRank(PR)算法给出了一个非常简单直观的解释。他们将PageRank视作一种模型,就是用户不关心网页内容而随机点击链接。 网页的PageRank值决定了随机访问到这个页面的概率。用户点击页面内的链接的概率,完全由页面上链接数量的多少决定的,这也是上面PR(Ti)/C(Ti)的原因。 因此,一个页面通过随机冲浪到达的概率就是链入它的别的页面上的链接的被点击概率的和。并且,阻尼系数d减低了这个概率。阻尼系数d的引入,是因为用户不可能无限的点击链接,常常因无聊而随机跳入另一个页面。 阻尼系数d定义为用户不断随机点击链... 阅读全文
posted @ 2012-06-07 11:11 刺猬的温驯 阅读(315) 评论(0) 推荐(0) 编辑

摘要:聚集索引介绍 在聚集索引中,表中各行的物理顺序与键值的逻辑(索引)顺序相同。表只能包含一个聚集索引。 如果不是聚集索引,表中各行的物理顺序与键值的逻辑顺序不匹配。聚集索引比非聚集索引有更快的数据访问速度。 聚集索引通常可加快 UPDATE 和 DELETE 操作的速度,因为这两个操作需要读取大量的数据。创建或修改聚集索引可能要花很长时间,因为执行这两个操作时要在磁盘上对表的行进行重组。 可考虑将聚集索引用于: 1.包含数量有限的唯一值的列,如 state 列只包含 50 个唯一的州代码。 2.使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、< 和 <=。 阅读全文
posted @ 2012-06-07 11:10 刺猬的温驯 阅读(230) 评论(0) 推荐(0) 编辑

摘要:一个网页的重要性分析的算法,是根据一个网页的入度(指向此网页的超链接)和出度(从此网页指向别的网页)来衡量网页的重要性。其最直观的意义是如果一个网页的重要性很高,则他所指向的网页的重要性也高。一个重要的网页被另一个网页所指,则表明指向它的网页重要性也会高。指向别的网页定义为Hub值,被指向定义为Authority值。 通常HITS算法是作用在一定范围的,比如一个以程序开发为主题网页,指向另一个以程序开发为主题的网页,则另一个网页的重要性就可能比较高,但是指向另一个购物类的网页则不一定。 在限定范围之后根据网页的出度和入度建立一个矩阵,通过矩阵的迭代运算和定义收敛的阈值不断对两个向量Auth.. 阅读全文
posted @ 2012-06-07 11:06 刺猬的温驯 阅读(371) 评论(0) 推荐(0) 编辑

摘要:一、传统搜索引擎排序算法概述 1. 1 搜索引擎排序算法概述 搜索引擎查询的结果是按照一定的规则排序供用户查看, 这种规则就是搜索引擎排序算法. 目前几种比较通用的搜索引擎排序算法有Direct Hit 排序算法、PageRank、排名竞价服务和词频位置加权排序算法.Direct Hit 排序算法是一种动态排序算法, 搜索引擎返回的排序结果根据用户的点击和网页被浏览的时间进行变化. PageRank 是著名搜索引擎Google 使用的排序算法, 利用了网页的链接结构进行计算网页的PR 值进行排序. 竞价排名服务是一些网站购买关键字排名, 搜索引擎按照点击( 也有按照时间段) 进行计费的一种.. 阅读全文
posted @ 2012-06-07 11:05 刺猬的温驯 阅读(366) 评论(0) 推荐(0) 编辑

摘要:搜索引擎算法每一次的变动都会牵动着广大站长的心,每个站长都非常想知道搜索引擎的算法是怎样的?如果彻底了解到了搜索引擎的排序准则,那么一定能够让你非常快速的将自己的网站优化到前面,可是搜索引擎的算法却是非常的繁难,对于一名普通的个人站长要想窥探出其中的奥秘,那比登天还难,不过没有关系,我们可以从其他的途径来了解搜索引擎,下面我就将我的经验写出来跟大家分享一下! 一:从网站的结构 搜索引擎的工作原理大体分为爬行,抓取,索引和排序四个步骤,因为搜索引擎需要遍历你的网站所有页面,就好像一个蜘蛛能够迅速的遍历自己织的网一样,所以我们又把搜索引擎成为蜘蛛,而我们打造的网站就是网,而网站的结构就是网,如.. 阅读全文
posted @ 2012-06-07 11:02 刺猬的温驯 阅读(370) 评论(0) 推荐(0) 编辑

摘要:91. 集成邮件服务JavaMail API为Java应用程序提供了邮件发送和接受的服务。JavaMail提供了一个平台无关和协议无关的框架,可以在JavaMail API的基础上构建一套电子邮件应用。JavaMail支持常见的电子邮件协议,包括SMTP、IMAP和POP3。在JavaEE应用程序中,我们关心的是如何通过SMTP协议发送电子邮件,因此,本节仅讨论如何发送电子邮件,如果需要接受电子邮件使用POP3协议,同样非常简单。9.11发送纯文本邮件如果使用JavaMailAPI发送邮件,即使发送最简单的纯文本邮件,也不得不编写如下代码:publicstaticvoidsend(Proper 阅读全文
posted @ 2012-06-07 00:59 刺猬的温驯 阅读(354) 评论(0) 推荐(0) 编辑

摘要:对于spring mvc来说2.0以后大量使用注解确实简单很多,最近在一个项目使用spring mvc遇到上传文件问题,由于使用了注解所以网上没有找到相关使用注解上传文件的。官方文档又没有更新都是老的,看了一些源码这才解决。使用注解很简单。写个例子:控制器类 FileUploadController.java[java]view plaincopyprint?packageorg.upload.test;importorg.springframework.stereotype.Controller;importjava.io.FIle;importorg.springframework.web 阅读全文
posted @ 2012-06-07 00:39 刺猬的温驯 阅读(415) 评论(0) 推荐(0) 编辑

摘要:参照了网上相关代码注意事项:1 springmvc.xml必须配置:Java代码<beanid="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver"p:defaultEncoding="utf-8"/>2 WEB-INF/lib下必加入:commons-fileupload.jar与commons-io-1.4.jar二个文件3 表单属性为: enctype="multipart/ 阅读全文
posted @ 2012-06-07 00:34 刺猬的温驯 阅读(1008) 评论(0) 推荐(0) 编辑

摘要:本文讲解了在 Spring 中处理 LOB 数据的原理和方法,对于 Spring JDBC 以及 Spring 所集成的第三方 ORM 框架(包括 JPA、Hibernate 和 iBatis)如何处理 LOB 数据进行了阐述。概述LOB 代表大对象数据,包括 BLOB 和 CLOB 两种类型,前者用于存储大块的二进制数据,如图片数据,视频数据等,而后者用于存储长文本数据,如论坛的帖子内容,产品的详细描述等。值得注意的是:在不同的数据库中,大对象对应的字段类型是不尽相同的,如 DB2 对应 BLOB/CLOB,MySql 对应 BLOB/LONGTEXT,SqlServer 对应 IMAGE/ 阅读全文
posted @ 2012-06-07 00:22 刺猬的温驯 阅读(376) 评论(0) 推荐(0) 编辑

摘要:Spring 不但提供了一个功能全面的应用开发框架,本身还拥有众多可以在程序编写时直接使用的工具类,您不但可以在 Spring 应用中使用这些工具类,也可以在其它的应用中使用,这些工具类中的大部分是可以在脱离 Spring 框架时使用的。了解 Spring 中有哪些好用的工具类并在程序编写时适当使用,将有助于提高开发效率、增强代码质量。在这个分为两部分的文章中,我们将从众多的 Spring 工具类中遴选出那些好用的工具类介绍给大家。第 1 部分介绍了与文件资源操作和 Web 相关的工具类。在第 2 部分中将介绍特殊字符转义和方法入参检测工具类。特殊字符转义由于 Web 应用程序需要联合使用到多 阅读全文
posted @ 2012-06-07 00:20 刺猬的温驯 阅读(453) 评论(0) 推荐(0) 编辑

摘要:Spring 不但提供了一个功能全面的应用开发框架,本身还拥有众多可以在程序编写时直接使用的工具类,您不但可以在 Spring 应用中使用这些工具类,也可以在其它的应用中使用,这些工具类中的大部分是可以在脱离 Spring 框架时使用的。了解 Spring 中有哪些好用的工具类并在程序编写时适当使用,将有助于提高开发效率、增强代码质量。在这个分为两部分的文章中,我们将从众多的 Spring 工具类中遴选出那些好用的工具类介绍给大家。第 1 部分将介绍与文件资源操作和 Web 相关的工具类。在第 2 部分中将介绍特殊字符转义和方法入参检测工具类。文件资源操作文件资源的操作是应用程序中常见的功能, 阅读全文
posted @ 2012-06-07 00:18 刺猬的温驯 阅读(308) 评论(0) 推荐(0) 编辑

摘要:1 概述电子商务推荐系统最大的优点在于它能收集用户的兴趣资料和个人信息,根据用户兴趣偏好主动为用户做出个性化推荐。推荐技术指的是如何找出用户感兴趣的商品并列出推荐清单,在用户信息获取差别不大的情况下,推荐技术成为决定一个推荐系统性能的关键,其中推荐算法是推荐技术的核心[1]。协同过滤技术是实际应用中使用最广泛的推荐技术,包括Amazon.com 在内许多网上书店都在使用协同过滤技术。协同过滤是一种基于用户间关联性的推荐算法,该推荐方法将购买习惯或兴趣相同的用户归类在同一个群体中,同群体内的用户彼此之间可以分享信息,互相推荐商品。应用协同过滤技术的著名的推荐系统包括GroupLens/NetPe 阅读全文
posted @ 2012-06-06 11:35 刺猬的温驯 阅读(490) 评论(0) 推荐(0) 编辑

摘要:在尝试保护你的应用时,你是否有过挫败感?是否觉得现有的Java安全解决方案难以使用,只会让你更糊涂?本文介绍的Apache Shiro,是一个不同寻常的Java安全框架,为保护应用提供了简单而强大的方法。本文还解释了Apache Shiro的项目目标、架构理念以及如何使用Shiro为应用安全保驾护航。什么是Apache Shiro?Apache Shiro(发音为“shee-roh”,日语“堡垒(Castle)”的意思)是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。Shiro为解决下列问题(我喜 阅读全文
posted @ 2012-06-05 07:31 刺猬的温驯 阅读(1172) 评论(0) 推荐(0) 编辑

摘要:MongoDB简介目前有很多互相竞争的NoSQL产品,它们使用的方式不尽相同,但都能很好地解决大数据问题。MongoDB就是其中一款非常不错的产品。MongoDB是面向文档、无Schema的存储解决方案,它用JSON风格的文档展现、查询、修改数据。MongoDB有很丰富的文档,安装和设置都很简单,而且易于扩展。它支持大家熟知的复制、分片、索引和Map/Reduce等概念。MongoDB开源社区的规模很大,也很活跃。让MongoDB引以为豪的是,包括Disney、Craigslist、Foursquare、Github和SourceForge在内的大型、高流量生产环境都已经部署了MongoDB。 阅读全文
posted @ 2012-06-03 10:36 刺猬的温驯 阅读(611) 评论(0) 推荐(0) 编辑

摘要:摘要:在电子商务中,运用数据挖掘技术对服务器上的日志文件等Web数据进行客户访问信息的Web数据挖掘。了解客户的访问行为,从而调整站点结构、市场策略等,使电子商务活动具有针对性。 关键词:电子商务;Web数据挖掘;服务器日志文件 中图分类号:F713.36 文献标识码:A Web Data Mining in Ecommerce Abstract: In e-commerce, we can make web data mining to the information of customers’ visit by using the data mini... 阅读全文
posted @ 2012-06-03 00:10 刺猬的温驯 阅读(517) 评论(0) 推荐(0) 编辑

摘要:在上一篇教程中,我们学习了如何使用Mongodb 的JAVA API对Mongodb进行相关的数据库操作,在本文中,将学习使用Spring for Mongodb去简化对Mongodb的操作。 安装Spring for Mongodb Spring项目为方便对Mongodb的操作,建立了spring-data的子项目,地址在: http://www.springsource.org/spring-data/mongodb,目前版本是1.0.0M2阶段,已支持对Mongodb的一系列基本操作。我们先从http://www.springsource.org/spring-data/mongo... 阅读全文
posted @ 2012-06-01 04:03 刺猬的温驯 阅读(9826) 评论(0) 推荐(0) 编辑

摘要:在上一篇文章中,我们学习了Mongodb的安装和初步使用,在本文中,将学习如何使用Java去编程实现对Mongodb的操作。 HelloWorld程序 学习任何程序的第一步,都是编写HelloWorld程序,我们也不例外,看下如何通过Java编写一个HelloWorld的程序。 首先,要通过Java操作Mongodb,必须先下载Mongodb的Java驱动程序,可以在这里下载。 新建立一个Java工程,将下载的驱动程序放在库文件路径下,程序代码如下:packagecom.mkyong.core;importjava.net.UnknownHostException;importcom.... 阅读全文
posted @ 2012-06-01 04:01 刺猬的温驯 阅读(767) 评论(0) 推荐(0) 编辑

摘要:目前,NOSQL在业界正发展的如火如荼,其中Mongodb是其中十分优秀的一员,MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。在本系列教程中,将分三部分指导对Mongodb的学习,在第一部分中,将简单介绍Mongodb的安装和基本使用方法,在第二部分中,将介绍Java对Mongodb的编程操作,在第三部分中,将介绍Spring对Mongodb的编程操作。 Mongodb在Windows上的安装 首先,我们到Mongodb的官方网站http://www.mongodb.org/downloads下载,下载的版本目前是1... 阅读全文
posted @ 2012-06-01 03:58 刺猬的温驯 阅读(408) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示