标准的Java 1.6 javax.xml.parsers.DocumentBuilder类是否安全?从多个线程并行调用parse()方法是否安全?
JavaDoc没有提到这个问题,但Java 1.4中同一类的JavaDoc明确表示它并不意味着并发; 所以我可以假设在1.6中它是?
原因是我在ExecutorService中运行了数百万个任务,每次调用DocumentBuilderFactory.newDocumentBuilder()似乎都很昂贵.
我做了一个程序,从客户端发送UDP数据包到服务器这里是发送器代码
import java.io.IOException;
import java.net.*;
/**
*
* @author hp
*/
public class JavaApplication9 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws UnknownHostException, SocketException, IOException {
// TODO code application logic here
byte[] buffer = {10,23,12,31,43,32,24};
byte [] IP={-64,-88,1,106};
InetAddress address = InetAddress.getByAddress(IP);
DatagramPacket packet = new DatagramPacket(
buffer, buffer.length, address, 57
);
DatagramSocket datagramSocket = new DatagramSocket();
datagramSocket.send(packet);
System.out.println(InetAddress.getLocalHost().getHostAddress());
}
}
Run Code Online (Sandbox Code Playgroud)
接收器代码功能是
public void run(){
try{
DatagramSocket serverSocket = new DatagramSocket(port); …Run Code Online (Sandbox Code Playgroud) 想要模仿CesiumJS应用程序中的左右箭头键,类似于Google Earth导航.按向右或向左箭头键应分别向右或向左旋转地球约5%的视图边界.如果缩小则它在很大程度上旋转并且放大旋转的程度较小.
已经查看了Viewer,Camera,Scene等的文档,但是如何做一些应该简单的事情并不明显.
能够向右或向左旋转固定量但是想要根据视图范围中的宽度旋转量.如何获得铯中视图的顶部,左侧,右侧,底部的最大范围?
var viewer = new Cesium.Viewer('cesiumContainer', {
navigationHelpButton: false, animation: false, timeline: false
});
var camera = viewer.camera;
document.addEventListener('keydown', function(e) {
setKey(e);
}, false);
function setKey(event) {
if (event.keyCode == 39) { // right arrow
camera.rotateRight(Cesium.Math.toRadians(10.0));
} else if (event.keyCode == 37) { // left arrow
camera.rotateLeft(Cesium.Math.toRadians(10.0));
}
}
Run Code Online (Sandbox Code Playgroud)
要进行测试,请访问SandCastle应用并粘贴上面的javascript代码段.要激活键盘绑定,请单击全屏模式,箭头键将起作用.
或者,摄像机可用于访问positionCartographic,但这只是摄像机的制图位置,而不是视图边界.
var positionCartographic = camera.positionCartographic;
var height = positionCartographic.height;
var lat = positionCartographic.latitude;
var lon = positionCartographic.longitude + Cesium.Math.toRadians(10.0);
camera.flyTo({
destination: …Run Code Online (Sandbox Code Playgroud) 与此类似:使用 Python 从 KML BatchGeo 文件中提取坐标
但我想知道如何检查数据对象,以及如何对其进行迭代,并解析所有Placemark以获取coordinates.
下面是 KML 的样子,有多个<Placemark>标签。
示例 KML 数据:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/kml/2.2 http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd http://www.google.com/kml/ext/2.2 http://code.google.com/apis/kml/schema/kml22gx.xsd">
<Document id="...">
<name>...</name>
<Snippet></Snippet>
<Folder id="...">
<name>...</name>
<Snippet></Snippet>
<Placemark id="...">
<name>....</name>
<Snippet></Snippet>
<description>...</description>
<styleUrl>....</styleUrl>
<Point>
<altitudeMode>...</altitudeMode>
<coordinates> 103.xxx,1.xxx,0</coordinates>
</Point>
</Placemark>
<Placemark id="...">
...
</Placemark>
</Folder>
<Style id="...">
<IconStyle>
<Icon><href>...</href></Icon>
<scale>0.250000</scale>
</IconStyle>
<LabelStyle>
<color>00000000</color>
<scale>0.000000</scale>
</LabelStyle>
<PolyStyle>
<color>ff000000</color>
<outline>0</outline>
</PolyStyle>
</Style>
</Document>
</kml>
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的,extract.py:
from pykml import …Run Code Online (Sandbox Code Playgroud) 我不知道你是否看过惊人的Mytrack更新,但它允许将一个kml文件发送到Google Earth应用程序并将其显示在Google应用程序中(当然,如果已安装).

源代码在那里:http://code.google.com/p/mytracks/source/browse/
但我无法找到实现这一目标的方法.
我想我在这里找到了一些内容:http://code.google.com/r/jshih-mytracks3/source/browse/MyTracks/src/com/google/android/apps/mytracks/io/file/SaveActivity.java?specl = svn5178eb75934b7f0c4c23ec26b7d79a0787de18b8&R = 5178eb75934b7f0c4c23ec26b7d79a0787de18b8
else if (playTrack) {
Intent intent = new Intent()
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(GOOGLE_EARTH_TOUR_FEATURE_ID, KmlTrackWriter.TOUR_FEATURE_ID)
.setClassName(GOOGLE_EARTH_PACKAGE, GOOGLE_EARTH_CLASS)
.setDataAndType(Uri.fromFile(new File(savedPath)), GOOGLE_EARTH_KML_MIME_TYPE);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
硬编码方式提供此代码:
Intent intent = new Intent()
.addFlags(
Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra("com.google.earth.EXTRA.tour_feature_id","tour")
.setClassName("com.google.earth", "com.google.earth.EarthActivity")
.setDataAndType(Uri.fromFile(new File("/sdcard/test.kml")),
"application/vnd.google-earth.kml+xml");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但是上面的代码只显示了与此代码相同结果的路径:
Intent mapIntent = new Intent(Intent.ACTION_VIEW);
Uri uri1 = Uri.parse("file:///sdcard/test.kml");
mapIntent.setData(uri1);
startActivity(Intent.createChooser(mapIntent, "Sample"));
Run Code Online (Sandbox Code Playgroud)
我的目标是通过"播放"按钮获得相同的结果.
我想提取IP并将其返回.就像是
def getIPfromString ( myString ) {
..
return IP
}
IP = getIPfromString("ftp://192.168.13.108/720_prev")
print " IP Address : " + IP
Run Code Online (Sandbox Code Playgroud)
输出:
IP Address : 192.168.13.108
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用simplekml将一堆地理标记照片放入 KML 文件(实际上是 KMZ 文件)中,以便在 Google Earth 中查看。我已经获得了要显示的位置,但是当我尝试将图像放入“描述”中时,因此当我单击图像出现的位置时,它不起作用。只有一张空白图像。我正在尝试使用此处显示的 addfile() 命令来完成此操作。我的代码如下所示:
import os, simplekml
path = r'C:\Users\as\Desktop\testpics'
kml = simplekml.Kml()
for (dirpath, dirnames, filenames) in os.walk(path):
for filename in filenames:
fullpath = os.path.join(dirpath, filename)
try:
Lat, Long, Alt = GetLatLong(fullpath) #Didn't include this function, but it appears to work
except:
Lat, Long, Alt = (None, None, None)
if Lat: #Only adds to kml if it has Lat value.
x, y = (FormatLatLong(Lat), FormatLatLong(Long)) #puts into decimal coords …Run Code Online (Sandbox Code Playgroud) 我在无线电数据模式解码程序中使用 javax.sound.sampled 包。要使用该程序,用户将无线电接收器中的音频输入到 PC 的线路输入中。用户还需要使用他们的混音器程序来选择线路作为录音输入。问题是有些用户不知道如何执行此操作,有时其他程序也会更改录音输入设置。所以我的问题是我的程序如何检测线路是否设置为录音输入?如果我的程序检测到录音输入设置不正确,是否可以更改录音输入设置?
谢谢你的时间。
伊恩
我想这对任何真正熟悉Cesium的CZML文件的人来说都是一个简单的问题.我只是尝试使用Cesium显示一系列lat/long/alt点作为飞行路径.有人能告诉我"位置"标签应该是什么样子吗?
除非我在错误的地方寻找,否则我没有看到很多CZML的例子.所以很难知道可以使用哪些标签以及如何使用它们(如果你弄错了,Java控制台就不会显示错误).
在Cesium网站上的Sandcastle CZML示例中,相关部分如下所示:
"position" : {
"interpolationAlgorithm" : "LAGRANGE",
"interpolationDegree" : 1,
"epoch" : "2012-08-04T16:00:00Z",
// Trimmed to just 2 points
"cartesian" : [0.0, -2379754.6637012, -4665332.88013588, 3628133.68924173,
3894.996219574019, -2291336.52323822, -4682359.21232197, 3662718.52171165]
}
Run Code Online (Sandbox Code Playgroud)
如果是两点,为什么有8个值?如果是ECEF坐标,我预计每点只有三个......
例如,当我尝试这个时,我在控制台中收到了一条"未被捕获的错误"消息...这不是很有用:
"cartographic" : [-1.472853549, 0.589580778, 1000,
-1.472962668, 0.589739552, 1000 ]
Run Code Online (Sandbox Code Playgroud)
根据文档,制图采用(长,纬,高)长,纬度为弧度,高度为米.