• ARTS第十一周


    受辞职考研和新冠肺炎疫情影响,一直没更。遗憾,数学和专业课再高点就有戏了。继续。

    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 混淆,现在三、四组服务器需要安装插件才能正常连接。

    目前 不建站的情况下,用别人的机场会方便点,所以选用JMS 。 1 , 2 , 5 组直接用QR去扫码或者复制链接进V2或者小飞机 都比较方便 。 主要记载遇到的坑 ,之前参考的博客 

    https://cokebar.info/archives/1988

    但不能ping通。

    记录下我的解决方法 : 

    一、直接通过官方提供的下载地址下载安装

     

    二、安装插件和填写参数

    下载解压到小飞机目录

    在服务器配置界面,选择支持 obfs 混淆的节点,填入参数即可

     

    插件:obfs-local     插件选项:obfs=tls    (复制)

    Share

      这周热点是瑞幸咖啡,推荐个观点

      https://www.fool.com/investing/2020/02/04/why-luckin-coffee-stock-popped-today.aspx   谈到中国概念股票,投资者常常担心欺诈性数字。但是以后,这种情况会变得更糟。Luckin Coffee管理层发现了问题,并暂停了包括Liu在内的涉案人员,并对其结果进行了独立验证。也就是说,要确定该丑闻的严重程度还需要花费一些时间,甚至需要更长的时间才能恢复破碎的投资者信心。  对国内来说,并不算个好事。以后,中概股会更难。

  • 相关阅读:
    UseControls ————用户自定义控件的textbox的传值问题
    listview 的用法 (asp.net3.5新增控件)
    DataList 中 HyperLink传递时多个参数怎么绑定
    fileupload 上传文件函数 把图片名用日期时间命名
    repeat 的两个事件ItemDataBound和ItemCommand
    dataset.xsd的定义(vs2008)
    asp.net 的框架问题 使多个页面在同一个页面中显示
    第八章 支持与自我了悟
    项目管理心得:一个项目经理的个人体会、经验总结(转)
    细说委托(转)
  • 原文地址:https://www.cnblogs.com/jxl00125/p/12544556.html
Copyright © 2020-2023  润新知