一个简陋的SWT个人资料界面 = =..
在SWT的教程上看到的一个练习~于是照着敲……截图如下:
java.lang.String.split()中的|
实验split("|")失效,
百度发现有如下:
关于竖线的问题用 string.split("\\|")解决。
关于星号的问题用 string.split("\\*")解决。
关于斜线的问题用 string.split("\\\\")解决。
关于中括号的问题用 string.split("\\[\\]")解决。
SigarException: Unable to find sigar.jar
搞了一晚上 终于知道是什么原因了囧
jar包的问题 囧 去官网下一个1.6.3以后的版本覆盖sigar.jar即可。
SVN地址:http://svn.hyperic.org/projects/sigar_bin/dist/SIGAR_1_6_3/lib/
编号141,昨天凌晨3点才修复的 无比囧
读写properties
新建一个java.util.Properties对象p,
第一步加载properties:
p.load(new FileInputStream(new File(CONFIG_PATH)));
} catch (IOException e) {
e.printStackTrace();
}
读取操作很简单,直接调用它的getProperty方法:
写操作需要一个FileWriter:
FileOutputStream out = new FileOutputStream(new File(CONFIG_PATH));
p.setProperty(key, value);
p.store(out, key);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
p.setProperty方法设置key键的属性值为value,store方法存储。
每次都必须new FileOutputStream,因为文件会被清空 = = 不知有什么比较简单的方法。
扩展SWT遇到Subclassing not allowed
囧 百度了下 package要放到org.eclipse.swt.widgets下才行……
同时只能运行一个程序实例的实现
做软工作业的机房管理系统,各个计算机要有一个监听自身信息的客户端,于是就牵出了一个同时只能运行一个实例的问题。
其实想想也很简单。因为对于现在应用的各个操作系统,都有端口存在,而一个端口只能被一个程序所占用,
因此,在实例化之前只需要启动一个Socket去连接该应用程序所占用的端口,如果能连接上表示该端口已经启动了一个ServerSocket,
不能连接上则启动一个ServerSocket来占用它即可。
但是有个小缺陷:有可能别的程序也占用了该端口,因此很考验RP 。 - -
ThreadPoolExecutor的使用
一个 ExecutorService,它使用可能的几个池线程之一执行每个提交的任务,通常使用 Executors 工厂方法配置。
线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定和管理资源(包括执行集合任务时使用的线程)的方法。每个 ThreadPoolExecutor 还维护着一些基本的统计数据,如完成的任务数。
定时启动线程
假设我们要令一个线程定时启动(譬如从今天晚上23点15分开始,隔1秒钟启动一次)
可以使用java.util包中的Timer类,详细用法大家可以查下API。