小编Arn*_*was的帖子

为什么这个程序在循环后有一个`println`时循环很多次?

这是我正在尝试的小代码.该程序需要很长时间才能执行.在运行时,如果我试图通过eclipse中的终止按钮杀死它,它会返回Terminate Failed.我可以从终端使用它杀死它kill -9 <PID>.

但是,当我不在程序的最后一行打印变量结果时(请检查代码的注释部分),程序立即退出.

我想知道 :

  1. 为什么在打印结果值时需要花时间执行?
    请注意,如果我不打印value,相同的循环会立即结束.

  2. 为什么eclipse无法杀死程序?

更新1: 似乎JVM在运行时(不是在编译时)优化代码.这个帖子很有帮助.

更新2:当我打印值时value,jstack <PID>不起作用.只有jstack -F <PID>工作.任何可能的原因?

    public class TestClient {

        private static void loop() {
            long value =0;

            for (int j = 0; j < 50000; j++) {
                for (int i = 0; i < 100000000; i++) {
                    value += 1;
                }
            }
            //When the value is being printed, the program 
            //is taking time to …
Run Code Online (Sandbox Code Playgroud)

java eclipse loops println

26
推荐指数
3
解决办法
2028
查看次数

为什么ArrayList以1.5的速度增长,但对于Hashmap,它是2?

根据Sun Java Implementation,在扩展期间,ArrayList增长到3/2它的初始容量,而对于HashMap,扩展速率是双倍.这背后的原因是什么?

根据实现,对于HashMap,容量应始终为2的幂.这可能是HashMap行为的原因.但在这种情况下,问题是,对于HashMap,为什么容量应始终为2的幂?

java arraylist hashmap

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

exec-maven-plugin产生的进程阻止了maven进程

我正在尝试使用maven执行以下方案:

  1. 预集成阶段:使用主类启动基于java的应用程序(使用exec-maven-plugin)
  2. integration-phase:运行集成测试用例(使用maven-failsafe-plugin)
  3. post-integration-phase:正常停止应用程序(使用exec-maven-plugin)

这是pom.xml snip:

    <plugins>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>1.2.1</version>
        <executions>
            <execution>
                <id>launch-myApp</id>
                <phase>pre-integration-test</phase>
                <goals>
                    <goal>exec</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <executable>java</executable>
            <arguments>
                <argument>-DMY_APP_HOME=/usr/home/target/local</argument>
                <argument>-Djava.library.path=/usr/home/other/lib</argument>
                <argument>-classpath</argument>
                <classpath/>
                <argument>com.foo.MyApp</argument>
            </arguments>
        </configuration>
    </plugin>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>2.12</version>
        <executions>
            <execution>
                <goals>
                    <goal>integration-test</goal>
                    <goal>verify</goal>
                </goals>
            </execution>
        </executions>
        <configuration>
            <forkMode>always</forkMode>
        </configuration>
    </plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)

如果我执行mvn post-integration-test,我的应用程序将作为maven进程的子进程启动,但是应用程序进程阻止maven进程执行下一阶段的集成测试.后来我发现maven exec插件中存在一个错误(或缺少功能?),因为应用程序进程阻止了maven进程.为了解决这个问题,我在一个shell脚本中封装了MyApp.java的调用,然后附加了"/ dev/null 2>&1&"以产生一个单独的后台进程.这是来自runTest.sh的剪辑(这只是一个剪辑,而不是实际剪辑):

java - DMY_APP_HOME =$2 com.foo.MyApp > /dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)

虽然这解决了我的问题,还有其他办法吗?我错过了exec-maven-plugin的任何论据吗?

integration-testing maven-plugin maven exec-maven-plugin

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

jvisualvm - 自动(JMX)重新连接到应用程序?

有没有办法在jvisualvm中重新连接断开连接的JMX连接?当受监视的JMX启用的应用程序重新启动时,我必须重新启动jvisualvm以重新连接它.我错过了什么吗?

这是我的jvisualvm详细信息:

版本:1.6.0_22(Build 100326); platform 091221-4fc006d17cb1
系统:Linux(2.6.35-23-generic),amd64 64bit Java:1.6.0_22; Java HotSpot(TM)64位服务器VM(17.1-b03,混合模式)

java jmx jvisualvm

13
推荐指数
2
解决办法
3006
查看次数

具有固定大小的并发映射

我需要一张符合以下要求的地图:

  1. 它应该是高度并发的.的put(),get()并且remove()方法可同时被多个线程调用.

  2. 它应该是固定的大小.如果HashMap达到最大值的大小(例如10000),则不应允许向地图添加新条目.它不能是LRU缓存,其中最旧的条目在达到最大大小时被删除.

ConcurrentHashMap可能满足#1.但是,不确定如何在ConcurrentHashMap不影响并发性的情况下实现#2 (添加自定义put()方法,只有当大小小于最大大小时才会添加到地图中,需要"同步".这将失败目的使用并发HashMap).

请让我知道你的想法.

java concurrency multithreading concurrenthashmap java.util.concurrent

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

logback:SizeAndTimeBasedRollingPolicy 不删除 4 位数字“%i”的文件

我们在我们的产品中使用 SizeAndTimeBasedRollingPolicy/SizeAndTimeBasedFNATP(logback 1.1.3)。这是 logback 配置文件的片段:

<appender name="SERVER_FILE"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${MY_LOGS}/myabc.log</file>
    <append>true</append>
    <!-- 
        Roll log file on both time (per day) and size (250mb). Gzip on roll.
    -->
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <!-- location and name of rolled log files -->
        <fileNamePattern>${MY_LOGS}/myabc-%d{yyyy-MM-dd}.%i.gz</fileNamePattern>
        <!-- keep 30 days worth of history -->
        <maxHistory>30</maxHistory>
        <timeBasedFileNamingAndTriggeringPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <!-- whenever the file size reaches 250MB, roll it -->
            <maxFileSize>250MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
        <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger{24} [%C{1}.%M]</pattern>
    </encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)

