Python 自動化測試的配置層實現方式對標與落地

来源:https://www.cnblogs.com/jingdongkeji/archive/2023/06/16/17485858.html
-Advertisement-
Play Games

Python中什麼是配置文件,配置文件如何使用,有哪些支持的配置文件等內容,話不多說,讓我們一起看看吧~ ## 1 什麼是配置文件? 配置文件是用於配置電腦程式的參數和初始化設置的文件,如果沒有這些配置程式可能無法運行或是影響運行(運行速度、便捷性等),使用配置文件的好處在於,部分內容以及環境運行 ...


Python中什麼是配置文件,配置文件如何使用,有哪些支持的配置文件等內容,話不多說,讓我們一起看看吧~

1 什麼是配置文件?

配置文件是用於配置電腦程式的參數和初始化設置的文件,如果沒有這些配置程式可能無法運行或是影響運行(運行速度、便捷性等),使用配置文件的好處在於,部分內容以及環境運行時只需要修改配置文件的參數內容,而無需去代碼里查找並修改,提高便捷性、提高可維護性。

2 配置文件有哪幾種?

配置主要有四種形式:

  1. 第一種是YAML、JSON、XML、TOML、INI、Linux系統中的.bashrc一類,主要應用於軟體測試領域,在軟體測試的領域行業中,大多數公司採用最新的YAML形式來作為配置文件,例如資料庫地址、用例數據等內容的存放,而少部分公司仍然採用舊的INI配置形式
  2. 第二種是excel表格的形式,在excel表格中會有固定的title代表每個欄位列的含義,有多列,以此來進行配置,多用於游戲領域中,在游戲行業大量使用excel表格的形式,已經是一個常態了。
  3. 第三種是py文件,py文件對於一個純Python項目而言是非常方便的,它不需要做數據的讀取操作,只需要進行導入即可,不好的點在於,沒有YAML這一類靈活,YAML配置文件無論是Python、Java等語言,都是支持的,且數據類型支持很多,而py的配置文件,就只能用作於python,有一定的局限性。
  4. 第四種是txt文本格式,通過讀取的方式來識別到txt文本內容,通常而言是測開或者測試工程師製作的簡便工具,供給業務層面的測試人員進行使用,降低了YAML這種配置的理解難度,也避免了打開excel的緩慢,用輕量級txt來代替是一個不錯的選擇。

2.1 ini

python3自帶的ini
.ini 文件是Initialization File的縮寫,即初始化文件,是windows的系統配置文件所採用的存儲格式,統管windows的各項配置

2.1.1 ini文件的定義

.ini 文件通常由節(Section)、鍵(key)和值(value)組成。具體形式如下:

db.ini
[mysql]
host = 127.0.0.1
port = 3306
user = root
password = 123456
database = test

2.1.2 python讀取ini文件

使用python內置的 configparser 標準庫進行解析ini文件。
read() 讀取文件內容 items() 獲取指定節的所有鍵值對

# -*- coding: utf-8 -*-
'''
 * @Author       : wxy
 * @Date         : 2022-08-24 11:11:06
 * @Description  : 讀取ini文件
 * @LastEditTime : 2022-08-24 11:11:06
'''
from configparser import ConfigParser
from pprint import pprint
import pymysql


# ini文件路徑
ini_file = './db.ini'
# 讀取ini的節(Section)
db_name = 'mysql'

# configparser實例化
text = ConfigParser()

# 讀取ini文件內容
text.read(ini_file)

# text.items()返回list,元素為tuple,元組格式為 key,value
db_tuple = text.items(db_name)
print(db_tuple)

# 將元組轉換成dict
db_dict = dict(text.items(db_name))
print(db_dict)

2.2 json

JSON(JavaScript Object Notation,) 是一種輕量級的數據交換格式。

2.2.1 json文件的定義

簡單的json示例

  {
        "mysql": {
            "host": "127.0.0.1",
            "port": 3306,
            "user": "root",
            "password": "123456",
            "database": "test"
        }
    }

2.2.2 python讀取json文件

load() 從json文件中讀取json格式數據
loads() 將字元串類型數據轉化為json格式數據
dump() 將json格式數據保存到文件
dumps() 將json格式數據保存為字元串類型

