快速入門flask應用(從入門到實戰)

目錄

前言:

了解一些網絡通信的概念

什么是網絡通信:

當我們訪問一個網址的時候發生了什么:

1. 解析 URL:明確訪問目標

2. DNS 域名解析:將 “名字” 轉為 “地址”

3. 建立連接:TCP 三次握手(HTTPS 需額外 TLS 握手)

4. 發送 HTTP 請求:告訴服務器 “要什么”

5. 服務器處理請求并返回響應

6. 瀏覽器解析響應并渲染頁面

7. 連接關閉:TCP 四次揮手

總結

1 flask教程

1.1flask安裝

1.2第一個flask應用

1.2.1提示信息詳解

1.3flask路由

1.3.1定義路由

1.3.2路由參數

1.3.3路由規則

1.3.4路由請求方法

1.3.5靜態文件和模板

1.3.6路由優先級

1.4視圖函數

1.4.1定義視圖函數

1.4.2接收請求數據

1.4.3返回響應

1.4.4處理請求和響應

1.5flask模板渲染

1.5.1基本概念

1.5.2創建模板

1.5.3控制結構


前言:

Flask 是一個用 Python 編寫的輕量級 Web 應用框架。

Flask 基于 WSGI(Web Server Gateway Interface)和 Jinja2 模板引擎,旨在幫助開發者快速、簡便地創建 Web 應用。

Flask 被稱為"微框架",因為它使用簡單的核心,用擴展增加其他功能。

了解一些網絡通信的概念

什么是網絡通信:

網絡通信時不同設備上的不同程序之間的通信,請求資源的一端我們 稱為客戶端,提供資源的一端我們稱為服務端

當我們訪問一個網址的時候發生了什么:
1. 解析 URL:明確訪問目標

瀏覽器首先會對輸入的 URL(統一資源定位符)進行解析,拆解出關鍵信息:
協議:如http或https(決定數據傳輸的規則和安全性);
域名:如www.example.com(服務器的 “名字”,需轉換為 IP 地址);
端口:協議默認端口(http默認 80,https默認 443,可省略);
路徑 / 參數:如/index.html?id=1(指定服務器上的具體資源)。

2. DNS 域名解析:將 “名字” 轉為 “地址”

域名(如www.example.com)只是方便人類記憶的標識,計算機之間通信需要IP 地址(如192.168.1.1)。因此,瀏覽器需要通過DNS(域名系統) 把域名解析為 IP 地址,過程類似 “查通訊錄”:

3. 建立連接:TCP 三次握手(HTTPS 需額外 TLS 握手)

拿到 IP 地址后,瀏覽器需要與目標服務器建立網絡連接,核心是TCP 協議(保證數據可靠傳輸),通過 “三次握手” 確認連接:
第一次握手:瀏覽器發送 “連接請求”(SYN 包)給服務器;
第二次握手:服務器收到后,回復 “同意連接”(SYN+ACK 包);
第三次握手:瀏覽器再回復 “確認收到”(ACK 包),連接正式建立。

4. 發送 HTTP 請求:告訴服務器 “要什么”

連接建立后,瀏覽器向服務器發送HTTP 請求(基于 TCP 傳輸),請求內容包括:
請求行:如GET /index.html HTTP/1.1(請求方法、資源路徑、協議版本);
請求頭:包含瀏覽器信息(如User-Agent: Chrome/100.0)、接受的數據格式(Accept: text/html)、Cookie(用戶身份信息)等;
請求體:僅 POST 等方法需要(如表單提交的參數)。

5. 服務器處理請求并返回響應

