当前位置: 首页 > news >正文

Python 3入门指南

1. Python 的安装
  • 在 Windows 上安装

    1. 访问 Python 官方网站。
    2. 下载最新的 Windows 安装程序(推荐选择 64-bit installer)。
    3. 运行下载的 .exe 文件。
    4. 在安装向导的第一个界面,一定要勾选 “Add Python to PATH” 选项。
    5. 点击 “Install Now” 开始安装。
  • 在 Linux 上安装

    • 对于基于 Debian/Ubuntu 的系统:sudo apt update && sudo apt install python3
    • 对于基于 Red Hat/CentOS 的系统:sudo yum install python3
  • 在 macOS 上安装

    1. 在终端中安装 Homebrew:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    2. 使用 Homebrew 安装 Python:brew install python

2. 变量
  • 变量就像一个“容器”,用来存储数据。
  • 语法: 变量名 = 值
  • 变量命名规范:
    1. 只能包含字母、数字、下划线。
    2. 不能以数字开头。
    3. 不能使用关键字。
    4. 区分大小写。
  • 命名风格:
    • 小驼峰命名法(camelCase)
      getNameByLine = "zhangsan"
      
    • 大驼峰命名法(PascalCase)
      class GetNameByLine:pass
      
    • 蛇形命名法(snake_case)
      get_name_by_line = "zhangsan"
      

3. 数据类型
  • 基本类型: intfloatstringboolean

  • type() 查看数据类型

  • 类型转换:

    • str -> int: int(a)
    • str -> float: float(a)
    • int -> str: str(a)
    • float -> str: str(a)
    • int -> float: float(a)
    • float -> int: int(a)
  • 输入整数求和与差:

    one = input("请输入第一个数:")
    two = input("请输入第二个数:")
    print(one + two)
    print(int(one) + int(two))
    print(float(one) + float(two))
    print(int(one) - int(two))
    print(float(one) - float(two))
    

