小编anz*_*aan的帖子

清除或设置null到java中的对象

我最近正在考虑释放Java对象占用的内存.在这样做时,我对如何在Java中复制(浅/深)对象以及如何避免在对象仍处于使用状态时意外清除/无效而感到困惑.

考虑以下场景:

  1. 将a ArrayList<Object>作为参数传递给方法.
  2. 将a传递ArrayList<Object>给可由线程处理的runnable类.
  3. 投入ArrayList<Object>一个HashMap.

现在在这种情况下,如果我打电话,list = null;或者list.clear();对象会发生什么?在这种情况下,对象会丢失,在哪种情况下只将引用设置为null?

我想这与浅层和深层复制对象有关,但在哪些情况下会发生浅层复制,在这种情况下,深层复制是否发生在Java中?

java null memory-management deep-copy shallow-copy

19
推荐指数
2
解决办法
5万
查看次数

System.currentTimeMillis的长度

是否System.currentTimeMillis总是返回的值固定的长度.在我的Windows Core2中,它返回一个13位长的值.

从其API:

以毫秒为单位返回当前时间.请注意,虽然返回值的时间单位是毫秒,但值的粒度取决于底层操作系统,并且可能更大.例如,许多操作系统以几十毫秒为单位测量时间.

java time timer epoch milliseconds

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

在 Java 中使用多级 HashMap 的最佳实践

我们有一种情况,我们最终会使用多级哈希映射;也就是说,哈希映射内部的哈希映射,深度为三或四级。

本能地,这感觉哪里不对劲。我在这里读过讨论如何迭代/使用多级哈希映射的帖子,但几乎没有人说这方面的最佳实践是什么。

为什么多级哈希映射不好,如果有的话,什么是更好的设计?

这是我们拥有的多级哈希映射的示例设计:

Map<String, Object1> map1;

class Object1 {
    String version;
    Map<String,Object2> map2;
}

class Object2 {
    Map<String,List<Object3>> map4;
    Map<String,String> map5;
}
Run Code Online (Sandbox Code Playgroud)

java hashmap multi-level

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

高山编译中的Gdal安装失败-“错误:命令'gcc'失败,退出状态为1”

我正在尝试在Alpine docker env中安装Gdal。我安装了Gdal的依赖项,一切顺利

RUN apk add --no-cache gcc build-base /gdal/gdal-dev-2.4.0-r1.apk /gdal/gdal-2.4.0-r1.apk /gdal/geos-3.7.1-r0.apk /gdal/libcrypto1.1-1.1.1b-r1.apk
Run Code Online (Sandbox Code Playgroud)

然后,我运行命令“ "pip install gdal" 下载”,GDAL-3.0.0.tar.gz但安装时最终出现错误。

修剪后的原木;

Building wheels for collected packages: gdal
  Building wheel for gdal (setup.py) ... error
  ERROR: Complete output from command /usr/local/bin/python -u -c 'import setuptools, tokenize;__file__='"'"'/tmp/pip-install-hlldvrpz/gdal/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-dj2y5pji --python-tag cp37:
  ERROR: WARNING: numpy not available!  Array support will not be enabled
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.7
  copying gdal.py -> build/lib.linux-x86_64-3.7 …
Run Code Online (Sandbox Code Playgroud)

gcc gdal docker alpine-linux

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