Python基本命令、函数、以及小项目

news2024/9/21 4:38:04

目录

1.基本操作

1.1 例子

1.2 输出结果

2.数据结构

2.1 例子

2.2 输出结果

3.字符串操作

3.1 例子

3.2 输出结果

4.文件操作

4.1 例子

4.2 输出结果

5.数学操作

5.1 例子

5.2 输出结果

6.模块导入

6.1 例子

6.2 输出结果

7.控制结构

7.1例子

输出结果

7.函数定义

7.1 例子

7.2 输出结果

8.类和对象

8.1 例子

8.2 输出结果

9.错误和异常处理

9.1 例子

9.2 输出结果

10.项目实战

10.1 质数判断

10.1.1 需求

10.1.2 代码

10.1.3 运行结果

10.1.4 知识导入

10.2 随机点名系统

10.2.1 需求

10.2.2 设计思路

10.2.3 代码

10.2.4 运行结果

10.3 通讯录管理系统

10.3.1 项目需求

10.3.2 设计思路

10.3.3 具体步骤

10.3.4 代码

10.3.5 运行结果


1.基本操作

  • print(): 输出内容到控制台。
  • input(): 从控制台读取输入。
  • len(): 返回对象的长度。
  • type(): 返回对象的类型。
  • str(), int(), float(): 类型转换函数。

1.1 例子

# print 和 input
print("Hello, World!")
name = input("请输入你的名字: ")
print("你好," + name)

# len 和 type
my_list = [1, 2, 3, 4, 5]
print("列表的长度:", len(my_list))
print("my_list 的类型:", type(my_list))

# 类型转换
number_str = "123"
number = int(number_str)
print("字符串转整数:", number)

1.2 输出结果

Hello, World!
请输入你的名字: FHYAAAX   #这里自己输入的,“input”
你好,FHYAAAX
列表的长度: 5
my_list 的类型: <class 'list'>
字符串转整数: 123

2.数据结构

  • list:

    • append(): 向列表末尾添加元素。
    • extend(): 扩展列表,添加多个元素。
    • insert(): 在指定位置插入元素。
    • remove(): 移除列表中的某个元素。
    • pop(): 移除并返回指定位置的元素。
    • sort(): 对列表进行排序。
    • reverse(): 反转列表。
  • dict:

    • keys(): 返回字典的所有键。
    • values(): 返回字典的所有值。
    • items(): 返回字典的键值对。
    • get(): 根据键获取值。
    • update(): 更新字典。
    • pop(): 移除并返回指定键的值。
  • set:

    • add(): 向集合添加元素。
    • remove(): 从集合中移除元素。
    • union(): 返回两个集合的并集。
    • intersection(): 返回两个集合的交集。
    • difference(): 返回两个集合的差集。

2.1 例子

# List 操作
print("List 操作")
my_list = [1, 2, 3]
my_list.append(4)
print("添加元素后:", my_list)
my_list.extend([5, 6])
print("扩展列表后:", my_list)
my_list.insert(0, 0)
print("插入元素后:", my_list)
my_list.remove(3)
print("移除元素后:", my_list)
popped_item = my_list.pop()
print("弹出元素后:", my_list, "弹出的元素:", popped_item)
my_list.sort()
print("排序后:", my_list)
my_list.reverse()
print("反转列表后:", my_list)

# Dict 操作
print("\nDict 操作")
my_dict = {"name": "Alice", "age": 25}
print("键:", my_dict.keys())
print("值:", my_dict.values())
print("键值对:", my_dict.items())
print("获取 name:", my_dict.get("name"))
my_dict.update({"age": 26})
print("更新后:", my_dict)
age = my_dict.pop("age")
print("弹出后:", my_dict, "弹出的 age:", age)

# Set 操作
print("\nSet 操作")
my_set = {1, 2, 3}
my_set.add(4)
print("添加元素后:", my_set)
my_set.remove(2)
print("移除元素后:", my_set)
other_set = {3, 4, 5}
print("并集:", my_set.union(other_set))
print("交集:", my_set.intersection(other_set))
print("差集:", my_set.difference(other_set))

