1.python數據類型詳解

来源:https://www.cnblogs.com/bonheur/archive/2020/02/12/11923978.html
-Advertisement-
Play Games

python數據類型分類 1).數值型:整數型(int)、浮點型(float)、布爾型(bool 取值:True、False) 2).容器類型 : 字元串型(str)、列表(list)、元祖(tuple)、字典(dict)、集合(set) 3).自定義類型:Person、Animal、Dog、Cat ...


python數據類型分類

1).數值型:整數型(int)、浮點型(float)、布爾型(bool 取值:True、False)
2).容器類型 : 字元串型(str)、列表(list)、元祖(tuple)、字典(dict)、集合(set) 
3).自定義類型:Person、Animal、Dog、Cat、Student...
4).NoneType:None (理解:不存在、未明確的、未知的)

一. 字元串類型(str)

特點:屬於容器類型之一,滿足有序的(有索引)、可重覆的、不可變的數據類型(不可變:指字元串中某個位置的元素不允許改變,但是可以將整個字元串變數中的地址進行改變(意味著將字元串完全覆蓋掉))

1.自定義列印效果的顯示

使用:""" ... """ 或者 ''' ... ''' 來定義字元串數據,對於有些情況下,需要對定義的字元數據進行顯示樣式的把控,可以使用如下的方式定義字元串數據,可以做到換行的效果

1 content = """遙想公瑾當年,小喬出嫁了!
2          雄姿英發,羽扇綸巾,
3          談笑間,檣櫓灰飛煙滅"""
4 content1 = '''遙想公瑾當年,小喬出嫁了!
5           雄姿英發,羽扇綸巾,
6           談笑間,檣櫓灰飛煙滅'''
7 print(content) 
8 print(content1)  

2.轉義字元

轉義字元:將字元原本的含義去除,賦予一個新的含義
常見的轉義字元如下:
\n: 換行符
\t: 製表符
\b: 退格
\”: 雙引號
\': 單引號
如果字元串描述的是一串物理地址,在其中可能會包含一些轉義字元,那麼對於我們路徑的解析會造成錯誤,所以我們需要在字元串第一個引號的前面顯示的追加一個r,目的:就是為了避免轉義

1 address = "d:\\basic\\tpython1809\\day02\\note.txt"
2 address = r"d:\basic\tpython1809\day02\note.txt"
3 print(address)

3.字元串的*+操作

字元串數據和字元串數據之間可以做拼接操作,使用+號來實現
字元串數據和整數之間使用*號連接,作用:讓字元串數據重覆執行多次

4.字元串的索引

起始索引:0
結束索引:-1 / length - 1

5.內置函數len()的作用

例如:len(obj) --> 得到容器對象obj的長度/尺寸/容量

6.如何訪問字元串元素

1).獲取元素:
通過變數名配合下標來實現
2).設置元素:
由於字元串屬於不可變的數據類型,所以沒有設置元素這一說

7.常見的運行時異常:IndexError

以下代碼有問題:由於str1的長度為10,所以它的最大索引為9,
導致代碼出現IndexError類型的異常,原因是下標越界了,這種情況是需要避免的

8.字元串的切片操作

目的:從原串中得到部分子串數據,最終原串不會發生改變
格式:字元串變數[[start]:[end]:[step]] 【註意】:內部的中括弧表示可選的意思
參數解釋:start:起始位置;end:結束位置;step:步長(預設為1),滿足含頭不含尾的特點(99%的情況) [start,end)

9.占位符

在定義字元串數據時,可能在某些位置並不清楚需要填入什麼內容,那麼就先將位置占了,等到之後確定了數據再填入進去
1).百分號原則:
符號:
%d:整數占位符
%f:小數占位符
%s:萬能占位符
2).大括弧原則:
需要配合str類中的format()來使用得到效果

 1 name = "jerry"
 2 age = 18
 3 height = 185.5
 4  
 5 print("姓名:%s,年齡:%d,身高:%.1fcm" %("韓梅梅",21,163.5))
 6 print("姓名:%s,年齡:%010d,身高:%010.1fcm" %(name,age,height))
 7 
 8 print("最喜歡的歌手:{},最喜歡看的電影:{},最喜歡玩的游戲:{},最喜歡的編程語言:{}".format("張學友","海王","魔獸世界","python"))
 9 print("最喜歡的歌手:{3},最喜歡看的電影:{1},最喜歡玩的游戲:{2},最喜歡的編程語言:{0}".format("java","蜘蛛俠","LOL","周傑倫"))
