JAVA中各类CACHE机制实现的比较

JAVA中各类CACHE机制实现的比较,第1张

 在 NET中 实现CACHE是件很容易的事 在java中 是如何实现的呢?有哪些解决方案呢?

 归纳了下 大概有下面这些方案

  OSCache

 OSCache是个一个广泛采用的高性能的J EE缓存框架 OSCache能用于任何Java应用程序的普通的缓存解决方案

 OSCache有以下特点

 缓存任何对象 你可以不受限制的缓存部分jsp页面或HTTP请求 任何java对象都可以缓存

 拥有全面的API OSCache API给你全面的程序来控制所有的OSCache特性

 永久缓存 缓存能随意的写入硬盘 因此允许昂贵的创建(expensive to create)数据来保持缓存 甚至能让应用重启

 支持集群 集群缓存数据能被单个的进行参数配置 不需要修改代码

 缓存记录的过期 你可以有最大限度的控制缓存对象的过期 包括可插入式的刷新策略(如果默认性能不需要时)

 官方网站

  Java Caching System

 JSC(Java Caching System)是一个用分布式的缓存系统 是基于服务器的java应用程序 它是通过提供管理各种动态缓存数据来加速动态web应用

 JCS和其他缓存系统一样 也是一个用于高速读取 低速写入的应用程序

 动态内容和报表系统能够获得更好的性能

 如果一个网站 有重复的网站结构 使用间歇性更新方式的数据库(而不是连续不断的更新数据库) 被重复搜索出相同结果的 就能够通过执行缓存方式改进其性能和伸缩性

 官方网站

  EHCache

 EHCache 是一个纯java的在进程中的缓存 它具有以下特性 快速 简单 为Hibernate 充当可插入的缓存 最小的依赖性 全面的文档和测试

 官方网站

  JCache

 JCache是个开源程序 正在努力成为JSR 开源规范 JSR 规范已经很多年没改变了 这个版本仍然是构建在最初的功能定义上

 官方网站

  ShiftOne

 ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Java lib 就像一个轻量级的配置缓存工作状态的框架

 官方网站

  SwarmCache

 SwarmCache是一个简单且有效的分布式缓存 它使用IP multicast与同一个局域网的其他主机进行通讯 是特别为集群和数据驱动web应用程序而设计的 SwarmCache能够让典型的读操作大大超过写操作的这类应用提供更好的性能支持

 SwarmCache使用JavaGroups来管理从属关系和分布式缓存的通讯

 官方网站

  TreeCache / JBossCache

 JBossCache是一个复制的事务处理缓存 它允许你缓存企业级应用数据来更好的改善性能 缓存数据被自动复制 让你轻松进行JBoss服务器之间的集群工作 JBossCache能够通过JBoss应用服务或其他J EE容器来运行一个MBean服务 当然 它也能独立运行

 JBossCache包括两个模块 TreeCache和TreeCacheAOP

 TreeCache 是一个树形结构复制的事务处理缓存

 TreeCacheAOP 是一个 面向对象 缓存 它使用AOP来动态管理POJO(Plain Old Java Objects)

 注 AOP是OOP的延续 是Aspect Oriented Programming的缩写 意思是面向方面编程

 官方网站

  WhirlyCache

 Whirlycache是一个快速的 可配置的 存在于内存中的对象的缓存 它能够通过缓存对象来加快网站或应用程序的速度 否则就必须通过查询数据库或其他代价较高的处理程序来建立

lishixinzhi/Article/program/Java/hx/201311/25530

springboot applicationproperties 写多个配置文件的方法:

# 文件编码

bannercharset= UTF-8

# 文件位置

bannerlocation= classpath:bannertxt

# 日志配置

# 日志配置文件的位置。 例如对于Logback的`classpath:logbackxml`

loggingconfig= 

# %wEx#记录异常时使用的转换字。

loggingexception-conversion-word= 

# 日志文件名。 例如`myapplog`

loggingfile= 

# 日志级别严重性映射。 例如`logginglevelorgspringframework =  DEBUG`

logginglevel= 

# 日志文件的位置。 例如`/ var / log

loggingpath= 

# 用于输出到控制台的Appender模式。 只支持默认的logback设置。

loggingpatternconsole=

# 用于输出到文件的Appender模式。 只支持默认的logback设置。

loggingpatternfile= 

# 日志级别的Appender模式(默认%5p)。 只支持默认的logback设置。

loggingpatternlevel=

#注册日志记录系统的初始化挂钩。

loggingregister-shutdown-hook= false

# AOP 切面

# 添加@EnableAspectJAutoProxy。

