自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于http协议的那些事儿

HTTP 0.9具有典型的无状态性,每个事务独立进行处理,事务结束时就释放这个连接。由此可见,HTTP协议的无状态特点在其第一个版本0.9中已经成型。一次HTTP 0.9的传输首先要建立一个由客户端到Web服务器的TCP连接,由客户端发起一个请求,然后由Web服务器返回页面内容,然后连接会关闭。如果请求的页面不存在,也不会返回任何错误码。

2023-11-27 21:59:12 85

原创 Django框架基础之文件的认识

对象() --->实例化---->__call__的执行---->里面写的是falsk框架的源码入口位置。wsgiref服务器---------->uwsgi服务器(uwsgi)-------->Nginx服务器+uwsgi服务器。flask框架:轻量级的,小而美,自带功能比较少,需要安装很多第三方模块,当安装模块足 够多时,也跟Django差不多笨重了。pycharm创建项目: File---->New project-----> django ...django2----->python3.6以上。

2023-11-08 21:19:08 95

原创 Python之前端

"""对于form-data提交的数据,后端还是在form里面去普通数据,而在files里面去文件数据"""<img src="123.png" title="你看我好看吗" width="200px" alt="">○ type="text","password","hidden"时,为输入框的初始值。○ type="checkbox", "radio", "file",为输入相关联的值。"""form表单要想把数据提交到后端,每一个标签都要有一个name属性."""

2023-10-30 21:37:02 90

原创 Mysql(5)

视图是mysql的功能,如果你的项目里面大量的使用到了视图,那意味着你后期想要扩张某个功能的时候这个功能恰巧又需要对视图进行修改,意味着你需要先在mysql这边将视图先修改一下,然后再去应用程序中修改对应的sql语句,这就涉及到跨部门沟通的问题,所以通常不会使用视图,而是通过重新修改sql语句来扩展功能。# 快 通过email字段一剑封喉。特点:叶子结点存放的是辅助索引字段对应的那条记录的主键的值(比如:按照name字段创建索引,那么叶子节点存放的是:{name对应的值:name所在的那条记录的主键值})

2023-10-26 21:34:01 80

原创 MySql数据库之多表查询、外键

INSERT INTO `teacher` VALUES ('1', '张磊老师'), ('2', '李平老师'), ('3', '刘海燕老师'), ('4', '朱云海老师'), ('5', '李杰老师');INSERT INTO `course` VALUES ('1', '生物', '1'), ('2', '物理', '2'), ('3', '体育', '3'), ('4', '美术', '2');right join # 右连接,查询右表中所有的数据,右表没有的数据,使用NULL填充。

2023-10-25 21:16:41 100

原创 【无标题】

('僧龙','male',28,'20160311','operation',10000.13,403,3), #以下是运营部门。('tom','male',78,'20150302','teacher',1000000.31,401,1),#以下是教学部。('哈哈','female',48,'20150311','sale',3000.13,402,2),#以下是销售部门。('拉拉','female',28,'20170127','sale',4000.33,402,2),

2023-10-24 21:20:19 34

原创 MySql基础之增删改查

三者的精确度不一样:decimal >>> double >>> float(精确到7位了)smallint:2个字节, 代表16位, 65536(0-65535) (-32768-32767)char(4): 定长类型,超出4位,就报错,不够4位,使用空格填充 abc helloworld。一个字节代表8位 11111111--->256种情况(0-255) (-128-127)varchar(4): 可变长类型,超出4位,报错,不够4位的,有几位存几位 abc a。

2023-10-23 21:16:41 44

原创 MySql入门(1)

3. win + R------->services.msc----------->服务。update user set password=password('新密码') where user='root';2. 点击此电脑------>管理------->服务。mysqld --skip-grant-tables # 使用无验证方式启动mysql服务。MySQL8.0 # 新版本,对于MySQL来说,版本的更新不变的是SQL语句的书写。mysqld --install (需要管理员权限)

2023-10-20 21:32:00 45

原创 Python之协程、GIL全局解释器、互斥锁线程池

