小编Dev*_*Zot的帖子

如何在phonegap中指定最小SDK?它忽略了config.xml中的android-minsdkversion

这是一个phonegap 3.5/cordova 3 android应用程序.在www/config.xml中我有:

<preference name="android-minSdkVersion" value="19">
<preference name="android-targetSdkVersion" value="19">
Run Code Online (Sandbox Code Playgroud)

但是,当我构建它时,它会创建一个AndroidManifest.xml:

<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />
Run Code Online (Sandbox Code Playgroud)

结果是SDK版本低于19的人可以从商店安装我的应用程序.从哪里获得10,我该如何改变它?由于Viewport的怪异,我的应用程序的行为在4.4以下的操作系统上是可疑的,我已经从4.2.2用户获得1星评价.

cordova cordova-3.5

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

如何从Trie中检索给定长度的随机单词

我有一个简单的Trie,我用来存储大约80k字长2到15的字.它非常适合检查字符串是否为单词; 但是,现在我需要一种获取给定长度的随机单词的方法.换句话说,我需要"getRandomWord(5)"来返回一个5个字母的单词,所有5个字母的单词都有相同的返回机会.

我能想到的唯一方法是选择一个随机数并遍历树的广度优先,直到我通过了那么多所需长度的单词.有一个更好的方法吗?

可能没必要,但这是我的特里的代码.

class TrieNode {
    private TrieNode[] c;
    private Boolean end = false;

    public TrieNode() {
        c = new TrieNode[26]; 
    }

    protected void insert(String word) {
        int n = word.charAt(0) - 'A';
        if (c[n] == null)
            c[n] = new TrieNode();
        if (word.length() > 1) {
            c[n].insert(word.substring(1));
        } else {
            c[n].end = true;
        }
    }

    public Boolean isThisAWord(String word) {
        if (word.length() == 0)
            return false;
        int n = word.charAt(0) - 'A';
        if (c[n] != null && word.length() > …
Run Code Online (Sandbox Code Playgroud)

java algorithm tree trie data-structures

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

如何在运行时重新加载 ES6 模块?

在 ES6 模块之前,通过删除require缓存来强制重新加载 JS 脚本(我从其他 Stack 答案中得知)很容易:

delete require.cache[require.resolve('./mymodule.js')]
Run Code Online (Sandbox Code Playgroud)

但是,我找不到通过import.

这可能足以说明这个问题,但以防万一,这里有一个简化版本的代码。我拥有的是一个运行类似以下内容的节点服务器:

-- look.mjs -- 
var look = function(user) { console.log(user + " looks arond.") }
export { look };

-- parser.mjs -- 
import { look } from './look.mjs';

function parse(user, str) {
    if (str == "look") return look(user);
}
Run Code Online (Sandbox Code Playgroud)

我想要的是能够手动更改 look.mjs 文件(例如修复拼写错误的单词),触发导致在运行时重新导入 look.mjs 的函数,这样 parse() 无需返回新值重启节点服务器。

我尝试更改为动态导入,如下所示:

-- parser.mjs -- 
function parse(user, str) {
    if (str == "look") {
        import('./look.mjs').then(m => m.look(user))
    }
}
Run Code Online (Sandbox Code Playgroud)

这也行不通。(我的意思是,它确实如此,但它不会在每次调用时重新加载 look.mjs,只是第一次)而且如果可能的话,我更愿意继续使用静态导入。 …

javascript import module node.js

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