數據類型的內置方法 可變類型與不可變類型

来源:https://www.cnblogs.com/lzy199911/archive/2023/01/17/17058956.html
-Advertisement-
Play Games

數據類型的內置方法 什麼是數據類型的內置方法? ​ ==數據類型自帶的操作方法或功能== 調用數據類型的內置的方法的方式是: ​ ==句點符== 數據類型.方法名() eg: 變數名.方法名() 數據值.方法名() 1.整型相關操作方法 類型轉換 int(待轉換的數據類型) 1.浮點型可以轉整型 ' ...


數據類型的內置方法

什麼是數據類型的內置方法?

數據類型自帶的操作方法或功能

調用數據類型的內置的方法的方式是:

句點符

數據類型.方法名()

eg:
	變數名.方法名()
    數據值.方法名()

1.整型相關操作方法

  • 類型轉換

    int(待轉換的數據類型)

    1.浮點型可以轉整型 '只要小數點前面的整數 不做四捨五入'
    
    2.字元串可以轉整型 '但是字元串內部必須是整數才可以'
    
    3.布爾值的使用 int(True) #1  int(False) #0
    
    4.其他類型轉整型會報錯
    
  • 進位數轉換

    十進位轉其他進位:
    十進位轉二進位>>bin()
    十進位轉八進位>>oct()
    十進位轉十六進位>>hex()
    
    '''
    0b >>> 二進位標識
    0o >>> 八進位標識
    0x >>> 十六進位標識
    數字開頭沒有任何標識的激素hi十進位
    '''
    
    其他進位轉十進位
    '''自動轉'''
    二進位轉十進位>>int(0b0101110101)
    二進位轉八進位>>int(0o155)
    二進位轉十六進位>>int(0x64)
    '''手動轉'''
    二進位轉十進位>>int('0b0101110101',2)
    八進位轉十進位>>int('0o155',8)
    十六進位
    轉十進位>>int('0x64',16)
    

2.浮點型相關操作方法

  • 類型轉換

    float(待轉換的數據)

    1.整型可以轉成浮點型 '後面跟一個小數點1.0'
    
    2.字元串可以轉成浮點型 '但是字元串內必須是數字(整數或者小數)'
    
    3.布爾值的使用 int(True) #1.0  int(False) #0.0
    
    4.其他類型轉浮點型會報錯
    
  • 數學運算邏輯容易出錯

    a = 23.00
    b = 1.2
    c = a * b
    print(c) # 27.599999999999998
    
    '''
    由以上舉例得出:python對數字運算精確度很低,容易出錯!
    如需要精準的計算需藉助其他模塊!
    '''
    