服務器(如 Nginx、Apache)收到請求后,按以下流程處理:
1. 解析請求:識別請求的資源(如index.html)、用戶信息(Cookie)等;
2. 業務處理:可能調用后端程序(如 Java、Python 代碼)、查詢數據庫(如 MySQL),生成需要返回的數據(如動態 HTML、JSON);
3. 生成響應:將處理結果封裝為HTTP 響應,包括:
狀態碼:如200 OK(成功)、404 Not Found(資源不存在)、500 Internal Server Error(服務器錯誤);
響應頭:如Content-Type: text/html(數據類型)、Cache-Control(緩存規則)、Set-Cookie(服務器向瀏覽器寫入 Cookie);
響應體:實際內容(如 HTML 代碼、圖片二進制數據)。

6. 瀏覽器解析響應并渲染頁面

瀏覽器收到響應后,核心任務是將響應體(如 HTML)轉換為用戶可見的頁面,過程分為以下幾步:
1. 解析 HTML,構建 DOM 樹:
瀏覽器逐行解析 HTML 標簽,將標簽轉換為 “文檔對象模型”(DOM)—— 一個樹形結構,每個節點對應 HTML 中的元素(如<div>、<p>)。
2. 解析 CSS,構建 CSSOM 樹:
同時解析 CSS(包括<style>標簽、外部.css文件),生成 “CSS 對象模型”(CSSOM)—— 記錄每個元素的樣式規則(如顏色、尺寸)。
3. 生成渲染樹(Render Tree):
結合 DOM 樹和 CSSOM 樹,篩選出可見元素(如隱藏的display: none元素會被排除),并為每個可見元素附加樣式,形成渲染樹。
4. 布局(回流)與繪制(重繪):
? 布局:根據渲染樹計算每個元素的位置、大小(如width: 100px在屏幕上的具體坐標);
? 繪制:根據布局結果,將元素的顏色、背景等繪制到屏幕像素上,最終顯示完整頁面。
5. 加載額外資源:
HTML 中可能包含圖片(<img>)、JavaScript(<script>)、字體等資源,瀏覽器會對這些資源發起額外的 HTTP 請求(重復步驟 3-5),并插入到頁面中。

7. 連接關閉:TCP 四次揮手

頁面加載完成后,若不再需要通信,瀏覽器與服務器通過 “四次揮手” 斷開 TCP 連接:
瀏覽器發送 “斷開請求”(FIN 包);
服務器回復 “已收到,準備關閉”(ACK 包);
服務器處理完剩余數據后,發送 “可以斷開”(FIN 包);
瀏覽器回復 “確認關閉”(ACK 包),連接斷開。

總結

flask在網絡通信中起到的作用就是第五步“5. 服務器處理請求并返回響應”

1 flask教程

1.1flask安裝

如果你的計算機上安裝了python可以使用pip管理器在命令行輸入

pip install Flask

安裝完成后,可以通過以下命令驗證 Flask 是否安裝成功:

pip show Flask

執行以上命令,顯示結果類似如下:

1.2第一個flask應用

? 為了python程序的編寫方便建議安裝一個python的集成開發ide我這里安裝了 pycharm有需要我可以提供安裝包。

?在pycharm新建一個py文件輸入下面的代碼點擊運行,包含詳細的注釋

# 從flask模塊中導入Flask類,Flask類是創建Web應用的核心
from flask import Flask# 創建Flask應用實例,__name__是Python的特殊變量,表示當前模塊的名稱
# Flask通過這個參數確定應用的根目錄,用于查找模板、靜態文件等資源
app = Flask(__name__)# 路由裝飾器:將URL路徑'/'與下面定義的home函數綁定
# 當用戶訪問網站根目錄(如http://localhost:5000/)時,會執行home函數
@app.route('/')
def home():# 視圖函數:處理根路徑請求,返回的字符串會作為響應內容發送給瀏覽器return '歡迎來到我的第一個 Flask 網站!'# 路由裝飾器:將URL路徑'/about'與下面定義的about函數綁定
# 當用戶訪問http://localhost:5000/about時,會執行about函數
@app.route('/about')
def about():# 視圖函數:處理/about路徑請求,返回關于頁面的內容return '這是關于頁面'# 條件判斷:當該腳本被直接運行時(而不是被其他模塊導入時),執行下面的代碼
# __name__在腳本直接運行時會被設為'__main__',被導入時則為模塊名
if __name__ == '__main__':# 啟動Flask內置的開發服務器# debug=True表示開啟調試模式:代碼修改后自動重啟服務器,且出錯時顯示詳細錯誤信息app.run(debug=True)

