自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 googletrans 中文翻译成英文 安装及使用

googletrans 中文翻译成英文 安装及使用安装pip install googletrans==4.0.0rc1# 安装特定的版本,有些版本不友好,此版本不行,自行更换用法def translate(word): translator = Translator(service_urls=[ 'translate.google.cn', # 换源 ]) return translator.translate(word).text...

2022-04-15 11:57:00 779

原创 python --- property(lambda self: object())

property是内置的作用:通常作为装饰器使用a = property(lambda self: object())ic(a)"""第一次"""# ic| a: <property object at 0x7ffa7b54b810>"""第二次"""# ic| a: <property object at 0x7fa7f62e8720>每次读取a都会返回一个全新的object...

2021-08-17 14:30:14 536

原创 docker的基本原理

1.docker是什么?1.docker是使用最广泛的开源容器引擎容器:1)容器是一个操作系统级别下的虚拟化技术,运行一个容器就跟运行一个进程一样2)容器依赖Linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)2.一种操作系统基本的虚拟化技术我们平时使用的VMware虚拟机就是虚拟化技术一个操作系统下,虚拟出来,其他操作系统的机器3.一种简单的应用程序打包工具4.依赖Linux内核特性Namespace(资源隔离) 和Cgroup(资源限制)

2021-05-25 14:26:57 223

原创 Django自带group踩坑

当自建User表与group建立外键时class User(models.Model): username = models.CharField(max_length=20, null=False) password = models.CharField(max_length=20, null=False) name = models.CharField(max_length=10, null=False) # 名称 group = models.ManyToManyFi

2021-05-18 11:19:07 158

原创 hashlib模块

