小编Cra*_*lus的帖子

Java(JAXP)XML解析DocumentBuilder的差异

两者之间有什么区别吗?

  1. DocumentBuilder.parse(InputStream)
  2. DocumentBuilder.parse(InputSource)

我只能发现,对于第一种情况,解析器检测流中的编码,因此它更安全,而后者我不确定是否需要设置编码.

我应该知道的任何其他要点(例如表演)?

java dom sax jaxp

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

Java/XSD解析

我怀疑是否有这样的东西,但我想问:
有没有人知道Java中是否有一个库读取xsd文件并"创建"已定义的元素,例如以字符串格式在代码中使用?
例如,阅读以下架构:

<?xml version="1.0" encoding="utf-8"?>
        <xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
          <xs:element name="Address">
            <xs:complexType>
              <xs:sequence>
                  <xs:element name="Street" type="xs:string" />
                  <xs:element name="Town" type="xs:string" />
                  <xs:element name="Country" type="xs:string" minOccurs="0" />
                </xs:element>
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:schema>
Run Code Online (Sandbox Code Playgroud)

并使用以下格式的String:

<Address>  
  <Street></Street>
  <Town></Town>
  <Country></Country>
</Address>
Run Code Online (Sandbox Code Playgroud)

自动工具执行类似的操作,即解析WSDL,并从类型部分创建例如JAXB类,它们可以是模式中定义的元素的实例.
有没有图书馆可以做到这一点?

更新:
例如,在Eclipse中为Web应用程序创建xml描述符时,它会显示一个树表,其中包含用户根据模式填写的所有必需元素.他们是如何做到的呢?我想他们会解析包含在罐子里的xsds
任何输入都是非常受欢迎的.
谢谢!

java xml xsd dom jaxp

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

java密钥库和密码设置

我在java keystores和keytool上有以下问题.我假设密钥库可能有多个证书.正如我所尝试的那样,通过keytool,我可以创建一个密钥库,并且要访问这个密钥库,我必须设置密码.另外,要访问每个证书条目,我必须设置密码.是否必须为密钥库和条目使用相同的密码?如果不是(我认为这样做是合理的)为什么是以下代码:

char[] pwd = new char[]{'s','e','c','r','e','t'};
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(new FileInputStream("myPersonal.keystore"), pwd);
kmf.init(ks, pwd);//fails here with exception
Run Code Online (Sandbox Code Playgroud)

给我以下例外?

Exception in thread "main" java.security.UnrecoverableKeyException: Cannot recover key
    at sun.security.provider.KeyProtector.recover(Unknown Source)
    at sun.security.provider.JavaKeyStore.engineGetKey(Unknown Source)
    at sun.security.provider.JavaKeyStore$JKS.engineGetKey(Unknown Source)
    at java.security.KeyStore.getKey(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

secret是访问myPersonal.keystore我通过keytool创建的密钥库的密码.其中有2个条目,用于证书,1个DSA和1个RSA.每个密码库(以及彼此)都有不同的密码.现在代码是正确的,因为如果我使用一个密钥库,其中一个证书条目具有与密钥库相同的密码,则没有异常,程序运行正常.

那么这里的问题是什么?我不应该有不同的密码?我不应该有很多证书?或者是什么?

java security ssl digital-certificate keytool

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

用Java Collections替换旧版Stack?

这或许是一个Java琐事问题.

我多次使用Stack实现.

我已经读过这被认为是一个遗留类,并且由于它的子类Vector使其在单线程应用程序中的性能变差.

我的问题是,Java Collection类中最好的选择是什么?

是否有另一个Stack可供选择的课程(可能是不同的名字)?

我的意思是,好的实现堆栈另一个现有的数据结构很容易,但我希望有一个现有Stack的使用.

java collections stack

8
推荐指数
2
解决办法
3471
查看次数

错误java.lang.IndexOutOfBoundsException:索引0无效,我的程序android中的大小为0

我开始在android中开发,我尝试修改Snake代码,包括调用浏览器来显示网页,当我执行我的应用程序时它显示在brwser中的页面,但问题是当我回到蛇应用程序时它显示应用程序意外停止的消息,logCat显示下面的例外情况

02-19 01:06:50.920: W/dalvikvm(3394): threadid=1: thread exiting with uncaught exception (group=0x4015a760)
02-19 01:06:50.930: E/AndroidRuntime(3394): FATAL EXCEPTION: main
02-19 01:06:50.930: E/AndroidRuntime(3394): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
02-19 01:06:50.930: E/AndroidRuntime(3394):     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
02-19 01:06:50.930: E/AndroidRuntime(3394):     at java.util.ArrayList.get(ArrayList.java:308)
02-19 01:06:50.930: E/AndroidRuntime(3394):     at com.example.android.snake.SnakeView.updateSnake(SnakeView.java:448)
02-19 01:06:50.930: E/AndroidRuntime(3394):     at com.example.android.snake.SnakeView.update(SnakeView.java:403)
02-19 01:06:50.930: E/AndroidRuntime(3394):     at com.example.android.snake.SnakeView.setMode(SnakeView.java:335)
02-19 01:06:50.930: E/AndroidRuntime(3394):     at com.example.android.snake.SnakeView.onKeyDown(SnakeView.java:278)
02-19 01:06:50.930: E/AndroidRuntime(3394):     at android.view.KeyEvent.dispatch(KeyEvent.java:2387)
02-19 01:06:50.930: E/AndroidRuntime(3394):     at android.view.View.dispatchKeyEvent(View.java:4569)
02-19 01:06:50.930: E/AndroidRuntime(3394):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1113)
02-19 01:06:50.930: E/AndroidRuntime(3394):     at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1113)
02-19 01:06:50.930: E/AndroidRuntime(3394): …
Run Code Online (Sandbox Code Playgroud)

