ARTS 05 - 剖析 Uber 的 RIB 架构

Posted by Calvin on 2020-06-21

前言:什么是ARTS?

ARTS 源于耗子叔在极客时间的专栏《左耳听风》打卡活动。

Algorithm:每周至少做一个 Leetcode 的算法题。主要是为了编程训练和学习。

Review:阅读并点评至少一篇英文技术文章。主要是为了学习英文,如果你的英文不行,你基本上无缘技术高手。

Tip:学习至少一个技术技巧。主要是为了总结和归纳你在日常工作中所遇到的知识点。

Share:分享一篇有观点和思考的技术文章。主要是为了建立你的影响力,能够输出价值观。

Algorithm

14. 最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""

解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。

Python 代码:

class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if not strs: return ""
str0 = min(strs)
str1 = max(strs)
for i in range(len(str0)):
if str0[i] != str1[i]:
return str0[:i]
return str0

Review

iOS Architecture: Exploring RIBs

RIB 架构背后的主要思想是,应用程序应由业务逻辑而不是视图驱动。展示 RIB 的最佳方法是一棵树:每个 RIB 都是一个节点,并且它可以不包含子节点,也可以包括一个或多个子节点。

20200621001.png

在应用程序生命周期中,可以附加和分离 RIB ,创建子节点并与之交互。

RIB 即 “路由 + 交互器 + 构造器 (Router Interactor Builder)”。

  • 路由(Router) 负责相邻 RIB 之间的导航

  • 交互器(Interactor) 是处理 RIB 业务逻辑的主要组件。它响应用户交互,与后端对话,并准备数据显示给用户。

  • 构造器(Builder) 是一个将所有 RIB 片段组合在一起的构造器。

还有一个可选的 视图(View) 和 展示器(Presenter)。 View 本身没有任何业务逻辑,它仅负责呈现 UI 并接受传递给 Interactor 的用户交互。 Interactor 拥有 View ,并且 View 通过委托模式与 Interactor 对话。 Presenter 基本上是 View 实现的协议。

例如,在 View 上点击“登录”按钮将触发 Interactor 中的 Web 任务, Interactor 将告诉 Presenter 显示活动指示器。登录成功后, Interactor 将告诉 Router 导航到下一个页面。

想要了解组件是如何协同工作的,可以查看原文

点击查看带有 UI 和所有必需逻辑的完整示例项目

Tip

centos 7 FIREWALL 命令

查看已经开放的端口

firewall-cmd --list-ports

开启端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

注意:–permanent表示永久保存

开启端口区间

firewall-cmd --zone=public --add-port=80-1000/tcp --permanent

命令含义

–zone #作用域

–add-port=80/tcp #添加端口,格式为:端口 / 通讯协议

–permanent #永久生效,没有此参数重启后失效

重启 firewall

firewall-cmd --reload

停止 firewall

systemctl stop firewalld.service

禁止 firewall 开机启动

systemctl disable firewalld.service

查看默认 firewall 状态

firewall-cmd --state

Share

Code Health: To Comment or Not to Comment?

谷歌的厕所里面贴的是各种编程知识,这篇就是谷歌的”厕所文”之一,谈什么时候应该写注释。

20200621002.png


Git tags : Explained

git tag命令用来给仓库打标签,本文简单介绍这个命令的用法。