当前位置: 首页 > news >正文

【Python使用】嘿马云课堂web完整实战项目第3篇:增加数据,修改数据【附代码文档】

教程总体简介:项目概述 项目背景 项目的功能构架 项目的技术架构 CMS 什么是CMS CMS需求分析与工程搭建 静态门户工程搭建 SSI服务端包含技术 页面预览开发 4 添加“页面预览”链接 页面发布 需求分析 技术方案 测试 环境搭建 数据字典 服务端 前端 数据模型 页面原型 前端页面 上传图片开发 前端开发 图片查询 静态页面测试 CMS页面预览测试 CMS添加页面接口 搜索服务 搭建ES环境 后端工程搭建 导入CMS数据库 MongoEngine入门 在Django中使用MongoDB 定义文档 Logstash创建索引 创建搜索应用 定义ESClient 搜索前端技术需求 了解SEO 服务端渲染和客户端渲染 Nuxt.js入门 创建Nuxt工程 页面布局 路由 获取数据 搜索页面 查询全部 分页查询 按分类搜索 按难度等级搜索 集成测试 在线学习与媒资管理 在线学习需求分析 需求描述 视频点播解决方案 视频编码 FFmpeg的基本使用 生成m3u8/ts文件 播放器 搭建学习中心前端 媒资管理 开发环境 上传文件 断点续传解决方案 文件分块与合并 媒资服务端编写 视频处理 发送视频处理消息 我的媒资 选择视频 保存视频信息 Api接口 学习页面获取视频播放地址 在线学习接口 登录注册与认证授权 增加数据 修改数据 删除数据 查询数据 Q对象 其他 查询集 QuerySet 页面管理后端开发 接口说明 接口开发规范 JWT Django REST framework JWT 用户登录前端 前端显示当前用户 用户退出 前端集成认证授权 用户注册后端 订单与选课 分布式事务 问题描述 CAP理论 解决方案 自动添加选课方案 Celery Beat定时任务 订单服务定时发送消息 查询前N条任务 乐观锁取任务 RabbitMQ配置 学习服务添加选课 订单服务结束任务 传智云课堂 封装异常处理 封装JSON返回值 站点列表和模板列表接口 新增页面 页面查询接口定义 自定义条件查询 3 测试接口 页面详情 修改页面 删除页面 CMS前端工程创建 导入系统管理前端工程 单页面应用介绍 CMS前端页面查询开发 创建页面 Table组件测试 页面内容完善 跨域问题解决 进入页面立即查询 前后端请求响应流程小结 新增页面前端开发 页面处理流程 页面静态化及预览发布 页面静态化需求 模板管理 模板管理业务流程 模板制作 GridFS研究 模板存储

完整笔记资料代码:https://gitee.com/yinuo112/Backend/tree/master/Python/嘿马云课堂web完整实战项目/note.md

感兴趣的小伙伴可以自取哦~


全套教程部分目录:


部分文件图片:

增加数据

学习目标

  • 掌握增加数据的方法

1 增加数据

增加数据有两种方法。

1、save

通过创建文档类对象,执行对象的save()方法保存到数据库中。

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> from datetime import date
>>> book = BookInfo(btitle='西游记',bpub_date=date(1988,1,1),bread=10,bcomment=10
)
>>> book.save()
>>> book.id    # 新增对象的id为一个ObjectId对象
ObjectId('5d677f75bffe27a8e83b6223')
>>> hero = HeroInfo(hname='孙悟空',hgender=0,hbook=book
)
>>> hero.save()
>>> hero2 = HeroInfo(hname='猪八戒',hgender=0,hbook=book.id
)
>>> hero2.save()

2、create

通过模型类.objects.create()保存。

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> HeroInfo.objects.create(hname='沙和尚',hgender=0,hbook=book
)
<HeroInfo: 沙和尚>

2 小结

  • 增加数据有两种方法

  • 通过创建文档类对象,执行对象的save()方法

  • 通过模型类.objects.create()保存

修改数据

学习目标

掌握修改数据的方法

1 修改数据

修改数据有两种方法

1、save

修改模型类对象的属性,然后执行save()方法

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
hero = HeroInfo.objects.get(hname='猪八戒')
hero.hname = '猪悟能'
hero.save()

2、update

使用模型类.objects.filter().update(),会返回受影响的行数

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
HeroInfo.objects.filter(hname='沙悟净').update(hname='沙僧')

2 小结

  • 修改更新有两种方法

  • 修改模型类对象的属性,然后执行save()方法

  • 使用模型类.objects.filter().update()

删除数据

学习目标

  • 掌握删除数据的方法

1 删除数据

删除有两种方法

