Linux I/O 调度方法

2013年5月3日 没有评论

Linux IO调度程序是块设备I/O子系统的主要组件,它介于通用块层和块设备驱动程序之间。当Linux内核组件要读写一些数据时,并不是请求一发出,内核便立即执行该请求,而是将其推迟执行。延迟的设定是块设备性能的关键机制!当传输一个新数据块时,内核检查能否通过扩展前一个一直处于等待状态的请求而满足新请求。

阅读全文…

分类: Linux 标签: , ,

linux iostat 使用详解

2013年5月3日 没有评论

iostat 命令:通过iostat方便查看CPU、网卡、tty设备、磁盘、CD-ROM 等等设备的活动情况,负载信息。而iostat的数据主要来源 对应的文件是/proc/partitions 而Linux 内核为 2 6 对应的文件是/proc/diskstats或/sys/block/[块设备名]/stat

语法: iostat [选择参数] [时间] [次数]

参数说明:

-C 显示CPU使用情况
-d 显示磁盘使用情况
-k 以 KB 为单位显示
-m 以 M 为单位显示
-N 显示磁盘阵列(LVM) 信息
-n 显示NFS 使用情况
-p[磁盘] 显示磁盘和分区的情况
-t 显示终端和CPU的信息
-x 显示详细信息
-V 显示版本信息
注:默认单位为 Blk (块)
阅读全文…

分类: 系统监控工具 标签: ,

JVM内存模型及垃圾收集策略解析

2013年4月28日 没有评论

一 JVM内存模型

1.1 Java栈

Java栈是与每一个线程关联的,JVM在创建每一个线程的时候,会分配一定的栈空间给线程。它主要用来存储线程执行过程中的局部变量,方法的返回值,以及方法调用上下文。栈空间随着线程的终止而释放。如果在线程执行的过程中,栈空间不够用,那么JVM就会抛出此异常:StackOverflowError,这种情况一般是死递归造成的。

1.2 堆

Java中堆是由所有的线程共享的一块内存区域,堆用来保存各种JAVA对象,比如数组,线程对象等。

下图是我比较喜欢的一张java内存架构图

阅读全文…

分类: Java 标签: ,

CentOS 6.3 用虚拟机克隆之后无法开启eth0 解决方法

2013年4月27日 没有评论

在我们用虚拟机克隆出新的Centos系统镜像之后发现无法开启eth0
Bringing up interface eth0: Device eth0 does not seem to be present, delaying initialization.异常,解决方法如下

1.删除/etc/udev/rules.d/70-persistent-net.rules

sudo rm /etc/udev/rules.d/70-persistent-net.rules

2.修改eth0的mac为虚拟机随机分配的mac

sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0

 mac地址可以从虚拟机设置里面获取,如下图
阅读全文…

Android EditTextPreference 光标问题

2013年4月27日 没有评论

LZ同事偶然发现一个问题,公司的产品在他的android手机上点击EditTextPreference弹出框,光标默认在文字的最前面,而我的手机却是在最后面,后者更符合用户的使用习惯。根据现象可以定位为各个厂商定制的android系统修改了相关的设置,而我们上层APK是否可以做到修正呢?于是我查找了EditText和EditTextPreference 相关源码,终于找到了解决方法。
实现接口 Preference.OnPreferenceClickListener
然后覆盖方法

@Override
	public boolean onPreferenceClick(Preference preference) {
		if (preference instanceof EditTextPreference) {
			EditTextPreference editTextPref = (EditTextPreference) preference;
			if (!(editTextPref.getText() == null || editTextPref.getText()
					.equals(""))) {
				editTextPref.getEditText().setSelection(
						editTextPref.getText().length());
			}
		}
		return true;
	}
分类: Android 标签: