有时候需要将j2se工程导出,这样可以在别处运作,就不必拘泥于开发感觉中才能运行了。
具体步骤如下:
选中工程---->右键,Export...--->Java--->Runnable JAR file--->next-->Launch configuration:选择你的工程和启动类,以及Export destination(导出位置)
最后记得勾选library handling:下的Copy required libraries into a sub-folder next to the generatedJAR --->finish
导出的时候回有一个jar文件(TestHelloWorld.jar)和一个后缀为(TestHelloWorld_lib其实这个文件,就会知道把你引用到的外部lib导出来到这个下面)_lib文件夹,记得放在同一个目录下...
运行:cmd --->定位到你要运行的jar目录下
例如:java -jar TestHelloWorld.jar
我就在此下面打印了已经话:hello world!
vmstat 1 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 3295108 158596 342284 19338704 0 0 0 15 1 1 0 0 99 0 0
# procs
r: 等待运行的进程数
b: 处在睡眠状态中的进程数
w: 交换出去的可运行进程数
# memory
swap: 虚拟内存使用情况
free: 空闲的内存
buff: 用来作为缓存的内存数
cache: 用来作为缓存的内存数
# swap
si: 从交换区间到内存的交换数
so: 从内存交换到交换区间的交换数
# io
bi: 发送到快设备的块数
bo: 接受块设备传送的块数
# system
in: 每秒的中断数
cs: 每秒的环境切换数
# cpu //按cpu总使用的百分比来显示
us: 用时进程执行时间
sy: 系统进程执行时间
id: 空闲时间
wa: 等待io时间
一般 r < 5 , b = 0
## 如 r 经常大于3或4,且id经常少于50,则表示cpu负载过大
## 如 si、so长期不等于0,表示内存不足
## disk 经常不等于0,且在b中的队列大于2或3,表示io的性能不好
vmstat
-a:显示活跃和非活跃内存
-f:显示从系统启动至今的fork数量 。
-m:显示slabinfo
-n:只在开始时显示一次各字段名称。
-s:显示内存相关统计信息及多种系统活动数量。
delay:刷新时间间隔。如果不指定,只显示一条结果。
count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息
-S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
-V:显示vmstat版本信息。
利用下面这个Utility 类的静态方法setListViewHeightBasedOnChildren()即可实现:
在listview.setAdapter()之后调用Utility.setListViewHeightBasedOnChilren(listview)就Okay 了。
public class Utility {
public static void setListViewHeightBasedOnChildren(ListView listView) {
//获取ListView对应的Adapter
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
// pre-condition
return;
}
int totalHeight = 0;
for (int i = 0, len = listAdapter.getCount(); i < len; i++) { //listAdapter.getCount()返回数据项的数目
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0); //计算子项View 的宽高
totalHeight += listItem.getMeasuredHeight(); //统计所有子项的总高度
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
//listView.getDividerHeight()获取子项间分隔符占用的高度
//params.height最后得到整个ListView完整显示需要的高度
listView.setLayoutParams(params);
}
}
其实原理就是动态的改变ListView控件的高度。