0%

技术债

一个多月没有动笔写博客了。十月底做了一次技术方向的调整,出差了两周的时间,期间接触了大量新的知识,Blog就这么落下了,罪过罪过。从这周起继续开始写一些技术小结,主要偏向当前的技术方向。
这一篇还是总结的文章,总结一下我欠的技术债。有些是迟早要还的,有些遥遥可能无期了,但是谁知道了,且当这里做一个CheckPoint吧。分几个方面说:

  • Android开发方向
  • 全沾工程师计划的方向
  • 要还的债

Android技术债

  • UI:Android中的一些新控件的使用,如ConstraintLayout,CoordinatorLayout。一些RecycleView使用的也不多,我还沉迷于ListView😂。这应当是以后Android开发会大量使用的布局方式。
  • 开发方式:RxJava RxAndroid Rxbind这几个Rx系列的框架函数响应式编程的思想。只是看到Demo,没有深入实践使用。这几个框架可以代替我常用的bolts库,线程控制,代替事件总线的EventBus。事件一些常见的需求,如优雅地缓存,解决按钮多次点击问题。总的而言,这种开发方式也是一种趋势,熟练使用对效率提升很大。
  • 一些库的使用,Retrofit这个网络库(包括okHttp),一直看开源工程用,自己也是仰慕。还有Dagger2这个依赖注入库,可以和Spring的依赖注入结合起来学习。还有图片库Glide比较熟悉,但是一直想通读它的代码,据说设计的非常好(Retrofit也是的)。至于Fresco由于太大一直没有用,可能后期会有更新吧。
  • Android源码/系统设计学习:这个都好几年了,看过AsyncTask,ActivityThread这几个主要类的源码,还有Android启动部分的代码,从Zygote到Activity启动,感兴趣但是没有看的有WindowManager的视图架构,还有事件传递架构部分的源码。沉迷细节,没有系统学习,现在主要思路是从设计模式入手学习Android源码,书都买了。这个债要还,毕竟是通用技术。
  • Android应用架构:这个债不多,以前研究过一阵子的MVP MVVM Clean架构的实现与细节,可以参考之前的系列文章。有一个遗漏的点Flux架构。这个一直想在了解前端(JS中React那一堆)开发的Flux之后再回过头看Android的实现的,这个也落下了。
  • 新的方向:ReactNative,这个前途不明,看过HelloWorld仅此而已,也是想在搞完前端回头看的,毕竟主要是前端的技术在Android的应用嘛。
  • 其他:老生常谈的几个技术点:热修复插件化。插件化相对比较了解,毕竟实现过一个框架,但是很久没有根据新的技术方向了(从360的那个插件框架之后就没有搞过)。有部分人认为插件化迟早会被淘汰的(被谁?RN)。至于热修复完全没有涉猎,知道几个常用框架的原理,但是都没有跑过Demo,线上Bug还是通过灰度发版这些东西解决。还有比较坑的Android新系统的新特性,比如Android6.0的权限问题,Android7.0的打包问题等等。

全沾的技术债

这就有点多了😂,毕竟只学了3个月的时间,欠了一屁股债。只是对整个技术栈有了粗浅的认识,也算达到了目的。

前端

