Python 開發環境的準備以及一些常用類庫模塊的安裝

来源:https://www.cnblogs.com/wuhuacong/p/18355162
-Advertisement-
Play Games

在學習和開發Python的時候,第一步的工作就是先準備好開發環境,包括相關常用的插件,以及一些輔助工具,這樣我們在後續的開發工作中,才能做到事半功倍。下麵介紹一些Python 開發環境的準備以及一些常用類庫模塊的安裝和使用的經驗總結,供大家參考瞭解。 ...


在學習和開發Python的時候,第一步的工作就是先準備好開發環境,包括相關常用的插件,以及一些輔助工具,這樣我們在後續的開發工作中,才能做到事半功倍。下麵介紹一些Python 開發環境的準備以及一些常用類庫模塊的安裝和使用的經驗總結,供大家參考瞭解。

1、開發VScode的安裝及相關準備

在 Python 開發環境的準備中,有幾個步驟是關鍵的。以下是一個詳細的指南,涵蓋了開發環境的準備以及一些常用插件的安裝:

1)安裝 VS Code
VS Code: 這是一個輕量級但功能強大的代碼編輯器,支持豐富的擴展。你可以從 Visual Studio Code 官方網站 下載。打開官網 https://code.visualstudio.com/,下載軟體包。或者你也可以使用其他的如 PyCharm,可以從 JetBrains 官方網站 下載。

Python AI 編程助手:Fitten Code:

它是由非十大模型驅動的 AI 編程助手,它可以自動生成代碼,提升開發效率,幫您調試 Bug,節省您的時間,另外還可以對話聊天,解決您編程碰到的問題。

Fitten Code是由非十大模型驅動的AI編程助手,它可以自動生成代碼,提升開發效率,幫您調試Bug,節省您的時間。還可以對話聊天,解決您編程碰到的問題。免費且支持80多種語言:Python、C++、Javascript、Typescript、Java等。

強烈推薦使用,自動補齊代碼功能,可以節省很多手工鍵入代碼的時間,減少錯誤。

2)安裝 VS Code Python 擴展
在VSCode中安裝 Python 擴展,在擴展市場搜索 Python 並安裝。

3)安裝 Python 
首先,確保你已經安裝了 Python。你可以從 Python 官方網站 下載最新版本安裝包並安裝。
Window 平臺安裝 Python: https://www.python.org/downloads/windows/
Mac 平臺安裝 Python: https://www.python.org/downloads/mac-osx/

4)配置 Python 環境變數
打開系統環境變數,在 PATH 變數中添加 Python 目錄,這樣可以在命令行中直接使用 Python。

5)測試 Python 環境
在命令行中輸入 python,如果出現 Python 解釋器版本信息,則表示 Python 環境配置成功。

6)安裝 pip
打開命令行,輸入 pip install --upgrade pip,升級 pip 到最新版本。

7)安裝 virtualenv
打開命令行,輸入 pip install virtualenv,安裝 virtualenv。

 

2、Python一些常用類庫模塊的安裝

Python開發常用類庫模塊非常多,看你側重於那個方面,基本上都時列出來一大串,我以常規後端Web API開發為側重點進行一些重點的推介,供參考學習。

1) requests

requests 是一個簡單易用的 Python 庫,地址:https://github.com/psf/requests,用於發送 HTTP 請求。它的設計目標是使得與 Web 服務的交互更加方便和人性化。requests 是基於 urllib3 之上的一個封裝層,提供了簡潔的 API 來處理常見的 HTTP 請求操作,如 GET、POST、PUT、DELETE 等。

requests 的主要特性

  • 簡潔的 API:相比原生的 urllibrequests 提供了更直觀、更容易理解的介面。
  • 自動處理編碼requests 自動處理響應的內容編碼,並自動解碼 gzipdeflate 壓縮。
  • 支持保持會話:通過 Session 對象,requests 可以在多個請求之間保持會話,處理 cookies。
  • 簡化的錯誤處理requests 會根據 HTTP 響應狀態碼拋出相應的異常,從而簡化錯誤處理流程。
  • 豐富的功能:支持 HTTP 認證、代理、SSL 證書驗證、文件上傳、多部分編碼表單、會話對象、cookie 持久化、連接池管理等功能。

