算法复杂度、python混编

1 算法复杂度

https://zhuanlan.zhihu.com/p/50479555

# 数据结构和算法是程序的基石
    -所有的数据类型其实就是一种数据结构  # 数据的组织形式
    -写的程序逻辑就是算法
    
# 算法:
    -是指用来操作数据、解决程序问题的一组方法
    -对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,
     但在过程中消耗的资源(空间复杂度)和时间(时间复杂度)却会有很大的区别
    
    -时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
	-空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述
    
    -大O符号表示法     T(n) = O(f(n))
      常数阶    O(1)
      对数阶    O(logN)
      线性阶    O(n)
      线性对数阶 O(nlogN)
      平方阶    O(n²)
      立方阶    O(n³)
      K次方阶   O(n^k)
      指数阶    (2^n)
        
        
# Python:常用的排序算法  # 冒泡、快排、希尔  背一下
  https://www.cnblogs.com/wuxinyan/p/8615127.html

2 python与其他语言混编

# Python和go/java/c语言混编
  指的是python 调用其他语言写好的程序  eg: go和C 编译完的动态链接库文件、Java的jar包

# 1 动态链接库(dll、so文件)
    是一种不可执行的二进制程序文件,它允许程序共享执行特殊任务所必需的代码和其他资源
    # 简单讲:是一个包含函数和数据的模块,它可以被其他模块(应用程序exe 或 DLL)使用
    
    Linux下的动态库以.so 结尾
    Windows下的动态库以.dll结尾
    
    
# 2 go 和 c 编译成可执行文件的区别
    go语言编译程序,把所有代码都编译到一个可执行文件
    
    c语言编译程序,支持主程序编译到一个可执行文件
     其他资源代码可编译到动态链接库中,主程序来调用即可  # 节约主程序(可执行文件)的大小
    
    
# 3 Python调用动态链接库(so、dll)
    
    from ctypes import *
    # ----------以下四种加载DLL方式皆可—————————
    # pDLL = WinDLL("./myTest.dll")
    # pDll = windll.LoadLibrary("./myTest.dll")
    # pDll = cdll.LoadLibrary("./myTest.dll")
    pDll = CDLL("./myTest.dll")

    # 调用动态链接库函数
    res = pDll.sum(1,2)
    # 打印返回结果
    print(res)
    
    
# 4 Python调用java的jar包
    百度
    
# 5 go 写的代码编译成 动态链接库文件
    https://zhuanlan.zhihu.com/p/355538331
    
    
# 6 什么场景使用  
    安全性 和 执行速度高的代码 可用其他语言编写,编译so文件,python再调用
    
  # eg:
    -生成支付连接的方法
     因为python开源,没有加密一说。  # so文件 可调试,不可反编译
    
    -雪花算法
     用go编写so文件,python调用
posted @ 2023-02-02 16:27  Edmond辉仔  阅读(11)  评论(0编辑  收藏  举报