2.2 输出结果

List 操作
添加元素后: [1, 2, 3, 4]
扩展列表后: [1, 2, 3, 4, 5, 6]
插入元素后: [0, 1, 2, 3, 4, 5, 6]
移除元素后: [0, 1, 2, 4, 5, 6]
弹出元素后: [0, 1, 2, 4, 5] 弹出的元素: 6
排序后: [0, 1, 2, 4, 5]
反转列表后: [5, 4, 2, 1, 0]

Dict 操作
键: dict_keys(['name', 'age'])
值: dict_values(['Alice', 25])
键值对: dict_items([('name', 'Alice'), ('age', 25)])
获取 name: Alice
更新后: {'name': 'Alice', 'age': 26}
弹出后: {'name': 'Alice'} 弹出的 age: 26

Set 操作
添加元素后: {1, 2, 3, 4}
移除元素后: {1, 3, 4}
并集: {1, 3, 4, 5}
交集: {3, 4}
差集: {1}

3.字符串操作

  • split(): 拆分字符串。
  • join(): 合并字符串列表。
  • find(): 查找子字符串。
  • replace(): 替换子字符串。
  • upper(): 转换为大写。
  • lower(): 转换为小写。
  • strip(): 去除首尾空白字符。

3.1 例子

text = "Hello, world!"
print("拆分:", text.split(","))
print("合并:", "-".join(["a", "b", "c"]))
print("查找:", text.find("world"))
print("替换:", text.replace("world", "Python"))
print("大写:", text.upper())
print("小写:", text.lower())
print("去除空白:", "  Hello  ".strip())

3.2 输出结果

拆分: ['Hello, world!']
合并: a-b-c
查找: 7
替换: Hello, Python!
大写: HELLO, WORLD!
小写: hello, world!
去除空白: Hello

4.文件操作

  • open(): 打开文件。
  • read(): 读取文件内容。
  • write(): 写入文件内容。
  • close(): 关闭文件。

4.1 例子

# 创建并写入文件
with open("example.txt", "w") as file:
    file.write("Hello, World!")

# 读取文件
with open("example.txt", "r") as file:
    content = file.read()
    print("文件内容:", content)

4.2 输出结果


文件内容: Hello, World!

5.数学操作

  • abs(): 绝对值。
  • round(): 四舍五入。
  • max(): 返回最大值。
  • min(): 返回最小值。
  • sum(): 求和。

5.1 例子

print("绝对值:", abs(-10))
print("四舍五入:", round(3.14159, 2))
print("最大值:", max(1, 2, 3))
print("最小值:", min(1, 2, 3))
print("求和:", sum([1, 2, 3, 4, 5]))

5.2 输出结果

绝对值: 10
四舍五入: 3.14
最大值: 3
最小值: 1
求和: 15

6.模块导入

  • import: 导入模块。
  • from ... import ...: 从模块中导入特定的函数或变量。
  • as: 为导入的模块或函数起别名。

6.1 例子

import math
print("平方根:", math.sqrt(16))

from datetime import datetime
print("当前日期和时间:", datetime.now())

import numpy as np
array = np.array([1, 2, 3])
print("Numpy 数组:", array)

6.2 输出结果

平方根: 4.0
当前日期和时间: 2024-08-04 01:03:03.878883
Numpy 数组: [1 2 3]

7.控制结构

  • if, elif, else: 条件语句。
  • for: 循环。
  • while: 循环。
  • break: 结束循环。
  • continue: 跳过当前循环块中的剩余语句,继续下一次循环。

7.1例子

# 条件语句
print("条件语句")
x = int(input("请输入一个数:"))
if x > 0:
    print("x 是正数")
elif x == 0:
    print("x 是零")
else:
    print("x 是负数")

# 循环
print("\n循环")
for i in range(5):
    print("For 循环:", i)

i = 0
while i < 5:
    print("While 循环:", i)
    i += 1

# break 和 continue
print("\nbreak 和 continue")
for i in range(5):
    if i == 3:
        break
    print("Break 示例:", i)

for i in range(5):
    if i == 3:
        continue
    print("Continue 示例:", i)

