【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返回封裝成約定的格式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/75668.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/75668.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/75668.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

論文筆記(七十五)Auto-Encoding Variational Bayes

Auto-Encoding Variational Bayes 文章概括摘要1 引言2 方法2.1 問題場景2.2 變分下界2.3 SGVB估計器與AEVB算法2.4 重參數化技巧 3 示例&#xff1a;變分自編碼器&#xff08;Variational Auto-Encoder&#xff09;4 相關工作5 實驗6 結論7 未來工作 文章概括 引用&#xff1…

Python3 學習筆記

Python3 簡介 | 菜鳥教程 一 Python3 簡介 Python 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。 Python 的設計具有很強的可讀性&#xff0c;相比其他語言經常使用英文關鍵字&#xff0c;其他語言的一些標點符號&#xff0c;它具有比其他語言更有特色…

Java實現N皇后問題的雙路徑探索:遞歸回溯與迭代回溯算法詳解

N皇后問題要求在NN的棋盤上放置N個皇后&#xff0c;使得她們無法互相攻擊。本文提供遞歸和循環迭代兩種解法&#xff0c;并通過圖示解釋核心邏輯。 一、算法核心思想 使用回溯法逐行放置皇后&#xff0c;通過沖突檢測保證每行、每列、對角線上只有一個皇后。發現無效路徑時回退…

前端判斷值相等的方法和區別

1. (寬松相等) 在比較之前會進行類型轉換 可能導致一些意外的結果 0 // true 0 0 // true false 0 // true null undefined // true [1,2,3]1,2,3 // true2. (嚴格相等) 不進行類型轉換 類型和值都必須相同 0 // false 0 0 // false false 0 /…

Socket編程UDP

Socket編程UDP 1、V1版本——EchoServer2、網絡命令2.1、ping2.2、netstat2.3、pidof 3、驗證UDP——Windows作為client訪問Linux4、V2版本——DictServer5、V3版本——簡單聊天室 1、V1版本——EchoServer 首先給出EchoServer目錄結構&#xff1a;服務器的類我們實現在UdpServ…

輔助查詢是根據查詢到的文檔片段再去生成新的查詢問題

&#x1f4a1; 輔助查詢是怎么來的&#xff1f; 它是基于你當前查詢&#xff08;query&#xff09;檢索到的某個文檔片段&#xff08;chunk_result&#xff09;&#xff0c;再去“反推”出新的相關問題&#xff08;utility queries&#xff09;&#xff0c;這些問題的作用是&a…

2025 年 4 月補丁星期二預測:微軟將推出更多 AI 安全功能

微軟正在繼續構建其 AI 網絡安全戰略&#xff0c;并于本月宣布在 Microsoft Security Copilot 中引入新代理。 他們引入了用于網絡釣魚分類的代理、用于數據丟失預防和內部風險管理的警報分類、條件訪問優化、漏洞修復和威脅情報簡報。 這些代理的目標是不斷從這些不同學科中…

【LLM系列】1.大模型簡介

1. 基礎 1.1 如何權衡模型的復雜度和性能&#xff1f; ├── a. 模型架構選擇 │ ├── 簡化架構 │ │ └── 選擇較小的網絡層數和寬度&#xff0c;降低復雜度&#xff1b; │ │ 可使用高性能基礎模型如 Transformers 作為起點&#xff0c;根據需求縮放模型。 │ └──…

【leetcode】記錄與查找:哈希表的題型分析

前言 &#x1f31f;&#x1f31f;本期講解關于力扣的幾篇題解的詳細介紹~~~ &#x1f308;感興趣的小伙伴看一看小編主頁&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的點贊就是小編不斷更新的最大動力 &#x1f386;那么廢話不…

優選算法的妙思之流:分治——快排專題

專欄&#xff1a;算法的魔法世界 個人主頁&#xff1a;手握風云 目錄 一、快速排序 二、例題講解 2.1. 顏色分類 2.2. 排序數組 2.3. 數組中的第K個最大元素 2.4. 庫存管理 III 一、快速排序 分治&#xff0c;簡單理解為“分而治之”&#xff0c;將一個大問題劃分為若干個…

