51CTO博客开发
最近公司在开发一个新工具,该工序会长时间的运行,中间过程可以简单的描述为:1、从DB查询数据;2、计算;3、存入DB。但是因为数据量非常大(亿级别)、数据源特别多、计算也别复杂,我们发现计算效率很低。于是我们想分析到底是哪个步骤慢。 一般的方式会想到,在要分析的代码段前后获取时间,再进行相减,得到运行时间。如下: &nbs
前面几篇关于solr的文章在导入数据进行分词、索引,都是通过导入本地的XML或者直接在页面上填写XML。但是现实中,很多情况下数据源是来自于数据库的。所以,本文就以mysql为例进行一个较详细的介绍。其使用到的是“dataimport”。 1、在conf\solrconfig.xml中添加,增加导入数据功
一、为何使用多core? Solr实例支持多core比启用多index要好(do more)。多core同时解决了在生产环境下的一些关键需求: 1.重建索引 2.测试
累觉不爱啊!昨日本文已将近完工,看到文本编辑器提示自动保存了草稿也就没做保存操作。可惜悲剧还是来了,所有的内容都没有了!今日只得从头来过了。 好吧,废话不多说,继续solr的学习。笔者上篇文章《solr(一)---介绍与安装》介绍了solr的安装。安装好之后是不是不知道怎么操作呢?另外是不是不理解solr
最近公司招新人,有两位应届硕士生同学过来面试。一看简历上,都有solr的开发经验。于是想,“这没整过啊!我怎么面呢?”于是,自己找资料,进行了一段时间的学习!总算是有个学习成果吧!现写下这一系列文章进行记录。也帮助刚学习solr的同学进行学习。一、什么是solr? Solr是一个基于Lucene的Java
最近因为一直在用的一个系统,在登录是老是出现某个问题,而这个系统是用CAS实现的单点登录。于是,就又回去重新了解一边CAS的认证流程,以及在Spring Security上的实现。这次回顾,让我对整个流程有了更深入的理解。在这里特意做一个总结和记录。 本人的另一篇讲述Spring Security3.1配
笔者组内之前有一个“XXX管理系统”是用django开发的。该项目包含web代码及相关的脚本。因为之前开发的同事早已离职,且组内只有笔者之前接触过python,故,自然而然的,笔者接手了该项目。 之前从没接触过django,只是写过一些python脚本,对脚本的web框架,之前了解过ruby的ruby o
最近工作上需要做一个大数据量的读写操作,为了实现高效率,想到了用多线程实现。在网上查一些资料,发现在JDK 1.5之后有了一个非常方便的东东---Executor来实现多线程。 从JDK 1.5开始,增加了java.util.concurrent包,它的引入大大简化了多线程程序的开发。 &nb
根据学习的RabbitMQ知识配了一个SpringMVC的实现。这是一个完整的工程,view的部分使用freeMarker,持久化操作是通过mybatis实现。 整个工程的目录结构如下:src下的相关包的解释: controller:控制器; &nb
之前在项目中有用到过JMS以及ActiveMQ,这一次在新项目中又要用到MQ,感觉可以尝试下新东西,就下手开始学习RabbitMQ了。 RabbitMQ的官网:http://www.rabbitmq.com/ RabbitMQ支持各种操作系统,包括Unix\Linux及
Linux安装及配置:http://cocos.iteye.com/blog/1050291http://tech.it168.com/a2011/0830/1239/000001239923.shtmlwindows安装:http://zheng12tian.iteye.com/blog/1471726http://www.newasp.net/soft/67186.html配置文件介绍:htt
由于redis不像memcached已经实现了服务器端的sharding,当前采用的是master-slave模式:由master完成读-写操作,而slave只能做读操作。(预计要在redis3.0才能实现真正的sharding。)所以在设计redis集群系统时,难免会遇到“扩容”及“单点故障”等问题。1.扩容问题: 因为使用了一致性哈稀进行分
一、相关jar包 主要用到的是jedis的核心包,笔者用到的是2.1.0版;另根据“池”的应用等还需要用到相关jar包。下图是笔者建立的简单的jedis测试project图: jar包的文档可参考:http://www.boyunjian.com/javadoc/org.apache.servicemix.
一、介绍 Redis的master/slave数据复制方式可以是一主一从或者是一主多从的方式,Redis在master是非阻塞模式,也就是说在slave执行数据同步的时候,master是可以接受客户端的请求的,并不影响同步数据的一致性,然而在slave端是阻塞模式的,slave在同步master数据时,并不能够响应客户端的查询。  
因为最近项目会用到redis,之前在项目中会用到memcached,所以对redis进行了一番研究,这里做一个较详细的整理以供分享!一、redis介绍 redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它跟memcached类似,不过数据可以持
一、在本人的《web.xml加载顺序》文章中介绍到了,在web.xml中配置的加载顺序为: ServletContext-> context-param ->listener -> filter -> servlet本文就结合该加载顺序,详细的介绍一个较完整的工程的配置。二、该较完整的工程应该包括:1、应用Spring;2、应用SpringMVC;
一:对于springMVC的controller,有时候会需要记录里面接口映射的信息。比如:@Controller public class RoleManagementController { ...... /* * 初始化角色页面 */ @RequestMapping(value = "rolesList.s", method = RequestMethod.GET
前两天QA提上来一个问题,说是页面上会弹出框来。本以为是我的测试JS代码忘记删掉了,后来再看才发现是有人提交测试评论时,故意协商了JS代码,页面直接解析该JS就有弹出框了,代码如下: <script>alert("1")</script> &nbs
在我的《JRE、JVM和JDK》这篇博文当中,已经理解了为什么java要有jvm,是为了实现跨平台,把代码编译成字节码这种中间代码,再通过jvm实现在不同的机器上根据不同的API编译成不同的实现代码,进而实现跨平台。而jvm那部分的工作对于C或C++都需要自己去做的。 那为什么C++也不通过一个类似的虚拟机来实现跨平台呢? &nb
Java虚拟机(JVM)一种用于计算机设备的规范,可用不同的方式(软件或硬件)加以实现。编译虚拟机的指令集与编译微处理器的指令集非常类似。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JVM规格描述将解释器移植到特定的计算机上,就能保证经过编译的任何Java代码能够在该系统上运行。Java虚
Java2的集合框架,抽其核心,主要有三种:List、Set和Map。如下图所示: 需要注意的是,这里的 Collection、List、Set和Map都是接口(Interface),不是具体的类实现。 List lst = new ArrayList(); 这是我们平常经常使用的创建一个新的List的语句,在这里,&
GOF 在《设计模式》中给桥梁模式的定义为:将抽象部分与它的实现部分分离,使它们都可以独立地变化。这里的抽象部分和实现部分不是我们通常认为的父类与子类、接口与实现类的关系,而是组合关系。也就是说,实现部分是被抽象部分调用,以用来完成(实现)抽象部分的功能。 &
适配器模式定义的:将一个类的接口转换成客户希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式分为类适配器模式和对象适配器模式。区别仅在于适配
GOF 给原型模式 的定义为:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 在 C++和Java 中都提供了clone()方法来实现对象的克隆,但是在
GOF 给建造模式的定义为:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。即,将构造复杂对象的过程和组成对象的部件解耦。就像攒电脑一样,不管什么品牌的配件,只要兼容就可以装上;同样,一样的配件,可以有好多组装的方式。这是对降低耦合、提高可复用性精神的一种贯彻。&nb
工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。定义一个用于创建对象的接口,让其子类来决定实例化哪一个类(产品),工厂方法使一个类的创建延迟到其子类中。工厂模式分为三种: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Fact
单例模式的目的就是要控制特定的类只产生一个对象,当然也允许在一定情况下灵活的改变对象的个数。 怎么来实现单例模式呢?一个类的对象的产生是由类构造函数来完成的,如果想限制对象的产生,一个办法就是:1,将构造函数变为私有的(至少是受保护的),使得外面的类不能通过引用来产生对象;2,同时为了保证类的可用性,就必须提供一个自己的对象以及访问这个对象的静态方法。 单例模式可分为有状态的和
因为组内的产品是一个供上海甚至全球所有designer使用的网站,所以并发性很高,于是一直存在访问速度不佳的诟病。为了提高访问速度,就需要对该网站的性能进行测试。于是在网上查了并发性测试和自动化测试的工具。 本文讲的是测试页面访问速度的、并发压力测试工具---PyLot。 可以参考它的指导网站:http://www.pylot.org/gettingstarted.html
因为组内的产品是一个供上海甚至全球所有designer使用的网站,所以并发性很高,于是一直存在访问速度不佳的诟病。为了提高访问速度,就需要对该网站的性能进行测试。于是在网上查了并发性测试和自动化测试的工具。 本文讲的是自动化测试的工具,用到的是Ruby+Watir。 首先对工具进行下介绍: Ruby Ruby是面向对象的编程语言,它追求的是“简便快捷的面向对象编程”。Ruby是
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号