小编gan*_*sub的帖子

没有找到Java 9 Zip End Header异常

我试图使用java- SRTM文件从这个URL批量下载zip文件,它需要用户名/密码下载,我使用以下java代码,它给了我以下异常

java.util.zip.ZipException: zip END header not found
at java.util.zip.ZipFile$Source.zerror(java.base@9-internal/ZipFile.java:1210)
at java.util.zip.ZipFile$Source.findEND(java.base@9-internal/ZipFile.java:1119)
at java.util.zip.ZipFile$Source.initCEN(java.base@9-internal/ZipFile.java:1126)
at java.util.zip.ZipFile$Source.<init>(java.base@9-internal/ZipFile.java:963)
at java.util.zip.ZipFile$Source.get(java.base@9-internal/ZipFile.java:933)
at java.util.zip.ZipFile.<init>(java.base@9-internal/ZipFile.java:213)
at java.util.zip.ZipFile.<init>(java.base@9-internal/ZipFile.java:145)
at java.util.zip.ZipFile.<init>(java.base@9-internal/ZipFile.java:159)
at toposwapper.rules.ZipFileDownloadAction.execute(ZipFileDownloadAction.java:29)
Run Code Online (Sandbox Code Playgroud)

这是我的java版本

 java openjdk version "9-internal"
 OpenJDK Runtime Environment (build 9-internal+0-2016-04-14-195246.buildd.src)
 OpenJDK 64-Bit Server VM (build 9-internal+0-2016-04-14-195246.buildd.src, mixed mode)
Run Code Online (Sandbox Code Playgroud)