1、文档类对象.delete()

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> hero = HeroInfo.objects.get(hname='猪悟能')
>>> hero.delete()

2、文档类.objects.filter().delete()

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> HeroInfo.objects.filter(hname='沙悟净').delete()

2 小结

  • 删除有两种方法

  • 文档类对象.delete()

  • 文档类.objects.filter().delete()

查询数据

学习目标

  • 掌握基本查询方法
  • 掌握对结果集进行过滤的方法

1 基本查询

get 查询单一结果,如果不存在会抛出文档类DoesNotExist异常。

all 查询多个结果。

count 查询结果数量。

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> BookInfo.objects.all()
[<BookInfo: 射雕英雄传>, <BookInfo: 天龙八部>, <BookInfo: 笑傲江湖>, <BookInfo: 雪山飞狐>, <BookInfo: 西游记>]
>>> book = BookInfo.objects.get(btitle='西游记')
>>> book.id
ObjectId('5d677f75bffe27a8e83b6223')>>> BookInfo.objects.get(id='5d6772e94bd611a8efe98c14')
<BookInfo: 笑傲江湖>
>>> BookInfo.objects.get(pk='5d6772e94bd611a8efe98c14')
<BookInfo: 笑傲江湖>
>>> BookInfo.objects.get(id='5d6772e94bd611a8efe98c54')
Traceback (most recent call last):File "<console>", line 1, in <module>File "/Users/apple/workspace/virtualenv/vue_shop/lib/python3.6/site-packages/mongoengine/queryset/base.py", line 272, in getraise queryset._document.DoesNotExist(msg)
cms.test_models.DoesNotExist: BookInfo matching query does not exist.>>> BookInfo.objects.count()
6

2 过滤查询

要对结果集进行过滤,可使用如下方法:

  • filter 过滤出多个结果
  • exclude 排除掉符合条件剩下的结果
  • get 过滤单一结果
  • 直接在文档类.objects()中传入过滤条件

对于过滤条件的使用,上述几个方法相同,故仅以filter进行讲解。

过滤条件的表达语法如下:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
属性名称__比较运算符=# 属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线
1、比较查询
  • ne 不等于(not equal to)
  • gt 大于 (greater than)
  • gte 大于等于 (greater than or equal to)
  • lt 小于 (less than)
  • lte 小于等于 (less than or equal to)
2、范围查询
  • in 是否包含在范围内。
  • nin 是否不包含在范围内。
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> BookInfo.objects.filter(btitle__in=['西游记', '雪山飞狐', '天龙八部'])
3、字符串查询
  • exact – 与指定值完全匹配
  • contains – 包含指定值
  • startswith – 以指定值开始
  • endswith – 以指定值结束
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> BookInfo.objects.filter(btitle__contains='传')
>>> BookInfo.objects.filter(btitle__endswith='部')

3 小结

  • 基础查询

  • get 查询单一结果

  • all 查询多个结果

  • count 查询结果数量

  • 过滤查询

  • 过滤条件的表达语法:属性名称__比较运算符=值

  • 比较查询:ne、gt、gte、lt、lte
  • 范围查询:in、nin
  • 字符串查询:exact、contains、startswith、endswith

Q对象

学习目标

  • 掌握Q对象的使用方法

1 Q对象

多个过滤器逐个调用表示逻辑与关系。

例:查询阅读量大于20,并且评论量小于30的图书。

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> BookInfo.objects.filter(bread__gt=20, bcomment__lt=30)

>>> BookInfo.objects.filter(bread__gt=20).filter(bcomment__lt=30)

如果需要实现逻辑或or的查询,需要使用Q()对象结合|运算符

语法如下:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Q(属性名__运算符=)

例:查询阅读量大于20的图书,改写为Q对象如下。

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> from mongoengine import Q
>>> BookInfo.objects.filter(Q(bread__gt=20))

Q对象可以使用&、|连接,&表示逻辑与,|表示逻辑或。

例:查询阅读量大于20,或评论量小于30的图书,只能使用Q对象实现

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> BookInfo.objects.filter(Q(bread__gt=20)|Q(bcomment__lt=30))

MongoEngine中的Q对象前不可以使用~操作符。

2 小结

  • 语法如下:Q(属性名__运算符=值)
  • Q对象可以使用&、|连接,&表示逻辑与,|表示逻辑或

其他

学习目标

  • 掌握常用聚合函数的用法
  • 掌握排序的用法
  • 掌握关联查询的方法

1 聚合函数

常用的聚合函数有count 计数,sum 求和,average 求平均值

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> BookInfo.objects.count()
5
>>> BookInfo.objects.sum('bread')
136.0
>>> BookInfo.objects.average('bread')
27.2

2 排序

