- 博客(18)
- 收藏
- 关注
原创 Python常见的一些魔术方法
_init__在类实例化创建对象时调用__str__被执行打印对象的操作时候会自动触发,并且该方法必须返回一个字符串对象,即必须有return出来的东西。
2024-04-17 10:33:05 161 1
原创 mysql 5.7 默认隔离级别
这意味着在并发执行的事务中,每个事务只能看到在它启动之前已经提交的数据,而无法看到其他正在并发执行的事务中的未提交数据。REPEATABLE READ(可重复读)-RR-解决了脏读和不可重复读,存在幻读。在这个隔离级别下,事务在开始时创建一个一致性视图,并在整个事务期间保持该视图不变。REPEATABLE READ解决了脏读和不可重复读的问题,但仍然可能存在幻读。MySQL 5.7默认的隔离级别是REPEATABLE READ(可重复读)。不可重复读是指同一事务内,两次读取同样的数据却得到不同的结果;
2023-11-16 15:57:33 197 1
原创 qps,tps,并发量,pv,uv
例如,访问一个 Index 页面会请求服务器 3 次,包括一次 html,一次 css,一次 js,那么访问这一个页面就会产生一个T,产生三个Q。可以统计服务一天的访问日志得到。qps:Queries Per Second,每秒查询率,一台服务器每秒能够响应的查询次数,每秒的响应请求数。不使用缓存:大约8核16G机器,qps 400多,如果横向扩展,10台8核16g的机器,qps大约4000多。一个系统的吞吐量(承压能力)与request(请求)对cpu的消耗,外部接口,IO等等紧密关联。
2023-11-16 15:56:28 987 1
原创 接口幂等性问题
这里要注意的是,去重表和业务表应该在同一库中,这样就保证了在同一个事务,即使业务操作失败了,也会把去重表的数据回滚。这个很好的保证了数据一致性。在网络通信中,由于各种原因(网络延迟、请求重试等),可能导致接口被重复调用,而对于某些操作,重复执行可能会产生错误或者不一致的结果。在网络通信中,由于各种原因(网络延迟、请求重试等),可能导致接口被重复调用,而对于某些操作,重复执行可能会产生错误或者不一致的结果。这样,在重复请求发生时,由于唯一索引的约束,重复的请求会导致插入失败,从而避免了幂等问题的产生。
2023-11-16 15:54:27 97 1
原创 数据库三大范式是什么,索引类型,事务特性
第二范式要求表中的所有列,其数据依赖于主键即一张表只存储同一类型的数据,不能有任何一列数据与主键没有关系第三范式要求表中每一列数据不能与主键之外的字段有直接关系。
2023-11-15 20:06:13 78
原创 ForeignKey 外键参数使用
on_delete 可以选择的参数models.CASCADE # 级联删除,注意使用时机,需要强关联性的才使用这个 用户和用户详情 课程和课程章节models.SET_NULL # 删除分类,课程这个字段设置为空,要有null=True参数的配合models.SET_DEFAULT # 删除分类,课程这个字段设置为默认值,要有 defalut=xx参数的配合models.DO_NOTHING # 删除分类,课程这个字段什么都不做,原来是什么值就是什么值。
2023-10-21 14:43:55 174 1
原创 权限类源码分析
可以看到,他判断是否为false,如果是false则执行permission_denied()方法,在permission_denied()方法中可以看到,若没有权限,抛出message和code。先for循环get_permission,在get_permission()方法中可以看到。是我们配置的一个个权限类,所以循环这个具有权限类的列表,可以得到的是权限类列表的对象。权限类的分析,进去check_permission方法中可以看到。要注意的是先执行的认证,再执行的权限,最后执行的频率。
2023-09-14 17:25:46 211 1
原创 ModelViewSet视图集修改五个接口
ps:由于先继承的是ViewSetMixin,所以会先执行ViewSetMixin中的as_view()方法,而不会先执行GenericAPIView继承的APIView中的as_view()方法。2.查看ViewSetMixin中的as_view()方法,发现里面也有view()方法,故当路由匹配成功时,执行ViewSetMixin的as_view内的view(request),4.此时的参数actions是路由中的映射字典 # {'get':'list','post':'create'}
2023-09-05 21:01:11 164
原创 函数和方法
4.使用@staticmethod装饰器将类中的方法变成普通函数,即既不绑定给类也不绑定给对象时,要遵循普通函数的传参,有几个参数就要传递几个参数。1.类中的方法默认都是给对象使用的,可以把对象自动传递给方法,当类调用类中的方法时,就变成了普通函数,需要传值,有几个参数就要传递几个参数进去,3.当使用@classmethod装饰器将方法绑定给类时,会把类名当作参数传递给方法,而当对象调用该方法时,传递的参数也是类名。2.如过类中所定义的方法中没有参数传递,即方法后没有(self),即可认为时一个函数,
2023-08-31 15:43:56 210
原创 drf中的 APIView分析
3.(1)在APIView中看是否有dispatch方法,若有则执行APIView中的dispatch方法,若没有则执行的是其父类的dispatch方法。(3)查看该方法,request = self.initialize_request(request,*args,**kwargs)然后在View中的as_view方法中看到此时定义的函数view中最后return 到了dispatch方法,跟之前View的dispath是一样的---根据请求方式执行类中同名方法。-request.其他跟之前一样。
2023-08-30 19:54:08 65
原创 cbv源码分析
若所定义的方法在这个里面则会执行getattr反射方法,找到该方法的属性,即找到get或者post方法,或者是自定义的方法,最后return加()在对象中找不到这个方法,再去产生这个对象的类中去寻找即MyLogin(),MyLogin()中找不到再去其继承的父类即View中去寻找。从该方法中可以看出若在Mylogin类中定义的方法不在这个列表中,则会执行该方法,首先会有一个警告日志,显示所自定义的方法名和路径名。# CBV中的路由选择是通过请求方式的不同来选择的,其路由文件中的路由地址不变。
2023-08-30 16:40:42 58
原创 响应状态码
403:请求成功,但是拒绝访问、禁止访问。201:请求创建成功,创建了新的资源。402:需要进行付款等才能进行下一步。500:服务器内部错误。
2023-08-29 21:33:41 78 1
原创 MySQL的表关系
外键(Foreign Key)是数据库中用于建立关系的一种约束条件。在关系数据库中,数据以表的形式组织,不同表之间存在关联关系。通过外键,可以将一个表中的字段与另一个表中的字段关联起来,从而实现数据的一致性和完整性。外键通常由一个或多个字段组成,在包含外键的表中被称为“引用表”,在被引用的表中被称为“被引用表”。通过外键,可以定义两个表之间的关系,其中被引用表中的字段值必须在引用表的字段值中存在。这样的关系被称为“父表-子表”关系。
2023-07-14 08:26:36 506 1
原创 MySQL的一些约束条件
分组使用到了 group by 关键,是一种用于将数据根据特定的列或条件进行分类和聚合的操作。having本质上和where的功能是相同的,但不同的是having是针对分组来过滤的,用在分组之后,而where用在分组之前先过滤一遍。#模糊匹配以o开头的。它指示数据库只返回不同的(唯一的)行,从而消除重复的数据。若删除这条记录后,再继续添加记录进去发现,此时主键的id并不是原来已经删除的id号,而是继续往下加了1。正则表达式提供了一种强大的模式匹配工具,允许在 SQL 查询中进行更灵活和复杂的模式匹配操作。
2023-07-12 21:22:05 284 1
原创 MySQL在命令行中的使用
然而,由于数据存储在内存中,系统重启后数据将丢失。smallint: 2个字节----->16位---->2 ** 16 ----> 65536-----> 0-65535----> -32768-32767。若没有设置模式,则这两个‘k’的长度是一样的,设置了模式后可以看到char类型时会在前面填充的,而vachar则不会填充长度,有多长就是多长。tinyint: 1个字节------>8位------>2 **8----> 256-----> 0-255-----> -128-127。
2023-07-11 20:50:53 1916 1
原创 浅拷贝和深拷贝
在list1中的内层列表中加入7,都可以加入,但是在大列表后加入8时,只有list3可以加入,是因为其内层和外层的内存地址时一样的,而对于其他三种方法,只有内层列表的地址是一样的,而外层地址空间是不同的。可以看出对于元组来说,浅拷贝时并不是在内存中开辟了一个新的地址,而是对同一个对象进行引用,所以元素的值和内存地址都是相同的。若外层为可变数据类型,则内层id不变,外层开启新的地址空间。对于外层是不可变的数据类型来说,内外层的地址空间都不变。外层为元组,内层为元组时,内层IP地址也相同。
2023-06-14 16:16:20 73
原创 内置模块的使用
print(time.strftime('%Y-%m-%d %H:%H:%S',time.localtime(1686560612.7906141))) #返回path所指向的目录或者文件的最后修改时间。print(os.path.getatime(os.path.abspath(__file__))) #返回path所指向的目录或者文件的最后访问时间。print(os.path.getsize(os.path.abspath(__file__))) #返回path的大小 3089 字节。
2023-06-12 20:59:47 64 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人