Python系列5之模塊

来源:http://www.cnblogs.com/huwentao/archive/2017/06/21/7040280.html
-Advertisement-
Play Games

模塊 1. 模塊的分類 模塊,又稱構件,是能夠單獨命名並獨立地完成一定功能的程式語句的集合(即程式代碼和數據結構的集合體)。 (1)自定義模塊 自己定義的一些可以獨立完成某個功能的一段程式語句,可以是一個文件,也可以是一個目錄。 (2)第三方模塊 是由其他人寫的一些程式語句,我們可以用它來實現自己的 ...


模塊

1. 模塊的分類

  模塊,又稱構件,是能夠單獨命名並獨立地完成一定功能的程式語句的集合(即程式代碼和數據結構的集合體)。

  (1)自定義模塊

    自己定義的一些可以獨立完成某個功能的一段程式語句,可以是一個文件,也可以是一個目錄。

  (2)第三方模塊

    是由其他人寫的一些程式語句,我們可以用它來實現自己的功能。

  (3)內置模塊

    是由python自己帶的一些實現某種特定功能的組件。

2. 模塊的導入

  (1)python預設的模塊尋找路徑

    當開始導入一個模快的時候,python預設的會先找到第一個路徑去看一下是否有這個模塊,如果沒有接著再到下一個路徑中去找,知道最後一個路徑。

    從這個路徑中我們可以知道,只要我們的模塊在這個路徑中,就可以被導入。

C:\Users\zhou\PycharmProjects\fullstack2\6_19\test
C:\python_software\python3.5.2\python35.zip
C:\python_software\python3.5.2\DLLs
C:\python_software\python3.5.2\lib
C:\python_software\python3.5.2
C:\python_software\python3.5.2\lib\site-packages
python預設尋找路徑

  (2)自定義模塊的導入

    <1>. 自定義模塊在python的預設路徑中

      第一種方式,導入文件,然後文件去調用函數

      下圖左邊的為目錄樹,lib,index和module1在同一目錄下,module2,module3在lib目錄下,右邊的為index文件導入模塊的方法。

      到操作某個文件的時候, 預設的就會把此文件的路徑加入預設路徑中。

        *  module1可以直接導入,因為與index在同一文件夾下

        * module2和module3要通過以下方式進行導入,因為他們不在一個目錄中,要首先找到與index同級的目錄才可以

      

      第二種方式,導入函數

      直接調用函數

      lib.module2:預設調用函數時,目錄之間用點去分割

      

    <2>. 自定義模塊不在python的預設路徑中

       我們需要把自定義模塊的路徑加入到python預設的路徑中,然後就可以像上面的的方法一樣進行調用了。    

# sys模塊在後面會有說明,此處的append是把D:路徑加入
# 然後D盤的所有模塊就可以導入了
import sys
sys.path.append('D:')
for i in sys.path:
    print(i)

  (3)內置模塊和第三方模塊的導入

    內置模塊的和第三方模塊的導入很簡單,直接用import 模塊名稱  就可以了,因為內置模塊和自定義模塊的的路徑其實就是在python的預設尋找路徑中,所以可以直接用import導入。

    第三方模塊的安裝:

    <1>. 安裝管理工具

      pip  install  requests

    <2>. 下載源碼安裝

一. os

  1. os模塊的作用

    os(operating system)操作系統的意思,所以,從名字就可以看出來,此模塊主要是和系統級別相關的一些功能。

  2. os模塊的方法

 1 os.join(路徑1, 路徑2)                  把這兩個路徑合成一個路徑
 2     # 例題:
 3         a = os.path.join('zhou\\PycharmProjects\\fullstack2\\6_1\\6_10','test1.py')
 4         print(a)
 5     # 結果:
 6         zhou\PycharmProjects\fullstack2\6_1\6_10\test1.py
 7         
 8 os.state(路徑):                       顯示當前路徑的一些狀態信息 如: 大小,uid,gid,修改時間,創建時間
 9 os.getcwd():                         不需要參數,就是顯示出當前文件所在目錄