如果需要考慮非同步處理,可以使用 aiohttp :aiohttp 是一個非同步 HTTP 客戶端和伺服器框架,它使用 Python 的 asyncio 庫來處理大量併發的請求。aiohttp 適合那些需要高性能網路通信的應用,如 Web 服務、WebSocket 和實時數據處理。

2) Uvicorn

Uvicorn 是一個基於 ASGI(Asynchronous Server Gateway Interface)的高性能、輕量級的 Python Web 伺服器,專為運行非同步 Web 框架(如 FastAPI、Starlette)而設計。它利用了 Python 的非同步功能,能夠處理大量併發連接,適合構建現代的非同步 Web 應用程式。

Uvicorn 的主要特性

  • 高性能: 使用 uvloophttptools 提供極高的性能,適合在高併發場景下使用。
  • 非同步支持: 支持非同步編程模型,能夠與 Python 的 asynciotrio 無縫集成。
  • ASGI 相容: 完全相容 ASGI 標準,適用於現代非同步 Web 框架,如 FastAPI 和 Starlette。
  • WebSocket 支持: 通過 ASGI,Uvicorn 原生支持 WebSocket 協議。
  • 靈活的部署: 既可以作為獨立的開發伺服器使用,也可以與 Gunicorn 等 WSGI 伺服器結合部署生產環境。
安裝 Uvicorn pip install uvicorn
運行 Uvicorn uvicorn testuvicorn:app --reload

Uvicorn 通常用於運行 FastAPI 或 Starlette 應用。以下是一個簡單的 FastAPI 應用並使用 Uvicorn 運行:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"Hello": "World"}

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)
  Uvicorn 提供了豐富的配置選項,以滿足不同需求。可以通過命令行參數或配置文件來配置 Uvicorn 的行為。  以下是一些常用的配置選項: --host:指定主機地址,預設為 127.0.0.1。 --port:指定埠號,預設為 8000。 --workers:指定工作進程數量,預設為 CPU 核心數的 1 倍。 --log-level:指定日誌級別,預設為 info。 --reload:在代碼修改時自動重新載入應用程式。

3)FastAPI 

FastAPI 是一個現代、快速(高性能)的 Web 框架,用於構建 API。它基於 Python 3.7+ 的類型提示,並且依賴於 Starlette(用於 web 伺服器和路由)和 Pydantic(用於數據驗證和序列化)。FastAPI 的設計目標是提供與 Flask 和 Django 類似的開發體驗,但在性能、類型安全和開發者友好性方面做出更大的提升。GitHub地址:https://github.com/fastapi/fastapi 

FastAPI 的主要特性

  • 極高的性能: 基於 ASGI 的非同步支持,使得 FastAPI 在性能上接近 Node.js 和 Go 的水平,適合處理高併發。
  • 自動生成 API 文檔: 使用 OpenAPI 和 JSON Schema 自動生成互動式的 API 文檔(如 Swagger UI 和 ReDoc)。
  • 基於類型提示的自動驗證: 利用 Python 的類型提示和 Pydantic,自動進行數據驗證和解析。
  • 非同步支持: 原生支持 asyncawait,能夠處理非同步任務,適合與資料庫、第三方 API、WebSocket 等交互。
  • 內置依賴註入系統: 使得依賴的聲明和管理變得簡潔而強大,便於模塊化設計。
  • 開發者友好: 提供了詳細的錯誤信息和文檔,支持自動補全,極大提升了開發效率。

以下是一個簡單的 FastAPI 應用:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
    return {"message": "Hello, World"}

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

當你運行 FastAPI 應用時,它會自動生成互動式文檔:

  • Swagger UI: 訪問 http://127.0.0.1:8000/docs
  • ReDoc: 訪問 http://127.0.0.1:8000/redoc

這兩個文檔界面可以讓你查看 API 的結構,甚至可以直接在界面中進行 API 調用。如我在上篇隨筆進行介紹的《Python中FastAPI項目使用 Annotated的參數設計》。

 FastAPI 是一個非常現代化和高效的框架,非常適合用於構建高性能的 API。其自動文檔生成、數據驗證和依賴註入等特性,使得開發者能夠更快、更安全地編寫代碼,並提供出色的用戶體驗。

