- 博客(89)
- 资源 (3)
- 收藏
- 关注
原创 Android云手机关键性技术
有相当部分的应用,尤其是金融类的应用会检测系统环境是否是品牌手机,如果不是,部分功能是受限的。Android云系统不需要真实的运行在手机芯片上,云系统可以运行在服务器上,或者大算力的嵌入式设备上,然后通过虚拟机技术或者容器技术,在单一设备上运行多个Android云系统实例,从而兼顾可以性和成本。Android云系统常常用于安全办公,会使用视频会议应用进行远程会议,因此Android云系统需要拉取本地系统的摄像头,音频设备数据,然后通过云系统的网络与其他成员进行视频会。1、Android虚拟化。
2023-11-12 15:23:12
1387
5
原创 Android手机可信引导解决方案
1. 概述Android手机的可信引导过程,主要分为三部分,lk的可信,boot的可信,和system的可信;系统上电到lk的启动过程验证,因为和硬件联系紧密,基本都由各自硬件厂商完成. lk就是bootloader,它由Pre-loader 启动,该模块在android手机中只可由fastboot工具刷入设备,它的大小一般在1M以下,那么lk的可信就由Pre-loader定
2020-12-21 18:20:08
2295
2
原创 Android智能手机安全解决方案
1. 终端安全解决方案全景1.1. ANDROID系统框架预览 此外,鉴于许多硬件厂商不希望公开其设备驱动程序,GOOGLE在运行时库层对下屏蔽实现细节,对上提供统一接口增加了硬件抽象层. 1.2. ANDROID本身安全机制 Android系统不仅提供了开放的生态,而且针对自身特点在系统各层都提供安全机制,确保A
2020-12-21 18:19:55
3979
原创 基于容器原理(docker、lxc、cells)的Android 双系统设计概要
写在前面最近一两年预研加开发android双系统;中途用过不少开源代码或者研读过大牛BLOG,现开放双系统设计原理来回报社区。备注:我是在android6.0上实现的。这个项目的原型来自于,哥伦比亚大学虚拟化研究室的一篇论文(也有一个DEMO),后来一个以色列公司cellrox在2014年进行了商业化,2015年的时候浙大一个操作系统研究室也出了一个DEMO(名称叫Condroi......
2020-12-21 18:17:59
14497
68
原创 QEMU KVM 虚拟机移植之性能提高篇小结(android 虚拟机双系统方案)
一、提升性能核心要素1、将OPENGL 接口进行穿透调用,下面对opengl穿透做个小结2、在arm开发板上打开kvm特性,这个qcom&mtk都是实现了的,只需要打开开关即可二、ANDROID OPENGL 业务实现细节解释1、 OPENGL命令队列是确定了,可是命令的参数,有的是系统给的,有的是上一个命令计算的结果,例如纹理操作,首先调用API创...
2020-12-21 18:17:47
9134
15
原创 TPM2.0读书笔记
三种关联性技术1、Intel TXT技术2、TrustZone技术3、AMD PSP技术TPM实体1、持久性hierarchy TPM_RH_PLATFORM(平台) TPM_RH_OWNER(存储) TPM_RH_ENDORSEMENT(背书) 重启后不清空,但可以由管理员清空2、零时性hierarchy TPM_RH_NULL(空) 重启后清空3、词典锁TPM_RH_LOCKOUT 重启后不清...
2018-03-04 18:27:26
4419
2
原创 EFI secure boot
一、EFI secure boot 是EFI BIOS中的一个子标签,同时EFI BIOS提供证书管理功能,系统可以同时拥有多个证书供用户选择,EFI只能执行经过正确签名的固件 EFI 证书种类比较多:PK,KEK,db,dbx 和 MOK *一般PC的EFI(例如我的dell)都植入了Microsoft Windows UEFI Driver Publisher's c
2017-11-20 10:01:48
4280
原创 Bionic 学习
一、基本概况 1、不与其他libc库兼容,有自己的动态链接器(linker) 2、不支持c++异常抛出 3、一共有libc(c基础库)、libm(数学库)、libdl(假的链接库,实际是linker)、libstd++(C++功能库)、 libthread_db(多线程调试库)、linker(链接器)二、系统调用 1、arm c
2017-07-24 18:17:04
885
转载 namespace 理解
当调用clone时,设定了CLONE_NEWPID,就会创建一个新的PID Namespace,clone出来的新进程将成为Namespace里的第一个进程。一个PID Namespace为进程提供了一个独立的PID环境,PID Namespace内的PID将从1开始,在Namespace内调用fork,vfork或clone都将产生一个在该Namespace内独立的PID。新创建的Namespa
2017-06-15 16:52:31
946
原创 Cgroup 理解
一、综述 1、cgroup 可以控制进程组的资源(cpu,memory,i/o等) 2、cgroup 采用树型结构来控制进程组的资源 3、cgroup 利用资源子系统来分割资源 4、cgroup 是lxc、docker等虚拟化技术的基石二、cgroup基本概念 1、task任务,就是系统中的一个进程 2、con
2017-02-04 16:09:29
1447
原创 SEAndroid 知识点
一、DAC1、自主访问控制,Linux上的安全模型叫DAC,进程的权限与执行它的用户的权限一致,file针对所有者、所有者组、其他用户制定相关权限二、MAC1、强访问控制,SELinux上的安全模型叫MAC,主体与客体之间制定详细的访问策略 (例如:主体为进程,客体为文件,二者之间制定详细的访问策略)2、相比DAC,更自由,更安全,更复杂三、SELinux 的语法
2017-01-19 11:47:40
363
原创 art知识简要概括
一、GC分类 1、kGcCauseForAlloc 当没有足够的内存分配时触发 2、kGcCauseBackground 当已使用的内存超过最大值时触发 3、kGcCauseExplicit 当使用System.GC时触发二、GC守护线程 1、ReferenceQueueDaemon:引用队列守护线程。我们知道,在创
2016-11-17 20:37:37
641
原创 android 系统基础知识
一、Activity 启动模式Activity有四种启动模式:standard、singleTop、singleTask、singleInstance。可以在AndroidManifest.xml中activity标签的属性android:launchMode中设置该activity的加载模式。standard模式:默认的模式,以这种模式加载时,每当启动一个新的活动,必定会构造一个新的Ac
2016-09-05 10:41:49
432
原创 android Binder 学习
一、面向过程调用与面向对象调用的区别 1、面向过程调用同一时刻只能服务一个客户,而且该过程必须具有锁功能,如果有其他客户想要访问,则需要等待前一客户完成操作。 2、面向对象则能同时服务多个客户,类似把过程调用进行了多次复制供多个客户使用。二、为什么需要Binder驱动 1、为了进行进程间通讯,传统的做法是socket、pipe(匿名管道)、f
2016-04-24 19:07:52
556
原创 Watchdog
一、简介软件狗。类似硬件狗,硬件狗是被动等“喂”,系统主要线程主动调用硬件接口,告诉系统本线程是正常的。但android 这种framework层中的软件狗本身是一个线程,会主动询问系统关键线程和服务是否正常。android抛弃硬件狗,大概是因为采用硬件狗的方式会使每个系统线程臃肿、复杂,且不能询问“死”的系统资源;采用软件狗的方式不仅能监视活着的线程,还能监视死的系统资源,并且将监视功能集中
2016-04-18 16:46:43
1349
原创 opengl 摘要
一、创建opengl工程 1、第一步设置像素格式。如支持双缓冲,设置颜色模式,如是rgba,还是颜色索引(需调色板),设置模板缓冲区的特征值 2、第二步创建绘制环境,且自动创建世界坐标系,将设备句柄传入,系统创建画布。 世界坐标系是固定的,屏幕的左下角是原点,向上为Y轴正方向,向右为X轴正方向,向屏幕里面是Z轴负方向二、投影变换,视图变换,视口变换 这些变
2015-11-12 14:50:46
563
原创 android 绘制过程摘要
1、没有硬件加速的UI绘制过程:在Android应用程序进程这一侧,每一个窗口都关联有一个Surface。每当窗口需要绘制UI时,就会调用其关联的Surface的成员函数lock获得一个Canvas,其本质上是向SurfaceFlinger服务Dequeue一个Graphic Buffer。Canvas封装了由Skia提供的2D UI绘制接口,并且都是在前面获得的Graphic Buffer上
2015-10-22 23:09:34
591
转载 armv8 摘要
作者:蜗蜗 发布于:2015-7-7 22:31 分类:ARMv8A Arch1. 前言ARMv8(当前只有A系列,即ARMv8-A)架构,是ARM公司为满足新需求而重新设计的一个架构,是近20年来,ARM架构变动最大的一次。它引入的Execution State、Exception Level、Security State等新特性,已经和我们对旧的ARM架构的认知,有很大差距了。
2015-09-21 14:01:52
564
原创 VirtIO 读书笔记
前言:提两个概念: 1.完全虚拟化:在完全虚拟化 中,来宾操作系统运行在位于物理机器上的 hypervisor 之上。来宾操作系统并不知道它已被虚拟化,并且不需要任何更改就可以在该配置下工作。 2. 半虚拟化:来宾操作系统不仅知道它运行在 hypervisor 之上,还包含让来宾操作系统更高效地过渡到 hypervisor 的代码.大致架构: 前端驱动程序(在
2015-09-18 08:53:30
906
原创 Android 读书摘要
一 刷机 进入 system.img所在目录 1) 进入刷机模式: adb reboot bootloader fastboot format cache fastboot format userdata 2) 刷image进手机:sudo fastboot -w flashall 或者分别刷入 fastboot flash
2015-09-06 14:13:54
499
原创 虚拟化读书摘要
armhf是什么在Ubuntu 12.04和Debian里,除了arm, armel,还出现了一个名为armhf的版本。这个东西是什么?众所周知,armel是目前主要的ARM ABI。armhf则是armel的一个变种,主要区别在浮点计算上。在armel中,关于浮点数计算的约定有三种。以gcc为例,对应的-mfloat-abi参数值有三个:soft,softfp,hard。
2015-09-02 09:31:36
1187
原创 Makefile 备忘录
一、主体框架target... : prerequisites ...command ... ...-------------------------------------------------------------------------------Target:目标文件,可以是Object File,也可以是执行文件。还可以
2015-08-27 10:43:55
453
原创 HTML5 在cad领域中的研究
1、html5简介优点:跨平台,支持各种浏览器(activex只有极少数浏览器支持),下一代html协议。缺点:目前仅支持二维。AutoCAD的网页cadactivex版本将会下架,被其他版本取代2、DEMO的研究 1、功能目前实现功能:绘制功能:画线,画四边形,画弧,画圆,画椭圆,画B样条曲线,画文字,画标注,画半径标注编辑功能:删除测量功能:测面积功能
2015-07-06 16:03:35
9150
14
原创 倘若音乐(Android)
来自个人百度空间的文章---2014.4.23一、立项首先遇到的第一个问题就是取名字,自个儿脑子没货,就百度之,四处逛逛,逛到"LOFTER"时看到一篇文章的开头写到"倘若迷路,我願墜入桃花深處..."。"倘若"名字挺好听的,遂取下这么个有点文艺的名儿。前期是仿照"多米音乐"做,后期根据技术熟练度改进。老办法先看下网上有没有源
2015-07-06 16:00:54
473
原创 Android 知识点
来自个人百度空间的文章---2014.5.5二、项目中的知识点 1、Activity 知识点 (1)生命周期 onCreate(创建时被调用) onStart(创建或者从后台回到前台需要) onRestart(从后台回到前台需要) onResume(创建或者从被覆盖,后台回到前台需要) onPause(被覆盖,锁屏时被调用) onStop(退出,进入另一个a
2015-07-06 15:58:50
447
原创 傅里叶变换
来自个人百度空间的文章---2011.2.28一.离散傅里叶变换 任何信号都可以表示成不同频率的正余弦叠加起来。。 基本公式如下: 其中 二.离散傅里叶变换在数字图像的中的应用 图像的中的像素按矩阵存储,那么单个像素与其周围的其他的像素的差异叫做该点的频率,也叫做灰度梯度。所以图像也可以使用
2015-07-06 15:56:04
458
原创 人月神话-读书笔记
来自个人百度空间的文章---2013.11.241、编程方法 1/3设计 1/6编码 1/4构件测试 1/4系统测试 模块和接口一定清晰可见 分清有多少入口逐一检查2、管理方法 人!=时间 质量==生产效率3、专业语言 乐观主义是职业病 程序
2015-07-06 15:52:07
504
原创 数字图像处理-算法学习
来自个人百度空间的文章---2012.2.23一.点运算(像素变换)1.线性变换 原理:f=a*F+b; 效果:典型的有反色的作用。2.阀值运算 原理:若FX时 f=255; 效果:草图的感觉3.窗口运算 原理:类似阀值运算,不过分三段,中间的一段不变;效果:能去掉背景4.灰度拉伸 原理:若xx2 则
2015-07-06 15:48:54
5208
原创 远程视频基础
来自个人百度空间的文章---2011.2.13一、位图文件结构位图文件由三部分组成:文件头 + 位图信息 + 位图像素数据1、位图文件头。位图文件头主要用于识别位图文件。以下是位图文件头结构的定义:typedef struct tagBITMAPFILEHEADER { // bmfh WORD bfType; DWORD bfSize;
2015-07-06 15:46:05
486
原创 计算机图形学-多边形填充法
来自个人百度空间的文章---2012.3.31种子填充法原理:以一点为基准,如果点在多边形内则填颜色,向四周扩散,如此递归.程序:略边界标志填充法原理:对于每一条扫描线和每一条多边形边的交点(xi,yi),将该扫描线上交点右方的所有象素取补,依次对多边形的每条边作此处理,直到最终完成填充。这里要介绍一下取补的定义,假设某点的颜色是M,则对该点
2015-07-06 15:39:56
1787
原创 布尔运算-二维
一、概念 二维图形的布尔运算是两个多边形的交,差,并运算。 二维图形的布尔运算说穿了就是将产生的新边和原来的边归类。二、基本原理 1、首先一点必须是两个闭合的环做运算。 2、求出两个多边形边与边的交点。 3、懂得怎样判断点是否在多边形里面 4、若求交:交点,其他点在另一个环中。
2015-07-06 15:37:27
4277
原创 样条曲线
来自个人百度空间的文章---2012.3.1一、概念 所谓样条就是根据给定的几个点所获得的光滑曲线,分插值样条(用于动画)和逼近样条(构造物体的表面)。 常用的样条曲线就是: 非均匀有理 B 样条曲线(NURBS)。二、特点 拟合点:曲线必须通过的点 特征多边形(控制多边形):样条曲线是由一些折线组成的多边形构造出来的。简单地说,以数值计
2015-07-06 15:28:03
1960
原创 计算空间中两条线段的最小距离
来自个人百度空间的文章---2012.2.19一、基础知识 本来是空间三维坐标系,只是为了便于理解所以采用一般的2维坐标,其实是一样的 1、设AB线段 A(A.x,A.y),B(B.x,B.y),在AB上有一点为Q, Q.x=A.x+s*(A.x-B.x); Q.y=A.y+s*(A.y-B.y);
2015-07-06 15:24:32
4360
原创 使用叉积判断两条线段是否相交
来自个人百度空间的文章---2012.2.19一、基础知识 求两条线段是否相交首先要求两条线段通过快速排斥实验,即做出能包含两条线段的最小的矩形,既是以两条线段作为对角线的两个矩形,判断两个矩形是否相交,若两个矩形不能同时在x方向和y方向相交,则两条线段不可能相交,通过了快速排斥实验后再判断两条线段是否互相跨立,既是一条线段的两个端点是否在另一条线段所在直线的
2015-07-06 15:20:41
1564
原创 计算多边形的面积
来自个人百度空间的文章---2012.2.19一、基础知识 叉积:向量A、B,AXB=|A|*|B|*SIN=A.x*B.y-A.y*B.x.|AXB|=三角形的面积的两倍,|AXB|有正负之分,叉积的和有中和计算两遍的地方,基于这些属性可以将多边形的面积分解成很多三角形的面积的和,该原理又称海伦公式。二、C++代码 {优快云:CODE
2015-07-06 15:17:33
721
原创 判断点是否在多边形中
来自个人百度空间的文章---2012.2.19一、基本知识 以该点为起点,做平行于X轴的,向X轴的正方向的射线,计算该射线与多边形的边相交的次数,如果是奇数则在多边形的里面,否则反之。 然后需要考虑边界问题,1、如果点在多边形的边上则认为是多边形里面,这条在实际应用中可忽略,因为在图形上多边形的边是一个像素宽度的,很难点到那里,
2015-07-06 15:12:38
432
原创 使用点积投影法求点到线段的距离
来自个人百度空间的文章---2012.2.19引子:由于面试中需要问到这些问题,所以对一些平面几何的算法做个总结,而且由于有个面试官,竟然说使用叉积可以算点到线段之间的距离,这个当时我信以为真。即使面试中也保持思维活跃起来,不要滔滔不绝的讲,搞清楚面试官到底要干什么,一定要寻个为什么。正文:一、基本知识点 点积:假设向量A,B.点积A*B=|A|*|B|*
2015-07-06 15:07:19
4127
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人