小编lot*_*ons的帖子

bash双括号问题

我很擅长使用双括号来编写脚本并遇到问题.我似乎无法让他们在Ubuntu Server 11.10中工作.我的脚本位于if_test.sh中.

#!/bin/bash

if [[ "14"=="14" ]]; then 
    echo "FOO"
fi
Run Code Online (Sandbox Code Playgroud)

当我运行这个简单的shell脚本时,我得到的输出是:if_test.sh:5:[[:not found

从终端运行bash --version后,我似乎正在运行GNU bash版本4.2.10.任何帮助将不胜感激.谢谢!

linux bash shell

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

Java - 内联类定义

我在Java中看到过几个类似的例子,我希望有人可以解释发生了什么.看起来像一个新类可以内联定义,这对我来说似乎很奇怪.第一个打印输出行是预期的,因为它只是toString.然而第二个看起来像函数可以重写内联.这有技术术语吗?或者任何更深入的文档?谢谢!

如果我有以下代码:

public class Apple {
    public String toString() {
        return "original apple";
    }
}

public class Driver {
    public static void main(String[] args) {
        System.out.println("first: " + new Apple());
        System.out.println("second: " + 
            new Apple() {
                public String toString() {
                    return "modified apple";
                }
            }
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

代码输出:

first: original apple
second: modified apple
Run Code Online (Sandbox Code Playgroud)

java inheritance overriding

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

可以将CMU Sphinx设置为识别~200个单词

我有一个客户端需要一个能识别口头命令的Android应用程序.根据我的理解,内置语音到文本功能实际上将数据发送到Google的服务器,然后发送回文本翻译.这是一个主要问题,因为语音数据非常敏感(除非数据在发送到Google或从Google发送时加密 - 但我怀疑它是加密的).

我能想到两个选项.首先是在Android上转换语音到文本,虽然这似乎是一个非常昂贵的操作.第二种可能性是让本地服务器为我转换数据(我可以加密语音数据和转发时的语音数据).这是CMU Sphinx能够实现的吗?值得注意的是,我也可以访问Asterisk服务器,这可能有助于此(我不知道).

实际上,应该只有大约200个单词需要被识别.我更喜欢开源/免费软件解决方案,但我也对商业解决方案(可能是FlexT9)持开放态度.理想情况下,我可以将音频流发送到某处,获取一个String作为文本,然后我可以使用String解析并执行其他操作.

我过去没有做太多的机器人或任何语音识别开发,所以我希望有人能够至少指出我正确的方向.谢谢!

android speech-recognition speech-to-text

7
推荐指数
1
解决办法
8075
查看次数

Javascript Chrome确认框延迟

在javascript中显示确认框时,如果是或否导致页面重定向,则单击是或否后似乎有延迟.延迟大约是确认框打开的持续时间.这只适用于Chrome.有没有人有这样的解决方案,所以Chrome没有延迟?

一个描述问题的简单示例:

<html>
    <head></head>
    <body>
        <script type='text/javascript'>
            var goToGoogle = confirm("Go to Google?");
            if (goToGoogle) {
                window.location.href="http://www.google.com";
            }
        </script>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

html javascript google-chrome

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

java - 如何在 TimeoutException 上获取未来的堆栈跟踪

在 java 中,我想确定在发生 TimeoutException 时填充未来结果的线程的当前堆栈。似乎 TimeoutException 提供的堆栈跟踪中的顶部条目仅指示调用 future.get() 的位置,而不是后台线程的状态。例如:

ExecutorService executor = Executors.newSingleThreadExecutor();

Future<String> future = executor.submit(new Callable<String>() {
    @Override
    public String call() throws Exception {
        Thread.sleep(10000);
        return "";
    }
});

try {
    future.get(1, TimeUnit.MILLISECONDS);
} catch (TimeoutException e) {
    e.printStackTrace();
} catch (InterruptedException | ExecutionException e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,我发现最上面的条目是 future.get(1, TimeUnit.MILLISECONDS) 条目,而不是 Thread.sleep(10000)。我希望堆栈跟踪指示 Thread.sleep(10000) 因为这是当前正在执行的。有没有一种优雅的方式来做到这一点?

我发现,如果存在实际执行问题,那么 ExecutionException.printStackTrace() 将指示问题在后台线程中发生的位置。

java multithreading executorservice

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

传递矢量矢量功能

我有一个接受a的功能

vector<vector<MyClass>> 
Run Code Online (Sandbox Code Playgroud)

并修改MyClass实例.自从我编写任何C++以来已经很长时间了,我很难记住通过引用而不是通过值传递整个arg的内容.

我原来的方法签名是:

void modifyVectorOfVectors(vector<vector<MyClass> > vec) { ... }
Run Code Online (Sandbox Code Playgroud)

我想让这个内存有效,所以我最初改为:

void modifyVectorOfVectors(vector<vector<MyClass*> > vec) { ... }
Run Code Online (Sandbox Code Playgroud)

然后我意识到这意味着我的vec值仍然会复制所有内部向量.所以我将我的功能签名更改为:

void modifyVectorOfVectors(vector<vector<MyClass*> >* vec) { ... }
Run Code Online (Sandbox Code Playgroud)

这是否足够,或者我还需要做以下事情:

void modifyVectorOfVectors(vector<vector<MyClass*>* >* vec) { ... }
Run Code Online (Sandbox Code Playgroud)

有人可以强调所有这些之间的记忆差异吗?非常感谢!

c++ vector pass-by-reference pass-by-value pass-by-pointer

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

SQL 选择最常见的值

我对 SQL 很陌生(我正在使用 MySQL)并且需要一些帮助。我目前正在尝试从名为 PERSON 的表中选择最常见的年龄。假设 PERSON 有一个 AGE 列,其值为:10、10、20、20、30。查询应返回值 10 和 20。

以下查询仅检索顶行 (20):

SELECT AGE FROM PERSON GROUP BY AGE ORDER BY COUNT(*) DESC LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

我的另一个想法是尝试类似的事情:

SELECT AGE FROM PERSON GROUP BY AGE HAVING COUNT(AGE) = MAX(COUNT(AGE));
Run Code Online (Sandbox Code Playgroud)

这会返回一个错误,指出组函数的使用无效。

任何帮助将不胜感激。谢谢!

mysql sql

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

正则表达式提取查询字符串

我对正则表达式比较新,可以使用一些帮助.有人可以提供正则表达式(我使用Perl)从URL中提取查询字符串吗?我尝试了以下但得到一个空字符串:

my $string = 'http://www.google.com?queryArg1=1&queryArg2=2';
$string =~ s/^(.*)?//;
Run Code Online (Sandbox Code Playgroud)

理想情况下,此示例将提供以下字符串:queryArg1 = 1&queryArg2 = 2

如果你可以把它变成一个哈希,那就更棒了:

my $hash = {queryArg1 => 1,
            queryArg2 => 2};
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

regex perl

3
推荐指数
1
解决办法
1104
查看次数

C++ nullptr检测

我有以下代码.我不明白为什么在B.GetNum()中调用第一个条件.如何确保在main中删除我的B类没有尝试使用已删除的变量?

class A
{
public:
    A(int num) : m_num(num) {}
    int GetNum() { return m_num; }

private:
    int m_num;
};

class B
{
public:
    B(A* a_) : a(a_) {}
    int GetNum()
    {
        if (a != nullptr)
        {
            return a->GetNum(); // Why does this branch get called?
        }
        else
        {
            return -1;
        }
    }

private:
    A* a;
};

int _tmain(int argc, _TCHAR* argv[])
{
    A* a = new A(5);
    B b = B(a);
    delete a;
    a = nullptr;

    int result = …
Run Code Online (Sandbox Code Playgroud)

c++ pointers

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