第二篇【传奇开心果微博系列】Python微项目技术点案例示例:成语接龙游戏

传奇开心果微博系列

  • 系列微博目录
    • Python微项目技术点案例示例系列
  • 微博目录
    • 一、微项目目标
    • 二、雏形示例代码
    • 三、扩展整体思路
    • 四、玩家输入示例代码
    • 五、成语判断示例代码
    • 六、回答判断示例代码
    • 七、电脑判断示例代码
    • 八、游戏结束示例代码
    • 九、界面优化示例代码
    • 十、扩展成语库示例代码
    • 十一、音效和动画效果示例代码

系列微博目录

Python微项目技术点案例示例系列

微博目录

一、微项目目标

在这里插入图片描述使用Pygame实现成语接龙小游戏微项目示例代码。

二、雏形示例代码

在这里插入图片描述下面是一个使用Pygame实现的简单成语接龙游戏示例代码:

import pygame
import random

# 初始化Pygame
pygame.init()

# 游戏窗口尺寸
WIDTH = 800
HEIGHT = 600

# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)

# 创建游戏窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("成语接龙游戏")

# 加载背景图片
background = pygame.image.load("background.jpg")
background = pygame.transform.scale(background, (WIDTH, HEIGHT))

# 加载字体
font = pygame.font.Font(None, 36)

# 成语列表
idioms = ["一马当先", "人山人海", "一心一意", "自由自在", "一举两得", "千军万马", "一鸣惊人", "百年好合"]

# 当前成语
current_idiom = random.choice(idioms)

# 游戏主循环
running = True
while running:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 绘制背景
    screen.blit(background, (0, 0))

    # 绘制当前成语
    text = font.render("当前成语:" + current_idiom, True, BLACK)
    screen.blit(text, (50, 50))

    # 更新显示
    pygame.display.flip()

# 退出游戏
pygame.quit()

这个示例代码创建了一个简单的成语接龙游戏窗口,加载了背景图片,并显示了当前的成语。

三、扩展整体思路

在这里插入图片描述要扩展这个成语接龙游戏的整体思路,可以考虑以下几个方面:

  1. 玩家输入: 让玩家能够输入成语作为回答。可以使用Pygame的文本输入功能,让玩家在游戏窗口中输入成语。

  2. 成语判断: 在玩家输入成语后,需要判断该成语是否符合接龙规则。可以使用成语库或者在线成语接口来验证成语的合法性,确保玩家输入的成语是有效的。

  3. 回答判断: 在判断成语合法后,需要判断该成语是否符合接龙规则,即是否与上一个成语的最后一个字相同。可以编写函数来进行判断,并给出相应的提示。

  4. 电脑回答: 可以编写一个电脑回答的函数,让电脑自动选择一个合适的成语作为回答。

  5. 游戏结束: 当玩家或电脑无法回答时,游戏结束。可以根据具体规则判断胜负,或者设置一个时间限制,超过时间限制则游戏结束。

  6. 界面优化: 可以对游戏界面进行美化和优化,比如添加背景音乐、按钮和菜单等,增加游戏的可玩性和用户体验。

  7. 成语扩展: 可以考虑扩展成语库,增加更多的成语,以提高游戏的趣味性和挑战性。

根据以上思路,你可以逐步完善游戏的功能和规则,使成语接龙游戏更加完整和有趣。

四、玩家输入示例代码

在这里插入图片描述以下是一个使用Pygame实现玩家输入成语的示例代码:

import pygame
import random

# 初始化Pygame
pygame.init()

# 游戏窗口尺寸
WIDTH = 800
HEIGHT = 600

# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)

# 创建游戏窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("成语接龙游戏")

# 加载字体
font = pygame.font.Font(None, 36)

# 成语列表
idioms = ["一马当先", "人山人海", "一心一意", "自由自在", "一举两得", "千军万马", "一鸣惊人", "百年好合"]

