自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 问答 (2)
  • 收藏
  • 关注

原创 2020-12-11

SQLAlchemy-ORM 介绍ORM 介绍随着项目越来越大,采用原生 SQL 的方式在代码中会出现大量的SQL语句,对项目的进展非常不利。SQL 语句重复利用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近似的SQL语句。很多SQL语句是在业务逻辑中拼写出来的,如果有数据需要更改,就要去修改这些逻辑,很容易漏掉某些SQL语句的修改。写 SQL 时容易忽略 web 安全问题。ORM:Objiect Relationship Mapping,对象关系映射,通过ORM 我们可以通过

2020-12-23 10:38:36 119

原创 Flask 数据库

数据库介绍数据库存储传统记录数据的缺点不易保存备份困难查找不便现代化手段----文件对于数据容量较大的数据,不能够很好的满足,而且性能较差。不易扩展。数据库持久化存储读写速度极高对程序支持性非常好,容易扩展。我们将来看到的是这个样子的。实际上在网页上展示出来的是理解数据库数据行(记录)数据列(字段)数据表(数据行的集合)数据库(数据表的集合)MySQL 简介MySQL 是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,后来被 Su

2020-12-11 15:54:25 158

原创 蓝图和子域名

蓝图和子域名蓝图之前我们写的 url 和 视图函数都是处在同一个文件,如果项目比较大的话,这显然不是一个合理的结构,而蓝图可以优雅的帮我们实现这种需求。from flask import Blueprintbp=Blueprint('user',__name__,url_prefix='/user/')@bp.route('/')def index(): return '用户首页'@bp.route('profile/')def profile(): return '个人简介

2020-12-06 21:38:05 171

原创 视图高级

视图高级1-类似图类似图之前我们接触的视图都是函数,所以一般简称视图函数。其实视图也可以基于类来实现,类似图的好处是支持继承,但是类似图不能跟函数一样,写完类似图还需要通过 app.add_url_rule(url_rule,view_func)来进行注册。标准类似图标准类似图是继承自 flask.views.View,并且在子类中必须实现 dispach_request 方法,这个方法类似于视图函数,也要返回一个基于 Response 或者其子类的对象。from flask.views imp

2020-11-09 10:17:34 129

原创 Flask 框架——模板

模板1. 模板简介模板模板是一个 web 开发必备的模块。因为我们在渲染一个网页的时候,并不是只渲染一个纯文本字符串,而是需要使用模板了。在 Flask 中,配套的模板是 Jinja2, Jinja2 的作者也是 Flask 的作者。这个模板非常的强大,并且执行效率高。以下对 Jingja2 做一个简单介绍!Flask 渲染 Jinja 模板要渲染一个模板,通过 render_template 方法即可。from flask import Flask,reder_templateapp=Fla

2020-11-08 22:56:13 514

原创 Flask 框架——Flask 视图和 URL

Flask 视图和 URL1.虚拟环境为什么需要虚拟环境到目前为止,我们所有的第三方安装都是直接通过pip install xx 的方式进行安装的,这样安装会将那个包安装到你的系统级的 Python 环境中。但是这样有一个问题,就是如果你出现在用 Django 1.10.x 写了个网站,然后你的领导跟你说,之前有一个旧项目是用 Django 0.9 开发的,让你来维护,但是 Django 1.10 不再兼容 Django 0.9 的一些语法了。这时候就会碰到一个问题,我如何在我的电脑中同时拥有 Dja

2020-10-20 17:02:01 304

原创 项目前导 九

Vue基本使用1 计算属性和监听器计算属性和监听器一般情况下属性都是放到 data 中的,但是有些属性可能是需要经过一些逻辑计算后才能得出来,那么我们可以把这类属性变成计算属性。<div id="app"> <label for="length">长:</label> <input type="number" name="length" v-model:value="length"> <label for="width"&

2020-09-29 11:12:55 118

原创 项目前导 八

Vue 基本使用1 Vue介绍VSCode 插件安装后面开发 Vue 项目,使用 .Vue 的单文件开发,就需要一些插件来帮我们识别 .Vue 文件。插件安装在 Extension 中,点开即可看到一个搜索按钮,可以输入关键字搜索自己想要的插件。这里我们开发 Vue 推荐的几个插件:1.jshint:js 代码规范检查。2.Beautify:一键美化代码的插件。3.Vetur:.vue 文件识别插件。4.Javascript(ES6) code snippets:ES6 语法提示。5.Au

