只要能通过ip地址找到虚拟机中的系统,那么就可以干很多事,比如:
adb调试,或者使用nc命令传输一些文件或文件夹,等等。。
下面以adb连接virtualbox中的android-x86进行调试为例:

安装android-x86

首先你要安装好android-x86,这个就不多说了,网上很多教程
不过值得一提的是,在安装好之后,进入系统时,如果没有点技巧会卡在欢迎界面,安装时没有截图,就不上图了
解决方法是:在欢迎界面,状态栏下面开始,依次:
左上-右上-右下-左下
用鼠标点击一遍,就会自动跳过欢迎界面了

查看android-x86的ip地址

本例中使用的是virtualbox默认的网络配置
进入android-x86系统,打开终端模拟器
接着输入“su”命令获取root权限,会弹出提示,自己看着选
获取root后,终端提示符会变成”#“
输入”netstat“命令,会打印出一些网络配置和ip地址信息,本例中的android-x86的ip地址为:”10.0.2.15”
记住这个ip,后面会用到

配置虚拟机系统的网络的端口转发功能

在vbox中在要配置的系统:android-x86上右键,选择设置
在出现的设置窗口的左侧菜单组中点击网络项,其他的不用管,直接接着点击端口转发按钮:
接着在新窗口中点击右侧”+“按钮,添加一条规则:

guize

其中主机ip最好填本机host,端口随便,不过如果是adb连接的话,最好用5555,因为adb connect默认是5555端口
子系统ip,就填第二步中使用netstat得到的ip地址,端口随意

配置好之后点确定,重启虚拟机中的android-x86

阅读全文 »

如何获取XMLReader接口

从JDK文档来看,有两种方法:

使用SAXParserFactory+SAXParser[以下简称a方法]

1
XMLReader aaa=SAXParserFactory.newInstance().newSAXParser().getXMLReader();

使用XMLReaderFactory[以下简称b方法]

1
XMLReader bbb=XMLReaderFactory.createXMLReader();

两种方法不同之处

在JDK文档a方法中SAXParser类的getXMLReader()方法的注释:

返回由此类的实现封装的 XMLReader。

SAXParser类又是由SAXParserFactory的newSAXParser()方法创建而来,其注释:

阅读全文 »

详细看原文:链接

安装grub2到u盘:

1
sudo grub-install -v --target=i386-pc --boot-directory=/run/media/root/EXT4 /dev/sdb

注意上面的参数:
–target,根据需要替换,参数值可以到/usr/lib/grub/下查看,每一个目录都可以作为参数值
–boot-directory,此参数的含义自行查看grub-install的help
具体看man grub-install使用方法

grub2间接引导WinPE

U盘上建立WXPE目录,将WinPE文件放置入内:

目前网络上的WinPE到处都是,各种版本其实都差不多,主要需要如下5个文件:
LDRXPE NTCOM PE SETUPLDR.BIN WINPE.IS_

大致过程是:LDRXPE调用NTCOM和SETUPLDR.BIN读取PE找到WINPE.IS_镜像,加载WinPE。

修改grub.cfg,加入winpe引导项:

1
2
3
4
5
6
7
menuentry 'LDRXPE for WinCE (on /usb/fairy)'{
insmod part_msdos
insmod fat
set root='hd0,msdos1'
search --no-floppy --fs-uuid --set=root 696C-0B1C
ntldr /WXPE/LDRXPE
}
阅读全文 »

本文篇幅较长,最好通过文章内容上面的目录进行查看,否则很容易迷失在一个又一个的步骤中


前言:
在中文+英文arch-wiki的指导下,大概经过了将近十次的格式化+重装,终于满意了,这个过程中也了解了linux新的系统服务管理机制:systemd(systemclt),
不说废话了,开始安装步骤
折腾日期为:2015-4-28到2015-5-??
arch更新迅速,如果要参考本文,自行留意日期,也可以自己去arch-wiki去看官方教程:arch-wiki-Beginners’guide