# -*- coding: utf-8 -*-
'''
 * @Author       : wxy
 * @Date         : 2022-8-24 11:39:44
 * @Description  : 讀取json文件
 * @LastEditTime : 2022-8-24 11:39:44
'''

import json
from pprint import pprint
import pymysql

json_file = "./db.json"
db_name = "mysql"
web = "web"

with open(json_file) as f:
    cfg = json.load(f)[db_name]
    print(cfg)

with open(json_file) as f:
    cfg = json.load(f)[web]
    print(cfg['user'])

2.3 toml

TOML 是 Github 聯合創始人 Tom Preston-Werner 所提出的一種配置文件格式,是一種旨在成為一個小規模、易於使用的語義化的配置文件格式,它被設計為可以無二義性的轉換為一個哈希表。

2.3.1 定義toml文件

語法:
TOML的語法廣泛地由key = “value”、[節名]、#註釋構成。
支持以下數據類型:字元串、整形、浮點型、布爾型、日期時間、數組和圖表。

 # db.toml
[mysql]
    [mysql.config]
    host     = "127.0.0.1"
    user     = "root"
    port     = 3306
    password = "123456"
    database = "test"

    [mysql.parameters]
    pool_size = 5
    charset   = "utf8"

    [mysql.fields]
    course_cols = ["cno", "cname", "ccredit", "cdept"]

2.3.2 python讀取toml文件

使用外部庫 toml 解析toml文件

# -*- coding: utf-8 -*-
'''
 * @Description  : 讀取toml文件
 * @LastEditTime : 2022-08-14 11:31:07
'''
import toml
from pprint import pprint
import pymysql

toml_file = "./db.toml"

cfg = toml.load(toml_file)['mysql']

pprint(cfg)

2.4 yaml

YAML(YAML Ain’t a Markup Language”, YAML不是一種標記語言) 格式是目前較為流行的一種配置文件,它早在 2001 由一個名為 Clark Evans 的人提出;同時它也是目前被廣泛使用的配置文件類型。

2.4.1 定義yaml文件

# db.yaml
mysql:
  config:
    host: "127.0.0.1"
    port: 3306
    user: "root"
    password: ""
    database: "stu_sys"

  parameters:
    pool_size: 5
    charset: "utf8"

  fileds:
    course_cols:
      - cno
      - cname
      - ccredit
      - cdept

2.4.2 python讀取yaml文件

使用外部庫 pyyaml 解析toml文件。

# -*- coding: utf-8 -*-
'''
 * @Author       : wxy
 * @Date         : 2022-8-24 11:34:37
 * @Description  : 讀取yaml文件
 * @LastEditTime : 2022-8-24 11:34:37
'''
import yaml
from pprint import pprint
import pymysql

yaml_file = "./db.yaml"

with open(yaml_file, 'r') as f:
    cfg = yaml.safe_load(f)

print(cfg)

2.5 Python xlrd 讀取 操作Excel

python Excel庫對比

本次主要關註python xlrd讀取 操作excel

2.5.1 xlrd模塊介紹

1.什麼是xlrd模塊?
python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。

2.為什麼使用xlrd模塊?
在UI自動化或者介面自動化中數據維護是一個核心,所以此模塊非常實用。
xlrd模塊可以用於讀取Excel的數據,速度非常快,推薦使用!
官方文檔:https://xlrd.readthedocs.io/en/latest/

2.5.2 安裝xlrd模塊

到python官網下載http://pypi.python.org/pypi/xlrd 模塊安裝,前提是已經安裝了python 環境。
或者在cmd視窗 pip install xlrd
最新的xlrd不支持Excel xlsx文件的讀取。所以需要安裝舊版本 pip install xlrd==1.2.0

2.5.3 使用介紹

1.常用單元格的數據類型

  • empty(空的)
  • string(text)
  • number
  • date
  • boolean
  • error
  • blank(空白表格)

2.導入模塊

import xlrd

3.打開Excel文件讀取數據

data = xlrd.open_workbook(filename)#文件名以及路徑,如果路徑或者文件名有中文給前面加一個 r

4.常用的函數
excel中最重要的方法就是book和sheet的操作

  • 獲取book(excel文件)中一個工作表
table = data.sheets()[0]             #通過索引順序獲取
table = data.sheet_by_index(sheet_indx)  #通過索引順序獲取
table = data.sheet_by_name(sheet_name)  #通過名稱獲取