# 当前成语
current_idiom = random.choice(idioms)

# 玩家输入
player_input = ""

# 游戏主循环
running = True
while running:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RETURN:
                # 玩家按下回车键,判断成语是否合法
                if player_input and player_input[-1] == current_idiom[-1]:
                    # 成语合法,更新当前成语,并清空玩家输入
                    current_idiom = player_input
                    player_input = ""
                else:
                    # 成语不合法,给出提示
                    print("成语不合法!")
            elif event.key == pygame.K_BACKSPACE:
                # 玩家按下退格键,删除最后一个字符
                player_input = player_input[:-1]
            else:
                # 玩家输入字符
                player_input += event.unicode

    # 绘制当前成语
    screen.fill(WHITE)
    text = font.render("当前成语:" + current_idiom, True, BLACK)
    screen.blit(text, (50, 50))

    # 绘制玩家输入
    input_text = font.render("玩家输入:" + player_input, True, BLACK)
    screen.blit(input_text, (50, 100))

    # 更新显示
    pygame.display.flip()

# 退出游戏
pygame.quit()

在这个示例代码中,我们添加了玩家输入的功能。玩家可以在游戏窗口中输入成语,并按下回车键来提交输入。如果输入的成语与当前成语的最后一个字相同,则更新当前成语,并清空玩家输入。如果输入的成语不合法,则给出相应的提示。玩家可以使用退格键来删除最后一个字符。

五、成语判断示例代码

在这里插入图片描述以下是一个使用在线成语接口验证成语合法性的示例代码:

import pygame
import requests

# 初始化Pygame
pygame.init()

# 游戏窗口尺寸
WIDTH = 800
HEIGHT = 600

# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)

# 创建游戏窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("成语接龙游戏")

# 加载字体
font = pygame.font.Font(None, 36)

# 成语列表
idioms = ["一马当先", "人山人海", "一心一意", "自由自在", "一举两得", "千军万马", "一鸣惊人", "百年好合"]

# 当前成语
current_idiom = random.choice(idioms)

# 玩家输入
player_input = ""

# 验证成语合法性的函数
def validate_idiom(idiom):
    url = "http://api.avatardata.cn/ChengYu/Search?key=your_api_key&id={}".format(idiom)
    response = requests.get(url)
    data = response.json()
    if data["error_code"] == 0 and data["result"]:
        return True
    else:
        return False

# 游戏主循环
running = True
while running:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RETURN:
                # 玩家按下回车键,判断成语是否合法
                if player_input and player_input[-1] == current_idiom[-1] and validate_idiom(player_input):
                    # 成语合法,更新当前成语,并清空玩家输入
                    current_idiom = player_input
                    player_input = ""
                else:
                    # 成语不合法,给出提示
                    print("成语不合法!")
            elif event.key == pygame.K_BACKSPACE:
                # 玩家按下退格键,删除最后一个字符
                player_input = player_input[:-1]
            else:
                # 玩家输入字符
                player_input += event.unicode

    # 绘制当前成语
    screen.fill(WHITE)
    text = font.render("当前成语:" + current_idiom, True, BLACK)
    screen.blit(text, (50, 50))

    # 绘制玩家输入
    input_text = font.render("玩家输入:" + player_input, True, BLACK)
    screen.blit(input_text, (50, 100))

    # 更新显示
    pygame.display.flip()

# 退出游戏
pygame.quit()

在这个示例代码中,我们使用了一个在线成语接口来验证玩家输入的成语是否合法。validate_idiom 函数会向接口发送请求,并根据返回的数据判断成语是否合法。你需要将 your_api_key 替换为你自己的API密钥。

请注意,这只是一个示例,实际使用时你可能需要根据接口的返回数据进行适当的处理和错误处理。另外,你也可以使用本地的成语库或其他成语验证方法来验证成语的合法性。

六、回答判断示例代码

在这里插入图片描述以下是一个示例代码,用于判断玩家输入的成语是否符合接龙规则:

