使用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中有如下代码,
最近遇到了这个异常,记录一下解决办法。