# 以上三個函數都會返回一個xlrd.sheet.Sheet()對象

names = data.sheet_names()        #返回book中所有工作表的名字
data.sheet_loaded(sheet_name or indx)    # 檢查某個sheet是否導入完畢

  • 行的操作
nrows = table.nrows
    # 獲取該sheet中的行數,註,這裡table.nrows後面不帶().
table.row(rowx)
    # 返回由該行中所有的單元格對象組成的列表,這與tabel.raw()方法並沒有區別。
table.row_slice(rowx)
    # 返回由該行中所有的單元格對象組成的列表
table.row_types(rowx, start_colx=0, end_colx=None)
    # 返回由該行中所有單元格的數據類型組成的列表;    
    # 返回值為邏輯值列表,若類型為empy則為0,否則為1
table.row_values(rowx, start_colx=0, end_colx=None)
    # 返回由該行中所有單元格的數據組成的列表
table.row_len(rowx)
    # 返回該行的有效單元格長度,即這一行有多少個數據

  • 列(colnum)的操作
ncols = table.ncols
    # 獲取列表的有效列數
table.col(colx, start_rowx=0, end_rowx=None)
    # 返回由該列中所有的單元格對象組成的列表
table.col_slice(colx, start_rowx=0, end_rowx=None)
    # 返回由該列中所有的單元格對象組成的列表
table.col_types(colx, start_rowx=0, end_rowx=None)
    # 返回由該列中所有單元格的數據類型組成的列表
table.col_values(colx, start_rowx=0, end_rowx=None)
    # 返回由該列中所有單元格的數據組成的列表

  • 單元格的操作
table.cell(rowx,colx)
    # 返回單元格對象
table.cell_type(rowx,colx)
    # 返回對應位置單元格中的數據類型
table.cell_value(rowx,colx)
    # 返回對應位置單元格中的數據

2.5.4 實戰訓練

使用xlrd模塊進行讀取:

import xlrd

xlsx = xlrd.open_workbook('./3_1 xlrd 讀取 操作練習.xlsx')

# 通過sheet名查找:xlsx.sheet_by_name("sheet1")
# 通過索引查找:xlsx.sheet_by_index(3)
table = xlsx.sheet_by_index(0)

# 獲取單個表格值 (2,1)表示獲取第3行第2列單元格的值
value = table.cell_value(2, 1)
print("第3行2列值為",value)

# 獲取表格行數
nrows = table.nrows
print("表格一共有",nrows,"行")

# 獲取第4列所有值(列表生成式)
name_list = [str(table.cell_value(i, 3)) for i in range(1, nrows)]
print("第4列所有的值:",name_list)

2.6 Python xlwt 寫入 操作Excel(僅限xls格式!)

xlwt可以用於寫入新的Excel表格或者在原表格基礎上進行修改,速度也很快,推薦使用!
官方文檔:https://xlwt.readthedocs.io/en/latest/

2.6.1 pip安裝xlwt

pip install xlwt

2.6.2 使用xlwt創建新表格並寫入

編寫xlwt新表格寫入程式:

# 3.2.2 使用xlwt創建新表格並寫入
def fun3_2_2():
    # 創建新的workbook(其實就是創建新的excel)
    workbook = xlwt.Workbook(encoding= 'ascii')

    # 創建新的sheet表
    worksheet = workbook.add_sheet("My new Sheet")

    # 往表格寫入內容
    worksheet.write(0,0, "內容1")
    worksheet.write(2,1, "內容2")

    # 保存
    workbook.save("新創建的表格.xls")

2.6.3 xlwt 設置字體格式

程式示例:

# 3.2.3 xlwt設置字體格式
def fun3_2_3():
    # 創建新的workbook(其實就是創建新的excel)
    workbook = xlwt.Workbook(encoding= 'ascii')

    # 創建新的sheet表
    worksheet = workbook.add_sheet("My new Sheet")

    # 初始化樣式
    style = xlwt.XFStyle()

    # 創建字體樣式
    font = xlwt.Font()
    font.name = 'Times New Roman'   #字體
    font.bold = True                #加粗
    font.underline = True           #下劃線
    font.italic = True              #斜體

    # 設置樣式
    style.font = font
    # 往表格寫入內容
    worksheet.write(0,0, "內容1")
    worksheet.write(2,1, "內容2",style)
    # 保存
    workbook.save("新創建的表格.xls")
    # 設置列寬
    worksheet.col(0).width = 256*20
     # 設置行高
    style = xlwt.easyxf('font:height 360;')  # 18pt,類型小初的字型大小
    row = worksheet.row(0)
    row.set_style(style)
     # 合併 第1行到第2行 的 第0列到第3列
    worksheet.write_merge(1, 2, 0, 3, 'Merge Test')
      # 設置邊框樣式
    borders = xlwt.Borders()  # Create Borders
    borders.left = xlwt.Borders.DASHED
    borders.right = xlwt.Borders.DASHED
    borders.top = xlwt.Borders.DASHED
    borders.bottom = xlwt.Borders.DASHED
    borders.left_colour = 0x40
    borders.right_colour = 0x40
    borders.top_colour = 0x40
  borders.bottom_colour = 0x40

2.7 Python xlutils 修改 操作Excel

xlutils可用於拷貝原excel或者在原excel基礎上進行修改,並保存;
官方文檔:https://xlutils.readthedocs.io/en/latest/

2.7.1 pip安裝xlutils

pip install xlutils

2.7.2 xlutils拷貝源文件(需配合xlrd使用)

程式示例:

# 3.3.2 拷貝源文件
def fun3_3_2():
    workbook = xlrd.open_workbook('3_3 xlutils 修改操作練習.xlsx')  # 打開工作簿
    new_workbook = copy(workbook)  # 將xlrd對象拷貝轉化為xlwt對象
    new_workbook.save("new_test.xls")  # 保存工作簿

2.7.3 xlutils 讀取 寫入 (也就是修改)Excel 表格信息

程式示例:

# 3.3.3 xlutils讀取 寫入 Excel 表格信息
def fun3_3_3():
    # file_path:文件路徑,包含文件的全名稱
    # formatting_info=True:保留Excel的原格式(使用與xlsx文件)
    workbook = xlrd.open_workbook('3_3 xlutils 修改操作練習.xlsx')

    new_workbook = copy(workbook)  # 將xlrd對象拷貝轉化為xlwt對象

    # 讀取表格信息
    sheet = workbook.sheet_by_index(0)
    col2 = sheet.col_values(1)  # 取出第二列
    cel_value = sheet.cell_value(1, 1)
    print(col2)
    print(cel_value)

    # 寫入表格信息
    write_save = new_workbook.get_sheet(0)
    write_save.write(0, 0, "xlutils寫入!")

    new_workbook.save("new_test.xls")  # 保存工作簿

2.8 Python xlwings 讀取 寫入 修改 操作Excel

2.8.1 pip安裝xlwings

pip install xlwings

2.8.2 基本操作

引入庫
import xlwings as xw
(1)打開已存在的Excel文檔

# 導入xlwings模塊
import xlwings as xw

# 打開Excel程式,預設設置:程式可見,只打開不新建工作薄,屏幕更新關閉
app=xw.App(visible=True,add_book=False)
app.display_alerts=False
app.screen_updating=False

# 文件位置:filepath,打開test文檔,然後保存,關閉,結束程式
filepath=r'g:\Python Scripts\test.xlsx'
wb=app.books.open(filepath)
wb.save()
wb.close()
app.quit()

(2)新建Excel文檔,命名為test.xlsx,並保存在D盤

import xlwings as xw

app=xw.App(visible=True,add_book=False)
wb=app.books.add()
wb.save(r'd:\test.xlsx')
wb.close()
app.quit()

(3) xlwings 讀寫 Excel
新建test.xlsx,在sheet1的第一個單元格輸入 “人生” ,然後保存關閉,退出Excel程式。

def fun3_4_4():
    # 新建Excle 預設設置:程式可見,只打開不新建工作薄,屏幕更新關閉
    app = xw.App(visible=True, add_book=False)
    app.display_alerts = False
    app.screen_updating = False

    # 打開已存在的Excel文件
    wb=app.books.open('./3_4 xlwings 修改操作練習.xlsx')

    # 獲取sheet對象
    print(wb.sheets)
    sheet = wb.sheets[0]
    # sheet = wb.sheets["sheet1"]

    # 讀取Excel信息
    cellB1_value = sheet.range('B1').value
    print("單元格B1內容為:",cellB1_value)

    # 清除單元格內容和格式
    sheet.range('A1').clear()

    # 寫入單元格
    sheet.range('A1').value = "xlwings寫入"

    # 保存工作簿
    wb.save('example_3.xlsx')

    # 退出工作簿
    wb.close()

    # 退出Excel
    app.quit()l