FastAPI項目的參數設計,這些您可以在路徑操作函數參數或使用Annotated的依賴函數中使用的特殊函數,用於從請求中獲取數據。

我們引入配置文件,可以對FastAPI 中服務啟動的參數進行統一的管理,如下main.py 代碼所示。

if __name__ == "__main__":
    import uvicorn
    # log_level:'critical', 'error', 'warning', 'info', 'debug', 'trace'。預設值:'info'。
    uvicorn.run(
        app,
        host=settings.SERVER_IP,
        port=settings.SERVER_PORT,
        log_config="app/uvicorn_config.json",  # 日誌配置
        # log_level="info",  # 日誌級別
    )

3)pymysql 、pymssql、和 SQLAlchemy

涉及後端的處理,肯定繞不過資料庫的處理操作,如對於MySQL、MS SqlServer等資料庫的處理和封裝。

PyMySQL 是一個純 Python 實現的 MySQL 客戶端庫,用於連接 MySQL 資料庫並執行 SQL 查詢。它是 Python 的 MySQLdb 庫的替代品,尤其適合那些在使用 Python 3 並且不希望依賴 C 語言擴展的項目。PyMySQL 支持 MySQL 資料庫的所有主要功能,包括事務、存儲過程、連接池等。

PyMySQL 的主要特性

  • 純 Python 實現: 不依賴 C 擴展,易於安裝和跨平臺使用。
  • 相容性好: 與 MySQLdb 的介面非常相似,便於從 MySQLdb 遷移到 PyMySQL
  • 支持 MySQL 的所有主要功能: 包括事務處理、存儲過程、BLOB 數據類型等。
  • 簡單易用: 提供了直觀的 API 進行資料庫連接、查詢、插入、更新和刪除操作。

安裝 PyMySQL

你可以通過 pip 來安裝 PyMySQL:

pip install pymysql

使用 PyMySQL 連接到 MySQL 資料庫:

import pymysql

connection = pymysql.connect(
    host='localhost',
    user='your_username',
    password='your_password',
    database='your_database'
)

try:
    with connection.cursor() as cursor:
        # 執行 SQL 查詢
        cursor.execute("SELECT VERSION()")
        
        # 獲取查詢結果
        result = cursor.fetchone()
        print(f"MySQL version: {result}")
finally:
    connection.close()

如下是我實際表的一些操作例子代碼。

sql = "select * from t_customer where name = '{0}' LIMIT 1 ".format(name)
print(sql)
cursor.execute(sql)
myresult = cursor.fetchone()  # fetchone() 獲取一條記錄

if myresult:
    print("該名稱已存在,請更換名稱.")
else:
    print("該名稱可用.")

    # 插入記錄語句
    sql = "INSERT INTO `t_customer` (`ID`, `Name`, `Age`, `Creator`, `CreateTime`) VALUES (%s, %s, %s, %s, %s);"
    val = (id, name, age, creator, createtime)

    cursor.execute(sql, val)
    db.commit()  # 數據表內容有更新,必須使用到該語句

    print(cursor.rowcount, " 行記錄插入.")

sql = "update t_customer Set age = %s where name =%s  "
val = (26, name)
cursor.execute(sql, val)
db.commit()  # 數據表內容有更新,必須使用到該語句
print(cursor.rowcount, " 條記錄被修改")

sql = "select * from t_customer where name = '{0}' LIMIT 1 ".format(name)
cursor.execute(sql)
myresult = cursor.fetchone()  # fetchone() 獲取一條記錄

if myresult:
    print("修改後的記錄: ", myresult)

sql = "SELECT * FROM t_customer"
cursor.execute(sql)
print("t_customer 結果集: ")
for x in cursor:
    print(x)

sql = "delete from t_customer where name =%s  "
try:
    cursor.execute(sql, (name,))
    db.commit()  # 數據表內容有更新,必須使用到該語句
    print(cursor.rowcount, " 行記錄刪除.")
except:
    db.rollback()  # 發生錯誤時回滾
    print("刪除記錄失敗!")


