Tag: 缓存

反映清除Android应用缓存的方法

我试图清除除我自己以外的其他Android应用程序的应用程序缓存。 为此,我在PackageManager类上使用reflection。 但是,每当我在调用它之前初始化该方法时,它总是最终为null。 private void initiateClearUserData() { // Invoke uninstall or clear user data based on sysPackage String thePackageName; PackageManager pm = speedy.this.getPackageManager(); List installedApps = pm.getInstalledApplications(0); ApplicationInfo ai;// = installedApps.get(0); ActivityManager.RunningAppProcessInfo process; for(int x=0; x<4; x++){ ai = installedApps.get(x); 这是我的问题所在: thePackageName = ai.packageName.toString();// mAppEntry.info.packageName; Method deleteApplicationCacheFiles = null; mClearCacheObserver = new ClearCacheObserver(); try { […]

编写自定义Spring @Cacheable注释

我目前正在编写一个自定义的@Cacheable注释,除了Spring的@Cacheable提供的那些外,它还将采用额外的元数据属性。 但是,Spring需要知道如何解析这个新的注释。 我的理解是我需要扩展和覆盖AnnotationCacheOperationSource的determineCacheOperations(),以便可以使用从其初始化的适当的CacheableOperation类来解析新的注释。 这是正确的方法吗? 问候, 史蒂夫

隐藏用户的缓存数据,以便用户无法访问它

我已在我的应用程序中实现了离线缓存,为此我将图像存储在外部存储中。我会根据外部存储中的可用空间自动删除缓存数据,一旦限制达到指定值。我希望缓存数据为保持对用户的隐藏,以便用户无法访问它。是否可以隐藏用户的缓存数据?或者有什么方法可以使缓存的数据文件夹可见性在外部存储中不可见?

Java中是否存在一个到期的映射,它会在* first * insertion之后的一段时间后到期?

我试着看一下缓存机制,比如Guava的Cache 。 它们的到期时间仅为自上次更新以来。 我正在寻找的是一个数据结构,它存储密钥并在第一次插入后经过一段时间后清理密钥。 我计划将价值作为一些反击。 一个场景可能是一个沉默的工作者,它第一次做了一些工作但是在一段有效期内保持沉默 – 即使工作被要求。 如果在到期时间之后要求工作,他将完成工作。 知道这样的数据结构吗? 谢谢。

Guava:Cacheloader.load()如何工作

假设我有两个线程,即线程A和线程B,以及一个空的并且有10分钟到期的LoadingCache 。 CacheLoader用于构建LoadingCache以及它从数据库中检索的所有内容。 假设LoadingCache仍为空,并且线程A和线程B同时调用了LoadingCache.get(key) 。 CacheLoader.load()方法会被调用两次吗? 从我在文档中看到的内容: 如果get(K)或getUnchecked(K)的另一个调用当前正在加载key的值,则只需等待该线程完成并返回其加载的值 。 请注意,多个线程可以同时加载不同键的值。 为了validation我的理解,如果线程A和线程B之间有5ms的差异,那么线程A将自动锁定CacheLoader.load()方法,加载值,然后线程B只是获取加载的值。 这样,不需要同步。 这是正确的吗?

Infinispan with Spring,从缓存中转换失败

我有部署到WildFly 10的Spring 1.4应用程序,它使用的是WildFly内置的Infinispan 8.1。 我已经设法正确部署了应用程序,这是Infinispan的配置:1)CacheManager @Bean public CacheManager cacheManager() throws Exception { JndiTemplate jndiTemplate = new JndiTemplate(); EmbeddedCacheManager embededCacheManager = (EmbeddedCacheManager) jndiTemplate.lookup(“java:jboss/infinispan/container/CONTAINER”); SpringEmbeddedCacheManager cacheManager = new SpringEmbeddedCacheManager(embededCacheManager); } 2)pom.xml org.infinispan infinispan-spring 8.1.0.Final org.springframework.boot spring-boot-starter-logging javax.servlet servlet-api org.apache.logging.log4j log4j-core org.apache.logging.log4j log4j-jcl org.apache.logging.log4j log4j-slf4j-impl org.apache.maven.plugins maven-war-plugin org.infinispan, org.infinispan.commons, org.jboss.as.clustering.infinispan export 当我第一次部署应用程序时,一切正常。 但是,在启动缓存后,以及重新部署应用程序时,使用缓存时出现以下错误: java.lang.ClassCastException: com.dplesa.Class cannot be cast […]

EhCache:简单程序不起作用

我是EhCache的新手,并且正在实现分布式缓存服务。 我正在尝试简单的程序,但无法解决错误。 我能够将数据存储到缓存中,但无法检索它。 这是我为测试编写的两个简单程序。 package com.db.tests; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; import net.sf.ehcache.Element; public class TestCachePut { public TestCachePut() { // TODO Auto-generated constructor stub } /** * @param args */ public static void main(String[] args) { CacheManager cache= CacheManager.create(“E:/ehcache-2.6.2/ehcache.xml”); Cache caches = cache.getCache(“cache1”); Element element= new Element(“testKey”, “inserted to cache”); caches.put(element); System.out.println(“Put in to cache”); […]

多级进程内缓存的更好选择是什么?

在我的spring启动应用程序中,我需要实现进程内多级缓存以下是需要缓存的数据示例: 客户名称(密钥,字符串) – 数据实体名称(密钥,字符串) – config-1(值,JSONObject) – config-2(值,JSONObject) 我计划有几百个客户条目,每个条目最多有一百个“配置”JSONObjects 我正在寻找ehcache: Cache cache = manager.getCache(“sampleCache1”); Element element = new Element(“key1”, “value1”); cache.put(element); 在这种情况下,我会用“Customer_Name”代替“key1”,用“My Customer”代替“value1”,但是我需要构建一个层次结构: customer -data entity -config 我不知道如何用ehcache做到这一点。 我也不确定我是否有更好的选择。 有没有人用ehcache或任何其他库实现这样的多级分层缓存?

Apache Ignite – java.lang.ClassNotFoundException:未知对

这是我最后一次尝试将Apache Ignite 2.0配置为使用Cassandra作为持久层和ODBC作为查询层。 ODBC配置没问题,我可以使用sql在缓存中放入和获取数据,但是当我将Cassandra(版本3.9通过docker image)作为持久层插入时,我得到了: java.lang.ClassNotFoundException: Unknown pair [platformId=0, typeId=1262449073] 我尝试使用谷歌搜索此exception,但没有得到任何有用的提示。 这是我的Ignite配置 : boolean persistence = true; IgniteConfiguration cfg = new IgniteConfiguration(); CacheConfiguration configuration = new CacheConfiguration(); configuration.setName(“test-cache”); configuration.setIndexedTypes(String.class, ValueClass.class); if(persistence){ // Configuring Cassandra’s persistence DataSource dataSource = new DataSource(); dataSource.setContactPoints(“172.17.0.2”); RoundRobinPolicy robinPolicy = new RoundRobinPolicy(); dataSource.setLoadBalancingPolicy(robinPolicy); dataSource.setReadConsistency(“ONE”); dataSource.setWriteConsistency(“ONE”); String persistenceSettingsXml = FileUtils.readFileToString(new File(persistenceSettingsConfig), “utf-8”); […]

如何从java中获取int中最重要的n位

我有一个int,我想获得java中19个最重要的位。 我尝试了各种各样的方法,但都没有。 有人可以帮帮我吗?