• MongoDB数据库--扩展Base64,算法


    Python高级

    非关系型数据库(NO-SQL:Not Only SQL)

    非关系型数据库的诞生:随着IT的发展,变革,数据量越来越大,数据之间的关系越来越零散,松散,没有太大的关系,利用关系型数据库已不能更好的满足我们的需求,使用起来非常复杂,浪费大量的空间。为了解决这种问题就出现了一些能处理松散的,数据与数据之间没有太大关系的数据库,即NoSQL非关系型数据库,如MongoDB等

    非关系型数据库适合存放结构松散,相互之间关系不明确的数据

    常用产品:

    MongoDB (文档)

    Redis (键值对)

    HBase (一列列的数据)

    缓存优化 能不用关系型数据库就不用,非要用就减少数据库的使用,将数据写入Redis

    NoSQL数据库的四大分类

    1.键值型

    2.列存储型

    3.文档型,比如MongoDB等

    4.图形

    Base64编码

    Base64编码是一种“防君子不防小人”的编码方式。广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符。 优点:速度快,ascii字符,肉眼不可理解 缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合

    import base64

    str1 = 'nihao,中国!'

    r = base64.b64encode(str1.encode())

    print(r)

    r = base64.b64decode(r)

    print(r.decode())

    for...else while..else

    for i in range(5):

    print(i)

    if i == 3:

    break # 跳出for循环

    else: # 当for循环全部执行完毕才会执行else,没全部执行,如执行了break就不会执行else

    print(i)

    print("end....")

    while循环也是如此,但如果while执行了continue,else也会被执行

    MongoDB

    show dbs 显示所有数据库

    db 当前数据库

    use mydb 创建mydb数据库

    db.student.insert({"sno":1001, "name":"张三"}) 插入数据

    db.dropDatabase() 删除当前数据库

    db.student.drop() 删除集合 删除后如果数据库中没有其他集合,该数据库将会看不到

    db.student.find() 查看文档

    db.student.update({"sno":1001},{$set:{"name":"张三丰"}}) 将学号为1001的学

    生的姓名更改为张三丰

    db.student.remove({"name": "王五"}) 将student表中所有名字叫王五的信息删掉

    如果数据库中没有一个集合是不会显示的,所以show dbs就看不到

    MongoDB的文档不需要设置相同的字段

    集合没有固定的结构,可以插入不同格式和类型的数据

    对象为什么能当做字典来使用,只要实现对象中的getitem就可以当做字典来使用

    MongoDB在Python中使用

    import pymongo

    conn = pymongo.MongoClient()

    # 创建数据库

    db = conn["mydb"]

    # 创建集合

    stus = db["student"]

    s = {"sno": 1001, "name": "张三", "sex": "男"}

    # 向student集合中插入一个文档

    stus.insert_one(s)

    s = {"sno": 1001, "name": "李四", "sex": "男"}

    # 向student集合中插入一个文档

    stus.insert_one(s)

    r = stus.find({"name":"张三"})

    print(r0)

    stus.update_one({"name": "张三"}, {"$set": {"name":"张三丰"}})

    #

    r = stus.delete_many({"name": {"$regex": "^张"}})

    # 删除的个数

    print(r.deleted_count)

    # stus.insert_one(s)

    # stus.remove()

    #查看所有数据库

    #print(conn.list_database_names())

    算法(Algorithm)

    解决某个问题的方法,比如冒泡排序,哈希算法,二分查找算法等

    评估算法优劣:时间复杂度,空间复杂度

    程序本质就是对数据进行处理,想要对数据进行处理,总要有位置放,放就放在存储器,存储器就是内存的容器。存储器分为两种,内存和外存,内存访问速度极快,容量很小,但数据容易流失,外存容量很大,可以持久存放数据,想要把数据存放在外存上需要通过文件,而放在内存上是零散的

    算法的空间复杂度计算的是算法执行过程中需要消耗的存储空间,而原始数据所占的空间并不进行考虑

    同一个算法的时间空间复杂度跟其的规模有关,即时间复杂度和空间复杂度是问题规模n的函数,n越大时间耗费越长

    时间复杂度的衡量一般是基于基本操作(单个操作)的次数

    #时间复杂度o(n)

    #空间复杂度o(1)

    def index(seq, val):

    i = 0

    while i < len(seq):

    if seq[i] == val: return i

    else:

    return -1

    算法的描述方式:

    1.自然语言,比如中文,日文等;

    2.伪代码;即随意,能看懂意思就行

    3.编程语言;最终期望来实现

    重点:

    常用算法:

    排序算法(至少4中:冒泡,选择,插入,快排),查找算法(二分查找算法),哈希算法(时间是最快的,但耗费大量的存储空间),

    记住常用算法的实现

    记住常用算法的时间和空间复杂度

    数据结构(Data Structure)

    数据的一种组织形式,表示方式

    集合:

    线性结构:顺序表、链表、栈、队列、串(字符串)

    树形结构:二叉树、树、森林

    图状结构:像渔网一样,数据之间有千丝万缕的联系

    算法和数据结构是每个程序猿必须要不断修炼的内功!

     

  • 相关阅读:
    软件测试
    软件测试
    软件测试
    软件测试
    软件测试
    软件测试
    软件测试
    软件测试
    软件测试
    When:什么时候做集成测试
  • 原文地址:https://www.cnblogs.com/yanruizhe/p/11426150.html
Copyright © 2020-2023  润新知