import pygame
import requests

# 初始化Pygame
pygame.init()

# 游戏窗口尺寸
WIDTH = 800
HEIGHT = 600

# 定义颜色
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)

# 创建游戏窗口
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("成语接龙游戏")

# 加载字体
font = pygame.font.Font(None, 36)

# 成语列表
idioms = ["一马当先", "人山人海", "一心一意", "自由自在", "一举两得", "千军万马", "一鸣惊人", "百年好合"]

# 当前成语
current_idiom = random.choice(idioms)

# 玩家输入
player_input = ""

# 验证成语合法性的函数
def validate_idiom(idiom):
    url = "http://api.avatardata.cn/ChengYu/Search?key=your_api_key&id={}".format(idiom)
    response = requests.get(url)
    data = response.json()
    if data["error_code"] == 0 and data["result"]:
        return True
    else:
        return False

# 判断成语是否符合接龙规则的函数
def is_valid_idiom(idiom):
    if idiom and idiom[0] == current_idiom[-1]:
        return True
    else:
        return False

# 游戏主循环
running = True
while running:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RETURN:
                # 玩家按下回车键,判断成语是否合法并符合接龙规则
                if player_input and validate_idiom(player_input) and is_valid_idiom(player_input):
                    # 成语合法且符合接龙规则,更新当前成语,并清空玩家输入
                    current_idiom = player_input
                    player_input = ""
                else:
                    # 成语不合法或不符合接龙规则,给出相应的提示
                    if not player_input:
                        print("请输入成语!")
                    elif not is_valid_idiom(player_input):
                        print("成语不符合接龙规则!")
            elif event.key == pygame.K_BACKSPACE:
                # 玩家按下退格键,删除最后一个字符
                player_input = player_input[:-1]
            else:
                # 玩家输入字符
                player_input += event.unicode

    # 绘制当前成语
    screen.fill(WHITE)
    text = font.render("当前成语:" + current_idiom, True, BLACK)
    screen.blit(text, (50, 50))

    # 绘制玩家输入
    input_text = font.render("玩家输入:" + player_input, True, BLACK)
    screen.blit(input_text, (50, 100))

    # 更新显示
    pygame.display.flip()

# 退出游戏
pygame.quit()

在上述代码中,我们添加了一个名为 is_valid_idiom 的函数,用于判断玩家输入的成语是否符合接龙规则。该函数检查玩家输入的成语是否为空,并且判断玩家输入的成语的第一个字是否与当前成语的最后一个字相同。如果成语符合接龙规则,则更新当前成语,并清空玩家输入;否则,给出相应的提示。

请注意,这只是一个示例,你可以根据自己的需求进行修改和扩展。例如,你可以添加更多的成语验证规则,或者修改提示的方式(例如在游戏窗口中显示提示信息)。

七、电脑判断示例代码

在这里插入图片描述

以下是一个示例代码,用于让电脑自动选择一个合适的成语作为回答:

import random

# 电脑回答的函数
def computer_answer():
    available_idioms = [idiom for idiom in idioms if idiom[0] == current_idiom[-1]]
    if available_idioms:
        return random.choice(available_idioms)
    else:
        return None

# 游戏主循环
running = True
while running:
    # 处理事件
    for event in pygame.event.get():
        # ...

    # ...

    # 电脑回答
    computer_idiom = computer_answer()
    if computer_idiom:
        # 成功选择一个合适的成语作为回答
        current_idiom = computer_idiom
    else:
        # 无法找到合适的成语作为回答,游戏结束
        print("电脑无法回答,游戏结束!")
        running = False

    # ...

# ...

在上述代码中,我们添加了一个名为 computer_answer 的函数,用于让电脑自动选择一个合适的成语作为回答。该函数首先筛选出所有以当前成语最后一个字开头的成语,然后从中随机选择一个成语作为回答。如果找不到合适的成语作为回答,则游戏结束。