10 print("最喜歡的老師:{teacher},最喜歡看的電影:{film},最喜歡玩的游戲:{game},最喜歡的編程語言:{language}".format(language="js",
11        teacher="微微姐",film="小電影",game="超級瑪麗"))

10.字元串中常用的函數

1). ‘sep‘.join(seq) :sep分隔符,可以為空;seq連接的元素序列、字元串、元組、字典

    【補充】os.path.join(): 將多個路徑組合後返回

2). ljust(width,format):將str數據顯示在左側,如果長度/尺寸不滿width,那麼右側補format 

3). rjust(width,format):將str數據顯示在右側,如果長度/尺寸不滿width,那麼左側補format

4). center(width,format):將str數據顯示在中間,如果長度/尺寸不滿width,那麼左右側補format

5). zfill(width):將str數據顯示在右側,如果長度/尺寸不滿width,那麼左側補0

6). strip(): 去除字元串左、右兩側匹配到的字元數據,返回一個新串

7). lstrip():去除字元串左側匹配到的字元數據,返回一個新串

8). rstrip():去除字元串右側匹配到的字元數據,返回一個新串

9). replace(old,new,[number]):將str中的old內容替換為new,預設全部替換;也可以選擇性的替換number次

10). split(format):將str以format格式進行切割,返回一個列表對象;預設空參數的split()可以切割的內容:' '、\n、\t

11). index(s):返回字元串s在原串中對應的下標/索引,若存在多個相同數據,返回第一個匹配成功的,如果都沒有匹配成功,會報錯

12). count(s):返回字元串s在原串中出現的次數,如果一次都沒有出現,不會報錯,返回0

13). find(format):查找字元串中首次出現的format的位置

14). rfind(format):查找字元串中最後一次出現的format的位置

15). upper():將字元串數據變為全大寫

16).lower():將字元串數據變為全小寫

17).capitalize():將字元串數據首字母大寫,其餘字母小寫

18). title():將字元串數據首字母大寫,其餘字母小寫  備註:如果存在多個單詞,每個單詞首字母都要考慮

19). swapcase():將字元串中大寫變為小寫,小寫變為大寫

20). startswith(format):判斷字元串是否以format開頭,函數結果是布爾值

21). endswith():判斷字元串是否以format結尾,函數結果是布爾值

22). isalnum():判斷字元串的內容是否都是英文、數字字元;如果是,返回True;反之,返回False

23). isalpha():判斷字元串的內容是否都是英文字元;如果是,返回True;反之,返回False

24). isdecimal():判斷字元串的內容是否都是數字字元;如果是,返回True;反之,返回False

25). isdigit():判斷字元串的內容是否都是數字字元;如果是,返回True;反之,返回False

26). islower():判斷字元串中英文字元是否全小寫;如果是,返回True;反之,返回False   【註意】數字、其它字元不影響

27). isupper():判斷字元串中英文字元是否全大寫;如果是,返回True;反之,返回False   【註意】數字、其它字元不影響

28). istitle():判斷字元串內容中的英文子串(多組)的首字母是否大寫

 1 lt = ['i','love','you','very','much']
 2 print('-'.join(lt))
 3 print(str.join('#',lt))
 4 
 5 str1 = 'i love you very much'        
 6 print(str1.ljust(50,'*'))              #i love you very much******************************
 7 print(str1.rjust(50,'-'))              #------------------------------i love you very much
 8 print(str.rjust(str1,50,'$'))          #$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$i love you very much
 9 print(str1.center(50,'^'))             #^^^^^^^^^^^^^^^i love you very much^^^^^^^^^^^^^^^