springaopauto= true

# 是否要创建基于子类(CGLIB)的代理(true),而不是基于标准的基于Java接口的代理(false)。

springaopproxy-target-class= false

# 应用程序上下文初始化器

# 应用指标。

springapplicationindex= 

# 应用程序名称。

springapplicationname= 

# 国际化(消息源自动配置)

#

springmessagesbasename= messages

# 以逗号分隔的基础名称列表,每个都在ResourceBundle约定之后。

# 加载的资源束文件缓存到期,以秒为单位。 设置为-1时,软件包将永久缓存。

springmessagescache-seconds= -1

# 消息编码。

springmessagesencoding= UTF-8

# 设置是否返回到系统区域设置,如果没有找到特定语言环境的文件。

springmessagesfallback-to-system-locale= true

# REDIS (Redis 配置)

# 连接工厂使用的数据库索引。

springredisdatabase= 0

# Redis服务器主机。

springredishost= localhost

# 登录redis服务器的密码。

springredispassword= 

# 给定时间池可以分配的最大连接数。 使用负值为无限制。

springredispoolmax-active= 8

# 池中“空闲”连接的最大数量。 使用负值来表示无限数量的空闲连接。

springredispoolmax-idle= 8

# 连接分配在池耗尽之前在抛出异常之前应阻止的最大时间量(以毫秒为单位)。 使用负值无限期地阻止。

springredispoolmax-wait= -1

# 定义池中维护的最小空闲连接数。 此设置只有在正值时才有效果。

springredispoolmin-idle= 0

# redis服务器端口

springredisport= 6379

# redis服务器名称

springredissentinelmaster=

# springredissentinelnodes= 

# 连接超时(毫秒)。

springredistimeout= 0

# 管理员 (Spring应用程序管理员JMX自动配置)

# 开启应用管理功能。

springapplicationadminenabled= false

# JMX应用程序名称MBean。

springapplicationadminjmx-name= orgspringframeworkboot:type= Admin,name= SpringApplication

# 自动配置

# 自动配置类排除。

springautoconfigureexclude= 

# spring 核心配置

# 跳过搜索BeanInfo类。

springbeaninfoignore= true

# spring 缓存配置

# 由底层缓存管理器支持的要创建的缓存名称的逗号分隔列表。

springcachecache-names= 

# 用于初始化EhCache的配置文件的位置。

springcacheehcacheconfig= 

# 用于创建缓存的规范。 检查CacheBuilderSpec有关规格格式的更多细节。

springcacheguavaspec= 

# 用于初始化Hazelcast的配置文件的位置。

springcachehazelcastconfig= 

# 用于初始化Infinispan的配置文件的位置。

springcacheinfinispanconfig= 

# 用于初始化缓存管理器的配置文件的位置。

springcachejcacheconfig= 

# 用于检索符合JSR-107的缓存管理器的CachingProvider实现的完全限定名称。 只有在类路径上有多个JSR-107实现可用时才需要。

springcachejcacheprovider= 

# 缓存类型,默认情况下根据环境自动检测。

springcachetype= 

# spring配置 (配置文件应用侦听器)

# 配置文件位置。

springconfiglocation= 

# 配置文件名。

springconfigname= application

Springboot的多配置文件是指:系统中存在多个配置文件,在不同的运行环境使用不同的配置文件即可。

启动项目的方法一般有两种 :

1、 运行RootApplication中的main方法。

2、 使用命令:mvn spring-boot:run

这两方法默认都是使用applicationproperties中的配置信息,如果有指springprofilesactive则使用指定的配置信息,这种方式一般用在产品运行时,在开发和测试的时候则需要指定配置文件。

这怎么会对程序没有影响啊,All calls to this method via a proxy will be routed directly to the proxy会产生脏数据的

这是spring事物管理报的错,如果不处理你的数据就很危险了,because it is final,去看看你的方法是不是final的

spring的事物代理是继承你写的类,然后在你的基础上加事物管理,final的他继承不了

宏观方面

一、 JAVA。

要想成为JAVA(高级)工程师肯定要学习JAVA。一般的程序员或许只需知道一些JAVA的语法结构就可以应付了。但要成为JAVA(高级)

工程师,您要对JAVA做比较深入的研究。您应该多研究一下JDBC、IO包、Util包、Text包、JMS、EJB、RMI、线程。如果可能,希望您

对JAVA的所有包都浏览一下,知道大概的API,这样您就发现其实您想实现的很多功能,通过JAVA的API都可以实现了,就不必自己费太多的脑经 了。

二、 设计模式。

