是418"我是一个茶壶" 真的是一个HTTP响应代码?
互联网上有各种各样的参考,包括响应代码列表,但我无法弄清楚这是否是一个奇怪的笑话.
在CMake中,假设一个人只是设置一个属性,那么它们之间是否有任何区别
set_target_properties(target PROPERTIES prop value)
Run Code Online (Sandbox Code Playgroud)
和
set_property(TARGET target PROPERTY prop value)
Run Code Online (Sandbox Code Playgroud)
?
参看
https://cmake.org/cmake/help/v3.0/command/set_property.html https://cmake.org/cmake/help/v3.0/command/set_target_properties.html
这意味着没有区别,但不是那么清楚.
由于图像大小很重要,因此强烈建议不要使用ADD从远程URL获取包.你应该使用curl或wget代替.这样,您可以删除提取后不再需要的文件,并且不必在图像中添加其他图层.例如,你应该避免做以下事情:
Run Code Online (Sandbox Code Playgroud)ADD http://example.com/big.tar.xz /usr/src/things/ RUN tar -xJf /usr/src/things/big.tar.xz -C /usr/src/things RUN make -C /usr/src/things all而是做一些像:
Run Code Online (Sandbox Code Playgroud)RUN mkdir -p /usr/src/things \ && curl -SL http://example.com/big.tar.xz \ | tar -xJC /usr/src/things \ && make -C /usr/src/things all
另一方面,稍后会注意到:
在Docker 17.05之前,甚至更多,在Docker 1.10之前,最小化图像中的层数非常重要.[...] Docker 17.05及更高版本增加了对多阶段构建的支持,允许您仅将所需的工件复制到最终图像中.
乃至
使用Bash &&运算符将两个RUN命令压缩在一起[是]容易出错且难以维护.
在我看来,如果你使用多阶段构建,建议ADD是不准确的.额外的层不太可能是一个问题,除非您下载的东西真的很大,因为本地磁盘空间很便宜并且很容易清除旧图像.实际上,当编码时,通常没有构建命令来清理它们的中间伪像以节省空间!
此外,它ADD具有以下优势RUN wget:它可以检测目标何时发生变化.
我错过了什么,还是做了多阶段修复ADD?
我需要存储一个大型自然语言词典 - 最多120,000,具体取决于语言.这些需要保存在内存中,因为分析表明利用阵列的算法是系统中的时间瓶颈.(它本质上是一种拼写检查/自动更正算法,但细节并不重要.)在具有16MB内存的Android设备上,与Java相关的内存开销String导致我们的空间不足.请注意,每个String都有一个与之相关的38字节开销,这会产生高达5MB的开销.
乍一看,一个选项是替代char[]的String.(或者甚至byte[],因为UTF-8在这种情况下更紧凑.)但同样,内存开销是个问题:每个Java数组都有32字节的开销.
另一种替代方法ArrayList<String>是创建一个具有相同接口的类,该类在内部将所有字符串连接成一个巨大的字符串,例如表示为单个字符串,byte[]然后将偏移存储到该巨大的字符串中.每个偏移量将占用4个字节,从而提供更节省空间的解决方案.
我的问题是a)是否有任何其他解决问题的方法,同样低开销*和b)是现成的任何解决方案吗?通过Guava,trove和PCJ集合库搜索没有任何结果.
*我知道可以将开销降到4字节以下,但收益递减.
NB.是否支持在HotSpot JVM中删除压缩字符串?表明JVM选项-XX:+UseCompressedStrings在这里没有帮助.
我打电话的时候
System.err.println("Before")
System.err.flush()
val foo: Map[Int, T] = t mapValues (fn(_))
System.err.println(foo.head) //prevent optimiser from delaying the construction of 'foo'
System.err.println("After")
System.err.flush()
Run Code Online (Sandbox Code Playgroud)
与fn里面有一个调试打印语句,我得到这样的输出:
Before
...head item...
After
...debug print statement from fn...
...debug print statement from fn...
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在打印"After"之后调用调试打印语句,我不明白为什么我得到它两次---除非mapValues创建一个懒惰的地图?
http://insanecoding.blogspot.co.uk/2011/11/how-to-read-in-file-in-c.html回顾了在C++中将整个文件读入字符串的多种方法.最快选项的关键代码如下所示:
std::string contents;
in.seekg(0, std::ios::end);
contents.resize(in.tellg());
in.seekg(0, std::ios::beg);
in.read(&contents[0], contents.size());
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不安全,因为它依赖string于以特定方式实施.例如,如果实现是共享字符串,那么修改数据&contents[0]可能会影响正在读取的字符串之外的字符串.(更一般地说,不能保证这不会破坏任意记忆 - 在实践中不太可能发生,但依靠它不是好习惯.)
C++和STL旨在提供高效的C语言功能,因此可以预期上述版本的速度同样快,但保证安全.
在这种情况下vector<T>,有一些函数可用于访问原始数据,可用于有效地读取向量:
T* vector::data();
const T* vector::data() const;
Run Code Online (Sandbox Code Playgroud)
其中第一个可以用来vector<T>有效地阅读.不幸的是,string等价物只提供了const变体:
const char* string::data() const noexcept;
Run Code Online (Sandbox Code Playgroud)
所以这不能用于有效地读取字符串.(可能non-const省略了变体以支持共享字符串实现.)
我还检查了字符串构造函数,但接受char*复制数据的那些 - 没有选项可以移动它.
有没有一种安全快捷的方法将文件的全部内容读入字符串?
值得注意的是,我想读取一个string而不是一个,vector<char>以便我可以使用a来访问结果数据istringstream.没有相同的vector<char>.
我认为这git lfs migrate重写了回购的历史记录,以便将指定的大文件保留在LFS中。这意味着存储库应该变小,因为它不直接包含大文件的所有版本。但是,当我跑步时
git lfs migrate import --include="test-data/**" --include-ref=refs/heads/master
test-data/目录中的所有文件都替换为如下所示的文件:
version https://git-lfs.github.com/spec/v1
oid sha256:5853b5a2a95eaca53865df996aee1d911866f754e6089c2fe68875459f44dc55
size 19993296
Run Code Online (Sandbox Code Playgroud)
.git文件夹将变成两倍大(400MB至800MB)。我很困惑。什么git lfs migrate doing啊
git reflog expire --expire-unreachable=now --all
git gc --prune=now
Run Code Online (Sandbox Code Playgroud)
跑步前du。之后,这些文件夹将占用大部分空间:
414M .git /对象398M .git / lfs
我在/sf/answers/3636592081/中询问了以下内容 :
我想超载
template<class T> ostream& operator<<(ostream& os, const optional<unique_ptr<T>>&).
在评论中,@ Yakk - Adam Nevraumont指出:
这个问题的答案是"你做不到".对于通用类型T,没有合法的方法可以做到这一点; 我可以解释原因,但这样做会有新的问题/答案
我正在创造一个新的Q.以接受这种报价......
如果在 Gradle 中编译 Java,您可以通过设置编码
compileJava.options.encoding = 'UTF-8'
Run Code Online (Sandbox Code Playgroud)
我无法让它与 Scala 一起工作;我已经尝试了所有这些:
compileJava.options.encoding = 'UTF-8'
compileScala.options.encoding = 'UTF-8'
compileScala {
scalaCompileOptions.encoding = 'utf-8'
}
compileScala {
scalaCompileOptions.additionalParameters = ["-encoding UTF-8"]
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激。
编辑:关闭,因为这是我的测试方法有问题。我本来就JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8定的;我试图通过在 Gradle 文件中设置编码来替换它。
为了测试,我试图打印出一个 Unicode 字符,但在删除 envvar 并尝试上述选项后,它没有正确打印。原因是这JAVA_TOOL_OPTIONS -Dfile.encoding=UTF8不仅会影响输入文件的编码,还会影响System.out. 用
System.setOut(new PrintStream(System.out, true, "UTF-8"))
Run Code Online (Sandbox Code Playgroud)
修复的东西。以供参考,
compileJava.options.encoding = 'UTF-8'
compileScala {
scalaCompileOptions.encoding = 'UTF-8'
}
Run Code Online (Sandbox Code Playgroud)
足够。