用户栈和内核栈

2016-4-22 chenhui 其他

current 是一个宏,这是一个很神奇的宏,无论你现在在什么时候,只要调用这个宏,就能得到当前进程的进程描述符。 关于 current 的一些知识,可阅读:Linux 的启动过程详解(汇编部分) 这篇文章对 current 的获取进程描述符的原理进行了大概的讲解,但只有这些是不够的,但如果把所以的东西都写在那里,又觉得啰嗦,所以我们需要通过本文来写完剩余的部分。 ...

阅读全文>>

评论(0) 浏览(235)

super_block、file、dentry、inode 详解

2016-4-21 chenhui 文件系统

 Linux 的虚拟文件系统中,super_block、file、dentry、inode 这四个结构体是非常重要的,要了解 VFS,就必须了解他们。 本文详细讲解这四个结构体的作用和来源。 dentry 称为目录项描述符,每一个文件都会有这么一个目录项描述符,但是一个文件只会有一个目录项描述符。他的作用是,VFS 通过 dentry 来形成树形的文件系统目录结构...

阅读全文>>

评论(0) 浏览(264)

Servlet

2016-4-17 chenhui Java web

Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程: Servlet 通过调用 init () 方法进行初始化。 Servlet 调用 service() 方法来处理客户端的请求。 Servlet 通过调用 destroy() 方法终止(结束)。 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。   ...

阅读全文>>

评论(0) 浏览(14)

JSP

2016-4-17 chenhui Java web

以下步骤表明了 Web 服务器是如何使用JSP来创建网页的:     就像其他普通的网页一样,您的浏览器发送一个 HTTP 请求给服务器。     Web 服务器识别出这是一个对 JSP 网页的请求,并且将该请求传递给 JSP 引擎。通过使用 URL或者 .jsp 文件来完成。     JSP 引擎从磁盘中载入 JSP 文件,然后将...

阅读全文>>

评论(0) 浏览(9)

系统信息、PM、AM

2016-3-19 chenhui 零散笔记

系统信息通常可以通过 android.os.Build 和 SystemProperty 两个类进行获取。 andorid.os.Build 保存的主要是一些硬件信息和编译信息,可直接通过成员获取,比如: Build.BRAND :Android 系统定制商 Build.PRODUCT :手机产品名 .. ...

阅读全文>>

评论(0) 浏览(170)

Binder 驱动层数据结构之间的关系

2016-3-16 chenhui Binder

先上神图: 然后再来解释这张神图。 首先,不管是 Client 还是 Service,他都打开 /dev/binder 来使用 Binder 通信,都有一个 binder_proc 结构体。 binder_proc 有两个红黑树,一个存放 binder_node,另一个存放 binder_ref。前...

阅读全文>>

评论(0) 浏览(153)

块设备的读写

2016-3-12 chenhui 设备驱动

阅读本文前,请先阅读:文件读写和页缓存 。这篇文章详细解释了文件读写的缓存,而在这篇文章的结尾,也因为涉及到块设备的读写并没有继续写下去,本文也算是对这篇文章的续写吧! 因是续写,所以先要续缓存页的回写步骤: 遍历 address_space 中的每一个脏页 把所有相邻的脏页加入一个 bio 对象, 提交 bio...

阅读全文>>

评论(0) 浏览(263)

RTTI 和反射

2016-3-11 chenhui Java

Java 允许程序在运行时识别和使用类型信息,这里主要指的是对象和类的信息。 有两种方法来获取类型信息:RTTI 和反射。 RTTI 无处不在,最常见的就是对多态的支持。 在 Java 里,每一个类都有一个 Class 对象来描述他。我们知道,Java 程序编译后每一个类都会生成一个 class 文件,Java 虚拟机在加载...

阅读全文>>

评论(0) 浏览(155)

StringBuider

2016-3-11 chenhui Java

在 Java 中,我们可以用 String 类来定义一个字符串,并且可以任意修改他的内容。这看起来,要比 C 语言中的 char * 好用多了。 但实际上,String 虽然用起来方便,但是其本质上和 char * 相同都属于不可被修改的字符串。我们对 String 的修改,实质上都是新创建了一个 String 对象。 在我们对 String 对...

阅读全文>>

评论(0) 浏览(136)

异常

2016-3-11 chenhui Java

异常分为两步:抛出异常和捕获异常。 我们可以通过如下方法来抛出异常: if (t == null) throw new NullPointerExecption(" t == null"); throw 是抛出异常关键字,跟在他后面的是一个对象,这个对象表明了这个一个什么样的异常。如上 NullPointerExecption  ...

阅读全文>>

评论(0) 浏览(128)

容器

2016-3-11 chenhui Java

