• Backen-Development record 1


    单例模式

    在应用这个模式时,单例对象的类必须保证只有一个实例存在。

    服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。

    1. __new__实现
    2. 用装饰器实现单例模式

    普通、静态方法、类方法

    普通方法传入的第一个参数必须是self(当然也可以不用self,官方要求尽量用self),self是指实例对象本身;

    静态方法无需传参;

    类方法传入的第一个参数必须是class,是指类本身。

    并发

    Python的内存利用率

    使用多线程:单核100% 双核不到50% 四核不到30%,涉及到叫GIL(全局解释器锁)的东西

    但是多线程还是很有用的,比如网络爬虫、文本处理等等。这时候由于网络情况和I/O的性能的限制,

    Python解释器会等待读写数据的函数调用返回,这个时候就可以利用多线程库提高并发效率了。

    需要使用多进程;

    Java使用多线程则可以达到100%利用率

    生产者-消费者模式

    通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯

    队列在并发开发中最常用的。

    我们借助「生产者/消费者」模式来理解:生产者把生产的「消息」放入队列,消费者从这个队列中对去对应的消息执行。

    事务:select @@tx_isolation

    概念:应用程序中一系列操作,所有操作必须成功完成,否则每个操作中所作的所有更改都会被撤消。

    结束条件

    1.事务中步骤全部成功执行,事务提交

    2.如果其中一个步骤失败,发送回滚操作,前面步骤取消

    四个特征

    原子性:数据库逻辑单位,要么各操作都做,要么都不做

    一致性:数据库只包含成功事务提交的结果

    隔离性:一个事务的执行不能被其他事务干扰

    持续性:一个事务一旦提交,他对数据库中的数据改变就是永久性的

    四种隔离级别

    SQL标准定义了4类隔离模式,用来限定事务内外的哪些改变是可见的,哪些是不可见的。

    • read uncommit读取未提交内容:所有事务都能看到其他未提交事务的执行结果。
    • read commit读取提交内容:(大多数据库系统的默认级别,非mysql),一个事务只能看见已经提交事务所作的改变。
    • repeatable read可重读:(Mysql默认),他确保同一事务的多个实例在并发读取数据时看到同样的数据行。
    • serializable可串行化:最高的隔离级别,强制事务排序,使之不能相互冲突,在每个读的数据行上加上共享锁。

    Redis

    nosql 开源,C语言编写的、Key-Value内存告诉数据库,

    存储类型string、list、set、set、hash ,单个value的最大限制是1GB,

    队列技术,串行访问,单进程单线程

    数据淘汰策略:

    1.从已设置过期时间的数据集中挑选最近最少使用的数据淘汰
    2.从已设置过期时间的数据集中挑选要过期的数据淘汰
    3.从已设置过期时间的数据集中任意选择数据淘汰

    服务器

    1.买一个云服务器,得到公网ip

    2.linux用SSL打开服务器,windows使用putty打开服务器

    3.运行的时候创建虚拟环境

    4.传输python项目文件(FileZilla)

    4.安装一个screen(python)将程序在后头运行

    web服务器

    B/S架构,Apache:socker监听,工作队列。

    客户端发送请求,服务器解析请求,读取其他信息,完成请求动作,关闭文件和网络连接

    如何在云服务器运行多个python脚本

    1. 多终端运行:开sshd服务,安装xshell,多开些会话
    2. 后台运行:nohup xx.py;
    3. 守护进程方式:uwsgi/gunicorn/supervisor;
    4. docker方式:docker镜像,运行container

    python事件驱动模型(IO模型)

    事件驱动编程是一种编程范式,这里程序的执行流由外部事件来决定。

    它的特点是包含一个事件循环,当外部事件发生时使用回调机制来触发相应的处理。

    Linux

    io模式

    1. 阻塞 I/O(blocking IO)
    2. 非阻塞 I/O(nonblocking IO)
    3. I/O 多路复用( IO multiplexing)
    4. 信号驱动 I/O( signal driven IO)
    5. 异步 I/O(asynchronous IO)

    通信

    • 管道:进程间通信
    • 消息队列:消息的链表存放在内核中
    • SOCKET:它可用于不同机器间的进程通信

    负载均衡

    主要作用是将大量作业合理地分摊到多个操作单元上进行执行,用于解决互联网架构中的高并发和高可用的问题

    DNS服务器里可以内部负载均衡和全局负载均衡

    缓存存储静态内容、根域名服务器、顶级域名、权威域名

  • 相关阅读:
    技本功丨收藏!斜杠青年与你共探微信小程序云开发(下篇)
    技本功丨收藏!斜杠青年与你共探微信小程序云开发(中篇)
    2-4-2-6HTML文件标签
    2-4-1-4——2-4-1-5HTML快速入门
    2-4-1-1——2-4-1-3HTML介绍
    redis
    2-1-2-06 获取class对象的三种方式
    2-1-2-05反射概述
    Java面试题
    servlet和http请求协议
  • 原文地址:https://www.cnblogs.com/kumata/p/9888497.html
Copyright © 2020-2023  润新知