05 2021 档案
摘要:前缀树是用于快速搜索的一种数据结构,比如微信存储的用户名有一亿个,如果我们直接遍历一亿个用户名来查找用户,那将会非常慢。假如我们一个一个字符来查找的话,将会快很多。再配合字典原生通过哈希实现的原理,我们查找一个用户名,需要查找的次数就是用户名字符长度多次哈希即可 构造后的字典结构如下:
阅读全文
摘要:MySQL的修改创建,涉及到写的东西,他们都会涉及两个重要的日志模块,redo log(重做日志)和 binlog(归档日志)。 redo log 在 MySQL 里也有这个问题,如果每一次的写操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程 IO 成本、查找成本都很高。为了
阅读全文
摘要:今天是本人高产似母猪,再说一下,redis是如何用原子操作应对并发的。 所谓的Redis命令原子操作,其实就是不用我们对临界区的代码上锁,临界区代码也实现了原子性,即这段代码一定会完整执行完,不会被其他线程,进程中断。
阅读全文
摘要:
阅读全文
摘要:Redis在宕机后可以使用RDB快照和AOF日志两种方式恢复数据,但是恢复总是需要时间的。所以我们有了主从库,通过数据冗余来实现一台机器宕机,另外一台机器接力接受请求。也就是增加Redis实例 在进行保持数据一致性之前,首先要知道主从库之间是读写分离的。 读操作:主库、从库都可以接收; 写操作:首先
阅读全文
摘要:“一直很好奇redis是如何这么快的,怎么还能把它的数据存储在内存之中,难道不怕掉吗?以及内存这么宝贵的东西,redis是怎么利用它的。这些东西都促使着自己去了解redis的底层实现原理。所以在阅读了大量文章后。大概总结了redis的一些底层实现原理。” 1. redis快,一方面,这是因为它是内存
阅读全文
摘要:四.序列化 4.1 第一步实例化序列器类 执行类的实例化,一般就是封装一些数据变量,所以不需要看源码看得太多。 我们来看实例化过程中的两个魔法方法,init方法和new方法 自定义的序列化器类没有init方法,先走得是爷爷类BaseSerializer里面的init方法,然后这里面的init方法再调
阅读全文
摘要:三.限流 对于已经验证并且有权限的用户,我们还可以对其进行限流,反爬虫,加强安全性 DRF实现限流的原理是通过用户的IP或者用户名,把它加入列表,比如对只能访问一分钟内只能访问3次的资源。则每来一次把此IP访问时间放入列表之中进行记录。通过返回的数据是false还是true来看是否继续访问某个视图类
阅读全文
摘要:二.权限 权限实现的原理是通过对用户的信息进行判断,来判断是否有权限的。 很多时候我们通过对用户进行认证后,认证后的用户会有权限之分,如是否是VIP,对系统资源的访问也要区分权限。我们可以自定义一个权限类,权限类里面定义一个方法,通过返回true或者是false来使用户是否有权访问某个视图。在视图里
阅读全文
摘要:1. get_authenticators """ Instantiates and returns the list of authenticators that this view can use. """ 返回此类能够使用的认证器类实例列表 在initial_reuqest方法里面会调用此方法
阅读全文
摘要:一.请求流程 1.as_view函数 """Main entry point for a request-response process.""" 是请求响应API一个入口点,其一是创建了一个我们自定义类的实例,二是调用dispatch方法 View类里面有as_view函数,APIView里面也有
阅读全文
摘要:关于我:萌新一枚 标签:技术,健身,宅 联系方式有任何问题可以加我微信哦 13009860457 联系方式 [Liánxì fāngshì] contact details
阅读全文

浙公网安备 33010602011771号