当前位置: 首页 > news >正文

网站做视频怎么赚钱的浅谈电子商务网站建设与管理论文

网站做视频怎么赚钱的,浅谈电子商务网站建设与管理论文,武昌网站制作建设,南宁网站开发公司Android系统庞大且错综复杂#xff0c;Gityuan带领大家初探Android系统整体架构#xff0c;一窥其全貌。一、引言本文作为Android系统架构的开篇#xff0c;起到提纲挈领的作用#xff0c;从系统整体架构角度概要讲解Android系统的核心技术点#xff0c;带领大家初探Andro… Android系统庞大且错综复杂Gityuan带领大家初探Android系统整体架构一窥其全貌。一、引言本文作为Android系统架构的开篇起到提纲挈领的作用从系统整体架构角度概要讲解Android系统的核心技术点带领大家初探Android系统全貌以及内部运作机制。虽然Android系统非常庞大且错综复杂需要具备全面的技术栈但整体架构设计清晰。Android底层内核空间以Linux Kernel作为基石上层用户空间由Native系统库、虚拟机运行环境、框架层组成通过系统调用(Syscall)连通系统的内核空间与用户空间。对于用户空间主要采用C和Java代码编写通过JNI技术打通用户空间的Java层和Native层(C/C)从而连通整个系统。为了能让大家整体上大致了解Android系统涉及的知识层面先来看一张Google官方提供的经典分层架构图从下往上依次分为Linux内核、HAL、系统Native库和Android运行时环境、Java框架层以及应用层这5层架构其中每一层都包含大量的子模块或子系统。上图采用静态分层方式的架构划分众所周知程序代码是死的系统运转是活的各模块代码运行在不同的进程(线程)中相互之间进行着各种错终复杂的信息传递与交互流从这个角度来说此图并没能体现Android整个系统的内部架构、运行机理以及各个模块之间是如何衔接与配合工作的。为了更深入地掌握Android整个架构思想以及各个模块在Android系统所处的地位与价值计划以Android系统启动过程为主线以进程的视角来诠释Android M系统全貌全方位的深度剖析各个模块功能争取各个击破。这样才能犹如庖丁解牛解决、分析问题则能游刃有余。二、Android架构Google提供的5层架构图很经典但为了更进一步透视Android系统架构本文更多的是以进程的视角以分层的架构来诠释Android系统的全貌阐述Android内部的环环相扣的内在联系。系统启动架构图图解Android系统启动过程由上图从下往上的一个过程是由Boot Loader引导开机然后依次进入 - Kernel - Native - Framework - App接来下简要说说每个过程关于Loader层Boot ROM: 当手机处于关机状态时长按Power键开机引导芯片开始从固化在 ROM里的预设代码开始执行然后加载引导程序到 RAMBoot Loader这是启动Android系统之前的引导程序主要是检查RAM初始化硬件参数等功能。2.1 Linux内核层Android平台的基础是Linux内核比如ART虚拟机最终调用底层Linux内核来执行功能。Linux内核的安全机制为Android提供相应的保障也允许设备制造商为内核开发硬件驱动程序。启动Kernel的swapper进程(pid0)该进程又称为idle进程, 系统初始化过程Kernel由无到有开创的第一个进程, 用于初始化进程管理、内存管理加载Display,Camera DriverBinder Driver等相关工作启动kthreadd进程pid2是Linux系统的内核进程会创建内核工作线程kworkder软中断线程ksoftirqdthermal等内核守护进程。 kthreadd进程是所有内核进程的鼻祖。2.2 硬件抽象层 (HAL)硬件抽象层 (HAL) 提供标准接口HAL包含多个库模块其中每个模块都为特定类型的硬件组件实现一组接口比如WIFI/蓝牙模块当框架API请求访问设备硬件时Android系统将为该硬件加载相应的库模块。2.3 Android Runtime 系统库每个应用都在其自己的进程中运行都有自己的虚拟机实例。ART通过执行DEX文件可在设备运行多个虚拟机DEX文件是一种专为Android设计的字节码格式文件经过优化使用内存很少。ART主要功能包括预先(AOT)和即时(JIT)编译优化的垃圾回收(GC)以及调试相关的支持。这里的Native系统库主要包括init孵化来的用户空间的守护进程、HAL层以及开机动画等。启动init进程(pid1),是Linux系统的用户进程 init进程是所有用户进程的鼻祖。init进程会孵化出ueventd、logd、healthd、installd、adbd、lmkd等用户守护进程init进程还启动 servicemanager(binder服务管家)、 bootanim(开机动画)等重要服务init进程孵化出Zygote进程Zygote进程是Android系统的第一个Java进程(即虚拟机进程) Zygote是所有Java进程的父进程Zygote进程本身是由init进程孵化而来的。2.4 Framework层Zygote进程是由init进程通过解析init.rc文件后fork生成的Zygote进程主要包含加载ZygoteInit类注册Zygote Socket服务端套接字加载虚拟机提前加载类preloadClasses提前加载资源preloadResoucesSystem Server进程是由Zygote进程fork而来 SystemServer是Zygote孵化的第一个进程System Server负责启动和管理整个Java framework包含ActivityManagerWindowManagerPackageManagerPowerManager等服务。Media Server进程是由init进程fork而来负责启动和管理整个C framework包含AudioFlingerCamera Service等服务。2.5 App层Zygote进程孵化出的第一个App进程是Launcher这是用户看到的桌面AppZygote进程还会创建BrowserPhoneEmail等App进程每个App至少运行在一个进程上。所有的App进程都是由Zygote进程fork生成的。2.6 Syscall JNINative与Kernel之间有一层系统调用(SysCall)层见Linux系统调用(Syscall)原理;Java层与Native(C/C)层之间的纽带JNI见Android JNI原理分析。三、通信方式无论是Android系统还是各种Linux衍生系统各个组件、模块往往运行在各种不同的进程和线程内这里就必然涉及进程/线程之间的通信。对于IPC(Inter-Process Communication, 进程间通信)Linux现有管道、消息队列、共享内存、套接字、信号量、信号这些IPC机制Android额外还有Binder IPC机制Android OS中的Zygote进程的IPC采用的是Socket机制在上层system server、media server以及上层App之间更多的是采用Binder IPC方式来完成跨进程间的通信。对于Android上层架构中很多时候是在同一个进程的线程之间需要相互通信例如同一个进程的主线程与工作线程之间的通信往往采用的Handler消息机制。想深入理解Android内核层架构必须先深入理解Linux现有的IPC机制对于Android上层架构则最常用的通信方式是Binder、Socket、Handler当然也有少量其他的IPC方式比如杀进程Process.killProcess()采用的是signal方式。下面说说Binder、Socket、Handler3.1 BinderBinder作为Android系统提供的一种IPC机制无论从系统开发还是应用开发都是Android系统中最重要的组成也是最难理解的一块知识点想了解为什么Android要采用Binder作为IPC机制 可查看我在知乎上的回答。深入了解Binder机制最好的方法便是阅读源码借用Linux鼻祖Linus Torvalds曾说过的一句话Read The Fucking Source Code。下面简要说说Binder IPC原理。Binder IPC原理Binder通信采用c/s架构从组件视角来说包含Client、Server、ServiceManager以及binder驱动其中ServiceManager用于管理系统中的各种服务。想进一步了解Binder可查看Binder系列—开篇Binder系列花费了13篇文章的篇幅从源码角度出发来讲述Driver、Native、Framework、App四个层面的整个完整流程。根据有些读者反馈这个系列还是不好理解这个binder涉及的层次跨度比较大知识量比较广建议大家先知道binder是用于进程间通信有个大致概念就可以先去学习系统基本知识等后面有一定功力再进一步深入研究Binder机制。Binder原理篇序号文章名概述0Binder系列—开篇Binder概述1Binder系列3—启动Service ManagerServiceManager守护进程 注册和查询服务2Binder系列4—获取Service Manager获取代理对象BpServiceManager3Binder系列5—注册服务(addService)注册Media服务4Binder系列6—获取服务(getService)获取Media代理以及DeathRecipient5Binder系列7—framework层分析framework层服务注册和查询Binder注册6理解Binder线程池的管理Binder的startThreadPool过程7彻底理解Android Binder通信架构startService为主线8Binder系列10—总结Binder的简单总结9Binder IPC的权限控制clearCallingIdentity/restoreCallingIdentity10Binder死亡通知机制之linkToDeathBinder死亡通知机制Binder驱动篇:1Binder Driver初探驱动open/mmap/ioctl以及binder结构体2Binder Driver再探Binder通信协议内存机制Binder使用篇:1如何使用BinderNative层、Framwrok层自定义Binder服务2如何使用AIDLApp层自定义Binder服务3.2 SocketSocket通信方式也是C/S架构比Binder简单很多。在Android系统中采用Socket通信方式的主要有zygote用于孵化进程system_server创建进程是通过socket向zygote进程发起请求installd用于安装App的守护进程上层PackageManagerService很多实现最终都是交给它来完成lmkdlowmemorykiller的守护进程Java层的LowMemoryKiller最终都是由lmkd来完成adbd这个也不用说用于服务adblogcatd:这个不用说用于服务logcatvold即volume Daemon是存储类的守护进程用于负责如USB、Sdcard等存储设备的事件处理。等等还有很多这里不一一列举Socket方式更多的用于Android framework层与native层之间的通信。Socket通信方式相对于binder比较简单这里省略。3.3 HandlerBinder/Socket用于进程间通信而Handler消息机制用于同进程的线程间通信Handler消息机制是由一组MessageQueue、Message、Looper、Handler共同组成的为了方便且称之为Handler消息机制。有人可能会疑惑为何Binder/Socket用于进程间通信能否用于线程间通信呢答案是肯定对于两个具有独立地址空间的进程通信都可以当然也能用于共享内存空间的两个线程间通信这就好比杀鸡用牛刀。接着可能还有人会疑惑那handler消息机制能否用于进程间通信答案是不能Handler只能用于共享内存地址空间的两个线程间通信即同进程的两个线程间通信。很多时候Handler是工作线程向UI主线程发送消息即App应用中只有主线程能更新UI其他工作线程往往是完成相应工作后通过Handler告知主线程需要做出相应地UI更新操作Handler分发相应的消息给UI主线程去完成如下图由于工作线程与主线程共享地址空间即Handler实例对象mHandler位于线程间共享的内存堆上工作线程与主线程都能直接使用该对象只需要注意多线程的同步问题。工作线程通过mHandler向其成员变量MessageQueue中添加新Message主线程一直处于loop()方法内当收到新的Message时按照一定规则分发给相应的handleMessage()方法来处理。所以说Handler消息机制用于同进程的线程间通信其核心是线程间共享内存空间而不同进程拥有不同的地址空间也就不能用handler来实现进程间通信。上图只是Handler消息机制的一种处理流程是不是只能工作线程向UI主线程发消息呢其实不然可以是UI线程向工作线程发送消息也可以是多个工作线程之间通过handler发送消息。更多关于Handler消息机制文章Android消息机制-Handler(framework篇)Android消息机制-Handler(native篇)Android消息机制3-Handler(实战)要理解framework层源码掌握这3种基本的进程/线程间通信方式是非常有必要当然Linux还有不少其他的IPC机制比如共享内存、信号、信号量在源码中也有体现如果想全面彻底地掌握Android系统还是需要对每一种IPC机制都有所了解。四、核心提纲博主对于Android从系统底层一路到上层都有自己的理解和沉淀通过前面对系统启动的介绍相信大家对Android系统有了一个整体观。接下来需抓核心、理思路争取各个击破。后续将持续更新和完善整个大纲不限于进程、内存、IO、系统服务架构以及分析实战等文章。当然本站有一些文章没来得及进一步加工有时间根据大家的反馈不断修正和完善所有文章争取给文章再进一步精简非核心代码增加可视化图表以及文字的结论性分析。基于Android 6.0的源码专注于分享Android系统原理、架构分析的原创文章。建议阅读群体 适合于正从事或者有兴趣研究Android系统的工程师或者技术爱好者也适合Android App高级工程师对于尚未入门或者刚入门的App工程师阅读可能会有点困难建议先阅读更基础的资料再来阅读本站博客。看到Android整个系统架构是如此庞大的, 该问如何学习Android系统, 以下是我自己的Android的学习和研究论仅供参考如何自学Android。从整理上来列举一下Android系统的核心知识点概览4.1 系统启动系列Android系统启动-概述:Android系统中极其重要进程init, zygote, system_server, servicemanager 进程:序号进程启动概述1init进程Linux系统中用户空间的第一个进程, Init.main2zygote进程所有pp进程的父进程, ZygoteInit.main3system_server进程(上篇)系统各大服务的载体, forkSystemServer过程4system_server进程(下篇)系统各大服务的载体, SystemServer.main5servicemanager进程binder服务的大管家, 守护进程循环运行在binder_loop6App进程通过Process.start启动App进程, ActivityThread.main再来看看守护进程(也就是进程名一般以d为后缀比如logd此处d是指daemon的简称), 下面介绍部分守护进程debuggerdinstalldlmkdlogd4.2 系统稳定性系列Android系统稳定性主要是异常崩溃(crash)和执行超时(timeout),:序号文章名概述1理解Android ANR的触发原理触发ANR的场景以及机理2Input系统—ANR原理分析input触发ANR的原理3理解Android ANR的信息收集过程AMS.appNotResponding过程分析,收集traces4解读Java进程的Trace文件kill -3 信息收集过程5Native进程之Trace原理debuggerd -b 信息收集过程6WatchDog工作原理WatchDog触发机制7理解Java Crash处理流程AMS.handleApplicationCrash过程分析8理解Native Crash处理流程debuggerd守护进程9global reference限制策略global reference4.3 Android进程系列进程/线程是操作系统的魂各种服务、组件、子系统都是依附于具体的进程实体。深入理解进程机制对于掌握Android系统整体架构和运转机制是非常有必要的是系统工程师的基本功下面列举进程相关的文章序号文章名概述1理解Android进程创建流程Process.start过程分析2理解杀进程的实现原理Process.killProcess过程分析3Android四大组件与进程启动的关系AMS.startProcessLocked过程分析组件与进程4Android进程绝杀技--forceStopforce-stop过程分析彻底移除组件与杀进程5理解Android线程创建流程3种不同线程的创建过程6彻底理解Android Binder通信架构以start-service为线,阐述进程间通信机理7理解Binder线程池的管理Zygote fork的进程都默认开启binder线程池8Android进程生命周期与ADJ进程adj, processState以及lmk9Android LowMemoryKiller原理分析lmk原理分析10进程优先级进程nice,thread priority以及scheduler11Android进程调度之adj算法updateOomAdjLocked过程12Android进程整理整理系统的所有进程/线程4.4 四大组件系列对于App来说Android应用的四大组件ActivityServiceBroadcast Receiver Content Provider最为核心接下分别展开介绍序号文章名类别1startActivity启动过程分析Activity2简述Activity生命周期Activity3startService启动过程分析Service4bindService启动过程分析Service5以Binder视角来看Service启动Service6Android Broadcast广播机制分析Broadcast7理解ContentProvider原理ContentProvider8ContentProvider引用计数ContentProvider9Activity与Service生命周期ActivityService10简述Activity与Window关系ActivityWindow11四大组件之综述AMS12四大组件之ServiceRecordService13四大组件之BroadcastRecordBroadcast14四大组件之ContentProviderRecordContentProvider15理解Android ContextContext16理解Application创建过程Application17unbindService流程分析Service18四大组件之ActivityRecordActivity19AMS总结(一)AMS4.5 图形系统系列图形也是整个系统非常复杂且重要的一个系列涉及WindowManager,SurfaceFlinger服务。序号文章名类别1WindowManager启动篇Window2WMS之启动窗口篇Window3以Window视角来看startActivityWindow4Android图形系统概述SurfaceFlinger5SurfaceFlinger启动篇SurfaceFlinger6SurfaceFlinger绘图篇SurfaceFlinger7Choreographer原理Choreographer4.6 系统服务篇再则就是在整个架构中有大量的服务都是基于Binder来交互的Android系统服务的注册过程也是在此之上的构建的。计划针对部分核心服务来重点分析AMS服务AMS启动过程一更多组件篇[见小节4.3]Input系统Input系统—启动篇Input系统—InputReader线程Input系统—InputDispatcher线程Input系统—UI线程Input系统—进程交互Input系统—ANR原理分析PKMS服务PackageManager启动篇Installd守护进程Alarm服务理解AlarmManager机制JobScheduler服务理解JobScheduler机制BatteryServiceAndroid耗电统计算法PMS服务DropBox服务DropBoxManager启动篇UserManagerService多用户管理UserManager更多系统服务敬请期待4.7 内存存储篇内存篇Android LowMemoryKiller原理分析Linux内存管理Android内存分析命令存储篇Android存储系统之源码篇Android存储系统之架构篇Linux驱动篇敬请期待dalvik/art解读Java进程的Trace文件4.8 工具篇再来说说Android相关的一些常用命令和工具以及调试手段.序号文章名类别1理解Android编译命令build2理解Android.bpbuild2性能工具Systracesystrace3Android内存分析命令Memory4ps进程命令Process5Am命令用法Am6Pm命令用法Pm7调试系列1bugreport源码篇bugreport8调试系列2bugreport实战篇bugreport9dumpsys命令用法dumpsys10Android logd日志原理logd11介绍gdb调试工具gdb12介绍addr2line调试命令addr2line4.9 实战篇下面列举处理过的部分较为典型的案例供大家参考序号文章名类别1Binder Driver缺陷导致定屏的案例binder2深度解读ArrayMap优势与缺陷ArrayMap3数组越界导致系统重启的案例数组越界4一行Log引发多线程并发问题的案例多线程并发5跑monkey压力测试过程的冻屏案例monkey冻屏6深度剖析APP保活案例保活本文只是提纲挈领的篇章更多详细文章可点击下方阅读原文进入我的博客Gityuan.com阅读博主仍在持续更新。五、结束语Android系统之博大精深包括Linux内核、Native、虚拟机、Framework通过系统调用连通内核与用户空间通过JNI打通用户空间的Java层和Native层通过Binder、Socket、Handler等打通跨进程、跨线程的信息交换。只有真正阅读并理解系统核心架构的设计解决问题和设计方案才能做到心中无剑胜有剑才能做到知其然知其所以然。当修炼到此恭喜你对系统有了更高一个层次的理解正如太极剑法忘记了所有招式也就练成了太极剑法。再回过头去看看那些API看到的将不再是一行行代码、一个个接口的调用而是各种信息的传递与交互工作而是背后成千上万个小蝌蚪的动态执行流。记得《侠客行》里面的龙木二岛主终其一生也无法参透太玄经石破天却短短数日练成绝世神功究其根源是龙木二岛主以静态视角去解读太玄经而石破天把墙壁的图案想象成无数游动的蝌蚪最终成就绝世神功。一言以蔽之程序代码是死的系统运转是活的要以动态视角去理解系统架构。推荐阅读Android技术架构演进与未来深度解读ArrayMap优势与缺陷解读Android进程优先级ADJ算法Binder Driver缺陷导致定屏的实战分析觉得不错请点在看↓
http://www.sadfv.cn/news/164961/