3.字元串相關操作方法

  • 類型轉換

    str(待轉換的數據)

    1.所有的數據類型都可以轉換成字元串類型
    
    2.給所有數據類型前後加引號也可以轉換成字元串類型
    
  • 常用內置方法

    • 1.索引取值(單個字元串)

      1.索引取值是從0開始的 顧頭不顧尾
      2.超出索引的取值範圍就會報錯
      3.索引支持負數 [-1] 就是取最後一個
      
      s1 = 'abcde'
      print(s1[0])   # a
      print(s1[-1])  # e
      
    • 2.切片取值(多個字元)

      l1 = [1,2,3,4,5,6,7]
      print(l1[:])  # [1,2,3,4,5,6,7]全要
      print(l1[:3]) #[1,2,3]要前3個
      print(l1[2:]) #[3,4,5,6,7]前2個不要剩下的全要
      print(l1[2:5])#[3,4,5]要索引2-索引5之間的 索引顧頭不顧尾 所以最後一位不拿
      print(l1[-3:-1])#[5,6] 從後往前拿
      
    • 3.修改切片間隔

      s1 = 'abcde'
      print(s1[0:5:1]) # abcde 取索引0~索引4的值且間隔1
      print(s1[0:5:2]) # ace   取索引0~索引4的值且間隔2
      print(s1[::2])   # ace   取所有值且間隔2
      
    • 4.統計字元次數

      len(待統計的變數名或數據值)

      s1 = 'abcde'
      print(len(s1))  # 5
      
    • 5.移除首尾指定字元

      strip(想要移除的符號)

      name = '$張三$'
      
      1)移除首尾所有指定字元
        print(name.strip('$'))   # 張三   
      2)移除首指定字元
        print(name.lstrip('$'))  # 張三$ 
      3)移除尾指定字元
        print(name.rstrip('$'))  # $張三  
      4)括弧內不寫預設移除空格
        print(name.strip())      # 張三   
        '常用於獲取用戶輸入移除用戶不小心打的空格'
      
    • 6.切割字元串中的指定字元

      split('')當字元串中有多個重覆字元分割不同數據時,可切割該指定字元以列表的形式顯示

      a = 'aaa|bbb|ccc'
      
      1)切割所有指定字元
        print(a.split('|'))  # ['aaa', 'bbb', 'ccc'] 
        #註意:此處可以用【解壓賦值】依次賦值給不同變數名!
      2)從左往右切指定個數
        print(a.lsplit('|',maxsplit=1))  #['aaa', 'bbb|ccc'] 
      3)從右往左切指定個數
        print(a.rsplit('|',maxsplit=1)) #['aaa|bbb', 'ccc'] 
      
      
    • 7.字元串大小寫相關

      uppre() lower() isupper() islower()常用於驗證碼

      a = 'aHGdb'
      1.將字元串全部轉成大小寫
      print(a.upper())
      print(a.lower())
      
      2.判斷當前字元串是否為純大小寫 結果是布爾值
      print(a.isupper())
      print(a.islower())
      
    • 8.字元串格式化輸出

      方式1):等價於%s 沒優勢
           lx = '我的名字是{},我的年齡是{}'
           print(lx.format('張三',18))
           #結果為:我的名字是張三,我的年齡是18
      方式2):支持索引取值,可以重覆使用
           lx = '我的名字是{0},我的年齡是{1}{0}{1}'
           print(lx.format('張三',18))
           #結果為:我的名字是張三,我的年齡是18張三18
      方式3):支持關鍵字取值(按K取值),可重覆使用
           lx = '名字是{name}{name}年齡是{age}'
           print(lx.format(name='張三',age=18))
           #結果為:名字是張三張三年齡是18
      方法4):最常用!!!*****************
           name = '張三'
           age = 18
           print(f'名字是{name}年齡是{age}')
           #結果為:名字是張三年齡是18
      
      
    • 9.判斷字元串中是否是純數字

      isdigit()判斷是否為純數字 常用於用戶輸入時校驗 結果是布爾值

      print('123'.isdigit())  # True
      print('123a'.isdigit()) # False
      
  • 其他內置方法

    • 1.替換字元串中指定內容

      replace()括弧內寫被替換的字元與 想要替換的字元

      a='a a a b b b'
      
      1)從左往右替換所有指定內容
        print(a.replace('a','c'))
        #結果為:c c c b b b
      2)從左往右替換指定個數的內容
        print(a.replace('a','c',1))
        #結果為:c a a b b b
      
    • 2.字元串的拼接

      '' . join([a,b]) 引號中間可以加想要拼接的字元 也可以不寫 a,b分別是想要拼接起來的數據

      a='張'
      b='三'
      
      方式1):直接用+號,但是易占用較多記憶體
          print(a+b)  # 張三
      方式2):直接*該字元串實現拼接多個
          print(a*2)  # 張張
      方式3):建議使用join方法!切可以在拼接中插入指定字元
          print(''.join([a,b]))   # 張三
          print('|'.join([a,b]))  # 張|三
      
    • 3.統計指定字元出現的次數

      count()統計個數

      a='aabcdef'
      print(a.count('a')) #2
      '''統計a出現的次數'''
      
    • 4.判斷字元串開頭或者結尾

      startswith()判斷開頭是否為某個值

      endswith()判斷結尾是否為某個值

      a='hello'
      
      #判開頭是否是'he'
        print(a.startswith('he')) # True
      #判斷結尾是否是'lo'
        print(a.endswith('lo')) # True
      
      
    • 5..查找某個字元對應索引值

      index() 存在則返回索引值 如果有相同的 則只會返回從左邊數第一個查到的某個字元的索引值 不存在則報錯

      find()存在則返回索引值 如果有相同的 則只會返回從左邊數第一個查到的某個字元的索引值 不存在返回-1

      a='helloh'
      
      #獲取'h'的索引值 不存在則報錯
        print(a.index('h')) # 0
      #獲取'a'的索引值 不存在則返回-1
        print(a.find('a'))  # -1
      
      
    • 6.正文相關轉換首字母大寫

      title() 將所有字元串的首字母大寫

      capitalize() 將第一個字元串的首字母大寫

      a = 'my name is zhangsan'
      1)將所有單詞的首字母大寫
        print(a.title())
        #結果為:My Name Is Zhangsan
      2)將字元串第一個字母大寫
        print(a.capitalize())
        #結果為:My name is zhangsan
      
      

