受辞职考研和新冠肺炎疫情影响,一直没更。遗憾,数学和专业课再高点就有戏了。继续。
1.Algorithm:每周至少做一个 leetcode 的算法题
2.Review:阅读并点评至少一篇英文技术文章
3.Tip:学习至少一个技术技巧
4.Share:分享一篇有观点和思考的技术文章
以下是各项的情况:
Algorithm
回顾第一周题目
之前使用的暴力法,思路就是去找 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在内的涉案人员,并对其结果进行了独立验证。也就是说,要确定该丑闻的严重程度还需要花费一些时间,甚至需要更长的时间才能恢复破碎的投资者信心。 对国内来说,并不算个好事。以后,中概股会更难。