1.汉字转换位汉语拼音,英文字符不变
/**
* 汉字转换位汉语拼音,英文字符不变
*
* @param chines
* 汉字
* @return 拼音
*/
public static String ChineseToSpell(String chines) {
String pinyinName = "";
char[] nameChar = chines.toCharArray();
HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
for (int i = 0; i < nameChar.length; i++) {
if (nameChar[i] > 128) {
try {
pinyinName += PinyinHelper.toHanyuPinyinStringArray(
nameChar[i], defaultFormat)[0];
} catch (BadHanyuPinyinOutputFormatCombination e) {
e.printStackTrace();
}
} else {
pinyinName += nameChar[i];
}
}
return pinyinName;
}
2.如果输入的是英文字符搜索listview
/**
* 根据输入的首字母判断
*
* @param edit
* 输入的字符
* @param list
* 用户的名字
* @return
*/
public boolean SearchForSpell(String edit, String list) {
int index = edit.length();
String string = "";
if (index > list.length()) {
return false;
} else {
for (int i = 0; i < index; i++) {
string += (ChineseToSpell(list.substring(i, i + 1).toString()))
.substring(0, 1);
}
if (edit.equals(string)) {
return true;
}
if (edit.equals(string.toUpperCase())) {
return true;
}
}
return false;
}
3.如果输入中文汉字搜索
/**
* 根据输入的汉字母判断
*
* @param edit
* 输入的字符
* @param list
* 用户的名字
* @return
*/
public boolean SerachForChinese(String edit, String list) {
int index = edit.length();
String string = "";
if (index > list.length()) {
return false;
} else {
string = list.substring(0, index);
if (edit.equals(string)) {
return true;
}
}
return false;
}
4.listviw中文英文的排序
/**
* list集合根据汉字排序
*
* @param list
* @return
*/
public ArrayList<Map<String, String>> sortToList(
ArrayList<Map<String, String>> list) {
ArrayList<Map<String, String>> sortList = new ArrayList<Map<String, String>>();
String str[] = new String[list.size()];
for (int i = 0; i < str.length; i++) {
str[i] = list.get(i).get("usernickname");
}
Comparator cmp = Collator.getInstance(java.util.Locale.CHINA);
Arrays.sort(str, cmp);
for (int i = 0; i < str.length; i++) {
for (int j = 0; j < str.length; j++) {
// sortList.add(str[i]);
if (str[i].equals(list.get(j).get("usernickname"))) {
sortList.add(list.get(j));
}
}
}
return sortList;
}
5.获取字符串里面的拼音
public StringBuffer getSpell(String string) {
StringBuffer result = new StringBuffer();
for (int i = 0; i < string.length(); i++) {
char a = string.charAt(i);
if ((((int) a) >= 65 && ((int) a) <= 90)
|| (((int) a) >= 97 && ((int) a) <= 122)) {
result.append(a);
}
}
return result;
}
解释一个操作系统的实现/chapter6/r中代码。
程序流程如下:
1、把Loader中的GDT和esp挪到Kernel中,初始化IDTPTR
2、初始化8259,初始化IDT,初始化GDT中的TSS和LDT两个描述符,以及初始化TSS
3、初始化进程表,指定时钟中断处理程序,让8259可以接受中断,restart开始从ring0内核切换到ring1进程执行
4、当发生时钟中断,或者Int 90时,由ring 1进程态切换到ring 0内核态,首先保存所有寄存器,启动进程调度函数,恢复被调度的进程的寄存器,从而由ring0内核态又回到了ring1新进程
程序最重要的一个图如下:
进程切换几个关键问题,从ring1切换到ring0,触发的条件一个是时钟中断,一个是get_ticks,每次发生中断的时候,此时的堆栈是进程表的堆栈,由硬件自动把ss,esp,eflag,cs,ip压入tss制定的堆栈中,然后执行到中断处理程序时call save压入一个retaddr,接着save代码中压入其他的寄存器,这样就形成了表中的样子,然后切换到内核栈,执行中断处理程序,里面有进程调度程序,就是p_proc_ready指向不同的进程表,之后赋值给esp,此时堆栈又切换为进程表的堆栈,依次pop之后,iretd,切换到ring0,此时的堆栈是进程的堆栈。如果get_ticks切换到sys_call执行的时候发生时钟中断,因为k_reenter作为限制,所以不能执行restart,而是执行restart_reenter,注意此时压入的寄存器参数放在内核栈,没有发生特权级转换,iretd后还是接着sys_call执行,直到此段代码执行结束。
系统调用就是采用中断的方式来切换特权级,ring1-->ring0,由ring0得到结果返回ring1。
进程调度就是不断修改进程表堆栈的esp,然后Pop,并切换到进程开始执行。ring1-->ring0,ring0-->ring1。
进程就是代码。
进程表就是操作系统中所说的PCD。
这里的进程只有运行和不运行两种状态。
1楼jltxgcy1小时前哈哈。1. 先注册广播 :(注意:注册广播要在接收广播之前)
MyReceiver receiver = new MyReceiver();
IntentFilter filter = new IntentFilter();// 创建IntentFilter对象
filter.addAction("android.intent.action.test");
registerReceiver(receiver, filter);
其中MyReceiver为广播接收器,可以同时注册多个广播registerReceiver(receiver, filter);只要filter.addAction("不一样的标识");
2.广播注册完后要发送广播
Intent intent = new Intent();
intent.setAction("android.intent.action.test");// action与接收器相同
Bundle bundle = new Bundle();
bundle.putSerializable("showAllFriends", list);//这里可以传送数据
intent.putExtras(bundle); sendBroadcast(intent);
3.接收广播
/**
* 广播接收器
*
* @author Administrator
*
*/
public static class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras(); bundle.getSerializable("showAllFriends"));
System.out
.println("---------------------------------");
}
public MyReceiver() {
System.out.println("MyReceiver");
// 构造函数,做一些初始化工作,本例中无任何作用
}
}