单例模式

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

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

  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. Java 实现 海康摄像头抓拍图像 Windows、Linux

    先抱怨一下,打死都想不到,海康的摄像头SDK居然是一个Java类,还有必须的两个jar包(jna.jar,examples.jar).鬼能想得到会这么命名. 下面开始吧. Windows 把从官网下载 ...

  2. vue中的常用三元

    点击事件的三元 <el-button type="primary" @click="edit == 'mod' ? sureModify() : submit()& ...

  3. 进程、线程、协程的基本解析(python代码)

    进程什么是进程?程序就是一堆放在磁盘上的代码,进程是一段程序的运行过程正规点说,进程一般由程序.数据集.进程控制块三部分组成 什么进程切换?进程切换是,一个正在运行的进程被中断,操作系统指定另一个进程 ...

  4. 【Day1】3.数据类型

     视频地址(全部) https://edu.csdn.net/course/detail/26057 课件地址(全部) https://download.csdn.net/download/gentl ...

  5. Active Directory participation features and security extensions

    Participation in the Active Directory Samba 3.0 series, as well as the OS since Windows 2000, is pos ...

  6. electron api sendInputEvent 源码

    electron-master\electron-master\shell\browser\api\atom_api_web_contents.cc // Copyright (c) 2014 Git ...

  7. 【转】草根老师的 linux字符设备驱动详解

    Linux 驱动 之 模块化编程 Linux 驱动之模块参数和符号导出 Linux 设备驱动之字符设备(一) Linux 设备驱动之字符设备(二) Linux 设备驱动之字符设备(三)

  8. 1.1.EJB概述

    1.EJB概述: Enterprice JavaBeans是一个用于分布式业务应用的标准服务端组件模型.采用Enterprice JavaBeans架构编写的应用是可伸的.事务性的. 多用户安全的.采 ...

  9. 1.opencv_画图

    #导入工具包 import numpy as np import cv2 import matplotlib.pyplot as plt # 定义显示图片 def show(image): plt.i ...

  10. [工具] fierce--子域收集

    简介 fierce 是使用多种技术来扫描目标主机IP地址和主机名的一个DNS服务器枚举工具.运用递归的方式来工作.它的工作原理是先通过查询本地DNS服务器来查找目标DNS服务器,然后使用目标DNS服务 ...