小编dGa*_*and的帖子

异常的原因java.lang.VerifyError:操作数堆栈上的错误类型

下面简单的java代码在操作数堆栈异常发送 java.lang.VerifyError:Bad类型

public class TestJavaCodes {

    int parentData = 0;

    public void init() {
        A ob = new B();
    }

    public static void main(String[] args) {

        TestJavaCodes testJavaCodes = new TestJavaCodes();
        testJavaCodes.init();
    }

    public static class A {
        public A(MyLambdaFunc lambdaFunc) {
        }
    }

    public class B extends A {

        public B() {
            super((data1, type) -> {
                parentData = 1;
            });
        }
    }

    @FunctionalInterface
    public static interface MyLambdaFunc {
        public void onData(String data, int type);
    } …
Run Code Online (Sandbox Code Playgroud)

java lambda java-8

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

如何更新Angular Observable的订户

在我的角度应用程序中,我创建了一个Observable来为多个组件提供数据更新。当用户单击按钮时,应使用不同的数据集更新所有可观察对象的订户。下面是代码。

import { Observable } from 'rxjs/Observable';
import { Subscriber } from 'rxjs/Subscriber';

export class MyService {
private data: number[] = [5,6,7,8];

/// The observable given to outside
private observable: Observable<number[]>;

/// Subscribers of the observable which is given to outside
private subscribers: Map<number, Subscriber<number[]>>;
private nextSubscriberId = 0;

constructor() {
    this.subscribers = new Map();
    this.observable = new Observable(subscriber => {
        const id = ++this.nextSubscriberId;
        this.subscribers.set(id, subscriber);

        subscriber.next(data);

        return () => { this.subscribers.delete(id); };
    });

}
Run Code Online (Sandbox Code Playgroud)

}

在按钮单击事件中,我执行以下操作

data = …
Run Code Online (Sandbox Code Playgroud)

observer-pattern angular angular-observable

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

Java正则表达式模式匹配花费太多时间

当模式和单词类似于时,java正则表达式模式匹配函数需要太多时间才能完成

pattern = ".*.*.*.*.*.*.*.*.*.*1";
word = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Run Code Online (Sandbox Code Playgroud)

将上述模式与单词进行匹配需要超过 10 秒的时间。确实,这种模式毫无意义,但在我的例子中,该模式被视为来自 GUI 表单的用户输入。

我使用了以下代码。

        boolean matches = false;
        long startTime = System.nanoTime();
        try {
            matches = Pattern.compile(pattern).matcher(word.toLowerCase()).matches();
        } catch (Exception e) {
            e.printStackTrace();
        }
        long elapseTime = System.nanoTime() - startTime;
        elapseTime = elapseTime / 1000000000;
        System.out.println("Time taken for regex match " + elapseTime + " out put " + matches);
Run Code Online (Sandbox Code Playgroud)

java regex

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