sql = "SELECT * FROM t_customer"
cursor.execute(sql)
myresult = cursor.fetchall()  # fetchall() 獲取所有記錄

for x in myresult:
    print(x)

# 關閉資料庫連接
db.close()

輸出的顯示如下所示。

 

pymssql 是一個用於連接 Microsoft SQL Server 資料庫的 Python 庫,它是基於 FreeTDS 實現的輕量級資料庫介面,旨在簡化 Python 與 SQL Server 之間的交互。pymssql 提供了對 T-SQL 語句的支持,並且可以執行存儲過程和處理大批量數據插入等任務。

pymssql 的主要特性

  • 輕量級和易用性: 提供了簡單的 API 介面,易於快速上手。
  • 與 SQL Server 相容: 支持 Microsoft SQL Server 2005 及以上版本。
  • 跨平臺支持: 支持在 Windows、Linux 和 macOS 系統上運行。
  • 集成事務管理: 通過 commitrollback 方法進行事務管理。
  • 支持存儲過程: 能夠執行和處理存儲過程,適用於複雜的資料庫操作。
  • 批量插入支持: 通過 executemany 方法高效地插入大量數據。

安裝 pymssql

你可以通過 pip 安裝 pymssql:

pip install pymssql

使用 pymssql 連接到 SQL Server 資料庫,pymssql 支持事務,可以在執行多個操作時使用事務控制,以確保數據一致性:

import pymssql

# Connect to the database
conn = pymssql.connect(
    server="localhost",
    user="sa",
    password="123456",
    database="Winframework",
    tds_version="7.0",
)

# Create a cursor object
cursor = conn.cursor()

# Execute a query
cursor.execute("SELECT * FROM T_Customer")
# Fetch all the rows
rows = cursor.fetchall()

# Print the rows
for row in rows:
    print(row)


# Close the cursor and connection
cursor.close()
conn.close()

 

SQLAlchemy 是一個功能強大且靈活的 Python SQL 工具包和對象關係映射(ORM)庫。它被廣泛用於在 Python 項目中處理關係型資料庫的場景,既提供了高級的 ORM 功能,又保留了對底層 SQL 語句的強大控制力。SQLAlchemy 允許開發者通過 Python 代碼與資料庫進行交互,而無需直接編寫 SQL 語句,同時也支持直接使用原生 SQL 進行複雜查詢。 Engine  連接         驅動引擎 Session 連接池,事務  由此開始查詢 Model   表              類定義 Column  列   Query   若幹行         可以鏈式添加多個條件

SQLAlchemy 的主要特性

  • 對象關係映射(ORM): 允許將 Python 類映射到資料庫表,並且自動處理 SQL 的生成和執行。
  • SQL 表達式語言: 提供了一個表達式語言層,允許構建和執行原生 SQL 查詢,同時保留類型安全性和跨資料庫相容性。
  • 資料庫抽象層: 提供了跨資料庫的相容性,使得在不同資料庫之間切換變得相對容易。
  • 高性能: 通過細粒度的控制和緩存機制,優化了資料庫訪問的性能。
  • 事務管理: 支持複雜的事務處理和上下文管理,使得資料庫操作更加安全和一致。
  • 支持多種資料庫: 支持大多數主流的關係型資料庫,如 SQLite、PostgreSQL、MySQL、Oracle、SQL Server 等。

安裝 SQLAlchemy

你可以通過 pip 安裝 SQLAlchemy

pip install sqlalchemy

如果你要連接到特定的資料庫,還需要安裝相應的資料庫驅動程式。例如,要連接到 MySQL 資料庫,你還需要安裝 pymysqlmysqlclient

使用 SQLAlchemy 操作資料庫,可以統一多種資料庫的操作處理,如SQLITE、SqlServer、MySQL、PostgreSQL等。

使用 SQLAlchemy 創建與資料庫的連接:

# mysql 資料庫引擎
engine = create_engine(
    "mysql+pymysql://root:[email protected]:3306/WinFramework",
    pool_recycle=3600,
    # echo=True,
)

# Sqlite 資料庫引擎
# engine = create_engine("sqlite:///testdir//test.db")

