自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(112)
  • 收藏
  • 关注

原创 Rabbitmq 简单介绍

消息队列就是基础数据结构中的“先进先出”的一种数据机构。例如生活中买东西,需要排队,先排的人先买消费,就是典型的“先进先出”

2022-09-04 16:13:32 403 1

原创 Redis 基础

比如记录用户一年内签到的次数,签了是 1,没签是 0。把 h 和 e 的二进制码连接在一起,第一位的下标是 0,依次递增至 15,然后将数字为 1 的位置标记出来,得到 1/2/4/9/10/13/15,我们把这组数字称为位的“偏置数”,最后按照上述偏置数对字符 a 进行如下位图操作。Redis 官方也做了一个实验,他们模拟了一个拥有 1 亿 2 千 8 百万用户的系统,然后使用 Redis 的位图来统计“日均用户数量”,最终所用时间的约为 50ms,且仅仅占用 16 MB内存。...

2022-08-26 16:49:58 766

原创 浅入 Docker

​ 在计算机中,虚拟化(Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚拟化资源包括计算能力和资料存储。

2022-08-25 16:28:18 527

原创 ElasticSearch 之初步上手

Elasticsearch 是一个基于Lucene的分布式搜索和分析引擎。ES是elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。Elasticsearch使用Java开发,在Apache许可条款下开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

2022-08-24 21:11:20 950

原创 SQLAlchemy 从入门到入门

SQLAlchemy是一个基于Python实现的ORM框架。该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取执行结果。

2022-08-11 21:07:15 1594

原创 Flask 进阶

flask 信号

2022-08-11 16:58:13 573

原创 Flask 入门

Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。.........

2022-08-10 10:27:32 586

原创 爬虫之Scrapy框架

Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫。Scrapy 是基于twisted框架开发而来,twisted是一个流行的事件驱动的python网络框架。............

2022-08-04 22:09:17 2125

原创 爬虫之验证码

实际使用的时候验证码是不固定的,需要剪切下来使用,需要使用 pillow 模块。在其官网注册账号后,绑定微信会提供免费的1000题分,可用于验证码识别。

2022-08-03 18:13:47 846

原创 爬虫从入门到入牢

爬虫一般指网络爬虫。 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫安装:各种请求方式:常用的就是 requests.get() 和 requests.post()2. requests 模块介绍在 python 中模拟发送请求使用 requests 模块,或者使用 urllib 内置模块,但是其 api 使用复杂。2.1 requests ge

2022-08-03 16:52:01 4574 3

原创 windows下 Redis 的安装和使用

介绍是一个cs架构的开源软件(用c语言写的,初级版本代码只有1w多行。公司使用5.x,4.x多)非关系型(没有外键关联关系)数据库数据都放在内存中(读写速度超级快,每秒的qps10w)以key-value形式存储有5大数据类型(字符串,list,hash,集合,有序集合)好处速度快,因为数据存在内存中,类似于python的字典的优势就是查找和操作的速度快支持丰富数据类型,支持支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行丰富的特性。...

2022-07-19 10:46:13 1858

原创 celery 基本使用

Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。它是一个专注于实时处理的任务队列,同时也支持任务调度。Celery有广泛、多样的用户与贡献者社区,你可以通过IRC或是邮件列表加入我们。Celery是开源的,使用BSD许可证授权。httphttphttp3.celery可以做的事异步执行解决耗时任务,将耗时操作任务提交给Celery去异步执行,比如发送短信/邮件、消息推送、音视频处理等等延迟执行解决延迟任务。...

2022-07-19 10:43:22 973 1

原创 Redis 与 Mysql 双写一致性方案解析

首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作例如首页,由于首页被访问的频率最高,如果每一次访问首页都需要去数据库查询,那么数据库的压力会很大。可以将数据写入缓存,下一次直接去缓存中取,这样就会减轻数据库的压力。.........

2022-07-15 20:50:11 391

原创 事务隔离级别

针对不同的隔离级别,并发事务执行过程中可以发生不同的现象隔离级别脏读不可重复读幻读可能可能可能不可能可能可能不可能不可能可能不可能不可能不可能在READUNCOMMITTTED隔离级别下,可能发生脏读,不可重复读和幻读现象;在READCOMMITTED隔离级别下,可能发生不可重复读和幻读现象,但是不可能发生脏读现象;在REPEATABLEREAD隔离级别下,可能发生幻读现象,但是不可能发生脏读和不可重复读现象;脏写Oracle仅支持两种隔离级别。...

2022-07-15 15:43:36 600

原创 面向对象进阶

typetype(obj) 表示查看 obj 是由哪个类创建的isinstanceisinstance 可以判断x是否是y类的对象isinstance 可以判断该对象是否是家族体系中的(只能往上判断类)2. 反射反射的四个函数改变对象的字符串显示。可以理解为使用print函数打印一个对象时,会自动调用对象的__str__方法_repr_在python解释器环境下,会默认显示对象的repr表示。总结:str函数或者print函数调用的是 obj. _str_()repr函数或者交互

2022-07-13 22:28:39 109

原创 Git 初步上手

Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。其可以完成协同开发的项目,帮助开发者合并整合代码,如果出现冲突代码的合并,会提示后提交合并代码的开发者,让其解决冲突 。除了 Git 还有 也可以做到。Git:是一种版本控制系统,是一个命令,是一种工具。GitHub:是一个基于Git实现的在线代码托管仓库,包含一个网站界面,向互联网开放,公有仓库免费,部分私有仓库收费,全球最大的开源代码托管平台GitLab:是一个基于Git实现的在线代码仓库托管软件,可以通过Gi

2022-07-08 17:13:25 300

原创 接口幂等性

幂等性是系统服务对外一种承诺,承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等的服务会认为外部调用失败是常态,并且失败之后必然会有重试。也就是说多次操作的效果跟一次操作是一样的,多次调用接口的结果不会改变。不是幂等性的接口2. 保持接口幂等性token机制服务端提供了发送 token 的接口。我们在分析业务的时候,哪些业务是存在幂等问题的,就必须在执行业务前,先去获取 token,服务器会把 token 保存到 redis 中。然后调用业务接口请求时,把 token 携带

2022-07-08 15:57:45 148

原创 一文搞懂 CGI、FastCGI、WSGI、uWSGI、uwsgi

CGI (公共网关接口)是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI通用网关接口(Common Gateway Interface/CGI)是一种重要的互联网技术,可以让一个客户端,从网页浏览器向执行在网络服务器上的程序请求数据。CG

2022-07-08 15:21:56 731

原创 跨域问题详解

跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。浏览器从一个域名的网页去请求另一个域名的资源时,出现域名、端口、协议不同,都属于跨域。例如在 127.0.0.1:8000 去请求 127.0.0.1:8888 的资源同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现请求

2022-07-06 19:47:36 707

原创 mysql 的 localhost 连接与 IP 地址连接有什么区别

localhostlocalhost 代表了本主机,通过使用localhost可以访问自己主机的网络服务,http://localhost,将会显示运行这个浏览器的计算机上所服务的网站的主页。使用localhost的时候,使用的是回环网络接口,这会绕过本地网络接口硬件,独立于任何网络配置(不受网络防火墙和网卡相关的的限制)windows 将 localhost 解析为 127.0.0.1(IPv4)、 ::1 (IPv6)localhost 与 127.0.0.1 的区别IPIP地址是由网络地址

2022-07-05 22:26:15 4113

原创 解决 pip 安装 mysqlclient 报错

2. Ubuntu此时如果遇到如下错误

2022-07-05 20:44:34 914

原创 jwt 本地存储的三种方式

jwt 即对用户登录状态的一种标识,我们带着其返回的 token 来向后端发起请求,后端服务器根据 token 进行判断是否正确,过期来判断用户的状态,进而决定是否向前端发送数据。这里记录一下前端如何对 token 或者其他数据进行存储。属于本地存储,浏览器关闭后便失效3. localStorage属于本地存储,长期有效,浏览器关闭之后也有效。用法与上面类似...............

2022-07-02 13:55:40 1625

原创 python 虚拟环境搭建

原因虚拟环境搭建优点2. 虚拟环境搭建首先要安装两个模块windowsMacOS、Linux配置虚拟环境管理器工作目录基于某 Python 环境创建虚拟环境,创建后自动进入,之后再敲 python,pip 统统都用虚拟环境的......

2022-07-01 18:47:36 265

原创 pip 更换安装源

2. 永久配置安装源WindowsMacOS、Linux配置文件内容

2022-07-01 18:11:20 1460

原创 Vue 项目快速上手

首先需要安装的是 node.js ,官方下载地址:Node.js 中文网安装比较简单,一直点就行,下载完自带 node、npm 。最后需要加入环境变量。使用 npm 下载 Vue CLI 其是用于快速 Vue.js 开发的命令行界面,也就是脚手架。但是使用 npm 安装第三方模块,速度比较慢,使用国内镜像。临时使用修改npm源永久修改npm源安装 cnpm查看当前默认安装路径修改 npm 安装路径注意点Vue CLI 的包名称由 改成了 。 如果你

2022-06-30 20:21:28 1091

原创 Vue 组件化

组件简单来说就是将代码封装,便于后续重复使用,被封装的代码可以包含多种例如 html、css、js。组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树流程因为组件是可复用的 Vue 实例,所以它们与 new Vue 接收相同的选项,例如 、、、 以及等。除了像 这样根实例特有的选项。还有需要注意的是 必须是函数。局部注册可以写在 Vue 实例或者 组件实例中。或注意点:组件之间数据默认不互通,如下所示此时可以将全局看成是父,局部是子根实例

2022-06-29 20:48:02 643

原创 Vue 基础

HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面 -> 给后端(PHP、Python、Go、Java) -> 后端嵌入模板语法 -> 后端渲染完数据 -> 返回数据给前端 -> 在浏览器中查看Ajax的出现 -> 后台发送异步请求,Render+Ajax混合单用Ajax(加载数据,DOM渲染页面):前后端分离的雏形Angular框架的出现(1个JS框架):出现了“前端工程化”的概念(前端也是1个工程、1个项目)React、Vue框架:当下最火的2个前端框架(Vue:国人

2022-06-29 16:24:06 736

原创 Vue Ajax请求

前端发送 Ajax

2022-06-28 21:08:46 4380 2

原创 Vue 生命周期

简单描述生命周期钩子函数mount挂载,把div挂载到组件中1.bedoreCreate2.created这个用的多,只要创建,data变量就初始化完成了,一般是从后端获取到的,在此处发送ajax请求组件销毁 - 给组件写一个定时器三. 测试代码这里使用简易组件测试。......

2022-06-28 20:05:39 255

原创 Django DRF JWT 认证

首先大致了解一下什么是 TokenToken 是一种客户端认证机制、令牌,是一个经过加密的字符串,安全性强,支持跨域用户第一次登录,服务器通过数据库校验其用户名和密码是否合法,则再生成一个token串,服务端会返回Token给前端,前端可以在每次请求的时候带上Token证明自己的合法地位Token 的生成一般是采用uuid保证唯一性,当用户登录时为其生成唯一的token,存储一般保存在数据库中Json Web Token 简称 JWT,其本质就是 token 认证机制。JWT 就是一段字符串,由三段信息构

2022-06-23 22:54:06 827

原创 Django DRF 分页

REST framework提供了分页的支持,内置的分页器需要继承 GenericAPIView 和 ListModelMixin,对查询所有接口进行分页。1. 可以自己继承 PageNumberPagination 设置属性,如下示例属性解释page_size每页数目page_query_param前端发送的页数关键字名,默认为”page”page_size_query_param前端发送的每页数目关键字名,默认为Nonemax_page_size前端最多能

2022-06-23 20:41:56 1087 1

原创 Django DRF 自动生成接口文档

前端请求的url由谁来写url 主要有后台来写,写完给前端;如果后台查询数据,需要借助查询条件才能查询前端需要的数据时后台会要求前端提供相关的的查询参数,这里查询的参数就是url请求的参数;参数前面用 连接 , 几个参数中间 号连接;接口文档主要由谁来写接口文档主要由后台开发者来设计修改。前端开发者起到了辅助的作用;因为直接跟数据打交道的就是后台,后台是最清楚,数据库里面有什么数据,能返回什么数据前端只是接口文档的使用者,使用过程中,发现返回的数据不对,则需要跟后台进行商量,由后台来修改;前端不要随意更改

2022-06-22 19:57:25 2043

原创 Django DRF 全局异常处理

其异常返回的格式已经在 DRF 配置文件中配置了,但是并不符合我们的要求,我们可以重写其方法,看源码可以发现其执行了 handle_exception 方法,该方法源码如下上面俩句源码说明处理的是 get_exception_handler 方法,查看其源码如下在 get_exception_handler 方法中返回异常处理程序。这里默认返回的是 settings 下的 EXCEPTION_HANDLER 如下所示也就是说,我们只要重写 exception_handler

2022-06-22 18:45:03 1409 2

原创 Django DRF 排序、过滤

排序只在查询所有的功能接口中使用,对查询的结果进行排序(升序、降序)导入语句:使用接口路由中使用,如下示例2. 过滤过滤是指查找出符合指定要求的数据。该内置的过滤是模糊查询,但是不能指定查询字段,导入语句:使用接口路由中使用,如下示例DjangoFilterBackend 第三方过滤器该过滤器属于第三方过滤器,需要手动下载:下载好后导入语句:使用接口路由中使用,如下示例自定义过滤器除了以上的过滤器还可以自定义过滤器,编写自己的逻辑。...

2022-06-22 09:58:19 664

原创 Django DRF 认证、权限、频率

在前面说的 APIView 中封装了三大认证,分别为认证、权限、频率。认证即登录认证,权限表示该用户是否有权限访问接口,频率表示用户指定时间内能访问接口的次数为了方便举例说明,事先定义好模型表2. 认证2.1 自定义认证自定义登录认证可以生成随机字符串,并添加进 UserToken 表中,每一次登录都会生成,若该字符串已存在则更新,不存在则新建。登录视图函数自定义认证表需要创建认证类,首先继承拓展 BaseAuthentication导入语句:自定义认证类2.1.1 全局使用在配置文件中添加配

2022-06-21 21:29:36 859

原创 Django DRF 路由组件

使用视图集时,除了可以自己手动在 as_view() 中添加字典来指明请求方式与动作 action 之间的对应关系外,还可以使用 Routers 来帮助我们快速实现路由信息。REST framework 提供了两个 router导入语句:使用方法使用的方法:prefix: 该视图集的路由前缀viewset: 视图集,可以是视图类名base_name: 路由别名的前缀此时打印 路由如下示例需要将该路由添加到 中,有俩种方式方法一,将俩个列表相加方法二,使用 inclu

2022-06-18 23:29:22 422

原创 Django DRF 视图集

继承自 APIView 与 ViewSetMixin,作用也与 APIView 基本类似,提供了身份认证、权限校验、流量管理等。ViewSet 主要通过继承 ViewSetMixin 来实现在调用 时传入字典(如{‘get’:’list’})的映射处理工作。在ViewSet中,没有提供任何动作 action 方法,需要我们自己实现 action 方法。源码如下使用ViewSet通常并不方便,因为 list、retrieve、create、update、destory 等方法都需要自己编写由于使用 Vie

2022-06-17 23:41:08 477

原创 Django DRF 视图子类

DRF 提供了 9 个视图子类,分别为 ListAPIView、CreateAPIView、ListCreateAPIView、UpdateAPIView、DestroyAPIView、RetrieveAPIView、RetrieveDestroyAPIView、RetrieveUpdateDestroyAPIView、RetrieveUpdateAPIView导入语句继承自:GenericAPIView、ListModelMixin。该视图字类提供 get 方法使用 ListAPIView 查看所有(部分

2022-06-17 21:23:15 313

原创 Django DRF 视图拓展类

在视图基类文章中的 5 个接口虽然可以继承 GenericAPIView 基类,但执行的代码还是繁琐。可以使用几种后端视图(对数据资源进行曾删改查)处理流程的实现,减少代码的编写量注意点:导入语句:列表视图扩展类,提供方法快速实现列表视图,返回200状态码。使用该方法可以代替接口中查询所有的功能代码使用 ListModelMixin 实现查询所有(部分代码)查看源码3. CreateModelMixin创建视图扩展类,提供方法快速实现创建资源的视图,成功返回201状态码。如果序列化器对前端发送的数据验

2022-06-17 20:32:45 229

原创 Django DRF 视图基类

Django REST framwork 提供了众多的通用视图基类与扩展类,以简化视图的编写。REST framework 提供的视图的主要作用有:在此之前需要注意的是,DRF 是一个 app,也需要在配置文件中注册。2. 视图基类2.1 APIViewAPIView 是 REST framework 提供的所有视图的基类,继承自 Django 的 View 父类。导入语句: 通过对 cbv 源码和 drf 源码的分析可以了解其大致原理。as_view() 函数主要内容dispatc

2022-06-17 19:21:00 414 1

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除