python整型-浮點型-字元串-列表及內置函數

来源:https://www.cnblogs.com/chenwenyin/archive/2020/01/31/12246589.html
-Advertisement-
Play Games

整型 簡介 # 是否可變類型: 不可變類型 # 作用:記錄年齡、手機號 # 定義: age = 18 # --> 內部操作 age = int(18) # int('sada') # 報錯 int(1.1) # int('1.1') # int() 只能轉純數字的字元串,小數點都不行 a = 111 ...


整型                     

  簡介

 
# 是否可變類型: 不可變類型
# 作用:記錄年齡、手機號
# 定義:
age = 18  # -->  內部操作 age = int(18)
# int('sada')  # 報錯
int(1.1)
# int('1.1')  # int() 只能轉純數字的字元串,小數點都不行

a = 11111
print(id(a))
a = 122121
print(id(a))
# 2250375207952
# 2250375207632
# id變了,所以是不可變類型
 

    可變類型不可變類型

'''
可變類型: 值改變的情況下,id不變,說明你改的是原值
不可變類型:值改變的情況下,id一定變
'''

 進位轉換

    十進位轉其他進位

 
 1 # -------------- 十進位 --> 其他進位 -------------
 2 # 》》》 十進位轉二進位 《《《
 3 print(bin(12))  # 0b1100   0b表示後面的數字是二進位數
 4 
 5 # 》》》 十進位轉八進位 《《《
 6 print(oct(12))  # 0o14    0o表示後面的數字是八進位14 >>>  1*(8**1) + 4*(8**0)
 7 
 8 # 》》》 十進位轉十六進位 《《《
 9 print(hex(12))  # 0xC     0x表示後面的數字是十六進位數
10 
11 # 0b1100
12 # 0o14
13 # 0xc
 

    其他進位轉十進位

 
 1 # -------------- 其他進位 --> 十進位 -------------
 2 # 》》》二進位轉十進位《《《
 3 10  # 1*(2**1) + 0*(2**0)  2
 4 print(int('1100', 2))
 5 # 12
 6 
 7 # 》》》八進位轉十進位《《《
 8 235  # 2*(8**2) + 3*(8**1) + 5*(8**0)
 9 print(int('14', 8))
10 # 12
11 
12 # 》》》十六進位轉十進位 0-9 A-F《《《
13 217  # 2*(16**2) + 1*(16**1) + 7*(16**0)
14 print(int('c', 16))
15 # 12
 

浮點型

  簡介

 
# 作用: 薪資、身高、體重
# 是否可變類型:不可變類型
res = float('1.11')
print(type(res))
# <class 'float'>

print(id(res))
res = 1.2  # --> res = float(1.2)
print(id(res))
# 2955868840344
# 2955868840320
 

字元串

  簡介

 
# 用途:存放描述性信息
# 雖然它可以用索引取值,但其本質上只有一個值
# 有序(有序: 但凡有索引的數據都是有序的)
# 是否可變類型:不可變類型

# 定義方式: '內容', "內容", '''內容''', """內容"""
#           之所以提供這麼多定義方式(引號)是因為引號可能會用到
s = 'hello world'  # s = str('hello world')

s1 = str([1, 2, 3, 4])  # 等同於在其兩邊套上了引號
print(s1, type(s1))
# [1, 2, 3, 4] <class 'str'>

s1 = str({'name': 'jason', 'age': 18})
print(s1, type(s1))
# {'name': 'jason', 'age': 18} <class 'str'>
 

      按索引取值

string = 'hello world.'
print(string[0])
# h
# string[0] = 'H'  # 直接報錯,str 字元串類型只能按索引取值,不能通過索引改

      len獲取字元個數與in/not判斷是否存在

 
# len  統計字元串中字元的個數
s = 'hello big baby~'
print(len(s))
# 15

# 使用內置的方法統一採用 句點符(.)

