自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

皮皮周

python,后端

原创 使用乐观锁解决超卖问题的代码实现

问题:下单成功的条件是什么? 结果:首先库存大于购买量,然后更新库存和销量时原始库存没变。 结论:所以在用户库存满足的情况下,如果更新库存和销量时原始库存有变,那么继续给用户下单的机会。 实现代码 # 2, 订单提交 class OrderCommitView(MyLoginRequiredMix...

2019-11-29 11:29:29

阅读数 6

评论数 0

原创 解决秒杀系统超卖问题的三种方案

在秒杀系统设计中,超卖是一个经典、常见的问题,任何商品都会有数量上限,如何避免成功下订单买到商品的人数不超过商品数量的上限,这是每个抢购活动都要面临的难点。 一、问题描述 在多个用户同时发起对同一个商品的下单请求时,先查询商品库存,再修改商品库存,会出现资源竞争问题,导致库存的最终结果出现异常。问...

2019-11-29 11:07:58

阅读数 27

评论数 0

原创 Nginx7 - 扩展Nginx与Tomcat

介绍完Nginx的功能,本篇介绍一下Nginx的扩展,Nginx与Tomcat的区别。 一、Nginx简介 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万...

2019-11-28 23:45:52

阅读数 6

评论数 0

原创 Github注册问题解决方案

Unable to verify your captcha response. Please visit https://help.github.com/articles/troubleshooting-connectivity-problems/#troubleshooting-the-capt...

2019-11-28 22:06:19

阅读数 19

评论数 0

原创 Nginx6 - Ubuntu下Django项目部署反向代理动态业务

在上一篇Nginx5 - Ubuntu下Django项目部署静态数据部署完成后,发现动态业务无法访问。原因是Nginx服务器无法找到tb商场服务器。 这篇我们使用Nginx的反向代理,部署tb商场服务器。 一、部署tb商城服务器 准备生产环境配置文件 复制开发环境配置文件dev.py到生产环...

2019-11-26 12:10:59

阅读数 14

评论数 0

原创 Nginx5 - Ubuntu下Django项目部署静态数据

当Django运行在生产环境时,将不再提供静态文件的支持,需要将静态文件交给静态文件服务器。我们需要收集项目中静态文件,并放到静态文件服务器中。我们使用Nginx服务器作为静态文件服务器。 一、收集项目静态文件 配置收集静态文件(settings.py) STATIC_ROOT = ...

2019-11-26 11:43:25

阅读数 11

评论数 0

原创 Nginx4 - 动静分离解析

动静分离

2019-11-26 11:29:53

阅读数 10

评论数 0

原创 Nginx3 - 负载均衡

负载均衡

2019-11-26 10:59:14

阅读数 13

评论数 0

原创 Nginx2 - 正向代理与反向代理

在上一篇中已经介绍了Nginx的基本理论Nginx1 - 理论解析,这篇介绍一下Nginx的正向代理与反向代理。 一、代理 在说正向代理和反向代理之前,先说说代理。 给某个对象提供了一个代理对象,并由代理对象控制原对象的引用。简单说,我们想做什么,不直接去找,而是找个人帮我们去做,这就是日常生活...

2019-11-25 23:05:30

阅读数 10

评论数 0

原创 Nginx1 - 理论解析

一、Nginx简介 Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。 二、Nginx的主要使用功...

2019-11-25 22:26:51

阅读数 9

评论数 0

转载 Python中sort ()与 sorted() 区别

一、描述 sort 与 sorted 区别: sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。 list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础...

2019-11-25 10:39:31

阅读数 8

评论数 0

原创 广州Python面试总结2 - 基础知识笔试题(来源广州Python近期面试笔试题)

一、笔试题问题 叙述操作系统中进程、线程、协程的区别,以及适用场景。 选择自己了解的几种Python后台框架(Flask、Django、Tornado),说明其优缺点。 消息队列的使用场景有哪些。 选择一个自己熟悉的数据库,MySQL或MongoDB回答下面的问题: a. 从user...

2019-11-23 13:33:11

阅读数 15

评论数 0

原创 广州Python面试总结 - 冒泡算法 二分查找算法(Python笔试)

一、近期面试笔试题 冒泡算法 --》请手写一个冒泡算法? 二分查找算法 --》请用C/C++、Java、Python其中一个编程语言实现二分查找算法;给定一个有序(升序)整型数组A,可含有重复元素,找出最小的下标L,使得A[i]等于整数target,下标不存在则返回-1。 冒泡算法和二分查找...

2019-11-21 19:36:54

阅读数 109

评论数 0