在終端會出現類似這樣的提示信息

?* Running on http://127.0.0.1:5000
Press CTRL+C to quit
?* Restarting with stat
?* Debugger is active!
?* Debugger PIN: 104-396-281
127.0.0.1 - - [07/Aug/2025 17:04:12] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [07/Aug/2025 17:04:21] "GET /about HTTP/1.1" 200 -

1.2.1提示信息詳解

1. WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
含義:這是最重要的警告信息
解釋:
Flask 自帶的服務器是開發專用服務器,只適合在本地開發測試時使用
它不適合生產環境(即正式上線的網站),因為:
性能不足:無法處理大量用戶同時訪問
安全性低:沒有針對網絡攻擊的防護
?穩定性差:長時間運行可能崩潰
2. * Running on http://127.0.0.1:5000
含義:服務運行地址
解釋:
你的網站運行在本機(127.0.0.1或localhost)
使用5000端口
打開瀏覽器訪問這個地址即可查看網站
3. Press CTRL+C to quit
含義:停止服務器的操作提示
解釋:在終端按Ctrl+C組合鍵可以安全停止服務器
4. * Restarting with stat
含義:調試模式下的自動重載功能已啟用
解釋:
當你修改代碼并保存后,服務器會自動重啟
這是由debug=True參數啟用的功能
5. * Debugger is active!
含義:調試器已激活
解釋:
如果程序出錯,瀏覽器會顯示詳細錯誤信息和交互式調試器
可以查看變量值、調用棧等調試信息
6. * Debugger PIN: 104-396-281
含義:調試器的安全PIN碼
?解釋:
當需要進入交互式調試控制臺時,需要輸入此PIN碼驗證身份
安全機制防止未經授權的代碼執行

主要明白的是我們在運行代碼后在瀏覽器訪問http://127.0.0.1:5000就可以訪問我們自己的網址了

1.3flask路由

下面我們將學習flask的各種組件

Flask 路由是 Web 應用程序中將 URL 映射到 Python 函數的機制。
Flask 路由是 Flask 應用的核心部分,用于處理不同 URL 的請求,并將請求的處理委托給相應的視圖函數。

1.3.1定義路由

使用 @app.route('/path') 裝飾器定義 URL 和視圖函數的映射。把它理解成一個語法規則

實例

from flask import Flaskapp = Flask(__name__)@app.route('/')
def home():return 'Welcome to the Home Page!'

@app.route('/'):裝飾器,用于定義路由。/ 表示根 URL。
def home():視圖函數,當訪問根 URL 時,返回 'Welcome to the Home Page!'。

1.3.2路由參數

路由可以包含動態部分,通過在路由中指定參數,可以將 URL 中的部分數據傳遞給視圖函數

@app.route('/greet/<name>')
def greet(name):return f'Hello, {name}!'

這里的 f 是 Python 中 f-string(格式化字符串字面量) 的標識,作用是讓字符串支持直接嵌入變量或表達式的值,是一種簡潔的字符串格式化方式(Python 3.6 及以上版本支持)。
具體來說,在 f'Hello, {name}!' 中:
字符串前的 f 告訴 Python:這是一個特殊的格式化字符串。
字符串中的 {name} 是一個 “占位符”,會被變量 name 的實際值替換。

1.3.3路由規則

路由規則支持不同類型的參數和匹配規則。
類型規則:
字符串(默認): 匹配任意字符串。
整數(<int:name>): 匹配整數值。
浮點數(<float:value>): 匹配浮點數值。
路徑(<path:name>): 匹配任意字符,包括斜杠 /。

