小编pel*_*umi的帖子

NLTK使用的实际例子

我正在玩自然语言工具包(NLTK).

它的文档(BookHOWTO)非常笨重,示例有时略有提升.

NLTK的使用/应用是否有任何好的但基本的例子?我正在考虑像Stream Hacker博客上的NTLK文章.

python nlp nltk

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

HashMap方法的时间复杂度

由于我正在研究时间复杂性,我一直在搜索oracle Java类库,以了解列表,地图和类中使用的一些标准方法的时间复杂性.(更具体地说,ArrayList,HashSet和HashMap)

现在,在查看HashMap javadoc页面时,他们只是真正谈论get()put()方法.

我仍然需要知道的方法是:

remove(Object o)
size()
values()
Run Code Online (Sandbox Code Playgroud)

我认为这remove()将是相同的复杂性get(),O(1)假设我们没有以相同散列码,等等等等,一个巨大的HashMap ...

因为size()我也假设O(1),因为HashSet也没有顺序,所以有一个size()复杂的方法O(1).

我不知道的是values()- 我不确定这个方法是否会以某种方式"复制"HashMap,给出时间复杂度O(1),或者是否必须迭代HashMap,使复杂性等于数量存储在HashMap中的元素.

谢谢.

java methods hashmap time-complexity

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

C#/ Java等高级语言掩盖位移计数操作数的原因是什么?

这更多的是语言设计而不是编程问题.

以下是JLS 15.19移位运算符的摘录:

如果左手操作数的提升类型是int,则只使用右手操作数的五个最低位作为移位距离.

如果左侧操作数的提升类型是long,则只使用右侧操作数的六个最低位作为移位距离.

这种行为也在C#中指定,虽然我不确定它是否在Javascript的官方规范中(如果有的话),但至少基于我自己的测试也是如此.

结果是以下情况属实:

(1 << 32) == 1
Run Code Online (Sandbox Code Playgroud)

据我所知,这个规范很可能受到以下事实的启发:当移位32位值(64位为6位)时,底层硬件只占用计数操作数的5位,我可以理解在例如,JVM级别,但为什么高级语言(如C#和Java)会保留这种相当低级别的行为?它们不应该提供超出硬件实现的更抽象的视图,并且行为更直观吗?(如果他们可以采取负数来表示向其他方向转移,那就更好了!)

c# java bit-manipulation language-design bit-shift

16
推荐指数
3
解决办法
1733
查看次数

版本升级时出现java.lang.NullPointerException

当我在现有版本上安装apk时,我的应用程序抛出异常.

这些是重现我的错误的步骤:

  1. 安装应用程序(即v1)并运行它(未发现错误)
  2. 使用较小的更新安装相同的apk或新的(即v2)
  3. 抛出NullReferenceException
  4. 安装#2的同一个apk
  5. 一切正常

这是例外:

java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.empystudio.cashflow/com.empystudio.cashflow.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
at android.app.ActivityThread.access$600(ActivityThread.java:130)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.empystudio.cashflow.MainActivity.onCreate(MainActivity.java:66)
at android.app.Activity.performCreate(Activity.java:5008)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
... 11 more
Run Code Online (Sandbox Code Playgroud)

这是MainActivity的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    documentsView = (ImageView) findViewById(R.id.documents_view);
    backupView = (ImageView) findViewById(R.id.backup_view);
    restoreView = (ImageView) findViewById(R.id.restore_view);
    helpView = (ImageView) findViewById(R.id.help_view); …
Run Code Online (Sandbox Code Playgroud)

java android nullpointerexception

9
推荐指数
0
解决办法
748
查看次数

如何在Java中创建32位掩码

到目前为止,我有这个代码来创建16位掩码.但是我不知道如何使用这种方法创建32位掩码.有任何想法吗?

编辑:我想创建32个32位掩码,每个掩码的各自位为1,其余位为零.例如:掩码1的最左位为1而其余位为零,掩码2的最左边的位为1而其余位为零.我不知道如何更简洁地解释,但我希望你们能得到这个想法......

mask = new int[16];
mask[0] = 0x8000;
mask[1] = 0x4000;
mask[2] = 0x2000;
mask[3] = 0x1000;

mask[4] = 0x0800;
mask[5] = 0x0400;
mask[6] = 0x0200;
mask[7] = 0x0100;

mask[8] = 0x0080;
mask[9] = 0x0040;
mask[10] = 0x0020;
mask[11] = 0x0010;

mask[12] = 0x0008;
mask[13] = 0x0004;
mask[14] = 0x0002;
mask[15] = 0x0001
Run Code Online (Sandbox Code Playgroud)

java bit-manipulation bit

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

REST - 部分资源

REST设计中常见的是允许返回部分资源.在这种情况下; 我想允许用户仅指定在该资源的JSON表示中返回的资源的某些字段.

例如,假设我们有一个资源Person:

{
   "id": 12,
   "name":{
          "first":"Angie",
          "last": "Smith",
          "middle": "joy",
          "maiden": "crowly",
    },
    "address": {
          "street": "1122 Something St.",
          ..and so on...
    },
... and so on
}
Run Code Online (Sandbox Code Playgroud)

让我们说params列表很长.并且假设我有一个API消费者,他在创建API设计之初只想要一些像id和name.first这样的字段.我假设允许这样的事情是很常见的:

/人?场= ID,名字

字段说我只想要那些字段.

我的问题是,Person资源应该返回所有带空值的字段,只返回那些带有值OR的字段,它应该只返回带有字段id和name的Person表示,并且你从后端动态地删除所有其他params.

似乎#2更清晰,但在REST中执行此操作是否有意义,或者人们通常是否返回所有其他字段(以确保我们将结构/模式的表示保持一致/可靠)与空值?

rest json

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

JavaScript位掩码

我以前在Java(不是Javascript)中使用过位掩码,但是已经有一段时间了,这让我很烦。

这是我要使用的打字稿。有3个角色,

enum Type {
    FRUIT = 0x1,
    VEGGIE = 0x2,
    BOTH = FRUIT | VEGGIE
}

class Thing {
    role:number;

    constructor(role:Type){
        this.role = role;
    }
    getRole(){
        return this.role;
    }
    is(role:Type) {
        return !!(this.role & role);
    }
}

var whatever = new Thing(Type.FRUIT);

console.log('fruit', whatever.is(Type.FRUIT));
console.log('veggie', whatever.is(Type.VEGGIE));
console.log('both', whatever.is(Type.BOTH));

// fruit true
// veggie false
// both true
Run Code Online (Sandbox Code Playgroud)

我从概念上了解了为什么“两个”又返回“真实”,但是我的数学并不好。

当角色为FRUIT或时VEGGIE,其他角色为false。设置为时BOTH,所有设置都应为true。

尝试了一些移位和位运算的组合,但我无法获得该输出。如果我尝试将它们分开,那很好,但是我想使用位组合来构建。

javascript bit-manipulation bitmask typescript

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