这是我用来下载的代码 -

    URL url1 = null;
    URLConnection conn = null;
    InputStream inputs = null;
    FileOutputStream out = null;
    try 
    {
        url1 = new URL(url);
        conn = url1.openConnection();
        conn.setDoInput(true);
        conn.setDoOutput(false);
        conn.setRequestProperty("file-name", output.getName());
        conn.setRequestProperty("content-type","application/zip");
        String userpass = …
Run Code Online (Sandbox Code Playgroud)

java http download java-9 ubuntu-16.04

10
推荐指数
1
解决办法
8183
查看次数

用状态/策略模式替换if/else逻辑

我已经阅读过以前的堆栈交换,用Java替换条件逻辑,例如带有状态/策略模式的IF/ELSE,但我不确定我的情况是否适合替换.以下是我看到的结果 - Java中的if语句的长列表以及将许多'if else'语句转换为更干净的方法

我本质上是在编写一个文件下载管理器,这些是我的IF/ELSE结构:

  1. 如果文件及其zip文件存在,则将zip文件移动到zip文件目录并读入文件
  2. 如果zip文件存在,则解压缩文件并将zip文件移动到zip文件目录并读入文件
  3. 如果zip文件不存在,则从指定的URL下载,然后解压缩并读入文件并将zip文件移动到指定的目录.
  4. 如果URL中不存在zip文件,则创建空白文件并将其写入磁盘.

基本上我理解你将这四个条件作为哈希映射中的键,然后值是需要发出的"命令".但是我相信你仍然需要一个If/Else来决定在作为输入给出的键上调用什么动作.所以我没有看到好处.有人可以解释一下吗?

java state if-statement strategy-pattern

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

可以用icc编译cython吗?

我正在尝试使用icc编译器在Ubuntu 14.04上从源代码构建cython,因为我的python是用Intel icc编译器编译的.

当我尝试使用pip3安装cython安装cython然后运行cython时出现以下错误

Traceback (most recent call last):
File "/usr/local/bin/cython", line 9, in <module>
load_entry_point('Cython==0.24', 'console_scripts', 'cython')()
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 351, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2363, in load_entry_point
return ep.load()
File "/usr/lib/python3/dist-packages/pkg_resources.py", line 2088, in load
entry = __import__(self.module_name, globals(),globals(), ['__name__'])
File "/usr/local/lib/python3.4/dist-packages/Cython/Compiler/Main.py", line 28, in <module>
from .Scanning import PyrexScanner, FileSourceDescriptor
ImportError: /usr/local/lib/python3.4/dist-packages/Cython/Compiler/Scanning.cpython-34m.so: undefined symbol: __intel_sse2_strchr 
Run Code Online (Sandbox Code Playgroud)

如何使用icc编译器从源代码安装cython?

我试过这个并没有用

从cython目录(从github下载)

python3.4 setup.py CC = icc

我收到以下消息 -

/home/aa/libPython/cython/Cython/Distutils/build_ext.py:20: UserWarning:    
Cython.Distutils.build_ext does not properly …
Run Code Online (Sandbox Code Playgroud)

distutils cython icc python-3.x ubuntu-14.04

5
推荐指数
1
解决办法
1251
查看次数

如何用icc覆盖python的distutils gcc链接器?

我能够从源代码在Ubuntu 14.04上成功构建cython,如本SE问题所述/回答编译cython来自icc的源代码,我从这里下载了源代码 - Cython源代码下载.

编译cython的命令是

CC = icc LINKCC = icc python3.4 setup.py build

我附上了构建日志.它仍然使用gcc进行链接.以下是构建日志的示例.

看来CC = icc LINKCC = icc似乎没有将链接器更改为icc.它仍在使用x86_64-linux-gnu-gcc.当我设置环境变量LDFLAGS = -lirc时,环境变量被传递给gcc而不是icc.此外,当我在BuildExecutable.py中放置print语句时,它们不会被调用.

icc -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -fPIC -I/usr/include/python3.4m -c /home/aswin/libPython/Cython-0.24/Cython/Plex/Scanners.c -o build/temp.linux-x86_64-3.4/home/aswin/libPython/Cython-0.24/Cython/Plex/Scanners.o
icc: command line warning #10006: ignoring unknown option '-fwrapv'
creating build/lib.linux-x86_64-3.4
creating build/lib.linux-x86_64-3.4/Cython
creating build/lib.linux-x86_64-3.4/Cython/Plex
x86_64-linux-gnu-gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -lirc -g -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 …
Run Code Online (Sandbox Code Playgroud)

distutils cython icc python-3.4 ubuntu-14.04

4
推荐指数
1
解决办法
1027
查看次数

ValueError : 使用 numpy 设置具有序列的数组元素

我在python中有这段代码

data = np.empty(temp.shape)
maxlat = temp.shape[0]
maxlon = temp.shape[1]
print(maxlat,maxlon)

for i in range(0,maxlat) :
    for j in range(0,maxlon):
        data[i][j] = p_temperature(pr,temp[i][j])
Run Code Online (Sandbox Code Playgroud)

当我在 Python 3.5 中运行此代码时,出现此错误

ValueError : setting an array element with a sequence
Run Code Online (Sandbox Code Playgroud)

的价值maxlat就是181和值maxlonIS 360

temp数组的形状是(181,360)

我也尝试了评论中的建议:

for i in range(0,maxlat) :
    for j in range(0,maxlon):
        data[i][j] = temp[i][j]
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的错误。

python arrays numpy python-3.5

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

Geod ValueError:未定义的逆测地线

我想通过使用库中的Geod类来计算两个lon/lat点之间的距离pyproj.

from pyproj import Geod

g = Geod(ellps='WGS84')
lonlat1 = 10.65583081724002, -7.313341167341917
lonlat2 = 10.655830383300781, -7.313340663909912

_, _, dist = g.inv(lonlat1[0], lonlat1[1], lonlat2[0], lonlat2[1])
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ValueError                                Traceback (most recent call last)
<ipython-input-5-8ba490aa5fcc> in <module>()
----> 1 _, _, dist = g.inv(lonlat1[0], lonlat1[1], lonlat2[0], lonlat2[1])

/usr/lib/python2.7/dist-packages/pyproj/__init__.pyc in inv(self, lons1, lats1, lons2, lats2, radians)
    558         ind, disfloat, dislist, distuple = _copytobuffer(lats2)
    559         # call geod_inv function. inputs modified in place.
--> 560         _Geod._inv(self, inx, iny, inz, ind, radians=radians) …
Run Code Online (Sandbox Code Playgroud)

python geospatial pyproj

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

解析纬度/纬度的arraylist以获得最西部的纬度

我有一个名为Coordinate的类,它包含两个属性 - 纬度和经度.我将它添加到ArrayList.现在我想获得这个ArrayList的最西部坐标.我想要一个有效的算法(因为我有6000个)坐标类.

java arraylist

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