本文将简略的说一下步骤,主要说我在安装过程中出现的问题!
所以如果你是对大概的linux命令都不熟悉的新手,本文也许不适合你,
你应该先去看arch-wiki,然后再来这里看

网络配置

安装arch,是不能没有网络的,毕竟官方提供的是最小化安装镜像,只有核心linux和官方修改配置的脚本,其他的都要靠联网下载安装
网络配置这一步骤需要进行两次!
第一次是刚刚启动安装镜像时,这一次的网络配置生效区域是安装镜像所在的系统,而非你安装到硬盘上的系统,这个配置将会随着安装镜像系统的退出而清除!
第二次是使用arch-chroot命令后切换到到真实的,安装在了硬盘上的系统!这第二次的网络配置,将会写到你将来要用的系统所在的硬盘分区上的配置文件中,所以只要你以后不再修改,那么它的生效区域是永久的!
自行理解上文所提到的安装镜像所在的系统和真实系统的区别!这个不好说,说不清

arch官方推荐使用他们自己的netctl来作为网络管理工具,但是经过使用后我还是推荐使用networkmanager来作为管理工具,因为networkmanager不论在命令行还是图形界面都有简单的使用方法!

使用netctl

如果你使用netctl那么将会有无线和有线两种大的联网方式,其中又各自细分出了几种不同的联网方式,**第一次配置安装镜像所在的系统时你只需要选择其中一种,让电脑能正常联网就行了!第二次为真实系统配置时再自行选择配置几种**。具体配置方法看arch-wiki-Beginners’guide这里不多说!
按照官方教程会启用dhcpcd守护进程、这会导致系统系统的DNS每次开机都被dhcpcd替换为自动获取的DNS配置文件:/etc/resolv.conf
如果按照官方教程配置netctl后,出现了能ping通域名(如:ping t.cn),但使用pacman -Syy却无法联网时那么你就需要修改/etc/resolv.conf文件中的DNS:

shell
1
2
nameserver 8.8.4.4
nameserver 8.8.8.8
阅读全文 »

当前系统,archlinux+xfce4

tilda简介

tilda有一个非常方便的功能,那就是绑定一个按键,来切换tilda这个终端模拟器的显示和隐藏,
注意是显示和隐藏而不是开启和关闭,它在切换的期间不会影响终端中所执行的命令,
如果用过deepin linux的话应该就知道dde自带的终端有个特殊的模式叫雷神模式,
原理就跟tilda一样

开机启动

设置tilda开机启动很简单,就是在’~/.config/autostart/‘下放一个tilda的desktop文件就行了,
也可以把系统的链接过去:

1
ln -s /usr/share/applications/tilda.desktop ~/.config/autostart/

发现问题

可是当你开机后按’F1’(tilda默认绑定的按键)打开tilda后,如果你设置了tilda的背景为透明,
你会发现透明没有生效,而是黑色的背景,此时按’CTRL-SHIFT-q’退出tilda,再重新打开,
发现透明又生效了,经过再三校验tilda的配置文件的确正确后,只能猜测是xfce4桌面环境在
刚启动的时候,透明化这个功能暂时还没有初始化完成,而此时tilda已经启动了,所以就造成上述结果

解决问题

既然tilda的透明化需要等待系统初始化完毕,那么让tilda暂停一会儿再启动就行了
所以上面开机启动一段在’~/.config/autostart/‘下的tilda.desktop文件就不要了,删掉后自己新建一个

阅读全文 »

注意实体按键和虚拟按键的区别
使用的是android4.2版本,硬件:mt6589
以下操作都需要root权限!

关闭实体按键功能

包括:菜单,返回,home,最近

使用root文件管理器,如RE文件管理器
/system/usr/keylayout/Generic.kl文件中搜索menu,
注意搜索结果应该是只有menu这一个单词,而不是包含menu的单词

搜索到后在这一行的开头,添加上一个英文的符号:‘#’
也就是把这一行注释掉的意思!

返回键:back
同理、同上

我的手机菜单,home,返回键所对应的键值为(仅供参考):

1
2
3
139    MENU
158 BACK
172 HOME