输出结果

条件语句
请输入一个数:6
x 是正数

循环
For 循环: 0
For 循环: 1
For 循环: 2
For 循环: 3
For 循环: 4
While 循环: 0
While 循环: 1
While 循环: 2
While 循环: 3
While 循环: 4

break 和 continue
Break 示例: 0
Break 示例: 1
Break 示例: 2
Continue 示例: 0
Continue 示例: 1
Continue 示例: 2
Continue 示例: 4

7.函数定义

  • def: 定义函数。
  • return: 返回函数值。

7.1 例子

def greet(name):
    return "Hello," + name

print(greet("Alice"))

def add(a, b):
    return a + b

print(add(2, 3))

7.2 输出结果

Hello,Alice
5

8.类和对象

  • class: 定义类。
  • init(): 类的构造方法。
  • self: 类的方法的第一个参数,代表类的实例。

8.1 例子

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def greet(self):
        return "你好,我的名字是 " + self.name

person = Person("Alice", 25)
print(person.greet())
print("年龄:", person.age)

8.2 输出结果

你好,我的名字是 Alice
年龄: 25

9.错误和异常处理

  • try: 捕获异常。
  • except: 处理捕获的异常。
  • finally: 无论是否发生异常,都会执行的代码块。
  • raise: 主动引发异常。

9.1 例子

try:
    result = 10 / 0
except ZeroDivisionError:
    print("不能除以零")
finally:
    print("这段代码总是会执行")

try:
    raise ValueError("发生错误")
except ValueError as e:
    print("捕获到异常:", e)

9.2 输出结果

不能除以零
这段代码总是会执行
捕获到异常: 发生错误

10.项目实战

10.1 质数判断

10.1.1 需求

判断一个数是否为质数

10.1.2 代码

# 输入的数字
number = int(input("请输入一个数:"))

# 小于2的数不是质数
if number < 2:
    print(f"{number} 不是质数")
else:
    # 假设是质数
    is_prime = True
    # 检查从2到number平方根的所有数是否能整除number
    for i in range(2, int(number**0.5) + 1):
        if number % i == 0:
            is_prime = False
            break

    # 根据is_prime的值输出结果
    if is_prime:
        print(f"{number} 是质数")
    else:
        print(f"{number} 不是质数")

10.1.3 运行结果

请输入一个数:7
7 是质数

10.1.4 知识导入

使用 % 操作符进行字符串格式化

        在 Python 中,使用 % 操作符可以进行类似于 C 语言 printf 风格的字符串格式化。占位符如 %s%d 等会被对应的变量替换。

使用 str.format() 方法进行字符串格式化

  str.format() 方法允许使用大括号 {} 作为占位符,然后在方法调用时将值传入。占位符的位置会被传入的值替换。

使用 f-strings (格式化字符串字面值)

        f-strings 是 Python 3.6 引入的一种字符串格式化方法,使用更加简洁。它在字符串前加上 f,然后在字符串内使用 {} 包含变量或表达式。

示例:

name = "Alice"
age = 25

# 使用 % 操作符
print("使用 %% 操作符: 姓名: %s, 年龄: %d" % (name, age))

# 使用 str.format() 方法
print("使用 str.format(): 姓名: {}, 年龄: {}".format(name, age))

# 使用 f-strings
print(f"使用 f-strings: 姓名: {name}, 年龄: {age}")

结果:

使用 % 操作符: 姓名: Alice, 年龄: 25
使用 str.format(): 姓名: Alice, 年龄: 25
使用 f-strings: 姓名: Alice, 年龄: 25

10.2 随机点名系统

10.2.1 需求

        创建一个简单的命令行系统,用户可以通过菜单选择生成奇数学号、偶数学号或全部学号,并从这些学号中随机点名若干个学号。

10.2.2 设计思路

1. 导入必要的模块

首先需要导入 random 模块,用于后续的随机数生成和随机选择操作:

import random

2. 定义生成学号的函数

定义一个函数 generate_ids,根据传入的参数生成指定范围内的奇数、偶数或全部学号:

def generate_ids(start_id, end_id, even=None):
    """
    生成范围内的所有学号,可以选择奇数、偶数或全部学号
    """
    if even is None:
        return [i for i in range(start_id, end_id + 1)]
    elif even:
        return [i for i in range(start_id, end_id + 1) if i % 2 == 0]
    else:
        return [i for i in range(start_id, end_id + 1) if i % 2 != 0]
  • start_idend_id 定义学号的范围。
  • even 参数用于控制生成奇数、偶数或全部学号。

3. 定义随机选择学号的函数

定义一个函数 select_random_ids,从生成的学号列表中随机选择指定数量的学号:

def select_random_ids(start_id, end_id, num_to_select, even=None):
    """
    在指定范围内随机选择指定数量的学号(可以是奇数、偶数或全部)
    """
    ids = generate_ids(start_id, end_id, even)
    if num_to_select > len(ids):
        print("点名人数超过可用学号数量,请输入一个较小的数字。")
        return []
    else:
        return random.sample(ids, num_to_select)
  • 通过调用 generate_ids 函数生成学号列表。
  • 检查 num_to_select 是否超过可用学号数量,防止错误选择。
  • 使用 random.sample 从学号列表中随机选择指定数量的学号。

4. 设计主程序

设计一个主程序,提供用户交互菜单,让用户选择操作类型:

def main():
    print("欢迎使用随机点名系统")
    
    # 定义学号范围
    start_id = 2023115902
    end_id = 2023116150
    
    while True:
        print("\n菜单:")
        print("1. 随机点名奇数学号")
        print("2. 随机点名偶数学号")
        print("3. 随机点名全部学号")
        print("4. 退出")
        choice = input("请选择操作(输入对应数字):")
        
        if choice == '1':
            num_to_select = int(input("请输入需要点名的人数:"))
            selected_ids = select_random_ids(start_id, end_id, num_to_select, even=False)
            if selected_ids:
                print("随机选中的学号是:")
                for id in selected_ids:
                    print(id)
        
        elif choice == '2':
            num_to_select = int(input("请输入需要点名的人数:"))
            selected_ids = select_random_ids(start_id, end_id, num_to_select, even=True)
            if selected_ids:
                print("随机选中的学号是:")
                for id in selected_ids:
                    print(id)
        
        elif choice == '3':
            num_to_select = int(input("请输入需要点名的人数:"))
            selected_ids = select_random_ids(start_id, end_id, num_to_select, even=None)
            if selected_ids:
                print("随机选中的学号是:")
                for id in selected_ids:
                    print(id)

        elif choice == '4':
            print("退出系统。")
            break
        
        else:
            print("无效选择,请重新输入。")

if __name__ == "__main__":
    main()
  • 定义学号范围。
  • 提供菜单选项:随机点名奇数学号、偶数学号、全部学号或退出系统。
  • 根据用户选择调用相应的函数进行操作。

5. 整合各个部分

将上述函数和主程序整合在一起,形成一个完整的系统,用户可以通过菜单选择操作,随机点名奇数学号、偶数学号或全部学号。

10.2.3 代码

import random


def generate_ids(start_id, end_id, even=None):
    """
    生成范围内的所有学号,可以选择奇数、偶数或全部学号
    """
    if even is None:
        return [i for i in range(start_id, end_id + 1)]
    elif even:
        return [i for i in range(start_id, end_id + 1) if i % 2 == 0]
    else:
        return [i for i in range(start_id, end_id + 1) if i % 2 != 0]


def select_random_ids(start_id, end_id, num_to_select, even=None):
    """
    在指定范围内随机选择指定数量的学号(可以是奇数、偶数或全部)
    """
    ids = generate_ids(start_id, end_id, even)
    if num_to_select > len(ids):
        print("点名人数超过可用学号数量,请输入一个较小的数字。")
        return []
    else:
        return random.sample(ids, num_to_select)


