使用Java
实现一个最简易的JVM
,主要实现下面的功能:
撸一个简易JVM
Jul 29, 2019
使用Java
实现一个最简易的JVM
,主要实现下面的功能:
ApplicationContext
是BeanFactory
的子接口,更好的与spring
的aop
集成,消息资源处理(用于国际化),事件发布,特定的context
,like WebApplicationContext for use in web applications.GenericApplicationContext
可以用来加载多种方式的配置,然后调用refresh
从jdk8
开始,java
新增了Stream
相关的API
。配合lambda
表达式,java
也拥有了部分的函数式编程的能力。
StreamAllocation
也是在此初始化。主要是while
拼装followUpRequest
。Content-Type
,"Transfer-Encoding", "chunked"
,gzip
等请求头和对应的相应解析。还有cookie
的处理。CacheStrategy
来处理获取缓存响应,通过getCandidate
根据If-None-Match
配合etag
,If-Modified-Since
配合lastModified
等判断缓存是否有效。请求网络,是否304
,更新相应缓存条件,组装响应。使用了DiskLruCache
进行缓存的持久化,通过日志文件实现类似索引的功能,读写分离,写有类似事务的概念。定期清理。request
和最原始的response
。SimpleDraweeView
层级初始化GenericDraweeHierarchyInflater
从xml中解析SimpleDraweeView
属性值,(收集属性),然后赋值给GenericDraweeHierarchyBuilder
去创建,在GenericDraweeView
的构造函数中去build,创建GenericDraweeHierarchy
,也就是初始化XML中的属性。这个和代码创建一个效果。类似placeholderImage这些是按照层级放到Drawable[]中,根据这个创建mTopLevelDrawable
,mTopLevelDrawable
中可以做渐变,进度等操作。就是改变Drawable[]中不同的drawable实现的。然后setController时候会设置mTopLevelDrawable
先显示。
(源码版本:0.34,新版本(0.48)基本流程是不变的,建议跟着源码看看,哪个版本的倒影响不大)
这篇简单刨析一下React Native
是怎么在Android
上跑起来的,会从下面几个方面说说。
源码版本:26.0.0-beta1
Fragment 的生命周期是依赖Activity的,假设在Activity的onCreate中有如下代码,
最近遇到了这个异常,记录一下解决办法。