Tag: 缓存

Java和XML(JAXP) – 缓存和线程安全怎么样?

在使用Java API进行XML处理时,我想知道哪些对象可以重用 (在相同或不同的文档中),JAXP: DocumentBuilderFactory DocumentBuilder XPath Node ErrorHandler (编辑:我忘了这必须在我自己的代码中实现,抱歉) 是建议缓存这些对象还是JAXP实现已经缓存它们? 这些对象的(重新)使用是否是线程安全的 ?

spring 3.1 @Cacheable示例

我是Spring注释的新手,我想创建一个示例示例,该示例显示了在Spring 3.1中使用@Cacheable注释是否有任何人有指导来创建它?

实现LRU缓存的最佳方式

我正在研究LRU缓存实现的这个问题,其中在缓存大小已满之后,弹出最近最少使用的项目并将其替换为新项目。 我有两个实现: 1)。 创建两个看起来像这样的地图 std::map time_to_key std::map<key, std::pair> LRUCache 要插入新元素,我们可以将当前时间戳和值放在LRUCache中 。 当缓存的大小已满时,我们可以通过查找时间 _to_ 键中存在的最小时间戳并从LRUCache中删除相应的键来逐出最近的元素。 插入一个新项是O(1),更新时间戳是O(n)(因为我们需要在时间 _to_ 键中搜索对应于时间戳的k 。 2)。 有一个链表,其中最近最少使用的缓存出现在头部,新项目添加在尾部。 当项目到达时已经存在于高速缓存中,与该项目的键对应的节点被移动到列表的尾部。 插入一个新项是O(1),更新时间戳再次是O(n)(因为我们需要移动到列表的尾部),删除一个元素是O(1)。 现在我有以下问题: 对于LRUCache,这些实现中哪一个更好。 有没有其他方法来实现LRU Cache。 在Java中,我应该使用HashMap来实现LRUCache 我已经看到了诸如实现通用LRU缓存之类的问题,并且还遇到了诸如实现LRU缓存之类的问题。 通用LRU缓存是否与LRU缓存不同? 提前致谢!!! 编辑: 在Java中实现LRUCache的另一种方法(最简单的方法)是使用LinkedHashMap并覆盖boolean removeEldestEntry(Map.entry eldest)函数。

通过SpringCache缓存嵌套的可缓存操作

我被赋予了将SpringCache用于我们的一项服务以减少数据库查找次数的任务。 在测试实现时,我注意到一些可缓存的操作是通过log-statements多次调用的。 调查显示,如果在可缓存方法中调用可缓存操作,则根本不缓存嵌套操作。 因此,稍后调用嵌套操作会导致进一步查找。 下面列出了一个描述问题的简单unit testing: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {SpringCacheTest.Config.class} ) @DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS) public class SpringCacheTest { private final static String CACHE_NAME = “testCache”; private final static Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); private final static AtomicInteger methodInvocations = new AtomicInteger(0); public interface ICacheableService { String methodA(int length); String methodB(String name); } @Resource private ICacheableService cache; […]

java线程缓存刷新什么时候发生?

线程1:正在执行此循环 while(running) { // Do Task() } println(“Done”); 线程2设置为false如果运行是一个volatile变量,则thread1退出循环并打印“Done”。 我的问题是,如果运行不是易失性,Thread1何时从主内存中读取运行变量? 注意:我知道在关于同步和volatile变量的关系之前发生了,但是即使运行不是volatile或synchronized,线程1也会停止。 所以我的问题是线程1何时决定从主存储器中读取,因为没有同步或没有挥发性

我正在尝试使用Java的HttpURLConnection来执行“条件获取”,但我从未获得304状态代码

这是我的代码: final HttpURLConnection conn = (HttpURLConnection) sourceURL.openConnection(); if (cachedPage != null) { if (cachedPage.eTag != null) { conn.setRequestProperty(“If-None-Match”, cachedPage.eTag); } conn.setIfModifiedSince(cachedPage.pageLastModified); } conn.connect(); if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) { newCachedPage.eTag = conn.getHeaderField(“ETag”); newCachedPage.pageLastModified = conn.getHeaderFieldDate(“Last-Modified”, 0); } else if (conn.getResponseCode() == HttpURLConnection.HTTP_NOT_MODIFIED) { // Never reaches here } 我似乎永远不会得到HTTP_NOT_MODIFIED响应代码,甚至连续几次点击同一个服务器 – 页面肯定没有变化。 此外,conn.getHeaderField(“ETag”)似乎总是响应null,有时conn.getHeaderFieldDate(“Last-Modified”,0)返回0.我已经尝试过针对各种Web服务器。 谁能告诉我我做错了什么?

setCache()和CacheHint如何在JavaFX中协同工作?

关于JavaFX,我有以下问题: 我是否需要在Node上使用setCache(true)来为setCacheHint()设置的缓存提示实际产生任何效果? 应该调用setCache实际上是在某些时候还是大部分时间提高性能,即帧速率? 当我使用setCache(true)并且我应用缩放和其他变换时,我无法观察帧速率的任何变化。

如何在不缓存的情况下测量文件读取速度?

我的java程序花了大部分时间来阅读一些文件,我想优化它,例如,通过使用并发,预取, 内存映射文件等。 没有基准测试的优化是没有意义的,所以我进行了基准测试。 但是,在基准测试期间,整个文件内容都缓存在RAM中,与实际运行不同。 因此,基准测试的运行时间要小得多,而且很可能与现实无关。 我需要以某种方式告诉操作系统(Linux)不要缓存文件内容,或者更好地在每次基准测试运行之前清除缓存。 或者可能消耗大部分可用的RAM(32 GB),因此只有很小一部分文件内容适合。如何操作? 我正在使用卡尺进行基准测试,但在这种情况下我不认为它是必要的(它绝不是微基准测试),我不确定它是个好主意。

用于浏览器缓存的Servletfilter?

有谁知道如何编写一个servletfilter,它将在给定文件/内容类型的响应上设置缓存头? 我有一个提供大量图像的应用程序,我想通过让浏览器缓存那些不经常更改的浏览器来减少托管它的带宽。 理想情况下,我希望能够指定内容类型,并在内容类型匹配时设置适当的标头。 有谁知道怎么做这个? 或者,更好的是,他们愿意分享示例代码? 谢谢!

GWT中的客户端缓存

我们有一个gwt-client,可以从我们的服务器中获取大量数据。 从逻辑上讲,我想在客户端缓存数据,从而使服务器免于不必要的请求。 截至今天,我已经让我的模型处理数据的缓存,这种数据的扩展性不是很好。 这也成为一个问题,因为我们团队中的不同开发人员开发了自己的“缓存”function,这使得项目充满了重复。 我正在考虑如何实现一个“单一入口点”,它处理所有缓存,使模型对如何处理缓存毫无头绪。 有没有人在GWT中有客户端缓存的经验? 是否有可以实施的标准方法?