@app.route('/user/<int:user_id>')
def user_profile(user_id):return f'User ID: {user_id}'@app.route('/files/<path:filename>')
def serve_file(filename):return f'Serving file: {filename}'

@app.route('/user/<int:user_id>'):匹配整數類型的 user_id。
@app.route('/files/<path:filename>'):匹配包含斜杠的路徑 filename。

1.3.4路由請求方法

Flask 路由支持不同的 HTTP 請求方法,如 GET、POST、PUT、DELETE 等。可以通過 methods 參數指定允許的請求方法。在 Flask 中,當使用 @app.route 定義路由時,如果不通過 methods 參數顯式指定支持的 HTTP 請求方法,默認只支持 GET 方法!

@app.route('/submit', methods=['POST'])
def submit():return 'Form submitted!'
1.3.5靜態文件和模板

靜態文件(如 CSS、JavaScript、圖片)可以通過 static 路由訪問。模板文件則通過 templates 文件夾組織,用于渲染 HTML 頁面。
靜態文件訪問:靜態文件默認放在 static 文件夾中,Flask 提供了 url_for('static', filename='路徑') 函數生成正確的訪問路徑。

1.3.6路由優先級

Flask 按照定義的順序匹配路由,第一個匹配成功的路由將被處理。確保更具體的路由放在更一般的路由之前。

@app.route('/user/<int:user_id>')
def user_profile(user_id):return f'User ID: {user_id}'@app.route('/user')
def user_list():return 'User List'

/user/123 將匹配到 /user/<int:user_id>,而 /user 將匹配到 user_list。

1.4視圖函數

視圖函數是 Flask 應用中的核心部分,它負責處理請求并生成響應。
視圖函數與路由緊密結合,通過路由將 URL 映射到具體的視圖函數。

1.4.1定義視圖函數

視圖函數是一個普通的 Python 函數,它接收請求并返回響應。視圖函數通常與路由配合使用,通過裝飾器將 URL 映射到視圖函數。

from flask import Flaskapp = Flask(__name__)@app.route('/')
def home():return 'Hello, World!'

@app.route('/'):將根 URL / 映射到 home 視圖函數。
def home():視圖函數,返回字符串 'Hello, World!' 作為響應。

1.4.2接收請求數據

request 是 Flask 處理用戶輸入的核心工具,通過它可以輕松獲取 URL 參數、表單數據、JSON 數據、文件等請求信息。掌握 request.method、request.args、request.form、request.get_json() 等常用屬性和方法,就能應對絕大多數 Web 交互場景!

視圖函數可以接收不同類型的請求數據,包括 URL 參數、表單數據、查詢參數等。
獲取 URL 參數:

@app.route('/greet/<name>')
def greet(name):return f'Hello, {name}!'

<name> 是一個 URL 參數,傳遞到視圖函數 greet。

獲取表單數據:

from flask import request@app.route('/submit', methods=['POST'])
def submit():username = request.form.get('username')return f'Form submitted by {username}!'

request.form.get('username'):獲取 POST 請求中表單數據的 username 字段。

獲取查詢參數:

@app.route('/search')
def search():query = request.args.get('query')return f'Search results for: {query}'
1.4.3返回響應

視圖函數可以返回多種類型的響應,包括字符串、HTML、JSON、或自定義響應對象。
返回字符串:

@app.route('/message')
def message():return 'This is a simple message.'

返回 HTML 模板:

from flask import render_template@app.route('/hello/<name>')
def hello(name):return render_template('hello.html', name=name)

render_template('hello.html', name=name):渲染 HTML 模板 hello.html,并將 name 變量傳遞給模板。
返回 JSON 數據:

from flask import jsonify@app.route('/api/data')
def api_data():data = {'key': 'value'}return jsonify(data)

jsonify(data):將 Python 字典轉換為 JSON 響應。
返回自定義響應對象:

