笔记

2019-11-29  本文已影响0人  墨流引

读文件,关文件

f = open('somefile.txt', 'rt')
# 打开一个文件
data = f.read()     # 读取文件
f.close()           # 关闭文件

# 使用with语句可以不用手动关闭文件
# 使用带有 rt 模式的 open() 函数读取文本文件。如下所示:
with open('somefile.txt', 'rt') as f:
    data = f.read()

# Iterate over the lines of the file
with open('somefile.txt', 'rt') as f:
    for line in f:
        pass
        # process line
        
# 类似的,为了写入一个文本文件,使用带有 wt 模式的 open() 函数, 如果之前文件内容存在则清除并覆盖掉。如下所示:
# Write chunks of text data
with open('somefile.txt', 'wt') as f:
    f.write(text1)
    f.write(text2)
    ...

# Redirected print statement
with open('somefile.txt', 'wt') as f:
    print(line1, file=f)
    print(line2, file=f)
    ...

# 如果是在已存在文件中添加内容,使用模式为 at 的 open() 函数。

读写文件参考

算法,快排


def quick_sort(L):
    return q_sort(L, 0, len(L) - 1)

def q_sort(L, left, right):
    if left < right:
        pivot = Partition(L, left, right)

        q_sort(L, left, pivot - 1)
        q_sort(L, pivot + 1, right)
    return L

def Partition(L, left, right):
    pivotkey = L[left]

    while left < right:
        while left < right and L[right] >= pivotkey:
            right -= 1
        L[left] = L[right]
        while left < right and L[left] <= pivotkey:
            left += 1
        L[right] = L[left]

    L[left] = pivotkey
    return left

L = [5, 9, 1, 11, 6, 7, 2, 4]

print(quick_sort(L))

快速排序参考

排序参考

冒泡

def bubbleSort(arr):
    for i in range(1, len(arr)):
        for j in range(0, len(arr)-i):
            if arr[j] > arr[j+1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]
    return arr
冒泡排序

装饰器

一个装饰器就是一个函数,它接受一个函数作为参数并返回一个新的函数。 当你像下面这样写:

@timethis
def countdown(n):
    pass

跟像下面这样写其实效果是一样的:

def countdown(n):
    pass
countdown = timethis(countdown)

字符串匹配(kmp)

阮一峰 - 字符串匹配的KMP算法

kmp

github-KMP-Algorithm-Swift

单例模式

单例

二分查找

def binarySearch (arr, l, r, x): 
    # 基本判断
    if r >= l: 
        mid = int(l + (r - l)/2)
        # 元素整好的中间位置
        if arr[mid] == x: 
            return mid 
          
        # 元素小于中间位置的元素,只需要再比较左边的元素
        elif arr[mid] > x: 
            return binarySearch(arr, l, mid-1, x) 

        # 元素大于中间位置的元素,只需要再比较右边的元素
        else: 
            return binarySearch(arr, mid+1, r, x) 
    else: 
        # 不存在
        return -1
  
# 测试数组
arr = [ 2, 3, 4, 10, 40 ] 
x = 10
  
# 函数调用
result = binarySearch(arr, 0, len(arr)-1, x) 
  
if result != -1: 
    print ("元素在数组中的索引为 %d" % result )
else: 
    print ("元素不在数组中") 

redis持久化的两种方式(关系型和非关系型的区别)

Linux命令(查内存,服务器内存,查当前运行进程数,打开文件的五种方式)

日志排错

grep在文件文本里过滤错误

怎么在代码里生成日志

深浅拷贝,乐观锁,悲观锁

乐观锁

悲观锁

订单

二叉树遍历,

二叉树遍历

python实现二叉树遍历

python实现二叉树和它的七种遍历

单双链表,

什么是单双链表

单向链表包含两个域,一个是信息域,一个是指针域。也就是单向链表的节点被分成两部分,一部分是保存或显示关于节点的信息,第二部分存储下一个节点的地址,而最后一个节点则指向一个空值。

[图片上传失败...(image-8a1eae-1575031571114)]

python实现单链表、双链表、循环链表

爬楼梯(动态规划)

漫画:什么是动态规划?

十级楼梯,每次只走一步或者两步,有几种走法

def dynamicProgram(n):
    if n < 1:
        return 0
    if n == 1:
        return 1
    if n == 2:
        return 2
    
    a=1
    b=2
    temp=0
    while i<=n:
        temp = a+b
        a,b = b,temp
    return temp

dynamicProgram(10)

线程协程进程

线程和进程和协程

进程是什么呢?

直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。

线程又是什么呢?

线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。

对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。

协程,英文Coroutines,是一种比线程更加轻量级的存在。正如一个进程可以拥有多个线程一样,一个线程也可以拥有多个协程。

协程的开销远远小于线程的开销。

进程和线程、协程的区别

1、进程多与线程比较

线程是指进程内的一个执行单元,也是进程内的可调度实体。线程与进程的区别:
1) 地址空间:线程是进程内的一个执行单元,进程内至少有一个线程,它们共享进程的地址空间,而进程有自己独立的地址空间
2) 资源拥有:进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源
3) 线程是处理器调度的基本单位,但进程不是
4) 二者均可并发执行

​ 5) 每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口,但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制

2、协程多与线程进行比较

​ 1) 一个线程可以多个协程,一个进程也可以单独拥有多个协程,这样python中则能使用多核CPU。

​ 2) 线程进程都是同步机制,而协程则是异步

​ 3) 协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态

python可以通过 yield/send 的方式实现协程。在python 3.5以后,async/await 成为了更好的替代方案。

RSA、DSA

RSA 与 DSA 都是非对称加密算法。其中RSA的安全性是基于极其困难的大整数的分解(两个素数的乘积);DSA 的安全性是基于整数有限域离散对数难题。基本上可以认为相同密钥长度的 RSA 算法与 DSA 算法安全性相当。

RSA、DSA

高并发

超买,各种支付方式

计算机思维题

前端,display漂浮,

程序员小灰合集 https://www.cnblogs.com/shi-zhe/p/11728374.html

上一篇 下一篇

猜你喜欢

热点阅读