相关文章:

  • 最新网站建设网站建网站建设网站站网站
  • 网站音乐播放器插件只做公司网站方案
  • 做网站赚取广告费asp网站安装到空间
  • 网站模板为什么不好南京电商网站开发
  • 广州外贸型网站网络运营者不是指
  • 销售平台网站建设宁波seo首页优化平台
  • 做公众号封面的网站群辉 wordpress 外网
  • 云阳一平米网站建设企业为什么要建设自己的网站
  • jquery特效的网站科技岛
  • 山西云起时网站建设长沙网络营销公司哪家好
  • 茶叶电子商务网站建设的结论手机可播放的网站
  • 做网站都需要什么技术网站设计作业平台
  • 论坛网站推广方案网页设计怎么写
  • 玫瑰在线 网站建设内容桂林八里街论坛
  • 房地产网站的设计要求迁西住房和建设管理局网站
  • 高端网站开发价格wordpress单本小说主题
  • co域名网站照明做外贸的有那些网站
  • wordpress知名网站进贤南昌网站建设公司
  • 如何用vs做网站百度的合作网站有哪些
  • 大良营销网站建设流程张家界做网站公司
  • 农业 网站源码把自己的电脑做网站服务器
  • 免费推广网站在线店铺设计软件手机版
  • 米拓建设网站蚌埠网站建设
  • 班级网站模板html百度移动端排名软件
  • 昌邑市建设局官方网站搭建公司网站费用
  • 网站备案取消 后果桂林象鼻山的由来
  • 怎么用模板建网站注册国际贸易公司需要多少钱
  • 网站优化要怎么做才会做到最佳深色系网站
  • 建设购物网站的条件文化传媒公司
  • 做网站仓库报表系统wordpress会话已过期