2.9 Python openpyxl 讀取 寫入 修改 操作Excel

在openpyxl中,主要用到三個概念:Workbooks,Sheets,Cells。
Workbook就是一個excel工作表;
Sheet是工作表中的一張表頁;
Cell就是簡單的一個格。
openpyxl就是圍繞著這三個概念進行的,不管讀寫都是“三板斧”:打開Workbook,定位Sheet,操作Cell。
官方文檔:https://openpyxl.readthedocs.io/en/stable/
1.安裝
pip install openpyxl
2.打開文件
(1)新建

from  openpyxl import  Workbook 
# 實例化
wb = Workbook()
# 激活 worksheet
ws = wb.active

(2)打開已有

from openpyxl  import load_workbook

wb = load_workbook('文件名稱.xlsx')

3.寫入數據

# 方式一:數據可以直接分配到單元格中(可以輸入公式)
ws['A1'] = 42
# 方式二:可以附加行,從第一列開始附加(從最下方空白處,最左開始)(可以輸入多行)
ws.append([1, 2, 3])
# 方式三:Python 類型會被自動轉換
ws['A3'] = datetime.datetime.now().strftime("%Y-%m-%d")

4.創建表(sheet)

# 方式一:插入到最後(default)
ws1 = wb.create_sheet("Mysheet") 
# 方式二:插入到最開始的位置
ws2 = wb.create_sheet("Mysheet", 0)

5.選擇表(sheet)

# sheet 名稱可以作為 key 進行索引
>>> ws3 = wb["New Title"]
>>> ws4 = wb.get_sheet_by_name("New Title")
>>> ws is ws3 is ws4
True

6.查看表名(sheet)

# 顯示所有表名
>>> print(wb.sheetnames)
['Sheet2', 'New Title',  'Sheet1']
# 遍歷所有表
>>> for sheet in  wb:
...     print(sheet.title)

7.保存數據

wb.save('文件名稱.xlsx')

8.其它
(1)改變sheet標簽按鈕顏色

ws.sheet_properties.tabColor = "1072BA" # 色值為RGB16進位值

(2)獲取最大行,最大列

# 獲得最大列和最大行
print(sheet.max_row)
print(sheet.max_column)

(3)獲取每一行每一列
sheet.rows為生成器, 裡面是每一行的數據,每一行又由一個tuple包裹。
sheet.columns類似,不過裡面是每個tuple是每一列的單元格。

# 因為按行,所以返回A1, B1, C1這樣的順序
for row in sheet.rows:
    for cell in row:
        print(cell.value)

# A1, A2, A3這樣的順序
for column in sheet.columns:
    for cell in column:
        print(cell.value)

(4)根據數字得到字母,根據字母得到數字

from openpyxl.utils import get_column_letter, column_index_from_string

# 根據列的數字返回字母
print(get_column_letter(2))  # B
# 根據字母返回列的數字
print(column_index_from_string('D'))  # 4

(5)刪除工作表

# 方式一
wb.remove(sheet)
# 方式二
del wb[sheet]

項目實操—-UI自動化中實踐項目
需求:業務寫入揀貨容器,使用一次不可使用第二次,且腳本中固定讀取固定位置

import openpyxl
from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE
from openpyxl.utils import get_column_letter, column_index_from_string

# 向sheetobj中的columnname列從start_row開始寫入listdata
def insert_listdata_to_column(sheetobj,listdata,column_name,start_row=3):
    # 根據列名獲取列索引
    colindex = column_index_from_string(column_name)
    print('colindex為{}'.format(colindex))
    # 迴圈從開始行數到數據寫入後最後一行
    for rowindex in range(start_row, start_row + len(listdata)):
        # 寫入list數值根據索引取值,從0開始
        val = listdata[rowindex - start_row]
        print('val{}'.format(val))
        print('rowindex{}'.format(rowindex))
        try:
            sheetobj.cell(row = rowindex,column = colindex,value = val)
        except:
            # 出現非法字元時,可以將字元串的非法字元替換掉
            val = ILLEGAL_CHARACTERS_RE.sub(r'',val)
            sheetobj.cell(row = rowindex,column = colindex,value = val)
    delrow = start_row + len(listdata)
    print('*********{}'.format(delrow))
    sheetobj.delete_rows(delrow)


