我正在创建一个可能很长的对象日志,并且不希望在写入文件之前将它们全部保存在内存中,因此我无法将对象的序列化集合写入文件.我正在尝试在完成日志记录后找出整个对象流中的"最佳"读取方式.
我注意到以下内容不起作用:
FileInputStream fis = new FileInputStream(log);
ObjectInputStream in = new ObjectInputStream(fis);
while ((obj = in.readObject()) != null) {
// do stuff with obj
}
Run Code Online (Sandbox Code Playgroud)
因为流在到达文件末尾时抛出异常而不是返回null(可能是因为可以向对象流写入/读取null,导致上述循环不按预期运行).
有没有更好的方法来完成我想用上面的循环完成的事情:
FileInputStream fis = new FileInputStream(log);
ObjectInputStream in = new ObjectInputStream(fis);
try {
while (true) {
obj = in.readObject();
// do stuff with obj
}
} catch (EOFException e) {
}
Run Code Online (Sandbox Code Playgroud)
这看起来有点笨拙.对于文件结束对象解决方案,以下是最佳方法吗?
private static final class EOFObject implements Serializable {
private static final long serialVersionUID = 1L;
}
void foo() {
Object obj;
while …Run Code Online (Sandbox Code Playgroud) 我正在尝试连接两个文件,每个文件包含表单的行<key> <count>.每个文件包含一些从另一个文件中缺失的行,我想为所有这些值插入零而不是省略这些行(我见过-a,但这不是我想要的).有没有一种简单的方法来实现这一目标?
以下是一些示例输入:
A.TXT
apple 5
banana 7
Run Code Online (Sandbox Code Playgroud)
b.txt
apple 6
cherry 4
Run Code Online (Sandbox Code Playgroud)
预期产量:
apple 5 6
banana 7 0
cherry 0 4
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用awk从远程机器上的日志中提取一些数据,并注意到如果我进入机器运行并运行
awk '{print $0}' /path/to/log.txt
Run Code Online (Sandbox Code Playgroud)
我得到了预期的输出(包含日志消息,堆栈跟踪等),但是如果我运行的话
ssh host "awk '{print $0}' /path/to/log.txt"
Run Code Online (Sandbox Code Playgroud)
然后输出如下所示:
0
1
0
0
1
1
1
1
1
1
Run Code Online (Sandbox Code Playgroud)
任何想法为什么会这样?
有没有办法我可以配置eclipse,通过将'='放在一个新行上来避免打破长任务,并避免打破'.' 方法调用的字符.我注意到了一些设置,例如:
<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
Run Code Online (Sandbox Code Playgroud)
可以添加到可用于指定格式的xml文件中,但我不确定应该更改哪些设置以获得所需的效果.这些配置是否记录在某处(我尝试使用谷歌搜索一些相关的条款无济于事).
谁能解释以下内容?当我使用ssh远程执行历史记录时,不会产生任何输出,甚至其他远程命令也会产生输出,并且该计算机上存在历史记录。
ssh host 'history | tail' # produces no output
ssh host 'echo foo | tail' # produces 'foo' as output
ssh host
> history | tail # produces expected output
Run Code Online (Sandbox Code Playgroud) 我有一个html表,如下所示:
<table id="tree">
<tr id="foo-1">
<td>fooId1</td>
<td>fooName1</td>
<td>fooCsv1</td>
<td><button id="button-1" type="button" disabled>Save</button></td>
</tr>
<tr id="foo-2">
<td>fooId2</td>
<td>fooName2</td>
<td>fooCsv2</td>
<td><button id="button-2" type="button" disabled>Save</button></td>
</tr>
</table>
Run Code Online (Sandbox Code Playgroud)
我想对这个表做两个修改:
- 首先,我想让fooName和fooCsv td元素可编辑(实际上有几个可编辑的列,但我只是用两个来使这个例子更简单).我知道我可以简单地在td元素中放入一个输入并设置值,但是想知道是否有更简单的方法.
- 其次,当用户通过键入/ copy-paste/etc更改该行中的文本时,我希望每行中的"保存"按钮变为启用状态.我用google搜索并发现我可以通过为输入事件添加处理程序来做到这一点,但我不确定最简单的方法来合并它,我不确定它是否有第一个分支我的任务.
如果我对html和javascript了解很多,我认为这应该很容易,但我不知道,所以有人知道一个简单的方法来实现我想要做的事情吗?
Scala 中有没有办法调用属于某个类型的方法?例如,假设我有一个叫做 trait 的特性Constructable,它描述了类型,而不是可以构造它们自己的默认实例。然后,我可以编写以下代码:
trait Constructable[A] {
def construct: A
}
class Foo(x: Int) extends Constructable[Foo] {
def construct = new Foo(0)
}
def main(args: Array[String]) {
val f = new Foo(4)
println(f.construct)
}
Run Code Online (Sandbox Code Playgroud)
这没问题,但我真正想要的是能够构造一个仅给定对象类型的默认对象。例如,假设我想接受一个可构造的列表并在列表的开头添加一个默认对象:
def prependDefault1[A <: Constructable[A]](c: List[A]): List[A] = {
val h = c.head
h.construct :: c
}
Run Code Online (Sandbox Code Playgroud)
上面的代码有效,但前提是 c 不为空。我真正想要的是写如下内容:
def prependDefault2[A <: Constructable[A]](c: List[A]): List[A] = {
A.construct :: c
}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这一点,可能是通过更改 a 的定义,Constructable使该construct方法属于“类”而不是“实例”(使用 Java 术语)?
我正在尝试在scala应用程序中获取我的机器的MAC地址.搜索时有几个结果,但它们都使用如下所示的内容,InetAddress.getLocalHost()后面跟着NetworkInterface.getByInetAddress(...):使用Java在本地计算机上获取MAC地址
我的问题是结果最终为null:
val localhost = InetAddress.getLocalHost
println(s"lh: $localhost")
val localNetworkInterface = NetworkInterface.getByInetAddress(localhost)
println(s"lni: $localNetworkInterface")
>>lh: ubuntu/127.0.1.1
>>lni: null
Run Code Online (Sandbox Code Playgroud) 关于这个问题还有一些其他问题:
boto.exception.S3ResponseError:S3ResponseError:403禁止
S3ResponseError:S3ResponseError:403 Forbidden
Python:Amazon S3无法获得桶:403 Forbidden说
然而,似乎我可能遇到了不同的问题(例如,时钟偏差不是问题,我已经尝试过设置validate=False,我相信我有正确的密钥和密钥,因为尝试伪造密钥或秘密密钥会给我不同的错误) .这是我的脚本:
import boto
import sys
from boto.s3.key import Key
BUCKET_NAME = sys.argv[1]
AWS_ACCESS_KEY_ID = sys.argv[2]
AWS_SECRET_ACCESS_KEY = sys.argv[3]
conn = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)
bucket = conn.get_bucket(BUCKET_NAME, validate=False)
k = Key(bucket)
k.key = 'barbaz'
k.set_contents_from_filename('/tmp/barbaz.txt')
Run Code Online (Sandbox Code Playgroud)
结果如下:
Traceback (most recent call last):
File "/home/jonderry/sdmain/src/scripts/jenkins/upload_to_s3.py", line 16, in <module>
k.set_contents_from_filename('/tmp/barbaz.txt')
File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 1360, in set_contents_from_filename
encrypt_key=encrypt_key)
File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 1291, in set_contents_from_file
chunked_transfer=chunked_transfer, size=size)
File "/usr/local/lib/python2.7/dist-packages/boto/s3/key.py", line 748, in send_file
chunked_transfer=chunked_transfer, size=size) …Run Code Online (Sandbox Code Playgroud) 我正在尝试在bash脚本中执行以下操作:
for x in a b c; do echo foo $x; sleep 5 & y=$! ; (wait $y && echo bar $x) & done
Run Code Online (Sandbox Code Playgroud)
这有可能,而不会增加太多的复杂性(上面的例子当然不起作用)?
编辑:
当然,实际上,echo foo $x; sleep 5例如,复制一些大文件或编译大的东西,第二个操作将是依赖于第一个的操作.