# PostgreSQL 資料庫引擎
# engine = create_engine(
#     "postgresql+psycopg2://postgres:123456@localhost:5432/winframework",
#     # echo=True,
# )

# engine = create_engine(
#     "mssql+pymssql://sa:123456@localhost/WinFramework?tds_version=7.0",
#     # echo=True,
# )

由於對應的是ORM處理方式,因此和資料庫表關聯需要定義一個類對象,如下所示。

from sqlalchemy import create_engine, Column, Integer, String, DateTime, TIMESTAMP
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 創建一個基類,用於定義資料庫表的結構
Base = declarative_base()

# 定義一個 Customer資料庫表的模型
class Customer(Base):
    __tablename__ = "t_customer"

    id = Column(String, primary_key=True, comment="主鍵")
    name = Column(String, comment="姓名")
    age = Column(Integer, comment="年齡")
    creator = Column(String, comment="創建人")
    createtime = Column(DateTime, comment="創建時間")

CRUD的操作例子代碼如下所示。

# 創建一個會話
Session = sessionmaker(bind=engine)
session = Session()

id = str(guid.uuid4())
# create a new customer
customer = Customer(
    id=id,
    name="Alice",
    age=25,
    creator="admin",
    createtime=datetime.strptime("2021-01-01 12:00:00", "%Y-%m-%d %H:%M:%S"),
)

# add the customer to the session
session.add(customer)
# commit the changes to the database
session.commit()

# query the customer from the session
for item in session.scalars(select(Customer)):
    print(item.id, item.name, item.age, item.creator, item.createtime)


print("\r\nquery all customers")
customers = session.query(Customer).all()
for customer in customers:
    print(customer.name, customer.age)

print("\r\nquery all customers by condition:age > 20")
customers = session.query(Customer).filter(Customer.age > 20).limit(30).offset(1).all()
for customer in customers:
    print(customer.name, customer.age)

print("\r\nquery customer by id")
customer = session.query(Customer).filter(Customer.id == id).first()
if customer:
    print(customer.name, customer.age)

print("\r\n 複雜查詢")
customers = (
    session.query(Customer)
    .filter(
        or_(
            and_(Customer.age > 20, Customer.age < 30),
            Customer.name.in_(["Alice", "伍華聰"]),
        )
    )
    .all()
)
for customer in customers:
    print(customer.name, customer.age)


print("\r\nselect customer by id")
stmt = select(Customer).where(Customer.id == id)
result = session.execute(stmt)
print(result)


stmt = select(Customer).where(Customer.name == "伍華聰")
result = session.execute(stmt).scalar()
if result:
    print("Customer exists in the database")
    print(result.id, result.name, result.age)
else:
    print("Customer does not exist in the database")


print("\r\nselect customer In")
# query the customer from the session
stmt = select(Customer).where(Customer.name.in_(["Alice", "伍華聰"]))
for item in session.scalars(stmt):
    print(item.id, item.name, item.age, item.creator, item.createtime)


print('\r\ndelete all customers by name = "Alice"')
# delete the customer from the database
delete_stmt = delete(Customer).where(Customer.name == "Alice")
result = session.execute(delete_stmt)
print(str(result.rowcount) + " rows deleted")

session.commit()

# close the session
session.close()

 

由於篇幅限制,我們暫時介紹一些,其實就算是做後端WebAPI的處理,我們也需要瞭解很多不同的類庫,Python類庫非常豐富,而且同步、非同步又有不同的類庫差異,因此我們可以根據實際需要選用不同的類庫來實現我們的框架目的。

如對於FastAPI的數據驗證,我們一般引入 pydantic,可以對數據進行各種豐富的校驗處理,類似於強類型和各種規則的校驗。

class Person(BaseModel):
    name: str
    age: int

    @field_validator("age")
    def age_must_be_positive(cls, v):
        if v < 0:
            raise ValueError("Age must be a positive number")
        return v

如對於配置信息的處理,我們還可以引入 python-dotenv 和  pydantic_settings 來統一管理配置參數。

from pydantic_settings import BaseSettings, SettingsConfigDict