4.列表相關操作方法

  • 類型轉換

    list(其他數據類型)

    能夠被for迴圈的數據都可以轉換成列表

    支持for迴圈的數據類型有:列表、字典(只有k參與)、元組、集合、字元串

    字元串、字典、元組、集合:
    
    print(list('123'))  # ['1', '2', '3']
    print(list({'name':'張三','age':'18'}))  # ['name', 'age']
    print(list((1,2,3)))  # [1, 2, 3]
    print(list({1,2,3}))  # [1, 2, 3]
    
    
  • 常用內置方法

    • 1.索引取值(單個數據值)

      '''
      1.索引值是從0開始(顧頭不顧尾)
      2.超出索引範圍會直接報錯
      3.索引可跟負數,[-1]為取最後一個
      '''
      l1 = [1, 2, 3]
      print(l1[0])   # 1
      print(l1[-1])  # 3
      
      
    • 2.切片取值(多個數據值)

      l1 = [1,2,3,4,5,6,7]
      print(l1[:])  # [1,2,3,4,5,6,7]全要
      print(l1[:3]) #[1,2,3]要前3個
      print(l1[2:]) #[3,4,5,6,7]前2個不要剩下的全要
      print(l1[2:5])#[3,4,5]要索引2-索引5之間的 索引顧頭不顧尾 所以最後一位不拿
      print(l1[-3:-1])#[5,6] 從後往前拿
      
    • 3.修改切片間隔

      l1 = [1,2,3,4,5]
      print(l1[0:5:1]) # [1,2,3,4,5] 取索引0~索引4的值且間隔1
      print(l1[0:5:2]) # [1,3,5]     取索引0~索引4的值且間隔2
      print(l1[::2])   # [1,3,5]     取所有值且間隔2
      
      
    • 4.統計列表數據值個數

      len() 統計數據值個數

      l1 = [1,2,3,4,5]
      print(len(l1))  # 5
      
      
    • 5.修改數據值

      通過索引找出想要修改的數據值 直接賦一個新的數據值

      l1 = [1,2,3,4,5]
      l1[0] = 'z'
      print(l1)
      #結果為:['z',2,3,4,5]
      
      
    • 6.添加數據值

      append()尾部追加

      insert()括弧內跟索引 與 想要插入的數據值

      extend()合併兩個列表

      1)尾部追加數據值
        l1 = [1, 2, 3, 4, 5]
        l1.append('zzz')
        print(l1)
        #結果為:[1, 2, 3, 4, 5, 'zzz']
      2)任意位置插入數據值(在索引幾的位置插入什麼數據)
        l1 = [1, 2, 3, 4, 5]
        l1.insert(1,'zzz')
        print(l1)
        #結果為:[1, 'zzz', 2, 3, 4, 5]
      3)擴展列表、合併列表
        l1=[1,2,3]
        l2=[4,5,6]
      方式一:不建議使用
        print(l1+l2)
        #結果為:[1,2,3,4,5,6]
      方式二:底層是用for+append實現的
        l1.extend(l2)
        print(l1)
        #結果為:[1,2,3,4,5,6]
      
      
    • 7.刪除數據

      del() eg:del l1[0] 刪除列表1中的索引值為0的數據值

      remove()刪除指定數據

      pop()彈出後可以賦給一個變數名 然後刪除 也可以接著用

      l1 = [1,2,3,4,5]
      1)通用刪除 del:(刪除某個索引對應的值)
        del l1[0]
        print(l1)
        #結果為:[2, 3, 4, 5]
      2)指定刪除 remove:(徹底刪除指定的數據值)
        l1.remove(2)
        print(l1)
        #結果為:[1, 3, 4, 5]
      3)取出後刪除 pop:(可以把取出的值賦值給一個變數)
        '括弧內不寫預設最後一個,0代表第一個,1代表第二個'
        l1.pop()
        print(l1)
        #結果為:[1, 2, 3, 4]
        a = l1.pop()
        print(a)
        #結果為:5
        pop常用於觀展人數中,xxx退出觀戰
      
      
    • 8.查看數據值對應的索引值

      index() 查看某個數據的索引值

      l1=[1,2,3,4]
      print(l1.index(1))
      #結果為:0
      
      
    • 9.統計某個數據值出現的次數

      count()統計數據值出現的次數

      l1=[1,1,2,3,4,5]
      print(l1.count(1))
      #結果為:2
      
      
    • 10.數據值排序

      sort()升序

      sort(revrese = True)降序

      l1=[4,2,5,1,2,3]
      1)升序:
        l1.sort()
        print(l1)
        #結果為:[1, 2, 2, 3, 4, 5]
      2)降序:
        l1.sort(reverse=True)
        print(l1)
        #結果為:[5, 4, 3, 2, 2, 1]
      
      
    • 11.反轉列表數據值順序

      reverse()將列表反轉

      跟升序降序不同

      l1=[4,2,5,1,2,3]
      l1.reverse()
      print(l1)
      #結果為:[3, 2, 1, 5, 2, 4]
      
      
    • 12.兩個列表比較

      a = [99,11]
      b = [11,22,33]
      print(a > b)
      #結果為:True
      
      l1 = ['a','b']
      l2 = ['A','B']
      print(l1 > l2)
      #結果為True
      '''
      1.兩個列表在比較大小時,是按照索引0來互相比較。
      2.不同數據類型之間無法比較
      3.a比A大的原因是因為中間涉及到字元編碼。a=97 A=65
      '''
      
      

