1.性能优化相关
https://www.cnblogs.com/cr330326/p/8011523.html

2.CountDownLatch
java共享锁实现原理及CountDownLatch解析
https://blog.csdn.net/yanyan19880509/article/details/52349056

3.Android事件分发机制
https://www.jianshu.com/p/e99b5e8bd67b

4.ArrayList是线程不安全的list,应该使用
CopyOnWriteArrayList与Collections.synchronizedList
https://blog.csdn.net/zljjava/article/details/48139465

5.linkedlist 线程安全
这些集合中线程安全的相关内容

6.
hashMap和数组扩容相关
浅谈JAVA中HashMap、ArrayList、StringBuilder等的扩容机制
https://www.cnblogs.com/lq147760524/p/6713677.html

7.java数组复制

8.ConcurrentModificationException的原因以及解决措施
https://my.oschina.net/hosee/blog/612718
一般有2种解决办法:
  1)在使用iterator迭代的时候使用synchronized或者Lock进行同步;(一个个迭代就和单线程一样了)
  2)使用并发容器CopyOnWriteArrayList代替ArrayList和Vector。

8.Java7 ConcurrentHashMap 和 HashMap的比较
ImportNew的文章,不错
http://www.importnew.com/28263.html

9.一个理解linkedHashMap和LRU算法的例子
accessOrder访问顺序,默认为false,就是按照插入的顺序来输出
设置为true,则为访问的顺序输出:get一个元素后,这个元素被加到最后(使用了LRU 最近最少被使用的调度算法)
https://blog.csdn.net/jiankeufo/article/details/73332772

10.wait()和sleep()的区别
知乎上的答案:
https://www.zhihu.com/question/23328075

Android相关:
1.system_server
知乎理解:
https://www.zhihu.com/question/55324499
整个流程的工作过程是这样的。system_server在启动时分别创建Binder线程和ActivityManager等对象。Binder线程进入循环等待跨进程调用,在收到跨进程调用后,Binder线程会根据调用内容,将调用分发给ActivityManager等对象进行处理,再将处理后的结果返回给调用进程。

Android正常启动流程如下:
Step1 系统加电,执行bootloader。Bootloader负责初始化软件运行所需要的最小硬件环境,最后加载内核到内存。
Step2 内核加载进内存后,将首先进入内核引导阶段,在内核引导阶段的最后,调用start_kenel进入内核启动阶段。start_kenel最终启动用户空间的init程序。
Step3 init程序负责解析init.rc配置文件,开启系统守护进程。两个最重要的守护进程是zygote进程和ServiceManager,zygote是Android启动的第一个Dalvik虚拟机,ServiceManager是Binder通讯的基础。
Step4 zygote虚拟机启动子进程system_server,在system_server中开启了核心系统服务,并将系统服务添加到ServiceManager中,然后系统进入SystemReady状态。
Step5 在SystemReady状态,ActivityManagerService与zygote中的socket通信,通过zygote启动home应用,进入系统桌面。

从Step3开始,init启动后,上层的实现。
Step1 init启动的核心Daemon服务包括Android的第一个Dalvik虚拟机zygote。
Step2 zygote定义一个socket,用于接受ActivityManagerService启动应用的请求。
Step3 zygote通过fork系统调用创建system_server进程
Step4 在system_server进程中,将会启动系统核心服务以及其他服务。
Step5 系统服务启动后会注册到ServiceManager中,用于Binder通信。
Step6 ActivityManagerService进入systemReady状态。
Step7 在systemReady状态,ActivityManagerService会与zygote的Socket通信,请求启动Home。
Step8 zygote收到AMS的连接请求后,执行runSelectLoopMode处理请求。
Step9 zygote处理请求会通过forkAndSpecialize启动新的应用进程,并最终启动Home。

2.serviceManager
https://www.cnblogs.com/lipeil/p/5982893.html

