偷窥JCache API(JSR 107)

这篇文章从较高的层次介绍了JCache API,并提供了一个预告片–刚够您(希望)开始对此发痒;-)

在这篇文章中...。

  • JCache概述
  • JCache API,实现
  • JCache API支持的(Java)平台
  • 快速了解Oracle Coherence
  • 有趣的内容– Project Headlands(Adam Bien还原了JCache的内容),Java One 2014上与JCache相关的演讲,链接到资源,以了解有关JCache的更多信息

什么是JCache?

JCache(JSR 107)是Java的标准缓存API。 它为应用程序提供了一个API,使其能够创建和使用对象的内存缓存。 好处是显而易见的–无需将精力集中在实现缓存的细节上,而将时间花费在应用程序的核心业务逻辑上就更好了。

JCache组件

该规范本身非常紧凑,并且直观直观。 API定义了高级组件(接口),下面列出了其中的一些

  • 缓存提供程序 –用于控制缓存管理器,可以处理其中的几个,
  • 缓存管理器 –处理缓存上的创建,读取,销毁操作
  • 缓存 –存储条目(实际数据)并公开CRUD接口以处理条目
  • 条目 –在类似于java.util.Map的键值对之上的抽象

jcache高级组件

JCache API组件的层次结构

JCache实现

JCache定义了当然由不同的供应商(也称为提供者)实现的接口。

  • Oracle一致性
  • 淡褐色
  • Infinispan
  • ehcache
  • 参考实施 –这更多是出于参考目的,而不是生产质量实施。 不过,这是按照规范的,您可以放心,事实上它也确实通过了TCK

从应用程序的角度来看,所需要做的就是在类路径中提供实现。 API还提供了一种通过标准机制进一步微调特定于您的提供程序的属性的方法。

您应该能够从JCP网站链接中跟踪JCache参考实现的列表。

JCache提供程序检测

  • 当类路径上只有一个JCache提供程序时,将自动进行JCache提供程序检测
  • 您也可以从以下选项中选择

Java平台支持

  • 符合Java SE 6及更高版本
  • 没有根据Java EE集成定义任何详细信息。 这并不意味着它不能在Java EE环境中使用–只是尚未标准化。
  • 无法作为经过测试的标准插入Java EE 7
  • Java EE 8候选人

  • 除了亚当·比恩本人外, 别无他物 !
  • 运行中的Java EE 7,Java SE 8和JCache
  • 通过JAX-RS(REST)公开JCache API
  • 使用Hazelcast作为JCache提供程序
  • 强烈推荐 !

Oracle一致性

这篇文章通常涉及JCache的高级内容。 但是,关于Oracle Coherence的几行内容通常会帮助您了解事物

相干徽标

  • Oracle Coherence是Oracle Cloud Application Foundation堆栈的一部分
  • 它主要是内存中的数据网格解决方案
  • 总体上致力于使应用程序更具可扩展性
  • 重要的是要知道,从版本12.1.3起,Oracle Coherence包括JCache的参考实现(在下一节中有更多介绍)

Oracle Coherence中的JCache支持

  • 对JCache的支持意味着应用程序现在可以使用标准API来访问Oracle Coherence的功能。
  • Coherence可以通过在其现有接口(NamedCache等)上简单地提供一个抽象来实现这一点。 应用程序处理标准接口(JCache API),并且对该API的调用委托给现有的Coherence核心库实现
  • 对JCache API的支持还意味着,无需在应用程序中使用Coherence特定的API,从而导致供应商中立的代码等同于可移植性
    具有讽刺意味的是–支持标准API并始终让您的竞争对手参与其中;-)但是,嘿! 这就是健康的竞争和优质的软件的全部意义所在!
  • 谈论健康竞争–除了与JCache相关的标准功能外,Oracle Coherence确实支持许多其他功能。
  • Oracle Coherence发行版包含用于JCache实现的所有库

coherence_lib

  • coherence-jcache.jar中的服务定义文件将其限定为有效的JCache提供程序实现

服务定义