from flask import Response@app.route('/custom')
def custom_response():response = Response('Custom response with headers', status=200)response.headers['X-Custom-Header'] = 'Value'return response

Response('Custom response with headers', status=200):創建自定義響應對象,并設置響應頭。

1.4.4處理請求和響應

視圖函數可以訪問請求對象,并根據請求數據生成響應。可以使用 request 對象來獲取請求的信息,使用 make_response 來創建自定義響應。
使用 request 對象:

from flask import request@app.route('/info')
def info():user_agent = request.headers.get('User-Agent')return f'Your user agent is {user_agent}'

request.headers.get('User-Agent'):獲取請求頭中的 User-Agent 信息。
使用 make_response:

from flask import make_response@app.route('/header')
def custom_header():response = make_response('Response with custom header')response.headers['X-Custom-Header'] = 'Value'return response

make_response('Response with custom header'):創建響應對象并設置自定義頭信息。

1.5flask模板渲染

模板是包含占位符的 HTML 文件。
Flask 使用 Jinja2 模板引擎來處理模板渲染。模板渲染允許你將動態內容插入到 HTML 頁面中,使得應用能夠生成動態的網頁內容。

1.5.1基本概念

模板是包含占位符的 HTML 文件。
Flask 使用 Jinja2 模板引擎來渲染這些模板,將 Python 數據插入到 HTML 中,從而生成最終的網頁。

1.5.2創建模板

模板文件通常放在項目的 templates 文件夾中。
Flask 會自動從這個文件夾中查找模板文件。
創建模板文件:在項目目錄下創建 templates 文件夾,并在其中創建一個 HTML 文件,如 index.html。
templates/index.html 文件代碼:

<!DOCTYPE html>
<html>
<head><title>Welcome</title>
</head>
<body><h1>{{ title }}</h1><p>Hello, {{ name }}!</p>
</body>
</html>

{{ title }} 和 {{ name }} 是模板占位符,將在渲染時被替換成實際的值。
在視圖函數中渲染模板:
app.py 文件代碼:

from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')
def home():return render_template('index.html', title='Welcome Page', name='John Doe')if __name__ == '__main__':app.run(debug=True)

render_template('index.html', title='Welcome Page', name='John Doe'):渲染 index.html 模板,并將 title 和 name 變量傳遞給模板。

1.5.3控制結構

Jinja2 提供了多種控制結構,用于在模板中實現條件邏輯和循環。
條件語句:

{% if user %}<p>Welcome, {{ user }}!</p>
{% else %}<p>Please log in.</p>
{% endif %}

{% if user %}:檢查 user 變量是否存在,如果存在,則顯示歡迎消息,否則顯示登錄提示。
循環語句

<ul>
{% for item in items %}<li>{{ item }}</li>
{% endfor %}
</ul>

{% for item in items %}:遍歷 items 列表,并為每個項生成一個 <li> 元素。

關注博主接下來做一個接入攝像頭并且實現各類物品識別的網站!

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

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

相關文章

C++/QT 開發技能樹詳解

一、 編程語言 (C)1. C基礎語法&#xff08;數據類型、模板、命名空間&#xff09;是什么&#xff1a; 這是構建C程序的基石。數據類型定義了變量存儲的數據種類和大小&#xff1b;模板允許編寫與數據類型無關的通用代碼&#xff1b;命名空間用于避免大型項目中的名稱沖突。如何…

Java多線程進階-死鎖與面試題解析

文章目錄Java多線程進階&#xff1a;死鎖與面試題解析一、并發編程的噩夢——死鎖1. 什么是死鎖&#xff1f;四個缺一不可的條件2. 如何避免死鎖&#xff1f;從破壞循環等待開始二、并發編程面試題全景解析1. 鎖與同步機制2. CAS 與原子操作3. JUC 工具與線程池4. 線程安全集合…

ZYNQ啟動流程——ZYNQ學習筆記11