怎么避免的这个问题,那就是在Python这门语言设计之处,就直接在解释器上添加了一把锁,这把锁就是为了让统一时刻只有一个线程在执行,言外之意就是哪个线程想执行,就必须先拿到这把锁(GIL), 只有等到这个线程把GIL锁释放掉,别的线程才能拿到,然后具备了执行权限.计算密集型: 消耗cpu,如果开了8个线程,第一个线程会一直占着cpu,而不会调度到其他线程执行,其他7个线程根本没执行,所以我们开8个进程,每个进程有一个线程,8个进程下的线程会被8个cpu执行,从而效率高.

2023-10-19 21:10:58 100

原创 Python互斥锁、队列、守护线程

锁在IT界很重要,不但在Python中出现,尤其是数据库中得锁更多,比如:表锁、行锁、 悲观锁、乐观锁、进程锁、互斥锁、递归锁、可重入锁、死锁等。print("task进程的父进程的进程号:", os.getppid()) # parent process。"""有了进程号,我们就可以通过进程号来结束进程的执行 kill 9176 kill -9 9176"""print("task进程的进程号:", os.getpid())

2023-10-18 21:03:27 106

原创 Python之多进程

conn, client_addr = server.accept() # 接收, 程序启动之后,会在accept这里夯住,阻塞。p = Process(target=task) # 实例出来一个进程类, 让这个进程执行task任务。p.join() # 等待子进程的代码全部执行完毕,在走主进程的。多进程中,想先执行子进程再主进程,p.join(),不能加在for循环中,不然是5秒。计算密集型:没有时间的大量消耗,不占用大量的时候,会占用大量的CPU资源。

2023-10-17 20:31:47 48

原创 Python之异常的补充、元类

在上面的示例中,FlyMixin类和SwimMixin类分别定义了飞和游泳的方法,Animal类是一个基础类,它只有一个名字属性。这时可以创建一些Mixin类,比如FlyMixin和SwimMixin,这些Mixin类只包含相应的方法,然后将它们混合到Animal类中,就可以得到新的Animal类,它具有飞行、游泳等功能。不能够直接修改元类的源码,我们是不是可以写一个子类,来继承type类,然后在子类里面的__init__方法中书写定制化代码,所以,还需要在子类里面执行父类的__init__方法。

2023-10-11 20:50:21 43

原创 Python之魔术方法

"""with它可以用在很多地方,但是,出现with语句后面的对象中得类必须要声明__enter__和__exit__"""先聊聊 with 的用法?问with上下文管理协议的执行原理?"""with它可以用在很多地方,但是,出现with语句后面的对象中得类必须要声明__enter__和__exit__"""print('0'*100) #------------------------------->不会执行。"""当你找的属性不存在的时候,会触发__getattr__,但是必须是点语法的时候才会"""

2023-10-10 21:09:16 47

原创 Python之面向对象(3)

Python提供了Mixins机制,简单来说Mixins机制指的是子类混合(mixin)不同类的功能,而这些类采用统一的命名规范(例如Mixin后缀),以此标识这些类只是用来混合功能的,并不是用来标识子类的从属"is-a"关系的,所以Mixins机制本质仍是多继承,但同样遵守”is-a”关系。在知识表示、面向对象程序设计与面向对象设计的领域里,is-a(英语:subsumption,包含架构)指的是类的父子继承关系,例如类D是另一个类B的子类(类B是类D的父类)。

2023-10-09 21:06:40 55

原创 Python之面向对象(2)

【代码】Python之面向对象(2)

2023-10-08 21:15:45 39

原创 Python之面向对象

print(stu.__dict__['school']) # SH #### 如果你使用的是点语法,那么,对象查找属性的时候,先从对象自己的名称空间中查找,如果找不到,就去产生这个对象的类中查找。面向过程编程的设计思路是将复杂的问题拆解成多个独立的模块,每个模块负责完成特定的任务,这些模块之间相互配合,最终完成整个程序的功能。在Python的OOP中,一切都是对象。如果你使用的是点语法,那么,对象查找属性的时候,先从对象自己的名称空间中查找,如果找不到,就去产生这个对象的类中查找。