原创 Redis缓存有效期 过期策略 缓存淘汰策略 缓存淘汰机制

一、前言 - 有效期 Redis作为当前最常用的开源内存数据库,性能十分高,但是长期将Redis作为缓存使用,难免会遇到内存空间存储瓶颈,所以对于保存的数据一般我们会设置有效期。一是节省空间,二是做到数据弱一致性,有效期失效后,可以保证数据的一致性。 二、Redis的过期策略 过期策略有以下三种...

2019-11-17 22:59:49

阅读数 10

评论数 0

原创 Redis面试七连问,你知道哪些?

Redis常用面试题 使用Redis有哪些好处? MySQL里有2000w的数据,Redis只存20w的数据,如何保证Redis中的数据都是热点数据? 请用Redis和Python实现一段恶意登录保护的代码,限制1小时内每用户id最多只能登录5次。 Redis持久化的几种方式? Re...

2019-11-17 11:01:12

阅读数 9

评论数 0

原创 关于Redis持久化的几种方式、优缺点、区别

一、Redis简单介绍 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库...

2019-11-16 21:32:23

阅读数 11

评论数 0

转载 Python——画一棵漂亮的樱花树(不同种樱花+玫瑰)

最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成喔~) one 樱花树 动态生成樱花 效果图(树是随机画的): 代码: import turtle as T import...

2019-11-16 10:58:05

阅读数 135

评论数 0

原创 项目架构 - B/S C/S它们的优缺点 B/S C/S的区别

111

2019-11-16 10:24:00

阅读数 54

评论数 0

原创 缓存问题 - 缓存雪崩 缓存穿透 缓存击穿

在面试中,redis常被问到的问题可能就是缓存问题了,今天就简单的为大家介绍一下Redis的雪崩、穿透、击穿三个问题的原因、用案例解释造成的原因以及解决办法。 一、缓存处理流程 前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到...

2019-11-16 00:04:18

阅读数 22

评论数 0

原创 测试报告原理 Export Test Results工具使用 自动化测试登录页面 HTML TestRunner实现自动化测试 自动监测并生成测试报告案例

在使用自动化测试登录页面前,先学习一下理论。什么是HTML测试报告?为什么要生成测试报告?以及生成测试报告的方式。 一、什么是HTML测试报告 概念:HTML测试报告就是执行完测试用例后以HTML(网页)方式将执行结果生成报告。 二、为什么要生成测试报告 测试报告是本次测试目的最终体现形态 测...

2019-11-14 21:30:26

阅读数 49

评论数 0

原创 使用Selenium库时Message: 'chromedriver' executable needs to be in PATH问题的两种解决办法

问题原因 今天我在使用Selenium库时,打开chrome浏览器出现错误,运行代码如下: from selenium import webdriver driver=webdriver.Chrome() driver.get("https://www.baidu.com") ...

2019-11-13 16:45:32

阅读数 9

评论数 0

原创 测试模型 V模型 W模型(双V模型) H模型 优缺点解析

测试模型

2019-11-11 19:04:32

阅读数 128

评论数 0

原创 软件测试的发展 软件测试的定义 软件测试的目的 软件测试的原则

软件测试的发展 软件测试的定义 软件测试的目的 软件测试的原则

2019-11-11 16:53:47

阅读数 21

评论数 0

原创 软件开发模型 - 瀑布模型 快速原型模型 增量模型 螺旋模型 及优缺点详解

软件开发过程模型 软件开发模型(Software Development Model)是指软件开发全部过程、活动和任务的结构框架。软件开发包括需求、设计、编码和测试等阶段,有时也包括维护阶段。 软件开发模型(目的)能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项...

2019-11-11 14:21:59

阅读数 54

评论数 0

原创 Android模拟器之Genymotion VirtualBox 安装 使用教程

在日常移动端测试时,有这样一款神器可以帮助我们更好的工作,那就是Genymotion。 Genymotion的优点 提供最好的Android模拟体验,支持全屏,支持同时启动多个模拟器; 支持OpenGL加速,提供最好的3D性能体验; 支持传感器管理,如电池状态,GPS,Accelerator加速...

2019-11-10 18:57:07

阅读数 19

评论数 0

原创 主流消息队列RabbitMQ Kafka ActiveMQ RocketMQ使用对比

消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以简单地描述为:当不需要立即获得结果,但是并发量又需要进行控制的时候,差不多就是需要使用消息队列的时候。 消息队列主要解决了应用耦合、异步处理、流量削锋等问题。 当前使用较多的消息队列有...

2019-11-10 11:30:02

阅读数 15

评论数 0

原创 RabbitMQ使用场景介绍

