ARTS-WEEK9

Posted by 周思进 on August 2, 2020

Algorithm

这周学习快速排序

快排的整体思路是先选择一个值,比如直接选择末尾值,然后将数组中的元素与该值进行比较,比这小的放左边, 比这大的放右边,这样操作完之后,选择的这个值在数组中的位置就是明确了的,剩下的就是将左边的数据和右 边的数据通过同样的方法进行操作,可以通过递归方式来完成

这里的重点是如何原地将数值进行左右分区,方式是通过数值交换,思路有点类似双指针,一个指向要被替换 的数值,一个用于遍历数组用,当遍历值比参考值小,则将遍历值与被替换值交换,同时替换指针指向下一个 数值,当遍历到最后一个数值,只需要将最后一个数组与被替换指针再交换下即可。 (感觉用自己的话讲明白还挺难.. 是我还没透彻理解么 = =)


def partition(array:List, p:int, r:int) -> int:
    pivot = array[r]
    i = p

    for j in range(p, r):
        if array[j] < pivot:
            array[i], array[j] = array[j], array[i]
            i += 1

    array[i], array[r] = array[r], array[i]
    return i


def qsort_c(array:List, p:int, r:int):
    if p >= r:
        return
    
    q = partition(array, p, r)
    qsort_c(array, p, q-1)
    qsort_c(array, q+1, r)


def qsort(array:List, n:int):
    qsort_c(array, 0, n-1)


Review

https://en.wikipedia.org/wiki/Secure_Shell

notably:尤其、显著的
render:致使
susceptible:易受影响的
interception:拦截、窃听
disclosure:泄露
suppress:抑制、控制
imitate:模仿
legitimate:合法的
straightforward:直接的、简单的
simultaneously:同时的

了解了为什么第一次通过SSH登入一台服务器,它会提示你服务器的公钥指纹信息,让你确认;因为SSH公钥并不像证书那样可以通过CA验签,只能通过人为确认。

第一次确认完后,下次再登入,客户端检测到服务器发送的公钥指纹与本地保存的一致就不会再提示;如果发现对方发送的公钥指纹和一开始确认存储的不一致,就会告警提示,这样来达到避免中间人攻击。


Tip

获取外网ip

curl ifconfig.me


Share

学习不会是一件轻松的事,即使是寓教于乐
想要取得好的学习效果,通用认可的方式就是:
1、不要突击式学习,而应该小量持续式学习
2、学习过的知识需要定期回顾,符合记忆曲线
3、最后都需要给自己测试,以检验自己的学习效果

没定期回顾… 没测试… 大伙是怎么弄的呢?