你可以将 computer_answer 函数放在游戏主循环的适当位置,以便在玩家输入后调用该函数来获取电脑的回答。然后,根据电脑的回答更新当前成语,并进行相应的处理(例如判断游戏是否结束)。

请注意,这只是一个示例,你可以根据自己的需求进行修改和扩展。例如,你可以根据不同的策略选择电脑的回答,或者在电脑回答后添加额外的逻辑(例如判断电脑回答是否合法)。

八、游戏结束示例代码

在这里插入图片描述

以下是一个示例代码,添加了游戏结束的判断和时间限制:

import time

# 游戏时间限制(单位:秒)
time_limit = 60
start_time = time.time()

# 游戏主循环
running = True
while running:
    # 处理事件
    for event in pygame.event.get():
        # ...

    # ...

    # 判断玩家回答
    if player_input:
        if is_valid_idiom(player_input):
            if player_input[0] == current_idiom[-1]:
                current_idiom = player_input
                player_input = ""
            else:
                print("玩家回答不符合接龙规则!")
        else:
            print("玩家回答不是有效的成语!")

    # 判断电脑回答
    computer_idiom = computer_answer()
    if computer_idiom:
        current_idiom = computer_idiom
    else:
        print("电脑无法回答,游戏结束!")
        running = False

    # 判断游戏是否结束
    if time.time() - start_time > time_limit:
        print("时间到,游戏结束!")
        running = False

    # ...

# ...

在上述代码中,我们添加了一个游戏时间限制 time_limit,以秒为单位。在游戏主循环中,我们使用 time.time() 函数获取当前时间,并与游戏开始时间进行比较,判断是否超过了时间限制。如果超过了时间限制,则游戏结束。

你可以根据具体的游戏规则进行胜负判断。例如,可以在玩家回答或电脑回答后添加额外的逻辑,判断是否达到胜利条件或失败条件,然后设置 running 变量来控制游戏是否继续进行。

请注意,这只是一个示例,你可以根据自己的需求进行修改和扩展。例如,你可以添加更多的游戏规则判断,或者修改时间限制的方式(例如在游戏窗口中显示剩余时间)。

九、界面优化示例代码

在这里插入图片描述以下是一个示例代码,演示如何对游戏界面进行美化和优化,包括添加背景音乐、按钮和菜单等元素:

import pygame
import random

# 初始化Pygame
pygame.init()

# 设置窗口尺寸
window_width = 800
window_height = 600
window = pygame.display.set_mode((window_width, window_height))

# 加载背景音乐
pygame.mixer.music.load("background_music.mp3")
pygame.mixer.music.play(-1)  # 循环播放背景音乐