2020-09-28 10:41:05 203

原创 项目前导 七

Git1 初始 Git什么是 GitGit 是一个分布式的版本控制软件。软件:类似于 QQ、office 等安装到电脑上才能使用的工具。版本控制:类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据。分布式:文件夹拷贝本地版本控制集中式控制分布式控制为什么要做版本控制要保留之前所有的版本,以便回滚和修改。安装 GitGit 地址:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3

2020-09-27 16:45:51 158

原创 项目前导六

Redis1 布隆过滤器我们前面有讲到过 HyperLogLog 可以用来做基数统计,但它没提供判断一个值是否存在的查询方法,那我们如何才能查询一个值是否存在于海量数据之中呢?如果使用传递的方式,例如 SQL 中的传统查询,因为数据量太多,查询效率又低有占用系统的资源2,因此我们需要一个优秀的算法和功能来实现这个需求,这是我们今天要讲的——布隆过滤器。开启布隆过滤器在 Redis 中不能直接使用布隆过滤器,但我们可以通过 Redis 4.0 版本之后提供的 modules (扩展模块)的方式引入,本

2020-09-20 21:27:31 116

原创 项目前导 五

redis (三)1.Redis 事物前言事物指的是提供一种将多个命令打包,一次性按顺序地执行的机制,并且保证服务器只有在执行完事物中的所有命令机制后,才能继续处理客服端的其它命令。事物也是其它关系型数据库所必备的基础功能,以支付的场景为例,正常情况下只有正常的消费完成之后,才会减去账户余额。但是没有事物的保障,可能会发生消费失败了,但依旧会把账户的余额给扣减了,我想这种情况下应该任何人都无法接受吧?所以事物是数据库中一项非常重要的基础功能。事物基本使用事物在其它语言中,一般分为以下三个阶段:

2020-09-19 20:29:49 169

原创 项目前导 四