10 os.mkdir(路徑, 許可權)                   windows下創建目錄,註意是雙斜杠
11 
12 os.rmdir()                           windows下刪除目錄, 如果目錄不為空,則不能刪除
13     # 例題:  
14         os.mkdir('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1', 640)
15         os.rmdir('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1')
16         
17 os.makedir()                         遞歸創建目錄
18 os.removedir()                       遞歸刪除目錄
19     # 例題: 6_1目錄不存在,遞歸創建,然後remove遞歸刪除
20         os.makedirs('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10', 640)
21         os.removedirs('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10')
22         
23 os.listdir(路徑):                     列出當前目錄下的所有內容,相當於list
24 os.chdir(路徑)                        改變當前路徑,相當於cd
25     # 例題:
26         os.chdir('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10')
27         print(os.getcwd())
28         
29 os.curdir                            返回到當前路徑
30 os.pardir                            返回到父目錄
31     # 例題:
32         print(os.curdir)----> .
33         print(os.pardir)----> ..
34         
35 os.rename(舊文件的名字,新文件的名字)      重命名
36     # 例題:
37     os.rename('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10\\test1','C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10\\test1.py')
38 
39 os.name                              當前操作系統的名稱 windows下為"nt", linux下為"posix"
40 os.pathsep                           用來分割路徑的操作符  ";"
41 os.linesep                           操作系統的換行符,windows下為"\t\n", linux下為"\n"
42 os.sep                               操作系統特定的路徑分隔符,windows下為"\", linux下為"/"
43 os.environ                           當前操作系統的環境變數
44     # 例題:
45         print(os.sep)   
46         print(os.linesep) 在win下顯示為兩行空格(此處感覺有點奇怪,按理說應該是一行才對)
47         print(os.pathsep)
48         print(os.name)
49         print(os.environ)
50         
51 os.basename()                        得到路徑的基名
52 os.dirname()                         得到路徑的父目錄
53 os.path.exists()                     判斷路徑是否存在
54 os.path.split()                      把路徑的基名和父目錄分割開來
55 os.path.abspath()                    得到他的絕對路徑
56 os.path.isabs()                      判斷是不是絕對路徑,如果是返回True,如果不是返回Flase
57     # 例題:
58         a = os.path.dirname('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10')
59         b = os.path.basename('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10')
60         c = os.path.exists('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10')
61         d = os.path.split('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10')
62         e = os.path.abspath("test.py")
63 
64         print(a)
65         print(b)
66         print(c)
67         print(d)
68         print(e)
69     # 結果:
70         C:\Users\zhou\PycharmProjects\fullstack2\6_1
71         6_10
72         True
73         ('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1', '6_10')
74         C:\Users\zhou\PycharmProjects\fullstack2\6_19\test.py
75                 
76 os.path.isfile()                     判斷路徑是不是一個文件
77 os.path.isdir()                      判斷路徑是不是一個目錄
78 os.path.getatime()                   最後存取時間
79 os.path.getctime()                   最後創建時間
80 os.path.getmtime()                   最後修改時間
81     # 例題:
82         f = os.path.isfile('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10')
83         g = os.path.isdir('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10')
84         h = os.path.getatime('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10')
85         i = os.path.getctime('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10')
86         j = os.path.getmtime('C:\\Users\\zhou\\PycharmProjects\\fullstack2\\6_1\\6_10')
87         print(f)
88         print(g)
89         print(h)
90         print(i)
91         print(j)
92     # 結果:
93         False
94         True
95         1497872812.4467745
96         1497864841.8512993
97         1497872812.4467745 
os的模塊使用方法和事例

二. sys

  1. sys模塊的作用

    sys(system)系統的意思,這個模塊可供訪問由解釋器使用或維護的變數和與解釋器進行交互的函數。

  2. sys模塊的使用方法

sys.argv     傳入文件的參數
sys.path     預設的模塊查詢目錄
sys.version  Python的版本
sys.exit()   退出程式
sys.platform   使用的平臺----->win32
sys.stdout.write()    列印不換行

三. json

  1. json模塊的作用

    當我們從網上的到一個網頁的時候,一般會得到三種數據(從網站上得到的數據最終都是字元串)

      <1>. html  html我們都知道是一種標記語言,具有固定的格式。

      <2>. json  json不是一種語言,但是它具有固定的格式,就是類似字典,元組,列表的格式的字元串,我們可以功過json讓其進行相互轉換

      <3>. xml     xml是另一種語言,類似於html,也具備固定的格式,有tag,attitude,text等。可以通過xml進行解析

  2. json模塊的使用方法

 1 json.loads()        將字元串格式的字典和元組轉換成對應的字典或者元組
 2     # 例題:
 3         import json
 4         s1 = '''{
 5             "name":"hu",
 6             "age":1,
 7             "gender":"man"
 8         }'''
 9         a = json.loads(s1)
