我正在解析一个作为InputStream读入的xml文档,我看到的一个例子是首先在javax.xml.transform.stream.StreamSource中对流进行分段.当我在读入流时解析流时,为什么会这样做?Java API的描述没有帮助:"以XML标记流的形式充当转换源的持有者."
StreamSource示例:
XMLInputFactory xif = XMLInputFactory.newFactory();
StreamSource reportStream =
new StreamSource(new URL("file:///myXmlDocURL.xml").openStream());
XMLStreamReader xmlReader = xif.createXMLStreamReader(reportStream);
xmlReader.nextTag();
while (xmlReader.hasNext()) {
if (xmlReader.getLocalName().equals("attributeICareAbout")) {
String tempTagValue = xmlReader.getText();
xmlReader.nextTag();
}
}
xmlReader.close();
Run Code Online (Sandbox Code Playgroud)
没有StreamSource的示例:
XMLInputFactory xif = XMLInputFactory.newFactory();
XMLStreamReader xmlReader =
xif.createXMLStreamReader(new URL("file:///myXmlDocURL.xml").openStream());
xmlReader.nextTag();
while (xmlReader.hasNext()) {
if (xmlReader.getLocalName().equals("attributeIcareAbout")) {
String tempTagValue = xmlReader.getText();
xmlReader.nextTag();
}
}
xmlReader.close();
Run Code Online (Sandbox Code Playgroud) 任何人都可以解释如何使用存储在java'PKCS#12`密钥库中的证书来加密和解密文件?
我已将 nginx 设置为托管 jenkins 和其他一些应用程序的 ubuntu 实例上的反向代理。我正在使用 nginx 根据相对路径路由到各种应用程序。从客户端到 nginx 的所有流量都通过 https。在防火墙后面,nginx 通过 http 将所有内容路由到配置的路径和端口号。它看起来像这样:
firewall
|
|
--->https--->nginx---http--->jenkins
|
|
Run Code Online (Sandbox Code Playgroud)
nginx 配置文件的相关部分是这样的:
server {
listen 443 ssl;
ssl_certificate cert.crt;
ssl_certificate_key cert.key;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
location /jenkins {
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:6969;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是 jenkins 使用简单的身份验证,并且在成功登录后,它会发送 302 重定向。Nginx 正确代理了 url 和端口,但不是方案。因此,客户端遵循 http 而不是 https 上的重定向。在浏览器中,我收到 400 错误:
400 Bad Request The …Run Code Online (Sandbox Code Playgroud) 我想通过sftp将文件上传到远程服务器.我正在使用Jsch库.下面的代码有效,但我总是要通过输出控制台输入用户名和密码,即使我在Session对象中设置了这些值.我在Stack Overflow和Jsch示例页面上看到的每个示例都需要用户输入.有没有办法以编程方式传递密码?(我需要通过用户名/密码进行身份验证.我无法使用SSH密钥...)
JSch jsch = new JSch();
ChannelSftp sftpChannel;
Session session;
Channel channel;
OutputStream os;
try {
session = jsch.getSession("myUsername", "myHost", 22);
session.setPassword("myPassword");
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
channel = session.openChannel("sftp");
channel.connect();
sftpChannel = (ChannelSftp) channel;
os = sftpChannel.getOutputStream();
} catch (Exception e) {
}
Run Code Online (Sandbox Code Playgroud) 可能重复:
确保未在所有浏览器中缓存网页
我正在研究连接到dojo.store.Memory的简单dojo comboBox(dijit.form.ComboBox)。我在Firefox 10上使用了最新的Netbeans和Glassfish设置。我的问题是,当我更改或注释掉与组合框相关的代码时,在刷新网页时不会显示更改。我试过清理/构建,重新运行等,但是注释掉代码似乎无济于事。Firefox似乎正在运行页面的缓存版本,而不是呈现我所做的最新代码更改。我不需要每次刷新页面时都必须清除浏览器缓存。(我最终想要做的就是指示自动完成功能打开和关闭的时间。)有什么想法吗?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script src="http://ajax.googleapis.com/ajax/libs/dojo/1.7.1/dojo/dojo.js" type="text/javascript" ></script>
Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript">
dojo.require("dijit.form.ComboBox");
dojo.require("dojo.store.Memory");
var myBox, store;
dojo.ready(function(){makeComboBox();});
function makeComboBox(){
store = new dojo.store.Memory({
data: [
{name:"Alabama", id:"AL"},
{name:"Alaska", id:"AK"},
{name:"American Samoa", id:"AS"},
{name:"Arizona", id:"AZ"},
{name:"Arkansas", id:"AR"},
{name:"Armed Forces Europe", id:"AE"},
{name:"Armed Forces Pacific", id:"AP"},
{name:"Armed Forces the Americas", id:"AA"},
{name:"California", id:"CA"},
{name:"Colorado", id:"CO"},
{name:"Connecticut", id:"CT"},
{name:"Delaware", id:"DE"}
]
});
myBox = new dijit.form.ComboBox({
id: "stateSelect", …Run Code Online (Sandbox Code Playgroud) 我正在解析十进制格式的网格坐标.我想将模式匹配存储在StringBuilder数组中以便进一步操作.但是,在每个while循环中调用append()时,我得到一个空指针.
String coordinateExample = "N14585928W084144340";
this.parseCoordinate(coordinateExample);
...
public void parseCoordinate(String coordinateString) {
int i = 0;
//extract NSEW leading characters
Pattern pL = Pattern.compile("[A-Z]");
Matcher m = pL.matcher(coordinateString);
StringBuilder[] hemisphere = new StringBuilder[]{};
while (m.find()) {
hemisphere[i].append(m.group());
//System.out.println("m.group(): " + m.group());
i++;
}
// reset i
i = 0;
//extract decimal degree digits
Pattern pN = Pattern.compile("[0-9]++");
Matcher n = pN.matcher(coordinateString);
StringBuilder[] coordinate = new StringBuilder[]{};
while (n.find()) {
coordinate[i].append(n.group());
//System.out.println("q.group(): " + n.group());
i++;
}
}
Run Code Online (Sandbox Code Playgroud) 我想结合以下两个查询,以便最终得到三列:RelativePath,field = null/empty string,value with value.我可以单独执行查询,但是我很难将它们组合起来.
SELECT RELATIVEPATH, COUNT(RELATIVEPATH) FROM APP
WHERE (FIELD IS NULL) OR (FIELD = '')
GROUP BY (RELATIVEPATH);
SELECT RELATIVEPATH, COUNT(RELATIVEPATH) FROM APP
WHERE (FIELD IS NOT NULL)
GROUP BY (RELATIVEPATH);
Run Code Online (Sandbox Code Playgroud) 我想从队列中提取多个文件并同时解析它们.但是,我的执行者只调用一个线程:
private static ScheduledExecutorService parsingExec ;
protected static BlockingQueue<Path> queue = new LinkedBlockingQueue<>();
int threadPoolSize = 10;
parsingExec = Executors.newScheduledThreadPool(threadPoolSize);
parsingExec.scheduleAtFixedRate(new MyParser(queue), 0, 0, TimeUnit.MILLISECONDS);
Run Code Online (Sandbox Code Playgroud) 我想将URL实例化为类中的私有字段,但我无法捕获MalformedURLException.我尝试过使用静态初始化块,但这也不起作用.我该如何解决这个问题?
public class MyClass{
private final static URL DEFAULT_URL = new URL("http://www.yadayada.com?wsdl")
...
}
Run Code Online (Sandbox Code Playgroud)