2013年5月4日星期六

eclipse crashed when exporting apk

#
# An unexpected error has been detected by Java Runtime Environment:
#
#  SIGBUS (0x7) at pc=0x00007f99ab324031, pid=14598, tid=140296281274112
#
# Java VM: Java HotSpot(TM) 64-Bit Server VM (10.0-b22 mixed mode linux-amd64)
# Problematic frame:
# C  [libzip.so+0xb031]
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

暂时解决方法:
取消自动编译

ubuntu 11.10安装xen


(感谢web.archive.org/,让找到我以前的这个帖子,之前的域名和空间都没放弃了.)

参考文章:
http://www.beyondlinux.com/2011/11/02/install-xen-4-1-and-setup-your-cloud-os-on-ubuntu-11-10/
http://blog.csdn.net/leeagle/article/details/6877410
http://bderzhavets.wordpress.com/2011/07/23/build-xen-4-1-1-on-ubuntu-11-10 这个得翻墙
ubuntu从11.10开始内核版本号到3了,也从这个版本内核开始重新支持xen了,不必重新编译内核了.
首先ubuntu不能是用wubi安装的,切忌.
其次,32位和64位系统的区别也很重要。64位按下面步骤很简单,32位就不同,因为xen需要开启pae,默认是没有开启的,所以32位ubuntu首先得执行下面这个命令:

sudo apt-get install linux-image-server
1.安装xen hypervisor.
sudo apt-get install xen-hypervisor-4.1 xen-utils-4.1 xenwatch xen-tools xen-utils-common xenstore-utils
这里xen-hypervisor-4.1要分32位、64位,64位系统用xen-hypervisor-4.1-amd64,32位用xen-hypervisor-4.1-i386.
当然用新力得(synaptic)找xen-hypervisor安装 会直接处理相关软件
这个时候查看/boot/grub/grub.cfg会看到启动列表里面就会有xen的启动项了
2.重启选择xen内核
命令xm info 可以查看虚拟机信息
3.重启后可能进去的是tty1(如果你进入的是正常的图形界面,这一步可以跳过,谢谢yan提醒)
这是因为独立显卡驱动的问题,先下载好在tty1下安装然后切换到tty7就ok了.
附:linux有7个工作组:tty1-7,其中tty1-6是命令模式,tty7是图形界面,我们destop版默认进入的就是tty7,用ctl+alt+F1/../F7可以切换工作组.
4.安装xen相关工具
sudo apt-get install virtinst virt-viewer virt-manager
5.配置xend
编辑/etc/xen/xend-config.sxp文件:
(xend-unix-server yes)
编辑~/.bashrc :
添加 export VIRSH_DEFAULT_CONNECT_URI=”xen:///”
6.创建虚拟机
运行软件virt-manager,这里图形界面就比较简单了,但是创建时因为相关资源路径问题可能会报以下错误
6.1 ******/usr/lib/xen/bin/qemu-dm:****
路径中xen应该是xen-4.1,解决办法如下
mkdir /usr/lib/xen -p
cp /usr/lib/xen-4.1/* -r /usr/lib/xen/
6.2 ****** libvirtError: POST操作失败: xend_post:来自 xen 守护进程的错误:****
查看日志 /var/log/xen/xend.log 和 /var/log/xen/qemu-dm-demo.log
日志显示/usr/share/qemu/keymaps/en-us could not be found, the keymaps ***
路径中qemu应该是qemu-linaro,解决办法如下

cp -r /usr/share/qemu-linaro/ /usr/share/qemu
这样创建过程基本没有问题了.

2013年4月8日星期一

不该被遗忘的人-陈梦家

1.
《殷虚卜辞综述》
《美帝国主义劫掠的我国殷周铜器集录》

2.
1957年,他发表《慎重一点“改革”汉字》和《关于汉字的前途》,不赞成废除繁体字实行简化字,以及实行汉字拉丁化

2013年3月29日星期五

java puzzers 94: shuffle


主要代码就是这一段:
        Random rnd=new Random();
        for (int i = 0; i < size; i++)
            swap(array, i, rnd.nextInt(size));

这个算法是不公平的,Collections.shuffle用的是:

        for (int i = size; i > 1; i--)
             swap(arr, i - 1, rnd.nextInt(i));

其实就是(有点难看):

        for (int i = 0; i < size; i++)
            swap(array, i, i+rnd.nextInt(size-i));



java puzzers:"+","=="

匆匆看完,大部分都很有意思,不过看完都没什么印象,只有一个我现在还偶尔碰到.

puzzer 43:(排版稍微有点不一样)
public class AnimalFarm{
  public static void main(String[] args){
     final String pig = "length: 10";
     final String dog = "length: " + pig.length();
     System.out. println("Animals are equal: "+ pig == dog);
     }
}

很明显能看出pig!=dog,但是这个迷题的重点却在输出语句上,原文将“+pig==dog”显示在第二行,错误就更不容易看出来。
运算符“+”和“==”的优先级,前者高.(不管是加法还是字符串连接)

2013年3月28日星期四

ArrayList笔记


Jdk6:

1.初始化(源码):
public ArrayList(Collection<? extends E> c) {
   elementData = c.toArray();
   size = elementData.length;
   
// c.toArray might (incorrectly) not return Object[] (see 6260652)    if (elementData.getClass() != Object[].class)
       elementData = Arrays.copyOf(elementData, size, Object[].
class);
   }

下面是这个代号6260652中说到的bug代码示范:
   List l = Arrays.asList(args);
       System.out.println(l.toArray());
       System.out.println(l.toArray(new Object[0]));

EXPECTED -
[Ljava.lang.Object;@10b62c9
[Ljava.lang.Object;@82ba41

ACTUAL -
[Ljava.lang.String;@10b62c9
[Ljava.lang.Object;@82ba41

2.arrayList.toArray()内部调用的也是Arrays.copyOf

3.数组复制:
System.arraycopy(Object src,int srcPos,Object dest,int destPos,int length)

4.
默认初始容量10, 扩容方法ensureCapacity(int minCapacity)是取

min{ minCapacity, (oldCapacity *3)/2+1 }

2013年3月27日星期三

queryBroadcastReceivers ACTION_MEDIA_MOUNTED

ACTION_MEDIA_MOUNTED等一系列与external media状态有关的broadcast actions都需要在intent-filter中设置scheme为file。

要查询这些事件的receiver,queryBroadcastReceivers的参数intent也必须匹配data的scheme属性.

implicit intents需要匹配:(参见intent 以及 intents-filters)

1.action
2.data (both URI and data type)
3.category

其中data的uri格式是:
scheme://host:port/path

在ACTION_MEDIA_*事件中,scheme为"file",host和port省略,path是external media的路径。