单例模式

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

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

  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服务器里可以内部负载均衡和全局负载均衡

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

Backen-Development record 1的更多相关文章

  1. [转] Agile Software Development 敏捷软件开发

    原文作者:kkun 原文地址:http://www.cnblogs.com/kkun/archive/2011/07/06/agile_software_development.html 敏捷是什么 ...

  2. 微软职位内部推荐-Software Development Engineering II

    微软近期Open的职位: Job Title: Software Development Engineering II Work Location: Suzhou, China Enterprise ...

  3. 微软职位内部推荐-Senior Development Engineer

    微软近期Open的职位: Job Title: Senior Software Development Engineering Work Location: Suzhou, China Enterpr ...

  4. 微软职位内部推荐-Software Development Engineer 2

    微软近期Open的职位: SDE II Organization Summary: Engineering, Customer interactions & Online (ECO) is l ...

  5. 敏捷软件开发 Agile software Development(转)

    原文链接: http://www.cnblogs.com/kkun/archive/2011/07/06/2099253.html 敏捷软件开发 Agile software Development ...

  6. 微软职位内部推荐-Software Development Engineer II

    微软近期Open的职位: Job Title:Software Development EngineerII Division: Server & Tools Business - Comme ...

  7. 微软职位内部推荐-Sr Development Lead-OSG-IPX

    微软近期Open的职位: Job Summary:Be part of Microsoft's strategy to deliver a great input experience across ...

  8. Step-by-Step Guide to Portal Development for Microsoft Dynamics CRM - 摘自网络

    The Challenge Oftentimes in the world of Dynamics CRM, the need arises for non-CRM users to gain acc ...

  9. Using QEMU for Embedded Systems Development

    http://www.opensourceforu.com/2011/06/qemu-for-embedded-systems-development-part-1/ http://www.opens ...

  10. Software development skills for data scientists

    Software development skills for data scientists Data scientists often come from diverse backgrounds ...

随机推荐

  1. The method getContextPath() from the type HttpServletRequest

    在做java项目开发的时候,jsp页面很容易报出这个错误. 错误的原因很多,但是都和JRE有关. 一般在导入项目的时候容易报出这个错误,主要因为JRE(jdk版本不一致). 解决方法:就是重新配置路径 ...

  2. css————关于margin:0px auto的几个居中问题

    前言 margin:0px auto;适用于指定了固定宽度的div与其它元素,比如p,img等,使用 margin:0px auto,居中是大家在做css div定位时的最常用方法,但是据我自己的使用 ...

  3. 【Git的基本操作九】ssh免密登录

    SSH免密登录 1. 进入用户家目录 cd ~ 2. 删除原有的 .ssh 目录 rm -r .ssh 3. 运行命令生成 .ssh 目录 ssh-keygen -t rsa -C github或gi ...

  4. VSCode中Markdown目录显示异常

    更新最新的VSCode之后编辑Markdown文件发现TOC标签的目录格式异常,发现是因为行尾字符导致,必须设置行尾字符进行解决.

  5. 链接进入react二级路由,引发的子组件二次挂载

    这个问题很怪,我两个二级路由从链接进入的时候,会挂载两次子组件. 从链接进入,是因为新页面在新标签页打开的. 有子组件是因为公共组件提取 同样的操作,有一些简单的二级路由页面,就不会挂载两次. 讲道理 ...

  6. Apache Shiro漏洞复现

    利用burp dns进行检测,脚本如下: import sys import uuid import base64 import subprocess from Crypto.Cipher impor ...

  7. Java SE 核心 I

    Java SE 核心 I 1.Object类 在 Java 继承体系中,java.lang.Object 类位于顶端(是所有对象的直接或间接父类).如果一个类没有写 extends 关键字声明其父类, ...

  8. three.js之正投影摄像机与透视投影摄像机的区别

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. manjaro开机出现grub 解决办法

    # 第一步:输入ls出现(hd0,msods1),(hd0,msdos5),(hd0,msods7)# 不同的电脑不一样,这是我电脑中的磁盘分区,和系统中的表示方法不一样,# linux中一般是/de ...

  10. vue+django前后端项目部署

    一.python3的安装 1.安装python前的库环境: yum install gcc patch libffi-devel python-devel zlib-devel bzip2-devel ...