- 博客(50)
- 资源 (3)
- 收藏
- 关注
原创 锁:悲观锁和乐观锁
按照锁粒度进行划分1. 页锁,页的粒度上进行锁定。2. 表锁,对数据表进行锁定,锁定粒度很大,同时发生锁冲突的概率也会较高,数据访问的并发度低。不过好处在于对锁的使用开销小,加锁会很快。3. 行锁,按照行的粒度对数据进行锁定。锁定力度小,发生锁冲突概率低,可以实现的并发度高,但是对于锁的开销较大,加锁较慢,容易出现死锁。从数据库管理的角度对锁进行划分共享锁* 读锁,S锁,共享锁的资源可以被其它用户读取,但是不能修改。排它锁* 独占锁,写锁,X锁。锁定的数据只允许进行锁定的操作的事务使用,
2020-07-26 16:47:34
133
原创 最理想的索引
索引片和过滤因子索引片* SQL查询语句在执行中需要扫描的一个索引频段,我们会根据索引片中包含的匹配列的数量不同,将索引分成窄索引和宽索引。* 如果索引片越宽,需要顺序扫描的索引页就越多,如果索引片越窄,就会减少索引访问的时间。如何通过宽索引避免回表* 回表:数据库根据索引找到数据行之后,还需要通过主键,再次到数据表中读取数据的情况。过滤因子* 过滤因子:谓词的选择性。就是where条件中,每个条件,都是一个谓词。三星索引1. 在where条件语句中,找到所有等值谓词中的条件列,将他
2020-07-26 11:28:47
183
原创 从磁盘I/O的角度理解SQL查询的成本
数据库存储的基本单位是页,对于一颗B+树的索引来说,是先从根节点找到叶子节点,也就是先查找数据行所在的页,再将页读入到内存中,再内存中对页的记录进行查找,从而道道想要数据。数据库缓冲池* (降低访问的成本)* 缓冲池管理器会尽量将经常使用的数据保存起来,在数据库进行页面读操作的时候,首先会判断该页面是否在缓冲池中,如果存在就直接读取,如果不存在,就会通过内存或磁盘将页面放到缓冲池中再进行读取。查看缓冲池的大小* MySQL MyISAM, key_buffer_size, show.
2020-07-26 11:03:11
314
原创 从数据页的角度理解B+树查询
数据库中的存储结构是怎样的。* 在数据库中,不论读一行,还是读多行,都是将这些行所在的页进行加载。也就是说,数据库管理存储空间的基本单位是页。* 行 《 页 《 区 《 段 《 表。区: 比页大一级的存储结构,在InnoDB存储引擎中,一个区会分配64个连续的页。页:默认大小是16KB段:由一个或多个区组成,区在文件系统是一个连续分配的空间,在InnoDB是连续的64个页,不过在段中不哟啊求区与区之间是相邻的。段是数据库中的分配单位,不同类型的数据库对象以不同的段形式存在。当我们创建数据表,
2020-07-22 10:10:48
451
原创 如何通过索引让SQL查询效率最大化
创建索引有哪些规律字段的数值有唯一性的限制,比如用户名频繁作为where查询条件的字段,尤其在数据表大的情况下。需要经常group by 和 order by的列update,delete 的 where条件列,一般也需要创建索引distinct 字段需要创建索引做多表join连接操作时,创建索引需要注意以下原则* 连接表的数量尽量不要超过3张。* 对where条件创建索引* 对用于连接的字段创建索引,并且该字段在多张表中的类型必须一致。什么时候不需要创建索引1. where条件里
2020-07-22 09:45:38
367
原创 Hash索引的底层原理
Hash检索效率 O(1)MySQL中的Hash索引Hash冲突哈希,就是将键 转换为一个数字地址,存储数据,查找时可以直接找到,但是不同的键算出来的数字地址可能一样,这时,我们称为哈希冲突,存储的数据以链表的形式存储,之后的查询时间就是O(N)了。但是我们通常默认不冲突,时间复杂度为O(1)。Hash索引和B+树索引的区别hash索引不能进行范围查询,B+树可以。hash索引不支持联合索引的最左侧原则,而B+树可以。hash索引不支持order by 排序,B+树可以。...
2020-07-22 09:17:58
1526
原创 SQL索引
索引简介索引:帮助数据库管理系统搞笑获取数据的数据结构索引的种类1. 普通索引, 基础索引2. 唯一索引, 基础索引+ 唯一性3. 主键索引 基础索引 + 唯一性+ 非空4. 全文索引 索引的使用1. where 后面查询的字段需要是索引字段。2. 索引还可以创建联合索引。3. 索引的最左前缀原则。4. 有条件使用索引,没有条件创造条件使用索引...
2020-07-01 18:08:24
80
原创 数据表的规范
数据库的设计范式六种范式1. 第一范式2. 第二范式3. 第三范式4. BCNF 巴斯-科德范式5. 第四范式6. 第五范式 完美范式* 范式设计越高阶,冗余度越低。数据表中的键1. 超键: 能唯一标识元组的属性集叫超键2. 候选键:如果超键不包括多余的属性,这个超键就是候选键3. 主键:用户从候选键中选择一个作为主键4. 外键:如果表1的某属性集不是自身的主键,而是表2的主键,那么这个属性集就是表1的外键5. 主属性:包含在任意候选键中的属性称为主属性。6. 非主属性:与
2020-07-01 17:39:24
406
原创 数据库调优
数据库调优的目标1. 通过用户的反馈2. 日志分析3. 服务器资源使用监控4. 数据库内部状况监控调优的思路1. 选择合适的DBMS 2. 优化表设计,表的结构设计。3. 优化逻辑查询,对sql语句进行等价变换。4. 优化物理查询, 核心是高效地建立索引,并通过这些索引来做各种优化5. 使用Redis 或 Memcached缓存6. 库级优化, 读写分离,分区分表。分析数据库调优1. 选择比努力更重要。2. 重写sql, 让执行器执行的更有效率。(使用上索引)3. 外援帮助
2020-07-01 16:02:52
124
原创 使用python操作MySQL
python DB API 规范python操作DBMS1. 引入API模块2. 与数据库建立连接;3. 执行SQL语句4. 关闭数据库连接使用MySQL-connector# -*- coding: UTF-8 -*-import mysql.connector# 打开数据库连接db = mysql.connector.connect( host="localhost", user="root", passwd="XXX", # 写上你的数据库密码 database='wucai', au
2020-07-01 15:50:57
114
原创 SQL游标
什么是游标* 游标是面向过程的编程方式,这与面向集合的编程方式不同。* 游标是一种临时的数据库对象,可以指向存储在数据库表中的数据行指针。如何使用游标* 游标是一种控制数据集的灵活的处理方式1. 定义游标 declare cursor_name cursor for select_statement2. 打开游标3. 从游标中取得数据4. 关闭游标5. 释放游标使用游标来解决问题...
2020-07-01 15:35:16
161
原创 事务隔离级别
事务并发处理可能存在的异常脏读 Dirty Read读未提交不可重复读 Unrepeatable Read两次读取的结果不同幻读 Phantom Read事务隔离级别级别脏读不可重复读幻读读未提交允许允许允许读提交禁止允许允许可重复读禁止禁止允许可串行化禁止禁止禁止读未提交* 允许读到未提交的数据,未使用锁。读提交* 只能读到已经提交的内容,可以避免脏读。 默认隔离级别。可重复读* 保证一个事务在相同
2020-07-01 15:25:54
102
原创 SQl事务操作
事务的特性: ACID1. A 原子性 Atomicity 数据处理操作的基本单位,不可分割。2. C 一致性 Consistency 要么全部成功,要么全部失败,前后状态一致。3. I 隔离性 Isolation 每个事务时相互隔离的,彼此互不影响。4. D 持久性 Durability 事务提交之后,数据是被保存的。事务的控制1. start transaction/ begin 开启一个事务2. commit: 提交事务3. rollback 回
2020-07-01 15:08:52
304
原创 SQL存储过程
什么是存储过程,如何创建一个存储过程* Stored Procedure * 存储过程=SQL语句+流控制语句定义存储过程定义create procedure 存储过程名称(【参数列表】)begin需要执行的语句end.创建CREATE PROCEDURE `get_hero_scores`( OUT max_max_hp FLOAT, OUT min_max_mp FLOAT, OUT avg_max_attack FLOAT, s VARCHAR(255) )BEGIN SE
2020-07-01 14:15:22
127
原创 什么是SQL函数?为什么使用sql函数可能会带来问题
常用的SQL函数1. 算术函数2. 字符串函数3. 日期函数4. 转换函数算术函数1. ABS 取绝对值2. MOD 取余3. ROUND 四舍五入为指定的小数位数字符串函数1. concat 多个字符串拼接2. length 计算字段的长度(汉字=3, 数字/字母=1)3. char_length 计算字段的长度 (汉字/数字/字母=1)4. lower 字符串转化为小写5. upper 字符串转化为大写6. replace 替换函数 7. substring
2020-06-30 10:42:03
421
原创 mysql索引
索引的常见模型哈希表, 适用于只有等值查询的场景有序数组, 等值查询和范围查询场景。只适用于静态存储引擎。二叉搜索树InnoDB的索引模型每一个索引在InnoDB里面对应一颗B+树。主键索引,聚簇索引。存放整行数据。非主键索引,二级索引。存放主键的值。索引维护B+树为了维护索引有序性,在插入新值的时候需要做必要的维护。主键长度越小, 普通索引的叶子节点就越小,普通索引占...
2020-05-07 22:49:00
91
原创 mysql事务
事务分类原子性 Atomicity一致性 Consistency隔离性 Isolation持久性 Durability隔离性隔离别读未提交 read uncommitted一个事务还未提交,他所做的变更就可以被别的事务看到。读提交 read committed一个事务提交以后,他所做的变更就可以被别的事务看到可重复读 repeatable read一个事务执行过程中...
2020-05-07 21:48:06
90
原创 mysql日志
redo logWAL(write-ahead logging),先写日志,再写磁盘crash-safeinnodb_flush_log_at_trx_commit参数设置为1,每次事务的redo log都直接持久化到磁盘。记录做了什么改动,记结果。binlog归档日志sync_binlog参数设置为1,每次事务的binlog都持久化到磁盘。statement记录sql, ro...
2020-05-07 21:13:02
105
原创 读写文件
读写二进制文件知道了如何读写文本文件要读写二进制文件也就很简单了,下面的代码实现了复制图片文件的功能。def main(): try: with open('guido.jpg', 'rb') as fs1: data = fs1.read() print(type(data)) # <class 'bytes'&...
2019-06-19 23:19:43
79
原创 面向对象和类的关系
对象Python 中一切皆为对象,所有的一切都可以抽象为属性和方法,这就是类的组成部分。类由属性和方法组成。属性:参数值方法:行为动作封装init 初始化,有了实例之后,加属性,类实例创建之后调用new 重载属性,创建这个类实例的方法slots 限制能绑定的属性call 使实例能够像函数一样被调用classmethod staticmethod 类方法单下划线开头...
2019-06-19 23:01:31
157
原创 spider_study2
一个简单的爬虫步骤抓取页面解析页面抽取数据存储数据数据库的使用redis #找到需要的内容和链接 client = redis.Redis(host='47.106.171.59', password=123456,port='6379') # client.set(key,value) # client.hset(kind,...
2018-06-02 11:14:18
146
原创 spider_study 1
find findall selectfind_all(tag, attributes, recursive, text,limit, keywords)find(tag,attributes,recursive,text,keywords) tag 标签attributes 属性recursive 是否查找下面的子层text 内容keywords 关键字limit 搜集几条数...
2018-05-29 18:52:59
128
原创 flask项目经验总结
models 研究BaseModel(object) 基础类,用来给子类继承create_time = db.Column(db.DATETIME, default=datetime.now()) 创建时间update_time = db.Column(db.DATETIME, default=datetime.now(),onupdate=datetime.now()) 最后一...
2018-05-26 16:34:02
1172
原创 django-frame-summary
Django summaryMVTM 模型,ORM,数据库的增删改查V 视图,逻辑处理T 页面,T–V–M–V–T环境配置pip3 install virtualenvvirtualenv –no-site-packages -p path py3djangocd py3django/Scriptactivatedeactivate创建项目...
2018-05-19 17:27:29
312
原创 flask学习知识点总结
flask summary学习网址 http://docs.jinkan.org/docs/flask/installation.htmlenvironment配置flask单独的虚拟环境pip3 install virtualenvvirtualenv –no-site-packages -p python3路径 py3flaskcd py3flask/Script...
2018-05-19 10:08:39
425
原创 flask基础 多对多 重构 debug restful marshmellow
多对多创建相对于django,自己相当于做了完全的工作,三张表都自己来创建1.多 ,至少有一个主键字段2.中间表,创建两个外键来关联这两个表的主键sc = db.Table('sc', db.Column('s_id', db.Integer,db.ForeignKey('student.s_id')), db.Column('c_id', db.Int...
2018-05-18 19:52:19
337
原创 mysql延伸扩展 分页 一对多查询
mysql延伸增 (多个)db.session.add(stu) 单个db.session.add_all(stus) 列表,多个运算符filter(模型名.字段.运算符(‘xxx’)) filter(模型名.字段 运算符 值)小于 lt 小于等于 le s_age.lt(11)大于 gt 大于等于 le范围 in_ s_age.in_([11...
2018-05-17 18:42:07
874
原创 flask基础知识2
css 两种加载方法方法一 推荐 link rel=”stylesheet” href=”/static/css/index.css”方法二 link rel=”stylesheet” href=”{{ url_for(‘static’, filename=’css/index.css’) }}”jinja2 用法 同djangofor ifloop.first/...
2018-05-16 19:07:20
183
原创 flask基础知识
PATHos.path.abspath(file) 当前文件的绝对路径os.path.dirname(os.path.abspath(file)) 当前文件的父级的绝对路径手动添加路径BASE_DIR = os.path.dirname(os.path.abspath(file))static_dir = os.path.join(BASE_DIR, ‘static’) ...
2018-05-15 20:51:59
174
原创 flask 环境environment,运行Manager,路由管理Blueprint
django diff flaskdjango 配置好了很多东西,相当于一个完整的台式机flask 微型框架,就相当于一个主板,其他的米有,需要自己去安装第三方包。flaskhttp://docs.jinkan.org/docs/flask/installation.html 配置flask的虚拟环境pip3 install virtualenv 进入到你要安...
2018-05-14 16:43:38
1529
转载 django总结
0Django阶段性总结 1、Django简介 Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,模板T和视图V。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。2、D...
2018-05-12 22:53:29
475
原创 隐藏和展示 商品表之间的关系
部分页面的隐藏和展示根据页面中是否存在cookie,即是否登录,来显示或隐藏指定的内容方法根据,如果登录且在有效时间内,那么可以拿到用户表的信息,直接判断是否存在用户的信息。可以在后端判断,也可以在前端判断头像的显示前端判断{% if user.id %}{{user.icon}}{% else %}头像不显示展示的东西{% endif %}数据的显示后...
2018-05-12 22:07:50
492
原创 前后端数据传入与传出
前端页面的挖坑以及填坑继承static 文件里的样式{% load static %} {% extends ‘*.html’ %}放入css{% block extCSS %}{% endblock %}放入js{% block EXTJS %}{% endblock %}前端和后端数据的对接前端向后端传入数据a标签,连接跳转, a href=”{‘ur...
2018-05-11 20:38:02
1212
原创 django里原生实现登录 注册 注销
登录 注册 注销在django里得原生实现准备工作创建用户表,创建用户子表,一般用户表包含用户名,密码,Email,头像,和is_delete(用以隐藏信息得),子表包含ticket 和 outtime过期时间,关联到用户表。需要一个登录页面,和注册页面注册拿到页面传入得信息,并对密码进行加密操作 make_password注意,拿图片是通过FILES方法拿到。...
2018-05-11 16:50:00
496
原创 django网站的部署
部署部署1: python启动,用于测试和本地开发安装包sudo apt updateapt install mysql-server mysql-client设置远程访问mysql (1) 查找 mysql.conf find / -name mysql.cnf (2)注释mysql.cof文件的bind_address /etc/...
2018-05-11 11:49:34
390
原创 django的传参和ajax实现步骤
笔记任务,实现闪购datetime, timedeltafrom datetime import datetime, timedelta 1. timedelta(days=1) 2. timedelta(hours=1) 3. timedelta(minutes=1)中间键,过期时间, response.set_cookie(‘ticket’,ticket,max...
2018-05-11 11:42:22
2295
2
原创 django_study-7
ajax基本框架$.ajax({ url:'', type: '', data: '', dataType: 'json', success:function(){ alert('删除成功'); }, error: function(){ alert('删除失败') ...
2018-05-04 17:34:35
111
原创 django_study_6
django 自带的登录方法第一步同理先拿到用户名和密码引入django自带的包auth, from django.contrib import auth user = auth.authenticate(username=name, password=password) 如果数据库里存在数据,则返回user,否则返回的为空。if user: auth.login(request...
2018-05-03 19:13:45
146
原创 django_study-5
登录 注销 深度学习set_cookie(key, value,max_age=10) max_age 存活时间加载static {% load static %} {% static %}/static/xxx.cssdelete_cookie(key)配置静态文件settings STATIC_URL = ‘/static/’STATICFILES_DIRS...
2018-05-02 17:26:36
125
原创 django-study-4
cookieset_cookie()del_cookie()注册 登录 注销注册 常规操作,将其存储在数据库中。登录 常规操作,将其与数据库之中的数据对比,如果正确,那么将其保存在cookie中。做法res = HttpResponse()res.set_cookie(‘xx’, xx) 此处xx为键值对, 将cookie保存在数据库里,save一下。验证...
2018-04-29 23:43:32
106
电脑版无水印批量下载.zip
2020-10-04
fiddler安卓手机抓包工具
2020-09-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人