# in , not in 判斷一個子字元串是否存在於一個大的字元串中
s = 'hello big baby~'
print('big' in s)
print('big' not in s)
print('bigger' in s)
print('bigger' not in s)
# True
# False
# False
# True
 

  切片操作

      詳見列表類型中的切片部分推薦文章。

 
# 切片(顧頭不顧尾,步長):從一個大的字元串中截取一段新的小字元串
s = 'hello big baby~'
print(s[0: 10])
print(s[0: 10: 2])
# hello big
# hlobg

print(s[-1])
# -1 取最後一個字元

print(s[-2])
# -2 取倒數第二個字元
# 切片取值預設是從左往右的

print(s[5: 0: -1])  # 從5 開始 到0 (顧頭不顧尾,顧5 不顧 0)
#  olle

print(s[-1: -10])
print(s[-1: -10: -1])
#
# ~ybab gib
 

      切片個人小總結

 
# 關於切片取值的新思路(切片是顧頭不顧尾的)
string = '這不過只是一個切片的測試案例而已啦!'
# 想要反向截取部分,步長一定是負的

# 想要正常(順序不變)截取字元串前面部分,步長一定是 正的, 起始值用索引正的(0是第一位,第幾位到第幾位)
# 前五個字元
print(string[0:5])
# 這不過只是

# 第六到第十三個字元
print(string[5:14])
# 一個切片的測試案例

# 想要正常(順序不變)截取字元串後面部分,步長一定是 正的, 起始值用索引負的(-1倒數第一位, -2倒數第二位,依次類推)
# 最後四個字元(寫-1 最後一個取不到。。。 如果終止值寫0,就什麼都去不到了,取值的方向就不對了)
# 終止值不寫預設是到最後一個值
print(string[-4: ])
# 而已啦
print(string[-4: -1])
# 而已啦!

# 反向截取的不常用,也就不舉例了
 

  內置函數

       去除首尾指定字元(串) strip(), lstrip(), rstrip()

 
# strip() 預設去除字元串左右兩端的指定字元(預設為空,去除左右兩端空格)
name = 'jason'
name2 = '   jason  '
print(name == name2, name.strip() == name2.strip())
# False True

# 去除兩端的指定字元
name = '$$$$egon$A$$$'
print(name.strip('$'))
# egon$A

# 去除多字元也可以
name = '$%@ jason*&^('
print(name.strip('$%@ &('))
# jason*&^

# lstrip() 去除字元串左側指定字元
name = '$$jason##$$'
print(name.lstrip('$'))  # left 左
# jason##$$
# rstrip() 去除字元串右側指定字元
print(name.rstrip('$'))  # right 右
# $$jason##
 

      字元串切割 split(), rsplit()

 
# split 將字元串按照指定字元切割成列表,可指定切割次數
# split:針對按照某種分隔符組織的字元串,可以用split將其切分成 [列表] ,進而進行取值
# 切割順序是從左往右的
data = 'jason|123|handsome'
name, age, description = data.split('|')
print(data.split('|'))
print(name, age, description)
# ['jason', '123', 'handsome']
# jason 123 handsome

data = 'jason|123|handsome'
print(data.split('o', 1))  # 通過參數指定切割次數
print(data.split('o'))
print(data.rsplit('o'))
# ['jas', 'n|123|handsome']
# ['jas', 'n|123|hands', 'me']
# ['jas', 'n|123|hands', 'me']
# 如果不指定,rsplit() 和 split() 是一樣的
 

      將字元串以指定字元(串)作為分隔拼接起來

 
# join 將列表以指定字元串作為分隔拼接起來
data = 'jason|123|handsome'
res_list = data.split('|')
res_str = ' '.join(res_list)
print(res_str)
# jason 123 handsome

# l = [1, 'a', 'b']
# res = '|'.join(l)  #  ----》報錯,不同類型不能相加(拼接)《----
# print(res)
 

      作為迭代器對象迴圈遍歷  for 變數 in 字元串對象

 