java android

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

LinkedHashMap如何在幕后工作?

我读到LinkedHashMap和描述(虽然非常有趣)我无法理解它是如何实际完成它的工作的.作为旁注,我知道HashMapJava中的工作原理.
所以我查看了源代码,仍然无法弄清楚它是如何工作的.也许在这种情况下我并没有抓住OOP的基本内容所以请耐心等待.
来概括,那会搞乱我的部分是:
LinkedHashMap代表所有其父的电话HashMap.
在内部它覆盖HashMap.Entry来实现各种recordAccessrecordRemoval这似乎实现的逻辑方法,LinkedHashMap
但实际Entries是基类的表内即HashMap该实例的表HashMap.Entry不和LinkedHashMap.Entry.
所以,我想不出如何使用各种recordAccessrecordRemove等实际上被调用.
那么有谁能帮我理解这里发生了什么?
我是否正确认为这LinkedHashedMap.Entry是由HashMap?创建的表的类型?但是怎么样?

更新:
我的问题是如何recordAccess调用.我使用衍生版本HashMap失败的实验,因为盛源路(+1) - 我的不好

更新:
我尝试的以下内容与我正在做的相同(我认为)LinkedHashMap:

package delete;  

public class Base<T> {  

    Entry<T>[] table;  
    int idx = 0;  
    @SuppressWarnings("unchecked")  
    public Base(){  
        System.out.println("In base");  
        table = new Entry[10];  
    }

    public void add(T x){  
        table[idx] = …
Run Code Online (Sandbox Code Playgroud)

java oop collections dictionary hashmap

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

这个位操作在Java中如何工作?

我正在研究Java如何计算int的位集.
在我的脑海里,我有一些简单的东西(我认为是正确的):

public static int bitCount(int number){  
        final int MASK = 0x1;  
        int count = 0;  

        for(int i = 0; i < 32; i++){  
            if(((number >>> i) & MASK) == MASK){  
                count++;  
            }  
        }  
        return count;  
    }  
Run Code Online (Sandbox Code Playgroud)

相反,我找到了一种方法,我完全不知道在做什么(对我来说似乎很神奇):

 i = i - ((i >>> 1) & 0x55555555);  
 i = (i & 0x33333333) + ((i >>> 2) & 0x33333333);  
 i = (i + (i >>> 4)) & 0x0f0f0f0f;  
 i = i + (i >>> 8);  
 i = i + (i >>> …
Run Code Online (Sandbox Code Playgroud)

java integer bit-manipulation

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

存储jtree的状态/扩展节点以恢复状态

我正在和JTree合作.

我想知道什么是最好的方法来了解在JTree中扩展哪些节点以便保存其状态(即保存所有扩展路径).因此,如果我调用model.reload()Jtree不会保持折叠,但我将能够将其原始状态恢复到用户,即,将扩展所有扩展节点.

java user-interface swing jtree treemodel

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

http持久连接和ssl会话

HTTP是一种应用程序协议,可以关闭并重新打开底层TCP连接,而不会影响HTTP应用程序(性能除外).
通过使用HTTP1.1,我们使用持久连接,但服务器或客户端仍然可以随时关闭连接.
对于安全性,HTTP通过SSL/TLS使用TCP.
我的理解是SSL的行为很像应用程序,至少这是TCP"查看"SSL的方式.
我的问题是,如果底层TCP套接字在安全连接建立后的某个时刻关闭,这是否意味着SSL会话变得无效并且各方应该从ssl握手开始?
或者底层TCP连接与TLS会话无关?

谢谢!

ssl https tomcat http

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

为什么JDK使用移位而不是乘法/除法?

我有以下问题:

如果被问到是否使用移位与乘法或除法(例如答案),请让JVM进行优化.

这里的示例:is-shifting-bits-faster-than-multiplying

现在我正在查看jdk源代码,例如Priority Queue,代码仅使用乘法和除法(有符号和无符号)进行移位.

理所当然地认为SO中的帖子是有效的答案我想知道为什么在jdk他们更愿意通过转移来做到这一点?

它是一些与性能无关的微妙细节吗?我怀疑它必须与上/下溢乘法和除法有关但我不确定.

有人有想法吗?使用移位是否能更好地处理溢出问题?或者只是味道问题?

java collections optimization bit-manipulation priority-queue

7
推荐指数
2
解决办法
1350
查看次数