使用order_by对结果进行排序

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> BookInfo.objects.order_by('bread')  # 升序
>>> BookInfo.objects.order_by('-bread')  # 降序

3 关联查询

1、由一到多的访问语法:

需要进行两步查询,例如:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> b = BookInfo.objects.get(btitle='雪山飞狐')
>>> HeroInfo.objects(hbook=b)

主要是因为MongoDB不支持连表

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> HeroInfo.objects(hbook__btitle='西游记')
Traceback (most recent call last):File "/Users/apple/workspace/virtualenv/vue_shop/lib/python3.6/site-packages/mongoengine/queryset/transform.py", line 62, in queryfields = _doc_cls._lookup_field(parts)File "/Users/apple/workspace/virtualenv/vue_shop/lib/python3.6/site-packages/mongoengine/base/document.py", line 1017, in _lookup_field'__'.join(parts))
mongoengine.errors.LookUpError: Cannot perform join in mongoDB: hbook__btitle

2、由多到一的访问语法:

多对应的文档类对象.一对应引用字段属性名 例:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> h = HeroInfo.objects.get(hname='郭靖')
>>> h.hbook

3、访问一对应的文档类关联对象的id语法:

多对应的文档类对象.一对应引用字段属性名.id

例:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> h = HeroInfo.objects.get(hname='郭靖')
>>> h.hbook.id

4 小结

  • 常用的聚合函数

  • count 计数

  • sum 求和
  • average 求平均值

  • 使用order_by对结果进行排序.order_by('bread')是升序,.order_by('-bread')是降序

  • 关联查询

  • 由一到多的访问语法:需要进行两步查询,MongoDB不支持连表查询

  • 由多到一的访问语法:多对应的文档类对象.一对应引用字段属性名
  • 访问一对应的文档类关联对象的id语法:多对应的文档类对象.一对应引用字段属性名.id

查询集 QuerySet

学习目标

  • 了解查询集的概念
  • 熟悉查询集的基本操作

1 概念

查询集,也称查询结果集、QuerySet,表示从数据库中获取的对象集合。

当调用如下过滤器方法时,返回查询集(而不是简单的列表):

  • all():返回所有数据。
  • filter():返回满足条件的数据。
  • exclude():返回满足条件之外的数据。
  • order_by():对结果进行排序。

:文档类.objects也会返回包含所有数据的查询集

对查询集可以再次调用过滤器进行过滤,如

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
BookInfo.objects.filter(bread__gt=30).order_by('bpub_date')

也就意味着查询集可以含有零个、一个或多个过滤器。过滤器基于所给的参数限制查询的结果。

判断某一个查询集中是否有数据

  • 使用 len() 查看查询集的长度是否为0
  • 空的查询集相当于 False,可直接用于条件判断

2 限制查询集

可以对查询集进行取下标或切片操作,等同于sql中的limit和offset子句。

注意:不支持负数索引。

对查询集进行切片后返回一个新的查询集,不会立即执行查询。

如果获取一个对象,直接使用[0],等同于[0:1].get(),但是如果没有数据,[0]引发IndexError异常,[0:1].get()如果没有数据引发DoesNotExist异常。

示例:获取第1、2项,运行查看。

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
qs = BookInfo.all()[0:2]

可以通过first()方法获取查询集中的第一个元素,如果查询集为空,则返回None

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
>>> BookInfo.objects.filter(btitle='雪山飞狐').first()
<BookInfo: 雪山飞狐>
>>> print(BookInfo.objects.filter(btitle='飞狐外传').first())
None

3 小结

  • 查询集表示从数据库中获取的对象集合
  • all、filter、exclude、order_by等返回查询集
  • 可以对查询集进行取下标或切片操作
  • 可以通过first()方法获取查询集中的第一个元素

页面管理后端开发

使用MongoEngine定义接口

学习目标

  • 掌握使用MongoEngine定义接口的方法

前面我们了解了MongoEngine的基本使用方法,接下来我们看一下如何使用MongoEngine结合django-rest-framework-mongoengine实现接口的定义

1 定义序列化器

要使用MongoEngine文档对象作为model,需要继承rest_framework_mongoengine.serializers的DocumentSerializer来完成序列化器的定义

定义序列化器

booktest/serializer.py

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from rest_framework_mongoengine.serializers import DocumentSerializer
from booktest.models import BookInfo, HeroInfoclass BookInfoSerializer(DocumentSerializer):class Meta:model = BookInfofields = '__all__'class HeroInfoSerializer(DocumentSerializer):class Meta:model = HeroInfofields = '__all__'

2 定义视图集

视图集需要继承rest_framework_mongoengine.viewsets中的类作为基类

定义视图集