2023-10-07 21:27:17 39

原创 Python之日志模块

fh = logging.FileHandler('test.log',encoding='utf-8') # 再创建一个handler,用于输出到控制台 ch = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')'[%(levelname)s][%(message)s]' #其中name为getlogger指定的名字。

2023-09-25 21:24:00 63

原创 Python之序列化、hashlib加密

Skipkeys:默认值是False,如果dict的keys内的数据不是python的基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。此外,网站运维人员是可以访问数据库的,也就是能获取到所有用户的口令。indent:应该是一个非负的整型,如果是0就是顶格分行显示,如果为空就是一行最紧凑显示,否则会换行且按照indent的数值显示前面的空白分行显示,这样打印出来的json数据也叫pretty-printed json。

2023-09-22 21:32:40 103

原创 Python之random模块、os模块

os.path.abspath(path) 返回path规范化的绝对路径os.path.split(path) 将path分割成目录和文件名二元组返回。os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。os.path.dirname(path) 返回path的目录。os.path.exists(path) 如果path存在,返回True;os.path.isdir(path) 如果path是一个存在的目录,则返回True。

2023-09-21 21:24:20 68

原创 Python之time、datetime模块

时间的三种方式:1、时间戳(timestamp) :表示的是从1970年1月1日到现在的秒数。%U 一年中的星期数(00-53)星期天为星期的开始。%W 一年中的星期数(00-53)星期一为星期的开始。%Y 四位数的年份表示(000-9999)%w 星期(0-6),星期天为星期的开始。%y 两位数的年份表示(00-99)%p 本地A.M.或P.M.的等价符。%c 本地相应的日期表示和时间表示。%j 年内的一天(001-366)%d 月内中的一天(0-31)%m 月份(01-12)%x 本地相应的日期表示。

2023-09-20 21:26:07 47

原创 Python之re模块正则表达式

在python中,无论是正则表达式,还是待匹配的内容,都是以字符串的形式出现的,在字符串中\也有特殊的含义,本身还需要转义。字符组 : [字符组] 在同一个位置可能出现的各种字符组成了一个字符组,在正则表达式中用[]表示 字符分为很多类,比如数字、字母、标点等等。在正则表达式中,有很多有特殊意义的是元字符,比如\n和\s等,如果要在正则中匹配正常的"\n"而不是"换行符"就需要对""进行转义,变成’\'。在一个字符组里枚举合法的所有字符,字符组里的任意一个字符和"待匹配字符"相同都视为可以匹配。

2023-09-17 21:21:07 97 1

原创 Python之包导入

• run.py: 程序的启动文件,一般放在项目的根目录下,因为在运行时会默认将运行文件所在的文件夹作为sys.path的第一个路径,这样就省去了处理环境变量的步骤。除此之外,有一些方案给出了更加多的内容,比如LICENSE.txt,ChangeLog.txt文件等,主要是在项目需要开源时才会用到,请读者自行查阅。只要py文件中出现了相对导入语句(.开头的语句),那么,这个文件就不能当成执行文件了,只能被导入。"""在导入模块的时候,模块的查找始终以执行文件所在的路径为准""".. 代表的是上一级路径。

2023-09-16 21:25:05 295 1

原创 Python之模块的导入

模块是Python中非常核心的一块内容,用的非常多,它比较简单 . python这门语言:调包侠PHP是世界上做好的语言Python不服气 1. 什么是模块?模块就是一些列功能的集合,模块中就是提前写好了很多的功能,直接拿来使用 2. 为什么要用模块?站在巨人的肩膀上,别人写好的一些功能我们把它下载下来直接用在我们自己的项目中,大大提高开发效率。

2023-09-15 21:17:14 60 1

原创 Python之迭代器、生成器

这样就不必创建完整的list,从而节省大量的空间,在Python中,这种一边循环一边计算的机制,称为生成器:generator, python中生成器是自定义迭代器的一种。通过列表生成式,我们可以直接创建一个列表,但是,受到内存限制,列表容量肯定是有限的,而且创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。可以看到,在每次for循环中,迭代器对象的next()方法被调用,返回当前元素,直到所有元素都被遍历完毕。