5.字典相關操作方法

  • 類型轉換

    dict(其他數據類型)

    字典一般是直接定義 不類型轉換

  • 常用內置方法

    • 1.字典取值

      按k取值

      .get()常用來取字典中的k鍵

      按k取值 k不存在就會報錯
      
      d = {'name':'張三','age':18}
      print(d['name'])
      #結果為:張三
      print(d['xxx'])
      #結果為:會報錯
      
      get取值 k不存在時返回none
      
      d = {'name':'張三','age':18}
      print(d.get('name'))
      #結果為:張三
      print(d.get('xxx'))
      #結果為:None
      
    • 2.修改字典v值

      直接按k鍵 = 想要修改的新數據值

      d = {'name':'張三','age':18}
      d['name']='李四'
      print(d)
      #結果為:{'name': '李四', 'age': 18}
      
      
    • 3.新增鍵值對

      當k存在時 修改k對應的v值

      當k不存在時 新增鍵值對

      d = {'name':'張三','age':18}
      d['pwd']=123
      print(d)
      #結果為:{'name': '張三', 'age': 18, 'pwd': 123}
      
      
    • 4.刪除數據

      del 直接刪除

      pop() 可以給彈出的數據值綁定一個變數名 接著用

      d = {'name':'張三','age':18}
      
      1)del d['name'] #刪除name的鍵值對
      
      2)a = d.pop('name')
        print(a)#列印出來的就是刪除掉的V值
        print(d)#列印出來的就是刪除後的列表
      
      
      
    • 5.統計字典中的鍵值對個數

      len()統計字典中鍵值對的個數

      d = {'name':'張三','age':18}
      print(len(d))
      #結果為:2
      
      
    • 6.獲取所有鍵、值、鍵值對數據

      keys() 獲取所有鍵 k

      values()獲取所有值 v

      items()獲所有鍵值對 k:v 支持for迴圈

      d = {'name':'張三','age':18}
      d = {'name':'張三','age':18}
      
      獲取所有【鍵】
          print(d.keys())   # dict_keys(['name', 'age'])
      獲取所有【值】
          print(d.values()) # dict_values(['jason', 18])
      獲取所有【鍵值對】(組成列表套元組形式)
          print(d.items())  # dict_items([('name', 'jason'), ('age', 18)])
      
          
      items獲取的值 支持for迴圈:
      for k,v in d.items():
          print(f'{k}:{v}')
          #結果為:
          #name:jason
          #age:18
      
      
    • 7.快速構造字典

      dict.formkeys( [ ' ' , ' ' ],' ' )

      快速生成一個值相同的字典
      '第一個列表裡的數據值當作鍵,第二個是公共的數據值(所有鍵的值都相同)'
      
      d1=dict.fromkeys(['name','pwd','hobby'],123)
      print(d1)
      #結果為:{'name': 123, 'pwd': 123, 'hobby': 123} 後期可以再單個修改對應的值數據
      
      
      筆試題:
      res=dict.fromkeys(['name','pwd'],[])
      print(res)#{'name': [], 'pwd': []}
      res['name'].append('jason')
      res['pwd'].append(123)
      print(res)#{'name': ['jason', 123], 'pwd': ['jason', 123]}
      '當第二個公共數據值是可變類型的 通過任何鍵調用內置方法去修改值時會影響所有的鍵'
      
      
    • 8.從列表中取出最後的鍵值對

      popitem()

      d={'name':'jason','age':18,'pwd':'123'}
      print(d.popitem()) # 也可以賦值給一個變數名,列印變數名
      #列印第一次結果為:('pwd', '123')  
      print(d.popitem())
      #列印第二次結果為:('age', 18)
      print(d)
      #此時列印字典的結果為:{'name': 'jason'}
      
      當沒有鍵值對可列印時會報錯
      
      

