`
waterlife
  • 浏览: 65737 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
文章列表
java数组的排序对于short,int和long型,采用不同的排序策略。int和long采用快速排序,而short采用计数排序。   计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。   计数排序利用的是数组的随机访问特性,将要排序的数k转换成数组的下标K,该数组中以k为下标的值A[k]代表这个数K的个数。这种排序非常快,但应用条件比较苛刻。 主要受需要排序的序列规模(n),序列最大值(max(n))影响,如果max(n)过 ...
  October 8th, 2014 - By Alexey Zhebel Introduction Java Virtual Machine (JVM) is an execution environment for Java applications. In the general sense, the JVM is an abstract computing machine defined by a specification, which is designed to interpret bytecode that is compiled from Java source co ...

[转]C++模板学习

作者:gaojun 原文链接:http://www.cnblogs.com/gaojun/archive/2010/09/10/1823354.html   1. 模板的概念。 我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如 ...
请看原创作者文章: http://lavasoft.blog.51cto.com/62575/222536
原创文章,转载请标注出处----   首先,定义一个rotate的animation: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator" ...
RT,感兴趣的一起交流,邮件:waterlife2001@126.com
日前,因为需要修改了Google android自带的provider,在里面添加了一个public static的变量。我在上层的APP里import这个变量总是报错,找不到原因。   后来仔细看了下编译错误,原来google认为在它自己的framework层添加public的成员和方法,会修改已有的API属性。需要添加@hide的comments或者在current.xml里,添加相关显式的声明。
好久没有更新我的Blog了,没想到越到年底越忙,连年假都来不及休了。 在此祝所有JavaEye的朋友,在新的一年里身体健康,平安幸福,其他一切都是浮云!  
对于Android的IPC来说,除了Handler和Looper之外,还有另外一种简便的方法来实现多线程的通信,那就是AsyncTask。AsyncTask是一个异步的方法,它允许背景运算并把结果更新到前台的UI线程之上。要实现一个AsyncTask主要有4个步骤,但并不是每一个步骤都是必需的。   这四个步骤是: onPreExecute() 执行背景运算前任务的初始化; doInBackground(Params...)这是AsyncTask最核心的函数,即是做背景运算;它在第一步完成之后被调用,通常在这步中还会调用方法publishProgress(Progress...)将运算结 ...
原创文章,转载请标注出处----   说到Android的IPC(Inter-Process Conmmunication)首先想到的就是Handler和Looper,Handler用于多进程之间的通信和数据交换,将各进程之间通信的数据Message放置到Message Queue里,而Looper用于创建各进程自身的message queue,然后在适当的时候分发给相应的进程。   我们知道在Android中,每一个UI线程是一个主线程(Main Thread),Android为每一个主线程维护一个Message Queue,当用户需要长时间的背景线程操作的时候,需要create自己的 ...
原创文章,转载请标注出处----   我们知道当一个编辑框获得焦点的时候,将会create一个新的IME客户端,那么IMF框架是怎样处理这个事件的呢?   首先调用EditText的构造函数EditTex->TextView->setText()            InputMethodManager imm = InputMethodManager.peekInstance(); if (imm != null) imm.restartInput(this);   ->startInputInner   void startInputInn ...
原创文章,转载请标注出处----   InputConnection是IMF里面一个重要的接口,他是实现BaseInputConnection和InputConnectionWrapper 上层的接口。主要用于应用程序和InputMethod 之间通信的通道,包括实现读取关标周围的输入,向文本框中输入文本以及给应用程序发送各种按键事件。 InputConnection ic = getCurrentInputConnection(); //获取InputConnection接口 if (ic != null){ ...
原创文章,转载请标注出处----   IMF(Input Method Frameworks)是Android输入法的Framework框架,其中最主要的是InputMethodService,他继承于AbstractInputMethodService。   它主要由以下几个组件构成,完成输入法的相关UI,和文字的输出。   1. Soft Input View 这是软键盘的Input Area,主要完成touch screen下和用户的交互输入。onCreateInputView() 被调用来进行soft inputview的实例化;onEvaluateInputVie ...
前面所说的中断向量表IDT,有两种表项: 一种是保留专用于CPU本身的中断门,主要用于CPU产生的异常以及由用户程序长生的系统调用,这些中断向量处系统调用的0x80之外都在0x20之下。从0x20之上就是第二种表项共224项,都用于外设的通用中断。二者的区别在于,外设中断门可以为多个中断源所共享。   IDT表初始化完成之初,每个中断服务队列都是空的。真正的中断服务要到具体的设备初始化程序将其中断服务程序通过request_irq(),向系统等级,挂入某个中断请求队列后才发生。    
LInux内核在完成了对页式虚存的管理之后,调用trap_init()和init_IRQ()两个函数进行中断机制的初始化。其中trap_init()主要完成一些系统保留的中断向量的初始化,init_IRQ()则主要用于外设的初始化。   trap_init()首先设置中断向量表(IDT)开头的19个陷阱门,这些中断向量都是系统保留用于异常处理的。中断向量14就是用于页面异常保留的。然后是对系统调用向量的初始化,SYSCALL_VECTOR为0x80。     init_IRQ()中初始化一个结构数组irq_desc[],Linux系统为每个中断向量设置一个队列,根据每个中断源产生的中断 ...
Global site tag (gtag.js) - Google Analytics