def main():
    print("欢迎使用随机点名系统")

    # 定义学号范围
    start_id = 2023115902
    end_id = 2023116150

    while True:
        print("\n菜单:")
        print("1. 随机点名奇数学号")
        print("2. 随机点名偶数学号")
        print("3. 随机点名全部学号")
        print("4. 退出")
        choice = input("请选择操作(输入对应数字):")

        if choice == '1':
            num_to_select = int(input("请输入需要点名的人数:"))
            selected_ids = select_random_ids(start_id, end_id, num_to_select, even=False)
            if selected_ids:
                print("随机选中的学号是:")
                for id in selected_ids:
                    print(id)

        elif choice == '2':
            num_to_select = int(input("请输入需要点名的人数:"))
            selected_ids = select_random_ids(start_id, end_id, num_to_select, even=True)
            if selected_ids:
                print("随机选中的学号是:")
                for id in selected_ids:
                    print(id)

        elif choice == '3':
            num_to_select = int(input("请输入需要点名的人数:"))
            selected_ids = select_random_ids(start_id, end_id, num_to_select, even=None)
            if selected_ids:
                print("随机选中的学号是:")
                for id in selected_ids:
                    print(id)

        elif choice == '4':
            print("退出系统。")
            break

        else:
            print("无效选择,请重新输入。")


if __name__ == "__main__":
    main()

10.2.4 运行结果

菜单:
1. 随机点名奇数学号
2. 随机点名偶数学号
3. 随机点名全部学号
4. 退出
请选择操作(输入对应数字):1
请输入需要点名的人数:2
随机选中的学号是:
2023115983
2023115925

菜单:
1. 随机点名奇数学号
2. 随机点名偶数学号
3. 随机点名全部学号
4. 退出
请选择操作(输入对应数字):2
请输入需要点名的人数:3
随机选中的学号是:
2023115948
2023116004
2023116026

菜单:
1. 随机点名奇数学号
2. 随机点名偶数学号
3. 随机点名全部学号
4. 退出

菜单:
1. 随机点名奇数学号
2. 随机点名偶数学号
3. 随机点名全部学号
4. 退出
请选择操作(输入对应数字):3
请输入需要点名的人数:4
随机选中的学号是:
2023115922
2023116103
2023116129
2023116021

菜单:
1. 随机点名奇数学号
2. 随机点名偶数学号
3. 随机点名全部学号
4. 退出
请选择操作(输入对应数字):4
退出系统。

10.3 通讯录管理系统

10.3.1 项目需求

  • 用户能够添加联系人,包括姓名、电话和邮箱。
  • 用户能够查看所有联系人。
  • 用户能够根据姓名查找联系人。
  • 用户能够根据姓名删除联系人。
  • 用户退出时,联系人信息能够保存到文件中,下次启动时能够加载。

10.3.2 设计思路

1. 类设计

为了实现上述需求,我们设计两个类:ContactAddressBook

  • Contact 类:

    • 用于表示单个联系人,包含姓名、电话和邮箱属性。
    • 提供一个字符串表示方法,便于打印联系人信息。
  • AddressBook 类:

    • 用于管理多个联系人,包含一个联系人列表。
    • 提供添加、查看、查找、删除联系人的方法。
    • 提供保存联系人到文件和从文件加载联系人的方法。

2. 数据存储

  • 选择使用 JSON 文件存储联系人信息,因为 JSON 格式易于读取和写入,并且与 Python 的字典和列表结构兼容。
  • AddressBook 类中实现 save_contactsload_contacts 方法,分别用于保存联系人到文件和从文件加载联系人。

3. 用户交互

  • 通过一个主函数 main 实现用户交互,提供一个简单的命令行菜单。
  • 用户可以选择添加联系人、查看联系人、查找联系人、删除联系人和保存并退出。
  • 使用 input 函数获取用户输入,根据用户选择调用 AddressBook 类的相应方法。

10.3.3 具体步骤

1. 定义 Contact

  • __init__ 方法初始化联系人对象的姓名、电话和邮箱。
  • __str__ 方法返回联系人信息的字符串表示。

2. 定义 AddressBook

  • __init__ 方法初始化联系人列表和文件名,调用 load_contacts 方法加载联系人。
  • add_contact 方法向联系人列表中添加联系人。
  • view_contacts 方法打印所有联系人。
  • find_contact 方法根据姓名查找联系人。
  • delete_contact 方法根据姓名删除联系人。
  • save_contacts 方法将联系人保存到文件。
  • load_contacts 方法从文件加载联系人,如果文件不存在则创建新的联系人文件。