2023-09-14 21:34:39 239 1

原创 Python之迭代器及可迭代对象

其中,iterable是一个可迭代对象,default是当可迭代对象为空时返回的默认值(默认为抛出ValueError异常),key是定义一个函数,用于从每个参数中提取比较关键字。在上面的示例中,map函数将square函数作用于列表[1, 2, 3, 4, 5]中的每个元素,得到一个结果列表[1, 4, 9, 16, 25]。filter() 函数会通过对可迭代对象中的每个元素应用 function 函数进行筛选,返回一个新的可迭代对象,其中仅包含应用 function 函数后结果为 True 的元素。

2023-09-13 21:30:38 131 1

原创 Python之简单算法:递归、冒泡、二分法

middle_index = len(l) // 2 # 向下取整 5 // 2 == 2 6 // 2 == 3。res = 条件成立之后的结果 if 条件 else 条件不成立之后的结果。## 不推荐写太多的嵌套,一般两层就够了,超过两层了,建议不这样写,面试的时候:成数非常多。遍历列表l一个一个去比较,如果比较到了,就是找到了,否则,就是没找到。# res = '不出去玩' if '下雨' else '出去玩'res=age(5) # 求第5个人的年龄。'''查找66这个数字是否在列表l中'''

2023-09-12 21:27:40 77 1

转载 Python之装饰器二

函数wrapper需要一个driver参数,而函数deco与wrapper的参数都有其特定的功能,不能用来接受其他类别的参数,可以在deco的外部再包一层函数auth,用来专门接受额外的参数,这样便保证了在auth函数内无论多少层都可以引用到。# 先调用auth_type(driver='file'),得到@deco,deco是一个闭包函数,包含了对外部作用域名字driver的引用,@deco的语法意义与无参装饰器一样。print('执行时间:%s' % (end_time - start_time))

2023-09-11 21:07:14 25

转载 Python之装饰器

index = outer(index) # res:get_time的函数名(其实也是get_time的内存地址)index = outer(index) # res:get_time的函数名(其实也是get_time的内存地址)index = outer(index) # res:get_time的函数名(其实也是get_time的内存地址)func(*args, **kwargs) # 只能够统计index函数的时间。在'不改变原来的调用方式'和'内部代码'的基础之上给函数'添加额外的功能'

2023-09-08 21:29:27 143 1

原创 Python之名称空间、闭包

【代码】【无标题】

2023-09-07 21:04:40 38

原创 Python之函数参数

命名关键字传参:在形参中会出现*的用法,如果出现在*号后面的形参,那么,实参传递的时候,必须以关键字的形式传递。1. 如果你在函数定义的时候,给形参赋予值之后,调用函数的时候,实参如果你没有给,就使用默认的。'''位置参数传递,实参个数少一个不行', 实参个数多一个也不行,参数的个数必须要一一对应''''''当默认值是列表的时候,哪么,当多次被调用的时候,多个值会指向同一个固定的地址'''函数在'调用阶段'括号中写的'变量值'就是实际参数,简称'实参'

2023-09-06 20:52:32 101 1

原创 python之函数基础

print(len(l)) # len不能用了,然后求列表的长度# 定义一个计数器​n = 0n += 1# print(n)return n​"""目前的问题:1. 我们现在所写的代码冗余度比较高,需要写重复代码2. 目前写的代码兼容性太差了​函数:函数就类似于是一个工具箱,什么时候使用什么时候拿到就用内部封装了一些功能,哪里需要就在哪里使用"""​1. 函数必须先定义后调用,没有定义函数是一定不能够调用的。

2023-09-05 21:19:36 26 1

原创 python之文件处理

print(f.readlines()) # 一次性读取文件的所有内容,然后每一个内容作为列表的一个元素返回,返回的数据类型是:列表。r(只读:只能读不能写) w(只写:只能写,不能读) a(append:在原来的基础之上在添加新的内容)# print(f.read()) # 一次性读取文件的所有数据,并且光标在文件的末尾,如果在去读,就读不到了。# open('要操作的文件路径', '读写模式', '字符编码')b模式中得b不能省略------------> rb wb ab。