ZYNQ SoC 的啟動由片上的 BootROM 開始。片上 BootROM 是 ZYNQ 芯片上的一塊非易失性存儲器&#xff0c;它包含了 ZYNQ 所支持的配置器件的驅動&#xff0c; 而且里面的代碼是不可修改的。 BootROM 中的代碼首先會在片外的非易失性存儲器中尋找一個頭文件&#xff0c; 頭文件里…

C++利用CerateProcess創建WPF進程并通過命名管道通訊

引言原因是我需要在C程序中調用另外一個WPF窗體打開或則關閉&#xff0c;進程之前通過通訊協議進行交互。由于使用不同語言開發&#xff0c;兩者都比較復雜不方便重寫&#xff0c;最方便的方法就是使用進程間通信&#xff0c;WPF窗體應用程序根據消息進行Show/Hide/Exit操作。函…

Seaborn數據可視化實戰

1. Seaborn基礎與實踐&#xff1a;數據可視化的藝術 2. Seaborn入門&#xff1a;環境搭建與基礎操作 3. Seaborn基礎圖表繪制入門 4. Seaborn數據可視化基礎&#xff1a;從內置數據集到外部數據集的應用 5. Seaborn顏色與樣式定制教程 6. Seaborn數據可視化入門&#xff1a;繪制…

BIM+寫實數字孿生落地實戰指南

&#x1f31f; 正文 在智慧城市與工業4.0的浪潮中&#xff0c;BIM與數字孿生的深度碰撞正在重塑建筑的生命周期。基于Revit&#xff08;RVT&#xff09;模型構建的超寫實數字孿生體&#xff0c;不僅實現物理空間的毫米級鏡像&#xff0c;更通過實時數據驅動&#xff0c;賦予建…

[Git] 如何拉取 GitHub 倉庫的特定子目錄

作為開發者&#xff0c;我們經常遇到只需要克隆大型倉庫中某個子目錄的場景。 Git 本身并不支持直接克隆子目錄&#xff0c;但通過一些技巧可以實現類似效果。本文將介紹幾種實用的方法&#xff0c;幫助獲取目標代碼。 為什么需要局部拉取&#xff1f; 節省時間和帶寬&#xff…

修復Simulink到UE5丟包時被控船體的殘影問題

提問 simulink 有一個和UE5協同的模塊&#xff0c;叫做Simulation 3D Scence Configuration&#xff0c;還有一個發送來自simulink到UE5數據的模塊叫做Simulation 3D Message。 現在遇到的問題是&#xff0c;這兩個模塊的優先級設置是正確的&#xff0c;且sample time都設置為0…

嵌入式第三十五課!!Linux下的網絡編程

一、目的網絡編程的目的實際上也是進程通信的一種方式&#xff0c;不過它可以在不同的主機上進行通信&#xff1b;二、需要解決的問題1. 主機與主機之間物理層面必須互聯互通。指的是參與通信的計算機&#xff08;主機&#xff09;需要通過物理設備建立連接&#xff08;光纖、網…

遙感機器學習入門實戰教程|Sklearn案例⑦:特征選擇與重要性分析

很多同學問&#xff1a;波段/特征一多就“維度災難”&#xff0c;訓練慢、過擬合&#xff0c;且很難解釋“哪些特征最關鍵”。本篇用 sklearn 給出一套能跑、可視化、可比較的最小工作流&#xff0c;并配上方法論速記&#xff0c;幫助你在高光譜/多特征任務里做出穩健篩選。 &a…

地理數據制備:蔚藍地圖空氣質量數據的獲取、清洗與坐標匹配指南

【&#x1f4ca;】手把手攻略&#xff1a;如何從“蔚藍地圖”挖寶——獲取濟南市可用空氣質量數據全記錄 一份不需要寫代碼也能搞定環境數據獲取的實用指南 ? 引言&#xff1a;為什么選擇蔚藍地圖&#xff1f; 作為一名環境數據愛好者&#xff0c;我經常需要獲取準確、可靠、…

