Python
文章平均质量分 84
Snippers
个人公众号:才浅的每日python。欢迎来交流
展开
-
Twisted——基于事件驱动的Python网络框架
对于追求服务器程序性能的应用有什么适用的Python框架吗?那就是今天和大家分享的Twisted框架,它支持许多常见的传输及应用层协议,包括TCP、UDP、SSL/TLS、HTTP、FTP等,这也意味着能为客户端和服务器端提供自定义开发工具。那为什么就说它能保证高效能通信呢?Twisted在不同的操作系统平台上利用了不同的底层技术:在Windows中,基于IO完成端口技术保证了底层高效地将I/O事件通知给框架及应用程序;在Linux中采用epoll技术,它能显著提高在大量并发连接中只有少量活跃的情况下C原创 2021-07-01 09:39:15 · 1383 阅读 · 2 评论 -
事件驱动如何理解?什么场景下适合用?Python如何实现一个事件监听器?
产品小姐姐给了阿巩这样的业务需求:游戏服务器希望在玩家升级或者达成某项成就时触发多种效果。比如玩家升级后,全属性将会提高,解锁新的系统,可以学习其他技能且开启新的战斗模式……可以看出,玩家升级后,所有挂钩的业务都要集中在一起,依次被处理。首先我们使用if 玩家升级再逐条添加业务功能代码是完全可以实现的,但是这样写出来的代码耦合度极高,往往是“牵一发而动全身”,一旦后续新业务加入,还要继续插入代码。为达到解耦效果,引入了事件驱动模型:我们把“玩家升级”包装成一个事件,任何对这个事件感兴趣的“观察者”只需要原创 2021-06-10 09:58:04 · 792 阅读 · 2 评论 -
Django Rest framework使用简介
在开发Web应用中,有两种应用模式: 前后端不分离[客户端看到的内容和所有界面效果都是由服务端提供出来的。] 2.前后端分离[把前端的界面效果(html,css,js分离到另一个服务端,python服务端只需要返回数据即可]。前端形成一个独立的网站,服务端构成一个独立的网站什么是API?如果我们把前端页面看作是一种用于展示的客户端,那么 API 就是为客户端提供数据、操作数据的接口。例如:我们经常使用的淘宝商城就有很多的客户端,Web, iOS 和 Android端,但是当我.原创 2021-04-19 23:01:03 · 1433 阅读 · 1 评论 -
如何区分不同用户?Cookie/Session详解,基于Token的用户认证——JWT
Cookie和Session作用都是跟踪用户的整个会话。Cookie是存在于客户端的“客户通行证”,Session是存在于服务端的“客户档案表”。Cookie:为什么产生:一个用户的所有请求操作对应一个会话,另一个用户则对应另一个会话,但是由于HTTP协议的无状态特性,服务器无法单从连接上跟踪到会话。来源:服务端response向客户端浏览器颁发Cookie,存储在客户端的浏览器中。作用:当浏览器再次请求该网站时,浏览器把url+Cookie提交给服务器,在服务端进行验证。操作:服务端操原创 2021-04-15 19:53:54 · 1672 阅读 · 0 评论 -
Django应用上线前有哪些注意事项?如何使用同步或异步容器启动Django应用?
Django应用上线前的注意事项单元测试首先在整个应用上线前,应该有完整的单元测试去测试各模块的功能。通常需在写代码的过程中甚至之前需要写好单元测试,以便高效维护代码的设计结构。我们可以使用Python自带的UnitTest或者Django的TestCase,这里介绍下Django的TestCase。下图为Django TestCase的几个重要的基类:SimpleTestCase:继承自python,可以发起HTTP请求,跟页面模板以及URL做交互,但是该基类禁止了数据库的访问。 Tra原创 2021-04-14 17:57:12 · 269 阅读 · 0 评论 -
Python分布式任务队列Celery,Django中如何实现异步任务和定时任务
问题引入个人的某Django项目需要实现在后台发送邮件,发送邮件时间比较长,需要在后台做大量的数据运算,包括去做深度学习生成报告,以及做大量数据的处理。由于Python中GIL全局锁的限制,单是使用多线程threading,无法充分利用CPU,这里需要一个工具实现异步方式来进行分配管理任务。Celery简介celery是一个分布式的任务队列,把大量任务分布到不同的机器上去,通过集群来运行大量的任务。celery由Python编写,可通过暴露HTTP方式进行任务交互以及与其他语言集成开发。安装原创 2021-04-13 23:23:38 · 895 阅读 · 1 评论 -
解决Django 前后端分离跨域问题
一、跨域出现原因浏览器的同源策略:同源策略是一种浏览器最基本的安全机制,如果两个 URL 的 protocol、port(如果有指定的话)和 host都相同的话,则这两个 URL 是同源。二、解决方案(一)CORS:使用django-cors-headers包支持Python 3.6至3.9。支持Django 2.2到3.2。1、从pip安装:pip install django-cors-headers2、修改settings.py:注册AppINSTALLE..原创 2021-03-10 18:09:12 · 1146 阅读 · 0 评论 -
Django的请求响应完整流程解析
图例:Django:Django内部自己实现的代码。Your code: 程序员实现的代码。Extendable:可对工作进行全局扩展的,各种中间件。External:外部工具,例如浏览器、数据库。步骤详细解释:1、通过Http客户端(浏览器或爬虫)发起请求,访问到modwsgi,modwsgi使用Django的WSGI模块实现(通过manage.py runserver启动)。启动WSGI模块后会给每一个用户生成一个Handler句柄(WSGIHandler类控制整个请求到响应..原创 2020-11-12 11:31:01 · 1710 阅读 · 0 评论 -
Python实现哲学家就餐问题
哲学家就餐问题:哲学家就餐问题是典型的同步问题,该问题描述的是五个哲学家共用一张圆桌,分别坐在五张椅子上,在圆桌上有五个盘子和五个叉子(如下图),他们的生活方式是交替的进行思考和进餐,思考时不能用餐,用餐时不能思考。平时,一个哲学家进行思考,饥饿时便试图用餐,只有在他同时拿到他的盘子左右两边的两个叉子时才能进餐。进餐完毕后,他会放下叉子继续思考。请写出代码来解决如上的哲学家就餐问题,要求代码返回“当每个哲学家分别需要进食 n 次”时这五位哲学家具体的行为记录。测试用例:输入:n = 1 (1原创 2020-11-08 19:34:04 · 2589 阅读 · 0 评论 -
Python操作MySQL
1.安装PyMySQL使用pip命令安装PyMySQL库。pip install PyMySQL2.创建数据库使用脚本create_employee.sql创建数据库mytestdb,以及创建数据表employee。create_employee.sql代码如下:create database if not exists mytestdb character set utf8;use mytestdb;drop table if exists `employee`;...原创 2020-11-06 20:55:43 · 201 阅读 · 0 评论 -
collections扩展基本数据类型
collections 官方文档:https://docs.python.org/zh-cn/3.7/library/collections.htmlcollections提供了加强版的数据类型,以下列举三个常用基本数据类型:namedtuple ——带命名的元组 Counter ——计数器 deque ——双向队列namedtuple使用namedtuple定义元组中存放的数据为Point点的x,y坐标。支持通过位置顺序传递参数以及关键字传递参数。#命名元组import.原创 2020-11-04 18:33:39 · 215 阅读 · 0 评论 -
python核心知识汇总
一、列表和元组基本概念列表和元组,都是一个可以放置任意数据类型的有序集合。其中列表是动态的,长度大小不固定,可以随意地增加、删减或者改变元素;而元组是静态的,长度大小固定,无法增加删减或者改变。 Python 中的列表和元组都支持负数索引,-1 表示最后一个元素,-2 表示倒数第二个元素,以此类推。 列表和元组都支持切片操作 列表和元组都可以随意嵌套 两者也可以通过 list() 和 tuple() 函数相互转换 列表和元组常用的内置函数: count(原创 2020-06-27 04:28:34 · 3277 阅读 · 0 评论 -
Python 用户输入和while循环
一、函数input()工作原理函数input()接受一个参数:即要向用户显示的提示和说明。Sublime Text不能运行提示用户输入的程序。可以用Sublime Text编写提示用户输入的程序,但必须从终端运行它们。使用int()来获取数值输入:由于使用函数input()时,Python将用户输入解读为字符串。所以在需要使用数值的情况下,用int()进行类型转换。在pytho...原创 2018-08-22 19:11:29 · 13101 阅读 · 0 评论 -
Python 函数简介与操作
1、定义函数下面是一个简单的函数:def greeter_user(): print('Hello World!')greeter_user()关键字def告诉Python要定义的是一个函数,定义以冒号结尾。1>向函数传递信息def greeter_user(username): print('Hello, ' + username.title() ...原创 2018-08-28 00:00:16 · 959 阅读 · 0 评论 -
Python字典简介与操作
一、字典是什么字典是一系列键-值对。可通过使用键来访问其相关联的值,与键相关联的值可以是数字、字符串、列表或者字典,乃至可将任何Python对象作为字典中的值。在Python中,字典用放在{}中的一系列键-值对表示,键和值之间用冒号分隔,键值对之间用逗号分隔。二、使用字典1、访问字典中的值要获取键对应的值,可指定字典名并将要访问的键放在[ ]中。字典中可包含任意数量的键-值...原创 2018-08-20 23:41:24 · 376 阅读 · 0 评论 -
线性回归和逻辑回归
线性回归线性回归简述:线性回归是利用线性回归方程的最小二乘法函数对一个或多个自变量和因变量之间的关系进行建模的方法。线性回归的应用:大多数情况中X、Y是一个向量而非实数,所以:其中模型等式要想成立,需要加入误差。线性回归的数学定义:X为某一行从第一个到第p个样本的特征值,前面的1是手工添加,为了方便乘法计算。线性回归数学解析解:通过计算X、Y间的...原创 2019-07-13 19:57:24 · 529 阅读 · 1 评论 -
朴素贝叶斯实例二——情感分析
大体思路:从测试数据中将用户正面情感和负面情感的评论抽取出来,以识别评论是正面负面,和真实标签进行对比计算出准确率。from matplotlib import pyplot as pltimport jieba # 分词import re # 正则from sklearn.feature_extraction.text import TfidfVectorizerimport nu...原创 2019-07-30 13:52:18 · 3051 阅读 · 0 评论 -
SVM支持向量机+实例展示
一、SVM简介SVM定义:支持向量机(英语:support vector machine,常简称为SVM,又名支持向量网络)是在分类与回归分析中分析数据的监督式学习模型与相关的学习算法。给定一组训练实例,每个训练实例被标记为属于两个类别中的一个或另一个,SVM训练算法创建一个将新的实例分配给两个类别之一的模型,使其成为非概率二元线性分类器。SVM模型是将实例表示为空间中的点,这样映射就使得单独...原创 2019-08-05 15:54:29 · 35541 阅读 · 1 评论 -
Python 列表简介与操作
一、列表是什么:列表由一系列按特定顺序的元素组成。你可以创建包含字母数字或家庭成员姓名的列表;也可将任何东西加入列表,其中元素之间可以没有任何关系。在Python中用方括号([ ])表示列表,用逗号分隔其中元素。1、访问列表元素列表名[索引]索引从0开始,第二个列表元素的索引为1;通过将索引指定为-1,可让Python返回最后一个列表元素。此方法可用在不知道列表长度情况下访...原创 2018-08-11 23:03:33 · 333 阅读 · 0 评论