3. 实现主函数 main

  • 创建 AddressBook 对象。
  • 提供一个循环菜单,用户可以选择不同的操作。
  • 根据用户选择调用 AddressBook 类的方法。
  • 用户选择保存并退出时,调用 save_contacts 方法保存联系人并退出程序。

10.3.4 代码

import json  # 导入json模块

class Contact:
    def __init__(self, name, phone, email):
        self.name = name        # 联系人姓名
        self.phone = phone      # 联系人电话
        self.email = email      # 联系人邮箱

    def __str__(self):
        return f"姓名: {self.name}, 电话: {self.phone}, 邮箱: {self.email}"

class AddressBook:
    def __init__(self, filename='contacts.json'):
        self.contacts = []         # 联系人列表
        self.filename = filename   # 保存联系人的文件名
        self.load_contacts()       # 加载联系人

    def add_contact(self, contact):
        self.contacts.append(contact)   # 向联系人列表中添加联系人
        print(f"添加联系人: {contact.name}")

    def view_contacts(self):
        print("所有联系人:")
        for contact in self.contacts:   # 打印所有联系人
            print(contact)

    def find_contact(self, name):
        for contact in self.contacts:
            if contact.name == name:    # 查找联系人
                return contact
        return None

    def delete_contact(self, name):
        contact = self.find_contact(name)  # 查找联系人
        if contact:
            self.contacts.remove(contact)  # 从列表中移除联系人
            print(f"删除联系人: {name}")
        else:
            print(f"未找到联系人: {name}")

    def save_contacts(self):
        with open(self.filename, 'w') as file:
            json.dump([contact.__dict__ for contact in self.contacts], file)  # 将联系人保存到文件
        print("联系人已保存到文件。")

    def load_contacts(self):
        try:
            with open(self.filename, 'r') as file:
                contacts_list = json.load(file)  # 从文件加载联系人
                self.contacts = [Contact(**contact) for contact in contacts_list]  # 创建联系人对象列表
            print("联系人已从文件加载。")
        except FileNotFoundError:
            print("未找到联系人文件,创建新的文件。")

def main():
    address_book = AddressBook()  # 创建通讯录对象

    while True:
        print("\n通讯录管理系统")
        print("1. 添加联系人")
        print("2. 查看所有联系人")
        print("3. 查找联系人")
        print("4. 删除联系人")
        print("5. 保存并退出")
        choice = input("请选择操作 (1-5): ")  # 用户选择操作

        if choice == '1':
            # 添加联系人
            name = input("请输入姓名: ")
            phone = input("请输入电话: ")
            email = input("请输入邮箱: ")
            contact = Contact(name, phone, email)  # 创建联系人对象
            address_book.add_contact(contact)  # 添加联系人

        elif choice == '2':
            # 查看所有联系人
            address_book.view_contacts()

        elif choice == '3':
            # 查找联系人
            name = input("请输入要查找的姓名: ")
            contact = address_book.find_contact(name)
            if contact:
                print("找到联系人:")
                print(contact)
            else:
                print("未找到联系人。")

        elif choice == '4':
            # 删除联系人
            name = input("请输入要删除的姓名: ")
            address_book.delete_contact(name)

        elif choice == '5':
            # 保存并退出
            address_book.save_contacts()
            print("感谢使用通讯录管理系统!")
            break

        else:
            print("无效选择,请重新输入。")

if __name__ == "__main__":
    main()

10.3.5 运行结果

通讯录管理系统
1. 添加联系人
2. 查看所有联系人
3. 查找联系人
4. 删除联系人
5. 保存并退出
请选择操作 (1-5): 1
请输入姓名: a
请输入电话: 123
请输入邮箱: 123
添加联系人: a


请选择操作 (1-5): 1
请输入姓名: b
请输入电话: 1234
请输入邮箱: 1234
添加联系人: b