10 print(str1.zfill(50))                  #000000000000000000000000000000i love you very much
11 
12 str1 = '  ,,,..\    i hate you very much   ...,,;;\  '
13 print(str1.lstrip('\ ,.'))           #i hate you very much   ...,,;;\  
14 print(str1.rstrip('\;., '))          #,,,..\    i hate you very much
15 print(str1.strip(',\;. '))           #i hate you very much
16 
17 str1 = "python啊python,你是我的驕傲!python啊python,我為你自豪!"
18 print(str1.replace('python','java'))            #java啊java,你是我的驕傲!java啊java,我為你自豪!
19 print(str1.replace('python','java',2))          #java啊java,你是我的驕傲!python啊python,我為你自豪!
20 
21 str1 = 'i love\nabc you\t very\n much'
22 print(str1.split(' '))          #['i', 'love\nabc', 'you\t', 'very\n', 'much']
23 print(str1.split())             #['i', 'love', 'abc', 'you', 'very', 'much']
24 print(str1.split('\n'))         #['i love', 'abc you\t very', ' much']
25 print(str1.splitlines())        #['i love', 'abc you\t very', ' much']
26 
27 str1 = 'abcdefgd1234567'
28 print(str1.index('d'))     #3
29 print(str1.index('efg'))   #4
30 print(str1.index('xyz'))   #報錯
31 
32 str1 = 'dsaalkfaaasdfaaaa2141aaaaaaxyz'
33 print(str1.count('a'))     #15
34 print(str1.count('aa'))    #7
35 print(str1.count('www'))   #0
36 
37 str1 = '山不在在高,有仙則靈;水不在在深,有龍則靈;斯是在在陋室,惟吾德馨'
38 print(str1.find('在在'))        #2
39 print(str1.rfind('在在'))       #24
40 
41 str1 = 'today is thursday PM'
42 print(str1.upper())          #TODAY IS THURSDAY PM
43 print(str1.lower())          #today is thursday pm
44 print(str1.capitalize())     #Today is thursday pm
45 print(str1.title())          #Today Is Thursday Pm
46 print(str1.swapcase())       #TODAY IS THURSDAY pm
47 
48 str1 = 'hahaha abcdefghijk 32141234 hehehe'
49 print(str1.startswith('h'))         #True
50 print(str1.startswith('ha'))        #True
51 print(str1.startswith('haha'))      #True
52 print(str1.startswith('Haha'))      #False
53 print(str1.startswith('hahha'))     #False
54 
55 print(str1.endswith('e'))           #True
56 print(str1.endswith('he'))          #True
57 print(str1.endswith('ehe'))         #True
58 print(str1.endswith('Hehe'))        #False
59 
60 str1 = '3214Love&Tdsajflks*^'
61 print(str1.isalnum())          #False
62 print(str1.isalpha())          #False
63 print(str1.isdigit())          #False
64 print(str1.isdecimal())        #False
65 print(str1.islower())          #False
66 print(str1.isupper())          #False
67 print(str1.istitle())          #Ture

二. 列表類型(list)

特點:有序的(有索引、定義和顯示的順序是一致的)、可變的(既可以改變元素的內容也可以自動(擴縮)容)、可重覆的、可以存儲任何數據類型的元素

1.如何訪問列表中的元素

1).獲取元素
列表名配合下標獲取 --> 例如:lt[0],lt[-1]
2).設置元素(和str有區別)
列表名配合下標 = ... --> 例如:lt[4] = "武大郎"

2.列表的+*操作

對於+操作而言:將兩個列表對象中的元素都組合起來以一個新的列表返回
對於*操作而言:將列表中的元素重覆出現n次,以新的列表返回

3.和列表有關的一些函數

append(obj):將obj元素追加到列表的末尾
clear():清空列表,元素沒了,列表對象還在 : lt.clear()

4.del關鍵字配合列表對象/元素使用

目的:回收列表對象,並且回收其中的元素內容(即可以回收列表對象,也可以回收列表元素)del lt
del可以刪除列表中指定位置的元素:del lt[1]

5.列表的切片操作

格式和特點和str一模一樣...

1 lt6 = ['葫蘆娃','黑貓警長','熊出沒','灌籃高手','柯南','海爾兄弟']
2 lt7 = lt6[1:5]
3 print(lt7,type(lt7))
4 print(lt6,type(lt6))
5 print(lt6[2:-2])
6 print(lt6[:])
7 print(lt6[::-1])

6.歸納總結列表的定義格式

格式一:列表名 = [值1,值2,...,值n]
格式二:列表名 = [變數1,變數2,...,變數n] = [值1,值2,...,值n]
格式三:列表名 = []

7. list中常用的函數

1). append(obj):將obj存入到列表的最後一個位置

2). extend(iterable)將iterable對象中的每個元素分別取出存入到列表的最後位置