booktest/views.py

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from rest_framework_mongoengine.viewsets import ModelViewSet
from booktest.models import BookInfo, HeroInfo
from booktest.serializers import BookInfoSerializer, HeroInfoSerializerclass BookInfoViewSet(ModelViewSet):queryset = BookInfo.objectsserializer_class = BookInfoSerializerclass HeroInfoViewSet(ModelViewSet):queryset = HeroInfo.objectsserializer_class = HeroInfoSerializer

3 定义Router

使用MongoEngine文档对象相关的模型和序列化器定义的视图集,需要使用rest_framework_mongoengine.routers中的SimpleRouterDefaultRouter来定义Router(两个Router重写了get_default_base_name方法)

定义urls

booktest/urls.py

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from django.conf.urls import url, include
from rest_framework_mongoengine.routers import SimpleRouterfrom booktest.views import BookInfoViewSet, HeroInfoViewSetrouter = SimpleRouter()
router.register('book', BookInfoViewSet)
router.register('hero', HeroInfoViewSet)urlpatterns = [url(r'test/', include(router.urls)),
]
注册urls和应用

cz_study/urls.py

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import booktest.urlsurlpatterns = [...url(r'^', include(booktest.urls)),
]

cz_study/settings.py

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
INSTALLED_APPS = [...'booktest.apps.BooktestConfig',
]

4 测试接口

启动Django服务

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
python manage.py runserver