请选择操作 (1-5): 2
所有联系人:
姓名: a, 电话: 123, 邮箱: 123
姓名: b, 电话: 1234, 邮箱: 1234


请输入要查找的姓名: a
找到联系人:
姓名: a, 电话: 123, 邮箱: 123


请选择操作 (1-5): 4
请输入要删除的姓名: b
删除联系人: b


请选择操作 (1-5): 5
联系人已保存到文件。
感谢使用通讯录管理系统!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1977475.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flink-StarRocks详解:第五部分查询数据湖(第55天)

系列文章目录 4.查询数据湖 4.1 Catalog 4.1.1 概述 4.1.1.1 基本概念 4.1.1.2 Catalog 4.1.1.3 访问Catalog 4.1.2 Default catalog 4.1.3 External Catalog 4.2 文件外部表 4.2.1 使用限制 4.2.2 开源版本语法 4.2.3 阿里云版本 5. 查询及优化 文章目录 系列文章目录前言4.查…

Java(十一)——内部类、成员内部类、静态内部类、局部内部类、匿名内部类

个人简介 &#x1f440;个人主页&#xff1a; 前端杂货铺 ⚡开源项目&#xff1a; rich-vue3 &#xff08;基于 Vue3 TS Pinia Element Plus Spring全家桶 MySQL&#xff09; &#x1f64b;‍♂️学习方向&#xff1a; 主攻前端方向&#xff0c;正逐渐往全干发展 &#x1…

操作系统原理:程序、进程、线程的概念

文章目录 程序、进程、线程的概念程序&#xff08;Program&#xff09;进程&#xff08;Process&#xff09;线程&#xff08;Thread&#xff09;关系总结 在日常对操作系统的使用中&#xff0c;大家肯定对程序、进程和线程多少有所耳闻。作为操作系统的重要一部分&#xff0c;…

ROM修改进阶教程------修改自己适配的rom固件 禁止第三方修改 删除自定文件或app后自动重启的步骤解析

很多适配第三方系统的资深作者。都会在rom中加入一些防止他人任意修改的脚本。这种操作主要避免盗包的行为。而且前期有在rom中加入联网锁定id格式化分区的恶意操作。今天主要解析一种删除自带文件后重启手机后会反复重启的脚本步骤。 通过博文步骤可以初步了解; 1----了解删…

CAPL代码中判断网络是CAN还是CANFD

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

ardupilot开发 --- 网络技术综述 篇

不信人间有白头 一些概念参考文献 一些概念 以太网、局域网、互联网 以太网(Ethernet)&#xff0c;是一种计算机局域网技术。以太网是一种有线网络技术&#xff0c;网络传输介质包括&#xff1a;以太网电缆&#xff0c;如常见的双绞线、光纤等。根据传输速度&#xff0c;可以氛…

2024107读书笔记|《火车快开(李娟诗集)》——我轰然经过你的生命,又悄然退却,你从不曾爱过我,你只爱我在你的生命中坠落

《火车快开&#xff08;李娟诗集&#xff09;》—— 文前第一部分 荒野碎片第二部分 弯路第三部分 告别 《火车快开&#xff08;李娟诗集&#xff09;》作者李娟&#xff0c;看的她的第一本书是《记一忘二三》&#xff0c;前段时间《我的阿勒泰》超级火&#xff0c;但我终于还是…

Codeforces Round 962 (Div. 3) A~F

A.Legs&#xff08;贪心&#xff09; 题意&#xff1a; 农夫约翰的农场又迎来了美好的一天。 农夫约翰来到农场后&#xff0c;数了数共 n n n条腿。众所周知&#xff0c;农场里只住着鸡和牛&#xff0c;一只鸡有 2 2 2条腿&#xff0c;而一头牛有 4 4 4条腿。 假设约翰农场…

Shell编程 --基础语法(1)

文章目录 Shell编程基础语法变量定义变量使用变量命令的使用只读变量删除变量 传递参数字符串获取字符串长度字符串截取 数组定义方式关联数组获取数组的长度 总结 Shell编程 Shell是一种程序设计语言。作为命令语言&#xff0c;它交互式解释和执行用户输入的命令或者自动地解…

