http://oldboy-bj.taobao.com/

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2010年12月31日

摘要: 在Spring 2.0之前,Spring的JMS的作用局限于产生消息。这个功能(封装在 JmsTemplate 类中)当然是很好的,但是,它没有描述完整的JMS堆栈,比如像消息的 异步 产生和消耗。JMS堆栈缺少的这一部分已经被添加,Spring 2.0现在提供对消息异步消耗的完整支持。 让我们从一个例子开始。 首先我们打开ActiveMQ。从ActiveMQ的安装路径上的bin目录,那里有一个ActiveMQ.bat,双击执行即可。不过要注意必须先设置java_home环境变量。ActiveMQ默认的服务端口是61616。 然后我们开始配置Spring配置文件。我起名为spring-j 阅读全文
posted @ 2010-12-31 21:42 老男孩咖啡 阅读(1120) 评论(0) 推荐(0) 编辑

摘要: 缓存是位于应用程序与物理数据源之间,用于临时存放复制数据的内存区域,目的是为了减少应用程序对物理数据源访问的次数,从而提高应用程序的运行性能. Hibernate在查询数据时,首先到缓存中去查找,如果找到就直接使用,找不到的时候就会从物理数据源中检索,所以,把频繁使用的数据加载到缓存区后,就可以大大减少应用程序对物理数据源的访问,使得程序的运行性能明显的提升. Hibernate缓存分类: Session缓存,一级缓存. SessionFactory的缓存分为内置缓存和外置缓存.内置缓存中存放的是SessionFactory对象的一些集合属性包含的数据(映射元素据及预定义SQL语句等),对于应 阅读全文
posted @ 2010-12-31 21:38 老男孩咖啡 阅读(165) 评论(0) 推荐(0) 编辑

摘要: 批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据。以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段: 如果CUSTOMERS表中有1万条年龄大于零的记录,那么Session的find()方法会一下子加载1万个Customer对象到内存。当执行tx.commit()方法时,会清理缓存,Hibernate执行1万条更新CUSTOMERS表的update语句: view plaincopy to clipboardprint? update CUSTOMERS set AGE=? …. where ID=i; up 阅读全文
posted @ 2010-12-31 21:37 老男孩咖啡 阅读(197) 评论(0) 推荐(0) 编辑