redis (2)1 Redis 与 Python 交互Python 操作 Redisredispy安装及链接安装 Redis 扩展pip install redis连接r=redis.StrictRedis(host='localhost' , port=6379,db=0)字符串相关操作import redisclass TsetString(object): def __into__(self): self.r=redis.StrictRedis(hos

2020-09-14 17:56:33 151

原创 项目前导 三

Linux 高级命令重定向命令重定向命令的介绍重定向也称为输出重定向,把在终端执行命令的结果保存到目标文件。重定向命令的使用命令说明>如果文件存在会覆盖原有文件内容,相当于文件操作中的 ‘w’ 模式>>如果文件存在会追加写入文件末尾,相当于文件操作中的 ‘a’ 模式说明: 只要在终端能显示信息的命令都可以使用重定向,比如:tree小结终端内容保存到文件使用重定向有两种方式; > 和 >>。'>'表示每次只写入最新

2020-09-07 11:01:42 163

原创 项目前导 二

二、Linux 高级命令2.1 重定向命令的介绍重定向命令的介绍重定向也称为输出重定向,把在终端执行命令的结果保存到目标文件。重定命令的使用命令说明>如果文件存在会覆盖原有文件内容,相当于文件操作中 ‘w’ 模式>>如果文件存在会追加写入文件末尾,相当于文件操作中的 ‘a’ 模式说明: 只要在终端能显示信息的命令都可以使用重定向,比如:tree.小结终端内容保存到文件使用重定向有两种方式:> 和 >>‘>’ 表示

2020-08-31 17:33:11 235

原创 项目前导 一

一 Linux基础命令1.1 操作系统介绍操作系统Windowsmac OSLinuxISOAndroid操作系统的定义操作系统直接运行在计算机上的系统软件,它是控制硬件和支持软件的运算的计算机程序。** 操作系统的作用**向下控制硬件,向上支持软件的运行,具有承上启下的作用。小结操作系统是一个控制硬件和支持软件运行的计算机程序,只有安装了操作系统计算机才能进行正常工作。虚拟机软件虚拟软件的介绍它是能够虚拟出来计算机的一个软件。常用虚拟机软件VmwareVir

2020-08-29 14:24:46 128

原创 MySQL-分区表

12 MySQL 分区表MySQL 分区表分区表的特点在逻辑上为一个表,在·物理上存储多个文件中create table `login_log`( login_id int(10) unsigned not null comment '登录用户id', login_time timestamp not null default current_timestamp, login_ip int(10) unsigned not null comment '登录类型')engin

2020-08-21 17:11:58 97

原创 MySQL ——数据库锁

11 MySQL ——数据库锁数据库锁表锁行锁间隙锁锁是计算机协调多个进程或线程并发访问某一资源的机制表锁(偏读)偏向MyISAM 存储引擎,开销小,加锁快,无死锁,锁定粒度大,发送锁冲突的概率最高,并发度低。表锁案列建表create table mylock( id int not null primary key auto_increment, name varchar(20) )engine myisam;插入数据insert into mylock(n

2020-08-20 11:55:37 110

原创 MySQL操作

10 MySQL 操作10.1 慢查询日志分析1.观察,至少跑一天,看看生产的慢 SQL 情况2.开启慢查询日志,设置阙值,比如超过5秒钟的就是慢 SQL,并抓取出来。3.explain + 慢SQL分析4.show profile5.进行SQL 数据库服务器的参数调优(运维 or DB 来做)。总结1.慢查询的开启捕获2.explain + 慢 SQL 分析3.show profile 查询SQL在MySQL服务器里面的执行细节。4.SQL数据库服务器的参数优化慢查询日志

2020-08-19 22:46:46 183

原创 MySQL优化

9 MySQL优化9.1 索引优化索引的分类回表假设我们执行一条查询语句select * from person where ID=6,因为直接使用的是主键ID查询,所以就会主键索引,由于主键索引直接关联了整行所有的数据,所以,引擎只要执行一次就能查询出结果。如果执行的sql语句是非主键索引select * from person where age=18上述语句会走age的普通索引,索引先根据age搜索等于索引记录,找到ID=10的记录,然后再找到主键索引搜索一次,然后拿出需要查询的数

2020-08-19 22:16:16 195

原创 SQL语句分析

八——SQL语句分析8.1 影响服务器性能的几个方面影响性能的几跟方面1.服务器硬件2.服务器的操作系统3.数据库存储引擎的选择4.数据库参数配置5.数据结构设计和SQLSQL性能下降原因查询语句写的不好索引失效关联查询太多join服务器调优及各个参数设置SQL加载顺序手写SQL的顺序select distinct <select _list> from <left_table> join <right_table&

2020-08-13 20:34:04 456

原创 MySQL基准测试

七——MySQL基准测试7.1 什么是基准测试基准测试是一种测量和评估软件性能指标的活动用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以评估变化对性能的影响。基准测试是针对系统设置的一种压力测试基准测试特点直接、简单、易于比较,用于评估服务器的处理能力。可能不关心业务逻辑,所使用的查询和业务的真实性可以和业务环境没关系。基准测试的目的建立MySQL服务器的性能基准线,确定当前MySQL服务器运行情况,确定优化之后的效果。模拟比当前系统更高的负载,已找出系统的扩展瓶

2020-08-09 23:08:53 93

原创 数据库存储引擎

六 数据库存储引擎6.0 数据存储引擎服务层第二层服务是MySQL的核心,MySQL的核心服务层都在这一层,查询解析,SQL执行计划分析,SQL执行计划优化,查询缓存。以及跨存储引擎的功能都在这一层实现:存储过程,触发器。视图等。通过下图来观察服务层的内部结构。存储引擎层负责MySQL中数据的存储与提取。服务器中的查询执行引擎通过API与存储引擎进行通信,通过接口屏蔽了不同存储引擎之间的差异。MySQL采用插件式的存储引擎。MySQL为我们提供了许多存储引擎,每种存储引擎有不同的特点。我们可以

2020-08-09 15:01:51 145

原创 MySQL高级

5MySQL 高级5.1 视图视图介绍视图(View)是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不在数据库中实际存在,行和列数据来自定义视图查询中使用的表,并且是在使用视图时动态生成的。视图定义create view 视图名称 as select 语句查看视图select * from v_pro;删除视图drop view 视图名称视图的作用-简单:提高了重用性,就像一个函数。-安全:提高了安全性,可以针对不同的用户,设定不同的视图。-数据独立:一旦视图的结

2020-08-07 22:37:23 132

原创 数据库优化—— sql 语句

4 SQL 语句下4.1 自关联自关联可以简单的理解为自己与自己进行连接查询。

2020-08-01 13:54:43 115

原创 数据库优化——数据查询

2 数据查询2.1 操作数据2.1.1整行插入insert into 数据表名 values (值1,值2,值3,…);指定列中插入数据insert into tabname(字段1,字段2,…)values(值1,值2,…);指定列中插入多条数据insert into 数据表名(字段1,字段2,…)values(值1,值2…);数据修改update 数据表名 set 字段1=新值,字段2=新值[where 条件)删除数据delete from 数据表名 [where 条件]查询数

2020-07-26 21:50:38 96

原创 数据库优先——数据库环境搭建

1-1 数据库介绍为什么学习数据库通常,我们存储数据,直接使用本地文件即可。但是,本地文件不利于存储海量数据,也不利于用程序对文件的数据进行查询与管理。那么为了解决这些弊端,才有数据库的出现,那么数据库也是每个程序员必须掌握的技术。数据库介绍数据库(database)简称DB,实际上就是就是一个文件的集合,是一个存储数据的仓库,本质就是一个文件系统,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查等操作。数据库存储数据特点持久化存储读写速度极高保证数据的有效性

2020-07-23 16:06:00 772

原创 高级编程技巧——协程2

10 协程210.1 协程简介协程介绍协程,又称为微线程,它是实现多任务的另一种方法,只不过比线程更小的执行单元,因为它自带CPU的上下文,这样只要在合适的时机,我们就要=可以把一个协程切换到另一个协程。CPU上下文(CPU寄存器和程序计数器):CPU寄存器就是CPU的内置的容量小,但速度极快的内存。程序计数器则是用来存储CPU在在执行的指令位置,或者即将执行的下一条指令位置。协程与线程差异线程:每个线程都有自己缓存Cache 等等数据,操作系统还会做这些数据的恢复操作,所以线程的

2020-07-21 22:34:10 132

原创 高级编程技巧——协程

9 协程9.1 多线程共享全局变量import threadingimport timeimport multiprocessingnum=100def demo1(): global num num+=1 print(f'{num}')def demo2(): print(f'{num}')def main(): # 线程能共享局部变量 # t1=threading.Thread(target=demo1) # t2=threa

2020-07-16 22:03:50 125

原创 高级编程技巧——类与对象深度问题与解决技巧

高级编程技巧——类与对象深度问题与解决技巧2.类与对象深度问题与解决技巧2.1 如何派生内置不可变类型并修改其实例化行为练习需求我们想自定义一种新类型的元组,对于传入的可迭代对象,我们只保留其中int类型且值大于0的元素需要,定义InTuple1.InTuple([2,-2,‘jr’,[‘x’,‘y’],4])2.(2,3) class InTuple(tuple): #重写了父类的构造方法 def __new__(cls,iterable): #iterable

2020-07-12 23:05:34 114

原创 高级编程技巧——线程与进程

8.1 互斥锁互斥锁当多个线程几乎同时修改某一个共享数据的时候,需要进行同步控制。某个线程要更改共享数据时,先将其锁死,此时资源得状态为锁定,其它线程不能改变,只能该线程释放资源,将资源得状态变为‘非锁定’,其它的线程才能再次锁定该资源。互斥锁保证了每一次只要一个线程进行写入操作。从而保证了多线程情况下数据的正确性。import timeimport threadingnum=100def demo1(nums,mutex): global num # 2.加锁

2020-07-12 23:03:13 188

原创 高级编程技巧——多任务-线程的介绍

7.1 多任务多任务介绍同时做多件事情(多个任务)就叫多任务。多任务理解并发: CPU小于当前的执行的任务,是假的多任务并行: CPU大于当前执行的任务,是真的多任务实现多任务的三种方式线程进程协程7.2 线程线程介绍线程(thread)是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。使用线程完成多任务import timeimport threading # 内置模块def demo(): print('hell

2020-07-10 21:37:14 95

原创 高级编程技巧——TCP发送与接收数据

6 TCP发送与接收技巧6.1 TCP协议介绍当应用程序希望通过TCP与另一个应用程序通信时,它会发送一个通信请求,这个请求必须被送到一个确切的地址。在双方‘握手’之后,TCP将在两个应用程序之间建立一个全双工(full-duplex)的通信。这个全双工的通信将占用两个计算机之间的通信路线,直到它被一方或双方关闭为止。三次握手初版,四次握手进化,三次握手数据传输四次握手TCP特点面向连接可靠传输TCP采用发送应答机制超时重传错误校验流量控制和阻塞管理

2020-07-09 16:46:44 425

原创 高级编程——发送与数据接收

5、发送与数据接收5.1 计算机网络的发展及基础网络print(a)不通过导入模块的方式,如何实现在 a.py 中存数据,b.py读数据。这都是同以计算机,如果不同计算机之间进行传输通信,那么就会使用到网络,比如QQ,微信等APP。软件开发结构应用类:QQweb 类,百度,知乎,腾讯课堂网页端C/SClient: 客户端Server 服务端一直运行 等待服务别人B/SBrowser 游览器Server 服务端一直运行 等待服务别人统一入口B/S

2020-07-07 17:44:14 390

原创 高级编程技巧 —— 元类编程&迭代器和生成器

高级编程技巧 —— 元类编程&迭代器和生成器4 元类编程&迭代器和生成器4.1 _getattr _ 和 getattribute _ 魔法方法__getattr __ 是类调用一个不存在的属性时才会调用getattr 魔法函数, 他传入的值item 就是你这个调用不存在的值。__ getattribute __ 则是无条件的优先执行,所以如果不是特殊情况最好不要使用。class User(object): def __init__(self,name):

2020-07-05 13:14:41 82

原创 高级编程技巧——Python 垃圾回收及性能分析

高级编程技巧——Python 垃圾回收及性能分析3.1 通过实例方法名字的字符串调用方法我们有三个图形 Circle,Triangle,Rectange他们都有一个获取面积的方法,但是方法名字不同,我们可以实现一个统一的获取面积的函数,使用每种方法名进行尝试,调用相应的接口。class Triangle: def __init__(self,a,b,c): self.a,self.b,self.c=a,b,c def get_area(self):

2020-07-02 15:33:30 172

原创 Python 高级编程技巧——深入类和对象

Python 高级编程技巧1 深入类和对象1.1 鸭子类型与多态鸭子类型多态的概念四运用于Java 和 C# 这一类型语言中,而Python 崇尚鸭子类型。a=[1,2]b=[3,4]c=[5,6]d=['abc']a.extend(b)a.extend(c)a.extend(d)print(a)class Cat(object): def info(self): print('i am cat')class Dog(object): de

2020-06-23 22:49:06 213

原创 十五 异常文件

十五 异常文件1、异常简介▶程序在运行过程中可能会出现一些错误。比如,使用了不存在的索引,两个不同类型的数据想加...这些错误我们称之为异常。print(a)输出:NameError: name ' a' is not defindprint(hello')print(10/0)print('python')输出:hello 从10/0开始报错▶处理异常 程序运行时出现的异常,目的并不是让我们的程序直接终止!Python是希望在出现异常时,我们可以编写代码来对异常进行处理。tr

2020-05-19 14:10:05 179

原创 十四 模块

十四 模块1、模块简介▶模块化:指将一个完整的程序分解为一个一个小模块,通过将这些模块组合,来搭建出一个完成的程序。▶模块化的优点: 1.方便开发; 2.方便维护; 3.模块可以复用2、模块的创建▶在Python当中一个py文件就是一个模块▶在一个模块中引入外部模块import模块名(模块名就是py文件)▶可以引入同一个模块多次,但是模块的实例只会创建一次▶import模块名as模块别名▶在一个模块内部都有一个__name__。通过它我们可以获取模块的名字▶如果py文件直接运

2020-05-16 19:23:40 99

原创 十三 继承和多态

十三 继承和多态1、继承▶继承:是面向三大对象特性之一,通过继承我们可以使用一个类获取到其它类中的属性和方法。▶在定义类的时,可以在类名后面的括号中指定当前类的父类(超类、基类)。▶继承的作用: 1.提高了代码的复用性; 2.让类与类之间产生了关系。有了这个关系,才有多态的特性。 class Person(): name=' ' age=' 'class Doctor(): name=' ' age=' ' def study(self

2020-05-15 12:26:52 138

原创 十二 面向对象

十二 面向对象1、面向对象简介▶Python是一门面向对象的编程语言▶所谓面向对象的语言,简单理解就是语言中的所有操作都是通过对象来进行的▶面向过程:● 面向对象过程指我们将程序分解为一个一个步骤,通过每个步骤的抽象来完成程序● 这种编写方式往往只适用于一个功能,如果要实现别的功能,往往复用性比较低● 这种编写方式符合人类的思维,编写比较容易 1.妈妈穿衣服穿鞋出门 2.妈妈骑上电动车 3.妈妈到超市门口放好电动车 4.妈妈买西瓜 5.妈妈结账 6.妈妈骑电动车回家

2020-05-14 10:59:18 146

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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