我正在创建一个可以监控100-150个设备的监控应用程序......现在设计一个监控应用程序,我有两种方法: -
为要监视的每个设备创建一个线程,每个线程将ping(使用ICMP)到设备以了解设备是否在线.这些线程将在特定时间间隔(例如60秒)后无限运行以了解其状态.
创建线程池,并为每个设备将任务提交给线程池.任务是简单ping到设备.因此,在当前的设计中,任务将超过线程池中的线程.例如,假设有100个要监视的设备,将有100个要监视的任务,并且线程池将有40个线程来完成这100个任务.当然,运行下一组任务的持续时间将使得完成线程池中的所有挂起任务.
哪种方法会更好?
我想评估OS(操作系统)系统属性来加载环境对应的配置文件.例如,如果操作系统评估为Windows,properties-win.xml则将加载,或者如果操作系统评估为Unix或Linux,properties-unix.xml则将加载.
下面的拼写工作正常
#{(systemProperties['os.name'].indexOf('nix') >= 0 or systemProperties['os.name'].indexOf('nux') >= 0 or systemProperties['os.name'].indexOf('aix') > 0 ) ? 'linux' :
((systemProperties['os.name'].indexOf('Win') >= 0) ? 'windows' : 'Unknow OS')}
Run Code Online (Sandbox Code Playgroud)
但是,为了systemProperties['os.name']每次评估,我想在变量中使用它,然后想要匹配条件.我看到了#this变量用法(http://docs.spring.io/spring-framework/docs/3.0.6.RELEASE/spring-framework-reference/html/expressions.html sec 6.5.10.1)并尝试制作以下内容SPEL
#{systemProperties['os.name'].?((#this.indexOf('nix') >= 0 or #this.indexOf('nux') >= 0 or #this.indexOf('aix') > 0 ) ? 'unix' :
(#this.indexOf('win') >= 0) ? 'windows' : 'Unknown')}
Run Code Online (Sandbox Code Playgroud)
但不知何故,它正在给出解析异常.
有人可以提出任何建议吗?
为什么Float.valueOf("2.7") > 2.7给我真实?
public static void main(String[] args) {
System.out.println(Float.valueOf("2.7") > 2.7);
System.out.println(Float.valueOf("2.7") > 2.8);
System.out.println(Float.valueOf("2.7") > 2.6);
}
Run Code Online (Sandbox Code Playgroud)
版画
true
false
true.
Run Code Online (Sandbox Code Playgroud)
如果我这样做Float.valueOf("2.7") > Float.valueOf("2.7"),它会让我失意.
任何人都可以帮助我理解这种行为吗?