小编Vik*_*bin的帖子

检查文件是否完整写入

目前我正在研究在其中一个例程中处理源目录中的文件的项目.有一个Java进程正在查找指定的目录,并尝试读取和处理文件(如果存在).文件退出大,并由其他第三方进程更新.问题是如何检查文件是否完整写入?我试图使用file.length()但看起来即使写入过程尚未完成它返回实际大小.我觉得解决方案应该依赖于平台.任何帮助,将不胜感激.

更新:这个问题与副本没有什么不同,但它有一个高评级的工作代码片段的答案.

java filesystems io file

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

Logback文件appender不会立即刷新

在某些情况下,我需要立即强制刷新logback的文件appender.我在docs中发现默认情况下启用此选项.神秘地说这不起作用.正如我在源代码中看到的过程涉及BufferedOutputSream正确.有什么问题BufferedOutputSream.flush()吗?可能这与冲洗问题有关.

更新:我在Windows XP Pro SP 3和Red Hat Enterprise Linux Server 5.3版(Tikanga)上发现了这个问题.我使用了这些库:

jcl-over-slf4j-1.6.6.jar
logback-classic-1.0.6.jar
logback-core-1.0.6.jar
slf4j-api-1.6.6.jar
Run Code Online (Sandbox Code Playgroud)

logback.xml方法是:

<configuration>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/somepath/file.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>file.log.%i</fileNamePattern>
            <minIndex>1</minIndex>
            <maxIndex>3</maxIndex>
        </rollingPolicy>
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>5MB</maxFileSize>
        </triggeringPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="FILE"/>
    </root>
</configuration>
Run Code Online (Sandbox Code Playgroud)

更新: 我提供单元测试,但似乎不那么简单.让我更清楚地描述这个问题.

  1. 发生了记录事件
  2. 事件被传递到文件appender
  3. 事件使用定义的模式序列化
  4. 事件的序列化消息被传递给文件appender并且即将写出到输出流
  5. 写入流完成后,输出流被刷新(我已经检查了实现).请注意,immidiateFlush默认情况下为true,因此flush()显式调用方法
  6. 没有结果文件!

稍后当一些底层缓冲区流动时,事件出现在文件中.所以问题是:输出流是否保证立即刷新?

说实话,我已经通过实现我自己的ImmediateRollingFileAppender利用FileDescriptor立即同步的工具来解决这个问题.任何有兴趣的人都可以这样做.

所以这不是一个回归问题.

java io logging flush logback

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

任何类似的rsync for Ant?

我需要一些类似的rsync蚂蚁.问题是将文件从源目录复制到先前使用脚本完成的子目录集