class Settings(BaseSettings):
    model_config = SettingsConfigDict(
        env_file=".env",  # 載入env文件
        extra="ignore",  # 載入env文件,如果沒有在Settings中定義屬性,也不拋出異常
        env_file_encoding="utf-8",
        env_prefix="",
        case_sensitive=False,
    )

    # Env Server
    SERVER_IP: str = "127.0.0.1"
    SERVER_PORT: int = 9000

    # Env Database
    DB_NAME: str = "winframework"
    DB_USER: str = "root"
    DB_PASSWORD: str = "123456"
    DB_HOST: str = "localhost"
    DB_PORT: int = 3306
    DB_URI: str = (
        f"mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
    )
.............
settings = Settings()

還有對於一些常規的文件格式,如json格式,txt格式的文件處理,以及PDF文件、Excel文件、圖片操作、聲音處理、二維碼處理等,都有不同的類庫提供輔助處理,我們可以從中擇優選擇即可。

Python的世界豐富多彩,讓我們一起探索並應用在實踐當中。

 

專註於代碼生成工具、.Net/.NetCore 框架架構及軟體開發,以及各種Vue.js的前端技術應用。著有Winform開發框架/混合式開發框架、微信開發框架、Bootstrap開發框架、ABP開發框架、SqlSugar開發框架等框架產品。
  轉載請註明出處:撰寫人:伍華聰  http://www.iqidi.com 
    

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 電梯導航也被稱為錨點導航,當點擊錨點元素時,頁面內相應標記的元素滾動到視口。而且頁面內元素滾動時相應錨點也會高亮。電梯導航一般把錨點放在左右兩側,類似電梯一樣。常見的電梯導航效果如下,比如一些官方文檔中: 之前可能會用 getBoundingClientRect() 判斷元素是否在視口中來實現類似效 ...
  • CSS中span元素垂直居中【解決span元素內基線對齊問題】 在樣式的書寫中,我們常常使用以下方式實現垂直居中,若span元素內例外,解決辦法看文章最後 <div class="parent"> <span class="child">text</span> </div> 1.flex佈局方式垂直 ...
  • 元組是不可變的序列類型,可以包含不同類型的元素。命名元組是元組的子類,它允許你為元組中的位置指定名稱,從而使代碼更加清晰,本文主要介紹了兩種元組的使用方法和應用場景。 ...
  • 醫療行業解決方案互聯網醫院架構患者門戶:提供患者信息查詢、掛號、繳費等基本服務。 預約掛號:允許患者線上預約掛號,減少現場排隊等候時間。 掛號查詢:患者可以查詢掛號狀態和相關信息。 院內導診:提供院內導航服務,幫助患者快速找到診室或部門。 檢驗報告查詢:患者可以線上查詢檢驗結果。 檢查報告查詢:提供 ...
  • 寫在前面 前面講的是面向對象中的繼承思想,下麵讓我們來看看多態這部分的內容! Java 面向對象概念概述 多態 概述:某一個事物在不同狀態下的多種狀態。 實現多態的三大前提: 要有繼承關係。 要有方法的重寫。 要有父類的引用指向子類對象。 訪問成員的特點: 成員變數:編譯時看左,運行時看左。 成員方 ...
  • 2018年6月,大三暑假進行時 上班之前,我提前跟家裡人打過招呼了。 我說我已經拿到了實習的offer,明天就過去上班,離家裡很近,月薪3500,我騎自行車過去就行。 家裡人就說挺好的,讓我騎個電瓶車,這樣會快點,囑咐我好好乾。 這是我第一次正式上班,我還覺得挺神奇的,沒想到我都要上班了。 大學以前 ...
  • 二維差分 為什麼我為OI淚目?因為我菜得離譜...... 引入 一維差分用來O(1)修改區間,配合上一維首碼和就是O(N)的查詢區間和。 差分為首碼和的逆運算。 二維差分同理。 接下來這道題就用二維差分來解決。 \(例題:地毯>>\) 地毯 題目描述 在 \(n\times n\) 的格子上有 \( ...
  • 本文詳細介紹瞭如何使用Java結合微信官方提供的API來實現模板消息的推送,該方法通過獲取access_token、組裝模板消息數據、發送請求四個步驟微信公眾號推送模版消息。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...