从Android代码中来记忆23种设计模式
https://www.jianshu.com/p/1a9f571ad7c0
MVC,MVP,MVVM区别
https://www.jianshu.com/p/5e94569a430a
与第一问差不多
学习并理解 23 种设计模式
https://juejin.im/post/6844903795017646094
java 常用十种设计模式示例归纳 | 已打包请带走
https://www.jianshu.com/p/61b67ca754a3
Java实现生产者和消费者的5种方式
https://juejin.im/entry/6844903486895865864
设计模式——观察者模式 Java源代码
https://blog.csdn.net/u013390476/article/details/50428014
装饰器模式、代理模式、适配器模式和外观模式的联系与区别
https://blog.csdn.net/hp910315/article/details/51111744
共同点:介于调用者和被调者之间,中间层,起到隔离
不同点:装饰模式是“新增行为”,代理模式是“控制访问行为”,适配器模式是"转换行为",外观模式是一种"简化行为"
适配器模式:包装另一个对象,并提供不同的接口。
外观模式:包装许多对象,以简化他们的接口。
装饰者模式:包装另一个对象,并提供额外的行为。
代理模式:包装另一个对象,并控制对它的访问。
谈谈RxJava
https://www.jianshu.com/p/5ba83d9639fb
给初学者的RxJava2.0教程
https://www.jianshu.com/p/464fa025229e
https://www.jianshu.com/c/299d0a51fdd4
又叫响应式编程、响应式扩展 ReactiveX 是基于观察者模式设计的,核心对象只有
Observable 和 Observer。
Rx 使代码简化
函数式风格:对可观察数据流使用无副作用的输入输出函数,避免了程序里错综复杂的状态
简化代码:Rx 的操作符通通常可以将复杂的难题简化为很少的几行代码
异步错误处理:传统的 try/catch 没办法处理异步计算,Rx 提供了合适的错误处理机制
轻松使用并发:Rx 的 Observables 和 Schedulers 让开发者可以摆脱底层的线程同步和各
种并发问题复制代码
RxJava 的优势也是简洁,但它的简洁的与众不同之处在于,随着程序逻辑变得越来越
复杂,它依然能够保持简洁
EventBus是为Android优化的发布/订阅事件总线
简化组件之间的通信
分离事件发送者和接收者
对活动,片段和后台线程表现良好
避免复杂和容易出错的依赖关系和生命周期问题
使您的代码更简单
运行速度是快的
很小(约50k的jar)
在实践中证明了具有100,000,000+个安装的应用程序
具有传送线程,用户优先级等高级功能
RxJava实现RxBus
RXBus(RxBus的核心功能是基于Rxjava的)
RxJava写一个RxBus,来实现EventBus的发布 / 订阅的事件总线功能。
或者按照evenbus原理来写:储存反射
想要设计 App 的整体框架,首先要清楚我们做的是什么
一般我们与网络交互数据的方式有两种:主动请求(http),长连接推送结合网络交互数据的方式来说一下我们开发的 App 的类型和特点:
一般我们做的 App 都是类型 1,简要来说这类 app 的主要工作就是把服务端的数据拉下来给用户展示 把用户在客户端修改的数据上传给服务端处理 所以这类 App 的网络调用相当频繁,而且需要考虑到网络差,没网络等情况下,App 的运行,成熟的商业应用的网络调用一般是如下流程:
UI 发起请求 -
检查缓存 -
调用网络模块 -
解析返回 JSON / 统一处理异常 -
JSON对象映射为 Java 对象 -
缓存 -
UI 获取数据并展示添加链接描述
这之中可以看到很明显职责划分,即:数据获取;数据管理;数据展示
从零开始仿写一个抖音App
https://juejin.im/post/5b4ec1756fb9a04fdd7d5199
你们要的抖音效果原来是这样实现的!
https://blog.csdn.net/xJ032w2j4cCjhOW8s8/article/details/96531402
java状态机学习总结
https://blog.csdn.net/qq_33223761/article/details/82796231
接口实现Fragment、Activity间互调解耦
https://blog.csdn.net/hitgaoxing/article/details/50731830
[Android] 彻底了解Binder机制原理和底层实现
https://blog.csdn.net/weijinqian0/article/details/52233529
所谓的灰度发布,在行业内叫做A/B Test,所以可以搜索一些这方面的关键词
灰度测试是什么意思呢?如果对互联网软件研发行业不太了解的话,可能对这个词还是很陌生的,其实灰度测试就是指如果软件要在不久的将来推出一个全新的功能,或者做一次比较重大的改版的话,要先进行一个小范围的尝试工作,然后再慢慢放量,直到这个全新的功能覆盖到所有的系统用户,也就是说在新功能上线的黑白之间有一个灰,所以这种方法也通常被称为灰度测试。
从目前来看,灰度测试存在两种方式,一种是软件系统内自带灰度测试发布系统,另一种方式就是使用第三方工具来辅助进行,这两种方法都是可行的。
灰度测试这种方法可以帮助研究团队快速试验并发现问题并在大规模推向用户之前及时把问题修正过来,很大成度上减少了不少风险的产生,所以灰度测试是很有必要的。要知道只有不断创意并完善的软件才能在激烈的市场竞争中立于不败之地,当有创意的时候,小规模的灰度测试是非常有必要的。不但满足了一部分人抢先体验的愿望同时也可以发展研发团队不容易发现的各种问题,还能收集到真正的用户体验,这些对于优化全新的系统内容都是非常有帮助的,如果没有灰度测试的话,其实和闭门造车的感觉是差不多了,在增加灰度测试以后才能真正把其推向用户。
实现一个JSON解析器
https://blog.csdn.net/Dome_/article/details/87257256
android 统计启动时长,标准
https://blog.csdn.net/chunyuanlu/article/details/79782631