3).index(obj):返回obj在列表中出現的索引位置;如果存在多個相同的obj元素,返回的是第一次出現的那個元素的索引;如果一個有沒有,直接報錯

4). count(obj):返回obj在列表中出現的次數;如果一次都沒有出現,返回0

5). pop([index]):如果是空參數的pop(),將列表最後一個元素彈出(作為返回值給程式);如果有參數,必須是索引值,將具體索引位置上的元素彈出

6). remove(element):刪除和element匹配的某個元素,沒有返回值;如果有多個匹配的,只刪除第一個

7). reverse():反轉列表元素

8). sort([reverse=True],[key=...]):預設以升序排列(reverse=False),如果想要降序排列,顯示定義reverse=True

 1 lt = ['路飛','索羅','山治','娜美','烏索普','喬巴','布魯克']
 2 lt.append('香克斯')
 3 print(lt)   # ['路飛','索羅','山治','娜美','烏索普','喬巴','布魯克','香克斯']
 4 lt.append(['卡卡西','鳴人','佐助',''])
 5 print(lt)   # ['路飛','索羅','山治','娜美','烏索普','喬巴','布魯克','香克斯',['卡卡西','鳴人','佐助','櫻']]
 6 
 7 lt = ['路飛','索羅','山治','娜美']
 8 lt.extend(['卡卡西','鳴人','佐助',''])      # ['路飛', '索羅', '山治', '娜美','卡卡西', '鳴人', '佐助', '櫻']
 9 lt.extend('大蛇丸')
10 print(lt)            # ['路飛', '索羅', '山治', '娜美', '卡卡西', '鳴人', '佐助', '櫻', '大', '蛇', '丸']
11 lt.extend(200)       # TypeError: 'int' object is not iterable
12 
13 lt = ['路飛','索羅','山治','娜美','烏索普','喬巴','布魯克','娜美']
14 print(lt.index('娜美'))       # 3
15 # print(lt.index('娜美1'))    # 報錯ValueError
16 
17 print(lt.count('路飛'))       #1
18 print(lt.count('娜美'))       #2
19 print(lt.count('娜美1'))      #0
20 
21 print(lt.pop())      #娜美
22 print(lt)            #['路飛','索羅','山治','娜美','烏索普','喬巴','布魯克']
23 print(lt.pop(1))     # 索羅
24 print(lt)            #['路飛', '山治', '娜美', '烏索普', '喬巴', '布魯克']
25 # lt.pop('喬巴')    # 報錯 非法操作
26 
27 lt = ['路飛','索羅','山治','娜美','烏索普','喬巴','布魯克','娜美']
28 print(lt.remove('山治'))  # None
29 print(lt)    #['路飛','索羅','娜美','烏索普','喬巴','布魯克','娜美']
30 lt.remove('娜美')
31 print(lt)    #['路飛','索羅','烏索普','喬巴','布魯克','娜美']
32 
33 print(lt.clear())   #None
34 print(lt)      #[]
35 
36 lt = ['路飛','索羅','山治','娜美','烏索普','喬巴','布魯克','娜美']
37 lt.reverse()
38 print(lt)       #得到['娜美','布魯克','喬巴','烏索普','娜美','山治','索羅','路飛']
39 
40 lt1 = [53,23,-17,9,-21,0,79,88,-30]
41 lt1.sort()
42 print(lt1)    #[-30, -21, -17, 0, 9, 23, 53, 79, 88]
43 lt1.sort(reverse=True)
44 print(lt1)    #[88, 79, 53, 23, 9, 0, -17, -21, -30]

三. 元祖類型(tuple)

特點:有序的(有索引、定義和顯示的順序是一致的)、不可變的(和str一樣理解)、可重覆的、可以存儲任何數據類型的元素

1.如何訪問元祖中的元素

1).獲取元素
元祖名配合下標獲取 --> 例如:tp[0],tp[-1]
2).設置元素(和str保持一致)
沒有此操作,是非法的,原因元祖是不可變的數據類型

2.元祖的+*操作

對於+操作而言:將兩個元祖對象中的元素都組合起來以一個新的元祖返回
對於*操作而言:將元祖中的元素重覆出現n次,以新的元祖返回
【註意事項】元祖有沒有類似於列表的append或者clear函數,因為append和clear這類函數改變的都是容器對象內部的元素內容,這和不可變所衝突

3.del關鍵字配合元祖對象使用