2023-09-04 20:18:54 61 1

原创 python之文件处理

print(f.readlines()) # 一次性读取文件的所有内容,然后每一个内容作为列表的一个元素返回,返回的数据类型是:列表。r(只读:只能读不能写) w(只写:只能写,不能读) a(append:在原来的基础之上在添加新的内容)# print(f.read()) # 一次性读取文件的所有数据,并且光标在文件的末尾,如果在去读,就读不到了。# 只需要实现一次注册和登录即可------------->单用户的注册。# open('要操作的文件路径', '读写模式', '字符编码')

2023-09-04 20:16:33 26 1

原创 Python之元组、字典、集合内置方法

print("亲爱的%(name)s %(sex)s" % ({'name':'fjw', 'sex':'male'}))name = '李老师说:'趁年轻,多学技能'' # 错误示例 当引号里面还想写引号时,就需要用不同的引号了。username = '''kevin''' # 当三引号左边有赋值符号时就是字符串,否则就是注释。print("亲爱的{name}{sex}".format(name='fjw', sex='male'))username = """kevin""" # 同上。

2023-08-31 20:43:43 48 1

原创 基本数据类型的内置方法

>> str7 = str7.replace('18', '73') # 语法:replace('旧内容', '新内容')>>> list('wdad') # 结果:['w', 'd', 'a', 'd']>>> list({"name":"jason","age":18}) #结果:['name', 'age']>>> list((1,2,3)) # 结果:[1, 2, 3]

2023-08-30 20:03:04 28 1

原创 python之基本运算符

用“==”进行判断是,只要最终的值是一致的用“==”进行比较运算结果就是TRUE,而is则必须引用同一对象返回结果才为TRUE,否则就是FALSE,这就是is和“==”的区别,使用这两个运算符时不能混淆,因为实现的功能是不一样的。身份运算符是python用来判断的两个对象的存储单元是否相同的一种运算符号,身份运算符只有is和is not两个运算符,返回的结果都是TRUE或者FALSE。语句对条件进行判断,然后根据不同的结果执行不同的代码,这称为选择结构或者分支结构。重复一定次数的循环,称为计次循环。

2023-08-28 18:53:56 24

原创 Python基本数据类型

特性:1. 可以存放任意元素 2.创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可 3.使用下标索引来访问列表中的值。集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。字典(dict)是另一种可变容器模型,且可存储任意类型对象。获取值的方式 dict[key],不能通过下标获取元素。是以键值对的方式存储数据(key-value)定义方式:lsit =[] 定义一个空列表。集合(set)是一个无序的不重复元素序列。占位符print('亲爱的%s')input("请输入")

2023-08-25 19:59:44 27

原创 Python语法入门

标记删除第二步:遍历存活容器,查看是否有的存活容器引用了死亡容器内的对象,如果有就把该对象(注意是对象,比如0x7f94bb602f80,不是对象的引用)从死亡容器内取出,放到存活容器内。标记删除第一步:对执行删除操作后的每个引用-1,此时c的引用为0,d的引用为0,把他们都放到死亡容器内。把那些引用仍然大于0的放到存活容器内。puthon标记删除时通过l两个容器来完成的:死亡容器、存活容器。删除后,c的引用为1,d的引用为1,根据引用计数,还无法删除。引用计数:自动清除0引用的变量(无法清除循环引用的)

2023-08-24 18:48:22 49

原创 Python起步之解释器的安装及多版本共存问题

Python 是由 Guido van Rossum(绰号龟叔(gui歌维龟)) 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。

2023-08-23 18:49:54 101

原创 Python学习第一步之Typora简单用法

Typora 是一款由 Abner Lee 开发的轻量级Markdown 编辑器,与其他 Markdown 编辑器不同的是,Typora 没有采用源代码和预览双栏显示的方式,而是采用所见即所得的编辑方式,实现了即时预览的功能,但也可切换至源代码编辑模式。

2023-08-22 15:22:40 509 2

空空如也

空空如也

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

TA关注的人

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