枫叶「零碎记录」

枫叶「零碎记录」

it's better to burn out than to fade away

Android开发经验注意点

1.I/O篇

1.1磁盘I/O

  • 项目要求不需要实时性和及时性尽可能的多用缓存,因为看你导致重复读写,在一些系统API中每次都可能需要重复打开文件导致磁盘IO读写性能浪费。

例如SharedPreferences的commit每一次的commit都进行了一次文件的打开和关闭,因此尽可能的使用一次commit方法即可。利用混存来保存多次写入的数据,延迟写入,从而减少写入次数。

  • 避免主线程进行读写,移到子线程中处理I/O事宜。因为有可能发生『放大效应』(简单来讲放大效应是在随机读写时需要清理当前磁盘的块整理的过程,和顺序读写不同在于整理过程需要耗费一定的性能导致明明只写8KB的大小却需要调度到512KB)会让平时是多毫秒的操作放大几十倍,导致主线程长时间未响应导致的体验不佳。但是数据是见面的来源,么有数据也无法展示相应的核心内容,所以移入子线程只是解决的第一步,最重要的是如何真正的减少I/O甚至避免I/O操作。
  • 合理的I/O缓存设置Buffer的大小。可以根据业务和机器性能环境来适当的调整,在读写时使用缓冲区开可以减少读写的次数,从而减少了切换内核态的次数提高效率。一般推荐Buffer大小为8KB。
项目中的思考
当初成为火排队的Owner的时候就不再以一个纯粹的的开发人员的职责来要求自己,或多或少会接触一些开发外的杂事,跟客户了解需求、跟其他开发兄弟协调任务、自己研究餐厅业务相关的知识、开始关注团队成长和氛围、用户体验、关注架构、关注未来可能的需求,尽可能保证一点前瞻性吧. 在做管理学习上我觉得有个简单的方法叫对标学习。在其位谋其政,不在其位预谋其政。看你现在的项目经理、技术总监、CTO的工作日常,有机会分担责任时,哪怕是协调人员、组织会议、跟踪任务。 一个项目的开发时间是固定的,甚至在大多数互联网公司来说时间是紧迫的 不够的。一个项目从开始到结束,参与的人除了客户端,还有测试和服务...
OkHttp3框架解析

本文会先简单说下OkHttp3的工作流程,然后介绍OkHttp3的一些核心类(如连接池StreamAllocation以及各式各样的Interceptor),接着从源码角度分析一次HTTP请求在OkHttp3中所经历的过程,在不同的Interceptor(拦截器)可以看到一些OkHttp3设计的一些巧妙思想,最后对上述分析做个简单的总结。

Okhttp3是Square公司开源的强大高效的Java网络请求库,旨于替换Java的HttpUrlConnection和Apache的HttpClient的轻量级网络框架,已经被运用到很多开源库以及Android的源码中(Android Studio 在6.0之后,移除了HttpClient,并且用OKHttp代替了HttpUrlConnection)。

  • 支持Http2/SPDY;
  • 默认启用长连接,使用连接池管理,支持Cache(目前仅支持GET请求的缓存);
  • 路由节点管理,提升访问速度;
  • 透明的Gzip处理,节省网络流量。
  • 灵活的拦截器,行为类似Java EE的Filter或者函数编程中的Map。
Retrofit2框架解析
什么是Retrofit框架? Retrofit其实我们可以理解为OkHttp的加强版,它也是一个网络加载框架。底层是使用OKHttp封装的。准确来说,网络请求的工作本质上是OkHttp完成,而 Retrofit 仅负责网络请求接口的封装。它的一个特点是包含了特别多注解,方便简化你的代码量。并且还支持很多的开源库(著名例子:Retrofit + RxJava)。 本文中的Retrofit均指代Retrofit2.0,以目前最新的2.4.0版本为例子。 Retrofit入门Retrofit 其实相当简单,简单到源码只有37个文件,其中22个文件是注解还都和HTTP有关,真正暴露给用户的类...
Api接口加密策略
接口安全要求:1.防伪装攻击(案例:在公共网络环境中,第三方 有意或恶意 的调用我们的接口) 2.防篡改攻击(案例:在公共网络环境中,请求头/查询字符串/内容 在传输过程被修改) 3.防重放攻击(案例:在公共网络环境中,请求被截获,稍后被重放或多次重放) 4.防数据信息泄漏(案例:截获用户登录请求,截获到账号、密码等) 设计原则:1.轻量级 2.适合于异构系统(跨操作系统、多语言简易实现) 3.易于开发 4.易于测试 5.易于部署 6.满足接口安全需求(满足接口安全1,2,3),无过度设计。 其它:接口安全要求防数据信息泄漏部分,主要针对目前用户中心的登录接口 设计原则是:使用HTTPS...
Java基础之装箱

本章从一下几个点来介绍:

  1. 什么是装箱?什么是拆箱?
  2. 装箱和拆箱是如何实现的
  3. 面试中相关的问题
Java基础之三大特性

Java有三大特性继承、封装、多态

继承

  1. 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。
  2. 子类拥有父类非private的属性和方法。
  3. 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
  4. 子类可以用自己的方式实现父类的方法。
计算机原理

现代计算机,大部分都是基于冯诺依曼体系结构,而我们这里谈论的也是此问前提。冯诺依曼的核心是:存储程序,顺序执行。所以不管计算机如何发展,基本原理是相同的。计算机程序实际上是告诉计算机做什么。

ARouter源码分析

分析需要储备以下知识点:

  • Java注解知识
  • Java反射知识
  • javapoet库(在注释里也有简单分析)
  • auto-service库

下面分析的时候会把各位看官当做已经掌握了以上知识点哈!

ARouter包含3个核心模块.jpg

ARouter包含3个核心模块

  1. arouter-annotation 注解的声明和信息存储类的模块
  2. arouter-compiler 编译期解析注解信息并生成相应类以便进行注入的模块
  3. arouter-api 核心调用Api功能的模块
ARouter简单入门和介绍

1.路由介绍

什么是路由框架?

说简单点就是映射页面跳转关系的,当然它也包含跳转相关的一切功能

为什么使用ARouter?

我们先从适用场景来分析:

  1. 动态跳转:一般来说复杂的电商跳转多页面需要很强的灵活性,很多情况下是运营人员动态配置的下发活动页面,需要灵活的进行跳转。

  2. 组件化:随着业务量的不断增长,app也会不断的膨胀,开发团队的规模和工作量也会逐渐增大,面对所衍生的64K问题、协作开发问题等,app一般都会走向组件化。组件化就是将APP按照一定的功能和业务拆分成多个组件module,不同的组件独立开发,组件化不仅能够提供团队的工作效率,还能够提高应用性能。而组件化的前提就是解耦,那么我们首先要做的就是解耦页面之间的依赖关系

  3. Native与H5的问题:现在的APP很少是纯Native的,也很少会有纯H5的,一般情况下都是将两者进行结合。这时候就需要非常便捷并且统一的跳转方案,因为在H5中是无法使用StartActivity()跳转到Native页面的,而从Native跳转到H5页面也只能通过配置浏览器的方式实现

  4. 其他等场景

avatar
Mapleslong(枫叶)
一个想全面发展的骚年!
FRIENDS
friendA