- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个文件系统,它使用 fusion 库和 jnr-fuse ( https://github.com/SerCeMan/jnr-fuse ) 作为 java 绑定(bind)来封装对 Amazon S3 存储桶的访问。
我有第一个版本正在运行,目前正在做一些代码清理和重构工作,试图将所有内容纳入适当的多层架构。
到目前为止,我大致有以下内容:
我目前遇到的困难是持久层:由于与 S3 的所有通信实际上都是通过 http 完成的,因此我正在进行一些相当数量的缓存以减少流量并提高性能。问题是缓存最适合在哪里......
显然,实际的 DAO 不应该受到任何类型的缓存/锁定逻辑的污染 - 它们应该只处理对数据的实际访问(即对 S3 进行 http 调用)。另一方面,服务层也不应该真正关心缓存(以防持久层及其缓存需求发生变化),因此我正在考虑执行以下操作之一:
从服务层的角度来看,版本 1 是更干净的版本 - 使用缓存和不使用缓存之间没有任何区别,因为对持久层的所有调用都将针对相同的接口(interface)。另一方面,它还将有关文件状态或“生命周期”的所有逻辑(打开 -> 读/写 -> 关闭)传输到持久层。版本 2 将管理“缓存”层内文件的生命周期,我认为这将使整个代码对于刚接触代码的人来说更容易理解。另一方面,它还假设总是存在缓存层(这可能是正确的)。
从设计的角度来看,上述方法还有其他优点和缺点吗?或者是否有任何模式可以解决此类问题?
现在我宁愿选择选项 2,但听到一些意见真的很有趣。
最佳答案
您为什么反对在 DAO 中进行缓存?这一直是我缓存的完美地方。这是一个数据访问问题,因此进入数据访问层。为了方便起见,我有几次使用了各种 AOP 实现,但 90% 的时间,我在 DAO 内实现缓存逻辑。
缓存本身并不存在于 DAO 中,它通常是它自己的接口(interface),因此我可以在实现之间进行交换(内存中、磁盘上等)。
在使用 Apache HTTP 客户端自己的内置缓存时,我也很幸运。它允许您尊重 HTTP 缓存语义,或使用自定义逻辑覆盖它。
关于caching - SW-Architecture - 服务层和持久层之间的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36529803/
我需要能够在我的 C 开发环境下使用浮点运算(CPU:~12 MHz Motorola 68000)。标准库不存在,这意味着它是一个简单的 C 而不是 - 由于其他几个问题,它不是 gcc 我尝试编译
我有 4 种不同的设备: 华硕平板电脑,屏幕尺寸 7 英寸 联想平板电脑,屏幕尺寸 7 英寸 HTC 手机,屏幕尺寸 5 英寸 HTC 手机,屏幕尺寸 4.7 英寸 我想知道我的设备的最小宽度 (sw
我正在使用 Java 的下一个版本: openjdk version "1.8.0_111" OpenJDK Runtime Environment (build 1.8.0_111-8u111-
背景 我目前正在为一项家庭作业编写小型 MIPS 程序,并在此过程中学习了一些语言。我对此非常陌生,因此,即使涉及到我正在执行的操作的最基本方面,我也不确定自己。此外,我的导师坚持不在我们的作业中使用
我试图将一个整数存储到 $s0 中,这是在一个循环标签中。 但问题是我将打印一个整数并将其保存在 $s0 中。 我做了以下事情 sw $t7,0($s0) addi $s0,$s0,4 我认为下面的代
我正在开发一个文件系统,它使用 fusion 库和 jnr-fuse ( https://github.com/SerCeMan/jnr-fuse ) 作为 java 绑定(bind)来封装对 Ama
我正在开发一个文件系统,它使用 fusion 库和 jnr-fuse ( https://github.com/SerCeMan/jnr-fuse ) 作为 java 绑定(bind)来封装对 Ama
我正在使用 Google's SW-Toolbox library在我的应用程序中处理服务人员的职责;但是,每当我尝试从 Parse 加载视频(使用 Parse 进行文件托管)时,我都会在控制台中收到
我想创建我的第一个 PWA 应用程序,我想使用 sw-precache .我想在我的应用程序中有推送通知,但我没有看到任何添加 push 的选项通知和notification click听众来自 sw
已解决:删除了编辑文本并显示了键盘使用 imgr.toggleSoftInput(0, 0); 原始问题: 您好,我正在开发具有触摸板/键盘模式的 Remote 应用程序。我的问题是 SW 键盘。当用
此处:http://cs.oswego.edu/pipermail/concurrency-interest/2013-November/011954.html其中一位对话者说: In your re
在FFMpeg中,我们总是问好libswscale和libswresample,但是,libswscale和libswresample中的sw是什么意思呢? 最佳答案 sw 是软件的缩写,表示功能由通
本文整理了Java中com.ctc.wstx.sw.XmlWriterWrapper类的一些代码示例,展示了XmlWriterWrapper类的具体用法。这些代码示例主要来源于Github/Stack
本文整理了Java中com.ctc.wstx.sw.XmlWriter类的一些代码示例,展示了XmlWriter类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven
通过使用 git clone https://github.com/gpac/gpac gpac_public我得到了 1.0.0 版本,rev 156,我需要回到 0.8.0 版本。 我是新的 gi
我有一个非常旧的 perl 系统(大约 8-10 年),但是一个很大(100+ pm 文件)。现在由于某种原因需要“重新现代化”它 - 一步一步。 我想做的第一件事就是将我的编译指示插入每个模块: u
我创建了 layout-sw600dp/layout.xml,它在设备 A 上看起来很棒。但是在设备 B 上,这个布局已经融化并且看起来很糟糕。我想知道我的布局在最坏情况下的外观(正好 600dp 宽
我有以下 sw-precache-config.js module.exports = { staticFileGlobs: [ 'index.html', 'manifest.j
我正在为计算机体系结构类(class)学习 MIPS 汇编。对于本类(class),该类(class)使用 MARS。在将十个数字放入数组中进行分配时,我决定测试一些东西。我想看看我是否可以创建一个循
我正在使用 C 语言进行嵌入式编程(即目标是微 Controller ),并且我可以将我的软件模块作为目标代码(库)提供,供客户团队使用。 通常我习惯以源代码的形式提供我的软件,我知道如何集成(编译、
我是一名优秀的程序员,十分优秀!