hashlib简介什么叫hash:hash是一种算法(不同的hash算法只是复杂度不一样)(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的内容,经过运算得到一串hash值hash值的特点是(hash值/产品有三大特性:):只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验不能由hash值返解成内容=======》把密码做成hash值,不应该在网络

2021-04-29 11:15:03 103

翻译 ASCII

ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。ASCII码值的顺序是怎么排列的?ASCII根据码值由小到大的排列顺序是:数字->大写英文字母->小

2021-04-29 09:38:38 2860

转载 celery

celery应用举例Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用celery你想对100台机器执行一条批量命令,可能会花很长时间 ,但你不想让你的程序等着结果返回,而是给你返回 一个任务ID,你过一段时间只需要拿着这个任务id就可以拿到任务执行结果, 在任务执行ing进行时,你可以继续做其它的事情Celery 在执行任务时需要通过一个消息中间件来接收和发送任务消息,以及存储任务结果

2021-03-24 11:01:24 126 2

转载 微博三方原理

2021-03-23 19:21:55 82

转载 Django

一、什么是DjangoDjango是一个用-python开放源码的应用框架Django用的是MTV设计模型,要搞清楚MTV的先搞清楚MVC什么是MVCM—代表Model模型是应用程序中用于处理数据逻辑的部分通常模型对象负责在数据库中存取数据V----View视图是应用程序中处理数据显示的部分通常视图是依据模型数据创建的C—Controller控制台是应用程序中处理用户交互的部分通常控制器负责从视图中读取数据,控制用户的输入,并像模型发送数据MVC一

2021-03-23 18:49:16 60

转载 redis主从

一、redis主从同步Redis主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布 记录。同步对读取操作的可扩展性和数据冗余很有帮助。1.1工作原理Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可以根据是否是全量分为全量同步和增量同步。全量同步Redis

2021-03-23 11:40:10 102

原创 什么是redis

一、 什么是Redis?Redis本质上是一个Key-Value类型的内存数据库,很像memcached。整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB二、Redis特点redis比memcached优点数据类型:redis支持五中数据类型, memcached所有的值均是简单的字符串value大小限制:r

2021-03-23 10:26:58 103 1

转载 redis持久化

redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。所以这个时候就用到了redis为我们提供的持久化机制,分别是RDB和AOF一、持久化流程要有下面五个过程:(1)客户端向服务端发送写操作(数据在客户端的内存中)。(2)数据库服务端接收到写请求的数据(数据在服务端的内存中)。(3)服务端调用write这个系统调用,将数据往磁盘上写(数据在系统内存的缓冲区中)。(4)操作系统将缓冲区中的数据转移到磁盘控制器上(数据在磁盘缓存中)。(5)磁盘控制器将

2021-03-23 09:34:51 62

转载 redis五大数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。一、String(字符串)string 是 redis 最基本的类型,你可以理解成与 Memcached 一模一样的类型,一个 key 对应一个 value。string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。string 类型是 Redis 最基本的数据类型,string

2021-03-23 09:14:55 90

转载 tcp-网络

网络七层网络四层1.、应用层应用层对应于OSI参考模型的高层,为用户提供所需要的各种服务,例如:FTP、Telnet、DNS、SMTP等.2.、传输层传输层对应于OSI参考模型的传输层,为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议:传输控制协议(TCP)和用户数据报协议(UDP).TCP协议提供的是一种可靠的、通过“三次握手”来连接的数据传输服务;而UDP协议提供的则是不保证可靠的(并不是不可靠)、无连接的数据传输服务.3.、网际互联层网

2021-03-22 21:43:19 138

转载 垃圾回收机制

引用计数原理当一个对象的引用被创建或者复制时,对象的引用计数加1;当一个对象的引用被销毁时,对象的引用计数减1.当对象的引用计数减少为0时,就意味着对象已经再没有被使用了,可以将其内存释放掉。优点引用计数有一个很大的优点,即实时性,任何内存,一旦没有指向它的引用,就会被立即回收,而其他的垃圾收集技术必须在某种特殊条件下才能进行无效内存的回收。缺点引用计数机制所带来的维护引用计数的额外操作与Python运行中所进行的内存分配和释放,引用赋值的次数是成正比的,显然比其它那些垃圾收

2021-03-22 20:09:19 64

转载 深浅拷贝

什么是深浅拷贝浅拷贝: 不管多么复杂的数据结构,浅拷贝都只会copy一层深拷贝: 深拷贝会完全复制原变量相关的所有数据,在内存中生成一套完全一样的内容,我们对这两个变量中任意一个修改都不会影响其他变量例:import copya = [1,2,3,4,['a','b']]b = ac = copy.copy(a)d = copy.deepcopy(a)a.append(5)a[4].append('c')print(a) # [1, 2, 3, 4, ['a', 'b',

2021-03-22 20:03:25 119

转载 面向对象

什么是面向对象使用模板的思想、将世界万事万物使用对象来表示一个类型三大特性:封装、继承、多态封装对类中属性和方法进行一种封装,隐藏了实现细节继承子类继承父类后,就具有了父类的所有属性和方法,先继承,后重写新式类深度优先、经典类广度优先多态一种接口,多种表现形式中国人、美国人都能讲话,调用中国人叫中文,调用美国人讲英文新式类&经典类Python3无论新式类还是经典类都是用 广度优先Python2,新式类:广度优先,经典类:深度优先class

2021-03-22 19:36:06 50

原创 jwt

介绍jwt(JSON Web Tokens),在用户认证当中常用的方式,在如今的前后端分离项目当中应用广泛传统token和jwt区别传统token:服务端会对登录成功的用户生成一个随机token返回,同时也会在本地保留对应的token(如在数据库中存入:token、用户名、过期时间等),当用户再次访问时,会携带之前的token给服务端进行校验,服务端则通过与本地保留的token进行对比,若寻找到符合条件的token数据,则校验成功jwt:服务端会对登录成功的用户生成一个随机token返回,但

2021-03-22 16:54:04 111 1

原创 生成器和迭代器

什么是生成器生成器是一个特殊的迭代器一个有yield关键字的函数就是一个生成器生成器是这样一个函数,他记住上一次返回是在函数体中的位置对生成器函数的第二次(或第n次)调用跳转至该函数的中间,而上次调用的所有局部变量都保持不变def test(): yield 1 print('aaaa') yield 2 print('bbb')r1 = test()r1.__next__()r1.__next__()为什么要有生成器我们知道我们可以用列

2021-03-22 11:35:33 86

转载 装饰器

什么是装饰器装饰器本质是函数,用来给其他函数添加新的功能特点:不修改调用方式,不修改源代码装饰器的应用场景用户认证,判断用户是否登陆计算函数运行时间(算是一个功能,在项目里用的不多)插入日志redis缓存为什么使用装饰器结合应用场景说需求如何使用装饰器装饰器求函数运行时间import timedef timer(func): #timer(test1) func=test1 def deco(*args,**kwargs): start

2021-03-22 11:11:44 56

原创 with上下文管理

1.上下文管理1、什么是with语句with是一种上下文管理协议,目的在于从流程图中把 try,except 和finally 关键字和资源分配释放相关代码统统去掉,简化try….except….finlally的处理流程。所以使用with处理的对象必须有enter()和exit()这两个方法1)with通过enter方法初始化(enter方法在语句体执行之前进入运行)然后在exit中做善后以及处理异常(exit()方法在语句体执行完毕退出后运行)2、with语句使用场景with

