
python
文章平均质量分 85
人生苦短,我用py
Hzy_han
bug不会凭空产生,也不会凭空消失,只是从一个地方转移到了另一个地方。
展开
-
解决高并发项目下的热点问题
1.什么是热点点表示我们在系统的业务路径上有一个地方存在性能的瓶颈,比如数据库,件系统,网络,甚至于内存等,这个点一般有io,锁等问题构成。热表示其被访问的频率很高。就是说一个被访问频率很高的io或锁自然而然就造成了我们系统业务路径上的性能瓶颈。这样的热点问题会影响系统稳定性和性能瓶颈,例如支付系统中的热点账户进出款,电商系统中的热点商品参与秒杀,金融系统中的热点理财产品抢购等,都会因为热点问题而影响系统性能。2.热点问题有哪些其次我们需要弄清楚我们的热点问题是属于读热点问题还是写热点问题,原创 2021-02-08 00:34:03 · 1697 阅读 · 0 评论 -
权限管理功能实现
权限说明场景:不同的用户具有不同的权限,如只有vip用户可以享受高速下载服务,只有svip用户才可以享受极速下载服务。思路:为用户添加角色,通过为角色添加权限从而达到权限控制的目的。数据表构建代码实现model模型类:from datetime import datetimefrom django.db import modelsfrom django.contrib.auth.models import AbstractUserclass UserProfile(Abstract原创 2020-10-11 23:13:32 · 1407 阅读 · 1 评论 -
jwt方式进行登录验证
一般Web应用开发验证用户信息有两种方式,一是使用session,二是使用token。为什么要用TokenToken无需存储降低服务器成本,session是将用户信息存储在服务器中的,当用户量增大时服务器的压力也会随着增大。防御CSRF跨站伪造请求攻击,session是基于cookie进行用户识别的, cookie如果被截获,用户信息就容易泄露。扩展性强,session需要存储无法共享,当搭建了多个服务器时其他服务器无法获取到session中的验证数据用户无法验证成功。而Token可以实现服务器间原创 2020-09-21 23:42:38 · 1242 阅读 · 1 评论 -
第三方微信登录功能实现
登录流程首先到微信开放平台查看网站应用开发登录微信的api文档,梳理出第三方微信登录的流程如下:发送第三方登录请求重定向到微信认证服务器发送登录信息并校验(携带 appid,redirect_uri,status)重定向到redirect_uri,返回code发送code请求access_token校验code,返回access_token用access_token获取用户信息实现在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的网站应原创 2020-09-20 23:47:37 · 3067 阅读 · 0 评论 -
ElasticSearch和whoosh实现项目中搜索功能
单表搜索单表搜索:实现对于特定表中的某些字段的模糊搜索匹配,这样的搜索一般是比较容易实现的。比如需要根据关键字搜索教师表中的授课教师的信息,django项目可以通过Q方法和contains来实现。# 根据搜索词search_data查询结果Teacher.objects.filter(Q(name__contains=search_data) | Q(course__contains=search_data))全局搜索全局搜索的实现主要提供如下两种方式...原创 2020-08-27 23:59:01 · 1511 阅读 · 1 评论 -
flask框架入门和总结(二)
模型 - Models什么是模型**模型,是根据数据库中表的结构来创建出来的class。每一张表到编程语言中就是一个class,表中的每一个列,到编程语言中就是class中的一个属性。ORM的三大特征1.数据表(table) 到 类(class) 的映射数据库中的每一张表 对应 到编程语言中,都有一个类在ORM中允许将数据表 自动 生成一个类也允许将类 自动 生成一张表2.数据类...原创 2019-10-27 23:48:05 · 306 阅读 · 0 评论 -
flask框架入门和总结(一)
1.Flask简介 Flask是一个基于Python并依赖于Jinja2模板引擎和WerkZeug WSGI服务的轻量级框架,采用了MTV的设计模式: M:模型层Model T:Template模板(HTML模板) V:View视图层,处理请求与响应2.Flask路由配置路由:是为了匹配用户的请求地址,会自动执行视图函数,视图函数中必须有返回值,返回字符串显示到相应的页面中。...原创 2019-10-24 22:43:24 · 340 阅读 · 0 评论 -
python、go和java中的垃圾回收机制
常见的 GC 算法。分别是:引用计数法、Mark-Sweep法、三色标记法、分代收集法。引用计数标记-清除分代回收Go三色标记法(1.5版本之后)三色标记法是传统 Mark-Sweep (标记清除法)的一个改进,它是一个并发的 GC 算法。首先创建三个集合:白、灰、黑。将所有对象放入白色集合中。然后从根节点开始遍历所有对象(注意这里并不递归遍历),把遍历到的对象从白色集合放入灰色集合。之后遍历灰色集合,将灰色对象引用的对象从白色集合放入灰色集合,之后将此灰色对象放入黑色集合重复 4 直原创 2020-07-29 22:26:02 · 1243 阅读 · 0 评论 -
这道列表面试题你确定你会吗
题目如下:A = [[1, 2, 4]]B = A * 3B[1].insert(2, 3)print(B)我以为的答案:[[1,2,3],[1,2,3,4],[1,2,3]]实际上的答案:[[1,2,3,4],[1,2,3,4],[1,2,3,4]]为什么呢在python中,如果一个列表A乘以一个数字n就会得到一个新的列表B,这个列表B的元素是A中的元素重复了n次如上题A*3 得到的B为:B=[[1,2,3],[1,2,3],[1,2,3]]打印列表B内部的元素,发现id原创 2020-06-18 23:08:25 · 262 阅读 · 0 评论 -
还在抱怨python很慢吗?这些方法让你起飞
咋就慢了?Python作为一种高级编程语言,例如is、in、not等关键词的使用,已经十分接近自然语言。这种编程语法帮助它快速坐稳了科学计算、机器学习领域的头把交椅,但也蒙上了效率低下的阴影。这种效率低下在日常的使用中并没有很强的感受,但在大量复杂计算中,相较于其他语言,劣势明显。下面举个栗子!1.测试内容:求0~N之间质数个数,具体求以下整数区间质数(素数)个数,N分别取1w, 4w, 10w, 20w和50w。 测试的语言包括C、Java、Nodejs、Golang和Python,均使用当前最新原创 2020-06-09 22:01:39 · 517 阅读 · 0 评论 -
python实现单列模式
什么是单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中,应用该模式的一个类只有一个实例。即一个类只有一个对象实例。实现单例模式因为创建对象时__new__方法执行,并且必须return 返回实例化出来的对象所cls.__instance是否存在,不存在的话就创建对象,存在的话就返回该对象,来保证只有一个实例对象存在(单列),打印ID,...原创 2020-02-10 22:48:51 · 522 阅读 · 0 评论 -
Python性能优化的方法路径
Python作为程序语言最被人诟病的一点在于其性能。Python作为动态语言,性能并不是它的优势,但很多时候实际也不会面临太多性能问题,所以Python的使用场景很广。但是,总会有碰到性能问题的一天,这种情况下首要的就是要在Python技术框架内来进行性能优化了。决定是否优化性能优化是手段,是为了解决其它一些问题。是否将性能优化作为正式开发任务,首要的就是达成共识。开发期的项目自然好...转载 2020-01-17 23:57:48 · 622 阅读 · 0 评论 -
动态类型、静态类型和强类型、弱类型的区别
编程语言一般分为动态类型、静态类型和强类型、弱类型,例如Python是动态、强类型编程语言,go语言是静态、强类型,而JavaScript是动态、弱类型编程语言。动态类型与静态类型动态类型语言动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。优点:...原创 2020-01-09 10:33:28 · 672 阅读 · 0 评论 -
django中使用celery实现分布式任务处理
Celery1.Clelery简介是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。我比较喜欢celery的一点是:Celery支持使用任务队列的方式在分布的机器、进程、线程上执行任务调度。2.Celery架构Celery是由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result...原创 2019-11-17 23:59:07 · 704 阅读 · 1 评论 -
python前后端分离项目跨域问题解决方案
跨域资源共享(CORS)是前后端分离项目很常见的问题什么是跨域问题CORS全称Cross-Origin Resource Sharing,意为跨域资源共享。当一个资源去访问另一个不同域名或者同域名不同端口的资源时,就会发出跨域请求。如果此时另一个资源不允许其进行跨域资源访问,那么访问的那个资源就会遇到跨域问题。解决跨域问题在django的前后端分离项目中出现跨域请求,解决方法是使用CORS...原创 2019-11-09 13:53:48 · 1304 阅读 · 0 评论 -
进程间通信的消息队列
什么是消息队列我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用。消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。通信原理在内存中建立队列模型,进程通过队列存取消息实现通信实现方法from multiprocessing import Queue q = Queue(maxsize = 0)...原创 2019-11-04 23:34:12 · 179 阅读 · 0 评论 -
cookie和sesiion的对比和使用
cookie1.什么是cookiecookie 是一种数据存储技术将一段文本保存在客户端(浏览器)的一种技术,并可以长时间保存2.cookie的使用场合1.记住密码2.记住搜索关键词3.Flask 中使用 cookie1.使用 响应对象 保存cookie到客户端 响应对象: 1.resp = make_response("响应字符串") 2.resp = redirect('...原创 2019-10-29 22:37:19 · 314 阅读 · 0 评论 -
进程、线程和协程的区别和对比
一、进程进程(process)是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元.特征动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。并发性:任何进程都可以同其他进程一起并发执行独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立...原创 2019-10-23 23:27:11 · 460 阅读 · 0 评论 -
TCP三次握手和四次挥手过程详解
三次握手 :tcp传输在数据传输前建立连接的过程客户端向服务器发送连接请求服务器收到请求后,回复确认消息,表示允许连接客户端收到服务器回复,进行最终标志发送确认连接1)第一次握手:A的TCP客户进程向B发出连接请求报文段,(首部的同步位SYN=1,初始序号seq=x),(SYN=1的报文段不能携带数据)但要消耗掉一个序号,此时TCP客户进程进入SYN-SENT(同步已发送)状态。2...原创 2019-10-22 23:58:52 · 243 阅读 · 0 评论