目的:回收整個元祖對象,但是對於tuple類型而言無法回收其任何一個元素

4.元祖的切片操作

格式和特點和str一模一樣...

5.歸納總結元祖的定義格式

格式一:元祖名 = (值1,值2,...,值n)
格式二:元祖名 = (變數1,變數2,...,變數n) = (值1,值2,...,值n)
格式三:元祖名 = ()
格式四:元祖名 = (值1,) 【註意】:定義元祖並且只有一個元素,必須在元素後顯示的加上一個逗號

四. 字典類型(dict)

特點:無序性(沒有索引,通過鍵找值)、可變的數據類型(值可變、鍵不可變);字典的結構是鍵值對組合 --> key-value對象;(key):唯一性(不可重覆)、不可變的數據類型(例如:list就不能作為鍵);(value):沒有任何要求,可以是任何類型的數據,甚至可以重覆

1.如何訪問字典元素

1).獲取值:字典名配合鍵名可以得到對應的值

1 dic1 = {"name":"韓梅梅","age":23,"height":165.0}
2 dic1['name']           # 韓梅梅

2).設置值:字典名配合鍵名 = ...

【註意事項】1.在定義字典對象的時候如果出現了重覆的鍵,保留鍵名的同時,將後者的值覆蓋前面的值。2.在添加新的鍵值對的過程中,如果原字典對象中沒有此鍵,那麼就將其鍵值對一併加入進去,稱為一個元素。

1 dic2 = {"name":"韓梅梅","age":23,"height":165.0,"name":"李雷"}
2 dic2['weight'] = 120
3 print(dic2)

2.字典相關函數

clear():清空字典元素,保留空字典對象,dic2.clear( )

3.和關鍵字del配合使用

目的:回收鍵值對組合,或者整個字典對象;del dic2['age']    # 刪除年齡鍵值對;del dic2    # 刪除所有(數據和整個字典結構)

4.通過鍵查找值的情況

方式一:字典名[鍵名] 如果鍵不存在,報錯;出現KeyError類型的異常;dic2["name1"]
方式二:字典名.get(鍵名) 如果鍵不存在,不會報錯,會返回給程式一個None值;此方式比較安全/友好(更加好用);dic2.get("name1")

【註意事項】:必須滿足不可變的數據類型;枚舉:int、float、bool、str、None等都可以充當鍵,滿足唯一性(不可重覆);:沒有要求,任何類型都可以,甚至可重覆。

5.dict中常用的函數

1). dic1.update(dic2):將dic2中每一個鍵值對和dic1中的進行比較,如果dic1中經過存在相同的 鍵,那麼就保證鍵不變,值被覆蓋;如果dic1中沒有相應的鍵值對,那麼就將其加入進dic1中

items():返回一個dict_items類型的對象,內部封裝了一個一個元祖充當其元素,元祖中包含鍵和值兩塊內容

keys():返回一個dict_keys類型的對象,內部封裝了鍵集

values():返回一個dict_values類型的對象,內部封裝了值集

popitem():彈出最後一個鍵值對,以元祖的形式返回

pop(key):傳入key時,彈出整個鍵值對,最終返回給程式value

copy():拷貝 ;dict1.copy()

 1 dic1 = {"name":"張三豐","age":120,"height":168.0}
 2 dic2 = {"name":"金毛獅","weight":100,"faceValue":False,"girlFriend":"滅絕師太"}
 3 dic1.update(dic2)
 4 print(dic1)     #得到{'name': '金毛獅王', 'age': 120, 'height': 168.0, 'weight': 100, 'faceValue': False, 'girlFriend': '滅絕師太'}
 5 print(dic2)     #得到{'name': '金毛獅王', 'weight': 100, 'faceValue': False, 'girlFriend': '滅絕師太'}
 6 
 7 dic1 = {"name":"張三豐","age":120,"height":168.0}
 8 print(dic1.items(),type(dic1.items()))     #得到dict_items([('name', '張三豐'), ('age', 120), ('height', 168.0)]) <class 'dict_items'>
 9 print(dic1.keys(),type(dic1.keys()))       #得到dict_keys(['name', 'age', 'height']) <class 'dict_keys'>