# 在for 迴圈中遍歷
data = 'jason|123|handsome beatiful'
for i in data:
    print(i, end='--')
# j--a--s--o--n--|--1--2--3--|--h--a--n--d--s--o--m--e-- --b--e--a--t--i--f--u--l--
print()
 

      轉換字元串的大小寫(隻影響字母) lower  upper  capitalize  swapcase  title

 
# lower upper 函數統一轉換字元串的大小寫
s = 'HAfaganGA'
print(s.lower())
print(s.upper())
print(s)
# hafaganga  ————> 全轉換成小寫
# HAFAGANGA  ————> 全轉換成大寫
# HAfaganGA  ————> s 本身沒有發生改變
# 調用方法並不改變字元串本身

# captallize swapcase titlle 大小寫轉換意義化
s = 'hElLo WoRLD10'
print(s.capitalize())  # 整個字元串首字母大寫,其他都變小寫(全大寫文章轉換成句子)
print(s.swapcase())  # 大小寫交換
print(s.title())  # 單詞之間首字母大寫 (全大寫單詞轉換成首字母大寫的單詞)
# Hello world10
# HeLlO wOrld10
# Hello World10
 

      判斷字元串否與以指定字元開頭/結尾 startwith  endwith

 
# startswith 判斷字元串是否以...開頭
# endswith 判斷字元串是否以...結尾
s = 'jason dsb'
print(s.startswith('jas'))
print(s.endswith('sb'))
# True
# True
 

      字元串格式化 format

 
# format 字元串格式化 (python推薦使用format 做替換,做格式化輸出)
# 三種玩法  
# 1.按位置占位  --> 與 %s 原理一樣
name = 'jason'
age = 18
str1 = 'my name is {} my age is {}'.format(name, age)
print(str1)
# my name is jason my age is 18

# 2.按索引占位  --> 支持一個變數多個位置調用
str1 = 'my name is {0} my age is {0}'.format("egon", 18)
print(str1)
# my name is egon my age is egon  # {0} {0}都用的第一個參數

# 3.指名道姓(關鍵字傳參)占位,同樣支持一個(關鍵字)變數多個位置調用
name = 'jason'
age = 18
str1 = 'my name is {name} my age is {age}  name = {name}'.format(name=name, age=age)
print(str1)
# my name is jason my age is 18  name = jason
 

      將字元串的指定字元(串)替換成新的指定字元(串),可以指定次數

 
# replace 替換指定字元(串)成新的指定字元(串),可指定次數
string = 'egon is dsb and egon is sb and egon has a BENZ'
res = string.replace('egon', 'kevin', 2)
print(res)
# kevin is dsb and kevin is sb and egon has a BENZ
# replace('要替換的舊字元串', '新的字元串', 替換個數)
 

       字元串是否是數字 isnumeric  isdecimal   isdigit

 

 
# is 數字系列
# isnumeric() 只要是數字都識別,不能識別二進位
# isdecimal() 只能識別普通的阿拉伯數字 0123456789
# isdigit()   數字都能識別(包括二進位)   --> 通常情況下使用它就能滿足需求了
# 在python3中
num1 = b'4'  # bytes
num2 = u'4'  # unicode,python3中無需加u就是unicode
num3 = '壹'  # 中文數字
num4 = 'Ⅳ'  # 羅馬數字

# ''.isnumeric(): unicode,中文數字,羅馬數字
# print(num1.isnumeric())  # 直接就會報錯,num1 根本就沒有isnumeric 這個方法
print(num2.isnumeric())
print(num3.isnumeric())
print(num4.isnumeric())
# True
# True
# True

# ''.isdecimal(): unicode
# print(num1.isdecimal())  # 直接報錯,num1 根本就沒有isdecimal 這個方法
print(num2.isdecimal())
print(num3.isdecimal())
print(num4.isdecimal())
# True
# False
# False