前端这块杂而乱,起初一下子就搞晕了。还好走了一条线(以NodeClub为原型,一个论坛网站),基本理了一下。

  • 打包:这个东西都能欠债。。这能说太乱了,我只是学了NodeClub的用npm+Makefile的原始打包方式,调用一些插件(作者自己写的)压缩与合并js,css(less翻译成jss),只能说实在坑爹蛋疼,这块是有现成解决方案的,现在流行的webpack,还有一堆什么gulp,brower什么鬼,这篇文章:我终于弄懂了各种前端build工具理了一下,以后可以更具需求按照这个思路学习。
  • 技术框架:前端这边技术框架一堆只谈,对于传统web网页(非应用),传统的CSS,HTML配合jQuery可以完成大部分功能开发。CSS布局比较难搞,如果要各种响应式布局的效果还是要上框架的,常用的CSS框架BootStrap的十二栅栏布局。它提供了一些常用的控件,都是可以定制的,是现在主流的方案。这个我只是最基本的了解。对于WEB应用开发,由于前端逻辑大大增加,需要界面的各种数据绑定框架(大前端实现了类似后端的模板渲染功能,又类似Android了)。如现在正火的Vue.js这个框架(小程序,阿里系都有影响),还有主流的React技术栈框架(配合Redux这些,道听途说),Google大杀器Angular2.X?如果要学习,可以理一理他们之间的各种优劣,当然我推荐还是从Vue.js入手,一是比较简单的MVVM框架,中国人开发的,而且现在有大量火热的应用的场景,前端得赶时髦。
  • 其他的:因为技术细节我不了解,只能大致上说一下,一些模板引擎(jade ejs handlebars)也可能需要学习,比如前后端渲染相结合的场景。甚至JSP的技术细节也需要了解(JSTL EL表达式之类)。当然还有很多其他技术,前端是一大门类,需要的东西太多了。

后台

后台相对技术路线比较清晰了,我注意学习了Node.js与JavaWeb端的后台,但是后台技术返回太广,有很多需要补充。

  • Node后台:这边比较系统的学过node.js与Express框架(NodeClub的完整代码),相对比较熟悉。也算是我对后端开发的理解入门吧。比较欠缺的可能是WebSocket实时聊天视频应用的开发,这块我学习的时候略过,理论上Node还是很有优势的。
  • JavaWeb后台:这个也学了挺长时间(3周?)。大致摸清了一些概念与常见的网页开发与Api接口的开发方式。这块涉及的概念很多,如Spring,IOC,SpringMVC,SpringBoot各种Handler,Model,Validate框架,看过的文章也很多,也看了一些源码,我总结的博客文章很少,算是欠下的债(在草稿中查看)。一些学习笔记与记录我还保留了,以后如果需要可以用到。当然还有很多没有搞的,比较重要的有:
    • 完整的项目没有看完,看了Spring的showcase(完整的)。没看Springside4项目,只看到maven那边
    • Dubbo框架学习,后续可能要看一下SpringCloud
    • 很多服务治理(SOA)相关的概念也没有学,比如Thrift,Zookeeper,MQ,Redis没有深入看
    • SpringBoot了解了,但是没有完整的项目学习(SpringSide中有一部分)
    • 缓存与数据库的深入学习,只是基本了解了Redis与Hibernate,流行的mybatis没有涉猎
    • 一个完整的分布式系统架构以及可能遇到的各种问题。如并发,一致性,HA等等
  • 其他后台技术:
    • 比如PHP,Python后台以及相关框架,还有FastCGI这些概念等
    • Reactor模型与事件驱动编程,高性能的Java服务器
    • 后台新的技术方向,比如RxJava,SpringMVC的异步响应模型。

其他(运维&&UI&&Other)

  • 运维技术:之前总结过一个运维技术的总结,其中比较系统的学习了Docker相关技术,了解了Nginx的配置。Docker技术应当是以后的趋势,还需要深入的学习。其他的如负载均衡的LVS和Ngnix没有深入的认知。运维的高可用设计系统配置管理系统监控策略,这些也是技术债。
  • UI设计:看了Sketch的文档,显然没有实践过。这要展开也是太多了,完全新的领域。其实应该了解Android的MaterialDesign这些设计文档。凑巧看了一下小程序的设计风格原则,这块以后可以参考。
  • 其他技术:算法方面,字符串算法,推荐算法

要还的债

说一下一些要还的债,主要是我现在的方向也用到的基础能力的东西。

  • Android源码设计方面,这个是通用能力,从熟悉领域入手比较好。《Android源码设计模式》这本书抽空看完。
  • 函数式编程,这块的RxJava思想与Scala有结合。可以看一下。
  • Java相关技术,Reactor模型与事件驱动编程,毕竟以后还在Java世界混。
  • 算法能力,这个是长期的事情,打算是把字符串相关算法先给AC了。这个现在用到非常多。
  • 如果追一些热点,必然要用到一些技术,如果用到小程序,Vue.js这块可能也得搞一搞。

欢迎关注我的其它发布渠道