访问地址 [ 可以看到所有图书数据的列表,如下:

5 小结

  • 使用MongoEngine定义接口的方法

  • 定义序列化器:序列化器从rest_framework_mongoengine.serializers中继承

  • 定义视图集:视图集需要继承rest_framework_mongoengine.viewsets中的类作为基类
  • 定义router:需要使用rest_framework_mongoengine.routers中的SimpleRouterDefaultRouter来定义Router(两个Router重写了get_default_base_name方法)

接口说明

接口开发规范

学习目标

  • 了解项目的接口开发规范

1 接口开发规范

为了严格按照接口进行开发,提高效率,对请求及响应格式进行规范化。

1、get 请求时,使用querystring传参。

2、Post请求时,可以提交form表单数据(application/x-www-form-urlencoded)和Json数据(Content-Type=application/json),文件等多部件类型(multipart/form-data)三种数据格式,也可以在querystring中附加过滤、排序等参数。

3、响应结果统一信息为:是否成功、操作代码、提示信息及自定义数据。

4、响应结果统一格式为json。

参数类型是否必须说明
successbool是否成功
codeint状态码
messagestr状态信息
data对象数据对象

调用成功的返回值示例如下:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{'success': True, 'code': 10000, 'message': '操作成功!', 'data': {'xxx': 'xxx', 'xxx': 'xxx'}}

调用失败的返回值示例如下:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{'success': False, 'code': 11111, 'message': '操作失败!', 'data': {}}

为满足这一需求,我们需要对接口返回进行定制:

  1. 调用失败时,通过抛出异常返回错误信息
  2. 将所有JSON返回封装成约定的格式

相关文章:

【Python使用】嘿马云课堂web完整实战项目第3篇:增加数据,修改数据【附代码文档】

教程总体简介&#xff1a;项目概述 项目背景 项目的功能构架 项目的技术架构 CMS 什么是CMS CMS需求分析与工程搭建 静态门户工程搭建 SSI服务端包含技术 页面预览开发 4 添加“页面预览”链接 页面发布 需求分析 技术方案 测试 环境搭建 数据字典 服务端 前端 数据模型 页面原…...

数据结构【栈和队列附顺序表应用算法】

栈和队列和顺序表应用算法练习 1.栈1.1概念与结构1.2栈的实现 2.队列2.1概念与结构2.2队列的实现 3.附&#xff08;顺序表应用算法&#xff09;3.1移除元素3.2删除有序数组中的重复项3.3合并两个有序数组 1.栈 1.1概念与结构 栈&#xff1a;⼀种特殊的线性表&#xff0c;其只…...

Redis数据结构之String

目录 1.概述2.常见操作2.1 SET/GET2.2 MSET/MGET/MSETNX2.3 GETRANGE/SETRANGE2.4 INCR(BY)/DECR(BY)2.5 STRLEN2.6 APPEND2.7 GETSET 3.小结 1.概述 String是最常用的数据类型&#xff0c;一个key对应一个value。String是二进制安全的&#xff0c;可以包含任何数据&#xff0…...

Maven 远程仓库推送方法

步骤 1&#xff1a;配置 pom.xml 中的远程仓库地址 在项目的 pom.xml 文件中添加 distributionManagement 配置&#xff0c;指定远程仓库的 URL。 xml 复制 <project>...<distributionManagement><!-- 快照版本仓库 --><snapshotRepository><id…...

uname

在 C 语言中&#xff0c;uname 函数用于获取当前操作系统的相关信息。 它是 POSIX 标准的一部分&#xff0c;定义在 <sys/utsname.h> 头文件中。 通过调用 uname 函数&#xff0c;可以获取系统名称、节点名称&#xff08;主机名&#xff09;、操作系统版本、机器硬件架构…...

【无标题】object,wait,notifyAll

在 Java 中&#xff0c;Object类提供了wait()方法&#xff0c;用于线程间的协作和同步。wait()方法使得当前线程暂停执行&#xff0c;并释放当前对象的锁&#xff0c;直到其他线程调用该对象的notify()或notifyAll()方法将其唤醒。这是实现线程间通信和同步的重要机制之一。 w…...

【Vue】 核心特性实战解析:computed、watch、条件渲染与列表渲染

目录 一、计算属性&#xff08;computed&#xff09; ✅ 示例&#xff1a; 计算属性-methods实现&#xff1a;在插值模块里&#xff0c;实现函数的调用功能 计算属性-computed的实现&#xff1a; 计算属性-简写&#xff1a; ✅ 特点&#xff1a; ⚠️ 与 methods 的区别…...

精品可编辑PPT | 基于湖仓一体构建数据中台架构大数据湖数据仓库一体化中台解决方案

本文介绍了基于湖仓一体构建数据中台架构的技术创新与实践。它详细阐述了数据湖、数据仓库和数据中台的概念&#xff0c;分析了三者的区别与协作关系&#xff0c;指出数据湖可存储大规模结构化和非结构化数据&#xff0c;数据仓库用于高效存储和快速查询以支持决策&#xff0c;…...

基于Python网络爬虫的智能音乐可视化系统(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;智能音乐可视化系统当然不能排除在外。我本次开发的基于网络爬虫的智能音乐可视化系统是在实际应用和软件工程的开发原理之上&#xff0c;…...

基于STM32与应变片的协作机械臂力反馈控制系统设计与实现----2.2 机械臂控制系统硬件架构设计

2.2 机械臂控制系统硬件架构设计 一、总体架构拓扑 1.1 典型三级硬件架构 #mermaid-svg-MWmxD3zX6bu4iFCv {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MWmxD3zX6bu4iFCv .error-icon{fill:#552222;}#mermaid-s…...

在线记事本——支持Markdown

项目地址 https://github.com/Anyuersuper/CloudNotebook 百度网盘 通过网盘分享的文件&#xff1a;CloudNotebook-master.zip 链接: https://pan.baidu.com/s/1kd2qNvm0eXc6_7oYDR769A?pwdyuer 提取码: yuer &#x1f4dd; 云笔记 (Cloud Notebook) 云笔记是一个简洁、安全…...

DDPM 做了什么

本博客主要侧重点在于HOW也就是DDPM怎么做的而不是WHY为什么要这样做 那么第一个问题DDPM做了一件什么事&#xff1a;这个算法通过逐渐向原图像添加噪声来破坏图像&#xff0c;然后再学习如何从噪声成恢复图像。 第二件事如何做到的&#xff1a;通过训练一个网络&#xff0c;…...

Redis数据结构之List

目录 1.概述2.常见操作2.1 LPUSH/RPUSH/LRANGE2.2 LPOP/RPOP2.3 LINDEX2.4 LLEN2.5 LREM2.6 LTRIM2.7 RPOPLPUSH2.8 LSET2.9 LINSERT 1.概述 List是简单的字符串列表&#xff0c;单key多个value&#xff0c;按照插入顺序排序。 支持添加一个元素到列表的头部(左边)或者尾部(右…...

L2-023 图着色问题 #DFS C++邻接矩阵存图

文章目录 题目解读输入格式输出格式 思路Ac CODE 参考 题目解读 给定一个无向图V&#xff0c;询问是否可以用K种颜色为V中每一个顶点分配一种颜色&#xff0c;使得不会有两个相邻顶点具有同一种颜色 输入格式 第一行给出V,E,K&#xff0c; 分别代表无向图的顶点&#xff0c;…...

架构下的按钮效果设置

以下是一个完整的跨QML/Qt Widgets的主题方案实现&#xff0c;包含对按钮阴影的统一管理&#xff1a; 一、项目结构 Project/ ├── core/ │ ├── thememanager.h │ └── thememanager.cpp ├── widgets/ │ ├── mainwindow.h │ ├── mainwindow.cpp …...

Unhandled exception: org.apache.poi.openxml4j.exceptions.InvalidFormatException

代码在main方法里面没有报错&#xff0c;在Controller里面就报错了。 原来Controller类里面少了行代码 import org.apache.poi.openxml4j.exceptions.InvalidFormatException; 加上去就解决了。...

Vue2_Vue.js教程

目录 一、Vue.js安装 1、独立版本 2、CDN 方法 3、npm 方法 二、Vue Al编程助手 三、Vue.js目录结构 目录解析 四、Vue.js 起步 1.如何定义数据对象和方法并渲染进页面 五、Vue.js 模板语法 插值 文本_{{}} Html_v-html 指令 属性_v-bind (数据传输工具)指令 表…...

2025/4/2 心得

第一题 题目描述 给定1001个范围在[1,1000]的数字&#xff0c;保证只有1个数字重复出现2次&#xff0c;其余数字只出现1次。试用O(n)时间复杂度来求出出现2次的这个数字。 不允许用数组 输入格式 第一行&#xff1a;一个整数1001&#xff1b; 第二行&#xff1a;1001个用…...

Deep Reinforcement Learning for Robotics翻译解读

a. 机器人能力 1 单机器人能力&#xff08;Single-robot competencies&#xff09; 运动能力&#xff08;Mobility&#xff09; 行走&#xff08;Locomotion&#xff09;导航&#xff08;Navigation&#xff09; 操作能力&#xff08;Manipulation&#xff09; 静态操作&…...

【Linux】日志模块实现详解

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

AT_abc212_d [ABC212D] Querying Multiset

链接&#xff1a;AT_abc212_d [ABC212D] Querying Multiset - 洛谷 题目描述 高橋君は何も書かれていないたくさんのボールと 1 つの袋を持っています。 最初、袋は空で、高橋君は Q 回の操作を行います。 それぞれの操作は以下の 3 種類のうちのいずれかです。 操作 1 : ま…...

Android使用OpenGL和MediaCodec录制

目录 一,什么是opengl 二,什么是Android OpenGL ES 三, OpenGL 绘制流程 四, OpenGL坐标系 五, OpenGL 着色器 六, GLSL编程语言 七,使用MediaCodec录制在Opengl中渲染架构 八,代码实现 8.1 自定义渲染view继承GLSurfaceView 8.2 自定义渲染器TigerRender 8.3 创建编…...

Java 实现插入排序:[通俗易懂的排序算法系列之三]

引言 大家好&#xff01;欢迎继续关注我的排序算法系列。今天&#xff0c;我们要学习的是另一种非常基础且重要的排序算法——插入排序 (Insertion Sort)。 插入排序的思路非常贴近我们日常整理扑克牌的方式&#xff0c;理解起来相对自然。虽然它在最坏情况下的效率不高&…...

HarmonyOS:WebView 控制及 H5 原生交互实现

一、效果展示 二、技术栈 技术栈&#xff1a; 编程语言&#xff1a;使用 TypeScript 进行开发&#xff0c;借助其类型系统提升代码的可读性与稳定性。 框架与库&#xff1a;基于鸿蒙系统相关框架&#xff08;如kit.ArkWeb、hadss/hmrouter&#xff09…...

250405-VSCode编辑launch.json实现Debug调试Open-WebUI

A. 最终效果 根据__init__.py配置launch.json 根据中utils/chat.py中form_data的messages [{role: user, content: 唐老鸭}],可以找到用户输入&#xff0c;进而通过关键词或模型调用的方式&#xff0c;对敏感问题进行特殊处理。 B. 文件配置 launch.json // { // /…...

SQL Server 数据库实验报告

​​​​​​​ 1.1 实验题目&#xff1a;索引和数据完整性的使用 1.2 实验目的&#xff1a; &#xff08;1&#xff09;掌握SQL Server的资源管理器界面应用&#xff1b; &#xff08;2&#xff09;掌握索引的使用&#xff1b; &#xff08;3&#xff09;掌握数据完整性的…...

【寻找Linux的奥秘】第三章:基础开发工具(上)

请君浏览 前言1. 软件包管理器1.1 linux中安装软件1.2 yum的具体操作1.2.1 查找软件包1.2.2 安装软件1.2.3 卸载软件 1.3 小结 2. 编辑器vim2.1 vim的基本概念和操作2.2 命令模式的命令集光标定位其他命令模式切换&#xff08;常用的&#xff09; 2.3 末⾏模式的命令集2.4 小结…...

Photoshop 2025 Mac中文Ps图像编辑

Photoshop 2025 Mac中文Ps图像编辑 文章目录 Photoshop 2025 Mac中文Ps图像编辑一、介绍二、效果三、下载 一、介绍 Adobe Photoshop 2025 Mac版集成了多种强大的图像编辑、处理和创作功能。①强化了Adobe Sensei AI的应用&#xff0c;通过智能抠图、自动修复、图像生成等功能…...

#SVA语法滴水穿石# (004)关于 ended 和 triggered 用法

在 SystemVerilog 断言(SVA, SystemVerilog Assertions)中,ended 是一个用于 序列(sequence) 的关键字,它表示某个序列(sequence)在特定时间点已经成功匹配(即“结束”)。 ended 主要用于 同步不同序列的时间关系,尤其是在多序列组合或属性(property)中需要对齐时…...

16.1Linux自带的LED灯驱动实验(知识)_csdn

前面我们都是自己编写 LED 灯驱动&#xff0c;其实像 LED 灯这样非常基础的设备驱动&#xff0c; Linux 内核已经集成了。 Linux 内核的 LED 灯驱动采用 platform 框架&#xff0c;因此我们只需要按照要求在设备树文件中添加相应的 LED 节点即可&#xff0c;本章我们就来学习如…...

普通类、抽象类和接口的区别

1. 普通类 (Concrete Class) 定义&#xff1a;完整的类&#xff0c;可以直接实例化 特点&#xff1a; 可以包含属性、普通方法&#xff08;有具体实现&#xff09;和构造方法 可以被直接实例化创建对象 可以被继承&#xff08;除非用final修饰&#xff09; 示例&#xff1…...

使用 Elastic 实现端到端的大语言模型(LLM)可观测性:洞察生成式 AI 应用这个不透明的世界

作者&#xff1a;来自 Elastic Daniela Tzvetkova 及 Bahubali Shetti 在快速发展的人工智能领域&#xff0c;大语言模型&#xff08;Large Language Models - LLMs&#xff09;已成为创新的灯塔&#xff0c;为各行各业带来了前所未有的能力。从生成类人文本、翻译语言到提供个…...

15.2linux设备树下的platform驱动编写(程序)_csdn

我尽量讲的更详细&#xff0c;为了关注我的粉丝&#xff01;&#xff01;&#xff01; 修改设备树文件&#xff1a; 这个我们在上一章已经写过了&#xff0c;但是还是带着大家来重写一遍&#xff01; 1.打开pinctrl-stm32.c 这个文件&#xff1a; strict 成员变量默认为 true&…...

Java的Selenium的特殊元素操作与定位之window切换

当你要操作另外一个窗口页面的元素时&#xff0c;一定要注意先切换窗口 切换方式:传入要操作窗口的name或者句柄handle driver.switchTo.window(nameOrHandle); 如何获取到窗口的句柄 driver.getWindowHandle();//获取当前操作窗口的句柄driver.getWindowHandles();//获取测…...

【Rust学习】Rust环境搭建和Rust基础语法

本文专栏&#xff1a;Rust学习 目录 一&#xff0c;Rust环境搭建 1&#xff0c;C环境安装 2&#xff0c;Rust下载 3&#xff0c;Rust安装 4&#xff0c;Rust环境检测 二&#xff0c;创建Rust项目 1&#xff0c;rustc 2&#xff0c;cargo 三&#xff0c;输出到命令行 …...

在windows环境下通过docker-compose脚本自动创建mysql和redis

一、环境版本 在windows环境下通过docker容器运行各种服务&#xff0c;使用的软件版本如下&#xff1a; docker desktop &#xff1a;V4.39.0 【docker的安装环境设置略】 mysql&#xff1a;9.2 redis&#xff1a;7.4.2 二、各配置文件 1.已经解决了字符集和排序规则问题造成…...

【玩泰山派】2、制作buildroot镜像,并烧录

文章目录 前言制作buildroot镜像过程搭建环境&#xff08;docker版&#xff09;下载泰山派开发的sdk利用制作的镜像和下载的sdk去启动开发docker容器编译buildroot镜像 参考 前言 泰山派官方提供了不少现成的镜像 但是都买了泰山派了&#xff0c;肯定是想自己编译折腾下&…...

实验二 VLAN 的配置与应用

一、实验目的 1. 熟悉 VLAN 和 PORT VLAN 的原理&#xff1b; 2. 熟悉华为网络模拟器的使用&#xff1b; 3. 掌握网络拓扑图的绘制&#xff1b; 4. 掌握单交换机内 VLAN 的配置。 二、实验设备 PC、华为模拟器 ENSP。 三、实验步骤 知识准备&#xff1a;VLAN 和 PORT V…...

【C/C++算法】蓝桥杯之递归算法(如何编写想出递归写法)

绪论&#xff1a;冲击蓝桥杯一起加油&#xff01;&#xff01; 每日激励&#xff1a;“不设限和自我肯定的心态&#xff1a;I can do all things。 — Stephen Curry” 绪论​&#xff1a; ———————— 早关注不迷路&#xff0c;话不多说安全带系好&#xff0c;发车啦&am…...

coding ability 展开第九幕(位运算——进阶篇)超详细!!!!

文章目录 前言丢失的数字两整数之和只出现一次的数字II消失的两个数字总结 前言 上一篇博客&#xff0c;我们已经把位运算的基础知识&#xff0c;以及基本运算都掌握啦 上次的习题还是让人意犹未尽&#xff0c;今天我们来尝试一下难一点的题目 位运算熟练起来真的让人觉得做题是…...

Python实现NOA星雀优化算法优化随机森林回归模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 在现代数据科学领域&#xff0c;回归分析是解决预测问题的核心工具之一。然而&#xff0c;在面对复…...

蓝桥云客--浓缩咖啡液

4.浓缩咖啡液【算法赛】 - 蓝桥云课 问题描述 蓝桥杯备赛选手小蓝最近刷题刷到犯困&#xff0c;决定靠咖啡续命。他手上有 N 种浓缩咖啡液&#xff0c;浓度分别是 A1​%, A2​%, …, AN​%&#xff0c;每种存货都是无限的。为了提神又不炸脑&#xff0c;小蓝需要按比例混合这…...

异常【C++】

文章目录 异常异常的概念和基本语法异常的三个关键字&#xff1a; 异常抛出和被接收的过程异常的再次抛出再次抛出被非catch&#xff08;...&#xff09;捕捉到的异常再次抛出被catch&#xff08;...&#xff09;捕捉到的异常 异常规范异常安全异常的优缺点优点缺点总结&#x…...

关于图片分类任务的猜想 | 撰写论文 paper

关于图片分类任务的猜想 | 撰写论文 paper 背景Yolo 是一次巨大的飞跃过滤无关的特征Yolo 的问题 背景 在计算视觉领域&#xff0c;有几个关键的演变。 1&#xff09;CNN 卷积的出现&#xff0c;这是一个大的创新&#xff1b; 2&#xff09;从卷积到 AlexNet &#xff0c;是更…...

路由器和交换机

路由器和交换机分别位于OSI模型和TCP/IP模型的不同网络层次&#xff0c;具体对比如下&#xff1a; 1. 路由器&#xff08;Router&#xff09; 所属层级&#xff1a; OSI模型&#xff1a;网络层&#xff08;第3层&#xff09;TCP/IP模型&#xff1a;网络互联层&#xff08;Int…...

jEasyUI 表单验证

jEasyUI 表单验证 引言 jEasyUI 是一款流行的 jQuery UI 扩展库,它提供了丰富的 UI 组件和交互效果,极大地方便了前端开发工作。在 jEasyUI 中,表单验证是一个非常重要的功能,它可以帮助开发者确保用户输入的数据符合预期的格式和规则。本文将详细介绍 jEasyUI 表单验证的…...

PIKE 助力知识库进阶:多模型协作下的精准信息 “捕手”

PIKE&#xff08;通常指的是字节跳动提出的一种技术&#xff09;增强检索知识库是一种结合了先进的信息检索技术和知识库管理的系统。它旨在提高知识检索的准确性、效率和召回率&#xff0c;以更好地满足用户对知识的需求。 特点和工作原理 数据增强 &#xff1a;对知识库中…...

使用Ubuntu18恢复群晖nas硬盘数据外接usb

使用Ubuntu18恢复群晖nas硬盘数据外接usb 1. 接入硬盘2.使用Ubuntu183.查看nas硬盘信息3. 挂载nas3.1 挂载损坏nas硬盘(USB)3.2 挂载当前运行的nas 4. 拷贝数据分批传输 5. 新旧数据对比 Synology NAS 出现故障&#xff0c;DS DiskStation损坏&#xff0c;则可以使用计算机和 U…...

Dify票据识别遇到的分支判断不准确问题

已测试这篇文章中 https://zhuanlan.zhihu.com/p/5465385787 使用多分支条件判断使用不同的大模型识别图片内容 发现了细节问题。在使用时若不注意&#xff0c;分支会出现走向不准的问题。 需要关注部分 下方红框处。1&#xff0c;2后不能跟点。否则会出问。除此之外&#xff0…...

Flutter学习总结之Android渲染对比

一、Android 界面渲染机制&#xff08;基于原生 View 体系&#xff09; 1. 核心渲染流程&#xff08;源码级解析&#xff09; 三阶段渲染流程&#xff08;ViewRootImpl驱动&#xff09;&#xff1a; Measure 阶段&#xff08;measure()&#xff09;&#xff1a; View调用onMea…...