127.0.0.1与localhost的区别
127.0.0.1 地址而非域名 127.0.0.1在Windows等系统的正确解释是:本机地址(本机服务器或回送地址)   127.0.0.1是一个环回地址,根本不是一个网络地址   127.0.0.1是通过网卡传输的,依赖网卡,并受到网络防火墙和网卡相关的限制 检测本机的回路是否正常,如果得到一个成功的ping返回,则可以认定你的IP栈是被初始化过的,TCP/IP协议安装正确。如果失败,那么你的IP栈失败,TCP/IP协议必须重新安装 不联网、网卡传输,受防火墙和网卡的限制、本机访问      localhost 域名而非地址 localhost也叫local ,正确的解释是:本地服务器 localhost 是一个域名,在过去它指向 127.0.0.1 这个IP地址。在操作系统支持 ipv6 后,它同时还指向ipv6 的地址 [::1]...
(fastapi三)中间件
中间件blog_img/fastapi系列/(fastapi一)安装与简单使用/封面.jpg“中间件”是一个函数,它在每个请求被特定的路径操作处理之前,以及在每个响应返回之前工作.  它接收你的应用程序的每一个请求.   然后它可以对这个请求做一些事情或者执行任何需要的代码.   然后它将请求传递给应用程序的其他部分 (通过某种路径操作).   然后它获取应用程序生产的响应 (通过某种路径操作).   它可以对该响应做些什么或者执行任何需要的代码.   然后它返回这个 响应.    案例1234567891011121314import timefrom fastapi import FastAPI, Requestapp = FastAPI()@app.middleware("http")async def add_process_time_header(request: Request, call_next):    start_time = time.time()    response = await call_next(request)   ...
静态资源与动态资源
静态资源访问简单理解WEB服务静态和动态资源请求过程   用户发起访问   服务器端接收到请求,该请求到达服务器的内核空间,因为tcp/ip协议工作在内核空间;到达内核空间后,发现访问的是80端口的套接字,通过路由和相关解码,请求被转到服务器的用户空间,也就是转到了web服务上;   请求到达用户空间后,发现请求的是一个文件,然后继续把请求转到内核空间,内核空间通过内核在磁盘上获取对应文件;   请求在内核空间获取到对应文件后,把文件返回至用户空间即web服务;   请求结果到达用户空间的web服务上后,把结果再通过套接字回到内核空间;   内核空间把结果通过网络tcp/ip协议栈返回至客户端。    动态资源请求简单理解WEB服务静态和动态资源请求过程  用户发起访问   服务器端接收到请求,该请求到达服务器的内核空间,因为tcp/ip协议工作在内核空间;到达内核空间后,发现访问的是80端口的套接字,通过路由和相关解码,请求被转到服务器的用户空间,也就是转到了web服务上;   请求到达用户空间后,发现请求的是一个动态页面,然后根据相关协议调用php解释器程序; ...
python海象语法
在我的工作当中,无意间接触到了一个别人写的一段代码,像这样:if (n := len(a)) > 10:,凭借我的直觉,我能够轻易的读懂这段代码,但是我却从来没见过,于是我搜了一下,才知道这是python3.8的新语法,叫做海象语法,因为冒号像眼睛,等号像牙齿,所以被成为海象语法。 海象语法官方给出了几个案例: 12345678910111213141516# 赋值表达式有助于避免调用 len() 两次if (n := len(a)) > 10:    print(f"List is too long ({n} elements, expected <= 10)")# 一次用于测试是否发生了匹配,另一次用于提取子组discount = 0.0if (mo := re.search(r'(\d+)% discount', advertisement)):    discount = float(mo.group(1)) / 100.0# Loop over fixed length...
ElasticSearch之python总结
对于ESES数据库本身作为一种分布式的、查询优势、拓展优势、容错优势…..等等众多优点的数据库。更多的特点还是自行百度吧 python操作安装: 1pip3 install elasticsearch  安装也就那样吧。 简单使用过热推荐,如果需要学习一个新的库的使用的时候,看源码与看官方文档是一个好习惯,因此本文仅列出少数操作,以使用入门讲解为主要核心。首先附上官方文档:https://elasticsearch-py.readthedocs.io/  点击链接会直接跳转到最新版本的官方文档。 操作在使用python进行操作的时候,首先需要连接数据库,在启动数据库之后采用以下代码进行数据库连接: 1234from elasticsearch import Elasticsearch# 实例化一个ip为localhost,端口为9200,允许超时一小时的es对象client = Elasticsearch("http://IP:9200") #...
特殊类型的声明
在类型声明的部分,提供的类型声明大多都是官方给定的类型,如:int,float,str,list,dict,set等等,但是某些时候当我们使用一些特殊的变量的时候,类型并不存在于官方给定的选项中。比如某些python的库创造的变量是具有自定义的类型的,这个时候该怎么操作呢?以下给出两个例子: 库当中的类型先看案例: 1234567891011121314151617html_doc = """<html><head><title>The Dormouse's story</title></head><body><p class="title"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their...
连接池
什么是连接池?在网上常常给出这样的解释:数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。 更通俗一点就是,连接池维护着项目于数据库之间的联系,保证项目不会过于频繁的去连接数据库导致数据库压力过大。 为什么要使用连接池?数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的性能低下。如果连接池存在,操作只需要把任务丢给连接池,至于对数据库操作的进程等一系列问题,全权交给连接池来进行操作,由连接池自己控制与数据库的访问与操作。在没有连接池的情况下,连接数据库通常需要以下步骤:    TCP建立连接的三次握手   MySQL认证的三次握手   真正的SQL执行   MySQL的关闭   TCP的四次握手关闭 ...
(fastapi二)参数校验
现在有一个实际的问题,我们在完成某一个项目的时候,如果说用户非要从接口传递一些非法参数或者某些人想要搞破坏,传递恶意的参数。如果参数直接与数据库相关,恶意传入一些参数会直接影响到数据库的正常运行,所以我们该怎么处理这些非法参数呢?写个函数验证?但是接口那么多,无穷尽也。但是fastapi提供了一些优雅的解决方式! 额外的校验下面是一段代码:   12345678910from typing import Optionalfrom fastapi import FastAPI, Queryapp = FastAPI()@app.get("/router/")async def read_items(q: Optional[str] = None):    pass   需求是限制参数q的长度  Query官方提供了一个库叫做Query,这个库可以非常简单的做校验,如下: 12345678910from typing import Optionalfrom fastapi import FastAPI, Queryapp =...
python类型注释
我找到一些来自于官方的关于python类型注释的资源,我将其复制下来,用于个人收藏。良好的类型注释习惯能让代码的可读性大大增强,同时也能够保证后续加入的人员能够快速理解与使用。 变量Python 3.6 在 PEP 526 中引入了用于注释变量的语法,我们在大多数示例中都使用它。 123456789101112# This is how you declare the type of a variable type in Python 3.6age: int = 1# You don't need to initialize a variable to annotate ita: int  # Ok (no value at runtime until assigned)# The latter is useful in conditional brancheschild: boolif age < 18:    child = Trueelse:    child =...
mysql的四大特性
四大特性MySQL有四大特性,分别是:原子性、隔离性、永久性、一致性。 原子性原子性这个词是从字面意义上最不好理解的一个词。原子性的含义是:一个事务包含多个操作,这些操作要么全部执行,要么全都不执行。实现事务的原子性,要支持回滚操作,在某个操作失败后,回滚到事务执行之前的状态。 举个例子,在你使用移动支付的时候,你付钱出去的一瞬间,别人也需要收款到账,付钱与收钱必须是一致的,如果不一致那就说明有问题,某个操作在过程当中遗失了,而这一进一出的过程被视为一个单元操作,不可被分割。出错之后原子性必须具有回滚功能,即返回到操作之前的情况,如果不能做到就有可能引起重大事故。 一致性一致性分为五种一致性,分别用于解决不同的问题:  强一致性:读操作可以立即读到提交的更新操作。   弱一致性:提交的更新操作,不一定立即会被读操作读到,此种情况会存在一个不一致窗口,指的是读操作可以读到最新值的一段时间。 ...

中间件/封面.png)





参数校验/封面.jpeg)






