自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

喝咖啡的IT羊专栏

记录新成长之路的历程

  • 博客(17)
  • 收藏
  • 关注

翻译 Graphic --- Android

图形Android的框架为2D和3D提供了各种各样的图形着色APIs与厂家实现的图形驱动进行交互,所以明白这些APIs在更高一层如何工作是很重要的。这页介绍了那些建立在图形硬件抽象层上的驱动。应用开发者在屏幕上绘制图片有两个方法:使用Canvas或OpenGL。 更详细的关于Android图形组件的描述,可以查看系统级图形架构。androd.graphics.Can

2014-12-08 15:55:06 1382

翻译 Android 4.4 图形架构

图形架构每一个开发者都应该知道Surface, SurfaceHolder, EGLSurface, SurfaceView, GLSurfaceView, SurfaceTexture, TextureView 以及 SurfaceFlinger。这篇文章主要描述了Android系统级图形架构的必要元素,以及如何被应用框架以及多媒体系统应用。主要集中说明图形缓存如何在系统

2014-12-02 13:39:02 11919 5

原创 Linux Kernel Development 笔记(九)内核同步方法

Linux内核提供了一些同步方法,可以使开发者开发出高效并且是无race condition的代码。下面就讨论这些方法:原子操作(Atomic Operations)因为大部分的其他同步方法都基于此原子操作的方法创建的,故此下面首先讨论原子操作的同步方法。原子操作提供了不被打断的,原子的指令。就如原子被看成是一个不可被分割的物体一样,原子操作也是不可分割的指令。内核提供了两套原子操作,一个

2013-04-11 11:52:55 1033

原创 Linux Kernel Development 笔记(八)内核同步的介绍

在共享内存的应用中,开发者必须确保共享资源在并发访问时的安全性,内核也不例外。因为如果多线程操作同时的访问以及修改数据,则一个线程可能就会覆盖或访问一个处于不一致状态的数据资源。因此保护很重要。并发访问共享数据很容易引起不稳定,让调试以及跟踪问题变得困难,所以正确的访问共享数据是很重要的。访问和操作共享数据的代码路径称为关键区域(critical regions)。通常多线程同时访问同一资源是

2013-04-01 12:05:45 680

原创 Linux Kernel Development 笔记(七)下半部处理以及延迟工作

中断处理是一种很重要的操作系统中的一部分,是一种用以处理硬件中断的内核机制。但因为中断处理的各种限制,故此其只能形成中断处理中的前半部分。以下是中断处理的限制:1. 中断函数是异步的,因此会中断其他可能很重要的代码,包括别的中断。因此为了防止停顿被中断的代码过久,中断处理需要越迅速越好。2. 中断函数运行时,最好的情况下是禁止当前的中断,最坏的情况是禁止处理器的所有中断。因为会禁止导致硬件

2013-03-29 10:14:11 991

原创 Linux Kernel Development 笔记(六)中断以及中断处理

众多操作系统的内核都有一个核心的任务,就是管理硬件和机器之间的连接(硬盘,光碟,按键,3D处理器等)。要实现这个任务,内核必须单独的与每一个硬件通信。基于处理器的高速运行速度比众多硬件都要快速的现状,让处理器来对硬件发出请求并等待硬件响应是一个不理想的做法。相反,处理器应该可以自由的去处理别的事情,只有当硬件真的完成其工作并需要通知处理器的时候再让处理器回来工作。两种方式可以让此方式实现,其中一种

2013-03-25 17:44:26 810

原创 Linux Kernel Development 笔记(五)内核数据结构

Linux提供了内建的数据结构以及基本元素供内核开发者使用,并以此鼓励代码重用,这里重点讨论:Linked lists, Queues, Maps, Binary Trees。Linked lists:Linked lists是Linux内核中最普遍最简单采用的一种数据结构。它是一种存储以及管理一系列元素(成为List的节点)的数据结构。它是动态创建的,其元素也是动态插入到列表的,而不

2013-03-18 14:54:48 1633

原创 Linux Kernel Development 笔记(四)系统调用

现在的操作系统,都会提供一套可以让用户态的进程用来与系统交互的接口。该接口给予应用受控的硬件访问能力,创建新进程以及与之沟通的能力,以及获取系统其他资源的能力。这些接口就像用户态与内核态的信使,应用借着这些信使来向内核提出请求,而内核则满足这些请求。系统调用提供了用户空间进程与硬件之间的一个中间层,主要满足了三个目的:1. 给用户态的进程提供了一个抽象的硬件接口,让用户可以在不用知道具体的硬件

2013-03-12 14:42:33 865

原创 Linux Kernel Development 笔记(三)进程调度

