- 博客(194)
- 收藏
- 关注
原创 Python笔记四之协程
协程是一种运行在单线程下的并发编程模型,它的特点是能够在一个线程内实现多个任务的并发操作,通过在执行任务时主动让出执行权,让其他任务继续执行,从而实现并发。以下所有的代码都是在 Python 3.8 版本中运行。
2024-03-18 22:18:18 720
原创 在 Windows 上利用Qwen大模型搭建一个 ChatGPT 式的问答小助手
经过分别使用 0.5B 版本和 1.8B 的版本,在我电脑的配置里,0.5B 版本的输出会快一些,但是在某些问题回答的质量上不如 1.8B。而 1.8B 版本答案质量相对较高,但是速度在 4g 显存的情况下,则非常慢。以上就是本次使用 Qwen1.5 在 Windows 上搭建问答小助手的全过程,之后还可以将大模型提供接口操作,将其应用到 web 页面上,从而实现一个真正的 ChatGPT 式问答助手。
2024-03-18 00:48:58 753
原创 Python笔记三之闭包与装饰器
这一篇笔记介绍 Python 里面的装饰器。想要统计add而如果我们想要统计很多个函数的执行时间,然后打印出来,应该如何操作呢?这里就可以用上 Python 里装饰器的操作。
2024-03-12 23:55:47 780
原创 Python笔记二之多线程
这一篇笔记介绍一下在 Python 中使用多线程。以下的操作都是在 Python 3.8 版本中试验,不同版本可能有不同之处,需要注意。
2024-02-25 00:47:40 862
原创 Flask笔记七之基于类的视图
前面我们提供API接口,都是通过或者使用Blueprint的的方式来定义接口。现在这里介绍一下使用视图类的方式来提供接口。视图类的方式和 Django 中的 View 使用的方式类似,接下来我们将之前的接口改写成视图类的方式。
2024-01-28 22:03:06 351
原创 Flask笔记六之中间件操作
在Flask中,中间件通过装饰器来使用,被分为两部分,一个是请求前,用来操作,一个是请求后,用来操作。接下来介绍一下中间件从注册到使用的操作。这里我们定义两个测试用的中间件,我们在app/utils/文件夹下创建一个的文件夹,其下再创建一个文件修饰的函数表示在请求处理前进行的操作,这里是简单的打印一条消息,除此之外,我们还可以在这里对登录进行验证。这样的话,在前面的笔记里我们对接口进行的的装饰器就不需要了,就不要在每个接口前都进行这种装饰,可以使代码变得简洁,同样实现我们想要的功能。
2024-01-05 22:48:00 1028
原创 Flask笔记五之日志操作
之前在 Django 笔记里详细介绍了 logging 模块关于 formatters,handlers,loggers 等基础介绍,这里直接介绍如何在 Flask 中配置日志信息。
2024-01-02 22:48:25 492
原创 Flask笔记四之异常处理
在系统运行中,有时候需要处理报错异常。异常的来源可能是系统在运行中的报错,比如错误的运算的有 1/0 这种等,还有的是访问了不存在接口,又或者,我们在查验接口参数的时候,发现没有传必传参数,需要手动触发一个报错等。这里就介绍如何在 Flask 中进行异常处理。
2023-12-29 00:54:04 429
原创 SQLAlchemy 连接使用数据库
相对于 Django 来说,Flask 并没有 Django 中自带的那种 ORM 框架,但是我们可以利用第三方的 ORM 框架来进行操作,比如我们这里介绍的 SQLAlchemy。接下来这一篇笔记将会介绍如何使用 SQLAlchemy 连接数据库、建立模型、操作表、以及查询操作表数据等内容。
2023-11-26 23:34:21 261
原创 Flask笔记二之blueprint和session介绍
Blueprint 的使用主要有两步,一步是定义,一步是注册。下面我们用一个实例来介绍如何使用,比如我们这里使用用户登录验证的接口来操作。我们在app/文件夹下创建一个名为user的文件夹,在其下再创建一个名为bp_user.py这里,我们实例化了Blueprint,定义一个bp,然后使用的方式定义路由和可以调用的方法,比如GET,比如POST。在 login() 函数内部可以进行我们必要的一些逻辑处理,比如用户名密码进行验证操作。然后需要将其在return appflask run。
2023-11-22 00:03:29 228
原创 Flask笔记一之项目搭建、配置项导入
这一篇开始介绍Flask系列笔记,这个系列笔记将和之前的Django笔记一样会从Flask的官方文档中提取一系列的知识点,整理成系列笔记。这是 Flask 系列笔记的第一篇,本篇笔记介绍的是 Flask 项目的搭建以及配置项的导入,我们用到的 Python 的版本还是 3.8,用到的 Flask 的版本是 2.3.2。接下来我们这里用Pycharm创建一个项目,我们命名为flask_blog,在其下文件夹为app,其下再创建一个。
2023-11-21 00:15:49 195
原创 Redis对象的数据结构及其原理汇总
这样,我们就创建了两个对象,且两个都是字符串对象,因为键值对的 key 和 value 都是字符串。如果我们创建了一个列表数据,那么 key 是字符串对象,而值 value 是列表对象。//类型//编码//指向底层实现数据结构的指针void *ptrtype在上面的结构中,type 指的是这个对象的类型,比如我们创建了一个列表数据,那么这个数据的 key 就是一个字符串对象,由这个结构里的 type 来指定,这个数据的 value 就是一个列表对象,也是由 type 来进行指定区分。
2023-11-17 23:08:23 494 1
原创 Redis数据结构八之各对象对应的底层实现
本篇笔记介绍各对象及其编码和底层实现结构。属性用于表示这个对象的类型,比如 string,list,hash,set,zset 分别表示字符串对象,列表对象,哈希对象,集合对象和有序集合对象。属性则表示该对象使用的编码则是指向底层的指针。
2023-11-12 23:29:31 52
原创 Redis数据结构七之listpack和quicklist
虽然 listpack 没有了指向尾部节点的偏移量,但是同样可以快速找到 listpack 的尾部节点,方式是通过 总字节长度属性的值,可以直接获取到 listpack 的尾部,然后根据 entry 元素尾部的 length 属性,就可以找到尾部 entry 的起始地址了。
2023-11-11 22:19:19 220
原创 Redis数据结构六之跳跃表
前面介绍跳跃表节点的层属性是一个数组,包含多个指向下一个同一层级的指针,而每个节点层的大小则是根据幂次定律(power law) 来生成的。在创建一个跳跃表节点的时候,程序都会根据幂次定律随机生成一个介于 1 到 32 之间的值作为 level 数组的大小,这个规则是越大的数出现的概率越小,它有一种计算方式,层数每加 1,出现的概率都是前一个数字的 0.25。
2023-09-18 22:16:24 177
原创 Redis数据结构五之整数集合
整数集(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis 就会使用整数集合作为集合键的底层实现。整数集合可以保存类型为 int16_t,int32_t,int64_t 的整数值,并且保证集合中不会出现重复元素。
2023-09-15 23:37:45 127
原创 Redis数据结构四之字典和哈希表
字典在 Redis 中应用相当广泛,在介绍字典之前,先来介绍一下字典、哈希表、哈希表节点的几个概念。其中,的底层就是一个哈希表student 下的就是组成哈希表的各个哈希表节点对于 Redis,哈希表和哈希表节点两个数据结构就可以实现我们对 key-value 数据的操作,但是随着哈希表保存的键值对增加或者减少,我们就需要对哈希表进行扩展或者收缩操作,因此就额外引入了字典结构来做一些额外的辅助操作,具体的实现我们接下来介绍。
2023-09-13 17:58:52 171
原创 Django笔记四十四之Nginx+uWSGI部署Django以及负载均衡操作
上一篇笔记中有介绍直接使用 uWSGI 作为 web 服务器来部署 Django,这一篇笔记介绍如何使用 Nginx 来部署。使用 Nginx 来部署相当于在 uWSGI 外面又嵌套了一层,uWSGI 作为内部服务被隐藏起来,这时候 Nginx 起的作用是反向代理。在这里,Nginx 的安装操作就不赘述了,网上都可以找得到如何操作,这里只讲相关的配置操作。
2023-04-23 19:50:35 436
原创 Redis基础命令汇总,看这篇就够了
本篇笔记将汇总 Redis 基础命令,包括几个常用的通用命令,和各个类型的数据的操作,包括字符串、哈希、列表、集合、有序集合等在内的基本操作。
2023-04-18 22:15:28 413
原创 Django笔记四十三之使用uWSGI部署Django系统
目前部署Django的方式一般是 Nginx + uWSGI + Django,这一篇笔记将会提供使用 uWSGI 部署 Django 的示例及其详解
2023-04-08 23:09:19 1021
原创 Django笔记四十二之model使用validator验证器
验证器是我们在model或者form表单里对数据进行校验的一种操作,通过定义验证内容,我们在保存数据前可以自动对保存的数据进行合法性校验
2023-04-02 11:27:02 1171
原创 Django笔记四十一之Django中使用es
首先我们要定义一下 es 的连接配置,这个在之前 Python 连接 es 的操作中有过介绍。
2023-03-26 20:18:26 977 1
原创 Django笔记四十之运行Django环境的python脚本
这一篇笔记介绍如何在 Django 中运行脚本。假设说我们要实现一个功能,需要获取 blog.models.Blog 这张表里的总数且使用 print() 输出。如果代码逻辑很短,且是一次性执行的操作,我们可以在系统的根目录下使用在 shell 中操作实现。但是如果这个需求是一个很长的逻辑,且需要可以重复执行,那么应该如何操作呢?首先,我们需要可以用到 Django 里的 Blog model,然后使用 model 的方式来进行查询。我们可以将其写入一个文件,每次都使用 shell 来调用。
2023-03-22 22:21:40 1200
原创 Django笔记三十九之settings配置介绍
这一篇笔记介绍 Django 里 settings.py 里一些常用的配置项,这些配置有一些是在之前的笔记中有过介绍的,比如 logging 的日志配置,session 的会话配置等,这里就只做一下简单的回顾,有一些是之前没有介绍过的就着重介绍一下。
2023-03-21 23:06:00 609
原创 Python连接es笔记四之创建和删除操作
这一篇笔记介绍一下索引和数据的创建和删除。其实对于索引来说,如果可以接触到 kibana 的话,可以很方便的在界面进行操作,这里简单介绍一下如何使用代码来操作索引的创建和删除。
2023-03-14 17:07:18 601
原创 Django笔记三十六之单元测试汇总介绍
本篇笔记会包括单元测试的编写方式,单元测试操作流程,如何复用数据库结构,如何测试接口,如何指定 sqlite 作为我们的单元测试数据库等
2023-02-05 17:23:08 539 1
原创 Django笔记三十五之admin后台界面介绍
假设说我们想要实现一些批量执行的操作,比如选中列表页某些数据,将 is_published 字段批量更新成 True(即已发布),我们就可以用到 actions 来实现。使用 admin.action 作为装饰器来装饰一个函数,然后将函数名称作为值放入 actions 列表中,在这里 queryset 参数即为页面选中的数据,它是一个 queryset 类型,所以这里可以直接进行 update() 操作。
2023-01-29 23:32:14 1016
原创 Python连接es笔记二之查询方式汇总
s = Search(using = "default") . index("exam") s = s . query("match" , name = "张三丰")query() 中接受两个参数,第一个是字段查询的方式,比如这里是 match,也可以是 term,这个依照查询的目的来替换。第二个则是查询的字段与值,比如这里是查询的 name 字段为 “张三丰” 的数据。
2023-01-16 22:50:59 1148
原创 Python连接es笔记一之连接与查询es
有几种方式在 Python 中配置与 es 的连接,最简单最有用的方法就是定义一个默认的连接,如果系统不是需要访问多个集群,最建议的方式就是使用方法创建连接,然后所有的操作都会自动使用这个连接。
2023-01-10 21:54:32 2072
原创 Django笔记三十四之分页操作
这一篇笔记介绍一下如何在 Django 使用分页。主要用途是列表数据的切割,比如说有 3000 条用户数据,前端需要一个列表接口用于展示这些数据,但是一次性展现这么多数据不合适,所以打算用分页的方式来操作。比如一页20条数据,前端通过按钮控制 page_num 和 size 参数用于后端返回数据。
2023-01-06 22:38:17 573
原创 Django笔记三十三之缓存操作
这一节介绍一下如何在 Django 中使用 redis 做缓存操作。在 Django 中可以有很多种方式做缓存,比如数据库,比如服务器文件,或者内存,这里介绍用的比较多的使用 redis 作为缓存。其中,redis 的安装我们在 celery 系列笔记的第一篇已经介绍过了,可以直接使用 docker 来操作,这里不做赘述了。
2022-12-30 23:53:08 339
原创 es笔记七之聚合操作之桶聚合和矩阵聚合
桶(bucket)聚合并不像指标(metric)聚合一样在字段上计算,而是会创建数据的桶,我们可以理解为分组,根据某个字段进行分组,将符合条件的数据分到同一个组里。桶聚合可以有子聚合,意思就是在分组之后,可以在每个组里再次进行聚合操作,聚合的数据就是每个组的数据。
2022-12-29 21:35:20 1796 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人