Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ARTS-3 #5

Open
blackwuxin opened this issue Apr 27, 2019 · 0 comments
Open

ARTS-3 #5

blackwuxin opened this issue Apr 27, 2019 · 0 comments

Comments

@blackwuxin
Copy link
Owner

ARTS,即:每周完成一个ARTS:每周至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章,至少坚持一年。(也就是 Algorithm、Review、Tip、Share 简称ARTS)。

Algorithm

104. 二叉树的最大深度

题目描述:

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

分析:

采用递归方法,找出二叉树的左子树的深度,右子树的深度,然后取左右子树深度的最大值加1.

时间复杂度:O(n)

代码:

/**
 * Definition for a binary tree node.
 * function TreeNode(val) {
 *     this.val = val;
 *     this.left = this.right = null;
 * }
 */
/**
 * @param {TreeNode} root
 * @return {number}
 */
var maxDepth = function(root) {
    if(!root){
        return 0;
    }else{
        var leftHeight = maxDepth(root.left);
        var rightHeight = maxDepth(root.right);
        return Math.max(leftHeight,rightHeight) + 1;
    }
};

Review

Git

1.1 关于版本控制

什么是版本控制?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。

1.本地版本控制

RCS,工作原理是在硬盘中保存补丁集,通过应用所有的补丁,可以重新计算出各个版本的文件内容。

img

2.集中化的版本控制

(Centralized Version Control Systems)CVSC,有一个单一的集中管理的服务器,保存所有文件的修订版本,协同人员通过客户端连到这台服务器,取出最新的文件或者提交更新。

img

好处:相对本地VCS来说,每个人都可以在一定程度上看到项目中的其他人正在做什么,而管理员可以轻松掌握每个开发者的权限,并且管理一个CVCS要远比在各个客户端上维护本地数据库来得轻松容易。

坏处:中央服务的单点故障。如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,你将丢失所有的数据。

3.分布式版本控制

(Distributed Version Control System)DVCS。客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。

img

Tip

问题描述:

[email protected]通过 ExceptionsManager.reportFatalException(message, stack, currentExceptionID);上报到native层的错误堆栈丢失。

问题原因:

[email protected]依赖了stacktrace-parser": "^0.1.3" ,最近stacktrace-parse升级到了0.1.5后,parseErrorStack解析后有问题,对应代码:

// node_modules/react-native/Libraries/Core/ExceptionsManager.js

const parseErrorStack = require('parseErrorStack');
const stack = parseErrorStack(e);

ExceptionsManager.reportSoftException(message, stack, currentExceptionID);

解决方法:

在当前工程package.json中固定下[email protected]

  "dependencies": {
    "stacktrace-parser": "0.1.4"
  }

Share

react-native start启动服务支持 --config 传入指定配置信息,可以配置黑名单,查找模块依赖的时候不检查指定问文件目录,例如:

//rn-cli.config.js 
/** 
 * cli配置黑名单,启动服务不检索ios目录,防止和node_modules目录文件有冲突
*/
const blacklist = require('metro-config/src/defaults/blacklist');

module.exports = {
    resolver: {
        blacklistRE: blacklist([
            /^ios\/.*/
        ])
    },
};

react-native start --config rn-cli.config.js
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant