ARTS-WEEK7

Posted by 周思进 on July 20, 2020

Algorithm

上周学习了下递归,这周学习递归在排序算法中的使用-归并排序

思路:
将数组拆分成两半,分别对这两半进行排序,然后将这排序后的两半再进行排序得到最终结果
将数组拆分两半的过程可以使用递归编程方式,直到无法再进行拆分为止

def merge(array: List, start: int, middle: int, end: int):
    len = end - start + 1
    new_array = [0] * len   # 先生成一个对应大小的空列表,方便后面直接通过索引赋值操作
    i = start
    j = middle + 1  # 位置不能搞错
    m = 0

    # print("old_array %s"%(array))

    while (i < middle + 1) and (j < end + 1):
        if (array[i] <= array[j]):
            new_array[m] = array[i]
            i += 1
        else:
            new_array[m] = array[j]
            j += 1
        m += 1

    while (i < middle + 1):
        new_array[m] = array[i]
        i += 1
        m += 1

    while (j < end + 1):
        new_array[m] = array[j]
        j += 1
        m += 1

    # print("new_array %s"%(new_array))
    for i in range(len):
        array[start + i] = new_array[i] #array数组的起始地址需要加上start


def merge_sort(array: List, start: int, end: int):
    if start >= end:
        return

    middle = (start + end) // 2
    merge_sort(array, start, middle)
    merge_sort(array, middle+1, end)

    # print("start :%s, middle : %s,  end %s"%(start, middle, end))
    merge(array, start, middle, end)


Review

https://geshan.com.np/blog/2019/03/follow-these-logging-best-practices-to-get-the-most-out-of-application-level-logging-slides/

commendable:值得赞美的、优秀的
torch:手电筒
exploit:利用
underrated:低估的
instrumental:有帮助的、工具性
profile:概述、简介、配置文件
optimally:理想的
inadequate:不够的
mandatory:强制性的
hamper:妨碍
tried:经过试验的,可靠的

感觉好多单词不认识.. 尴尬 = =

记录几点:
1、日志不要记录太多,也不要太少。
2、日志严重等级明确
3、单条日志信息不要过长,不建议超过255个字符
4、不要影响正常业务流程,可以使用异步、队列等方式


Tip

1、一直间隔执行某个命令

while True; do netstat -an; sleep 5; done;

2、指定某个命令执行多少时间后停止
有两种方法:
a)

timeout 3s ping www.baidu.com

此方法通过 timeout 命令来实现,示例指定 3s,可指定 m(分钟)、h(小时)、d(天)单位。

如果系统不支持 timeout 命令,可换下面方法。

b)

ping www.baidu.com & sleep 3s; kill $!

kill $! 命令用于 kill 掉最近执行的后台作业。


Share

嵌入式开发调试都是基于硬件设备,改动了代码想要验证下,可能就是打包重新升级设备,不顺利的话就得继续加打印改代码,再重新打包升级,这样的时间消耗真的是太大了,组内推TDD测试也比较久了,但使用的人感觉很少。

如果能提前写好各接口的自测用例,改动一点代码,就基于本地跑一下对应接口用例,就能一下发现问题,真的可以节省很多时间。后面得有意识的养成编写自测用例的习惯。