zoukankan      html  css  js  c++  java
  • 产品/技术框架

    产品/技术框架

    1 服务器端

    1.1 LEMP

    Linux + Nginx + MySQL(MariaDB) + PHP

    1.2 Laravel

    简洁、优雅的 PHP 开发框架

    2 API接口

    2.1 REST:Representational State Transfer

    2.1.1 资源(Resources)

    网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务。你可以用一个URI指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的识别符。

    "上网",就是与互联网上一系列的"资源"互动,调用它的URI。

    2.1.2 表现层(Representation)

    "资源"具体呈现出来的形式

    比如,文本可以用txt格式表现,也可以用HTML格式、XML格式、JSON格式表现,甚至可以采用二进制格式;图片可以用JPG格式表现,也可以用PNG格式表现。

    2.1.3 状态转换(State Transfer)

    访问一个网站,就代表了客户端和服务器的一个互动过程。在这个过程中,势必涉及到数据和状态的变化。

    因此,如果客户端通过"某种手段"操作服务器,服务器端就会发生"状态转化",而这种转化是建立在表现层之上的。具体实例中的"某种手段",就是HTTP协议(里面四个表示操作方式的动词:GET、POST、PUT、DELETE。它们分别对应四种基本操作:GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源。

    2.1.4 总结一下RESTful架构:

    (1)一个URI代表一种资源;

    (2)客户端和服务器之间,传递的是这种资源的某种表现层;

    (3)客户端通过“某种手段”,对服务器端资源进行操作,实现"状态转化"。

    这是一组架构约束条件和原则,不是一种标准,不这么做你也可以完成任务,只不过你的接口得不到应有的好处.

    3 Android端

    3.1 Rxjava

    用于多线程异步数据处理,是一种响应式编程,采取观察者模式(发布-订阅模式)。

    流程:Observable-> Operator 1 -> Operator 2 -> Operator 3 -> Subscriber

    • Observable 发出一系列事件,他是事件的产生者;
    • Subscriber 负责处理事件,他是事件的消费者;
    • Operator 是对 Observable 发出的事件进行修改和变换;

    若事件从产生到消费不需要其他处理,则可以省略掉中间的 Operator,从而流程变为 Observable->Subscriber;

    Subscriber通常在主线程执行,所以原则上不要去处理太多的事务,而这些复杂的事务处理则交给 Operator。

    3.2 EventBus

    组件间通信。

    与Rxjava一样基于观察者模式,在异步数据流处理时Rxjava更为强大,可选择其中之一进行开发,目前打算用Rxjava 处理异步数据流,用EventBus实现组件通信。

    使用原因:当我们的项目越来越复杂,使用Intent、Handler、Broadcast进行模块间通信、模块与后台线程进行通信时,代码量大,而且高度耦合。

    3.2.1 机制:

    • Event 事件。它可以是任意类型。
    • Subscriber 事件订阅者。在EventBus3.0之前我们必须定义以onEvent开头的那几个方法,分别是onEvent、onEventMainThread、onEventBackgroundThread和onEventAsync,而在3.0之后事件处理的方法名可以随意取,不过需要加上注解@subscribe(),并且指定线程模型,默认是POSTING。
    • Publisher事件的发布者。我们可以在任意线程里发布事件,一般情况下,使用EventBus.getDefault()就可以得到一个EventBus对象,然后再调用post(Object)方法即可。

    3.2.2 四种线程模型:

    POSTING (默认) 表示事件处理函数的线程跟发布事件的线程在同一个线程。

    MAIN 表示事件处理函数的线程在主线程(UI)线程,因此在这里不能进行耗时操作。

    BACKGROUND表示事件处理函数的线程在后台线程,因此不能进行UI操作。如果发布事件的线程是主线程(UI线程),那么事件处理函数将会开启一个后台线程,如果果发布事件的线程是在后台线程,那么事件处理函数就使用该线程。

    ASYNC 表示无论事件发布的线程是哪一个,事件处理函数始终会新建一个子线程运行,同样不能进行UI操作。

    3.3 OKHttp:网络请求。

    get 方法/ post方法,可同步/异步,可传递Json对象。

    3.4 fastjson:数据解析。

    方便地使用json对象。

    3.5 picasso:图片加载。

    Android图形缓存库,允许应用程序无障碍图像加载。

  • 相关阅读:
    Linux下运行当前目录需要加./的原因
    Linux mint界面过小无法安装(解决方法)
    哈工大机考:数组逆置
    哈工大机考:字符串内排序
    哈工大机考:求最大值
    八皇后问题的简单分析
    哈工大机考:字符串去特定字符
    哈工大机考:计算两个矩阵的乘积
    iOS 字号转换问题
    iOS 十六进制的颜色值转换为UIColor
  • 原文地址:https://www.cnblogs.com/tilmto/p/8605066.html
Copyright © 2011-2022 走看看