- 博客(21)
- 收藏
- 关注
原创 乐观锁与悲观锁
悲观锁: 顾名思义,就是很悲观。每次去拿数据的时候都认为别人会修改数据,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁,读锁。写锁等,这是在做操作之前先上锁。乐观锁: 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更...
2019-11-20 17:16:57 224
原创 B树与B+树的区别
B树:每个节点都存储key和data,所有节点组成这颗树,并且叶子节点指针为NUllB+树只有叶子节点存储data,叶子节点包含了这棵树的所有键值对,叶子节点不存储指针。B树不管是叶子节点还是非叶子节点,都会保存数据,这样导致在非叶子节点中能保存的指针数量变少。指针少的情况下要保存大量的数据,只能增加树的高度,导致IO操作变多,查询性能降低。在MySQL中,最常用的两个...
2019-11-20 16:38:18 533
原创 python 使用pip离线安装库
在一台不联网的机器上,安装大量的模块。1. 找一台同系统的联网的机器,安装好所需要的模块。导入库信息:pip freeze > requirements.txt将本机上安装的模块名称和模块的版本号都写入到requirements.txt文件中。可以增删里面的记录。下载安装包用于离线安装pip download 地址 -r requirements.txt地址可以不写...
2019-11-13 14:39:09 661
原创 递归-------python代码
递归三要素:1. 递归终止条件2. 终止时处理方法3. 提出重复问题例如:1. 用递归计算出:1*2*3*4*5*6*7*8*......*ndef ride_recursion(n): if n == 1: return 1 return n * ride_recursion(n - 1)print(ride_recursion(4))...
2019-11-12 15:47:15 406
原创 基本排序(冒泡,选择,插入,快速)-------python
import randomimport timedata = list(range(1000))random.shuffle(data)#时间装饰器def time_decorate(func): def time_count(*args, **kwargs): start = time.time() result = func(*args, ...
2019-11-12 14:56:29 156
原创 关系型数据库设计:三大范式
目前关系型数据库设计规范中,我们通常用的,说的最多是:第一范式:要求数据库表中的每一列都是不可分割的原子数据项。第二范式:数据表中的每一列都和主键相关,而不能只与主键的一部分相关。(主要针对的是联合主键)第三范式:数据不能存在传递关系,即数据表中的每一列数据都和主键直接相关。例如:第一范式:要求数据库表中的每一列都是不可分割的原子数据项。学号 姓名 性别 ...
2019-11-12 11:26:52 424
翻译 计算机存储
计算机的常见存储有寄存器、高速缓存、内存、硬盘等。寄存器就相当于人脑中立刻可以想起来的东西,CPU所做的一切运算都是针对于在寄存器中的数据进行的。寄存器存储了计算机当前要做什么计算(指令寄存器),要计算的数据(数据寄存器),计算到哪一步了(段寄存器)等信息。无论是最早的有寄存器的CPU还是最新最强的的CPU,它们的寄存器数量最多也只有几十个(特殊情况有几百个),也就是说CPU同一时刻能够立刻使...
2019-07-31 14:04:17 313
原创 django前端时间格式显示问题:Oct. 10, 2018, 7:42 p.m.可读性格式化
前端页面从数据库中读取的数据为Oct. 10, 2018, 7:42 p.m.,想要转化为可读性的时间{{ project.check_time|date:"Y-m-d H:i:s" }}project.check_time 为你读取的时间|date:"Y-m-d H:i:s" 为时间样式过滤器...
2018-10-10 21:37:42 3097
原创 pipenv install 环境问题TypeError: 'module' object is not callable
问题原因:pip版本不合适packages/pipenv/utils.py", line 402, in resolve_deps req_dir=req_dir File "/usr/local/python3.7.0/lib/python3.7/site-packages/pipenv/utils.py", line 250, in actually_resolve_deps...
2018-10-08 14:33:13 9573
转载 Http错误码
2xx 成功 200 正常;请求已完成。 201 正常;紧接 POST 命令。 202 正常;已接受用于处理,但处理尚未完成。 203 正常;部分信息 — 返回的信息只是一部分。 204 正常;无响应 — 已接收请求,但不存在要回送的信息。 3xx 重定向 301 已移动 — 请求的数据具有新的位置且更改是永久的。 302 已找到 — 请求...
2018-07-27 11:55:33 307
翻译 http tcp udp基础知识
HTTP 协议定义服务器端和客户端之间文件传输的沟通方式1 GET 请求指定的页面信息,并返回实体主体。 2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 4 ...
2018-07-26 17:51:46 238
翻译 tcp三次握手,四次挥手
tcp三次握手 1.A向B发起建立连接请求: 2.B收到A的发送信号,并且向A发送确认信息 3.A收到B的确认信号,并且向B发送确认信号 通过第一次握手,B知道了A能够发送,通过第二次,A知道了B能发送数据,结合第一次和第二次握手,A知道了B能够接受数据,结合第三次B知道了A能够接受数据四次挥手: 1.A向B发起请求,表示A没有数据要发送了 2...
2018-07-25 19:51:23 291
原创 python列表的常用方法
列表的一些基本操作方法1: list.count()统计 list = [6,3,4,5,6,7,8,4] print(list.count(4))#统计4这个元素在列表中出现的次数方法2: list.append()添加对象 list = [1,2,3,4] list.append('object')#在列表末尾添加新的对象 prin...
2018-07-25 17:14:15 272
原创 Python中的进程,线程,协程
什么是进程: 编写完毕的代码,在没有运⾏的时候,称之为程序,正在运⾏着的代码,就成为进程 进程是一个动态的过程,占有cpu内存的计算机资源,有一定的生命周期 进程是程序在计算机中一次执行的过程创建子进程: 第一种:fork(只在Unix/Linux/Mac上运⾏,windows不可以) 程序执⾏到os.fork()时,操作系统会创建⼀...
2018-07-24 16:11:56 256
原创 python回收机制
垃圾回收(一)1. ⼩整数对象池整数在程序中的使⽤⾮常⼴泛,Python为了优化速度,使⽤了⼩整数对象池, 避免为整数频繁申请和销毁内存空间。Python 对⼩整数的定义是 [-5, 257) 这些整数对象是提前建⽴好的,不会被垃圾回收。在⼀个 Python 的程序中,所有位于这个范围内的整数使⽤的都是同⼀个对象.同理,单个字⺟也是这样的。但是当定义2个相同的字符串时,引⽤计数为0...
2018-07-23 20:24:12 378
原创 闭包和装饰器
在Python中创建一个闭包可以归结为以下三点:闭包函数必须有内嵌函数 内嵌函数需要引用该嵌套函数上一级namespace中的变量 闭包函数必须返回内嵌函数闭包思考:1.闭包似优化了变量,原来需要类对象完成的⼯作,闭包也可以完成2.由于闭包引⽤了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存 装饰器:开放封闭原则: 封闭:已实现的功能代码块 ...
2018-07-23 19:50:54 207
原创 python生成器和迭代器
什么是⽣成器 通过列表⽣成式,我们可以直接创建⼀个列表。但是,受到内存限制,列表容量肯定是有限的。⽽且,创建⼀个包含100万个元素的列表,不仅占⽤很⼤的存储空间,如果我们仅仅需要访问前⾯⼏个元素,那后⾯绝⼤多数元素占⽤的空间都⽩⽩浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从⽽节省⼤量的空间...
2018-07-21 15:59:30 219
原创 列结构
操作Queue() 创建一个空的队列 enqueue(item) 往队列中添加一个item元素 dequeue() 从队列头部删除一个元素 is_empty() 判断一个队列是否为空 size() 返回队列的大小实例:class Queue(object): """队列""" def __init__(self): self.items = []...
2018-07-21 12:59:13 1526
原创 栈的基本操作
栈的操作Stack() 创建一个新的空栈 push(item) 添加一个新的元素item到栈顶 pop() 弹出栈顶元素 peek() 返回栈顶元素 is_empty() 判断栈是否为空 size() 返回栈的元素个数实例:class Stack(object): """栈""" def __init__(self): self.items =...
2018-07-21 12:51:16 275
原创 Ubuntu系统(1)
路径:绝对路径:以“/”字符开头的路径为绝对路径。根(root)为/相对路径:不以“/”字符开头. 当前文件夹(目录).. 上一级文件夹~ 用户主目录pwd命令:作用:显示当前的工作路径在哪ls 命令:作用:显示指定文件夹或文件信息常用选项: -l 列表显示详细信息 -a 显示全部的文件/文件夹(包含以.开头的隐藏文件)cd 命令:...
2018-04-12 22:10:22 214
原创 编译型语言与解释型语言
共同点:都要弄成二进制代码,才能执行。两类编程语言,你手写的源代码都是一些英文代码,计算机不认识这些单词,所以都会转化成二进制才能执行。区别在于转化的方式。 编译型语言经过编译汇编等等生产一个可执行的二进制文件。当你需要再次运行时,不需要重新编译该代码,只需运行可执行的二进制文件。优点,编译一次,永久执行,你不需要提供你的源代码,只需提供你的可执行文件就可以,保证安全。但跨平台可执行...
2018-04-12 21:23:22 169
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人