小编Mag*_*sol的帖子

Java动态绑定和方法覆盖

昨天我接受了两个小时的技术电话采访(我通过了,哇喔!),但我完全消除了关于Java中动态绑定的以下问题.这让我感到非常困惑,因为几年前,当我还是TA时,我曾经向大学生传授这个概念,所以我给他们错误信息的前景有点令人不安......

这是我给出的问题:

/* What is the output of the following program? */

public class Test {

  public boolean equals( Test other ) {
    System.out.println( "Inside of Test.equals" );
    return false;
  }

  public static void main( String [] args ) {
    Object t1 = new Test();
    Object t2 = new Test();
    Test t3 = new Test();
    Object o1 = new Object();

    int count = 0;
    System.out.println( count++ );// prints 0
    t1.equals( t2 ) ;
    System.out.println( count++ );// prints 1
    t1.equals( t3 …
Run Code Online (Sandbox Code Playgroud)

java inheritance dynamic-binding

88
推荐指数
4
解决办法
4万
查看次数

Hibernate递归与同一实体的多对多关联

另一个Hibernate问题......:P

使用Hibernate的Annotations框架,我有一个User实体.每个人都User可以拥有一群朋友:其他人User的集合.但是,我还没有弄清楚如何在UserUsers 列表组成的类中创建多对多关联(使用用户朋友中间表).

这是User类及其注释:

@Entity
@Table(name="tbl_users")
public class User {

    @Id
    @GeneratedValue
    @Column(name="uid")
    private Integer uid;

    ...

    @ManyToMany(
            cascade={CascadeType.PERSIST, CascadeType.MERGE},
            targetEntity=org.beans.User.class
    )
    @JoinTable(
            name="tbl_friends",
            joinColumns=@JoinColumn(name="personId"),
            inverseJoinColumns=@JoinColumn(name="friendId")
    )
    private List<User> friends;
}
Run Code Online (Sandbox Code Playgroud)

用户朋友的映射表只有两列,这两者都是外键到uid该列tbl_users表.这两列是personId(应该映射到当前用户)和friendId(指定当前用户的朋友的id).

问题是,即使我已经预先填充了朋友表,使得系统中的所有用户都是所有其他用户的朋友,"朋友"字段仍会显示为空.我甚至尝试过切换关系@OneToMany,但它仍然是null(尽管Hibernate调试输出显示了一个SELECT * FROM tbl_friends WHERE personId = ? AND friendId = ?查询,但没有别的).

有关如何填充此列表的任何想法?谢谢!

java entity-relationship hibernate java-ee hibernate-annotations

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

使用PHP cURL和SSL证书时出错

我正在尝试使用cURL编写PHP脚本,该脚本可以通过使用SSL证书的页面授权用户,除了用户名和密码,我似乎无法通过SSL证书阶段.

在这种情况下,curl_setopt($handle, CURLOPT_VERIFYPEER, 0)遗憾的是不是一种选择.证书是身份验证的必要部分,否则我会收到此其他类似SO帖子中提到的错误.

我已尝试使用cURL进行一些命令行运行:

> curl --url https://website

这将返回(60) SLL certificate problem错误.如果我调整命令以包含--cacert选项:

> curl --url https://website --cacert /path/to/servercert.cer

它运作得很好; 返回auth网站.

但是,我尝试了以下PHP代码:

$handle = curl_init();
$options = array( 
                  CURLOPT_RETURNTRANSFER => false,
                  CURLOPT_HEADER         => true,
                  CURLOPT_FOLLOWLOCATION => false,
                  CURLOPT_SSL_VERIFYHOST => '0',
                  CURLOPT_SSL_VERIFYPEER => '1',
                  CURLOPT_CAINFO         => '/path/to/servercert.cer',
                  CURLOPT_USERAGENT      => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)',
                  CURLOPT_VERBOSE        => true,
                  CURLOPT_URL            => 'https://website'
           );

curl_setopt_array($handle, $options);
curl_exec($handle);
if (curl_errno($handle)) {
  echo 'Error: ' . …
Run Code Online (Sandbox Code Playgroud)

php ssl curl certificate

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

Hadoop Datanodes找不到NameNode

我在VirtualBox中建立了一个分布式Hadoop环境:4个虚拟Ubuntu 11.10安装,一个用作主节点,另外三个用作从属节点.我按照本教程启动并运行单节点版本,然后转换为完全分布式版本.当我跑11.04时它工作得很好; 但是,当我升级到11.10时,它就破了.现在我的所有奴隶的日志显示以下错误消息,重复广告恶心:

INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 0 time(s).
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 1 time(s).
INFO org.apache.hadoop.ipc.Client: Retrying connect to server: master/192.168.1.10:54310. Already tried 2 time(s).
Run Code Online (Sandbox Code Playgroud)

等等.我在Internet(和StackOverflow)上找到了此错误消息的其他实例,但没有一个解决方案有效(尝试将core-site.xml和mapred-site.xml条目更改为IP地址而不是主机名;四倍- 检查/etc/hosts所有从站和主站;主站可以无密码SSH到所有从站).我甚至尝试将每个从设备还原为单节点设置,在这种情况下它们都可以正常工作(在这种情况下,主设备始终可以正常工作,如Datanode和Namenode).

我发现的唯一症状就是从任何一个奴隶,当我尝试一个时telnet 192.168.1.10 54310,我得到Connection refused,建议有一些规则阻止访问(当我升级到11.10时必须生效) .

/etc/hosts.allow但是,我没有改变.我尝试了规则ALL: 192.168.1.,但它没有改变行为.

哦,是的,netstat在主人清楚地显示tcp端口54310和54311正在侦听.

任何人都有任何建议让奴隶Datanodes识别Namenode?

编辑#1:在使用nmap进行一些讨论时(参见本文的评论),我认为问题出在我的/etc/hosts文件中.这是为主VM列出的内容:

127.0.0.1    localhost
127.0.1.1    master
192.168.1.10 master
192.168.1.11 slave1
192.168.1.12 slave2
192.168.1.13 slave3
Run Code Online (Sandbox Code Playgroud)

对于每个从VM:

127.0.0.1 …
Run Code Online (Sandbox Code Playgroud)

ubuntu port networking hadoop

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

查找库存值数组中的买入/卖出价格以最大化正差

在今天的采访中得到了这个问题,它的优化解决方案让我感到冷漠(这吹嘘,因为我真的想为这家公司工作......)

给定一组实际值,每个值代表一个公司在任意一段时间后的股票价值,找到最佳买入价格及其相应的最佳卖出价格(买入低价,卖出高价).

举一个例子来说明一下,让我们来看看Z公司的股票代码:

55.39 109.23 48.29 81.59 105.53 94.45 12.24
Run Code Online (Sandbox Code Playgroud)

值得注意的是,数组在时间上是"排序"的 - 即随着时间的推移,值被附加到数组的右端.因此,我们的买入价值将(必须)在我们的卖出价值的左侧.

(在上面的例子中,理想的解决方案是买入48.29和卖出105.53)

我很容易想出O(n 2)复杂性(在java中实现)的天真解决方案:

// returns a 2-element array: first element is the index in the argument array
// of the best buying price, and the second element is the index of the best
// selling price which, collectively, maximize the trading return
//
// if there is no favorable trading (e.g. prices monotonically fall), null is returned
public int[] maximizeReturn(ArrayList<Double> prices) { …
Run Code Online (Sandbox Code Playgroud)

arrays optimization complexity-theory stocks

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

Apache Spark:由于阶段失败导致作业中止:"TID x因未知原因失败"

我正在处理一些奇怪的错误消息,我认为这些消息归结为内存问题,但我很难将其固定下来并可以使用专家的一些指导.

我有一台2机Spark(1.0.1)集群.两台机器都有8个核心; 一个有16GB内存,另一个有32GB(这是主机).我的应用涉及计算图像中的成对像素亲和力,尽管到目前为止我测试过的图像只有1920x1200,小到16x16.

我确实需要更改一些内存和并行设置,否则我会得到明确的OutOfMemoryExceptions.在spark-default.conf中:

spark.executor.memory    14g
spark.default.parallelism    32
spark.akka.frameSize        1000
Run Code Online (Sandbox Code Playgroud)

在spark-env.sh中:

SPARK_DRIVER_MEMORY=10G
Run Code Online (Sandbox Code Playgroud)

但是,通过这些设置,除了丢失的执行程序之外,我还得到了一堆关于"丢失的TID"(没有任务成功完成)的WARN语句,这些语句重复4次,直到我最终得到以下错误消息并崩溃:

14/07/18 12:06:20 INFO TaskSchedulerImpl: Cancelling stage 0
14/07/18 12:06:20 INFO DAGScheduler: Failed to run collect at /home/user/Programming/PySpark-Affinities/affinity.py:243
Traceback (most recent call last):
  File "/home/user/Programming/PySpark-Affinities/affinity.py", line 243, in <module>
    lambda x: np.abs(IMAGE.value[x[0]] - IMAGE.value[x[1]])
  File "/net/antonin/home/user/Spark/spark-1.0.1-bin-hadoop2/python/pyspark/rdd.py", line 583, in collect
    bytesInJava = self._jrdd.collect().iterator()
  File "/net/antonin/home/user/Spark/spark-1.0.1-bin-hadoop2/python/lib/py4j-0.8.1-src.zip/py4j/java_gateway.py", line 537, in __call__
  File "/net/antonin/home/user/Spark/spark-1.0.1-bin-hadoop2/python/lib/py4j-0.8.1-src.zip/py4j/protocol.py", line 300, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o27.collect.
: org.apache.spark.SparkException: Job aborted …
Run Code Online (Sandbox Code Playgroud)

python apache-spark

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

PySpark从本地函数广播变量

我正在尝试从Python方法中创建广播变量(尝试抽象我正在创建的依赖于分布式操作的一些实用程序方法).但是,我似乎无法从Spark工作者中访问广播变量.

假设我有这个设置:

def main():
    sc = SparkContext()
    SomeMethod(sc)

def SomeMethod(sc):
    someValue = rand()
    V = sc.broadcast(someValue)
    A = sc.parallelize().map(worker)

def worker(element):
    element *= V.value  ### NameError: global name 'V' is not defined ###
Run Code Online (Sandbox Code Playgroud)

但是,如果我改为消除SomeMethod()中间人,它就可以了.

def main():
    sc = SparkContext()
    someValue = rand()
    V = sc.broadcast(someValue)
    A = sc.parallelize().map(worker)

def worker(element):
    element *= V.value   # works just fine
Run Code Online (Sandbox Code Playgroud)

如果可以的话,我宁愿不必将所有Spark逻辑放在main方法中.有没有办法从本地函数中广播变量并让它们对Spark工作者全局可见?

或者,对于这种情况,什么是一个好的设计模式 - 例如,我想专门为Spark编写一个自包含的方法,并执行我想重用的特定功能?

python apache-spark pyspark

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

Hibernate:未映射的类关联异常

我知道这应该是一个非常基本的问题需要修复,但1)我对Hibernate相对较新,2)我发现的修复程序(似乎)不适用于此处.

以下是我得到的例外情况:

org.hibernate.MappingException: An association from the table POSTS refers to
 an unmapped class: com.beans.User at 
 org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:1285)

当Hibernate尝试自行配置时会发生这种情况.

我正在使用的对象是用户,帖子(抽象超类),状态和注释(Post的具体子类).每个都是来自两个表之一的bean:USERS和POSTS.用户对象很漂亮:许多描述用户的平淡字段.除了类似的无聊字段,状态和评论都有所有者(发布它的用户).状态与注释的区别在于,状态可以附加一个注释列表但没有父项,而注释没有子项,但有一个父项(是的,这基本上是Facebook).

从我所读到的,问题似乎是多对一的映射,但我似乎无法找到任何错误.这是我正在使用的三个配置文件.

hibernate.cfg.xml中:

<hibernate-configuration>
    <session-factory>
        ...
        <!-- mapped persistence classes -->
        <mapping resource="User.hbm.xml" />
        <mapping resource="Post.hbm.xml" />
    </session-factory>
</hibernate-configuration>

User.hbm.xml:

<hibernate-mapping>
    <class name="com.beans.User" entity-name="User" table="USERS" proxy="User">
        <id name="uid" type="java.lang.Integer">
            <column name="uid" />
            <generator class="assigned" />
        </id>
        ...
    </class>
</hibernate-mapping>

Post.hbm.xml:

<hibernate-mapping>
    <class name="com.beans.Post" entity-name="Post" table="POSTS" proxy="Post" abstract="true">
        <id name="pid" type="java.lang.Integer">
            <column name="pid" />
            <generator class="assigned" />
        </id>            
        <discriminator column="type" />
        <one-to-one name="parent" …
Run Code Online (Sandbox Code Playgroud)

hibernate exception hibernate-mapping mappingexception

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

Scipy的稀疏eigsh()用于小特征值

我正在尝试使用NumPy/SciPy编写一个频谱聚类算法,用于更大(但仍易处理)的系统,利用SciPy的稀疏线性代数库.不幸的是,我遇到了eigsh()的稳定性问题.

这是我的代码:

import numpy as np
import scipy.sparse
import scipy.sparse.linalg as SLA
import sklearn.utils.graph as graph

W = self._sparse_rbf_kernel(self.X_, self.datashape)
D = scipy.sparse.csc_matrix(np.diag(np.array(W.sum(axis = 0))[0]))
L = graph.graph_laplacian(W) # D - W
vals, vects = SLA.eigsh(L, k = self.k, M = D, which = 'SM', sigma = 0, maxiter = 1000)
Run Code Online (Sandbox Code Playgroud)

sklearn库引用scikit-learn包,特别是用于从稀疏SciPy矩阵计算图拉普拉斯的方法.

_sparse_rbf_kernel是我编写的用于计算数据点的成对亲和力的方法.它通过从图像数据创建稀疏亲和度矩阵来操作,特别是通过仅计算每个像素周围的8个邻域的成对亲和力(而不是使用scikit-learn rbf_kernel方法对所有像素成对,对于记录也不能解决这个问题) .

由于拉普拉斯非标准化,我正在寻找系统的最小特征值和相应的特征向量.我知道ARPACK不适合寻找小的特征值,但我试图使用shift-invert来找到这些值,但仍然没有取得多大成功.

使用上述参数(具体而言sigma = 0),我收到以下错误:

RuntimeError: Factor is exactly singular
Run Code Online (Sandbox Code Playgroud)

有了sigma = 0.001 …

python cluster-analysis linear-algebra scipy sparse-matrix

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

OpenCV3错误:"无法停止流:设备的不适当的ioctl"

我正在尝试使用OpenCV 3.2(来自menpo conda频道)读取.mov文件的帧.我在Ubuntu 16.04 64位设置上使用Python 3.5.3通过Anaconda.

问题是,当我遇到cap.read()调用时,我从OpenCV得到以下错误消息,并且循环立即中断并捕获if num == 0条件.

这是我正在运行的全部代码:

import cv2
import numpy as np
import sys

f = sys.argv[1]
cap = cv2.VideoCapture(f)

frames = []
num = 0
while cap.isOpened():
    ret, frame = cap.read()
    if not ret: break
    gframe = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    frames.append(gframe)
    num += 1
    if num % 100 == 0:
        frames.append(gframe)
    if num % 1000 == 0:
        print(num)

if num == 0:
    print("Something went wrong: no frames found.")
    exit(0) …
Run Code Online (Sandbox Code Playgroud)

python opencv anaconda conda

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