系统架构
HongChengDarren
忘记不了铭记,坚持不了放弃,但只要活着...
展开
-
编译时注解 - ButterKnife源码分析和手写
大学刚出来实习那会,自己写了一个运行时的 ViewById 和 OnClick 注解,用来解决 findViewById 和 setOnClickListener 。其实也是参考 xUtils 的源码,后来加了很多的功能扩展,如网络检测等等。关键是那时 xUtils 并没有插件,自己学着写了插件。这个在外包公司能省不少事,技术总监开会说谁谁怎么怎么样,大家要像他学习啊。工资一下涨了不少,装 B 的技原创 2017-09-07 09:19:31 · 926 阅读 · 0 评论 -
第三方开源库 RxJava - Android实用开发场景
到底什么情况下可以使用 RxJava ? 我们需要知道不是使用 RxJava 而是响应式编程,好吧,那到底什么时候可以响应式编程?按道理来讲,我们写任何代码都可以采用响应式编程的思想,只不过是有没有必要而已。罗列一些使用场景:防止按钮重复点击;RxView.clicks(mClearContent).debounce(300, TimeUnit.MILLISECONDS)EditText 添加原创 2017-12-21 16:14:28 · 449 阅读 · 0 评论 -
第三方开源库 Retrofit - 源码设计模式分析
Retrofit 这个开源库对我成长还是挺大的,自己虽不常用,但他的源码封装思想,却需要用到实际的开发中。这些年有两本书一直都在看 《Android的源码》和《 JakeWharton的源码》。JakeWharton 映象最深的是自己刚做Android时的 ViewPageIndicator, 那个时候这个库才刚开源,如今又是几个年头过去了,想想一个 Android 的十几年的大神叫我怎能不激动,所原创 2017-12-21 16:15:09 · 551 阅读 · 0 评论 -
开发模式 MVP - 基础框架搭建和分析
这期来看下 MVP ,如果不是很了解 MVP 是啥?请自行补一补基础知识,我其实也不太会,如果 RxJava 、OkHttp 、Retrofit 的运用和源码不是特别熟悉,也请去我之前的一些文章补一补,我其实也不太会。我们先来写一个简单版代码,然后分析其问题,运用之前的一些设计模式基础来一个一个解决。拿获取个人用户资料信息为例:1.简单基础版本UserInfoContract 类/** * des原创 2017-12-21 16:16:02 · 513 阅读 · 0 评论 -
系统架构部分的总结和展望
快到年底了想想也是比较激动,因为眼看一年就要过去了。最近也是利用闲暇时间一直在补文章,因为明年有新的学习计划,年后可能也不会再分享 Android 方面的知识,在这之前希望能把视频同步的一些文章补上。记得刚开始有人跟我说:你写的这些东西我都会 。。。(具体记不清了,大致的意思就没必要写这些东西,不要误人子弟)从未想过要去扰乱他人的心志,去动摇自己的决心。我只是想用一种方式记录一下而已,这些内容原创 2017-12-21 16:16:37 · 730 阅读 · 0 评论 -
NDK开发前奏 - x团参数加密和签名校验
这次给大家分享一个关于《x团参数加密和签名校验》解决方案,主要涉及的内容是 MD5 加密算法和 JNI 基础。如果我们只是做 Android 应用开发,应当还是先把 Android 的基础知识玩溜一些,我并不想带坏你,打个比方,比如我们都用过 String、StringBuilder、StringBuffer 这三个,有时真正的开发过程中我们都是看心情的,想用哪个就用哪个。所以先把 Java 和原创 2018-01-06 14:34:10 · 636 阅读 · 0 评论 -
Android进阶之旅 - Kotlin 开发实战篇
1. Kotlin 简介Google 在去年的 IO 大会上宣布,将 Android 开发的官方语言更换为 Kotlin,作为跟着 Google 玩儿 Android 的人,我们必须尽快了解和使用 Kotlin 语言,它就像是 iOS 的 Swift 我们迟早得学这是逃不掉的,只不过这过程对于很多人来说比较漫长。不过 Kotlin 毕竟是语言级别的新事物,比起 Java 来说,从编程思想到原创 2018-01-30 09:22:15 · 983 阅读 · 0 评论 -
NDK开发前奏 - 视频转码压缩
这几次的分享都是基于 NDK 部分的实战,并没有涉及到 C 和 C++ 的基础知识,春节后会从 C 基础的 HelloWorld 开始,还望我们能耐心等待。视频转码压缩开发中比较常见,记得上次有个哥们问我,自己基于 FFmpeg 去压缩,致命的是压缩时间太长了。这里给大家分享几种解决方案: 1. 基于服务器压缩 2. 基于开源库 FFmpeg 转码压缩 (NDK) 3. 基于开源库 iosp原创 2018-01-30 09:23:04 · 571 阅读 · 1 评论 -
Android 多模块多组件开发 - 打造属于自己的路由
一.基本介绍1. 借此机会分享一下自己从刚入门到现在,在开发架构方面的一些心路历程。最终我会把这部分代码进行开源,以后也会对其进行维护。但目前尚在测试中所以并未发布正式版本。我们可以先把代码下载下来进行了解,如果有什么问题可以随时 Issues,这也将是我的第一个开源库,希望能帮到大家。2. 该库所涉及到的类大概在 30 个左右,源码并不多相信我们都能读懂里面的内容,这里罗列一下源码中所涉原创 2018-01-30 09:24:04 · 3689 阅读 · 3 评论 -
NDK开发前奏 - 实现支付宝人脸识别功能
1. 基于 Android Studio 的 opencv 配置与使用先推荐一本书《计算机视觉 - 算法与应用》,相信用过 OpenCV 的哥们都知道这是用来干啥的,这里我就不再啰嗦。只说一下他的应用领域:人机互动、物体识别、图像分割、人脸识别、动作识别、运动跟踪、机器人、运动分析、机器视觉、结构分析、汽车安全驾驶等等。这次我们主要用它来做人脸识别,注意人脸检测和人脸识别是两个概念。首先先...原创 2018-02-28 22:08:22 · 3424 阅读 · 0 评论 -
第三方开源库 RxJava - 自己动手写事件变换
知乎看了个链接,也是给我上了一课。想想 鸿洋、任玉刚、郭霖等等 这些前辈真是不简单,至少作为在中小型企业的我来讲,他们的分享,对于我们的帮助还是挺大的,在一定程度也带动了我们的技术。看了那个链接才发现 勿忘初心 这四个字真的意义深远。这周还是有很多人反应这个 RxJava 源码分析听不懂,我尽量多花一些时间多做一些思考,这里还是针对源码再补一篇文章,再做一次源码分析。public class Obs原创 2017-12-21 16:13:31 · 571 阅读 · 0 评论 -
第三方开源库 RxJava - 基本使用和源码分析
RxJava 历史有点悠久,目前最新版是 2.x 的版本,网络上有很多关于 RxJava 的文章, 随便搜搜一大堆。为什么还要来写一些文章,毕竟那是别人的东西,并没有变成我的知识,其次课程具体的内容有安排,所以我们还是自己动手写写吧。还是老套路从源码的角度出发,当然 RxJava 用了这么久,我们应该也有自己的一些理解,其实就是三个字:事件流很多人一开始就从观察者设计模式入手去分析,这个也不说行不通原创 2017-12-08 22:18:43 · 504 阅读 · 0 评论 -
第三方开源库 OKHttp - 上传进度监听和自定义缓存
最近这段时间的确有点忙,要处理的事情比较多,发现好久没有更新文章了,以后尽量一周更新一篇,这周要视频的人也特多,希望我们看了要多花点时间消化,最好我们自己能写一下总结,千万别又还给我了。那位替我打广告的哥们,虽然我不知道你是谁,但是打心底里说声谢谢。OkHttp 我们总共花了四次去分析源码,花那么多时间去看源码到底是为了啥?其实每个人想的都不一样,有人觉得会用就很不错了,对于我来说我就是喜欢琢磨琢磨原创 2017-12-08 22:17:36 · 450 阅读 · 0 评论 -
工厂设计模式 - 数据存储的特有方式
任何设计模式都是为了解决某些特定场景下所遇到的问题,要知道设计模式其实是可以有一些变动的,说白了设计模式是一种思想而并非一种代码,不要为了使用某种模式生搬硬套。当我们理解一种设计模式的思想时,不要去钻牛角尖。我们在开发中遇到一些问题的时候,就可以在脑海中翻一翻我们所积攒的知识,是不是可以用某一些设计模式来解决这个问题,又或者是用其他方式来解决。当然我们也需要去看一些文章和书籍,很多都写得非常不错,但原创 2017-09-25 08:50:10 · 580 阅读 · 1 评论 -
Android进阶之旅 - 系统架构篇
1.分享的简介自定义View部分已经结束,了解具体详情请移步Android进阶之旅 - 自定义View篇。按照原定的计划,决定分享Android 进阶之旅 - 系统架构篇。很多博客都有设计模式的一些理论讲解,我也曾经阅读过不少,对我个人也有很大的帮助,但整体来讲都比较零散,主要都是讲一些理论的知识。所以我决定出一整套系统架构的文章和视频,从设计模式的理论出发将Android源码与实战事例结合,来帮助原创 2017-08-31 18:27:17 · 1952 阅读 · 0 评论 -
AOP面向切面编程 - 淘宝京东网络处理
现象描述当我们打开京东 app 进入首页,如果当前是没有网络的状态,里面的按钮点击是没有反应的。只有当我们打开网络的情况下,点击按钮才能跳转页面,按照我们一般人写代码的逻辑应该是这个样子: /** * 跳转到待收货页面 */ public void jumpWaitReceiving() { // 判断当前有没有网络 if(Chec原创 2017-08-31 18:29:26 · 1376 阅读 · 4 评论 -
面向对象六大基本原则 - 网络引擎切换
仍记得前年的这个时候我去一个新的公司报道,公司总共就十来个人做开发,刚好做 android 的那哥们离职,就丢了一个项目给我。后面的日子我算是饱受煎熬,今天我们以一个访问网络的部分,来给大家做一下讲解。里面每次获取接口数据是这样的: 当时我看到这个的时候觉得没什么,只是我想换一下网络请求的框架,想把它换成 OKHttp ,我一直不喜欢用 xUtils。但后来想想还是算了,好几十个地方那我不都得原创 2017-08-31 18:34:30 · 636 阅读 · 0 评论 -
Handler通信 - 源码分析和手写Handler框架
记得第一次接触 handler 是用来更新 UI,在线程中用 handler.sendMessage(message),只知道这么做就能在线程中更新 UI 了。第二次接触是为了面试,当时反正也看不懂源码,就在网上找各种资料背它一背,笔试还好,当着面试官说的时候往往不知道怎么说。第三次接触是因为公司要引入人才,发现大家功夫还不错,经常就问问 MessageQueue 为什么要采用链表的方式,Threa原创 2017-09-18 10:13:23 · 1295 阅读 · 0 评论 -
装饰设计模式 - RecyclerView添加头部和底部
1.问题思考RecyclerView 我们都知道有一个比较麻烦的事,那就是没有提供可以直接添加底部和头部的功能。而在开发的过程中一定有这方面的需求,怎么解决这个问题?我们干脆不要用 RecyclerView 了,直接用 ListView 就好了,因为 ListView 直接提供了 addHeaderView 和 addFooterView 方法。既然 ListView 可以直接可以添加头部和底部,那原创 2017-09-30 18:01:05 · 676 阅读 · 0 评论 -
代理设计模式 - 实现 Retrofit 的 create
相信大家都很熟悉 Retrofit 了,这篇文章不会讲使用,如果不是特别熟悉 Retrofit 的使用,可以去看看其他的一些文章。如果实在不想看那也没关系,因为今天的主要内容并不是 Retrofit ,而是代理设计模式。只是在讲解的过程中顺便讲一下代理设计模式的运用。先来看看开发中哪些地方可以用到:Android 插件化架构之绕过 AndroidManifest 检测(动态代理)Android原创 2017-10-13 17:32:22 · 959 阅读 · 0 评论 -
第三方开源库 EventBus - 源码分析和手写
EventBus官方介绍为一个为Android系统优化的事件订阅总线,它不仅可以很方便的在同线程中传递事件或者对象,还可以在不同线程中实现事件或对象的传递,用法比较简单,可以很好地完成一些在原生系统中的Intent,Handler等可以完成的工作,在Android开发过程中用途及其广泛。当然这里不介绍它的具体用法,只走源码,然后自己动手写一下加深映象。很多人都说用了观察者设计模式,如果非得要往上靠,原创 2017-12-08 22:15:28 · 432 阅读 · 0 评论 -
第三方开源库 OKHttp - Java网络编程基础
OKHttp 系列的分析我们打算从 6 个地方下手,我们先从网络的基础知识开始,因为 OKHttp 涉及 Http 协议,所以对于 Http 的基础知识,做一个简单的认识,还是非常有必要的。这里推荐三本书《图解 Http》《Http 权威指南》《Java 网络编程基础》1.OSI 的七层模型2.TCP的三次握手和四次挥手3.Http 报文简介HTTP 协议采用 HTTP 报文的形式传递数据,客户端的原创 2017-12-08 22:16:34 · 531 阅读 · 0 评论