这是我正在尝试的小代码.该程序需要很长时间才能执行.在运行时,如果我试图通过eclipse中的终止按钮杀死它,它会返回Terminate Failed.我可以从终端使用它杀死它kill -9 <PID>.
但是,当我不在程序的最后一行打印变量结果时(请检查代码的注释部分),程序立即退出.
我想知道 :
为什么在打印结果值时需要花时间执行?
请注意,如果我不打印value,相同的循环会立即结束.
为什么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) 根据Sun Java Implementation,在扩展期间,ArrayList增长到3/2它的初始容量,而对于HashMap,扩展速率是双倍.这背后的原因是什么?
根据实现,对于HashMap,容量应始终为2的幂.这可能是HashMap行为的原因.但在这种情况下,问题是,对于HashMap,为什么容量应始终为2的幂?
我正在尝试使用maven执行以下方案:
这是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的任何论据吗?
有没有办法在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,混合模式)
我需要一张符合以下要求的地图:
它应该是高度并发的.的put(),get()并且remove()方法可同时被多个线程调用.
它应该是固定的大小.如果HashMap达到最大值的大小(例如10000),则不应允许向地图添加新条目.它不能是LRU缓存,其中最旧的条目在达到最大大小时被删除.
ConcurrentHashMap可能满足#1.但是,不确定如何在ConcurrentHashMap不影响并发性的情况下实现#2 (添加自定义put()方法,只有当大小小于最大大小时才会添加到地图中,需要"同步".这将失败目的使用并发HashMap).
请让我知道你的想法.
java concurrency multithreading concurrenthashmap java.util.concurrent
我们在我们的产品中使用 SizeAndTimeBasedRollingPolicy/SizeAndTimeBasedFNATP(logback 1.1.3)。这是 logback 配置文件的片段:
Run Code Online (Sandbox Code Playgroud)<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>
生成的日志文件具有以下名称:myabc-2016-11-21.0.gz、myabc-2016-11-21.1.gz、myabc-2016-11-21.2.gz 等。
问题是如果日志文件的扩展名 (%i) 超过 3 位,则在 30 天 (maxHistory) …
在我们的产品中,我们使用apache CXF.由于性能限制,架构验证已设置为false.现在,对于整数元素,如果我提供的值无效,JAXB会将其解组为其他内容.例如,
9999999999转换为1410065407.
988888888888转换为1046410808.
我的问题是这里遵循的逻辑(公式)是什么?
如何处理(考虑验证将关闭)?我想要拒绝这样的价值.
对于我们产品的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).所以解析机制的期望是:
现在我使用String.split和Scanner的组合来解析String.但是,我发现代码变得越来越复杂,越来越难以调试.到目前为止,我还没有提出任何重要的验证.有了这个,我期待代码变得更加复杂和"丑陋".
[问题]是否有任何库可以帮助我解析这些字符串.任何其他建议/想法也将不胜感激.
Java和Scala都是OO编程语言(Scala也是功能性的).我是Scala的新手,根据我的理解,Scala是对Java的改进(就OOP而言).Java中有哪些特性/功能,但Scala尚未引入?以下是我所知道的一些:
Scala没有静态.而不是它有对象.
Scala没有"检查异常"的概念.
Scala中不存在原始数据.
我是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)
我错过了什么?
我是 zabbix 的新手。我有一个使用 zabbix 监控不同日志消息发生的基本要求。比如说,当有日志消息时"server starting",zabbix 应该显示该警报。这个想法是,如果服务器在过去 10 分钟内(重新)启动 10 次,zabbix 仪表板(或任何其他地方)应该显示 10 次。
我为此做了以下工作:
Run Code Online (Sandbox Code Playgroud)Type : Zabbix Agent (Active) key : log[/opt/mylog/logs/abc.log,server starting] Type of information : Log Update Interval (in sec) : 30
{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 秒后它就消失了。
我的问题是:
我应该使用什么触发功能?如果同一消息在一段时间内在日志文件中出现 …
我无法启动配置为运行远程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)