ngrok 穿越本地服务器,极客大学架构师训练营 第一课总结,John 易筋 ARTS 打卡 Week 03
每周完成一个 ARTS:
Algorithm: 每周至少做一个 LeetCode 的算法题
Review: 阅读并点评至少一篇英文技术文章
Tips: 学习至少一个技术技巧
Share: 分享一篇有观点和思考的技术文章
zgpeace 立个Flag:坚持ARTS 10年,今天是2020-05-04 ~ 2030-05-04,漏掉一次微信群发红包100大洋。
1. Algorithm: 每周至少做一个 LeetCode 的算法题
538. Convert BST to Greater Tree
Given a Binary Search Tree (BST), convert it to a Greater Tree such that every key of the original BST is changed to the original key plus sum of all keys greater than the original key in BST.
Example 1:
Java
解决思路:Tree的解决思路优先递归,也就是深度优先算法,因为递归的思路是先遍历到叶子节点,最终会回到Root节点,直接返回就好。如果用Iteration遍历,也就是广度优先算法,那么就要用栈java中用LinkedList去记录每一层的数据。
这个题目容易理解错误,是每个节点要加上目前最大的值。二分查找数最大值是最右的最层叶子节点。
那么就用一个属性sum来记录最大值。遍历顺序为右 > 中 > 左;最后到右子树 > 根节点 > 左子树。
笔者为了方便调试,把树按照属性结构打印了出来。思路如下:
按照层组装数据到
List<String> row
, 一层的数据组装完成后,放到最终的结果列表中List<List<String>> list
。如何判断是一层呢?用栈
LinkedList<TreeNode> rowNode
来装这一层的数据,先计算这一层有多少数据int rowSize = rowNode.size();
,下一层的数据追加到rowNode
的后面,等遍历数等于rowSize
的时候,说明这一层已经结束。处理叶节子,如果是
null
节子,则存入字符串"null"
. 如果是节点为空,则当层输入为"null"
,下一层的左右子树也要为"null"
。打印输出,用4个空格(刚好
"null"
的长度一致)来间隔。最左侧间隔为当前层到总数的距离,比如第一个为0
到size-1
.
调用代码
输出结果为:
2. Review: 阅读并点评至少一篇英文技术文章
Alexandra Noonan 讲了TA的公司2017年转为微服务,但如今又转回来了单体架构。因为微服务没有处理好的话,业务都没法继续。所以微服务到底是拆分模块,共享service,还得具体问题具体分析,否则就变成了焦油坑。
To Microservices and Back Again - Why Segment Went Back to a Monolith
3. Tips: 学习至少一个技术技巧
博客:
ngrok 通过外网链接映射到本地机器,支持http,https
说明
本地服务器一般用http://localhost:8080
来访问,只能通过本地自己访问。别人可以访问链接么,正常情况下是不可以的,防火墙等等限制。
本文的主角ngrok
就是救场的英雄。可以映射到本地机器来访问,可以通过http
,也可以通过https
.
用法
详细可以通过官网链接设置,笔者也把步骤罗列一下。笔者为Mac OS.
https://dashboard.ngrok.com/get-started/setup
3.1. 下载安装包, 并解压(可以双击解压,也可用通过如下命令)。
正常情况下,cd
到可执行文件目录,运行ngrok
命令就好。为了方便,笔者用myzsh
设置环境变量
笔者该坏过配置文件,这也没有问题,文件夹打开根目录,显示隐藏文件快捷键为command+shift+.
, 隐藏隐藏文件为再次用同样的命令。用文本工具比如Sublime编辑好,保存,在命令行里重新加载配置文件就好。
3.2. 绑定`ngrok`的`token`
token查找位置
3.3. 映射本地8080端口为远程端口
命令行里面显示了访问的记录。这里说明一下,需要梯子才能访问(⊙x⊙;)。
笔者本地访问
笔者用ngrok的域名访问
Bravo!!穿越成功🎉🎉
4. Share: 分享一篇有观点和思考的技术文章
写博客记录了李智慧老师的第一课,知道架构师的一些套路:
架构师不一定技术很牛,但是没有技术是不行的。
架构师最主要的靠悟性。悟性悟到了,就类似一层窗户纸,一捅就破,一点就通。
面对的问题、困难是什么?
解决的方法是什么?
真实的场景是什么?
用什么的思维方式去解决问题?
版权声明: 本文为 InfoQ 作者【John(易筋)】的原创文章。
原文链接:【http://xie.infoq.cn/article/4f70799638d1d06bab1fa8ab8】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论