我有多个字符串,如"a b","c d","foo bar"等.我想循环遍历这组字符串并对其中的每一个执行操作.在这个动作中,我调用了多个其他脚本,所以我不想为这个循环更改IFS,因为它可能会破坏我对其他脚本的调用.这就是为什么我试图逃避这些字符串中包含的空格但没有成功.
所以我希望得到
a b
c d
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
#!/bin/sh
x="a b"
y="c d"
echo "Attempt 1"
all="$x $y"
for i in $all ; do
echo $i
done
echo "Attempt 2"
all="a\ b c\ d"
for i in $all ; do
echo $i
done
echo "Attempt 3"
all=($x $y)
for i in ${all[@]} ; do
echo $i
done
echo "Attempt 4"
all='"'$x'" "'$y'"'
for i in $all ; do
echo $i
done
echo "Attempt 5"
for i in "$x" …
Run Code Online (Sandbox Code Playgroud) 在我的Android应用程序中,我上传并下载JPEG图像.对于某些图像BitmapFactory
下采样下载的图像,我不明白为什么以及如何阻止它这样做.我上传和下载图像时记录Bitmap对象大小:
Uploading image with size 3840x2160
Opening received image of size 2601584B degradation 0 decoded 384x216
所以这里我的图像宽度和高度在解码后除以10 BitmapFactory
.对于另一个图像,我从3480x4640到217x290,因此除以16.我首先想到它可能是由图像dpi元数据引起的,所以我尝试使用以下代码打开图像时强制它:
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 1 << degradation;
opts.inScaled = false;
opts.inDensity = 1;
opts.inTargetDensity = 1;
opts.inScreenDensity = 1;
final Bitmap original = BitmapFactory.decodeByteArray(data, 0, data.length, opts);
Log.d(Tags.IMAGES, "Opening received image of size " + data.length + " degradation " + degradation + " decoded " + original.getWidth() + "x" + original.getHeight());
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我给出的字节数(2MB)BitmapFactory
与没有300x200px图像的大图像一致.所以我的上传代码和下载代码是正确的我在解码之前有正确的数据.
我强制所有密度以避免缩放并禁用缩放,我的样本大小为1,因为我的降级为0所以我不强制进行任何子采样.我仍然以一个非常小的图像结束.并 …
我开始在Scala通过Casbah使用MongoDb,但无法在Casbah文档/ google上找到删除集合内容的方法.该MongoDd医生说MongoDB的shell命令这样做是
db.things.remove({});
Run Code Online (Sandbox Code Playgroud)
但是我们如何通过Casbah实现同样的目标呢?
提前致谢,
奥利维尔
我正在尝试使用电梯网框架建立一个scala sbt项目.我正在使用
(我知道最近的版本).我按照http://d.hatena.ne.jp/k4200/20110711/1310354698和https://github.com/siasia/xsbt-web-plugin/blob/master/README.md获取以下sbt配置文件:
项目/ build.properties
sbt.version=0.10.1
项目/插件/ build.sbt
resolvers += "Web plugin repo" at "http://siasia.github.com/maven2"
libraryDependencies <+= sbtVersion(v => "com.github.siasia" % "xsbt-web-plugin_2.8.1" % ("0.1.1-"+v))
Run Code Online (Sandbox Code Playgroud)
项目/ Build.scala
import sbt._
import Keys._
object BuildSettings {
val buildOrganization = "xbaz"
val buildScalaVersion = "2.9.0-1"
val buildVersion = "0.0.1"
val buildSettings = Defaults.defaultSettings ++ Seq (
organization := buildOrganization,
scalaVersion := buildScalaVersion,
version := buildVersion)
}
object Resolvers {
val webPluginRepo = "Web …
Run Code Online (Sandbox Code Playgroud) 我已经读过使用原子包类使我们能够做到线程安全,锁定更少的编码.但我不太确定原子包类中的方法如何在没有使用锁或任何synchronize关键字的情况下提供线程安全性.任何帮助都应该受到赞赏.
当我的环境变量为JAVA_TOOL_OPTIONS定义非空值时,jvm将其内容打印到标准错误,这会破坏一些构建工具,这些工具依赖于stderr的空白来判断构建是否成功.这可以通过编写一个非常简单的hello world类来运行并运行:
JAVA_TOOL_OPTIONS="-Dfoo=bar" java HelloWorld > /dev/null
Run Code Online (Sandbox Code Playgroud)
你通常会看到一个输出,这不是一个真正的错误,所以我不明白为什么它在stderr中出现.所以有可能有一种方法来禁用这种行为,但我找不到任何东西.
我使用的是1.7.0_45 jre.
正如标题所述,我正在寻找一个java集合,只保留插入集合中的N个最后一个对象.此FIFO集合不需要实现随机访问或支持更改N.
我能找到的所有集合都是阻塞(LinkedBlockingQueue)或无限大小(ArrayDeque).我找到了org.eclipse.jetty.util.ArrayQueue,但你可能会猜到这会给我的项目带来很多不必要的依赖,而且非常复杂,因为它支持更改N所以它不是我需要的.
你知道是否有一种方法可以使用一个非常常见的java库,或者我必须自己编写它?
我正在为我们的主要产品编写单元测试,并且有一个问题:如何区分
对于第一个,我们肯定有jUnit Assert框架,但是对于第二个框架我们有什么?
示例:我的单元测试是测试c()不会抛出MyException,但是为了执行c()我需要首先执行a()然后b(),它们都可以抛出MyException(),所以我会写:
@Test
public void testC() {
a();
Object forC = b();
try {
c(forC);
} catch (MyException e) {
Assert.fail("....");
}
}
Run Code Online (Sandbox Code Playgroud)
但是我需要处理可以被a或b抛出的MyException,并且还要处理forC不应该为null的事实.做这个的最好方式是什么?
你对这个问题的解决方案是什么?我可能会选择第二个,但我对它不满意,如上所述.
在我的用例中,我有一个具有协变类型Foo [+ T]的类和类A <:T,B <:T,C <:T,我需要存储一个地图"A" - >一个Foo [A]实例,"B" - >一个Foo [B]实例和"C" - >一个Foo [C]实例,这在scala中可能吗?
目前我将我的地图声明为Map [String,Foo [T]]]但是我不能在里面添加一个Foo [A],编译器告诉我Foo [T]是预期的,而不是Foo [A ],这似乎是由Map参数缺乏协方差引起的,是否有解决方案?
我现在的解决方法是取消参数化Foo并在代码中进行转换,这当然不讨好我,我也看到我可以使用java集合但我更喜欢使用scala.
在此先感谢您的时间
我有一个java接口,其方法声明如下String type();
.我想在scala类中实现它,所以我想写:
override def type = { ... }
Run Code Online (Sandbox Code Playgroud)
但显然它是scala中的保留关键字,所以编译器抱怨:
identifier expected but 'type' found.
Run Code Online (Sandbox Code Playgroud)
怎么可能实现它?有没有更改Java接口的解决方案?
我使用Java 7 nio API获得以下代码:
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
public class TestDeleteOnClose {
public static void main(String[] args) throws IOException {
Path tmp = Files.createTempFile("a", "b");
OutputStream out = Files.newOutputStream(tmp, StandardOpenOption.DELETE_ON_CLOSE);
ObjectOutputStream os = new ObjectOutputStream(out);
os.write(0);
os.flush();
System.out.println(Files.exists(tmp));
os.close();
System.out.println(Files.exists(tmp));
}
}
Run Code Online (Sandbox Code Playgroud)
在Windows上,我看到了我的期望,即true false
.在Linux上我看到了false false
.这是预期的吗?难道我做错了什么?文件被过早删除的事实是有问题的,因为我需要测试它的大小,例如在写入之后.
我在Linux和Windows上使用jdk7u25,并且可以在具有RedHat或ArchLinux的机器上重现.
编辑:即使我在另一次调用os.write()之前测试文件是否存在,我被告知该文件不再存在.如果我用CREATE
选项打开文件,那么我会看到true true
.
我们的应用程序中有一个问题,可以简化为以下代码:
public static void main(String[] args) throws IOException, ClassNotFoundException {
File tempFile = File.createTempFile("teststream", "");
FileOutputStream fos = new FileOutputStream(tempFile);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(1);
oos.writeObject("foo");
oos.writeInt(2);
oos.flush();
oos.close();
FileInputStream fis = new FileInputStream(tempFile);
ObjectInputStream ois = new ObjectInputStream(fis);
int n1 = ois.readInt();
Object o1 = ois.readObject();
int n2 = ois.readInt();
}
Run Code Online (Sandbox Code Playgroud)
此代码有效,但如果您注释以下行:
Object o1 = ois.readObject();
Run Code Online (Sandbox Code Playgroud)
以下行
int n2 = ois.readInt();
Run Code Online (Sandbox Code Playgroud)
EOFException
尽管我的文件中有数据,但会抛出一个,因为我在其中写入了一个对象和一个整数。readInt的javadoc没有表明这种行为。我对此有点担心EOFException
,因为我们想在我们的代码中区分真实的文件异常和错误类型的内容异常。
异常的堆栈跟踪是
Exception in thread "main" …
Run Code Online (Sandbox Code Playgroud) java ×7
scala ×4
android ×1
bash ×1
casbah ×1
collections ×1
covariance ×1
exception ×1
junit ×1
linux ×1
mongodb ×1
nio ×1
sbt ×1
stderr ×1
unit-testing ×1