# ''.isdigit() :bytes,unicode
print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit())
print(num4.isdigit())
# True
# True
# False
# False

# isdigit() 字元串是否是數字, 直接 int() 非數字的字元串會直接報錯
# 用來判斷字元串是否是純數字
age = input('>>>:')
if age.isdigit():
    print(f"age = {age}")
else:
    print("請好好輸入")
    # 後續代碼待完善,用pass 頂一下,後續再寫
    pass  # 在if、while、for中不知道寫什麼了,可以暫時用 pass 補全python代碼塊結構(搭框架,然後慢慢補充)不報錯
 

 

     其他主瞭解部分

       查找指定元素的在字元串中的索引 find   rfind   index   rindex

 
# find index
s = '"kevin is dsb and kevin is sb"'
# find('dsb')  # 返回的是d字元所在的索引值,找不到的時候不報錯,返回的是 -1
# find('dsb', 0, 3)  # 在 0 - 2(3, 顧頭不顧尾) 的索引中查找字元(0, 3)限制查找範圍
print(s.find('vin'))
print(s.rfind('vin'))
# 3
# 20

# index('0')  # 返回所傳字元所在的索引值,找不到的時候會在直接報錯
# find('dsb', 0, 3)  # 在 0 - 2(3, 顧頭不顧尾) 的索引中查找字元(0, 3)限制查找範圍    
print(s.index('vin'))
# 3
print(s.rindex('vin'))
# 20
 

       統計某個字元(串)在字元串中出現的次數  count

# count
# 統計所傳參數在字元串中出現了幾次
s = '"kevin is dsb and kevin is sb"'
print(s.count('vin'))
# 2

       字元串格式化填充(對齊功能) center   ljust  rjust    zfill 可指定填充符

 
# 字元串格式化填充(對齊) center ljust  rjust  zfill
s = 'jason'
# center 把現在的字元串居中,其他的用指定字元在兩遍填充,使其達到指定長度
print(s.center(40, '$'))  # 不能左右平分的時候,右邊會比左邊多一個
print(s.ljust(40, '$'))
print(s.rjust(40, '$'))
print(s.rjust(40, ' '))  # 可以用在左對齊右對齊上
print(s.zfill(40))  # zfill z 表示zero 零
# $$$$$$$$$$$$$$$$$jason$$$$$$$$$$$$$$$$$$
# jason$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$jason
# 00000000000000000000000000000000000jason
 

       製表符擴展成指定個數 expandtabs

 
# expandtabs 擴展tab 成..指定個數..個空格 (\t 製表符)
s = 'a\tbc'
s2 = 'abc'
print(s, '---', s2)
print(s.expandtabs(), '---', s2.expandtabs())
print(s.expandtabs(6))
# a    bc --- abc
# a       bc --- abc
# a     bc
 

       轉義字元知識擴展(Python中 '\r' 的實際應用  ——>該文章中利用 '\r' 實現了命令行中實現倒計時、轉圈、百分比進度條的案例,厲害)

 
# \n 表示回車
string1 = '-a-\n-b-'
string2 = '-a-\r-b-'
print(string1)
print('--------------')
print(string2)
# -a-
# -b-
# --------------
# -b-
print()

# \r 表示將游標的位置回退到本行的開頭位置(將控制台當前行刪除)
print('-----------------', end='')
print('-a-', end='')
print('\r', end='')
print('-b-', end='')
# -b-

print()
# \b 表示將游標的位置回退一位(在控制台當前行最後刪除一個字元)
print('-----------------***', end='')
print('\b\b|||')
# -----------------*|||
 

列表

  簡介

 