# 加载按钮图片
button_image = pygame.image.load("button_image.png")
button_rect = button_image.get_rect()
button_rect.center = (window_width // 2, window_height // 2)

# 游戏主循环
running = True
while running:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.MOUSEBUTTONDOWN:
            mouse_pos = pygame.mouse.get_pos()
            if button_rect.collidepoint(mouse_pos):
                print("按钮被点击!")
                # 在按钮被点击后执行相应的操作

    # 绘制背景
    window.fill((255, 255, 255))  # 使用白色填充窗口背景

    # 绘制按钮
    window.blit(button_image, button_rect)

    # 更新显示
    pygame.display.flip()

# 退出游戏
pygame.quit()

在上述代码中,我们使用 Pygame 的 pygame.mixer.music 模块加载并播放背景音乐。我们还加载了一个按钮图片,并使用 blit() 函数将其绘制在窗口上。在游戏主循环中,我们检测鼠标点击事件,并使用 collidepoint() 函数判断鼠标点击是否在按钮区域内。如果按钮被点击,我们可以在相应的条件下执行特定的操作。

你可以根据自己的需求修改按钮的位置、大小和外观,以及添加其他的游戏元素(如菜单、游戏角色等)。此外,你还可以使用 Pygame 的其他功能来增强游戏的可玩性和用户体验,例如添加音效、动画效果等。

十、扩展成语库示例代码

在这里插入图片描述以下是一个示例代码,演示如何扩展成语库,增加更多的成语:

import pygame
import random

# 初始化Pygame
pygame.init()

# 设置窗口尺寸
window_width = 800
window_height = 600
window = pygame.display.set_mode((window_width, window_height))

# 加载背景音乐
pygame.mixer.music.load("background_music.mp3")
pygame.mixer.music.play(-1)  # 循环播放背景音乐

# 加载按钮图片
button_image = pygame.image.load("button_image.png")
button_rect = button_image.get_rect()
button_rect.center = (window_width // 2, window_height // 2)

# 成语库
idioms = [
    "卧薪尝胆",
    "画蛇添足",
    "杯弓蛇影",
    # 添加更多的成语...
]

# 随机选择一个成语作为当前成语
current_idiom = random.choice(idioms)

# 游戏主循环
running = True
while running:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.MOUSEBUTTONDOWN:
            mouse_pos = pygame.mouse.get_pos()
            if button_rect.collidepoint(mouse_pos):
                print("按钮被点击!")
                # 在按钮被点击后执行相应的操作

    # 绘制背景
    window.fill((255, 255, 255))  # 使用白色填充窗口背景

    # 绘制按钮
    window.blit(button_image, button_rect)

    # 更新显示
    pygame.display.flip()

# 退出游戏
pygame.quit()

在上述代码中,我们创建了一个成语库 idioms,其中包含了一些成语。你可以根据需要添加更多的成语。在游戏主循环中,我们使用 random.choice() 函数随机选择一个成语作为当前成语。这样,每次游戏开始时,玩家和电脑都可以基于当前成语进行成语接龙。

你可以通过在 idioms 列表中添加更多的成语来扩展成语库。可以从各种来源获取成语,如成语词典、互联网资源等。确保成语库中的成语是正确且合法的。

请注意,上述代码只是一个示例,你可以根据自己的需要进行修改和扩展。例如,你可以创建一个文本文件,将成语存储在其中,并编写代码来读取该文件并构建成语库。这样可以更方便地扩展和管理成语库。

十一、音效和动画效果示例代码

在这里插入图片描述以下是一个示例代码,演示如何添加音效和动画效果:

import pygame
import random

# 初始化Pygame
pygame.init()

# 设置窗口尺寸
window_width = 800
window_height = 600
window = pygame.display.set_mode((window_width, window_height))

# 加载背景音乐
pygame.mixer.music.load("background_music.mp3")
pygame.mixer.music.play(-1)  # 循环播放背景音乐

# 加载按钮图片
button_image = pygame.image.load("button_image.png")
button_rect = button_image.get_rect()
button_rect.center = (window_width // 2, window_height // 2)

# 加载音效
click_sound = pygame.mixer.Sound("click_sound.wav")

# 成语库
idioms = [
    "卧薪尝胆",
    "画蛇添足",
    "杯弓蛇影",
    # 添加更多的成语...
]

# 随机选择一个成语作为当前成语
current_idiom = random.choice(idioms)

# 游戏主循环
running = True
while running:
    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        elif event.type == pygame.MOUSEBUTTONDOWN:
            mouse_pos = pygame.mouse.get_pos()
            if button_rect.collidepoint(mouse_pos):
                print("按钮被点击!")
                click_sound.play()  # 播放点击音效
                # 在按钮被点击后执行相应的操作

    # 绘制背景
    window.fill((255, 255, 255))  # 使用白色填充窗口背景

    # 绘制按钮
    window.blit(button_image, button_rect)

    # 添加动画效果
    rotation_angle = pygame.time.get_ticks() / 10  # 根据时间计算旋转角度
    rotated_button = pygame.transform.rotate(button_image, rotation_angle)
    button_rect.center = (window_width // 2, window_height // 2)
    window.blit(rotated_button, button_rect)

    # 更新显示
    pygame.display.flip()

# 退出游戏
pygame.quit()

在上述代码中,我们首先加载了一个点击音效 click_sound.wav,通过 pygame.mixer.Sound() 函数创建音效对象。然后,在按钮被点击的事件处理中,我们调用 play() 方法播放点击音效。

此外,我们还添加了一个动画效果。我们使用 pygame.time.get_ticks() 函数获取当前时间的毫秒数,并将其除以一个适当的值来计算旋转角度。然后,使用 pygame.transform.rotate() 函数根据旋转角度对按钮图片进行旋转。最后,我们将旋转后的按钮图片绘制在窗口上。

你可以根据需要添加其他的音效和动画效果。例如,可以在游戏开始时播放一个欢迎音效,或者在玩家完成一轮成语接龙时播放一个胜利的音效。同样,你可以使用 Pygame 的其他功能来实现更复杂的动画效果,如平移、缩放等。
在这里插入图片描述

请注意,上述代码只是一个示例,你可以根据自己的需要进行修改和扩展。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

证明之圆的分割

圆的分割 “数学证明问题:圆上点连线分割区域总数的倍增推理” 既然我已经谈到了数学证明的本质,现在让我们回到本系列开始时的问题。圆上有n个点,我们用直线将这些点两两连结起来,希望能够表明这些直线所分割出的区域总数是 2 …

【程序设计竞赛】C++与Java的细节优化

必须强调下,以下的任意一种优化,都应该是在本身采用的算法没有任何问题情况下的“锦上添花”,而不是“雪中送炭”。 如果下面的说法存在误导,请专业大佬评论指正 读写优化 C读写优化——解除流绑定 在ACM里,经常出现…

【Java程序设计】【C00251】基于Springboot的医院信息管理系统(有论文)

基于Springboot的医院信息管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的医院信管系统 本系统分为管理员功能模块、系统功能模块以及医生功能模块。 系统功能模块:医院信管系统,…

Swift Combine 用 Future 来封装异步请求 从入门到精通十一

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

【C语言】解析刘谦春晚魔术《守岁共此时》

今年的春晚上刘谦表演了魔术《守岁共此时》,台上台下积极互动(尤其是小尼),十分的有趣。刘谦老师的魔术不仅仅是他的高超手法,还有这背后的严谨逻辑,下面我们来用C语言来解析魔术吧。 源代码 #define _CRT…

[Python] 文件

这篇是Python基础语法的一个结尾了,还是可莉跟着大家一起学习哦~ 可莉将这篇博客收录在:《Python》 可莉推荐的优质博主主页:Keven ’ s blog 目录 一、文件是什么 二、常用的文件操作函数 1、打开文件 2、关闭文件 3、读取文件 read( ) …

JAVA设计模式之命令模式详解

命令模式 1 命令模式介绍 命令模式(command pattern)的定义: 命令模式将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象并且能够支持请求(命令)的排队执行…

jsp课程教学管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 课程教学管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0…

vue3-内置组件-Suspense

Suspense (实验性功能) <Suspense> 是一项实验性功能。它不一定会最终成为稳定功能&#xff0c;并且在稳定之前相关 API 也可能会发生变化。 <Suspense> 是一个内置组件&#xff0c;用来在组件树中协调对异步依赖的处理。它让我们可以在组件树上层等待下层的多个嵌…

最新Burp Suite入门讲解

Burp Suite的安装 Burp Suite是一款集成化的渗透测试工具&#xff0c;包含了很多功能&#xff0c;可以帮助我们高效地完成对Web应用程序的渗透测试和安全检测。 Burp Suite由Java语言编写&#xff0c;Java自身的跨平台性使我们能更方便地学习和使用这款软件。不像其他自动化测…

Offer必备算法06_位运算_十道力扣OJ题详解_由易到难

目录 位运算算法原理 ①力扣191. 位1的个数 解析代码 ②力扣338. 比特位计数 解析代码 ③力扣461. 汉明距离 解析代码 ④力扣136. 只出现一次的数字 解析代码 ⑤力扣260. 只出现一次的数字 III 解析代码 ⑥力扣面试题 01.01. 判定字符是否唯一 解析代码 ⑦力扣26…

STM32F1 - GPIO外设

GPIO 1> 硬件框图2> 工作模式 1> 硬件框图 2> 工作模式 C语言描述 /** * brief Configuration Mode enumeration */typedef enum { GPIO_Mode_AIN 0x0, // Analog Input 模拟输入 GPIO_Mode_IN_FLOATING 0x04, // input floating 浮空输入GPIO_Mode_I…

Linux第47步_安装支持linux的第三方库和mkimage工具

安装支持linux的第三方库和mkimage工具&#xff0c;做好移植前的准备工作。 编译linux内核之前&#xff0c;需要先在 ubuntu上安装“lzop库”和“libssl-dev库”&#xff0c;否则内核编译会失败。 mkimage工具会在zImage镜像文件的前面添加0x40个字节的头部信息,就可以得到uI…

【JAVA WEB】JavaScript--函数 作用域 对象

目录 函数 语法格式 示例 定义没有参数列表&#xff0c;也没有返回值的一个函数 定义一个有参数列表 &#xff0c;有返回值的函数 关于参数个数 函数表达式 作用域 作用域链 对象 基本概念 创建对象 1.使用 字面量 创建对象 2.使用new Object()创建对象 3.使…

Microsoft Word 超链接

Microsoft Word 超链接 1. 取消超链接2. 自动超链接2.1. 选项2.2. 校对 -> 自动更正选项2.3. Internet 及网络路径替换为超链接 References 1. 取消超链接 Ctrl A -> Ctrl Shift F9 2. 自动超链接 2.1. 选项 2.2. 校对 -> 自动更正选项 ​​​ 2.3. Internet…

java中事务的使用

文章目录 前言一、同一张表1.业务代码2.测试代码3.测试结果 二、不同表1.业务代码2.测试代码3.测试结果 总结 前言 本文将介绍在springboot中使用Transactional注解来完成对数据库事务的操作&#xff0c;保证数据一致性。 一、同一张表 1.业务代码 Controller Controller p…

二、ClickHouse简介

ClickHouse简介 前言一、行式存储二、DBMS功能三、多样化引擎四、高吞吐写入能力五、数据分区与线程级并行六、场景七、特定版本 前言 ClickHouse 是俄罗斯的 Yandex 于 2016 年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用 C 语言编写&#xff0c;主要…

C++线程浅谈

本篇文章我们来介绍一下C 多进程 多线程的技术 1.为什要学习多线程 多进程 提高程序的性能&#xff1a;进程和线程可以使程序并发执行&#xff0c;从而充分利用计算机的多核处理器和资源&#xff0c;提高程序的执行效率和吞吐量。 实现复杂任务&#xff1a;通过将任务划分为多…

Acwing---842.排列数字

排列数字 1.题目2.基本思想3.代码实现 1.题目 给定一个整数 n&#xff0c;将数字 1∼n排成一排&#xff0c;将会有很多种排列方法。 现在&#xff0c;请你按照字典序将所有的排列方法输出。 输入格式 共一行&#xff0c;包含一个整数 n。 输出格式 按字典序输出所有排列方案…

Java安全 URLDNS链分析

Java安全 URLDNS链分析 什么是URLDNS链URLDNS链分析调用链路HashMap类分析URL类分析 exp编写思路整理初步expexp改进最终exp 什么是URLDNS链 URLDNS链是Java安全中比较简单的一条利用链&#xff0c;无需使用任何第三方库&#xff0c;全依靠Java内置的一些类实现&#xff0c;但…