10 print(dic1.values(),type(dic1.values()))   #得到dict_values(['張三豐', 120, 168.0]) <class 'dict_values'>
11 
12 dic2 = {"name":"金毛獅","weight":100,"faceValue":False,"girlFriend":"滅絕師太"}
13 print(dic2.popitem())          #('girlFriend', '滅絕師太')
14 print(dic2)                    #{'name': '金毛獅王', 'weight': 100, 'faceValue': False}
15 print(dic2.pop('weight'))      #100
16 print(dic2)                    #{'name': '金毛獅王', 'faceValue': False}       
17 
18 dic3 = dic2.copy()     # id改變
19 print(dic2,id(dic2))   #得到{'name': '金毛獅王', 'weight': 100, 'faceValue': False, 'girlFriend': '滅絕師太'} 5999280
20 print(dic3,id(dic3))   #得到{'name': '金毛獅王', 'weight': 100, 'faceValue': False, 'girlFriend': '滅絕師太'} 5999352

五. 集合類型(set)

特點:無序性(沒有索引,每一次顯示的效果都不一樣)、唯一性(不可重覆)、可變的、只能存放不可變的數據。使用場景:在實際開發過程中,經常用於對數據進行去重(過濾)

1.集合的一些常用操作如下

以下的操作都是在兩個集合對象中使用
符號:
&:取交集
|:取並集
-:取差集(對於取差集的操作,需要關註的是誰在-號的前面(左側),返回的就是誰獨有的數據)
^:先取並集再捨棄交集部分

【註意事項】對於集合和集合之間沒有+操作。會出現TypeError類型的錯誤

2.集合相關的函數

clear():清空集合,保留外殼

3.和關鍵字del配合使用

目的:回收集合元素,或者

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

-Advertisement-
Play Games
更多相關文章
  • 1.HTML基礎標簽圖片常見代碼形式<img src="圖片路徑地址" alt="屬性名" title="占位符">常見的圖片格式為以下三種:.jpg(圖片有損壓縮,影響畫質)、.png(圖片無損壓縮、容積大、具有透明通道)、.gif(動圖)。圖片路徑地址分為本地圖片和網路圖片,本地圖片中分為絕對路 ...
  • 1、工廠模式介紹: 2、簡單工廠模式 3、工廠方法模式 4、小結 5、抽象工廠模式 ...
  • 需求 地區數據往往是存在強上下級關係的一種數據結構,在電商系統中是比較常應用到的,比如北京的下級地區只有海澱區、通州區……,而不會是太原市,而且在開發人員傳遞地區值的時候往往要傳遞很多的值,比如省、市、區、鎮、省Id,市id、區id、鎮id,這樣影響了代碼的美觀性及校驗強上下級關係代碼的複雜性。基於 ...
  • 面向對象編程(OOP)給軟體開發領域帶來了新的設計思想。很多開發人員在進行面向對象編程過程中,往往會在一個類中將具有相同目的/功能的代碼放在一起,力求以最快的方式解決當下的問題。但是,這種編程方式會導致程式代碼混亂和難以維護。因此,Robert C. Martin制定了面向對象編程的五項原則。這五個 ...
  • 1、單例模式介紹 2、餓漢式 3、懶漢式 4、DCL_懶漢式 5、靜態內部類實現 6、利用枚舉來實現 ...
  • 與前面提到的 "數據結構" 相同,隊列中的數據也呈 線性排列 。雖然與 "棧" 有些相似,但隊列中添加和刪除數據的操作分別是在 兩端 進行的,就和隊列這個名字一樣,把它想象成排成一隊的人更容易理解。在隊列中,處理總是從第一名開始往後進行,而新來的人只能排在隊尾。 隊列是什麼? 如上就是隊列的概念圖, ...
  • 一、UML演示Collection集合的繼承結構圖 二、Set集合 1.List存儲元素的特點:有序可重覆。有序,存進去是什麼順序,拿出來還是什麼順序。 2.Set存儲元素的特點:無序不可重覆,存進去的時候是這樣一個順序,拿出來的時候,不一定是原來的順序了。 3.SortedSet特點存儲元素的特點 ...
  • 1.前言 先來說下什麼是數據回顯,比如我要修改我的個人信息,點擊修改按鈕後進入修改界面,在這個界面中直接將原來的信息顯示在表單中,而不是空表單,這就是數據回顯 2.思路 1. 當點擊修改的時候,從資料庫中查詢要修改的整條數據,並將數據存入request域中 2. 轉發到jsp頁面 3. 通過EL表達 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...