2021-03-21 21:23:25 136

转载 线程多路复用

实现线程1、yield实现协程效果def consumer(name): print('开始吃包子...') while True: print('\033[31;1m[consumer]%s需要包子\033[0m'%name) bone = yield #接收send发送的数据 print('\033[31;1m[%s]吃了%s个包子\033[0m'%(name,bone))def producer(obj1): obj1.

2021-03-21 21:12:54 302

转载 MySQL慢查询

什么是MySQL慢查询MySQL的慢查询,全名是慢查询日志,是MySQL提供的一种日记记录,用来记录在MySQL中响应时间超过阀值的语句。运行时间超过long_query_time值得SQL语句,则会被记录刀慢查询日志中。long_query_time的默认值为10,意思是记录运行10秒以上的语句。查找那些语句慢# 比如,得到返回记录集最多的10个SQL。mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log# 得到访问次数最多

2021-03-19 21:58:15 345

转载 MySQL优化

优化方向储存引擎的选择:innodb、myisam设计数据库的设计,尽量的遵循三范式适当的建立索引查询数据的时候,注意。。。这些使用explain检查索引命中率,分析这一条sql语句是否可优化数据量最大的时候,主从分离,分库分表、垂直\水平分割尽量采用 贵的 SSD硬盘。不选择机械硬盘一个和你项目有关数据库优化的例子MySQL优化什么是MySQL的慢查询如何去分析 慢查询 的日志遇到了慢查询如何解决?(最好有故事)索引的建立是越多越好?为什么不是越多越好?MySQL索引优

2021-03-19 21:48:53 53

转载 索引

一、索引概述1. 简介索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。举例说明索引:如果把数据库中的某一张看成一本书,那么索引就像是书的目录,可以通过目录快速查找书中指定内容的位置,对于数据库表来说,可以通过索引快速查找表中的数据2. 索引的原理索引一般以文件形式存在磁盘中(也可以存于内存中),存储的索引的原理大致概括为以空间换时间,数据库在未添加索引的时候进行查询默认的是进行全量搜索,也就是进行全局扫描,有多少条数据就要进行多少次查询,然后找到相匹配的

2021-03-19 20:49:43 136

原创 MySQL锁

一、锁的分类按操作划分:DML锁、DDL锁按锁的粒度划分:表级锁、行级锁、页级锁按锁级别划分:共享锁、排他锁按加锁方式划分:自动锁、显示锁按使用方式划分:乐观锁、悲观锁二、锁的实现2.1 乐观锁的实现方法每次获取商品时,不对该商品加锁。在更新数据的时候需要比较程序中的库存量与数据库中的库存量是否相等,如果相等则进行更新反之程序重新获取库存量,再次进行比较,直到两个库存量的数值相等才进行数据更新。#### 乐观锁实现加一操作代码# 我们可以看到,只有当对数量-1操作时才会加锁,

2021-03-19 15:29:02 47

原创 MySQL事务

一、什么是事务?事务是数据库系统区别于其他一切文件系统的重要特性之一事务是一组具有原子性的SQL语句,或是一个独立的工作单元二、事务的特性(ACID)原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。一致性(consistency):数据库总数从一个一致性的状态转换到另一个一致性的状态。隔离性(isolation):一个事务所做的修改

2021-03-19 14:42:58 67

原创 什么是MySQL主从同步

一、什么是MySQL主从同步?从库同步主库上的数据,(让其他数据库服务器自动同步当前正在被访问的数据服务器上的数据)二、MySQL主从同步结构1主1从: (常用) 一台主服务器(负责业务更新)一台从服务器1主多从:(常用)一台主服务器(负责业务更新)多台从服务器主从从: 一台主服务器(负责业务更新)一台从服务器 (同时作为另一台的主服务器)一台从服务器互为主从:(不单独用,一般和第三方软件一起做高可用集群或负载均衡) 服务器相互为主从服务器三、主从同步的作用水平扩展

2021-03-19 14:22:02 374 2

转载 MySQL主从同步原理

1、MySQL数据库主从同步原理主服务器有一个工作线程 io dump thread从服务器有两个工作线程,一个是 io thread,一个是 sql thread。复制如何工作主从同步简单可以氛围三步master将改变记录刀二进制日志中(binary log)中(这些记录叫做二进制日志事件,binary log events);slave将master的binary log events拷贝到踏的中继日志(relay log);slave重做中继日志中的事件,同步数据MySQ