rsync -r --ignore-existing $BASE_DIR/common/config/* $BASE_DIR/config
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

ant rsync

11
推荐指数
2
解决办法
5284
查看次数

Hibernate并发插入

我遇到了一个问题.我有一个带有Hibernate的App,它将XML文件中的数据加载到并发模式的表中.某些部分数据可能相同,可以从不同的线程插入.每个线程都在自己的长期交易中工作.当两个或更多踏板试图提交交易时会出现问题.例如,两个线程将记录插入到对NAME字段具有约束的表City中.这意味着在flush()或commit()上发生ConstraintViolationException.我想自动处理这种冲突,并希望用旧的已插入对象替换新的问题对象.这可能吗?我在Hibernate中查看saveOrUpdate()和乐观版本控制.

concurrency hibernate insert

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

正则表达式匹配嵌套的 json 对象

我正在实现某种解析器,我需要定位和反序列化嵌入到其他半结构化数据中的json 对象。我使用了正则表达式:

\\{\\s*title.*?\\}
Run Code Online (Sandbox Code Playgroud)

定位对象

{title:'Title'}
Run Code Online (Sandbox Code Playgroud)

但它不适用于嵌套对象,因为表达式只匹配第一个找到的右大括号。为了

{title:'Title',{data:'Data'}}
Run Code Online (Sandbox Code Playgroud)

它匹配

{title:'Title',{data:'Data'}
Run Code Online (Sandbox Code Playgroud)

所以字符串对于反序列化无效。我知道考虑到贪婪的业务,但我不熟悉正则表达式。你能帮我扩展表达式以使用所有可用的右大括号吗?

更新:

需要明确的是,这是一种尝试从 HTML+JS 等带有嵌入 JSON 的半结构化数据中提取 JSON 数据的尝试。我正在使用 GSon JAVA lib 来实际解析提取的 JSON。

java regex

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

嵌套元素的XML映射属性

我正在使用XStream,我有一个XML示例:

<person>
    <firstname>Joe</firstname>
    <lastname>Walnes</lastname>
    <phone value="1234-456" />
    <fax value="9999-999" />
</person>
Run Code Online (Sandbox Code Playgroud)

我想把它映射到课堂上

public class Person {

    private String firstname;
    private String lastname;
    private String phone;
    private String fax;

}
Run Code Online (Sandbox Code Playgroud)

因此,我们的想法是将嵌套元素的属性映射到当前对象.我试图找到任何即用型转换器但没有成功.我相信通过实施新的转换器是可能的,但也许有人已经这样做了.或者有一个我没有找到的解决方案.

更新:

我想要实现的想法是省略不必要的创建和映射实体.我根本不需要电话和传真实体,我只需要在我的模型中使用它们的属性.我试图解析的XML模式对我来说是第三方,我无法改变它.

java xml parsing xstream

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

TeamCity服务器看不到正在运行的代理

我们有几个虚拟机分布在多个数据中心之间.每个VM都有自己的重启计划,具有不同的时区.问题是当带有TeamServer的VM正在重新启动并且其他具有buildAgent的VM正在运行构建时,则在重新引导服务器后无法找到该代理.它显示为断开连接.问题肯定在调度中,但我还没有在日志中找到它.我发现了这个launcher.log

[2012-09-09 10:02:06,356] INFO - ldServer.agent.run.AgentRunner - 代理程序已完成[2012-09-09 10:02:06,379] INFO - ldServer.agent.run.AgentRunner - 代理已退出代码:30 [2012-09-09 10:02:06,382] INFO - ldServer.agent.run.AgentRunner - 启动器正在退出

...

[2012-09-10 12:53:02,826] INFO - ldServer.agent.run.AgentRunner - Mon Sep 10 12:53:02 BST 2012 ==>开始发布

什么Agent has exited with code: 30意思?这是否意味着当时构建代理被杀或因某种原因迫使其自杀?

teamcity continuous-integration intellij-idea build-server

6
推荐指数
0
解决办法
819
查看次数

Eclipse外观定制

我需要自定义RCP应用程序的外观.

我看了一下Eclipse Presentation API,我想它允许自定义工作台中除控件之外的所有东西.

那么有任何自定义控件的解决方案吗?

我做了一些研究工作,并使用控制画布绘制实现了一些特殊的SWT cunstomization.可能有更好的解决方案吗?

在Swing中,您可以使用Synth主题.如果SWT存在一些"皮肤"框架,那就太好了.

swt eclipse-rcp look-and-feel

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

为什么与Amazon EC2的JMX连接失败?

我在Amazon EC2实例上运行的一个服务上设置了JMX,但它无法正常工作.我正在使用VisualVM进行连接,在短暂的挂起期后,它会因超时而失败.看起来因为缺少响应数据或滞后而失败.我检查了安全组中是否启用了JMX端口,并尝试使用不启用JMX的不同端口,并且在安全组设置中未启用端口,并且两者都立即失败,因此它看起来不同.我的EC2实例和桌面都安装了Ubuntu 12.04和JDK 7.

事实证明,由于连接是SSL安全的,所以端口没有意义.我有一个私钥,不知道如何使用它与JConsole或VisualVM.

port jmx visualvm amazon-ec2

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

符号链接从当前目录运行

我有一个脚本run.sh位于只读目录的某个位置,/install/app/release_1.0.0/以及完全访问目录中该脚本的符号链接/packages/app/.此脚本使用相对路径操作文件.当我使用符号链接运行此脚本时,它无法找到文件,因为它正在查找符号链接的当前目录.如何强制它查看链接目标的当前目录?不希望更改脚本.

linux sh hyperlink

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

Hazelcast:分布式执行和本地成员信息

我正在寻找在任务执行中查找本地hazelcast成员的方法.我正在使用的版本是2.5-SNAPSHOT.教程中的片段似乎不起作用:

public class Echo implements Callable<String>, Serializable {
    public String call() {
        return Hazelcast.getCluster().getLocalMember().toString() + ":" + input;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在调用不推荐使用的getCluster()会触发新成员的创建和连接.

目前我设法通过HazelcastInstance.getCluster().getLocalMember()获得它,但我不想用这种注射使我的callables复杂化.

能否请您建议查找当地会员的正确方法?

java hazelcast

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

Hazelcast:坚持不懈的故障转移

我关注持久性的故障转移场景,我正在考虑应该如何正确实现它.根据之前的经验,我认为如果底层持久性无法存储实体,它应该能够在问题解决后立即存储它.在Hazelcast中,在地图中缓存的实体具有管理它与MapStore的关系的状态.

如果MapStore实现无法存储会发生什么?如何让实体重新应用于MapStore业务?

更新:

在MapStore本身实现故障转移以将条目保留在队列中不是问题,除非底层持久性业务可用,但这会打破分布式内存的想法.另一方面,如果MapStore中出现的数据将被放回缓存,它可能会导致不一致,不是吗?

persistence failover hazelcast

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

Linux父文件父文件路径

可能这个问题似乎很愚蠢,但无论如何.我有一个脚本文件/local/bin/app1/script.sh,我需要知道它的父父目录名称bin.我知道我可以${0%/*}用来确定父目录名.我不熟悉bash所以有人可以帮我弄清楚父母的父目录名吗?非常感谢.

linux directory bash file parent-child

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