消息处理机制: .MessageQueue: 用来描述消息队列2.Looper:用来创建消息队列3.Handler:用来发送消息队列 初始化: .通过Looper.prepare()创建一个Looper对象,并将Looper对象保存到sThreadLocal静态变量中(其实是保存到了当前线程的ThreadLocal.values变量中)2.在Looper的构造函数中创建一个MessageQueue对象3.在MessageQueue的构造函数中调用nativeInit JNI方法 去c++层创建一…
Android应用程序在启动每个线程时,都会创建一个消息队列.线程的生命周期分为创建消息队列和进入消息循环两个阶段. 消息循环分为:发送消息和处理消息. Android系统主要通过MessageQueue.Looper和Handler三个类来实现Android应用程序的消息处理机制. MessageQueue——描述消息队列 Looper——创建消息队列 Handler——发送消息.处理消息 创建线程消息队列过程 调用Looper类静态成员函数prepareMainLooper或者prepare…
wsgi.py----第二部分 pop_path_info()函数 先测试一下这个函数的作用: >>> from werkzeug.wsgi import pop_path_info >>> env = {'SCRIPT_NAME': '/foo', 'PATH_INFO': '/a/b'} >>> pop_path_info(env) 'a' >>> env['SCRIPT_NAME'] '/foo/a' >>>…
​ Trainer解析 我们继续Detectron2代码阅读笔记-(一)中的内容. 上图画出了detectron2文件夹中的三个子文件夹(tools,config,engine)之间的关系.那么剩下的文件夹又是如何起作用的呢? def main(args): cfg = setup(args) if args.eval_only: ... trainer = Trainer(cfg) trainer.resume_or_load(resume=args.resume) if cfg.TEST.A…
因为第一部分是关于初始化的部分的,我就没有发布出来~ wsgi.py----第一部分 在分析这个模块之前, 需要了解一下WSGI, 大致了解了之后再继续~ get_current_url()函数 很明显,该函数的作用是获取当前url地址. 代码如下: def get_current_url(environ, root_only=False, strip_querystring=False, host_only=False, trusted_hosts=None): """ :…
Zygote: .Zygote 是系统启动之后创建的第二个进程2.Zygote 创建zygote Socket.虚拟机3.Zygote 在虚拟机中通过forkSystemServer, 创建Server进程, 并且在其中启动服务(AMS.PMS等)4.Zygote 在虚拟机中注册zygote套接字,循环监听AMS的请求,创建新的进程 Server: (PS:版本不同,创建服务的方法也有很大不同,以下为5.1.1版本) 1.Zygote fork自己,为Server创建新的子进程之后,调用hand…
Apollo源码阅读笔记(二) 前面 分析了apollo配置设置到Spring的environment的过程,此文继续PropertySourcesProcessor.postProcessBeanFactory里面调用的第二个方法initializeAutoUpdatePropertiesFeature(beanFactory),其实也就是配置修改后更新相关处理逻辑. 在继续分析之前,先来看下配置是怎么自动更新的. 1. 配置更新简单示例 通过portal页面,修改配置之后,我们可以通过@Ap…
Map是Java collection framework 中重要的组成部分,特别是HashMap是在我们在日常的开发的过程中使用的最多的一个集合.但是遗憾的是,存放在HashMap中元素都是无序的,原因是我们在put或get数据的时候都是根据key的hash值来确定元素的位置.在具体的业务场景中,我们更多的希望对于HashMap集合能够进行顺序访问,好在 jdk 中已经给我们提供了一种解决方案,那就是LinkedHashMap.该类继承与HashMap,因此HashMap拥有的特性它都有,同时…
HashMap源码阅读笔记 本文在此博客的内容上进行了部分修改,旨在加深笔者对HashMap的理解,暂不讨论红黑树相关逻辑 概述   HashMap作为经常使用到的类,大多时候都是只知道大概原理,比如底层是由数组+链表+红黑树实现,使用HashMap存储自定义类时需要重写其hashCode和equals方法等等--但对其具体如何实现却知之甚少,本文将作为类似笔记的形式记录笔者的源码阅读方式.(在JDK 1.7及其之前由数组加链表组成,正常情况想我们谈论的均为JDK 1.8及其之后的HashMap…
[原]FMDB源码阅读(二) 本文转载请注明出处 -- polobymulberry-博客园 1. 前言 上一篇只是简单地过了一下FMDB一个简单例子的基本流程,并没有涉及到FMDB的所有方方面面,比如FMDB的executeUpdate:系列方法.数据库的加解密等等.这次写的就是对FMDatabase和FMResultSet这两个文件的补全内容.每次写这种补全的内容最头疼,内容会很分散,感觉没啥条理. 2. executeUpdate:系列函数 注意除了"SELECT"语句外,其他的…