小编Bar*_*lom的帖子

XSD all和XSD序列之间的中间路径

我正在用XSD定义一个用户元素.对于此示例,用户具有姓名,电子邮件和一个或多个国籍.我试过了:

<xs:all>
  <xs:element name="name" blabla />
  <xs:element name="email" blabla />
  <xs:element name="nationality" minOccurs="1" maxOccurs="unbounded" />
</xs:all>
Run Code Online (Sandbox Code Playgroud)

但是,这是非法的.显然,"全部"中的元素只能出现一次(或根本不出现).我可以通过将All更改为Sequence来解决这个问题,但是人们必须按照确切的顺序输入属性,我实际上并不关心.

有这两种组合可用吗?不是根据http://www.w3schools.com/Schema/schema_complex_indicators.asp,但也许它是隐藏的(或者我没有经验的眼睛看不到它).

通过直觉,我也尝试过:

<xs:all>
  <xs:element name="name" blabla />
  <xs:element name="email" blabla />
  <xs:sequence>
    <xs:element name="nationality" minOccurs="1" maxOccurs="unbounded" />
  </xs:sequence>
</xs:all>
Run Code Online (Sandbox Code Playgroud)

但遗憾的是,这无效.


这是当前的,真实的XSD:

  <!-- user -->
  <xs:complexType name="user">
    <xs:sequence>
      <xs:element name="firstname" type="xs:string" minOccurs="1" maxOccurs="1" />
      <xs:element name="appendix" type="xs:string" minOccurs="0" maxOccurs="1" />
      <xs:element name="lastname" type="xs:string" minOccurs="1" maxOccurs="1" />
      <xs:element name="address" type="xs:string" minOccurs="1" maxOccurs="1" />
      <xs:element name="zipcode" type="xs:string" minOccurs="1" maxOccurs="1" />
      <xs:element name="city" type="xs:string" minOccurs="1" …
Run Code Online (Sandbox Code Playgroud)

xml xsd

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

有没有办法对文件进行数字签名,以证明它们在某个时间点存在

我很好奇是否有办法对文件(技术上的任何数据)进行数字签名,例如合同或照片,因此从现在起10年后,可以证明它们是从这个时候开始,而不是从现在起9年后伪造.

例如,我可以编写对未来的预测,并用传统的方法对其进行签名,以证明我已经编写了它,然后对其进行时间戳签名,以便在实现时,我可以证明我预测它.

我想到的一种方式是可能有一个时间戳权威.您向他们发送数据,他们创建数据+时间戳的哈希值,并使用他们的私钥使用RSA加密哈希.因此存在签名文档:数据,时间戳,加密散列.

10年后,我对数据+假定的时间戳进行哈希,并检查它是否与我使用权限的公共RSA密钥(我信任的)解密的加密哈希相匹配.如果是,我知道时间戳是有效的.

我可以看到2个问题:

  • 需要外部权力机构
  • 权威机构的私钥需要保密,因为如果泄露,所有用它签名的文件都将变为无效.

你能想到没有(其中一个)这些问题的解决方案吗?

security encryption timestamp signing trusted-timestamp

25
推荐指数
2
解决办法
2389
查看次数

使用HSQL内存数据库作为JPA数据源

我有一个内存数据源:

java.sql.Connection c = DriverManager.getConnection("jdbc:hsqldb:mem:testdb", "sa", "");            
emf = Persistence.createEntityManagerFactory("manager");
Run Code Online (Sandbox Code Playgroud)

但是现在我被卡住了.我想将它用作J2SE应用程序中的JPA数据源.我已经浏览了整个网络,但所有信息都与J2EE有关.

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">

    <persistence-unit name="manager">

        <jta-data-source>/*What to enter here?*/</jta-data-source>

        <properties>

            <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
            <property name="hibernate.hbm2ddl.auto" value="create-drop" />

        </properties>

    </persistence-unit>

</persistence>
Run Code Online (Sandbox Code Playgroud)

persistence hibernate jpa hsqldb jpa-2.0

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

JPA OneToMany系列的条件

如果我有这个实体:

@Entity
class Pet {

    @Id
    long id;