数论——裴蜀定理、欧几里得算法、扩展欧几里得算法、逆元以及求解

裴蜀定理 若整数 a、b 互质&#xff08;最大公约数为 1&#xff09;&#xff0c;则存在整数 x、y &#xff0c;使得 ax by 1 。 更一般的情况是&#xff1a;设 a、b 是不全为零的整数&#xff0c;则存在整数 x、y &#xff0c;使得 ax by gcd(a, b) &#xff0c;其中 gcd…

第十一章:Kubernetes API服务器的安全防护

本章内容包括&#xff1a; 了解认证机制ServiceAccounts是什么及使用的原因了解基于角色(RBAC)的权限控制插件使用角色和角色绑定使用集群角色和集群角色绑定了解默认角色及其绑定 1 了解认证机制 在前面的内容中&#xff0c;我们说到API服务器可以配置一个到多个认证的插件(授…

等保2.0 | 人大金仓数据库测评

人大金仓数据库&#xff0c;全称为金仓数据库管理系统KingbaseES&#xff08;简称&#xff1a;金仓数据库或KingbaseES&#xff09;&#xff0c;是北京人大金仓信息技术股份有限公司自主研制开发的具有自主知识产权的通用关系型数据库管理系统。以下是关于人大金仓数据库的详细…

室内养宠空气净化器哪家好?热门室内养宠空气净化器用户体验

自从家里有了4只英短后&#xff0c;一到季节我就得不停的拖地刷床&#xff0c;除了这些可以手动清理的猫毛之外&#xff0c;那么空气中的猫毛怎么办&#xff1f;真的不建议养猫&#xff0c;除非你能接受空气中飞舞着浮毛&#xff0c;衣服、床、筷子、鼻子里全都是猫毛&#xff…

STM32——外部中断(EXTI)

目录 前言 一、外部中断基础知识 二、使用步骤 三、固件库实现 四、STM32CubeMX实现 总结 前言 外部中断&#xff08;External Interrupt&#xff0c;简称EXTI&#xff09;是微控制器用于响应外部事件的一种方式&#xff0c;当外部事件发生时&#xff08;如按键按下、传感器信号…

NC 合并区间

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 描述 给出一组区间…

推流直播服务

pc端建立NVR服务器&#xff0c;并实现NVR功能&#xff0c;具有推流功能&#xff0c;推送给OBS&#xff0c;可以对接到抖音、快手等平台&#xff0c;实现实时直播&#xff0c;应用于无人值守&#xff0c;养殖、农场、旅游等场景 运行MediaServer和webserver 服务端口配置在confi…

C# 使用 NLog 输出日志到文件夹

在项目中使用 NuGet 安装 NLog 包以及 NLog.Config 包 配置 nlog.config 在项目的根目录下创建一个 Nlog.config 文件&#xff08;如果还没有&#xff09;&#xff0c;然后添加如下配置&#xff1a; <?xml version"1.0" encoding"utf-8" ?> <…

leetcode数论(​3044. 出现频率最高的质数)

前言 经过前期的基础训练以及部分实战练习&#xff0c;粗略掌握了各种题型的解题思路。现阶段开始专项练习。 描述 给你一个大小为 m x n 、下标从 0 开始的二维矩阵 mat 。在每个单元格&#xff0c;你可以按以下方式生成数字&#xff1a; 最多有 8 条路径可以选择&#xff1…

17 字符函数、字符串函数和内存函数

目录 一、字符函数 &#xff08;一&#xff09;字符分类函数 &#xff08;二&#xff09;字符转换函数 二、字符串函数 &#xff08;一&#xff09;strlen、strcpy、strcat、strcmp的使用和模拟实现 1、strlen &#xff08;1&#xff09;使用 &#xff08;2&#xff09;…

Java中的5种线程池类型

Java中的5种线程池类型 1. CachedThreadPool &#xff08;有缓冲的线程池&#xff09;2. FixedThreadPool &#xff08;固定大小的线程池&#xff09;3. ScheduledThreadPool&#xff08;计划线程池&#xff09;4. SingleThreadExecutor &#xff08;单线程线程池&#xff09;…