对Oracle Coherence感到好奇吗?

  • 快速入门页面
  • 文献资料
  • 安装
  • 有关Coherence和JCache组合的进一步阅读-Oracle Coherence文档

2014年Java One上的JCache

在Java One 2014上围绕JCache进行的几场精彩演讲

  • 来吧,代码,缓存,计算! 史蒂夫·米利奇(Steve Millidge)
  • 使用 Brian Oliver和Greg Luck 的New JCache

希望这很有趣:-)

干杯!

翻译自: https://www.javacodegeeks.com/2015/02/sneak-peek-jcache-api-jsr-107.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

electron IPC通信报错Uncaught (in promise) Error: An object could not be cloned.

项目场景: electronreact 问题描述 electron 中用IPC通信 Uncaught (in promise) Error: An object could not be cloned. e Error: An object could not be cloned.at EventEmitter.i.invoke (node:electron/js2c/sandbox_bundle:33)at uploadImg (YakitPluginI…

Linux C中发现无法连接到math.h中的数学函数解决办法

Linux 下使用数学函数 今天在编译一个用到log函数的c文件时,遇到一个错误:/tmp/ccQuh0ns.o(.text0x2bb): In function Compute:: undefined reference to log到网上查了一下这个问题,原因及解决方法如下:出现这个错误是因为编译器…

canvas 圆角矩形填充_一篇文章让你学会你最“害怕”的Canvas,太有意思了

Canvas画布 基本用法<canvas idcanvas width"150" height"150"></canvas> <canvas>看起来跟img标签有点像&#xff0c;唯一不同的是它没有src属性和alt属性。实际上&#xff0c;canvas标签只有两个属性:width和height。 如果没有设置宽度…

通过流而不是列表

开幕式免责声明&#xff1a;这并不总是一个好主意。 我将介绍这个主意&#xff0c;以及为什么它是一个好主意的一些原因&#xff0c;但随后我将讨论一些不太理想的实例。 懒惰 如您所知&#xff0c;我在Python中涉猎的程度几乎与在Java中一样。 我一发现Python就很喜欢生成器。…

react-infinite-scroll-component 第二次加载无法触发next

react-infinite-scroll-component 是一款滚动加载插件&#xff0c;在页面滚动的时候加载数据&#xff0c;在使用过程遇到一个坑。 坑的描述&#xff1a; 在页面滚动的时候&#xff0c;infiniteScroll页面数是自动1,打个比方说&#xff0c;页面加载到第三页&#xff0c;infinit…

linux查看文件大小和查看磁盘使用情况

1、df -h 显示目前所有文件系统的可利用空间及和使用情况。参数 -h表示人类可以看懂的格式输出 2、du -h --max-depth1 目录 查询指定文件夹下各个文件夹或文件的大小 3、du -sh test/ 或 du -sm * |sort -n 查看文件目录的大小和数量&#xff0c;并且可以按大小排序 du和df的…

abaqus单位_ANSYS和ABAQUS哪个好,一个例子告诉你

分别用ANSYS和ABAQUS来分析同一个题目并考察其异同点。【问题】一根悬臂梁&#xff0c;长200mm,截面是30mm*20mm的矩形(高度方向是20mm)。该梁左端固定&#xff0c;在其上面施加向下的分布力系&#xff0c;载荷集度是0.6Mpa.已知材料使用低碳钢&#xff0c;弹性模量是200GPA&am…

electron nodejs上传文件获取文件流

使用antd upload组件&#xff0c;electron中ipcRenderer.invoke无法传递文件流&#xff1b; 传文件路径过去&#xff0c;然后使用nodejs获取文件流 // 创建数据流const readerStream fs.createReadStream(path)const formData new FormData()formData.append("file_name…

使用junit做其他事情

junit&#xff01;单元测试 Junit是Java单元测试框架。 通常&#xff0c;我们将其用于单元测试&#xff0c;但是很多时候我们也使用它来执行集成测试。 主要区别在于&#xff0c;单元测试可测试单个单元&#xff0c;而集成测试则可测试不同类如何协同工作。 这样&#xff0c;集…

转行python能拿到多少钱_想转行学python过来人提醒大家几点

因为目前python非常火&#xff0c;应用也非常广泛&#xff0c;是目前最火的行业之一&#xff0c;竞争很大&#xff0c;工资很高&#xff0c;未来发展也极好。Python 现在到底有多热呢&#xff1f;我觉得我们可以看以下的这2组数据。第一&#xff1a;Python 排名稳居前五得益于 …

纯前端 导出excel 插件xlsx和file-saver

使用插件 xlsx 导出表格&#xff0c;file-saver保存文件 vue-element-admin,源码中找的&#xff1b;导出上万条数据还是很快的 gitHub地址,/vendor/Export2Excel的js文件 使用方法 export_json_to_excel({header: res.header,data: res.exportData,filename: ${fileName}1-$…

用Java创建自己的AOP

介绍 如您所知&#xff0c;AOP是Spring框架提供的最好的功能之一&#xff0c;它在实现跨领域关注的同时提供了最大的灵活性。 您是否想到过AOP在Spring如何工作&#xff1f; 有时这是高级技术面试时要问的问题。 有时&#xff0c;仅涉及核心Java时&#xff0c;这个问题变得更加…

linux中常用的头文件

#include <linux/***.h> 是在linux-2.6.29/include/linux下面寻找源文件。 #include <asm/***.h> 是在linux-2.6.29/arch/arm/include/asm下面寻找源文件。 #include <mach/***.h> 是在linux-2.6.29/arch/arm/mach-s3c2410/include/mach下面寻找源文件。 #in…

java的文本框如何回车键触发按钮_java回车触发按钮的代码

使用的时候&#xff0c;只要将SwingUtils .enterPressesWhenFocused(JButton)这样就可以实现回车时候&#xff0c;触发按钮。另外文本输入框回车触发事件则是&#xff1a;SwingUtils .enterPressesWhenFocused(JTextField textField,ActionListener actionListener) 。其中acti…

Typescript Interface 覆盖继承的接口定义

type Merge<M, N> Omit<M, Extract<keyof M, keyof N>> & N;使用方式 interface A {name: string;color?: string; } type B Merge<A, {name: string | number;favorite?: boolean; }>;参考地址

JBoss Fuse –一些鲜为人知的技巧

TL; DR 将Java静态调用公开为Karaf Shell本机命令 在部署时覆盖OSGi标头 在使用OSGi片段部署时间后覆盖OSGi标头 将Java静态调用公开为Karaf Shell本机命令 作为必须与支持人员和客户进行协作的软件工程师的一部分&#xff0c;我经常发现自己需要从无法访问的系统中提取其他…

cocos2d-x学习笔记之图片分辨率适配

从wiki里面看到&#xff0c;新的版本是去掉了enabelRetinaDisplay&#xff0c;因为要兼容iosandroid&#xff0c;其他平台是否也是如此&#xff0c;未知&#xff5e; 测试代码 std::vector<std::string> resDirOrders; resDirOrders.push_back("testImage2"…

vue 外部方法调用内部_vue函数内部调用外部函数,报错外部函数不是函数

zeroFill (num,len,radix) {let str num.toString(radix || 10);while (str.length < len) {str 0 str;}return str;},initMap() {console.log(this.zeroFill(50, 8, 16))//底图图层数据源var googleDXSource new XYZ({tileUrlFunction: function (coor) {console.log(c…

electron+react 用户自定义安装路径

使用electron-builder打包electron项目&#xff0c;其中Windows提供了NSIS来自定义安装程序。 在主进程的package.json文件中添加一些配置 "scripts":{},"build": {"directories": {"output": "release"},"nsis":…

模型微调入门介绍一

备注&#xff1a;模型微调系列的博客部分内容来源于极客时间大模型微调训练营素材&#xff0c;撰写模型微调一系列博客&#xff0c;主要是期望把训练营的内容内化成自己的知识&#xff0c;我自己写的这一系列博客除了采纳部分训练营的内容外&#xff0c;还会扩展细化某些具体细…