Monthly Archive: March 2020

怎样使用sftp command line?怎样在sftp里用pem file登陆

sftp是基于ssh的文件传输命令行工具,UNIX系统比如Mac和Linux里都有。各大平台,包括Windows也有图像界面的。还有个叫ftp的工具,是sftp的前辈,功能基本一样。s是secure的意思,就是ftp都是明码传输而sftp加密了。本文主要专注在命令行上面。 如果你需要使用AWS EC2,那么登陆需要用pem file,可以用如下命令 用pem file的话不需要密码,登陆后进入交互式界面,和shell很像 可以看服务器上的文件 看本地文件 上传文件 上传目录加个-r,代表recursive 下载文件 同理下载目录用-r 帮助就直接问号 ? 退出 或者 Ctrl + d 基本还是一个很容易使用的在本地和服务器传文件的小工具。

经典算法 非递归遍历二叉树 binary tree in order traversal without recursion

Binary in order traversal 一般是大多数人学习的第一个recursion算法,非常简单,3行就能写完。但这其实是compiler帮我们写了大部分的code,练习不用recursion能更好的帮助我们理解under the cover发生了什么。如果没练习过,其实还是不容易想到和写对的。 代码如下 Java 其中TreeNode class如下

经典算法 binary search 二分查找怎么实现?

二分查找很经典,当年看哈佛CS50是这么讲解的:怎么在字典里找某个单词?我们知道字典是按字母顺序排好序的。比如目标单词是cat,翻开字典中间,现在是g开头的词,那么我们知道cat肯定不在后半部分,那么可以把字典撕开,扔了后半部分。然后重复以上过程,中间翻开,这回是b开头的,就可以把前半部分仍了。如此下去,每次都把要搜索的空间减少一半,这样只用O(lgN)时间就能找到目标。不然的话一页页找的话就需要O(N)。虽然算法不复杂,但是要写对还是不容易的,以下经典实现最好背下来,内化到自己的知识库,就不用担心用到的时候边界条件不对。不然很容易进入死循环不返回,亲身经历。 代码如下: Java 主要以下要点 while里面条件要是 lower <= upper update lower bound 要是 m + 1 update upper bound 要是 m – 1 计算中指用 m = lower + (upper – lower) / 2,而不是 (upper + lower) / 2,这样可以去除整数相加overflow问题。当然如果类型是bigint之类就无所谓了。