修改之后保存重启手机、被你注释掉的对应的实体功能键就失效了,点击没有任何反应
如果不成功可以尝试注释掉其他的行

这只是关掉功能、但背光灯还是会亮的

阅读全文 »

linux和win下的oracle不同、开机后不能直接使用
经过一段时间摸索、终于大体摸清了linux下oracle的数据库启动流程
所以自己动手写了几个shell脚本、省的每次都要输一堆命令来启动数据库、启动监听、启动em。。
不同的数据库安装和不同的系统可能有较大的差异、不能保证都能用

启动数据库

1
2
3
#!/bin/sh
echo 打开数据库
echo startup|sqlplus "/as sysdba"

关闭数据库

1
2
3
#!/bin/sh
echo 关闭数据库
echo shut|sqlplus "/as sysdba"

启动监听

1
2
3
#!/bin/sh
echo 打开监听
lsnrctl start

关闭监听

1
2
3
#!/bin/sh
echo 关闭监听
lsnrctl stop

打开em

阅读全文 »

搜了点网上的资料、发现都是修复MBR分区的、我的电脑是GPT分区+UEFI、虽然不同、但也大同小异、
出现grub rescue模式一般是硬盘分区出现变动、导致旧的grub找不到启动文件而出现的、

错误提示

今天开机是出现了这样的提示:

1
2
3
error:file'/grub/x86_64-efi/normal.mod'not found
entering rescue mode...
grub rescue>

大概意思是那个路径下normal.mod文件找不到、从而进入了grub rescue模式
那么在grub rescue 模式下应该怎么修复呢?
首先使用set 命令只看当前错误的grub变量、下面是我的电脑的信息

1
2
3
4
5
6
set

#返回信息是:
cmdpath=(hd0,gpt1)/EFI/Deepin 2014.2
prefix=(hd0,gpt10)/grub
root=hd0,gpt10

数据分析

那么我们开分析下这些数据、首先cmdpath指向的是UEFI的启动文件、
这个应该不会错、因为硬盘第一分区一般都是EFI分区、并且目录“Deepin 2014.2”也不会出错

所以就应该是prefix和root变量出错了、并且是”gpt10”这个指向的分区出错了、
这就好办了、只要找到并修改为正确的分区应该就行了

接着使用ls命令来查看当前硬盘上有哪些分区:

阅读全文 »

同步CM10.1到99%出现错误:
error: Cannot fetch CyanogenMod/Android external svox

或者是这样的提示:
repo sync Repository unavailable due to DMCA takedown

解决办法:

repo init后
修改 .repo/manifests/default.xml

<project path="external/svox" name="CyanogenMod/android_external_svox"/>
替换修改为
<project path="external/svox" name="platform/external/svox" remote="aosp" revision="refs/tags/android-4.4.4_r2"/>

注意红色文字部分、那是你同步的版本号

如果不确定应该改为多少、就搜索aosp、会发现每一个搜索结果中的行里都有一个类似的语句、

把这句里的版本号改为你搜索到的那些版本号就行了

先说两种客户端发送http到服务端、然后再说服务端如何处理

客户端

首先客户端有两种方式可以发送http请求
当然还有其他方式,这里只讨论这两种方式:

doget方式

客户端中先使用“url?name1=value1&&name2=value2&&….”来new出HttpGet的对象
使用HttpClient的对象:deafultHttpClient来发送HttpGet的对象到服务端、同时将会获得服务器返回的HttpResponse对象、
接着HttpResponse对象调用getEntity()来获取服务端发送过来的信息

dopost方式

客户端先使用URL来new出HttpPost的对象
接着使用NameValuePair来保存要传递的Post的参数
可以使用集合框架、例如new一个List的对象params、并使用其add(new BasicNameValuePair("name","value"))方法来将数据保存起来、

此时还不能直接发送、要将params放到HttpPost的对象中才行、然而List类型的params并不能直接被放置到HttpPost

需要转换成另一种类型的数据:HttpEntity、在转换的同时还可以设置一下编码:

1
HttpEntity httpEntity=new UrlEncodedFormEntity("params","GB2312");
阅读全文 »