小编ezt*_*tam的帖子

TTS错误:泄露了ServiceConnection android.speech.tts.TextToSpeech

看来你必须在onActivityResult中调用super方法

super.onActivityResult(requestCode, resultCode, data);
Run Code Online (Sandbox Code Playgroud)

当我按下Activity上的后退按钮时,我从TTS收到此错误.显然,这是因为我没有调用shutdown(),但我是,请参阅下面的onDestroy().我制作了一个活动扩展的抽象TtsActivity类.我在所有子类中调用super.onDestroy().

12-05 18:04:05.268: ERROR/ActivityThread(30240): Activity com.mysite.myapp.ActivitySelectItGame has leaked ServiceConnection android.speech.tts.TextToSpeech$1@43e9b4a0 that was originally bound here
12-05 18:04:05.268: ERROR/ActivityThread(30240): android.app.ServiceConnectionLeaked: Activity com.mysite.myapp.ActivitySelectItGame has leaked ServiceConnection android.speech.tts.TextToSpeech$1@43e9b4a0 that was originally bound here
12-05 18:04:05.268: ERROR/ActivityThread(30240):     at android.app.ActivityThread$PackageInfo$ServiceDispatcher.<init>(ActivityThread.java:1121)
12-05 18:04:05.268: ERROR/ActivityThread(30240):     at android.app.ActivityThread$PackageInfo.getServiceDispatcher(ActivityThread.java:1016)
12-05 18:04:05.268: ERROR/ActivityThread(30240):     at android.app.ContextImpl.bindService(ContextImpl.java:863)
12-05 18:04:05.268: ERROR/ActivityThread(30240):     at android.content.ContextWrapper.bindService(ContextWrapper.java:347)
12-05 18:04:05.268: ERROR/ActivityThread(30240):     at android.speech.tts.TextToSpeech.initTts(TextToSpeech.java:467)
12-05 18:04:05.268: ERROR/ActivityThread(30240):     at android.speech.tts.TextToSpeech.<init>(TextToSpeech.java:433)
12-05 18:04:05.268: ERROR/ActivityThread(30240):     at com.mysite.android.library.activity.ActivityTTS.onActivityResult(ActivityTTS.java:98)
12-05 18:04:05.268: ERROR/ActivityThread(30240):     at com.mysite.myapp.ActivityGame.onActivityResult(ActivityGame.java:445)
12-05 18:04:05.268: ERROR/ActivityThread(30240):     at android.app.Activity.dispatchActivityResult(Activity.java:3890) …
Run Code Online (Sandbox Code Playgroud)

android

21
推荐指数
3
解决办法
2万
查看次数

在Windows下的git bash中扩展$ PATH变量

我试图通过将以下内容添加到文件〜/ .bashrc来扩展我的$ PATH变量在git bash(MinGW shell)中

PATH=$PATH':/c/Program Files/maven/apache-maven-3.2.5/bin'
Run Code Online (Sandbox Code Playgroud)

在我这样做并重新启动bash后,似乎$ PATH变量被扩展为预期:

$ echo $PATH
MANY_OTHER_PATHS:/c/Program Files/maven/apache-maven-3.2.5/bin
Run Code Online (Sandbox Code Playgroud)

但我仍然无法在给定目录中执行程序:

$ mvn
bash: mvn: command not found
Run Code Online (Sandbox Code Playgroud)

这里出了什么问题?如何正确扩展PATH变量?

mingw path git-bash

15
推荐指数
3
解决办法
2万
查看次数

log4j 中 LDAP 查找功能背后的意义

最近,一个 0day 漏洞被披露,该漏洞利用了log4j 中的安全漏洞,允许未经授权的远程代码执行。

我想知道,真正的原因是什么,为什么 log4j 实现了这个 JNDI 查找,这根本导致了漏洞?

在 log4j 中使用此 LDAP 查找功能的示例是什么?

log4j log4j2

15
推荐指数
1
解决办法
5570
查看次数

如何从Apache HttpClient 4.x获取cookie?

如何从HttpClient类型的现有对象获取cookie?我正在使用HttpClient版本4.3.3,它没有方法httpClient.getCookieStore()了.

httpclient apache-commons-httpclient apache-httpclient-4.x

10
推荐指数
1
解决办法
1万
查看次数

Spring Cron调度程序“禁用模式”

我的应用程序从属性文件加载了一些cron模式。我使用这样的@Scheduled注释:

@Scheduled(cron = "${config.cronExpression:0 0 11,23 * * *}")

现在我想禁用一些任务,最简单的解决方案是输入永远不会运行的cron模式。为此,我考虑过使用仅在过去特定日期执行的cron表达式。但不幸的是,Spring cron表达式不允许在过去添加年份或日期。

有没有永远不会运行的模式?

cron spring scheduled-tasks

10
推荐指数
3
解决办法
4959
查看次数

for循环的每个循环都是原子操作吗?

incrementAndGet以下 AtomicBigInteger 实现的方法是原子操作吗?我特别想知道这for (; ; )部分。JVM 是否以某种方式保证 for 循环中的每个循环都是原子执行的?

public final class AtomicBigInteger {

    private final AtomicReference<BigInteger> valueHolder = new AtomicReference<>();

    public AtomicBigInteger(BigInteger bigInteger) {
        valueHolder.set(bigInteger);
    }