10         print(a, type(a))
11     # 結果:
12         {'name': 'hu', 'age': 1, 'gender': 'man'} <class 'dict'>
13     # 註意s1中不能出現單引號
14 
15 json.dumps()        將字典或者列表轉換成字元串
16         
17     # 例題:
18         import json
19         s2 = {'age': 1, 'gender': 'man', 'name': 'hu'}
20         a = json.dumps(s2)
21         print(a, type(a))    
22     # 結果:   
23         {"gender": "man", "age": 1, "name": "hu"} <class 'str'>
24         
25 
26 json.dump()     寫入中文會是亂碼,暫時沒有找到轉換字元的地方
27     # 例題:
28         s2 = {
29         "name":'zhou',
30         "age":12,
31         "gender":"woman"
32         }
33         import json
34         json.dump(s2, open('test1', 'a', encoding='utf-8'))
35     # 結果: 追加到test1的內容
36             {
37         "name":"hu",
38         "age":1,
39         "gender":"man"
40         }{"age": 12, "name": "zhou", "gender": "woman"}
41         
42         
43         
44 json.load()         將文件中的字元串轉換成字典類型
45     # 例題: test1 文件中的內容就是下麵的字典
46         import json
47         a = json.load(open('test1', 'r', encoding='utf-8'))
48         print(a, type(a))
49     # 結果:
50         {'name': 'hu', 'gender': 'man', 'age': 1} <class 'dict'>   

四. re

  1. re模塊的作用

    re是正則表達式,主要用來對字元串的匹配

  2. re模塊的使用方法

    re.match     只在開頭進行匹配     

    re.search    只匹配第一次匹配到的

    re.findall     匹配所有匹配到的

# 由結果我們可知,
# 因為開頭沒有hu,所以a的返回值為None
# 因為search只會匹配第一個,所以只顯示了一次hu
# 因為findall會匹配所有的,所以顯示了兩次

import re
s1 = "hello, hu, hhh, hu"
a = re.match("hu", s1)
b = re.search("hu", s1).group()
c = re.findall("hu", s1)
print(a)
print(b)
print(c)
結果:

None
hu
['hu', 'hu']
三種方法的解析

    分組的概念,如果沒有分組,預設的groups和groupdict都是空

 

    group    預設所有的都會放入group中

    groups    只有分組的才會放在groups

    groupdict       只有是字典的才會放在groupdict

# ?P<名稱>是字典的寫入形式
#  從結果我們可以看出來,groups放的是他的組的信息,和字典沒有關係
# 而groupdict放的是字典,和groups也沒有關係
import re
s1 = "huello, hu, hhh, hu"
a1 = re.match("(?P<name>h)(u)", s1).group()
a2 = re.match("(?P<name>h)(u)", s1).groups()
a3 = re.match("(?P<name>h)(u)", s1).groupdict()
print(a1)
print(a2)
print(a3)
結果:
hu
('h', 'u')
{'name': 'h'}
match方法
# 因為他找的只是第一個,所以和match沒有太大的區別,
# 他們的結果也是一樣的

import re
s1 = "huello, hu, hhh, hu"
a1 = re.search("(?P<name>h)(u)", s1).group()
a2 = re.search("(?P<name>h)(u)", s1).groups()
a3 = re.search("(?P<name>h)(u)", s1).groupdict()
print(a1)
print(a2)
print(a3)
search方法
# findall這個方法本深並沒有什麼分組不分組的,只是如果有小括弧,他只會顯示小括弧裡面的內容,並把他們組合成列表

import re
s1 = "huello, hu, hhh, hu"
a1 = re.findall("(h)(u)", s1)
print(a1)
結果:
[('h', 'u'), ('h', 'u'), ('h', 'u')]
findall方法  
import re
s1 = "huello, hu, hhh, hu"
# 只要遇到“hu”字元串,就會進行切分,並且刪除此字元串
a1 = re.split('hu', s1)

# 遇到第一個“hu”字元串,進行切分,並且刪除此字元串,把字元串分割成兩塊
a2 = re.split('hu', s1, 1)

## 遇到第一個“hu”字元串,進行切分,不會刪除此字元串,把字元串分割成三塊
a3 = re.split('(hu)', s1, 1)
print(a1)
print(a2)
print(a3)