容器的作用是保存对象,根据保存方式的不同,Java 容器可分为 Collection 和 Map,这两个都是接口,前者保存一组服从某些规则的对象,后者是根据键值对来保存对象。 Collections 常见的子接口有 List、Queue、Set:List 是顺序保存对象(类似数组),Queue 是先进先出,Set 不允许保存相同的元素。他们本身也只是接口,其中最常用到的是...

阅读全文>>

评论(0) 浏览(136)

抽象类、接口

2016-3-11 chenhui Java

有时候,我们希望存在这样一个类:他不能被实例化为对象,他的存在是用来描述某一些类(子类)的共性,提供一些通用的接口。 这个类,就是抽象类。 与抽象类对应的,就是抽象方法。所谓的抽象方法,就是只有方法的定义,但没有方法体。这很容易理解,在 C/C++ 中,这就是函数指针。 abstract void f(); ...

阅读全文>>

评论(0) 浏览(147)

内部类

2016-3-11 chenhui Java

所谓的内部类,就是定义在另一个类里的类,他只能被外部类所访问,相对应的,他也可以访问外部类的成员变量和方法,即使他们是私有的。内部类的原理就在于,当外部类的对象创建内部类对象时,内部类对象会创建一个引用来指向外部类对象,我们可以在内部类对象中使用 外部类.this 来得到对外部类对象的引用。如果没有外部类对象,那么他就会报错。 有时候我们会想要在其他的类中使用这个...

阅读全文>>

评论(0) 浏览(139)

面向对象,类的封装、继承与多态

2016-3-11 chenhui Java

和 C++ 比较起来,Java 的面向对象更加纯粹,C++ 的面向对象只是其支持的一个特性,而在 Java 中则无处不在,除了基础数据类型(int、char 等)外的所有数据类型都是类,并且还有一点和 C++ 不同的是,他们都有一个相同的根类——Object 类,这么做的好处是所有对象都有一个共同接口。对于 C++ 而言,由于他的操作更加底层,所有不需要这个东西,相应的,C++ 会承担更多的风险。...

阅读全文>>

评论(0) 浏览(292)

2016-3-8 chenhui C++

C++ 和 C 相比较起来,最大的差别仿佛就是 C++ 支持面向对象编程,为什么说是仿佛?这是因为我认为 C 也能使用面向对象的思想来进行编程,只把使用类实现的面向对象称作面向对象编程是不对的。 但不管如何,类的支持始终都是 C++ 最重要的一个特性,既然接触了 C++,那么就要了解了解类这个玩意。 C++ 一开始是为了扩展 C 而诞生的,所以 ...

阅读全文>>

评论(0) 浏览(259)

ABD 常用命令

2016-3-2 chenhui 零散笔记

ADB 原生常用命令 adb shell     进入 Android 命令行 adb install -r x.apk     安装应用程序 adb push <local> <remote>     把 local 指向的本地文...

阅读全文>>

评论(0) 浏览(133)

Window 和 WindowManager

2016-3-1 chenhui

在 Andorid 中,Window 代表一个窗口,他通过 WindowManager 进行访问、创建和管理。 WindowManager 是一个客户端,他有一个对应的服务端叫做 WindowManagerServer,他们之间通过 Binder 进行通信。 Android 所有的 View 都是通过 Window 来显示的(PhoneWindow),不管是 Activity,...

阅读全文>>

评论(0) 浏览(137)

ViewDragHelper

2016-2-29 chenhui 零散笔记

ViewDragHelper 是一个简化 ViewGroup 实现子 View 的拖动操作的类,下面先给出一个使用 ViewDragHelper 的 ViewGroup 的框架: public class MyViewGroup extends FrameLayout { ViewDragHelper vdh; Callba...

阅读全文>>

评论(0) 浏览(184)

滑动冲突

2016-2-26 chenhui 滑动

当内外两层 View 同时可以滑动时,就会容易产生滑动冲突,也就是说有一个 View 无法进行滑动。 一般来说,滑动冲突会发生在如下两种情况: 外部滑动方向和内部滑动方向不一致,如外面一个 ScrollView,内部一个 ListView。一个左右滑动另一个上下滑动,这会冲突。 外部滑动方向和内部滑动方向一致,比如内外两个 ScrollView。...

阅读全文>>

评论(0) 浏览(129)

根 View 和 View 树的绘制过程

2016-2-26 chenhui Surface

ViewRoot 和 ViewImpl 是非常重要的两个类:前者由 ViewRootImpl 类实例化,是 WindowManager 和 DecorView 的连接器;后者则作为 Activity 的根 View 存在。 Activity 在绘制他的布局时,其流程从 ViewRoot 的 performTraversals() 方法开始,他一次调用 performMeasure()...

阅读全文>>

评论(0) 浏览(166)

Copyright ©2015-2016 freehui All rights reserved