进程调度是内核一个控制哪个进程,什么时候,如何运行的一个很重要的子系统。进程调度把有限的处理器时间在可运行的进程中进行分配,是多任务操作系统的基础。调度背后的原理很简单,就是如何最有效的利用处理器时间。多任务操作系统是一个能同时交叉执行多个进程的系统,可以让单处理器系统看上去多处理器系统一样工作。多任务分为协助式多任务以及抢占式多任务。Linux属于后者,就是说可以强迫正在运行的进程定制并让新

2013-03-08 10:58:31 1035

原创 Linux Kernel Development 笔记(二)进程

进程是在运行中的程序,但进程又不仅仅只是执行中的代码,还包括一套资源,包括文件,传递中的信号,内部内核数据,进程状态,一个内存地址空间,一个或多个执行线程以及含有全局变量的数据段。线程是进程中的活动单元,一个线程包含唯一的PC指针,进程堆栈以及一套CPU寄存器。内核调度是以线程为单位而不是进程。Linux有唯一的线程实现方式,它并不区分线程和进程,对于Linux来说,线程是一种特殊的进程类型。在现

2013-03-06 15:18:08 698

原创 Linux Kernel Development 笔记(一)Linux 内核特点

Linux 内核是跑在内核态的,它与用户态的程序,存在重要的区别,这些区别罗列如下:1. 内核既不能使用标准C lib也不能使用标准C Headers    主要原因是速度以及大小,内核自有自己一套库函数,同时也只能引用内核自身的头文件。2. 内核是GNU C编写的    内核不是采用标准的ANSI C写的,而是采用GNU C标准,采用了ISO C99以及GNU的一些扩展特性。如i

2013-03-05 12:05:37 1025

原创 MTK10A 小记

最近因为要使用6276的代码,故此比较仔细的研究了一下其窗口机制。当前我看到的代码版本是10A。10A的窗口机制采用了一种比较新颖的方式,就是采用树形结构来管理窗口,同时还引入了分组概念。从整体架构看来,更接近于MVC模式了。以前09A之前的代码,都是基于单窗口的管理模式,所有的窗口都基于History 栈的管理,进入一个新窗口就把前一个窗口压入History 栈,待该窗口关闭后,又从该栈中出栈上

2012-01-30 23:31:23 605

原创 模式设计笔记

模式设计,说白了就是沿用前人和自身以前的经验,把经验化为模板,套用到当下遇到的问题中,从而可以快速有效的解决问题。随着设计模式阅读的进展,我会记录重点原则以及模式的应用。设计模式的原则有:1. 辨识你问题中变动的部分,把它与问题中不变的部分区分开来。在分析问题时候,应该需要时刻的把问题归类,哪些是会变动的,那些是不变的,对于目前不能确定的部分,也应把其归类为可变部分,哪怕后期的确是属于不变

2012-01-07 22:59:50 352

原创 MTK复习笔记二

MTK的GUI系统还是有点意思的。其GUI一共分为三层。最底层为GDI库以及Pixtel库。中间一层为GUI层,提供基本的控件以及显示操作。最上一层为WGUI层,该层包含许多窗口模板,例如Category Screen。还包含了Draw Manager,以及Touch Screen。Touch Screen是一个比较特殊的存在。早期的MTK的GUI的触摸区域是以焦点控件来触发的,而现今大部分的触屏

2012-01-06 22:03:37 823

原创 MTK 复习笔记一

没想到那么快就要去新公司,本希望在好好闭门学学Android。没想到去新公司先要捡回MTK的东西,那么好吧,重新复习一遍吧,都2年没怎么碰过了。MTK的架构其实有4大层次,最上一层为MMI层,此层包括各种框架已经应用(例如GUI框架,字体引擎等),下一层为L4层,此层作为MMI层与协议以及驱动通信的一扇大门。L4层细分为L4A以及L4C,L4A是一层抽象层,用来接收来自MMI层的请求,然后解释并传

2012-01-06 16:32:43 1909 1

原创 重温Java的笔记(一)

为了学好Android,只好重温Java了。拿起Thinking in Java的书,首先看到的是OOP的介绍,看来,几乎大部分的书籍对于OOP的介绍都差不多。OOP最重要的离不开:继承,多态以及数据封装。数据封装,最主要是为了:灵活以及隐藏。灵活是为了让使用此类的用户在类做修改的时候,而不用去修改自己的代码。隐藏的目的是为了保护自身的代码不会受到用户的影响。继承:主要是为了让用户可以重用

2012-01-04 22:58:39 347

原创 新开始

工作了9年了,一直从事手机软件开发,发现到今天,自己对于很多新技术已经落伍了。从新出来找工,才发现自己对于一些公司是价值很低的,就因为自己没有新技术的经验。虽然自己很不认同这些贬低自己价值的公司的看法,但我也深刻的意识到,自己如果不掌握新技术,新知识的话,以后很难服众。技术是底气,没有底气,就算再有见识,再有创新,也难以成功。在我不能依靠别人技术作为自己的底气的时候,我只能武装自己,来增强自己的底

2012-01-04 22:34:10 289

空空如也

空空如也

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

TA关注的人

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