    public BigInteger incrementAndGet() {
        for (; ; ) {
            BigInteger current = valueHolder.get();
            BigInteger next = current.add(BigInteger.ONE);
            if (valueHolder.compareAndSet(current, next)) {
                return next;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我从这里得到了这段代码: Maybe to secureincrement BigInteger in a thread safe way, 也许使用 AtomicReference, w/olocking? 然而,这种实现正在广泛传播,您可以在互联网上的许多不同地方找到它。

java atomic atomicinteger

10
推荐指数
2
解决办法
737
查看次数

将代理附加到现有对象?

我的计划是编写一个基于注释的缓存框架,用于缓存方法的返回值.当第一次使用特定参数调用方法时,缓存应该存储方法返回值.当使用相同的参数第二次调用相同的方法时,该方法应该从缓存返回先前计算的结果,而不是再次执行其代码.我的注释看起来像这样:

@Cached(cacheProvider = HashMapCacheProvider.class)
public Product getProduct(String productId){    
    // Scraping the product from a website ...
    return product;
}
Run Code Online (Sandbox Code Playgroud)

目前我的小框架工作已经很好了.我正在使用Javassist创建包含带注释方法的类的代理对象.为了创建一个新的缓存对象,我正在使用此代码:

public static <T> T newCachedInstance(Class<T> clazz)
    throws InstantiationException, IllegalAccessException {

    ProxyFactory factory = new ProxyFactory();
    factory.setSuperclass(clazz);
    factory.setFilter(new MethodFilter() {
        public boolean isHandled(Method m) {
            // ignore finalize()
            return !m.getName().equals("finalize");
        }
    });

    Class<T> c = factory.createClass();

    T proxy = c.newInstance();
    ((ProxyObject) proxy).setHandler(new CachedMethodHandler());
    return proxy;
}
Run Code Online (Sandbox Code Playgroud)

问题是,我可以通过此方法创建新的缓存对象,而不是通过其类的构造函数创建.因此,我正在寻找一种解决方案,将已有的对象附加到缓存机制.

这是我的问题:是否可以将代理附加到现有对象?根据我的理解,如果不更新对该对象的所有现有引用,这是不可能的.

我的另一种方法是使用字节码操作来操纵带注释的方法的代码,如下所示:

public class Hello {
    public void say() {
         System.out.println("Hello");
    }
}

public …
Run Code Online (Sandbox Code Playgroud)

java proxy bytecode-manipulation javassist

6
推荐指数
1
解决办法
1687
查看次数

java Web应用程序中的内存泄漏

我有一个使用hibernate 3.6.4和spring 3.2.4(mvc,tx和security)的web应用程序,并且在tomcat 7中运行.每当我部署更新版本的应用程序而不重新启动tomcat时,则使用的内存由tomcat增加约50MB.

我创建了一些堆转储并使用Eclipse Memory Analyzer进行分析.我发现每次重新部署应用程序时,都会创建一个新的WebappClassLoader实例.但即使在我使用tomcat管理器停止应用程序之后,WebappClassLoader仍然保留在内存中,并且不会被垃圾回收.因此,在每次重新部署之后,额外的WebappClassLoader将保留在内存中并使用大约50MB的内存.

我使用Eclipse Memory Analyzer来查找从WebappClassLoader到GC根的引用路径.在结果中,我找不到任何可能阻止WebappClassLoaders被垃圾回收的强引用.

在此输入图像描述

那么,是什么让WebappClassLoaders保持活力?我可以在哪里调查,以找出什么阻止垃圾收集的WebappClassLoader?

我认为可能有一个阻塞的finalize()方法阻止GC完成垃圾收集.但我怎么能检查这个?

java memory-leaks classloader tomcat7 eclipse-memory-analyzer

6
推荐指数
1
解决办法
2692
查看次数

快速的图表

我是iOS开发的新手,想要用一些图表创建一个应用程序.我决定用swift开始开发,因为作为Java开发人员,我似乎更容易学习.但同时我认为使用objective-c会是更好的选择,因为AFAIK没有符合我标准的图表库:

  • 可用于swift
  • 有线条和条形图
  • 能够绘制带有日期和时间轴的图表
  • 免费使用或低价<100美元

像JBChartView,Core-Plot和iOSPlot这样的常见图表库不符合我的标准,因此我正在考虑在WebView中使用JavaScript图表库或完全切换到objective-c

在WebView中使用JavaScript图表API是一种好习惯吗?如果是这样,这可能会在具有不同屏幕尺寸和方向的不同设备上出现问题吗?这种方法常见的缺点是什么?

编辑:Core-Plot release-2.0适用于Swift

charts objective-c core-plot ios swift

5
推荐指数
2
解决办法
1万
查看次数

仅在 Idea 中显示模块的依赖关系图

是否可以使用 Idea 创建一个仅包含模块依赖关系的 Maven 依赖关系图?对于模块依赖项,我指的是 pom.xml 文件中<modules><parent>标记中定义的所有子模块或父模块。默认依赖关系图显示了所有依赖关系,但信息有点多。

我已经找到了如何通过单击生成模块依赖树,Analyze -> Analyze Module Dependencies... 但这只是显示树而不是图表。

dependencies intellij-idea maven intellij-idea-2016

5
推荐指数
0
解决办法
746
查看次数