生成的日志文件具有以下名称:myabc-2016-11-21.0.gz、myabc-2016-11-21.1.gz、myabc-2016-11-21.2.gz 等。

问题是如果日志文件的扩展名 (%i) 超过 3 位,则在 30 天 (maxHistory) …

java logback

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

JAXB解组无效整数

在我们的产品中,我们使用apache CXF.由于性能限制,架构验证已设置为false.现在,对于整数元素,如果我提供的值无效,JAXB会将其解组为其他内容.例如,

9999999999转换为141006540​​7.

988888888888转换为1046410808.

我的问题是这里遵循的逻辑(公式)是什么?

如何处理(考虑验证将关闭)?我想要拒绝这样的价值.

cxf jaxb unmarshalling

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

解析"SQL like"查询字符串

对于我们产品的Web服务接口,我们定义了sql之类的查询字符串.它们不遵循确切的sql语法.它的工作原理如下.字符串存在于xml请求中.我的应用程序是解析字符串并根据内容创建Java对象.这些java对象用于查询DB.以下是查询字符串的几个示例:

 objectType==device && deviceType==mobile && returnType==full
 objectType==device && deviceType==computer && deviceState==connected && returnType==basic
 objectType==networkEntity && namePattern==*.nw && networkEntityType==SGSN
Run Code Online (Sandbox Code Playgroud)

通常枚举键(例如objectType)和值(device/networkEntity).所以解析机制的期望是:

  1. 如果查询字符串中存在任何未知元素(键/值),则它应该失败.
  2. 元素(键/值)应该以定义的顺序出现(这只是为了简化解析逻辑)
  3. 将来,除了"=="和"&&"之外,还可能会引入其他操作.
  4. 可以存在键/值的不同组合,从而导致大量唯一查询字符串.

现在我使用String.split和Scanner的组合来解析String.但是,我发现代码变得越来越复杂,越来越难以调试.到目前为止,我还没有提出任何重要的验证.有了这个,我期待代码变得更加复杂和"丑陋".

[问题]是否有任何库可以帮助我解析这些字符串.任何其他建议/想法也将不胜感激.

java parsing

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

Java中的特性,在scala中不存在

Java和Scala都是OO编程语言(Scala也是功能性的).我是Scala的新手,根据我的理解,Scala是对Java的改进(就OOP而言).Java中有哪些特性/功能,但Scala尚未引入?以下是我所知道的一些:

  1. Scala没有静态.而不是它有对象.

  2. Scala没有"检查异常"的概念.

  3. Scala中不存在原始数据.

java scala

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

Java 8 Method表达式给出了编译错误

我是Java 8(Lambda Expression)的新手.下面的代码打印变量"file"指示的路径上的所有目录.

File file = new File("/vssexclude/Test/workspace/Test");

File[] names = file.listFiles(fileName -> fileName.isDirectory());

for (File name : names) {
    System.out.println(name.toString());
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试用方法表达式替换lambda表达式时,eclipse会给出编译错误:

File[] names = file.listFiles(File::isDirectory());
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

java lambda java-8

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

在 Zabbix 中多次触发生成

我是 zabbix 的新手。我有一个使用 zabbix 监控不同日志消息发生的基本要求。比如说,当有日志消息时"server starting",zabbix 应该显示该警报。这个想法是,如果服务器在过去 10 分钟内(重新)启动 10 次,zabbix 仪表板(或任何其他地方)应该显示 10 次。

我为此做了以下工作:

  1. 在模板 MyTemplate 下创建了一个项目:
Type : Zabbix Agent (Active)
key : log[/opt/mylog/logs/abc.log,server starting]
Type of information : Log
Update Interval (in sec) : 30
Run Code Online (Sandbox Code Playgroud)
  1. 用表达式创建了一个触发器:

{MyTemplate:log[/opt/mylog/logs/abc.log,服务器启动].logeventid(1)}=0

使用 logeventid(1),我看到警报(触发器)只生成一次。它在Dashboard --> Last 20 issues. 如果我转到Monitoring --> Trigger,我只会看到一次警报,尽管日志文件有 10 个消息条目"server starting"(服务器重新启动了 10 次)。

然后我将触发器设置为以下:

{MyTemplate:log[/opt/mylog/logs/abc.log,服务器启动].nodata(300)}=0

现在,在Monitoring --> Trigger,我看到警报(触发)10 次,但是,Dashboard --> Last 20 issues在 300 秒后它就消失了。

我的问题是:

  1. 我应该使用什么触发功能?如果同一消息在一段时间内在日志文件中出现 …

monitoring zabbix

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

无法启动Jupyter Notebook:“似乎不是IPv4或IPv6地址”

我无法启动配置为运行远程VM(Redhat Enterprise Linux 6.x)的Jupyter Notebook(使用Anaconda 4.5.11安装)。'jupyter_notebook_config.py'配置了以下属性:

c.NotebookApp.ip ='*'

返回的错误如下:

在处理上述异常期间,发生了另一个异常:

Traceback (most recent call last):
  File "/opt/arnab/conda_pkg/python-skl/lib/python3.7/site-packages/notebook/notebookapp.py", line 869, in _default_allow_remote
    addr = ipaddress.ip_address(self.ip)
  File "/opt/arnab/conda_pkg/python-skl/lib/python3.7/ipaddress.py", line 54, in ip_address
    address)
ValueError: '' does not appear to be an IPv4 or IPv6 address
Run Code Online (Sandbox Code Playgroud)

anaconda jupyter-notebook

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