其实写代码是很容易的事情,我相信您也有同感。但如何写得好就比较难了。这个“好”字包括代码可重用性,可维护性,可扩展性等。如何写出好的代

码往往要借助一些设计模式。当然长期的代码经验积累,只要您用心,会使您形成自己代码风格。相信您的代码也比较符合代码的可重用性,可维护性,可扩展性。

但既然前人已经给我们总结出了经验,我们何不踩着前人的肩膀前进

三、 XML。

现在的系统中不使用XML几乎是不可能的。XML的功能非常强大,它可以做数据转换、做系统的配置、甚至可保存您的系统业务数据。因此您必须了解

XML,包括它的语法,结构。您还需要比较熟练的使用解析XML的一些API,比如JDOM,SAX等,因为在我们一般的项目中,XML往往担当系统配置

信息的作用,您需要用这些API解析这些配置信息,开发完美的项目。

四、 精通使用一种或两种框架。

“框架都会有许多可重用的代码,良好的层次关系和业务控制逻辑,基于框架的开

发使你可以省出很多的开发成本”。这里希望您能精通,更多的是希望您能通过框架的使用了解框架的思想。这样您在开发一个项目时思路会开阔一些,比如您

会想到把SQL语句与您的JAVA代码分开,再比如您会考虑把您的业务逻辑配置到XML或者数据库中,这样整个项目就很容易扩张了。

五、 熟悉主流数据库。其实真正比较大的项目都是有人专门做数据库的,但往往很多项目要求作为(高级)工程师的您也参与数据库的设计以及SQL的编写。所以为了

更好的为国家做贡献,建议您还是多了解一些主流数据库,比如SQLSERVER,ORACLE,多连接SQL和存储过程以及触发器。如果您不是“科班”出

身,您还需要补充一些数据库原理方面的知识。

六、 精通一种或两种WEBServer。

因为作为JAVA工程师,特别时

想成为高级JAVA工程师的您,您不可避免地要部署您的项目到WebServer上,而且只有当您精通一种WebServer,您才可能最大限度地使用它

的资源,这往往可以节省很多时间和精力。

七、 UML。

您肯定想成为高级工程师,因此您有必要了解或熟练或精通UML,这取决于您有多大决心想成为高级工程师和项目经理。在比较正规的开发团队

中,UML是讨论项目的交流工具,您要想做一个软件工程师,您至少要能看懂,您要想做高级工程师,您要能通过它来描述您对项目的理解,尽管这不是必须,但

却很重要。

八、 站在高度分析问题:

这不是一个知识点,也不是通过书本就能学得到的。只所以提到这一点,是因为我比您还着急,我希望您更快的成为一个高级的软件工程师,而

不是一个一般的软件工程师。希望您在工作中多向您的系统分析员、需求分析员、系统设计员学习,多站在他们角度上去看您在开发的项目。在最好在项目之初先在

您的脑海里对项目有个大致的分析、设计,然后和他们进行比较,找找差别,想想缺点。

九、 工具。

您在这个阶段可能接触到不同的工具了,尽管您还需要使用JB或者IDEA,但能可能对

ROSE,Together要多了解一些,因为您要画UML了。不要再对Dreamweaver等HTML编辑器情有独钟了,那些JSP页面让初级程序员去写吧

微观方面

1Core Java部分

这是最基础的,对于一个java高级开发/设计人员,你需要对这一部分达到精通的水平,重点内容如下:

a面向对象编程思想(封装继承多态接口)

b字符串处理

cjavalang包,javautil包等常用包

djava异常处理

2Java高级部分

aJava I/O流

bJava多线程技术

cJava网络编程

dJava Swing

后两项可以了解即可,如果项目需要可以深入研究

3前端基本技能

HTML + CSS网页开发

JavaScript

Jquery

浏览器兼容性 CSS hack(了解)

4熟练使用JSP + Servlet进行开发

5MVC设计模式,原理,以及相关框架,如Struts

6SSH框架

7缓存技术 session & cookie

8熟练使用一种以上Java开发工具(Eclipse/MyEclipse/Jbuilder/Jcreator/IntelliJIEDA/NetBeans)

9熟练使用XML

JDOM w3cdom SAX

10Java设计模式

工厂模式,单例模式 ==

11Java反射机制

反射的各种用法

12了解或熟悉 C, C++, NET

13熟悉JDK的配置,环境变量

14数据库oracle必学,其他最好了解一种以上(mysql,sql server,access==)

oracle:视图,索引,存储过程,触发器,游标,包,常用函数 ==

15数据库原理

