小编yan*_*ana的帖子

Java - Oracle 数据库更改通知

我正在尝试实现一个可以识别数据库更改通知(Oracle)的事件侦听器。根据参考网站,它说当EXAMPLE表中发生变化时,事件将触发并打印ROW_ID。我希望这个项目运行,它应该给我一条消息“给我一些东西!” 如果我手动在数据库中插入/更新数据。但是,据我了解,该代码无论如何都会终止,因为没有可以被事件中断的无限循环。如果我错了,请纠正我。

附加问题]
通过将OracleConnection.DCN_NOTIFY_ROWIDS设置为 true,它将通知每个事件,包括插入、更新、删除。我对么?我对“数据库更改事件将包括行级详细信息,例如操作类型和 ROWID”的含义感到困惑

我的代码:

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import oracle.jdbc.OracleConnection;
import oracle.jdbc.OracleDriver;
import oracle.jdbc.OracleStatement;
import oracle.jdbc.dcn.DatabaseChangeEvent;
import oracle.jdbc.dcn.DatabaseChangeListener;
import oracle.jdbc.dcn.DatabaseChangeRegistration;

public class DBTest {
    static final String USERNAME = "username";
    static final String PASSWORD = "password";
    static String URL = "jdbc:oracle:thin:@url:port/name";

    public static void main(String[] args) {
        DBTest oracleDCN = new DBTest();
        try {
            oracleDCN.run();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    private void …
Run Code Online (Sandbox Code Playgroud)

java oracle ojdbc

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

有关在GCE上对CoreOS上的Kubernetes运行Aerospike的任何建议吗?

我想在Google Compute Engine(GCE)上的CoreOS上由Kubernetes管理的Docker容器上运行Aerospike集群.但由于GCE不允许组播,我必须使用此处所述的Mesh心跳,必须通过指定所有节点的IP地址和端口来设置; 它似乎对我来说太不灵活了.

Kubernetes/CoreOS/GCE上的Aerospike集群是否有任何推荐的云配置设置,并保留了集群的灵活性?

google-compute-engine docker aerospike kubernetes

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

如果您知道曲线名称和原始私钥/点,如何构造私钥?

要求:对于给定的命名曲线,请发送尽可能少的数据,以便接收方可以构造EC私钥。

我目前在Android上使用BouncyCastle / SpongyCastle。这是我到目前为止所了解的。

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("EC");
ECGenParameterSpec ecGenParameterSpec = new ECGenParameterSpec("secp112r2");
keyGen.initialize(ecGenParameterSpec, new SecureRandom());
KeyPair keyPair = keyGen.generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();

// privateKey.getEncoded() -> gives DER encoded private key. I can construct PrivateKey from that easily
byte[] derEncodedPrivateKeyBytes = privateKey.getEncoded(); // byteArray length-> 80
KeyFactory kf = KeyFactory.getInstance("EC");
PrivateKey key = kf.generatePrivate(new PKCS8EncodedKeySpec(derEncodedPrivateKeyBytes));
Run Code Online (Sandbox Code Playgroud)

现在,使用Bouncy / Spongy城堡,我可以获得私钥的实际点,而derEncoding中没有任何其他信息。

ECPrivateKeyParameters param = (ECPrivateKeyParameters) ECUtil.generatePrivateKeyParameter(privateKey);
int lenghtOfKey = param.getD().toByteArray().length; // length - 14
Run Code Online (Sandbox Code Playgroud)

:仅通过使用点DprivateKeyParam.getD())和曲线名称,如何才能重构PrivateKey对象?使用曲线名称,我可以获得ECCurveParameters。

编辑:我可以ECPrivateKeyParameters …

java bouncycastle elliptic-curve spongycastle

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

使用for/yield从序列中删除元素

给定一个Future[Seq[Widget]],Widget包含一个amount : Int属性,我想返回一个Seq[Widget]但仅限于那些Widget数量值大于100的s.我相信该for { if … } yield { }构造将给我我想要的但不确定如何过滤序列.我有:

val myWidgetFuture :  Future[Seq[Widget]] = ...

for {
  widgetSeq <- myWidgetFuture
  if (??? amount > 100) <— what to put here?
}  yield {
  widgetSeq
}
Run Code Online (Sandbox Code Playgroud)

如果有一种干净的非收益方式,这对我也有用.

scala

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

如何在Scala中将整个数组追加到数组?

说,我有一个带有值的数组,(1, 2, 3)另一个有(4, 5, 6)。如何获得带有值的结果数组(1, 2, 3, 4, 5, 6)

我尝试使用++,但这不起作用。例如,这就是我在命令外壳中得到的。

scala> val x = Array((1, 2, 3))
x: Array[(Int, Int, Int)] = Array((1,2,3))

scala> val y = Array((4, 5, 6))
y: Array[(Int, Int, Int)] = Array((4,5,6))

scala> val z = x ++ y
z: Array[(Int, Int, Int)] = Array((1,2,3), (4,5,6))
Run Code Online (Sandbox Code Playgroud)

而我要Array(1, 2, 3, 4, 5, 6)

编辑

我实际上是在使用元组数组,这很糟糕。Array应该被声明为Array(1, 2, 3)not Array((1, 2, 3))

arrays scala

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

如何编写单行scala代码?

我是Scala的新手,我写了一段代码,将员工档案(empId,姓名,年龄,薪水,部门)作为输入,打印出部门和部门的总薪水.

这是一个新手代码.如何缩短代码?请帮忙

码:

object UsingCollectionMaps {
  def main(a: Array[String]) {
    val filename = "Employee.txt"
    var map = collection.mutable.Map[String,Long]()
    var sal: Long = 0
    for (line <- Source.fromFile(filename).getLines()) {
      val fields = line.split(",")
      if (map.contains(fields(4))) {
        map.put(fields(4), (map(fields(4)) + fields(3).toLong))
      } else {
        map.put(fields(4), fields(3).toLong)
      }
    }
    println(map)
  }
}
Run Code Online (Sandbox Code Playgroud)

scala

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

java do while循环在条件满足后保持循环

我是一名新的java程序员,我正在编写一个程序,为3台打印机设置3个型号.如果用户输入了错误的值,我希望它继续向用户询问型号.我得到了它的工作,但只有当用户的第一个值在3个打印机之一的数字之间.如果第一个值不是可能值之一而第二个输入是,它仍然会重复循环.

package printing;

import java.util.Scanner;

public class newClass {

    public static void main(String[] args) {

        int count = 0;

        String machine1 = "546";
        String machine2 = "892";
        String machine3 = "127";


        Scanner s = new Scanner(System.in);

        System.out.print("Model Number:");
        String modelNumber = s.nextLine();
        // increment count if first input value is wrong
        if (!s.equals(machine1) || !s.equals(machine2) || !s.equals(machine3))
            count++;

        // if user inputs right value
        while (true) {
            if (modelNumber.equals(machine1)) {
                System.out.println("Machine 1 is online");
                break;
            }
            if (modelNumber.equals(machine2)) {
                System.out.println("Machine …
Run Code Online (Sandbox Code Playgroud)

java loops do-while

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