自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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关注的人

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