zoukankan      html  css  js  c++  java
  • 代码简洁之道笔记

    十三、并发编程

    并发是一种解耦策略。它帮助我们把做什么(目的)和何时(时机)做分解开。从结构的角度来看,应用程序看起来更像是许多台协同工作的计算机,而不是一个大循环。系统因此会更易于被理解,也更有效率。

    1.编写可调整的线程代码  要允许线程数量可调整。在系统运行时允许线程发生变动。允许线程依据吞吐量和系统使用率自我调整。

    2.(一个事务是一个连续的一组数据库操作,就好像它是一个单一的工作单元进行)

    要区分出哪些地方用多线程,哪些地方不需要;使用多线程的地方为了保证数据准确性或者事务一致性,还要考虑加线程锁

    mu = threading.Lock() #1、创建一个锁
    def lock_test():
        #time.sleep(0.1) 
        if mu.acquire(True): #2、获取锁状态,一个线程有锁时,别的线程只能在外面等着
            schedule_times = ReadTimes()
            print schedule_times
            schedule_times = schedule_times + 1
            WriteTimes(schedule_times)
            mu.release() #3、释放锁 

    十四、持续改进代码

    1.不要指望能够一次写出整洁、漂亮的程序。要编写整洁代码,必须先写肮脏代码,然后再清理它。

    2.改进程序应该是渐进的,而不应该是大动其结构,这有很大可能导致程序不可用,采用TDD,每次修改都必须保证系统能像以前一样工作。

    十五、junit,说一下unittest.

    在说unittest之前,先说几个概念:

    TestCase 也就是测试用例

    TestSuite 多个测试用例集合在一起,就是TestSuite

    TestLoader是用来加载TestCase到TestSuite中的

    TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息

    import unittest
    
    class MyTest(unittest.TestCase):  # 继承unittest.TestCase

    if __name__ == '__main__':
                test_suite = unittest.TestSuite()#创建一个测试集合
                test_suite.addTest(MyTest('test_run1'))#测试套件中添加测试用例
                #test_suite.addTest(unittest.makeSuite(MyTest))#使用makeSuite方法添加所有的测试方法
                fp = open('res.html','wb')#打开一个保存结果的html文件
                runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='api测试报告',description='测试情况')
                #生成执行用例的对象
                runner.run(test_suite)
                #执行测试套件
     
  • 相关阅读:
    【bzoj4372】烁烁的游戏 动态点分治+线段树
    【bzoj3730】震波 动态点分治+线段树
    【bzoj3125】CITY 插头dp
    【bzoj2310】ParkII 插头dp
    【bzoj1187】[HNOI2007]神奇游乐园 插头dp
    【bzoj1814】Ural 1519 Formula 1 插头dp
    【loj2325】「清华集训 2017」小Y和恐怖的奴隶主 概率dp+倍增+矩阵乘法
    【bzoj3518】点组计数 欧拉函数(欧拉反演)
    【bzoj5099】[POI2018]Pionek 双指针法
    【bzoj4311】向量 线段树对时间分治+STL-vector维护凸包
  • 原文地址:https://www.cnblogs.com/wt11/p/9601252.html
Copyright © 2011-2022 走看看