事务的原理,锁机制,表连接,复杂查询语句(工作经验),性能调优,锁表以及解决方案==

16JDBC,连接池

17Ajax,反向Ajax

18HTTP协议,request 和 response的原理,HTTP status(了解常用的),Https原理

19熟悉Linux基本命令,使用过Linux/Unix系统,可以编写shell脚本,可以在Linux上部署项目

20了解windows系统批处理脚本bat

21了解HTML5,最好学习过

22熟悉一种JS框架,如Prototype

23J2EE原理 熟悉一种以上web容器如Tomcat,JBoss,websphere,weblogic==

24熟悉ant或maven

25熟悉一门脚本语言,如python ,ruby

26了解php/ asp

27了解ftp协议及原理

28熟练使用Junit测试,熟悉Mockito等测试工具

29,熟悉javac,javadoc,native,native2ascii等常用命令

30熟悉常用的排序算法,如冒泡排序,快速排序等,最好自己研究过一些的算法。

31了解Flex(不学也没关系)

32了解敏捷开发模式

33工作流workflow至少用过一种,如OSworkflow,了解原理

34使用过***了解其原理

35熟悉jstl表达式和el表达式

36熟悉webservice,WSDL,SOAP

37处理,如上传,预览,限制大小等

38版本控制工具,CVS VSS SVN

39,JSON技术,JSON+AJAX

40分页技术,最好自己实现过不仅仅是用过要知道原理

41Java Mail

42Java读写txt,excel,JXL技术

43JVM原理,JVM内存管理,GC,Java堆栈池

44熟练使用下面的工具:

office办公软件,word,excel,ppt等

plsql,sqldevelop 数据库开发工具

outlook大公司都用

ue编辑器

浏览器控制台,调试

SHH/PUTTY 远程

45UML建模工具Rational Rose等

46 使用log4j

47使用过开放Api如百度,腾讯街景,新浪微博等

48页面静态化技术(伪静态页面)

49报表技术,使用过报表制作工具,如水晶易表。

50定时任务,如Spring batch ,学会自定义batch任务(不适用第三方工具)

51了解uuid

52b/s 和 c/s架构

53正则表达式

54了解jndi jms

55ERP

56UNICODE编码,乱码解决

57开源网络编辑器,如ckEditor

58二进制原理

59使用过,了解过开源论坛框架,如discuzz

60GWT,Closure框架

61了解大数据,云计算

62搜索引擎搜索技术

63软件工程,项目管理

职业要求

教育培训

计算机相关专业,大专及以上学历。相关专业证书有:Sun Certified Java Programmer(SCJP)和Sun Certified Java Developer(SCJD) 认证。

工作经验

有一定的软件分析设计能力;熟悉Java、Servlet、JSP、EJB等开发技术;熟练使用Eclipse或jbuilder等java开发工具;熟悉JAVA+STRUTS体系结构和开发工具;熟悉至少一种数据库的开发和设计;具有良好的学习能力,具有强烈的工作责任心、有良好的沟通能力和团队合作精神。

薪酬参考

据智联招聘上对上海java工程师的薪资据说显示,截止到2012年6月13日,java工程师的平均水平已达6435。根据现在移动互联网中安卓市场的份额,相信这一职业的工资水平会一直上升。

就业前景

Java是目前世界上最流行的计算机编程语言,是一种可以编写跨平台应用软件的面向对象的程序设计语言。这可以概括JAVA有着自己独特的优势:语言简单、是一个面向对象、分布式应用并且安全、体系结构中立并且可移植,最重要,它是一个动态语言。

权威统计机构统计——在所有软件开发类人才的需求中,对 JAVA工程师的需求达到全部需求量的60%~70%。JAVA工程师的薪水相对较高,通常来说,具有3~5年开发经验的工程师,拥有年薪 10万元是很正常的一个薪酬水平。

JAVA发展方向

一是成为管理人员,例如产品研发经理,技术经理,项目经理等继续;二是他的技术工作之路,成为高级软件工程师、需求工程师等。

还是看看IDC Java工程师的薪水相对较高。 Java软件工程师一般月薪范围在4000-10000元,远远超过了应届毕业生月薪2500元的平均水平。通常来说,有一年工作经验的Java高级软件工程师的薪酬大致在年薪10—13万左右。

JAVA就业方向:可以从事JSP网站开发、Java编程、Java游戏开发、Java桌面程序设计,以及其他与Java语言编程相关的工作。可进入电信、银行、保险专业软件开发公司等从事软件设计和开发工作。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » JAVA中各类CACHE机制实现的比较

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情