4. 运算符
  • 赋值运算符: =
  • 算术运算符: +, -, /, *, %, //, **
  • 复合赋值运算符: +=, -=, *=, /=, //=, **=, %=
  • 三位整数拆解:
    num = int(input("请输入一个三位整数"))
    print("个位数是:", num % 10)
    print("十位数是:", num // 10 % 10)
    print("百位数是:", num // 100)
    
  • 关系运算符: ==, !=, <, >, <=, >=, is
  • 逻辑运算符: and, or, not

5. 条件语句
  • if 格式:
    if 条件:# 条件成立
    
  • if-else 格式:
    if 条件:# 条件成立
    else:# 条件不成立
    
  • if-elif-else 格式:
    if 条件:# 条件成立
    elif 条件1:# 条件成立
    else:# 条件不成立
    
  • 猜数字游戏:
    import random
    ran = random.randint(1, 10)
    guess = int(input("请输入数字:"))
    if ran == guess:print("恭喜你猜对了")
    elif ran > guess:print("你猜的数字小了")
    else:print("你猜的数字大了")
    

6. 循环语句
  • while 循环格式:
    while 条件:# 要执行的代码
    
  • for 循环格式:
    for 变量 in 序列:# 要执行的代码
    
  • 打印 1-10:
    n = 1
    while n <= 10:print(n)n += 1
    
  • 1-50 中被 3 整除的数:
    n = 1
    while n <= 50:if n % 3 == 0:print(n)n += 1while n <= 50 and n % 3 == 0:print(n)n += 1
    
  • for 循环示例:
    for i in range(5):print(f"当前数字是: {i}")
    
  • 循环控制:breakcontinue
    • break:终止整个循环。
    • continue:跳过本次循环,进入下一次迭代。

7. 字符串(str
  • is vs ==
    • is:比较内存地址 id()
    • ==:比较值。
  • 索引: 正索引 (0len-1) 和反向索引 (-1-len)。
  • 切片: s[start:end:step]
    s = 'ABCDEFG'
    print(s[1:4])       # BCD
    print(s[:5])        # ABCDE
    print(s[-3:])       # EFG
    print(s[::-1])      # GFEDCBA
    print(s[::-2])      # GECA
    print(s[6:0:-2])    # GEC
    
  • 常见操作:
    '''
    替换 replace
    切割 split rsplit splitlines partition rpartition
    修改大小写 capitlize title upper lower
    空格处理 ljust rjust center lstrip rstrip strip
    字符串拼接 join
    '''
    s = '这是小周的Python学习笔记,欢迎大家阅读,小周很乐意帮助你'
    result = s.replace('小周', 'yanleaf', 1)  # 替换replace(old,new,count)默认替换全部,可以通过count指定替换次数
    print(result)
    s = '小周 小明 小红'
    result = s.split(' ', 1)
    print(result)  # split('分隔符',maxsplit)返回一个列表 maxsplit指定最多分割次数 rsplit()跟split同理
    s = '''小周加油
    小周要加油
    小周努力加油
    '''
    result = s.splitlines()  # 按行分割
    print(result)
    s = '小周 小明 小红'
    result = s.partition(' ')  # partition()返回一个元组
    print(result)s = 'hello WOrld'
    result = s.title()  # title() 首字母大写
    print(result)
    result = s.upper()  # upper() 全字符串大写
    print(result)
    result = s.lower()  # lower() 全字符串小写
    print(result)
    result = s.capitalize()  # capitalize() 第一个单词首字母大写
    print(result)# admin  admin
    s = ' admin '
    print(len(s))
    result = s.strip()  # 去除左右两边空格
    print(len(result))
    print(result)
    result = s.lstrip()  # 去除左侧空格
    print(len(result))
    print(result)
    result = s.rstrip()  # 去除右侧空格
    print(len(result))
    print(result)
    s = 'hello world'
    result = s.center(20)  # center(width,fillchar) 居中
    print(result)
    result = s.ljust(20)  # ljust(width,fillchar) 左对齐
    print(result)
    result = s.rjust(20)  # rjust(width,fillchar) 右对齐
    print(result)
    s1 = 'hello'
    s2 = 'world'
    result = ','.join([s1, s2])
    print(result)
    # 格式化
    '''
    %d %s %f
    print('name is %s' %xx)
    format
    '''
    name = '小周'
    age = 18
    height = 1.75
    print('name is %s,age is %d,height is %f' % (name, age, height))
    print('name is {},age is {},height is {}'.format(name, age, height))
    name = '小明'
    age = 18
    result = 'name is {0},age is {1},我也是{1}'.format(name, age)
    print(result)
    result = 'name is {name},age is {age},我也是{age}'.format(name='yanleaf', age=21)
    print(result)name = '小明'
    score_chinese = 80
    score_math = 90
    s = '{0}本次考试数学分为:{2},语文分数为:{1},英语分数:{2}'.format(name, score_math, score_chinese)
    print(s)
    s = '{name}本次考试数学分为:{score_math},语文分数为:{score_chinese},英语分数:{score_math}'.format(name='小周', score_math=90, score_chinese=80)
    print(s)
    

8. 列表(List)
  • 定义: []

  • 获取元素: 通过索引和切片。

  • 切片示例:

    '''
    列表
    空列表 []
    有内容的列表 ['A','B'],[1,2,3,4] [3.5,3.9]
    '''
    list1 = []
    # print(type(list1))
    list2 = ['牛奶', '面包', '火腿肠', '辣条', '臭豆腐', '食盐', '方便面']
    list3 = ['牛奶', '面包', '火腿肠', '辣条', '臭豆腐']
    # 获取列表里面元素 通过索引(下标)
    print(list3[0])
    print(list3[3])
    # 切片 0 1 2 不['牛奶', '辣条']包含2 所以得出为['牛奶', '面包']
    print(list3[:2])
    # 没有指定 start 和 end,所以默认从最后一个元素开始(因为 step 是负数)。
    # step = -3 表示从后往前每隔两个元素取一个值。
    # 第一个值 索引(4)臭豆腐 然后减3 得出索引(1)面包,1-3=-2 超出索引停止切片
    print(list3[::-3])
    # 食盐 辣条
    print(list2[-2:-5:-2]) # [start:end:step]
    print(list2[::3])
    print(list2[-2::-5])
    
  • 添加、删除、修改、查询:

    '''
    添加 删除 修改 查询
    '''
    list1 = []
    list2 = ['面包']
    list1.append('牛奶')
    list1.append('吐司')
    list1.append('鸡蛋')
    # print(list1)
    list2.append('薯条')
    # print(list2)
    # list1,list2
    # list1=list1+list2
    # print(list1)# list1.extend(list2)  # extend 扩展
    # print(list1)
    '''
    数字 n=1+3
    字符串 s= 'aa'+'bb' ---> aabb
    列表 list0=[1,2,3]+['a','b']-->[1,2,3,'a','b']
    ''''''
    买多件
    商品名称 价格 数量
    '''
    # isBoolean = True
    # container = []  # 存放商品信息
    # while isBoolean:
    #     name = input("请输入商品名")
    #     price = input("请输入商品价格")
    #     number = input("请输入商品数量")
    #     goods = [name, price, number]
    #     # 添加商品到container
    #     container.append(goods)
    #     answer = input("是否继续添加,按q或Q退出添加")
    #     if answer.lower() == 'q':
    #         isBoolean=False
    # print("-----"*4)
    # # 遍历container
    # print('名称\t价格\t数量\t')
    # for goods in container:
    #     print(goods[0],float(goods[1]),goods[2])'''
    删除 pop remove clear
    pop(index):根据下表删除列表元素,超出范围会出现IndexError: pop index out of range
    pop()从后往前依次删除
    remove(element):根据元素名称删除,如果不存在则返回ValueError: list.remove(x): x not in list
    如果列表中存在多个同名元素element 只会删除喻道德第一个元素 后面元素则不会被删除
    关键字in: 元素 in 列表 表示元素是否在列表中 返回值为bool
    '''
    list1 = ['牛奶', '牛奶', '面包', '吐司', '鸡蛋', '牛奶', '火腿肠', '牛奶']
    list1.pop(-1)
    print(list1)
    print("-----"*6)
    list1.pop()
    print(list1)
    list1.pop()
    print(list1)
    # remove 删除指定元素
    list1.remove('吐司')
    print(list1)
    # 判断是否存在要删除的元素
    # if '吐司' in list1:
    #     list1.remove('吐司')
    #     print(list1)
    # else:
    #     print("没有吐司")# 删除多个元素 如果有紧挨着则会漏删一个
    # for i in list1:
    #     if i == '牛奶':
    #         list1.remove(i)
    # print(list1)n = 0
    while n < len(list1):if list1[n] == '牛奶':list1.remove('牛奶')else:n += 1
    print(list1)li = [1, 1, 1, 2, 3]
    elem = 1
    rusult_li = []
    for i in li:if i != elem:rusult_li.append(i)
    li = rusult_li
    print(li)
    for i in range(len(list1)):if list1[i] == '牛奶':list1.remove('牛奶')i -= 1
    print(list1)# 修改 insert
    # insert(位置,元素) 元素占了位置,其他元素只能向后移动
    # index(元素) 根据元素找到该元素下标 返回值是下标位置
    list2 = [1, 2, 3, 4, 5, 6, 7]
    list2.insert(1, 8)  # 在索引1位置插入8
    print(list2)
    weizhi = list2.index(5)
    list2[weizhi] = 8
    # print(list2)# 列表.count(元素) 返回整数 返回值是0则表示不存在此元素 存在则返回个数
    list1 = [1, 5, 4, 6, 7, 8, 9, 10]
    print(list1.count(5))del list1[3]  # 删除指定索引位置的元素
    print(list1)list1.clear()  # 删除列表中所有元素
    print(list1)a = 'hello'
    b = a
    c = a
    del a
    print(b,c)
    l1 = [1, 2, 3]
    l2 = l1
    l3 = l1
    del l1
    print(l2,l3)
    
  • 排序:

    #### 生成8个1-20随机整数 保存到列表中遍历打印
    import randomnumbers = []
    for i in range(8):num = random.randint(1, 20)# print(num)numbers.append(num)
    print(numbers)
    # numbers.sort() # 默认升序 从小到大 可以通过reverse参数控制升序还是降序
    # print(numbers)
    # numbers.sort(reverse=True)
    # print(numbers)
    numbers.reverse()  # 反转
    print(numbers)
    
  • 冒泡排序:

    ### 冒泡排序
    numbers = [5, 1, 4, 3, 2, 6, 7, 9, 8, 10]
    for j in range(0, len(numbers) - 1):  # 外层循环控制排序轮数for i in range(0, len(numbers) - 1 - j):  # 内层循环控制每轮排序if numbers[i] > numbers[i + 1]:  # 判断相邻元素大小a = numbers[i]  # 交换相邻元素numbers[i] = numbers[i + 1]  # 赋给相邻元素numbers[i + 1] = a
    print(numbers)
    

    ‘’’

9. 元组(Tuple)

元组的特点:

  • 元素不能修改
  • 使用小括号 ()

元组的定义:

  • 名 = ()
  • 注意: 如果元组只有一个元素,必须在元素后添加逗号,例如 ('aa',)
t1 = ()
print(type(t1))
t2 = ('aa',)
print(type(t2))
t2 = ('a', 'b', 'c', 'a')

元组的常用操作:

  • 索引和切片:

    print(t2[0])
    print(t2[1:])
    print(t2[::-1])
    
  • 查找元素:

    • count():统计指定元素出现的次数。
    • index():获取指定元素第一次出现的下标位置。
    • 使用 in 关键字判断元素是否存在。
    n = t2.count('a')
    print(n)
    n = t2.index('a')
    print(n)
    print("---" * 4)
    n = t2.index('a', 0, 3)  # 从0开始找,3结束(不包含索引3)
    print(n)
    print("---" * 4)
    n = t2.index('a', 1)  # 从索引1开始找
    print(n)
    print("---" * 4)
    if 'c1' in t2:print('c在元组中')
    print("不存在")  # 这行代码在 if 条件不满足时会被执行
    print("---" * 4)
    
  • 遍历:

    for i in t2:print(i)
    
  • 元组与列表的转换:

    • 元组转列表:list(tuple)
    • 列表转元组:tuple(list)

10. 字典(Dictionary)

字典的特点:

  • 使用花括号 {}
  • 存储键值对 key: value
  • **键(key)**必须是唯一的,**值(value)**可以重复。

字典的添加与修改:

  • 添加/修改元素: 字典名[key] = value
  • 如果键不存在,则添加新键值对。
  • 如果键已存在,则替换原来的值。
dict1 = {}
print(type(dict1))
dict1['name'] = '张三'
print(dict1)
dict1['name'] = '张三1'
print(dict1)
dict1['age'] = 18
dict1['sex'] = '男'
print(dict1)
# 改变年龄
dict1['age'] = 21
print(dict1)
dict1['source'] = 90
'''
如果字典不存在键 则添加
如果字典存在键 则修改
'''

字典的删除:

  • pop(key):根据键删除键值对,并返回被删除的值。
  • popitem():删除并返回最后一个键值对(元组形式)。
  • del 字典名[key]:删除指定的键值对。
  • clear():清空字典。

<

book = {'书名': 'python','出版社': 'xx出版社','作者': '小周','价格': 66.6
}
# book.clear()
# print(book)# r=book.pop('价格')
# print(r)
print("---" * 4)
# r = book.popitem()
# print(r)
# print(book)del book['作者']
print(book)
print("---" * 4)

字典的查询:

  • get(key, default):根据键获取值,如果键不存在,返回默认值(不报错)。
  • 字典名[key]:根据键获取值,如果键不存在,会报错 KeyError
  • len():获取字典的长度(键值对的数量)。
books = {'书名1': 'python', '价格': 20, '作者': '小周'}
value = books.get('书名2', '默认')
print(value)
# print(len(books))
value = books['书名1']
print(value)

字典的遍历:

  • 直接遍历字典,得到的是所有的键。
  • values():获取所有的值。
  • items():获取所有的键值对(元组列表)。
# for key in books:
#     print(key)print("----" * 4)
print(list(books.values()))  # ['python', 20, '小周']
print("----" * 4)
for value in books.values():print(value)
print("----" * 4)
print(books.items())
print("----" * 4)
for i in books.items():print(i)
print("-----" * 4)
# 获取键值对
for key, value in books.items():print(key, value)

字典的其他方法:

  • setdefault(key, value):如果键不存在,则添加,如果存在,则不做任何操作。
  • update(other_dict):合并其他字典。
  • fromkeys(seq):创建一个新字典,以序列 seq 中的元素作为键。
books.setdefault("书名", "python3基础语法")
print(books)
dict1 = {'a': 10, 'b': 20}
# books.update(dict1)
# print(books)
resul = books.fromkeys(dict1)
print(resul)

11. 集合(Set)

集合的特点:

  • 使用花括号 {}
  • 没有重复元素
  • 无序

集合的定义:

  • {} -> {元素, 元素, ...} -> 集合。
  • {} -> {k, v} -> 字典。
  • 使用 set() 创建空集合。
set1 = {'zhangsan'}
print(type(set1))list1 = {1, 3, 6, 9, 5, 7, 9, 8}
set2 = set(list1)
print(set2)
set3 = set()  # 空集合set
print(type(set3))
print(len(set3))

集合的添加与删除:

  • add():添加单个元素。
  • update():添加多个元素(来自另一个集合或可迭代对象)。
  • remove(element):删除指定元素,如果元素不存在会报错 KeyError
  • discard(element):删除指定元素,如果元素不存在,不报错。
  • pop():随机删除并返回一个元素。
  • del set1:删除整个集合。
  • clear():清空集合。
set3.add("三体")
print(set3)
set3.add("盗墓笔记")
print(set3)# append  extend --> list
# add  update --> set
set1.update(set3)
print(set1)set1 = {'Y6LD', '8E5Y', 'YDMI', 'D1F3', 'AFIP'}
set1.remove('Y6LD')
print(set1)
set1.discard('Y6LD')
print(set1)
# del set1
# set1.clear()
set1.add('ABCD')
print(set1)
print("---" * 4)
set1.pop()
print(set1)

验证码生成示例:

  • 使用 set 的不重复特性来生成验证码。
'''
产生五组(不允许重复) 字母和数字组成4位验证码
最终打印输出五组验证码
'''
# code_list=set()
# import random
# s='QWERTYUIOPASDFGHJKLZXCVBNM123456789'
# while True:
#     code=''
#     for i in range(4):
#         index=random.randint(0,len(s))
#         code+=s[index]
#     code_list.add(code)
#     if len(code_list)==5:
#         break
# print(code_list)

集合的运算:

  • 交集: intersection()&
  • 并集: union()|
  • 差集: difference()-
set1 = {'1', '2', '3', '4'}
set2 = {'3', '4', '5', '6'}
print(set1.intersection(set2)) # &
print(set1.union(set2)) # |
print(set1.difference(set2)) # -
print(set1 | set2) # 并集
print(set1 & set2)  # 交集
print(set1 - set2) # 差集

12.列表推导式 (List Comprehensions)

列表推导式是一种简洁而强大的语法,可以根据已有的列表或可迭代对象快速创建新列表。它能让你的代码更精炼、可读性更高。

基本格式:[ 表达式 for 变量 in 可迭代对象 ]

这种格式用于对可迭代对象中的每个元素执行相同的操作,然后将结果放入新列表中。

案例1:生成 1 到 20 的整数列表

传统的 for 循环写法:

list1 = []
for i in range(1, 21):list1.append(i)
print(list1)

列表推导式写法:

lists = [i for i in range(1, 21)]
print(lists)

带有 if 条件的格式:[ 表达式 for 变量 in 可迭代对象 if 条件 ]

这种格式用于在创建新列表时,只包含满足特定条件的元素。

案例2:生成 1 到 100 之间的所有偶数

传统的 for 循环写法:

list1 = []
for i in range(1, 101):if i % 2 == 0:list1.append(i)
print(list1)

列表推导式写法:

list1 = [i for i in range(1, 101) if i % 2 == 0]
print(list1)

案例3:从列表中筛选出所有只包含字母的字符串

list2 = ['62', 'hello', '100', 'world']
list3 = [word for word in list2 if word.isalpha()]
print(list3)

带有 if-else 的格式:[ 表达式1 if 条件 else 表达式2 for 变量 in 可迭代对象 ]

这种格式可以根据条件对每个元素进行不同的处理。

案例4:根据首字母对字符串进行大小写转换

需求: 遍历一个字符串列表。如果字符串以 h 开头,则首字母大写;否则,所有字母都转为大写。

list2 = ['62', 'hello', '100', 'world']
result = [i.title() if i.startswith('h') else i.upper() for i in list2]
print(result)

案例5:根据数字的奇偶性,进行不同的数学运算

需求: 遍历 1 到 10,如果是偶数则加 10,如果是奇数则减 5。

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = [num + 10 if num % 2 == 0 else num - 5 for num in numbers]
print(result) # 输出:[-4, 12, -2, 14, 0, 16, 2, 18, 4, 20]

嵌套循环生成笛卡尔积

可以使用嵌套的列表推导式来简化嵌套循环。

需求: 生成所有由 xy 组成的坐标点,其中 x 范围是 1 到 3,y 范围是 AC

coords = [(x, y) for x in range(1, 4) for y in 'ABC']
print(coords)
# 输出:[(1, 'A'), (1, 'B'), (1, 'C'), (2, 'A'), (2, 'B'), (2, 'C'), (3, 'A'), (3, 'B'), (3, 'C')]

字典推导式

列表推导式也可以用于生成字典。语法类似于列表推导式,只是用 {} 替代了 []

需求: 将一个列表转换为字典,键为元素,值为元素的平方。

nums = [1, 2, 3, 4, 5]
squares = {num: num**2 for num in nums}
print(squares) # 输出:{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

文章转载自:

http://GxTmUERE.dpfLt.cn
http://dio762qj.dpfLt.cn
http://ZgalpcUT.dpfLt.cn
http://IKLpm55O.dpfLt.cn
http://eKKxOOrA.dpfLt.cn
http://RPUZx8Oe.dpfLt.cn
http://AbnotFS3.dpfLt.cn
http://9Y2CeFbf.dpfLt.cn
http://TGcu4GbL.dpfLt.cn
http://K55fS8B5.dpfLt.cn
http://EZ8MBSo2.dpfLt.cn
http://eG1y1kuV.dpfLt.cn
http://ROhG88F1.dpfLt.cn
http://JthwYVze.dpfLt.cn
http://YYv4R2Ag.dpfLt.cn
http://vimp0gT5.dpfLt.cn
http://hAMfM13Q.dpfLt.cn
http://LDtAQzr1.dpfLt.cn
http://rJRA6623.dpfLt.cn
http://i4Kw1SIs.dpfLt.cn
http://UTqotdkO.dpfLt.cn
http://sGpgf3jY.dpfLt.cn
http://g4ecOdoF.dpfLt.cn
http://RQoP8Sha.dpfLt.cn
http://SVX7Xm5O.dpfLt.cn
http://rPTQ0RBN.dpfLt.cn
http://O6sl03Do.dpfLt.cn
http://10ehqayA.dpfLt.cn
http://S2VVzz6y.dpfLt.cn
http://4gF99unx.dpfLt.cn
http://www.dtcms.com/a/385280.html

相关文章:

  • I.MX6UL:EPIT
  • 企业数字化转型的 4A 架构指南:从概念解读到 TOGAF 阶段对应
  • Linux基础之部署mysql数据库
  • 【文献分享】空间互近邻关系在空间转录组学数据中的应用
  • 高精度、高带宽的磁角度传感器——MA600A
  • HarmonyOS服务卡片开发:动态卡片与数据绑定实战指南
  • HarmonyOS迷宫游戏鸿蒙应用开发实战:从零构建随机迷宫游戏(初版)
  • 拥抱依赖注入的优雅与灵活:深入解析 Spring ObjectProvider
  • HarmonyOS数据持久化:Preferences轻量级存储实战
  • 机器学习势函数(MLPF)入门:用DeePMD-kit加速亿级原子模拟
  • X电容与Y电容的区别:电路安全设计的黄金组合
  • MySQL学习笔记02-表结构创建 数据类型
  • etcd压测造成数据目录过大恢复
  • 信息系统运维管理
  • 回溯算法经典题目+详细讲解+图示理解
  • 全网首发! Nvidia Jetson Thor 128GB DK 刷机与测评(四)常用功能测评 - 目标跟踪 Object Tracking 系列
  • [代码规范篇]Java代码规范
  • C++:string模拟实现中的赋值拷贝函数现代写法诡异地崩掉了......
  • 构建AI大模型对话系统
  • Linux基本指令(9)
  • 64_基于深度学习的蝴蝶种类检测识别系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
  • 3-12〔OSCP ◈ 研记〕❘ WEB应用攻击▸利用XSS提权
  • 3dma渲染噪点成因排查及优化方案
  • Lombok
  • React Scheduler(调度器)
  • 多任务数据集的具体使用场景
  • KITTI数据集
  • 什么云服务器更好用推荐一下!?
  • 根据Linux内核原理 LRU链表如何知道page的活动频繁程度?
  • 2025全球LoRaWAN模组技术对比与应用方案解析