6.元組相關操作方法

  • 類型轉換

    tuple(其他類型數據)

    支持for迴圈的數據類型都支持轉成元組:列表、字典、字元串、集合

    print(tuple([1,2,3])) # (1,2,3)
    print(tuple({'name':'張'})) # ('name',)
    print(tuple((1,2,3))) # (1,2,3)
    print(tuple({1,2,3})) # (1,2,3)
    
    
  • 常用內置方法

    • 註意:

      註意:
      1.元組內如果只有一個數據值,結尾要跟逗號
          t1 = () #空元組
          t1 = (1,)
      2.元組內索引綁定的記憶體地址不能被修改#除非是可變類型[元組裡面的列表就可以增加或者刪除]
          t1 = (1, 2, 3, [1, 2])
          # t1.append(5) #結果會報錯!
          t1[-1].append(5)
          print(t1)  # (1, 2, 3, [1, 2, 5])
      3.元組不能新增或刪除數據#除非是可變類型
      
      
    • 1.索引取值

      t1=(1,2,3,4,5)
      print(t1[0])   # 1
      print(t1[-1])  # 5
      
      
    • 2.切片操作

      t1=(1,2,3,4,5)
      print(t1[:])   # (1,2,3,4,5) 取所有值
      print(t1[:3])  # (1,2,3) 取索引0~索引2的值
      print(t1[1:3])  # (2,3) 取索引1~索引2的值
      print(t1[-3:-1])  # (3,4) 取倒數第二(包含)~倒數第一(不包含)的值
      
      
    • 3.切片間隔/方向

      t1=(1,2,3,4,5,6)
      print(t1[0:5:1]) # (1,2,3,4,5) 取索引0~索引4的值且間隔1
      print(t1[0:5:2]) # (1,3,5)   取索引0~索引4的值且間隔2
      print(t1[::2])   # (1,3,5)   取所有值且間隔2
      print(t1[::-1])  # (6,5,4,3,2,1) 取所有值並改變字元串方向(後進先出)
      
    • 4.統計數據值個數

      len()想要統計的數據

      t1=(1,2,3,4,5,6)
      print(len(t1))  # 6
      
      
    • 5.統計某個數據值出現的次數

      count()

      t1=(1,2,3,4,5,6)
      print(t1.count(2))  # 1
      
      
    • 6.統計元組內對應索引值

      index()

      t1=(1,2,3,4,5,6)
      print(t1.index(1))  # 0
      
      

7.集合相關操作方法

  • 類型轉換

    set(其他類型數據)

    print(set('abc'))  # {'a','b','c'} 字元串
    print(set([1,2,3]))  # {1, 2, 3} 列表
    print(set({'name':'jason'}))  # {'name'} 字典
    print(set((1,2,3)))  # {1, 2, 3} 元組
    
    整型、浮點型、布爾值會報錯
    
    註意:
    1.集合里的'數據值'必須是不可變類型(整型、浮點型、字元串、元組)
    2.集合內是無序的 沒有索引概念
    3.如果想單獨取數據值應該轉成列表去取。
    
    
  • 常用內置方法

    集合不常用 只在去重、關係運算時才會考慮使用集合

    • 1.去重

      先轉成列表在轉成集合

      eg:把以下列表去重
      l1=[1,2,3,2,1,3]
      s1=set(l1) #把該列表轉成集合
      l1=list(s1) #把該集合再轉回列表
      print(l1)
      #結果為:[1, 2, 3]
      
      '集合的去重是無序的,有時候無法保留原先順序'
      
      
    • 2.關係運算

      常用做差異校驗
      eg:模擬兩個人的好友
      f1 = {'jason','tony','oscar','jerry'}
      f2 = {'kevin','jerry','jason','lili'}
      
      1.求f1和f2的共同好友
      print(f1 & f2) #{'jason','jerry'}
      2.求是f1單獨認識的好友
      print(f1 - f2)#{'oscar','tony'}
      3.求f1和f2所有的好友
      print(f1 | f2)#{'oscar','jason','kevin','lili','tony','jerry'}
      4.求f1和f2各自單獨認識的好友
      print(f1 ^ f2)#{'lili','oscar','tony','kevin'}
      5.父集、子集
      print(f1 < f2)#false
      print(f1 > f2)#false
      '集合在做父子比較時是依照誰包含誰來判斷'
      
      