Unreal Engine USceneComponent

Unreal&#x1f3db; Unreal Engine - USceneComponent&#x1f4da; 定義&#x1f3f7; 類繼承? 關鍵特性?? 常見配置&#x1f6e0;? 使用方法&#x1f517; 創建與掛載&#x1f504; 獲取與修改 Transform&#x1f9e9; 附加/分離組件&#x1f3ca; 典型應用場景&#x1…

2025年9月5090工作站、

在深度學習與大模型訓練領域&#xff0c;算力是決定研發效率與模型性能的核心要素&#xff0c;而顯卡作為算力輸出的核心硬件&#xff0c;其性能參數直接影響著訓練任務的速度、穩定性與成本控制。對于企業與科研機構而言&#xff0c;選擇一套適配自身需求且性價比優異的顯卡及…

亞矩陣云手機:亞馬遜第三方店鋪多賬號安全合規運營的核心技術支撐

亞矩陣云手機在亞馬遜第三方店鋪多賬號安全合規運營的技術支持&#xff0c;通過硬件級虛擬化、AI 行為建模、動態資源調度三大核心技術模塊&#xff0c;構建了覆蓋設備、網絡、行為、數據的四維防御體系&#xff0c;確保賬號在亞馬遜平臺規則下的長期穩定運行。以下從技術架構、…

使用C++11改進工廠方法模式:支持運行時配置的增強實現

在軟件開發中&#xff0c;工廠方法模式是一種常用的設計模式&#xff0c;用于創建對象。通過使用C11的新特性&#xff0c;我們可以進一步改進工廠方法模式&#xff0c;使其更加靈活和高效。本文將詳細介紹如何使用C11的std::function、lambda表達式和智能指針來實現一個支持運行…

小程序插件使用

插件介紹 插件是對一組 js 接口、自定義組件 或頁面的封裝&#xff0c;用于嵌入到小程序中使用。插件不能獨立運行&#xff0c;必須嵌入在其他小程序中才能被用戶使用&#xff1b;而第三方小程序在使用插件時&#xff0c;也無法看到插件的代碼。因此&#xff0c;插件適合用來封…

要區分一張圖片中的網狀圖(如網格結構或規則紋理)和噪點(隨機分布的干擾像素),比如電路的方法 計算機視覺

要區分一張圖片中的網狀圖&#xff08;如網格結構或規則紋理&#xff09;和噪點&#xff08;隨機分布的干擾像素&#xff09;&#xff0c;需結合圖像預處理、特征提取和分割算法。以下是系統化的解決方案&#xff0c;分階段說明關鍵技術和算法選擇&#xff1a; &#x1f50d; 一…

06_并發編程高級特性

第6課:并發編程高級特性 課程目標 掌握context包的使用 理解sync包中的同步原語 學會處理并發安全問題 掌握性能優化技巧 1. Context包 1.1 Context基礎 import ("context""fmt""time" )// 基本Context使用 func basicContext()

X00238-非GNSS無人機RGB圖像衛星圖像視覺定位python

獲取方式見文末&#xff0c;可開發票隨著無人機在工業和科研領域應用的加速發展&#xff0c;在非城市環境中使用無gnss、基于視覺的方法進行無人機定位的需求日益增長。本文提出了一種基于視覺的定位算法&#xff0c;利用深度特征計算無人機在野外飛行的地理坐標。該方法基于匹…

Eino 開源框架全景解析 - 以“大模型應用的搭積木指南”方式理解

Eino 開源框架全景解析 - 大模型應用的搭積木指南 &#x1f3af; 什么是 Eino&#xff1f;一句話概括 Eino 是字節跳動開源的大語言模型應用開發框架&#xff0c;就像是一個專門為 AI 應用設計的"搭積木工具箱"&#xff0c;讓開發者能夠像搭樂高一樣輕松構建復雜的 A…