# 作用:記錄多組數據,愛好
# 是否可變類型: 可變類型,可以通過索引改值(l[1] = 2)
# 是否有序:有序
# 定義:list內部原理就是for 迴圈取值,然後一個個塞到列表中去
list_a = [1, 2, 3, 4]  # list_a = list([1, 2, 3, 4])
list_a = list('[1, 2, 3, 4]')
print(list_a)
# ['[', '1', ',', ' ', '2', ',', ' ', '3', ',', ' ', '4', ']']

list_a = list('1,2,3,4')
print(list_a)
# ['1', ',', '2', ',', '3', ',', '4']

list_a = list('1234')
print(list_a)
# ['1', '2', '3', '4']
 

  切片

      推薦一篇寫得非常好的文章,其切片用列表舉例(徹底搞懂Python切片操作

      列表對象[起點索引: 終點索引: 步長]

        起點索引代表開始位置的索引值(可以為負數,負幾就是從右往左數第幾)

        終點索引代表結束位置的索引值(可以為負數,負幾就是從右往左數第幾)

        步長正負代表方向,預設值為1代表從左往右

 

 
l = [1, 2, 3, 4]
print(l[0::])
# [1, 2, 3, 4]

# 第二參數不寫預設到 最後一個,第三個參數不寫預設是1
print(l[5::-1])
# [4, 3, 2, 1] 
 

  添加元素 (.append()  .insert()   .extend())

 
# append
l = [1, 2, 3, 4]
l.append(5)
print(l)

l = [1, 2, 3, 4]
l.append([5, 6, 7])  # 尾部添加元素,被添加的數據會被當做一個元素
print(l)
# [1, 2, 3, 4, [5, 6, 7]]

# insert(索引, 要添加的元素)   -->通過索引往指定位置(索引處)添加
l = [1, 2, 3, 4]
l.insert(3, 'hello')
print(l)
# [1, 2, 3, 'hello', 4]

l = [1, 2, 3, 4]
l.insert(-1, [5, 6, 7])  # insert 意思是在某個索引前添加元素
# 被添加的數據會被當做一個元素
print(l)
# [1, 2, 3, [5, 6, 7], 4]

l = [1, 2, 3, 4]
l.insert(len(l), [5, 6, 7])  # 利用insert特點在列表最後追加元素
print(l)
# [1, 2, 3, 4, [5, 6, 7]] # extend 將列表與另一個容器對象拼接 l = [1, 2, 3, 4] l2 = ['hello', 'world'] l.extend(l2) # 將列表與另一個列表拼接,在後面追加 ---> 原理就是for迴圈一個個動態 append # l.extend([1]) # 要用extand 添加單個元素,需要將其寫成 容器類型(extend原理迴圈的對象必須是 容器類型) # l.extend(1) # 會直接報錯,因為 1 不是容器類型數據對象 print(l) # [1, 2, 3, 4, 'hello', 'world'] l = [1, 2, 3, 4] l2 = {'name': 'jason', 'age': 18} l.extend(l2) # extend 字典對象,會將字典的key 作為元素添加與列表合併(list本質for迴圈,而字典在迴圈時暴露出來的是key ) print(l) # [1, 2, 3, 4, 'name', 'age'] l = [1, 2, 3, 4] l.extend('helloworld') # extend str字元串類型,會將字元串每一個字元都單獨作為一個元素與列表合併(str可以被for 迴圈迭代遍歷) print(l) # [1, 2, 3, 4, 'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'] 
 

  刪除元素(del 對象, .pop(可選參數-->索引) .remove(參數-->元素對象))

      del 刪除

 
# del 適用於所有的刪除操作
l = [1, 2, 3, 4]
# print(del l[2])  # 會報錯, del 沒有返回值
del l[2]
print(l)
# [1, 2, 4]

# 刪除其他類型舉例
s = 'cvnm'
# print(del s)  # 會報錯, del 沒有返回值
# del s
# print(s)  # 會報錯,因為s 已經被刪掉了,現在s 是未定義的
 

     pop 與 remove

 
# pop  彈出,尾部彈出   pop有返回值,會列印當前彈出對象的值 ---> 可以用在註銷登錄時,可以獲取到用戶的用戶名
l = [1, 2, 3, 4]
print(l.pop())
print(l)
# 4
# [1, 2, 3]

l = [1, 2, 3, 4]
print(l.pop(0))  # 可以指定彈出索引處的元素
print(l)
# 1
# [2, 3, 4]

# remove
l = [1, 2, 3, 4]
print(l.remove(1))  # 刪除了已存在的元素返回 None, 不存在的元素會直接報錯(ValueError: list.remove(x): x not in list)
# print(l.remove(6))  # remove一個不存在的值,直接報錯
# print(l.remove())  # 直接報錯,remove 必須傳入一個要刪除的元素
print(l)
# None
# [1, 3, 4]
 

  模擬隊列、堆棧操作

 
# 隊列: 先進先出,後進後出
demo_list = ['first', 'second', 'third']
print(demo_list)
# ['first', 'second', 'third']

# 進隊
demo_list.append('fourth')
print(demo_list)
# ['first', 'second', 'third', 'fourth']

# 出隊
demo_list.pop(0)  # 將第一個元素刪除(第一個出列 --> 先進先出,後進後出)
print(demo_list)
# ['second', 'third', 'fourth']


# 堆棧: 先進後出,後進先出
demo_list = ['first', 'second', 'third']
print(demo_list)
# ['first', 'second', 'third']

# 進棧
demo_list.append('fourth')
print(demo_list)
# ['first', 'second', 'third', 'fourth']

# 出棧
# demo_list.pop()  # 預設參數 -1
demo_list.pop(-1)  # 將最後一個元素刪除(最後一個出列 --> 先進後出,後進先出)
print(demo_list)
# ['first', 'second', 'third']
 

  列表與字元串互轉

 
# ------------- 利用 str字元串的內置函數 split 與 join 完成 列表與字元串的互轉 -----------
l = ['hello', 'thank', 'you', 'thank', 'you', 'very', 'much']
print(l)
# ['hello', 'thank', 'you', 'thank', 'you', 'very', 'much']

connect = '-我是連接符-'
print(connect.join(l))
# hello-我是連接符-thank-我是連接符-you-我是連接符-thank-我是連接符-you-我是連接符-very-我是連接符-much
'''
# 使用字元串的 join 方法將列表轉成字元串
# 調用 .join 方法的對象就是 列表元素連接的連接符
'''

split_string = connect.join(l)
print(split_string)
print(split_string.split(connect))
# ['hello', 'thank', 'you', 'thank', 'you', 'very', 'much']

print(split_string.split(connect) == l)
# True
 

  向python 列表尾部追加元素的幾種方式(目前已知)

 
# 向python 列表尾部追加元素的幾種方式(目前已知)
# 1.append
l = [1, 2, 3, 4]
l.append([5, 6, 7])
print(l)
# [1, 2, 3, 4, [5, 6, 7]]

# 2.insert
l = [1, 2, 3, 4]
l.insert(len(l), [5, 6, 7])  # 利用insert 在列表最後追加元素
print(l)
# [1, 2, 3, 4, [5, 6, 7]]

# 3.extend 可一次性追加多個元素
l = [1, 2, 3, 4]
l.extend([5, 6, 7])
print(l)
# [1, 2, 3, 4, 5, 6, 7]
# 追加單個元素
l = [1, 2, 3, 4]
l.extend([5])  # 這裡不能寫成 5, 會報錯, 應該寫成 容器對象(列表)
print(l)
# [1, 2, 3, 4, 5]

# 4.切片 可一次性追加多個元素
l = [1, 2, 3, 4]
l[len(l): len(l)] = [5, 6, 7]
print(l)
# [1, 2, 3, 4, 5, 6, 7]
# 追加單個元素
l = [1, 2, 3, 4]
l[len(l): len(l)] = [5]  # 這裡不能直接寫成 5, 會報錯, 應該寫成 容器對象(列表)
print(l)
# [1, 2, 3, 4, 5]
 

     

 
# 關於套用對象的補充(深拷貝淺拷貝)
l = [1, 2, 3, 4]
l2 = [5, 6, 7]
l.append(l2)
print(l, l2)
print(id(l), id(l2))
# [1, 2, 3, 4, [5, 6, 7]] [5, 6, 7]
# 1894310619272 1894311439560

l2[0] = 6  # 在l append l2 之後, 改變l2 的第一個元素
print(l, l2)
print(id(l), id(l2))
# [1, 2, 3, 4, [6, 6, 7]] [6, 6, 7]
# 1894310619272 1894311439560
# 比較結果發現 l2內部改變了 並且 l1的內部元素也發生了改變
#   --> 所以這是淺拷貝,賦值完成後改變了l2的值 l1受到了影響 --> [1, 2, 3, 4, [6, 6, 7]] [6, 6, 7]
#    如果是深拷貝,賦值完成後改變l2 的值 l1 不會受到影響  -->  [1, 2, 3, 4, [5, 6, 7]] [6, 6, 7]

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

-Advertisement-
Play Games
更多相關文章
  • 本章介紹UML建模元素 1:Stereotype-也被稱為類型、構造型 UML里的元素擴展,簡單來說其功能就是在已有的類型上添加一些標記,類似於打個戳,從而生成新的東西。 簡單的說加一句話來更加清楚準確描述這個類。 2:Actor(主角、參與者)-是在系統之外與系統交互的某人或某事物,在建模過程中處 ...
  • 萬變不離其宗,不管是Java還是C++,凡是面向對象的編程語言,在設計上,儘管表現形式可能有所不同,但是其實質和所需遵守的原則都是一致的。本文便是帶領讀者去深入理解設計模式中的六大原則,以期幫助讀者做出更好的設計。 ...
  • 分支管理 軟體的版本控制以及分支管理貫穿於整個軟體產品的生命周期,日常的項目管理對於開發團隊能否有節奏且順利的交付軟體也很重要。本分支管理和版本控制規範主要分為3個部分,即分支管理規範、版本號規範、需求與代碼關聯。其中,將闡述不同的分支管理模型,以及它們的優缺點和使用的場景;描述版本號控制方式——語 ...
  • 第一次用maven創建項目的時候,因為本地倉庫中沒有jar包,需要從中央倉庫下載,所以會比較慢,因為從中央倉庫下載預設使用的國外的鏡像下載,速度比較慢,我們可以把鏡像修改為從阿裡雲下載,這樣比較快,方法,打開maven在本地的位置,找到conf文件夾下的setting,xml打開,在mirrors標... ...
  • 學完maven後,可以創建maven的javaweb工程,在創建完成後還需要一些配置,下麵來說下具體步驟,在這裡我創建的是一個模塊,創建web項目的方式和創建模塊一樣 ...
  • MyBatis Plus是一個 MyBatis的增強工具,在 MyBatis 的基礎上只做增強不做改變,使用MyBatis Plus時,不會影響原來Mybatis方式的使用。 SpringBoot+MyBatis Plus環境搭建 SQL腳本: CREATE TABLE ( int(11) NOT ...
  • 二叉樹創建 先序線索、中序線索,通過線索進行的 先序遍歷、中序遍歷。 main.cpp: #include <iostream> #include <queue> #include "ThreadedBinaryTree.h" using namespace std; int main() { qu ...
  • Java 虛擬機中定義的 Class 文件格式。每一個 Class 文件都對應著唯一一個類 或介面的定義信息,但是相對地,類或介面並不一定都得定義在文件里(譬如類或介面也可以通過 類載入器直接生成)。本章中,我們只是通俗地將任意一個有效的類或介面所應當滿足的格式稱為 “Class 文件格式”,即使它 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...