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在内的涉案人员,并对其结果进行了独立验证。也就是说,要肯定该丑闻的严重程度还须要花费一些时间,甚至须要更长的时间才能恢复破碎的投资者信心。  对国内来讲,并不算个好事。之后,中概股会更难。

相关文章
相关标签/搜索