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之類就無所謂了。