自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

幸福的杂货铺

技术,生活,读书,杂谈

  • 博客(40)
  • 资源 (1)
  • 收藏
  • 关注

java数组的计数排序探究

java数组的排序对于short,int和long型,采用不同的排序策略。int和long采用快速排序,而short采用计数排序。 计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。 计数排序利用的是数组的随机访问特性,将要...

2014-10-11 21:57:47 227

原创 【转】Java Virtual Machine: the Essential Guide

 October 8th, 2014 - By Alexey ZhebelIntroductionJava Virtual Machine (JVM) is an execution environment for Java applications. In the general sense, the JVM is an abstract computing machine def...

2014-10-11 20:56:55 178

原创 浅谈c++和java的内部类

最近在项目中遇到一个有趣c++的问题,比对Java,作如下整理。 class AUBCRoll : public VWFC::VWSceneController { public: struct tstBCButtonInfo { bool m_boVisible

2014-02-11 17:11:21 566

原创 [转]C++模板学习

作者:gaojun原文链接:http://www.cnblogs.com/gaojun/archive/2010/09/10/1823354.html 1. 模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类...

2011-10-10 16:27:01 108

原创 Java5新特性,java的条件变量

请看原创作者文章:http://lavasoft.blog.51cto.com/62575/222536

2011-09-21 13:54:42 110

原创 Android多线程之控制animation走走停停

原创文章,转载请标注出处---- 首先,定义一个rotate的animation:<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"><rotate android:interp...

2011-09-20 12:50:37 384

原创 有人对研究Android 平台上H264感兴趣的么?

RT,感兴趣的一起交流,邮件:[email protected]

2011-07-16 20:18:29 102

原创 一个comment导致的Android import编译错误

日前,因为需要修改了Google android自带的provider,在里面添加了一个public static的变量。我在上层的APP里import这个变量总是报错,找不到原因。 后来仔细看了下编译错误,原来google认为在它自己的framework层添加public的成员和方法,会修改已有的API属性。需要添加@hide的comments或者在current.xml里,添加相关显式...

2011-06-12 08:43:28 221

原创 2010

好久没有更新我的Blog了,没想到越到年底越忙,连年假都来不及休了。在此祝所有JavaEye的朋友,在新的一年里身体健康,平安幸福,其他一切都是浮云! ...

2010-12-30 21:46:16 87

Android Framework系列之IPC(二)

对于Android的IPC来说,除了Handler和Looper之外,还有另外一种简便的方法来实现多线程的通信,那就是AsyncTask。AsyncTask是一个异步的方法,它允许背景运算并把结果更新到前台的UI线程之上。要实现一个AsyncTask主要有4个步骤,但并不是每一个步骤都是必需的。 这四个步骤是:onPreExecute() 执行背景运算前任务的初始化;doInBac...

2010-11-08 20:03:26 102

原创 Android Framework系列之IPC(一)

原创文章,转载请标注出处---- 说到Android的IPC(Inter-Process Conmmunication)首先想到的就是Handler和Looper,Handler用于多进程之间的通信和数据交换,将各进程之间通信的数据Message放置到Message Queue里,而Looper用于创建各进程自身的message queue,然后在适当的时候分发给相应的进程。 我们...

2010-11-05 19:46:05 175

原创 Android Framework系列之IMF(三)

原创文章,转载请标注出处---- 我们知道当一个编辑框获得焦点的时候,将会create一个新的IME客户端,那么IMF框架是怎样处理这个事件的呢? 首先调用EditText的构造函数EditTex->TextView->setText()            InputMethodManager imm = InputMethodManager.peekInsta...

2010-11-01 20:55:27 181

原创 Android Framework系列之IMF(二)

原创文章,转载请标注出处---- InputConnection是IMF里面一个重要的接口,他是实现BaseInputConnection和InputConnectionWrapper 上层的接口。主要用于应用程序和InputMethod之间通信的通道,包括实现读取关标周围的输入,向文本框中输入文本以及给应用程序发送各种按键事件。 InputConnection ic...

2010-10-14 22:01:30 168

原创 Android Framework系列之IMF(一)

原创文章,转载请标注出处---- IMF(Input Method Frameworks)是Android输入法的Framework框架,其中最主要的是InputMethodService,他继承于AbstractInputMethodService。 它主要由以下几个组件构成,完成输入法的相关UI,和文字的输出。 1. Soft Input View这是软键盘的Inp...

2010-10-12 21:41:30 186

原创 Linux内核之中断请求队列的初始化

前面所说的中断向量表IDT,有两种表项:一种是保留专用于CPU本身的中断门,主要用于CPU产生的异常以及由用户程序长生的系统调用,这些中断向量处系统调用的0x80之外都在0x20之下。从0x20之上就是第二种表项共224项,都用于外设的通用中断。二者的区别在于,外设中断门可以为多个中断源所共享。 IDT表初始化完成之初,每个中断服务队列都是空的。真正的中断服务要到具体的设备初始化程序将...

2010-09-15 20:48:04 144

原创 Linux内核之中断向量的初始化

LInux内核在完成了对页式虚存的管理之后,调用trap_init()和init_IRQ()两个函数进行中断机制的初始化。其中trap_init()主要完成一些系统保留的中断向量的初始化,init_IRQ()则主要用于外设的初始化。 trap_init()首先设置中断向量表(IDT)开头的19个陷阱门,这些中断向量都是系统保留用于异常处理的。中断向量14就是用于页面异常保留的。然后是对系统...

2010-09-14 19:45:53 334

原创 Linux内核之中断

Linux中断有两种,一种是由CPU外部产生,另一种是由CPU执行程序的过程中产生。 外部中断(interrupt)完全是异步的,CPU对外部中断的相应完全是被动的,软件可以通过“关中断”指令关闭对中断的相应。 由软件产生的中断,是程序中有意产生的,是主动的,同步的。我们称之为陷阱(trap)。此外还有一种与中断相似的机制叫做异常(exception),一般也是异步的。 ...

2010-09-13 20:35:16 109

原创 系统调用mmap()

一个进程可以通过系统调用mmap(),将一个已打开的内容映射到他的用户空间。内核中实现这个函数是sys_mmap2()。 具体的映射是动态的,时常在变。所谓文件与虚存之间的映射包含着两个环节:一是物理页面与文件映像之间的换入,换出;二是物理页面与虚存页面之间的映射。 1. 当区间中的一个页面首次收到访问时,会因为页面无映射,发生缺页异常,相应的页面异常处理函数为do_no_page...

2010-09-11 21:20:29 143

原创 系统调用brk()

用户进程通过系统调用brk() 向内核申请空间,brk()在内核中由sys_brk实现。brk()对于用户进程在堆上分配的内存进行批量向内核申请。 一个有用户空间映射可换出的页面,同时在三个队列中。一般通过其队列头list链入某换入/换出队列,即相应address_space结构中的 clean_pages, dirty_list和locked_pages三个队列之一;二是通过其队列头lr...

2010-09-11 21:01:02 653

原创 Linux内核之外设存贮空间的地址映射

Linux对于外设的访问一般有两种方式:一种叫内存映射,另一种叫I/O映射。随着外设的寄存器和自身存贮空间的增加,采用第二种方式已经远远不能满足外设的需要。Linux看到的外设的地址都是总线地址,相应的存贮空间都在系统空间(3GB以上)。 内核为自己保持一个虚存区间队列vmlist,这是由一串vm_struct数据结构组成的一个单链队列。相似于供进程使用的vm_area_struct结构。...

2010-09-09 21:01:01 261

原创 Linux内核之内核缓冲区的管理

Linux内核采用slab方法来管理内核缓冲区,slab类似于面向对象的方法进行内核区的分配和回收。 1. slab可能由1个,2个,4个.......最多32个连续的物理页面构成;2. 每个slab都有slab的描述结构slab_t,用于同一种对象或多个slab通过描述结构队列头形成一个双向链队列。每个slab结构逻辑上分成3段,对一段是各个slab上所有的对象都已分配使用;第二个是...

2010-08-31 20:51:29 372

原创 Linux内核之页面的换入

在页面表项和页面目录中P标志为0表示相应的物理页面不在内存,从而无法完成本次访问,cpu就会产生一次缺页异常。当页面在内存时,页面表项是一个pet_t结构,指向一个内存页面;当页面不在内存时,则是一个swap_t结构,指向一个盘上页面。 处理一次因缺页产生的异常,首先要检查相应的页面是否还在swapper_space的换入/换出队列中尚未释放,那就通过read_swap_cache()分配...

2010-08-30 22:14:18 158

原创 Linux内核之页面的换出

Linux通过一个守护线程kswapd进行页面的定期换出,这个时间间隔由编译内核是决定。kswapd一般会执行以下两个部分的例行操作:1. 在发现物理页面短缺的情况下进行的,目的是预先找出一些页面,且将这些页面的映射断开,使这些页面从活跃状态转到不活跃状态,为页面换出做准备。 2. 每次都要执行,目的在于把处于不活跃的脏页面写入交换设备,使他们成为不活跃的“干净”页面,继续缓冲,或进一...

2010-08-29 19:46:29 179

原创 Linux内核之物理页面使用和周转

Linux把暂时不用的物理内存页放在交换分区,其中swap_map指向一个数组,该数组中的每一个短整数代表盘上的一个物理页面,而数组的下标决定了该页面在盘上的位置。数组的第一个元素swap_mem[0]表示设备和文件自身的一些信息。链表swap_list各个swap_info_struct结构按优先级高低连接在一起。 而内存页面的周转有两方面的意思,其一是页面的分配,使用和回收;其二是...

2010-07-28 20:18:30 178

原创 Linux协议栈之IP协议(一)

IP协议的ipfag结构提供对分片重组的支持,ipq结构表示一个队列,该队列缓冲的都是属于同一个源的分片。当IP协议收到第一个分片的时候创建一个分片队列并起一个timer计时分片超时处理。 offset表示分片偏移,因为该字段只有13bit,为了表示所有的字段偏移,该字段以8字节为单位。且MF=1,便宜字段0,是一个分片且是第一个分片;MF=1,便宜字段非0,是一个分片且是中间分片...

2010-07-21 20:29:37 117

原创 Linux协议栈之ICMP和IGMP传输协议

ICMP(Internet Control Message Protocol)和IGMP(Internet Group Management Protocol)fenbie用于网络侦错和组播,多播管理。如下一些常用的IP分组:224.0.0.1:该子网所有系统组224.0.0.2:该子网所有路由器组224.0.1.1:网络时间协议NTP224.0.0.9:路由协议RIP-2...

2010-07-20 22:09:27 374

原创 Linux协议栈之TCP传输协议(二)

TCP发起连接的过程:客户端                                                                                    服务器端  (State:closed)                                                                       (State:...

2010-07-20 21:09:25 114

原创 Linux协议栈之TCP传输协议(一)

面向连接的TCP协议(Transmission Control Protocol )是一种面向连接的流式传输协议,它通过三种机制来保证传输的可靠性:序列号,应答机制和超时重传。tcp中处理超时重传的函数有:tcp_do_transit:处理具体的重传工作;reset_xmit_timer:重新设置超时定时器;tcp_retransmit_time:使用指数退避算法重设定时器;t...

2010-07-20 20:44:13 168

原创 Linux协议栈之BSD和INET socket层(二)

BSD socket层几个函数的介绍:sock_alloc()获取一个inode结构,并初始化返回所需socket结构sock_release_peer()仅用于UNIX域sock_release()用于释放关闭一个套接字,调用sock_ops_release,sock_ops是一个proto_ops结构,是一个操作函数的集合;sock_close()call sock_relea...

2010-07-18 13:13:04 495

原创 Linux协议栈之BSD和INET socket层(一)

Linux的BSD和INET  socket层分别对应于ISO的表示层和会话层,其中有两个比较重要的数据结构:struct socket{ socket_state state; unsigned long flags; struct proto_ops *ops; struct inode *inode; struct fasync_struct *fasy...

2010-07-18 12:39:07 813

原创 Linux内核之物理页面的分配

物理页面的分配使用函数:static inline struct page * alloc_pages(unsigned int gfp_mask, unsigned int order) 参数gfp_mask表示分配的策略,order表示所需物理块的大小。gfp_mask作为下标查找数组node_zonelists[]决定具体的分配策略。 其具体分配的流程如下:1. 如果...

2010-07-14 21:47:27 430

原创 Linux内核之虚拟内存管理(二)

Linux把整个的虚拟存贮空间自上而下分为系统空间,堆栈空间,数据段和代码段。当系统访问页面异常时,cpu将失败的线性地址保存在CR2中。同时还会传来两个参数pt_regs和error_code。前者保存了异常发生前夕各寄存器的一个副本。 struct pt_regs { long ebx; long ecx; long edx; long esi; long edi;...

2010-07-14 20:56:10 244

原创 Linux内核之虚拟内存管理(一)

Linux内核对于虚拟内存的管理是以进程为基础的,每个进程都有自己的虚存空间。而系统空间是所有进程所共享的。对虚拟空间常用数据结构vm_area_struct来描述。 struct vm_area_struct { struct mm_struct * vm_mm; /* The address space we belong to. */ unsigned long vm_sta...

2010-07-13 22:19:57 196

原创 路由器和网关的区别

路由器工作在物理层,链路层和网络层。是多个互联网之间中继包,它与网关之间最大的区别是只能使用相同的协议进行数据包转发。 网关是一个协议转换器,它工作在OSI七层之中。而多协议路由虽然也能转发不同协议的数据包,但是他和单协议路由没有本质区别,无法像网关那样对数据包协议格式进行转换。...

2010-07-11 22:15:44 170

原创 Linux协议栈之系统调用

Linux TCP/IP协议栈对应于ISO七层参考模型分别为:应用层-------------应用系统表示层-------------BSD Socket层  socket.c会话层-------------INET Socket层 af_inet.c传输层-------------TCP/UDP  tcp.c/udp.c网络层-------------IP层   ip.c...

2010-07-11 22:10:43 143

原创 Android输入法之输入系统

Android通过 KeyInputQ在WindowMangerService中建立一个独立的线程InputDeviceReader,使用Native函数readEvent来读取Linux Driver的数据构建RawEvent,并放入到KeyQ消息队列中。 KeyInputQueue.java    Thread mThread = new Thread("InputDev...

2010-07-10 21:16:43 148

原创 Linux内核之虚拟内存地址映射

Linux通过地址映射将物理页面映射到4G的虚拟地址空间,其中3G以上是内核地址空间,而3G以下为用户地址空间。Linux中所有的进程将使用虚拟地址空间进行内存的管理和操作。 Linux内核的映射机制设计成三层,在页面目录和页面表中间增设了一层“中间目录”。页面目录为PGD,中间目录为PMD,而页面表为PT。PT中的表项PTE(page Table Entery)。而对于i386 CPU直...

2010-07-10 20:35:30 238

原创 Linux内核之物理内存管理

Linux内核对于内存的管理摒弃了i386复杂的段式管理,而是采用了页式管理。Linux把整个的物理内存空间化为成一个个单独的页面,每页占4K空间大小。Linux把所有页面链接到一个全局的数组mem_map[]中,mem_map的每一个元素都是一个指针指向page数据结构。系统中的每个物理页面都对应着一个page数据结构,并根据需要把这些页面划分为不同的管理区:ZONE_DMA,ZONE_NORM...

2010-07-10 20:03:25 115

转载 Linux内核解读入门

本文转自:http://topic.csdn.net/u/20100108/11/5422B656-B9CD-49F5-AD7A-8DA0AE9304AB.html 作者:longqiaojiang针对好多Linux 爱好者对内核很有兴趣却无从下口,本文旨在介绍一种解读linux内核源码的入门方法,而不是解说linux复杂的内核机制; (参考资料来源:飞凌 http://www.witech.

2010-01-11 16:30:00 315

原创 Clear case delete view method

Clear case is a software which was designed by IBM. It is a version control software using in Linux. Firstly I create a view:ct mkview -tag test_view /opt/test_viewBUt using ct rmview -tag test_

2009-08-07 19:27:00 451

ARM汇编手册(CHM格式的便于查找)

ARM汇编手册CHM格式的,便于查找,中文版。

2009-06-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除