| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> python -> 正文阅读 |
|
[开发工具]python |
1. python 的内存管理引用计数,变量的赋值只是对对象的引用,删除一个变量就减少了一个引用。 垃圾回收,当对象的引用计数为0时,对象会被垃圾回收,释放内存。自动的垃圾回收是需要一定的阈值条件,垃圾对象达到一定的数量,才会触发;主动触发gc.collect() 内存池机制,python申请的1-256k的小块内存,由malloc进行分配,垃圾回收后,内存不会释放,而是由内存池进行管理,便于下次使用。 2. 类方法与实例方法、静态方法类方法
实例方法
静态方法
3. python的闭包与装饰器闭包,定义函数时,在其内部又定义了一个函数,内部函数的内部作用域引用了外部函数的局部变量,外部函数返回内部函数,这种函数嵌套的方式就是闭包。 装饰器,它是闭包的一种应用形式,可以在不改变源码的情况下扩展函数的功能。使用\@高阶函数去装饰另一个函数,进行功能扩展。 4. 什么是git? 有什么作用? 如何初始化一个本地仓库git, 分布式版本控制工具 可以实现软件的版本控制,在多个版本之间切换; 可以实现多分支开发,提高开发效率; 可以实现历史记录,历史状态的恢复; 团队内部实现权限管理等。 初始化本地仓库: git init 5. 什么是并行?什么是并发? Python的多线程属于哪种,为什么?并发,两个或两个以上的程序,在同一时间内执行。 并行,同时执行,异步独立 python的多线程属于并发,在python解释器内部有一个GIL,所有线程必须申请到该锁才可以解释执行。
6. Django对请求的处理流程
7. 开发模式有哪些?前后端不分离,页面结构和数据由后端服务器渲染,然后返回给浏览器,由浏览器展示即可。缺点是既要做后端接口,又要做模板页面;服务器计算压力大。 前后端分离,将页面结构、数据分离开,前端服务器返回页面结构,后端服务器返回数据。 由客户端浏览器最终渲染整体页面。可以实现并行开发、充分利用客户端的资源,降低服务器的压力。 8. 什么是静态页面? 动态页面?静态页面, html/css/js等资源均已准备就绪,由浏览器展示页面即可,不用再动态渲染。 动态页面,浏览器拿到页面后,需要执行js,经过多次与服务端交互,渲染最终的页面。 9. JWT 会话保持的流程浏览器发起请求登陆,服务端验证身份,根据算法,将用户标识信息编码生成 token, 并且返回给浏览器做本地存储;下次请求时,把本地的 token 一起发送给服务器,服务器通过解码token,完成用户的身份认证。 ? 10. JWT token的生成过程?对header {'typ':"JWT", 'alg':"HS256"}进行base64编码,然后将结果中的’=‘替换为“”, 得到第一部分; 对payload {’username‘:"laufing", .....}进行base64编码,然后将结果中的’=‘替换为’‘,得到第二部分; 第一部分通过“.” 拼接第二部分,然后使用HS256算法进行哈希加密,然后base64编码,最后将结果中的’=‘替换为’‘,得到第三部分。 ? 以上三部分通过’.‘ 拼接为一个整体,即得到jwt token。 11. JWT 如何做身份验证的?(JWT的验证过程)首先,JWT 的 Token 相当是明文,是可以解码的,服务端,拿到 token 后进行解码,解码成功就可拿到用户的信息,即认证成功。 解码流程:将token字符串从右边开始以“.”进行一次分割,得到签名输入部分(header编码+payload编码)、签名部分, 对签名输入部分进行哈希加密(使用header中的alg算法),然后base64编码,将编码结果中的'='替换为“”,然后与签名部分对比,两者一致则验证成功,否则失败。 12. JWT 如何防止 token 被串改?jwt第三部分signature是关键且无法解密,能被解密出明文的,只有header和payload,假如中间串改了payload,在服务端在执行一次 signature = 哈希加密(header + “.” + payload, 密钥),然后与token中的signature对比,肯定不一致,因为哈希加密是单向不可逆的过程,只要header、payload有任何的改变,计算出的签名一定改变,从而与原来的签名不一致。 13. tcp三次握手的过程:
14. 类属性和实例属性的区别?
15. django中csrf的实现机制?CSRF即跨站伪造请求攻击,是利用用户登录后保存在浏览器中的认证信息(cookie),进行一些恶意操作的过程。 ? Django预防CSRF攻击的方法:
16. 什么是wsgi, uwsgi, uWSGIWSGI: web 服务器网关接口, 是一套协议。用于接收请求并进行初次封装,然后将请求交给web框架 uwsgi: 和WSGI一样是一种通讯协议,是uWSGI的独占协议,用于定义传输信息类型 uWSGI:一个web服务器,实现了WSGI协议 uWSGI协议 http协议 17. Redis有哪些优缺点优点
缺点
18. 为什么要用 Redis 做缓存?web系统中的缓存是一种降低数据库的查询压力,提高服务性能的一种数据存储方案。它需要更快的数据读写操作,满足多场景的数据类型,更健全的数据安全、数据可用机制等,而redis恰好具有以上这些优点,所以常用Redis作为缓存。 19. Redis为什么这么快
20. Redis的应用场景
21. 什么是Redis持久化持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失。 有RDB、AOF两种方式 RDB,将内存数据以二进制形式存入磁盘; AOF,将操作指令写入日志文件。 22. Redis 的持久化机制是什么?各自的优缺点?方式一:RDB RDB:是Redis DataBase缩写快照 RDB是Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。通过配置文件中的save参数来定义快照的周期。 优点:
缺点:
方式二 :AOF ? AOF持久化(即Append Only File持久化),则是将Redis执行的每次写命令记录到单独的日志文件中,当重启Redis会重新将持久化的日志中文件恢复数据。 当两种方式同时开启时,数据恢复Redis会优先选择AOF恢复。 优点:
缺点:
两种持久化的对比?
23. Redis持久化数据和缓存怎么做扩容
24. 过期键的删除策略
25. Redis key的过期时间和永久有效分别怎么设置?对过期的数据怎么处理呢?EXPIRE设置过期时间和PERSIST设置永久有效。 常见的策略有两种:
26. Redis的内存淘汰策略有哪些?Redis的用于缓存的内存不足时,怎么处理需要新写入且需要申请额外空间的数据。
总结 Redis的内存淘汰策略的选取并不会影响过期的key的处理。内存淘汰策略用于处理内存不足时的需要申请额外空间的数据;过期策略用于处理过期的缓存数据。 27. 数据库事务的四大特性原子性(Atomicity);指事务是一个不可分割的单元,事务中的操作要么全部执行,要么全部不执行。 一致性(Consistency);事务执行前后数据的完整性必须保持一致。这里的完整性包括实体完整性、参照完整性、用户定义的完整性。 隔离性(Isolation);多个用户并发访问数据库时,数据库为每一个用户开启一个事务,多个事务并发执行时,相互之间是隔离开的,互不影响。 持久性(Durability);事务一旦被提交,对数据库中数据的改变是永久性性的。 28. 事务的隔离级别读未提交 事务A更新了数据,但是还没提交;事务B就读取到A更新的数据,事务A回滚后,B就看不到更新的数据。这种现象就是读未提交,即脏读 读已提交 事务A更新数据并完成提交;事务B内部就可以读取到A更新的数据。
可重复读 事务A更新数据并完成提交;在事务B提交之前,其内部无法读取到A更新的数据,只能读取到之前的旧数据。(普通查询,即快照读) 缺点:容易出现幻读:
串行(xing)化 所有事务串行执行,一个执行完成,再执行另一个。 29. 什么是悲观锁、乐观锁?如何选择悲观锁:在查询语句上加锁,保证多事务写入时串行执行。
乐观锁:查询时不加锁,在变更时对比原数据与当前重新查询的数据是否一致,若不一致则本次变更失败(即乐观的认为当前没有其他事务在同时进行此过程) 在冲突较少时,如订单并发量较少,使用乐观锁(省去加锁、释放锁的开销,提高性能),在冲突较多时,如订单并发量大,使用悲观锁。一般将整个事务的过程都放置于try中。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:00:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |