我正在用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) 我很好奇是否有办法对文件(技术上的任何数据)进行数字签名,例如合同或照片,因此从现在起10年后,可以证明它们是从这个时候开始,而不是从现在起9年后伪造.
例如,我可以编写对未来的预测,并用传统的方法对其进行签名,以证明我已经编写了它,然后对其进行时间戳签名,以便在实现时,我可以证明我预测它.
我想到的一种方式是可能有一个时间戳权威.您向他们发送数据,他们创建数据+时间戳的哈希值,并使用他们的私钥使用RSA加密哈希.因此存在签名文档:数据,时间戳,加密散列.
10年后,我对数据+假定的时间戳进行哈希,并检查它是否与我使用权限的公共RSA密钥(我信任的)解密的加密哈希相匹配.如果是,我知道时间戳是有效的.
我可以看到2个问题:
你能想到没有(其中一个)这些问题的解决方案吗?
我有一个内存数据源:
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) 如果我有这个实体:
@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服务器,它使用普通套接字来接受来自客户端的连接.我正在使用相当简单的模型,其中每个连接在阻塞模式下都有自己的线程读取.伪代码:
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的服务器上,您认为这种设置适用于数千个连接吗?如果没有,有哪些替代方案?
我正在使用URL.openConnection()从服务器下载的东西.服务器说
Content-Type: text/plain; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
但connection.getContentEncoding()回报null.怎么了?
我打算让用户上传用JPEG压缩的300x300图像.有没有办法确定这种图像的最大文件大小是多少?
我可以想象这可以通过压缩100质量的随机噪声来尝试,但是理论最大值是多少?
假设图像是完全不可压缩的随机噪声,可能是每像素3个字节(24位颜色)还是元数据的余量?或者在压缩时这样的图像会比原始图像变大吗?
如果你在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需要该对话框才能运行.
那怎么办?
可以使用禁用的运行时类型信息编译C++代码,这会禁用dynamic_cast.但是,仍然需要根据目标的运行时类型调度虚拟(多态)方法.这是否意味着类型信息无论如何dynamic_cast都应该存在,并且应该能够始终工作?
如果我打开这个网址:
然后单击"允许",浏览器应重定向到类似URL
https://www.facebook.com/connect/login_success.html#access_token= ...
而且我确实看到过这种情况.然而,现在它实际指向的是永远
所以它说我点击了"拒绝",即使我没有.该页面甚至显示"成功"(尽管它可能只是一个静态文件,如URL所示)
我不认为我做错了什么(我从这个页面的底部得到了信息,"桌面应用程序"),但立刻把责任归咎于Facebook的bug是愚蠢的.
我现在也无法在Facebook上创建新的应用程序(我得到一个不起眼的"抱歉"错误消息).这可能与它有关吗?
java ×4
hibernate ×2
jpa ×2
c++ ×1
content-type ×1
encryption ×1
facebook ×1
hsqldb ×1
http ×1
io ×1
jdialog ×1
jfilechooser ×1
jpa-2.0 ×1
jpeg ×1
max ×1
networking ×1
nio ×1
persistence ×1
polymorphism ×1
rtti ×1
security ×1
signing ×1
swing ×1
timestamp ×1
xml ×1
xsd ×1