- 浏览: 1183488 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (350)
- Ajax研究 (2)
- javascript (22)
- struts (15)
- hibernate (12)
- spring (8)
- 我的生活 (28)
- jsp (2)
- 我的随笔 (84)
- 脑筋急转弯 (1)
- struts2 (2)
- ibatis (1)
- groovy (1)
- json (4)
- flex (20)
- Html Css (5)
- lucene (11)
- solr研究 (2)
- nutch (25)
- ExtJs (3)
- linux (6)
- 正则表达式 (2)
- xml (1)
- jetty (0)
- 多线程 (1)
- hadoop (40)
- mapreduce (5)
- webservice (2)
- 云计算 (8)
- 创业计划 (1)
- android (8)
- jvm内存研究 (1)
- 新闻 (2)
- JPA (1)
- 搜索技术研究 (2)
- perl (1)
- awk (1)
- hive (7)
- jvm (1)
最新评论
-
pandaball:
支持一下,心如大海
做有气质的男人 -
recall992:
山东分公司的风格[color=brown]岁的法国电视[/co ...
solr是如何存储索引的 -
zhangsasa:
-services "services-config ...
flex中endpoint的作用是什么? -
来利强:
非常感谢
java使用json所需要的几个包 -
zhanglian520:
有参考价值。
hadoop部署错误之一:java.lang.IllegalArgumentException: Wrong FS
对于基于B/S结构中的缓存方式,可以在不同的层次上进行。笔者比较粗略地从以下几方面就行分析:
(1)浏览器缓存
(2)单台服务器缓存(hibernate、ehcache等)
(3)分布式系统中的缓存(memcache、xmemcached)
1 浏览器缓存
本博在前面一段时间在《Web前端优化》系列中分析了浏览器的一些工作行为,其中包括了一些浏览器缓存的因素。便于大家查看,现将文档列于下:
其中较多的参考了《高性能网站建设指南》一书.
另外推荐大家看一篇博文:《J2EE:web开发中的缓存问题的研究》http://www.diybl.com/course/3_program/java/javashl/20081130/152856.html。
2单台服务器缓存
单台服务器的缓存机制现在有很多,主要有两种方式:一是采用自编程序实现、二是用现在开源的框架。具体的缓存机制按物理载体又可以分为内存级别的缓存和磁盘级别的缓存。按并发策略又可以分为:事务型(Transactional)策略、读写型(read-write)策略、非严格读写型(nonstrict-read-write)策略和只读型策略(read-only)。各种策略的详情这里也不多说了,感兴趣的可以再在网上找一下相关资料。下面分析一下这一级别常用的一些缓存机制。
2.1 hibernate+ehcache
Hibernate 中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓存可以进行配置和更改,并且可以动态加载和卸载。
Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存。
一级缓存
当应用程序调用Session的save()、update()、 savaeOrUpdate()、get()或load(),以及调用查询接口的list()、iterate()或filter()方法时,如果在 Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中。当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。
Session为应用程序提供了两个管理缓存的方法:
evict(Object obj):从缓存中清除参数指定的持久化对象。
clear():清空缓存中所有持久化对象。
二级缓存:
Hibernate的二级缓存策略的一般过程:
1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。
2) 把获得的所有数据对象根据ID放入到第二级缓存中。
3) 当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。
4) 删除、更新、增加数据的时候,同时更新缓存。
Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query Cache。
至于详细的配置方式,大家可以上网去找吧。
2.2 自写原理
自己写cache无非也是把数据存于内存或者磁盘的某个地方,但是自己写需要考虑到很多方面,如缓存更新策略、缓存访问策略等等,也都不是非常容易的。这里主要是利用Spring的相关机制实现缓存。
原理如下:
1、 在开源工具如ehcache的基础上编写缓存工具类,实现缓存需要的基本操作
2、 然后实现函数的AOP拦截类,用来在函数执行前返回缓存内容
3、 配置Spring的AOP及其他的一些配置。
详细见《memcached的使用(一)》http://marc.iteye.com/blog/28700
3分布式系统中的缓存
许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。
这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。、
目前,Java领域出现了xmemcached,它是基于java nio实现的memcached客户端API。
实际上是基于我实现的一个简单nio框架 http://code.google.com/p/yanf4j/的基础上实现的(目前是基于yanf4j 0.52),核心代码不超过1000行,序列化机制直接挪用spymemcached的Transcoder。
性能方面,在读写简单类型上比之spymemcached还是有差距,在读写比较大的对象(如集合)有效率优势。
发表评论
-
认真阅读hadoop源码
2012-11-01 16:00 1780从新复习hadoop,认真阅读hadoop源码,有兴趣的朋友可 ... -
铁道部售票网站怎么啦?
2012-01-10 10:25 1878乐淘CTO李勇:库存同步是难点 我的判断,除了 ... -
eclipse启动报错jvm terminated. Exit code=1
2011-10-11 08:55 1224转载链接: http://wxmfly.itey ... -
ireport中获取当前时间
2011-08-28 11:53 5169一。 iReport 中获取系统当前时间 1,选择Tex ... -
ireport引java bean database
2011-08-27 10:38 1745今天帮一同事调试程序,他们的报表工具用的是ireport4.0 ... -
谈谈爬虫的设计
2011-08-07 22:27 2317网络蜘蛛现在开源的已 ... -
为了养家,只能这样!
2011-07-03 16:22 16还是一直在玩数据,hadoop平台(自己一手搭建),使用爬虫n ... -
陆续整理数据方面的资料
2011-05-07 08:58 634差不多有一个多月没写东西了,最近比较忙!还是研究数据一些东西。 ... -
挣钱养家
2011-04-14 22:19 1163如果各位有私活的话忙不过来,可以通过QQ(282215036) ... -
使用perl连接mysql数据库
2011-04-05 22:21 1440用Perl DBI连接MySQL数据库 Perl中一个最酷的 ... -
图像数字识别技术
2011-04-01 17:32 5940最近在研究图像数字识别技术,对于一些简单没有干扰的图片,可以读 ... -
100个可供选择的搜索引擎
2011-03-02 13:11 1503本文根据 readwriteweb ... -
对于处理问题的一点想法
2011-02-23 08:26 1123昨天快下班的时候,遇到一个建立索引的问题,因为快下班了,我没有 ... -
温故而知新
2011-02-20 16:44 1188又回过头来复习以前的知识了?在家里实在无聊!把之前学习过的东西 ... -
加钱也得买票回家过年
2011-01-25 08:44 982昨天从黄牛党手上拿了一张高价票。加了100.哎!这年头在外面忙 ... -
Eclipse3.6 Helios SVN插件–Subversive
2011-01-12 11:42 3653刚在Google Code上发布了一个Open Project ... -
博客有时候来不及更新,希望大家见谅!
2011-01-10 17:42 1011刚到新公司,可能开始忙了,博客有时候来不及更新,希望大家见谅! ... -
新公司入职第一天
2011-01-10 11:47 1326今天是我去新公司入职的第一天。感觉一切都是新的,从头开始!加油 ... -
java中各种算法的实现
2010-12-30 13:01 1162选择排序算法的JAVA实现 viewplainprin ... -
java基础知识复习
2010-12-30 13:00 1018学习Java一 配置环境变量 学习Java二 开发第一 ...
相关推荐
的特性包括高级线程管理、虚拟主机支持、数据缓存等,非常适合于研究J2EE中的Web容器机制。 #### JDBC方向 ##### HypersonicSQL HypersonicSQL是一个纯Java编写的开源关系型数据库管理系统,虽然它并非完全兼容...
在IT行业中,J2EE(Java 2 Platform, Enterprise Edition)是用于构建企业级应用程序的平台,它提供了服务器端的编程模型和环境。本实例源代码着重于一个经典的开发框架集成,即Struts2.0、Hibernate和Spring的组合...
7. **MVC设计模式**:在J2EE项目中如何应用Model-View-Controller模式。 8. **部署与测试**:学习如何在应用服务器(如Tomcat、Glassfish)上部署应用,并进行单元测试和集成测试。 9. **安全控制**:了解J2EE的安全...
这个压缩包文件“《J2EE案例开发》源代码”包含的是一系列J2EE项目实践的源代码,是学习和理解J2EE技术体系及其实际应用的良好资源。 J2EE的核心在于它的分层架构,主要包括以下层次: 1. 客户端层(Client Layer...
《深入解析J2EE项目源码:DigitalCampus数字校园》 在信息技术高速发展的今天,数字校园系统已经成为教育信息化的重要组成部分。"DigitalCampus数字校园"是一个基于J2EE技术平台构建的综合管理系统,旨在提升学校...
它支持事务管理、缓存机制,还有强大的查询语言HQL(Hibernate Query Language),极大地提高了开发效率。 **Spring** 是一个全面的企业级应用开发框架,其核心是依赖注入(DI)和面向切面编程(AOP)。Spring可以...
这个J2EE个人博客系统项目不仅是一个实际的Web应用,还是学习和研究J2EE技术、Web开发流程和项目管理的优秀实践案例。通过深入分析和实践,开发者可以提升自己在企业级应用开发中的技能和经验。
在本文中,我们将深入探讨“基于J2EE的Web Service研究及构建”,理解J2EE如何与Web Service相结合,实现企业级应用间的无缝通信。 1. **J2EE简介** Java 2 Enterprise Edition (J2EE) 是一个用于开发和部署多层、...
- **重点内容**:MVC模式、拦截器模式、工厂模式等在J2EE项目中的具体应用。 - **EJB设计模式**:针对EJB开发过程中的常见问题提供解决方案。 - **重点内容**:EJB生命周期管理、状态模式的应用等。 ### 开源框架...
5. **性能优化**:通过预编译标签和缓存机制,提高页面渲染速度,减少服务器压力。 6. **可复用性**:标签库中的组件可以在多个项目中重复使用,提高开发效率。 7. **维护性**:将逻辑从JSP页面移至标签库,使得...
这些特性在J2EE架构中得以体现,例如,通过集群和负载均衡实现高可用,通过数据库优化和缓存策略提升性能,通过加密和访问控制保障安全性。 3. **Web层**: Web层通常由Servlet和JSP组成,负责处理HTTP请求和返回...
### 基于Struts和Hibernate的J2EE架构的研究 #### 1. J2EE架构概述 J2EE(Java 2 Platform Enterprise Edition)是由Sun Microsystems推出的一种用于构建企业级应用的平台标准。该平台支持多层分布式应用,并且为...
【标题】"基于J2EE的网络物流系统"是一...通过分析源码和阅读论文,我们可以深入了解J2EE在实际项目中的应用,学习如何将理论知识转化为解决实际问题的工具,这对于理解企业级软件开发流程和提升技术能力都非常有价值。
8. **安全性**:J2EE提供了多种安全机制,如角色基础的访问控制(RBAC)、SSL/TLS加密、认证与授权等,以保护系统的数据安全和用户隐私。 9. **性能优化**:对于大型企业系统,性能优化是关键。可以通过缓存策略、...
通过分析和研究这个源码,开发者可以深入理解如何在实际项目中运用J2EE技术栈,包括Servlet、JSP、JDBC、EJB、Spring、Hibernate等,以及如何设计和实现一个功能完善的电子商务系统。 【标签】"j2ee在线购物网实例...
深入研究JMS(Java Message Service)、JPA(Java Persistence API)、CDI(Contexts and Dependency Injection)、JSF(JavaServer Faces)等技术,以及安全、缓存、负载均衡等高级话题。 ### 12. 实战项目 最后,...
2. 使用缓存机制减少数据库访问。 3. 利用负载均衡和集群技术提升系统性能和可用性。 4. 适当使用轻量级框架,如Spring,以降低复杂性。 综上所述,“基于J2EE多层架构的web应用研究”文档详细阐述了如何利用J2EE...
《基于J2EE的电子档案管理系统研究与开发(树状结构)》是一个针对毕业设计项目的详细探讨,旨在构建一个能够高效管理和检索电子档案的系统。本文将深入剖析J2EE平台在实现这样的系统中的核心作用,以及如何利用树状...
这个毕业设计项目是学习和实践这些概念的实例,对于初学者或开发者来说,是一个深入理解Java J2EE在电子商务场景中应用的宝贵资源。通过分析和研究这个项目,不仅可以掌握相关技术,还能了解实际开发流程和团队协作...
- 本书还包含了一些具体的案例研究,展示了如何在实际项目中应用J2EE技术栈。 #### 三、技术细节与应用场景 - **Web层**:主要处理HTTP请求和响应,通常由Servlets和JSP组成。 - **业务逻辑层**:实现应用程序的...