def del_excel():

    xlsx = xlrd.open_workbook(r'D:\pytest\inbound_data.xlsx')
    table =xlsx.sheet_by_index(2)
    # 獲取第2列所有值
    cel_value =table.col_values(1)
    cel_value=cel_value[3::]

    wb = openpyxl.load_workbook(r'D:\pytest\inbound_data.xlsx')
    sheet = wb["B2B出庫"]
    print(sheet)
    insert_listdata_to_column(sheet,cel_value,'B',3)
    wb.save(r'D:\pytest\inbound_data.xlsx')

del_excel()

3 總結

在本文中,簡單介紹了幾種配置文件和使用。根據不同的用例,複雜的工具/框架並不總是比簡單的軟體包更好。但無論選擇哪一種,都應始終考慮可讀性,可維護性以及如何儘早地發現錯誤。事實上,可以說配置文件只是另一種類型的代碼。可以根據自己的項目框架來靈活運用啦~

作者:京東物流 王小雲

來源:京東雲開發者社區


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

-Advertisement-
Play Games
更多相關文章
  • 某日二師兄參加XXX科技公司的C++工程師開發崗位第16面: > 面試官:什麼是左值,什麼是右值? > > 二師兄:簡單來說,左值就是可以使用`&`符號取地址的值,而右值一般不可以使用`&`符號取地址。 ```c++ int a = 42; //a是左值,可以&a int* p = &a; int* ...
  • ## 一、初衷: 因為想要進行各種技術點的訓練和學習,開發中需要使用各種各樣的開源技術框架,苦於沒有基礎服務支撐,所以想要建立一個專門的服務支撐系統,每年購買的雲伺服器配置底下,安裝一個Jenkins都跑不起來,所以自己購買了一個物理主機,記憶體加裝到`32G`,搭建自己的私人技術知識星球。 搭建一套 ...
  • - 方法和函數的作用幾乎是一樣的,但是函數在使用的過程中更加靈活和多樣化 - scala中函數是頭等公民 . 可以作為方法的返回值和參數使用 - scala是一個集面向對象和麵向函數於一身的編程語言 , 靈活的函數是函數式編程的一種體現 - 函數的使用使代碼更加簡潔和靈活 # 函數 scala中一種 ...
  • > 最近項目中使用到了 lua,因為之前沒怎麼接觸過,特此記錄下自己在學習過程中疑惑的地方。 在使用`lua` 進行編碼的過程中,我們經常會使用到`.`和`:`,但是對於剛開始接觸`lua`的我來說,對這兩者的使用還是感到時常感到疑惑,接下來我們一起看看幾個例子,來感受兩者的區別。如果發現文中錯誤的 ...
  • # Go Redis 管道和事務之 go-redis ## [Go Redis 管道和事務官方文檔介紹](https://redis.uptrace.dev/zh/guide/go-redis-pipelines.html) Redis pipelines(管道) 允許一次性發送多個命令來提高性能, ...
  • 本篇博客的內容為RabbitMQ在開發過程中的快速上手使用,側重於代碼部分,幾乎沒有相關概念的介紹,相關概念請參考以下csdn博客,兩篇都是我找的精華帖,供大家學習。本篇博客也持續更新~~~ ...
  • 上篇文章講解了requests模塊的基礎使用,其中有get、put、post等多種請求方式,使用data、json等格式做為請求參數,在請求體中添加請求頭部信息的常見信息,如:headers、cookies,以及對請求響應的處理方法。接下來講解一下requests的高級用法。 ...
  • ## 前言 在C語言中,指針是一項重要的概念,它允許我們直接訪問和操作記憶體地址。 可以說,指針是C語言一大優勢。用得好,你寫程式如同趙子龍百萬軍中取上將首級;用得不好,則各種問題層出不窮,有種雙拳難敵四手的感覺。 本文將介紹指針的基礎知識,包括指針的定義、初始化、訪問和運算。 ## 一、人物簡介 - ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...