可變類型與不可變類型

可變類型 不可變類型
字典、列表、集合 整型、浮點型、字元串、布爾值
值改變、記憶體地址不變(改自身) 值改變、記憶體地址也變(產生一個新的結果)

1.不可變類型

#值改變,記憶體地址也變(產生新的結果)
s1='$$jason$$'
s1.strip('$')

'由於產生的是新的結果,所以列印原字元串沒有變化'
print(s1)  
#結果為:$$jason$$

'因為產生了新的結果,所以可以列印出來(可直接列印出來,也可以賦值一個變數名接收後列印)''
print(s1.strip('$'))  
#結果為:jason

2.可變類型

 #值改變,記憶體地址不變(改自身)
l1=[11,22,33]
l1.append('z')

'由於改的是自身 所以列印原本的列表就是修改後的列表'
print(l1)  
#結果為:[11,22,33,'z']

'因為沒有產生新的結果,所以列印出來的是None'
print(l1.append('z'))  
#結果為:None

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

-Advertisement-
Play Games
更多相關文章
  • 京東物流:康睿 姚再毅 李振 劉斌 王北永 說明:以下全部均基於elasticsearch8.1 版本 一.跨集群檢索 - ccr 官網文檔地址: https://www.elastic.co/guide/en/elasticsearch/reference/8.1/modules-cross-cl ...
  • 前言 做線上幀率監控上報時,少不了需要弄明白如何通過代碼獲取實時幀率的需求,這篇文章通過圖解配合Flutter性能調試工具的方式一步步通俗易懂地讓你明白獲取幀率的基礎知識,以後再也不愁看不懂調試工具上指標了。 說說 List<FrameTiming> Flutter 中通過如下方式監聽幀率,addT ...
  • 華為運動健康服務(HUAWEI Health Kit)6.9.0版本新鮮出爐啦! 一文瞭解新增功能,快來一起加入Health Kit生態大家庭! 一、更豐富:睡眠呼吸記錄健康數據開放 呼吸機是用於為患者提供或增加肺通氣的常用醫療器械,目前越來越多的家用呼吸機被用於緩解人們在日常睡眠過程中的打鼾、睡眠 ...
  • 2023-01-17 一、Servlet底層源碼分析 1、Servlet結構圖 說明:HttpServlet繼承了GenericServlet類,GenericServlet實現了“ServletConfig”和“Servlet”兩個介面,因此所以要實現一個Servlet直接就可以繼承HttpSer ...
  • 2023-01-13 一、基本功 (1)工程結構管理 掌握企業環境的搭建和管理 (2)java開發規範 P3C開發規約 (3)高併發及網路編程 需要考慮性能瓶頸 (4)底層源碼分析 二、互聯網常用技術——分散式 1、NoSQL資料庫:是提升數據訪問效率的優先選擇。 訪問效率的提升:Redis、Mon ...
  • 1. API 網關誕生背景 前言 API 經濟生態鏈已經在全球範圍覆蓋, 絕大多數企業都已經走在數字化轉型的道路上,API 成為企業連接業務的核心載體, 並產生巨大的盈利空間。快速增長的 API 規模以及調用量,使得企業 IT 在架構上、模式上面臨著更多的挑戰。 API 是什麼 API 網關是一個服 ...
  • CAP特性 ​ CAP理論是在設計分散式系統的過程中,處理數據一致性問題時必須考慮的理論,一個分散式系統最多只能同時滿足一致性(Consistence)、可用性(Availability)和分區容錯性(Partition tolerance)這三項中的兩項。 2000年7月Eric Brewer教授 ...
  • 前言 今日偶然打開 $oi-wiki$,發現樹形 $DP$ 例題正好是之前在洛谷上鴿著的一道題。所以...... $\color{red}{很高興以這樣的方式認識你,樹形 DP !}$ 這例題造的太好了,簡直是無痛入門(感動.jpg) P1352 沒有上司的舞會 題目傳送門~ 思路剖析 狀態定義 $ ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...