摘要: iBATIS , 又是一个O/R Mapping的解决方案(例如 hibernate的ORM 也是解决方案之一.)网上很多人便将其称为ORM , 但是用过的人, 应该都会觉得并不恰当.与其称之为一个OR Mapping , 倒不如叫它SQL Mapping...iBATIS 的特点是小巧, 简单. 但是要求需要熟悉SQL , 不像hibernate那样, 可以让你一句sql 都不用写同时, 我觉得要写挺多的配置文件的. 可能会比较繁琐.Java代码 publicclass User { privateint id; private String username; private String 阅读全文
posted @ 2010-12-31 21:35 老男孩咖啡 阅读(185) 评论(0) 推荐(0) 编辑

摘要: tomcat采用默认安装,要想tamcat直接绑定多个域名,这里我们需要修改配置文件:C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\server.xmlserver.xml 的修改方式如下:(一)多域名绑定 1.如果你要绑定网站,首先是要把tomcat的默认访问端口8080,修改成80原始:Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLook 阅读全文
posted @ 2010-12-31 21:34 老男孩咖啡 阅读(175) 评论(0) 推荐(0) 编辑

摘要: 今天看见je上一帖,对于上亿数据求和的算法,采用多线程到底快还是慢,我认为需要按情况而定。1.单核,无IO,网络等资源操作情况下 结果:多线程比单线程理论上要慢 原因:多线程启动线程需要消耗cpu资源,多线程只是把这一计算过程分片,在同一时刻只会有一个线程占有cpu,所以采用多线程不但在启动时耗费资源,在线程调度上同样也耗费时间。所以单线程比多线程理论上要快。2.单核,有IO,网络等资源操作情况下 结果:多线程比单线程理论上要快 原因:如果这上亿数据需要从文件中或者网络的其它地方(数据库)获取,在IO和网络操作的时候,由于IO和网络操作比cpu慢的多,所以cpu等待io操作;多线程的时候,当一 阅读全文
posted @ 2010-12-31 21:33 老男孩咖啡 阅读(276) 评论(0) 推荐(0) 编辑

摘要: 这里分享的是一个分布式分析系统的Master内存消耗状况的优化,有些比较特定的优化未必适用于其他系统,但是从这一系列优化过程中,应该能带给其他系统在做设计时提前考虑一点优化点。 下面先描述一下背景,看了背景可以对后续的优化点可以比较清楚一些,注意,部分设计仅适用于大量计算中,会牺牲可维护性来换取性能提升。最后一点优化应该是比较有通用性意义的。背景: 开放平台每天产生大量的调用日志,希望能够从海量日志中即时的去分析业务指标和系统运行状况。当前实现的是类似MapReduce的设计,不过Master与Slave之间是松耦合的关系,比传统的MapReduce更利于扩展和即时分析(当然和Hadoop的目 阅读全文
posted @ 2010-12-31 21:32 老男孩咖啡 阅读(263) 评论(0) 推荐(0) 编辑

摘要: 1.数据库事务的概念数据库事务是指由一个或多个SQL语句组成的工作单元,这个工作单元中的SQL语句相互依赖,如果有一个SQL语句执行失败,就必须撤销整个工作单元。 在并发环境中,多个事务同时访问相同的数据资源时,可能会造成各种并发问题,可通过设定数据库的事务隔离级别来避免,还可采用悲观锁和乐观锁来解决丢失更新这一并发问题。 数据库事务必须具备ACID特征:A: Atomic原子性,整个事务不可分割,要么都成功,要么都撤销。 C: Consistency一致性,事务不能破坏关系数据的完整性和业务逻辑的一致性,例如转账,应保证事务结束后两个账户的存款总额不变。I:Isolation隔离性,多个事务 阅读全文
posted @ 2010-12-31 21:31 老男孩咖啡 阅读(188) 评论(0) 推荐(0) 编辑

摘要: 1.hibernate的优缺点 1.sql语句不用写了,它使用时只需要操纵对象,使开发更对象化,为我们提高了生产力;2.移植性会很好;3.它实现了透明持久化,如POJO,这个对象没有实现第三方框架或者接口;4.它没有侵入性,即所谓的轻量级框架;5.对象之间有很清晰的关系 一般场合:针对某一对象(单个对象)简单的查\改\删\增,不是批量修改、删除,适合用Hibernate;而对于批量修改、删除,不适合用Hibernate,这也是OR框架的弱点;要使用数据库的特定优化机制的时候,不适合用Hibernate2.hibernate的工作原理 1.配置好hibernate的配置文件和与类对应的配置文件 阅读全文
posted @ 2010-12-31 21:30 老男孩咖啡 阅读(183) 评论(0) 推荐(0) 编辑

摘要: 我们都知道使用线程池能够控制线程的数量,尤其是大量的“短命”线程存在时,线程池将大大降低系统消耗(内存和CPU)。不过,线程池也同样需要管理,于是我写了本篇。首先,我们来看看管理器的整个继承关系: 显而易见,有ThreadPoolExecutor和ScheduledThreadPoolExecutor两个实现类,当然Executor类里也有一些内部类实现了特定的功能(如class DelegatedScheduledExecutorService),我们也可以自己通过扩展这里所有的接口、抽象类、类来实现自己的特定功能,如继承ThreadPoolExecutor类,覆写beforeExecut 阅读全文
posted @ 2010-12-31 21:27 老男孩咖啡 阅读(636) 评论(0) 推荐(2) 编辑