整理mianshi2的更多相关文章

  1. dotNET跨平台相关文档整理

    一直在从事C#开发的相关技术工作,从C# 1.0一路用到现在的C# 6.0, 通常情况下被局限于Windows平台,Mono项目把我们C#程序带到了Windows之外的平台,在工作之余花了很多时间在M ...

  2. UWP学习目录整理

    UWP学习目录整理 0x00 可以忽略的废话 10月6号靠着半听半猜和文字直播的补充看完了微软的秋季新品发布会,信仰充值成功,对UWP的开发十分感兴趣,打算后面找时间学习一下.谁想到学习的欲望越来越强 ...

  3. SQL Server 常用内置函数(built-in)持续整理

    本文用于收集在运维中经常使用的系统内置函数,持续整理中 一,常用Metadata函数 1,查看数据库的ID和Name db_id(‘DB Name’),db_name('DB ID') 2,查看对象的 ...

  4. kafka学习笔记:知识点整理

    一.为什么需要消息系统 1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险. ...

  5. JAVA程序员常用软件整理下载

    ********为了大家学习方便,特意整理软件下载如下:*************Java类软件:-------------------------------JDK7.0:http://pan.ba ...

  6. js数组学习整理

    原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...

  7. GJM : C#设计模式汇总整理——导航 【原创】

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  8. 整理下.net分布式系统架构的思路

    最近看到有部分招聘信息,要求应聘者说一下分布式系统架构的思路.今天早晨正好有些时间,我也把我们实际在.net方面网站架构的演化路线整理一下,只是我自己的一些想法,欢迎大家批评指正. 首先说明的是.ne ...

  9. 安卓GreenDao框架一些进阶用法整理

    大致分为以下几个方面: 一些查询指令整理 使用SQL语句进行特殊查询 检测表字段是否存在 数据库升级 数据库表字段赋初始值 一.查询指令整理 1.链式执行的指令 return mDaoSession. ...

随机推荐

  1. FTPserver

    客户端代码: import os import hashlib BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__) ...

  2. SQL Server 2008中的CTE递归查询得到一棵树

    ROW_NUMBER() OVER()函数用法 with CTE as     (      -->Begin 一个定位点成员       select ID, Name,Parent,cast ...

  3. tomcat/eclipse提速[z]

    在使用Eclipse开发项目过程中,一度使Eclipse陷入瘫痪状态,Tomcat启动项目时也异常缓慢,增加了超时限制并没有用,有时候项目根本运行不起来,简直让人崩溃,可能我电脑内存小(4G),配置低 ...

  4. jenkins自定义安装目录

    jenkins默认会安装到jvm环境变量的user.dir目录下,这样在系统重新安装后容易丢失. 将以下文件保存为start.bat放到jekins.jar同一目录,执行start.bat即可将jek ...

  5. php伪静态与重定向

    什么是伪静态 伪静态是相对于真静态来讲的,伪静态只是改变了URL格式,实际还是动态页面,有真静态一样的SEO,真静态访问一个静态页面,服务器(apache,nginx)直接读取磁盘静态文件,伪静态是动 ...

  6. C# System.Data.OracleClient requires Oracle client software version 8.1.7 or greater

    好好的程序,突然出现了错误,原因是:System.Data.OracleClient requires Oracle client software version 8.1.7 or greater, ...

  7. 在开发node.js中,关于使用VS2013插件出现一直读取资源的问题

    情况描述: 1.安装了VS2013: 2.安装了VS开发node.js的插件; 3.打开以前的工程文件,有的可以打开,有的打不开.而且打不开的始终停留在读取资源的界面.很痛苦的.等半天都没有反应.到底 ...

  8. UI设计教程分享:6个不能错过的UI设计网站

    Ui设计学习的人越来越多了,想要找到合适的学习资料很难,很多才接触ui设计且没有基础的同学也不知道去哪里找学习资料,虽然现在百度上很容易搜到ui设计的学习资料,但是一看不难发现,很多都是过时的学习资料 ...

  9. JSP指令(page include taglib)

    JSP指令指示JSP转换器如何翻译JSP页面到Servlet:JSP指令用来设置整个JSP页面相关的属性,如网页编码方式.脚本语言等 JSP指令的格式: <%@ directive attrib ...

  10. Python之路(第二十七篇) 面向对象进阶:内置方法、描述符

    一.__call__ 对象后面加括号,触发执行类下面的__call__方法. 创建对象时,对象 = 类名() :而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()( ...