結果:
['', 'ello, ', ', hhh, ', '']
['', 'ello, hu, hhh, hu']
['', 'hu', 'ello, hu, hhh, hu']
split方法

五. random

  1. random模塊的作用

    random就是為了生成一個隨機數

  2. random的應用

    <1>. 驗證碼的生成

 1 # 導入random模塊
 2 # 調用random.randrange()模塊生成一個隨機數
 3 # 拼接字元串
 4 
 5 import random
 6 yanzhengma = str()
 7 for i in range(6):
 8     ran = random.randrange(0, 4)
 9     if ran == 0 or ran == 2:
10         yanzhengma += chr(random.randrange(65, 91))
11     else:
12         yanzhengma += str(random.randrange(0, 10))
13 print(yanzhengma)

六. hashlib

  1. hashlib模塊的作用

    hashlib主要用來給字元串進行加密。加密的方法有md5, sha1,sha224, sha256,sha384,sha512

    md5演算法是不能反解的

  2. hashlib模塊的應用

    <1>. md5的應用  

    加鹽是什麼呢?

      雖然說md5加密不能反解,但是它只要是同一個密碼,用md5生成之後還是一樣的,因此,這樣的密碼還是不安全的,因此我們需要在原來的密碼基礎上在加上一段只有自己知道的字元,然後生成密碼,這樣就算是破解了也不會知道自己的密碼(這就是我們所說的加鹽)

 1 import hashlib
 2 # 創建對象   加鹽
 3 hash = hashlib.md5(bytes('lljeg', encoding='utf-8'))
 4 # 生成密碼
 5 hash.update(bytes('hu', encoding='utf-8'))
 6 # 顯示密碼
 7 print(hash.hexdigest())
 8 
 9 #18bd9197cb1d833bc352f47535c00320
10 #498e327141378fa4d31e5b4c6543db22

七. getpass  

  1. getpass 模塊的作用

    getpass主要用來在輸入密碼的時候不顯示,防止密碼泄露的。

  2. getpass的應用

    <1>. getpass密碼隱藏輸入  

# 導入getpass模塊,然後使用getpass方法,就可以使密碼隱藏輸入

# 註意的是有時候getpass模塊在pycharm是沒有辦法使用的,只能在終端使用

>>> import getpass
>>> a = getpass.getpass("Password: ")
Password:
>>> print(a)
legj
>>>

八. zipfile 

  1. zipfile模塊的作用

    zipfile主要用於對文件的壓縮和解壓。

  2. zipfile模塊的使用

    <1>. 解壓

# 解壓
import zipfile
zi = zipfile.ZipFile('聯繫.zip', 'r')

# 顯示壓縮包中的文件名稱
# print(zi.namelist())

# 解壓全部
zi.extractall()

# 解壓某個文件夾
# zi.extract('openssl.txt')
zi.close()

    <2>. 壓縮

import zipfile

# 創建一個壓縮包,以追加的方式寫入壓縮包
zi = zipfile.ZipFile('我的壓縮包.zip', 'a')

# 壓縮一個文件到壓縮包中
zi.write('config')
zi.write('log')

# 關閉壓縮文件
zi.close()

九. subporcess

  1. subprocess模塊的作用

    subprocess專門用於python執行系統命令

  2. subprocess模塊的使用方法

 1 # 簡單命令
 2 call()                  輸入是windows終端命令,當命令執行成功,返回1,結果直接列印在終端上(暫時不太清楚和check_all的區別)
 3 check_call()            輸入的是windows終端命令,當命令執行成功,返回1,否則返回0 
 4 check_output()          輸入的是windows終端命令,會把結果返回給一個變數 
 5     # 例題:
 6         a = subprocess.call('ipconfig', shell=True)
 7         b = subprocess.check_call('ipconfig')
 8         c = subprocess.check_output('ipconfig')
 9         print(a, b, c)