二叉樹的ACM板子(自用)

package 二叉樹的中序遍歷;import java.util.*;// 定義二叉樹節點 class TreeNode {int val; // 節點值TreeNode left; // 左子節點TreeNode right; // 右子節點// 構造函數TreeNode(int x) {val x;} }public class DMain {// 構建二叉樹&#xff08;層序遍歷方式&…

Linux常用命令詳解:從基礎到進階

目錄 一、引言 二、文件處理相關命令 &#xff08;一&#xff09;grep指令 &#xff08;二&#xff09;zip/unzip指令 ?編輯 &#xff08;三&#xff09;tar指令 &#xff08;四&#xff09;find指令 三、系統管理相關命令 &#xff08;一&#xff09;shutdown指…

Qt多線程從基礎到性能優化

一、為什么需要多線程開發 現代應用程序的性能需求 CPU多核架構的有效利用 復雜任務的解耦與響應式界面保持 二、Qt線程創建四大方式 1. 繼承QThread重寫run() class WorkerThread : public QThread {void run() override {// 耗時操作qDebug() << "Thread ID…

【java】在 Java 中,獲取一個類的`Class`對象有多種方式

在 Java 中&#xff0c;獲取一個類的Class對象有多種方式。Class對象代表了 Java 中的一個類或接口的運行時類信息&#xff0c;可以用于反射操作。以下是獲取Class對象的幾種常見方法&#xff1a; 1.使用.class屬性 每個類都有一個.class屬性&#xff0c;可以直接獲取該類的Cl…

什么是RPC通信

RPC&#xff08;Remote Procedure Call&#xff0c;遠程過程調用&#xff09;通信是一種允許程序像調用本地函數一樣調用遠程服務器上函數的通信技術。它簡化了分布式系統中的網絡交互&#xff0c;隱藏了底層網絡通信的復雜性&#xff0c;使開發者能夠專注于業務邏輯。 一、RPC…

還是主題混合程序設計

以下是針對您現有代碼的完整主題化改造方案&#xff0c;實現跨QML/Qt Widgets的陰影主題系統&#xff1a; 一、主題管理系統核心 // thememanager.h #pragma once #include <QObject> #include <QColor> #include <QMap> #include <QQmlEngine>class…

BT-Basic函數之首字母T

BT-Basic函數之首字母T 文章目錄 BT-Basic函數之首字母Ttabtesttest conttest monitortest on boardstest scanworkstest shortstesthead cleanuptesthead configurationtesthead istesthead power on/offtesthead statustestjet print level istestordertestplan generationth…

7-9 趣味游戲

題目解析 在某個學校的趣味游戲活動中&#xff0c;N 名同學站成一排&#xff0c;他們的年齡恰好是 1 到 N &#xff0c;需要注意的是他們并不是按照年齡的大小排列的&#xff0c;而是隨機排列的。 游戲的規則是請同學們快速計算出&#xff0c;如果在這 N 名同學的小組中&…

Hugging Face模型微調訓練(基于BERT的中文評價情感分析)

文章目錄 學習視頻地址項目地址數據集的下載模型微調的基本概念與流程加載數據集數據集格式數據集信息 制作Dataset數據集字段數據集信息 vocab字典操作詞匯表文本轉換 下游任務模型設計模型訓練與保存數據加載優化器訓練循環 最終效果評估與測試模型加載和測試 學習視頻地址 …

【藍橋杯】十五屆省賽B組c++

目錄 前言 握手問題 分析 排列組合寫法 枚舉 小球反彈 分析 代碼 好數 分析 代碼 R 格式 分析 代碼 寶石組合 分析 代碼 數字接龍 分析 代碼 拔河 分析 代碼 總結 前言 主播這兩天做了一套藍橋杯的省賽題目&#xff08;切實感受到了自己有多菜&#x…