以前在4.4系统上做个一个关于双开机logo的切换的需求,现在把一些当时的技术细节记录如下,以做后续参考:
作者: w.honee
SELinux简介
一、 SELinux 来源
SELinux 即Security-Enhanced Linux, 由美国国家安全局(NSA)发起, Secure Computing Corporation (SCC) 和 MITRE 直接参与开发, 以及 很多研究机构(如犹他大学)一起参与的强制性安全审查机制, 该系统最初是作为一款通用访问软件,发布于 2000 年 12 月(代码采用 GPL 许可发布)。并在Linux Kernel 2.6 版本后, 有直接整合进入SELinux, 搭建在Linux Security Module(LSM)基础上, 目前已经成为最受欢迎,使用
最广泛的安全方案.
二、SELinux 基本架构与原理
SELinux 是典型的MAC-Mandatory Access Controls 实现, 对系统中每个对象都生成一个安全上下文(Security Context),每一个对象访问系 统的资源都要进行安全上下文审查。审查的规则包括类型强制检测(type enforcement), 多层安全审查(Multi-Level Security), 以及基于角色 的访问控制(RBAC: Role Based Access Control)。
SELinux 搭建在Linux Security Module(LSM)基础上, 关于 LSM 架构的详细描述请参见文章 《 Linux Security Modules: General Security Support for the Linux Kernel 》,该文章在 2002 年的 USENIX Security 会议上发表。有完整的实现LSM 的所有hook function 。
SELinux 的整体结构如下图所示:
SELinux 包含五个基本组成:
- 用于处理文件系统的辅助模块, 即SELinuxFS
- 集成Linux Security Modules 的hooks sets
- Security Policy Database
- Security Label 验证模块
- Access Vector Cache (AVC), 访问向量缓存,以便提高验证速度
基本的访问流程如下图所示:
流程如下:
- 进程通过系统调用(System Call) 访问某个资源, 进入Kernel 后, 先会做基本的检测, 如果异常则直接返回
- Linux Kernel DAC 审查, 如果异常则直接返回
- 调用Linux Kernel Modules 的相关hooks, 对接到SELinux 的hooks, 进而进行MAC 验证, 如果异常则直接返回
- 访问真正的系统资源
- 返回用户态, 将结构反馈
Android 系统应用显示单位,密度及资源调用说明
1、 应用显示单位 dp、px、pt、sp 简介。
Android 应用在进行布局设计时候,经常用到各种单位,下面简单介绍一下各种单位及其应用范围:
dp(dip) -- 设备独立像素( device independent pixels ),是一种独立于设备的显示单元,其显示的大小根据设备的不同有所差异,在 Android系统中,是按照160dpi的像素作为参考值来匹配不同的PPI的设备的。
如:使用240dpi的设备,其使用1dp的值等于1.5px,其计算公式为 dp = px * (PPI / 160)。
px -- 像素( pixels ),是根据实际物理像素,其在不同的分辨率的设备上都是有相同的像素点数。
pt -- 点( point ),是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用;
sp -- 放大像素(scaled pixels),主要用于字体显示,是一个字体的显示单位。
注明:实际在apk布局设计中,使用dp适配不同的密度,同样尺寸的屏幕,可以保证拥有同样的显示大小,而使用px的,会呈现不同大小,因此,dp常用在布局设计当中,而px常用在需要补充布局的细节。
pt 用在打印,是在输出时候才会使用,而sp仅用于字体。
2、 Android 系统密度-density。
Android 系统常用的密度有120、160、240、320、480,其对应关系如下:
当屏幕density=480时,使用xxhdpi标签的资源
当屏幕density=320时,使用xhdpi标签的资源。
当屏幕density=240时,使用hdpi标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。
3、密度的计算方法:
通常是根据屏的物理尺寸和实际分辨率来计算的,其公式如下:
dpi = √(w*w + h*h) / 屏的尺寸
如:800 * 480 的 7 寸屏,其密度为:133.27,取其最接近的值为120 PPI。
4、ADB 修改density的方法。
在adb中输入 wm size 即可以查看分辨率,而输入wm density即可以查看密度。
使用wm density 160,即可以修改密度为160。
Windows平台个性化定制文件夹指南
现在有很多的应用程序将自己的所在文件夹做得很个性,方便用户的点击和查找,而如何制作这样子的个性化的文件夹呢?现在我来给大家说一下,常见的一些功能的制作方法。
Continue reading "Windows平台个性化定制文件夹指南"
单向链表标准写法(C格式)
我是任性的链表:
Continue reading "单向链表标准写法(C格式)"