ARTS第十一週

受辭職考研和新冠肺炎疫情影響,一直沒更。遺憾,數學和專業課再高點就有戲了。繼續。html

1.Algorithm:每週至少作一個 leetcode 的算法題
2.Review:閱讀並點評至少一篇英文技術文章
3.Tip:學習至少一個技術技巧
4.Share:分享一篇有觀點和思考的技術文章算法

 

如下是各項的狀況:數據庫

Algorithm

回顧第一週題目數組

連接:[LeetCode-01]-Two Sum安全

以前使用的暴力法,思路就是去找 taget - nums[i] 而後返回服務器

class Solution {
    public int[] twoSum(int[] nums, int target) {
        for (int i = 0; i < nums.length; i++) {
            for (int j = i + 1; j < nums.length; j++) {
                if (nums[j] == target - nums[i]) {
                    return new int[] { i, j };
                }
            }
        }
        throw new IllegalArgumentException("No two sum solution");
    }
}

如今考研後,應該考慮去分析時間和空間複雜度數據結構

  • 時間複雜度:

對於每一個元素,經過遍歷數組的其他部分來尋找它所對應的目標元素,每次將耗費 O(n)的時間。由於嵌套,故時間複雜度爲 O(n^2)工具

  • 空間複雜度:O(1)。

不使用暴力法,那麼用什麼呢?學習

  須要一種更有效的方法來檢查數組中是否存在目標元素,哈希表(保持數組中的每一個元素與其索引相互對應)。網站

能夠將查找時間從O(n)下降到 O(1)。

  具體:使用了兩次循環。在第一次循環中,將每一個元素的值和它的索引添加到表。以後在第二次循環中,將檢查每一個元素所對應的目標元素(target - nums[i]target−nums[i])是否存在於表中,代碼以下:

 

 Java:

複製代碼
public int[] twoSum(int[] nums, int target) {
    Map<Integer,Integer> map = new HashMap<>();
    for(int i=0 ; i < nums.length ; i++){
        map.put(nums[i],i);
    }
    for (int i = 0;i < nums.length; i++){
        int complement = target - nums[i];
    if (map.containsKey(complement)) {
        return new int [] { i , map.get(complement)};
        }
    }
    throw new IllegalArgumentException("No two sum solution");
}                
複製代碼

 

  JS:

複製代碼
const twoSum = function(nums, target) {
    const comp = {};
    for(let i=0; i<nums.length; i++){
        if(comp[nums[i] ]>=0){
            return [ comp[nums[i] ] , i]
        }
        comp[target-nums[i]] = i
    }
};
複製代碼

分析時間和空間複雜度

  • 時間複雜度:

  由於第一次須要遍歷所有放入表中,故第一次時間複雜度 O(n)。而對於每一個元素,經過遍歷數組的其他部分來尋找它所對應的目標元素,每次將耗費 O(1)的時間。故總時間複雜度爲 O(n)

  • 空間複雜度:O(1)。

因此,整體分析後,理解了爲何哈希表會節省本機資源。這也是數據庫,組件solr喜歡用哈希表的一個重要緣由。

 

Review

分享  Josh Hug 的 CS61B課程

最近在看josh的數據結構,理清思路很是有幫助。比起之前聽的課,頗有脈絡,自成體系 。大概理了下他的思路,後面直接在YouTube上去搜索Josh Hug。基本是按這個流程走的

 

Tip

  簡單JMS(Just My Socks )使用指南  

什麼是 obfs (simple-obfs)?

obfs (simple-obfs) 是一個設計用於混淆 Ssocks 流量的工具,其原理是在 Ss 流量前面添加一層加密,以假裝成是在正常的訪問網站,obfs 的實現有兩種方式,一種 HTTP,另一種是 TLS。

而 Just My Socks 支持的是 TLS 方式,此假裝性更加隱蔽,因此安全性更高。

因爲 obfs 混淆相關並無一致的 QR 連接等協商方式,因此你得本身必須得手動來配置選項,是不能直接快速掃描二維碼或者添加連接方式導入來使用的。

 

 總結一下,就是封鎖嚴重,爲了更加安全隱蔽,Just My Socks 啓用了 obfs 混淆,如今3、四組服務器須要安裝插件才能正常鏈接。

 

目前 不建站的狀況下,用別人的機場會方便點,因此選用JMS 。 1 , 2 , 5 組直接用QR去掃碼或者複製連接進V2或者小飛機 都比較方便 。 主要記載遇到的坑 ,以前參考的博客 

https://cokebar.info/archives/1988

但不能ping通。

記錄下個人解決方法 : 

1、直接經過官方提供的下載地址下載安裝

 

2、安裝插件和填寫參數

下載解壓到小飛機目錄

在服務器配置界面,選擇支持 obfs 混淆的節點,填入參數便可

 

插件:obfs-local     插件選項:obfs=tls    (複製)

 

Share

  這周熱點是瑞幸咖啡,推薦個觀點

  https://www.fool.com/investing/2020/02/04/why-luckin-coffee-stock-popped-today.aspx   談到中國概念股票,投資者經常擔憂欺詐性數字。可是之後,這種狀況會變得更糟。Luckin Coffee管理層發現了問題,並暫停了包括Liu在內的涉案人員,並對其結果進行了獨立驗證。也就是說,要肯定該醜聞的嚴重程度還須要花費一些時間,甚至須要更長的時間才能恢復破碎的投資者信心。  對國內來講,並不算個好事。之後,中概股會更難。

相關文章
相關標籤/搜索