10     # 結果:  
11         只有c會有返回值,a和b都是0 
12 #複雜命令
13 subprocess.Popen        創建一個可執行複雜命令的對象
14 subprocess.PIPE         開闢標準輸入輸出的管道
15     # 例題:
16         cmd = subprocess.Popen("python", stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
17 
18         cmd.stdin.write('print(1)\n')
19         cmd.stdin.write('print(2)')
20         cmd.stdin.close()
21 
22         a = cmd.communicate()
23         print(a, type(a))
24         
25     # 結果:
26         ('1\n2\n', '') <class 'tuple'>

十. logging 

  1. logging模塊的作用

    logging模塊主要用來規範寫入日誌的格式和寫入日誌的時間,防止多線程同時修改日誌,從而導致日誌不安全。

  2. logging的使用方法

# 日誌級別
    CRITICAL = 50
    FATAL = CRITICAL
    ERROR = 40
    WARNING = 30
    WARN = WARNING
    INFO = 20
    DEBUG = 10
    NOTSET = 0

寫入同一個日誌文件中 logging.basicConfig
    # 例子:
        import logging
        logging.basicConfig(
            filename='logging',
            format = '%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s',
            datefmt='%Y-%m-%d %H:%M:%S %p',
            level=logging.INFO
        )
        logging.error('sss')
    # 結果:
        2017-06-19 22:18:41 PM - root - ERROR - <encoding error>: 1111
寫入不同的日誌文件中
logging.FileHandler         定義日誌文件
logging.Formatter           定義日誌文件的格式
logging.Logger              定義日誌文件的級別
log.addHandler              添加日誌文件
log.critical                寫入日誌文件
    # 例子2:
        import logging

        # 定義格式
        file_1 = logging.FileHandler('log1', 'a')
        fmt1 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s')
        file_1.setFormatter(fmt1)

        file_2 = logging.FileHandler('log2', 'a')
        fmt2 = logging.Formatter()
        file_2.setFormatter(fmt2)

        #定義級別
        log = logging.Logger('lsl', logging.INFO)
        log.addHandler(file_1)
        log.addHandler(file_2)

        log.critical('kjjjj')

十一. xml 

  1. xml模塊的作用

    由上面的介紹可知,我們去訪問一下網站的時候,一般會返回給我們是三種數據,一個就是html,一個是json,一個就是xml,其實xml本身是一門語言,他具有特定的格式,比如tag(標簽),attribute(屬性),text(內容),基本上也就是這樣的格式。下麵的就是這樣的一種xml語言

#<>中間的第一個單詞被稱為tag,tag後面的都是屬性
# 沒有被<>包裹的就是text
              
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這是小白偶爾一直null指針的錯誤,調試了好久,原來是自己對spring註入的不夠瞭解 我相信有很多跟我差不多的初學者會遇上,所以特地寫出來,防止有人跟我一樣。哈哈,也寫上去,以防自己下次還犯這樣的錯誤。 一樣,首先,舉個反例 所有類 有個城市類 有個華北地區類,有個城市類的集合屬性 同上,華南地區 ...
  • 代碼如下: 題目的意思是通過一個函數將列表的列表顯示在組織良好的表格中,每列右對齊 ''' apples Alice dogs oranges Bob catscherries Carol moose banana David goose ''' #輸出每一列右對齊 我想不應該是字元串最後一個對齊麽 ...
  • 從數塔頂層出發,每個結點可以選擇向左走或向右走,要求一直走到塔底,使得走過的路徑上的數值和最大。 #include <iostream> #include <cstdio> using namespace std; const int N = 100; // 下麵這個函數實現的是更新最大值,o賦值為 ...
  • 什麼是Maven? 安裝Maven環境: 下載地址:https://maven.apache.org/download.cgi Maven3.3+JDK1.7以上版本 下載windows版本 解壓到本地即可,對其中的文件夾進行講解 bin目錄:包含mvn的運行腳本 boot目錄:包含一個類載入器的框 ...
  • Lucene是apache軟體基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,但它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎。Lucene的目的是為軟體開發人員提供一個簡單易用的工具包. 粘貼這句話的意思 ...
  • #文件內容 lisilock = open("lock_info.txt", "r+",encoding="utf-8")lock_line = lock.readline()lock_list = lock_line.split(",")print(lock_list)y = lock_line. ...
  • 函數式編程1.簡化代碼,2,調用方便,修改方便3.調用參數,形參數,與位置參數。關鍵參數,位置參數只能發在關鍵參數之後4.預設參數5.參數組(*args) 元組參數6 接受字典 ( **kwargs) 當同時使用時必須放到參數的最後程式運行的從文件的上邊到下邊的運行局部變數 一個變數只在函數中生效。... ...
  • 工具:python2.7 相關包:traits-4.6.0-cp27-cp27m-win32.whl, VTK-7.1.1-cp27-cp27m-win32.whl, mayavi-4.5.0+vtk71-cp27-cp27m-win32.whl 下載地址:http://www.lfd.uci.ed ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...