    public enum State { ALIVE, DEAD }

    @Enumerated(EnumType.STRING)
    @...
    State state;

    @...
    String name;

}
Run Code Online (Sandbox Code Playgroud)

我可以创建这样的映射:

@Entity
class Owner {

    @OneToMany(condition="state = ALIVE") // or something like that
    Set<Pet> alivePets;

    @OneToMany(condition="state = DEAD")
    Set<Pet> deadPets;

}
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa

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

每个客户一个线程.可行?

我正在编写一个Java服务器,它使用普通套接字来接受来自客户端的连接.我正在使用相当简单的模型,其中每个连接在阻塞模式下都有自己的线程读取.伪代码:

handshake();

while(!closed) {
  length = readHeader(); // this usually blocks a few seconds
  readMessage(length);
}

cleanup();
Run Code Online (Sandbox Code Playgroud)

(线程是从一个创建的,Executors.newCachedThreadPool()所以启动它们不应该有任何重大的开销)

我知道这是一个天真的设置,如果线程是专用的OS线程,它不会很好地扩展到许多连接.但是,我听说Java中的多个线程可以共享一个硬件线程.真的吗?

知道我将在Linux上使用Hotspot VM,在具有8核和12GB RAM的服务器上,您认为这种设置适用于数千个连接吗?如果没有,有哪些替代方案?

java io networking multithreading nio

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

URLConnection没有得到charset

我正在使用URL.openConnection()从服务器下载的东西.服务器说

Content-Type: text/plain; charset=utf-8
Run Code Online (Sandbox Code Playgroud)

connection.getContentEncoding()回报null.怎么了?

java content-type http urlconnection httpurlconnection

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

已知尺寸的JPEG图像的最大文件大小

我打算让用户上传用JPEG压缩的300x300图像.有没有办法确定这种图像的最大文件大小是多少?

我可以想象这可以通过压缩100质量的随机噪声来尝试,但是理论最大值是多少?

假设图像是完全不可压缩的随机噪声,可能是每像素3个字节(24位颜色)还是元数据的余量?或者在压缩时这样的图像会比原始图像变大吗?

jpeg max

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

Swing对话框如何工作?

如果你在Swing中打开一个对话框,比如一个JFileChooser,它就像这个伪代码:

swing event thread {
  create dialog
  add listener to dialog close event {
    returnValue = somethingFromDialog
  }
  show dialog
  (wait until it is closed)
  return returnValue
}

我的问题是:这怎么可能有效?如您所见,线程等待返回,直到对话框关闭.这意味着Swing事件线程被阻止.然而,人们可以与对话框进行交互,AFAIK需要该对话框才能运行.

那怎么办?

java swing multithreading jfilechooser jdialog

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

没有RTTI但仍然是虚拟方法

可以使用禁用的运行时类型信息编译C++代码,这会禁用dynamic_cast.但是,仍然需要根据目标的运行时类型调度虚拟(多态)方法.这是否意味着类型信息无论如何dynamic_cast都应该存在,并且应该能够始终工作?

c++ polymorphism rtti

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

即使我点击允许,Facebook身份验证也会返回"已拒绝"

如果我打开这个网址:

https://www.facebook.com/dialog/oauth?client_id=298062603388&response_type=token&redirect_uri=https%3A%2F%2Fwww.facebook.com%2Fconnect%2Flogin_success.html

然后单击"允许",浏览器应重定向到类似URL

https://www.facebook.com/connect/login_success.html#access_token= ...

而且我确实看到过这种情况.然而,现在它实际指向的是永远

https://www.facebook.com/connect/login_success.html?error_reason=user_denied&error=access_denied&error_description=The+user+denied+your+request.

所以它说我点击了"拒绝",即使我没有.该页面甚至显示"成功"(尽管它可能只是一个静态文件,如URL所示)

我不认为我做错了什么(我从这个页面的底部得到了信息,"桌面应用程序"),但立刻把责任归咎于Facebook的bug是愚蠢的.

我现在也无法在Facebook上创建新的应用程序(我得到一个不起眼的"抱歉"错误消息).这可能与它有关吗?

facebook

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