2021-03-19 11:01:43 151

转载 协程

1、 什么是协程1)协程微线程,纤程,本质是一个单线程2)协程能在单线程处理高并发,因为遇到IO 自动切换线程遇到I/O操作会等待、阻塞,协程遇到I/O会自动切换(剩下的只有CPU操作)线程的状态保存在CPU的寄存器和栈里而协程拥有自己的空间,所以无需上下文切换的开销,所以快3)为什么协程能够遇到I/O自动切换greenlet是C语言写的一个模块,遇到IO 手动切换协程有一个gevent模块(封装了greenlet模块),遇到I/O 自动切换4)协程拥有自己的空间,所以无需上下

2021-03-18 16:18:51 85

原创 线程

什么是线程线程是操作系统的最小单位线程是进程真正的执行者,是一些指令的集合(进程资源的拥有者)同一个进程下的多个线程共享内存空间,数据直接访问(数据共享)为了保证数据安全,必须使用线程锁说明:下面利用for循环同时启动50个线程并行执行,执行时间是3秒而不是所有线程执行时间的总和import threadingimport timedef sayhi(num): #定义每个线程要运行的函数 print("running on number:%s" %num) tim

2021-03-18 11:24:44 76

转载 多线程模块

Python的多线程模块有两种实现方法函数线程类一【函数】调用thread模块中的start_new_thread()函数来创建线程,以线程函数的形式告诉线程该做什么#!/usr/bin/pythonimport threaddef f(name): print "this is "+nameif __name__=="__main__": thread.start_new_thread(f,("mimi",)) while 1: pass二【线程类】调用threadin

2021-03-18 10:54:08 122

转载 线程池

一、安装与简介pip install threadpoolpool = ThreadPool(poolsize) requests = makeRequests(some_callable, list_of_args, callback) [pool.putRequest(req) for req in requests] pool.wait() 第一行定义了一个线程池,表示最多可以创建poolsize这么多线程;第二行是调用makeRequests创建了要开启多线程的函数,以及函数

2021-03-18 10:49:44 51

原创 uwsgi详解

uwsgi是什么?WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。WSGI 的官方定义是,the Python Web Server Gateway Interface。从名字就可以看出来,这东西是一个Gateway,也就是网关。网关的作用就是在协议之间进行转换。很多框架都自带了 WSG

2021-03-17 19:38:04 4481 2

原创 进程

进程定义:进程是资源分配最小单位一个运行起来的程序就是进程进程间内存独立,不能相互访问进程通信:1、无名管道通信  无名管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。2、高级管道通信  高级管道(popen):将另一个程序当做一个新的进程在当前程序进程中启动,则它算是当前程序的子进程,这种方式我们成为高级管道方式。    3、有名管道通信  有名管道 (named pipe) : 有名管

2021-03-17 15:08:51 58

原创 集合

集合作用去重取两个列表的交集取两个列表的并集list_1 = [1,2,3,4,5,1,2]#1、去重(去除list_1中重复元素1,2)list_1 = set(list_1) #去重: {1, 2, 3, 4, 5}print(list_1)list_2 = set([4,5,6,7,8])#2、交集(在list_1和list_2中都有的元素4,5)print(list_1.intersection(list_.

2021-03-16 21:36:06 65

原创 字典

字典常用方法clear方法清除字典中所有的项,这是一个原地操作,所以无返回值(或则说返回None)d = {}d['Tom']=8777 # 在字典中添加数据 d['Jack']=9999 print(d) #the result : {'Jack': 9999, 'Tom': 8777}d.clear()print(d) #the result : {}copy方法返回

2021-03-16 21:32:26 205

原创 字符串

字符串常用方法find方法可以在一个较长的字符串中查找子串,他返回子串所在位置的最左端索引,如果没有找到则返回-1a = 'abcdefghijk'print(a.find('abc')) #the result : 0print(a.find('abc',10,100)) #the result : 11 指定查找的起始和结束查找位置join方法是非常重要的字符串方法,他是split方法的逆方法,用来

2021-03-16 17:19:14 63

原创 列表 - 元祖

列表中的常见用法append用于在列表末尾追加新的对象a = [1, 2, 3]a.append(4)print(a) #the result : [1,2,3,4]count方法统计某个元素在列表中出现的次数a = ['aa','bb','cc','aa','aa']print(a.count('aa')) #the result : 3extend方法可以在列表的末尾一次性追加另一个序列中的多个值a = [1,2,3]b =

2021-03-16 16:50:44 128

空空如也

空空如也

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

TA关注的人

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