RabbitMQ 简介 RabbitMQ是使用Erlang语言开发的开源消息队列系统,基于AMQP协议来实现。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、 安全。AMQP协议更多用在企业系统内,对数据一致性、稳定性和可靠性要求很高的场景,对性能和吞吐量的要求还在其次...

2019-11-10 10:03:52

阅读数 14

评论数 0

原创 RabbitMQ详解 原理解析

学习过前端的同学可能知道,这两行代码的是自上而下执行的,但必须是短信发送成功页面才开始倒计时,但如果当前网速不好,短信也就会被阻塞,那么倒计时也就会延迟。这样在实际使用中用户体验是不是很不好呢? 生产者消费者设计模式 要解决这个问题,我先介绍一下生产者消费者设计模式,那什么是生产者消费者设计模式呢...

2019-11-10 00:04:32

阅读数 16

评论数 2

原创 python语言的应用场景及就业方向 详情介绍及选择建议

python的应用场景 Web应用开发 Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。Python定义了WSGI标准应用接口来协调Http服务器与基于Python的Web程序之间的通信。一些Web框架,如Django,Fla...

2019-11-09 20:53:05

阅读数 31

评论数 0

转载 秒杀系统(2)- 电商 秒杀系统 搭建常遇到的问题 解决办法

1.对现有网站业务造成冲击 秒杀活动只是网站营销的一个附加活动,这个活动具有时间短,并发访问量大的特点,如果和网站原有应用部署在一起,必然会对现有业务造成冲击,稍有不慎可能导致整个网站瘫痪。 解决方案:将秒杀系统独立部署,甚至使用独立域名,使其与网站完全隔离。 2.高并发下的应用,数据库负载...

2019-11-08 14:42:51

阅读数 10

评论数 0

原创 秒杀系统(1)-秒杀系统架构设计的关键点

正常电子商务流程 (1)查询商品;(2)创建订单;(3)扣减库存;(4)更新订单;(5)付款;(6)卖家发货 秒杀的特性 (1)低廉价格;(2)大幅推广;(3)瞬时售空;(4)一般是定时上架;(5)时间短、瞬时并发量高 秒杀需解决两个问题 从秒杀的特性(瞬时售空–>页面会在规定时间...

2019-11-08 11:38:59

阅读数 14

评论数 0

原创 selenium-WebDriver元素定位分类

使用WebDriver元素定位的原因 让程序操作指定元素,就必须先找到此元素; 程序不像人类用眼睛直接定位到元素,所以需要使用WebDriver元素定位的方法去定位元素。 WebDriver元素定位方式及使用 id 说明:通过元素的id属性来定位 前提:元素必须有id属...

2019-11-07 20:44:39

阅读数 11

评论数 0

原创 Django与Flask框架对比 详情介绍 示例说明

Django与Flask目前是Python最流行的、热门程度最高的两个框架;不管是初学者学习习也好,面试也好,经常会问两个框架的比较、特点等。而两个框架还是很不一样的。我会以四个方面说一下它们的不同,下面就来看看Django与Flask框架的深度对比吧。 框架模式对比 Django是一个开源的P...

2019-11-07 10:58:14

阅读数 15

评论数 0

原创 数据库概念、分类(按存储方式)详解

数据库概念 数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。 简单的说数据库就是存储数据的仓库。 数据库分类(存储方式划分) 网络数据库 网络数据库是指把数据库技术引入到计算机网络系统中,借助于网络技术将存储于数据库中的大量信息及时发布出去,而计算机...

2019-11-05 16:47:52

阅读数 92

评论数 0

原创 什么是事务?事务的四大特性

什么是事务 事务就是用户定义的一系列执行SQL语句的操作, 这些操作要么完全地执行,要么完全地都不执行, 它是一个不可分割的工作执行单元。 示例:在日常生活中,有时我们需要进行银行转账,这个银行转账操作背后就是需要执行多个SQL语句,假如这些SQL执行到一半突然停电了,那么就会导致这个功能只完...

2019-11-04 16:56:58

阅读数 9

评论数 0

原创 MySQL数据库引擎的详情介绍及存储引擎的选择(InnoDB、MyISAM、MEMORY)

MySQL数据库引擎 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。MySQL的...

2019-11-04 16:11:51

阅读数 7

评论数 0

原创 自动化测试主流的测试工具介绍及使用场景(QTP、Selenium、Jmeter、Loadrunner、Robot framework、Appium)

QTP Selenium Jmeter Loadrunner Robot framework Appium

2019-11-02 12:41:43

阅读数 55

评论数 0

提示
确定要删除当前文章?
取消 删除