zoukankan      html  css  js  c++  java
  • 笔记

    celery异步消息处理框架

    Fastdfs 分布式文件存储系统, 主要用来存储单个较小的文件

    如何将cookie中的数据合并到redis中:

    cookie中只能保存字符串数据, 所以要将购物车数据使用pickie模块dumps序列化转换(装换成二进制字节类型), 然后使用base64编码为字符串, 保存到cookie中

     

    蓝图: 模块化应用, 用来使各个功能模块之间相互解耦

    单例:

    1. new方法:

    Class A(objects):

    __isinstances = None

    Def __new__(cls,*args,**kwargs):

    If  cls.__isinstances == None:
         cls.__isinstances = objects.__new__(cls)

    Return cls.__isinstances

    1. 装饰器用法:
      def func1():

    __isintances= {}

    Def func2(*args,**kwargs):

    If cls not in __isinstances:
    __isintances[cls] = cls(*args,**kwargs)

    Return __isintances[cls]

    Reutrn func2

    @func1

    Class B(objects):

    A = 1

    Def __init__(self,x=0):

    Self.x = x

    数据库隔离级别:

    事务隔离级别

    脏读

    不可重复读

    幻读

    读未提交(read-uncommitted

    会发生

    会发生

    会发生

    不可重复读(read-committed

    避免

    会发生

    会发生

    可重复读(repeatable-read

    避免

    避免

    会发生

    串行化(serializable

    避免

    避免

    避免

     

    串行化, 可重复读, 读已提交, 读未提交

    脏读: 就是指A操作数据库,读取数据默认为0,更改数据+1操作,同时B查询数据库结果为1,

    事务(对于数据库的crud操作)的acid四大特性:

    原子性: 要么执行要么不执行

    一致性: 要么成功要么失败

    隔离性: 多个事务之间互不影响

    持久性: 数据一旦提交更改, 数据将会持久存储

     

    乐观锁机制: 在表中定义一个字段表示version版本号, 在用户下订单(支付)过程中, 先执行查询数据库库存操作, 同时将version号数据读出, 当用户对数据更改后, version自增一, 同时将更改commit数据库更新, 判断版本号 大于原始版本号, 偌大, commit成功.

     

    多线程应用场景: celery,中间件(消息队列), 执程(worker)可以实现分布式部署,只要将worker监听消息队列就行.

    Tcp/udp:

    Tcp 面向连接的可靠传输层协议: 传输数据时需要与对方三次握手建立连接,四次挥手断开连接:传输任务期间, 存在超时重传机制,校验确认机制, 对于系统资源要求较多,连接只能是点对点,注重的是传输质量

    1. 创建socket()对象
    2. 绑定服务器ip,port
    3. 开启listen监听
    4. accept接受连接
    5. 收发数据
    6. 关闭连接

     

    Udp 面向无连接的不可靠传输协议, 无需三次握手四次挥手, 没有确认等机制,只管传数据, 不管你收没收到, 支持一对多, 多对一的场景,注重传输速率.

    1. 创建socket对象
    2. 绑定ip,port信息
    3. 收发数据
    4. 关闭连接

    Ip 网络层传输协议, 进行计算机网络连接进行通信的协议, 不同计算机之间相互通信的一套规则, 把数据统一转换成数据包的格式, 实现传递, ip地址是用来区分因特网中的每台计算机的.

     

    Http 应用层传输协议: 

    多进程: 进程之间内存数据相互独立, 互不共享, 由系统分配资源的基本单位,

    实现数据共享可以通过manager管理器对象,value和array方法将数据共享, 进程间通信可以通过管道或者队列实现(p.put)上传,p.get下载

    多线程: 共享进程中的数据, 会对全局数据更改,  需要加锁threading.lock方法给任务加锁

    cpu调度的基本单位, 基本不占用资源

    线程切换需要先将当前执行状态保存一遍, 然后才进行切换, 涉及到寄存器,栈的操作

    协程: 有我们自己来操控, 可以通过monkey_pathall()方法来监听阻塞操作,存在于线程当中所以无需进行栈的切换,效率更高

     

     

    Git 命令:

    Git clone 克隆到本地

    Git pull(下拉合并到本地)

    Git add(添加到工作区)

    Git cpmmit(提交到本地仓库)

    Git push(提交至远程仓库)

    Git bransh -a列出远程仓库的分支

    Git checkout 切换分支

    Git merage 合并分支

     

    docker容器: 就是一个执行环境

    Docker connteiner

    Docker exec -it 容器名 进入正在运行的容器

     

    Linux 命令:

    Tar zcvf 打包

    Tar zxvf 解包

    Free 查看内存

    Top cup使用率

    Netstat -anp | grep 80监听端口号

    Ps 查看进程

    四剑客:

    find 路径 "匹配方式"/-size 2查找文件

    Grep 满足条件的文件内容

    Awk 精确查找, 对文本内容过滤匹配

    Sed 非交互式文本编辑(-i)彻底更改

     

     

     

     

    迭代器: 如果一个对象它的类实现了iter和next方法,  那么他就是一个迭代器

    生成器: 如果一个函数里面有yeild关键字, 特殊的迭代器, 保存当前程序执行状态, 节省能存, 返回是个对象, 可以通过next方法 取值

    文件处理: with open()as f:

    装饰器: 为原有的函数增加新的功能, 就是一个闭包函数, 函数嵌套, 外层函数返回内层函数对象.

    日志:

    授权: 用户访问当前网页是否被授权:

    Def func(f)

     

     

    面向对象: 相对于面向过程而言

    fastdfs分布式文件存储系统:

    调度服务器, 存储服务器

    存储服务器定时上传状态信息给调度服务器, 当用户需要上传文件时, 调度服务器调用可用的存储服务器, 将存储服务器的ip, port返回给客户端, 客户端直接访问存储服务器实现上传, 上传完成后存储服务器返回给客户端文件名,路径等信息.

     

    Es 基于lucenne引擎的应用框架,  hastack对接安装了es的服务器, 使用时向es服务器发请求.

    原理: 查询时, es自己会将数据库中的数据预处理一边, 建立一份索引, 如果在es中查到数据, 然后再通过索引去数据库查询数据. 减少了用户对数据库的直接全局查询操作, 减轻了数据库服务器压力, 提高了查询效率.

     

     

    Redis 基于key-value型的内存型数据库, 读写效率高, 在未启动服务器的时候将数据持久化存储到硬盘当中, 启动后将数据加载到内存当中.

    单线程操作, 性能受cpu影响

    应用于对于数据处理业务复杂, 安全性较高的系统

    Mongodb 大容量存储, 吃内存, 支持索引, 不支持事务

    应用于大容量数据访问效率问题

    Memcached: 多读少写, 查询用户信息, 好友信息, 图书信息

     

     

    Map filter reduce

    Map: 传入两个参数,  第一个参数是一个函数, 第二个参数是一个序列

    将参数二中的每个元素执行一个第一个函数

    Filter … 

    将参数二中满足函数的元素输出

    Reduce:

    将序列中的元素按照函数进行累计运算

    Python3中reduce被分配到function 模块当中,

    v

     

    django第三方扩展包:

    Django.contrinble.auth   权限认证, 接收request对象authenticate接收两个参数: 用户名和密码, 校验完成返回user对象

     

    django_rest_framework.views 视图类 封装了http请求方法

    Django_http request请求参数 获取cookie request.cookie.get()

    response响应对象(状态码, context响应内容)response.set_cookie()

    权限认证, authenticate()校验用户名密码是否正确

    admin后台管理

    表单 form data ,可以通过request.post来获取

    缓存: cache

    : 自带orm------   crud操作通过模型类名.objects.过滤器实现数据库查询

    通过模型类名.create()创建资源

    通过模型类名.save()修改数据

    所以他是一个重量级框架, 作用是在快速开发

     

    Flask 通过flask_sqlalchemy第三方扩展,来操作数据库

    通过db.session数据库会话增删改数据

    通过模型类名.query对象查询数据库

    查询集:

    惰性执行: 创建查询集并不会马上查询数据库, 只有当程序执行, 访问数据的时候才会发起查询操作

    缓存: 当首次查询的时候会将数据缓存到查询对象中, 再次查询的时候会使用之前查询的数据.

     

    只是一个框架, 大量的功能,需要自己去找扩展包, 自己实现

     

    为避免在每个视图函数中使用重复的代码, flask提供了注册函数功能, 可以在视图函数请求前或之后调用

    请求勾子: 客户端和服务器交互过程中, 需要一些准备工作,  或者扫尾工作

     

    Before_first_request 在处理第一个请求前执行

    Before_request 每次请求前执行

    After_request 如果没有错误, 每次请求后执行, 接受请求构造响应

    Teardown_request 每次请求后执行,  接收错误信息参数, 如果有相关错误抛出

     

    python是一门面向对象动态解释型编程语言

    面向对象: 相对于面向过程而言, 在python一切皆对象, 一个具体的事务就是一个对象

    动态: 在定义变量时, 无需声明它的类型, python自己识别, 当然你也可以自定义

    解释性语言: 在程序执行时才会被翻译成机器语言(二进制语言)

     

    Es 基于lucen的一个搜索引擎, 对数据库中的需要查询的字段给予处理一遍建立一份索引. 查询的时候先通过hastack扩展包向es服务器发起请求, 查找某个关键字在数据库中的索引, 然后再去查询数据库.

    项目中1:install_apps添加 haystack, 2. 配置服务器地址, 3; 创建索引类4. 生成索引 5, 创建视图:定义路由

    在python项目中通过hastack一个接口对接es服务器, 将es部署在docker容器中, 使用的时候通过向es服务器发起请求, 查找商品,

     

     

     

     

    字符串的常见操作:

    1:

     

     

    注册登录过程实现:

    注册: 获取验证码图片和内容, 图片, 验证码内容是前端生成的, 我们首先要将这两者保存到redis中, 通过校验用户输入的手机号, 图片验证码内容, 来获取短信验证码.  (短信验证码是后端服务器生成, 通过第三方平台给用户发过去), 校验用户手机号, 密码, 短信验证码完成注册.

    登录:

  • 相关阅读:
    Mvaen系列第5篇:私服详解(本文内容来自 路人甲java)
    springmvc和springboot做分页查询
    maven详解4:仓库详解
    Maven系列3:详解maven解决依赖问题(该系列从 路人甲java 学习)
    maven学习2:安装、配置、mvn运行(本系列从 路人甲java 学习)
    maven学习系列1:maven入门
    日期格式转换
    springmvc、springboot配置静态资源
    反射
    java中运行python脚本
  • 原文地址:https://www.cnblogs.com/zxt-cn/p/9714908.html
Copyright © 2011-2022 走看看