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

第五阶段:项目实践与后续学习指引

模块 10:综合项目实践

在这个模块中,我们将通过实际项目来综合运用前面所学的 Python 知识。我们会选择一个命令行记事本应用作为主要示例,同时简要介绍其他项目的思路。

项目:命令行记事本应用

1. 项目规划

良好的项目规划是成功的基础。让我们先明确这个记事本应用的功能需求:

  • 添加新笔记
  • 查看所有笔记
  • 按 ID 查看特定笔记
  • 编辑现有笔记
  • 删除笔记
  • 保存笔记到文件
  • 从文件加载笔记
2. 项目结构
 

noteapp/├── main.py          # 程序入口├── note_manager.py  # 笔记管理核心逻辑├── file_handler.py  # 文件操作逻辑├── ui.py            # 用户界面相关└── notes.json       # 数据存储文件
3. 代码实现

让我们逐个文件实现这个应用:

file_handler.py

 

python

import json
import osdef save_notes(notes, filename="notes.json"):"""将笔记保存到 JSON 文件Args:notes (list): 笔记列表filename (str): 保存的文件名"""with open(filename, 'w', encoding='utf-8') as f:json.dump(notes, f, ensure_ascii=False, indent=2)print(f"笔记已保存到 {filename}")def load_notes(filename="notes.json"):"""从 JSON 文件加载笔记Args:filename (str): 要加载的文件名Returns:list: 笔记列表,如果文件不存在则返回空列表"""if not os.path.exists(filename):return []try:with open(filename, 'r', encoding='utf-8') as f:return json.load(f)except json.JSONDecodeError:print(f"警告:{filename} 格式错误,创建新的笔记集")return []

note_manager.py

 

python

import datetime
from file_handler import save_notes, load_notesclass NoteManager:"""笔记管理器类,处理笔记的核心业务逻辑"""def __init__(self, filename="notes.json"):"""初始化笔记管理器Args:filename (str): 笔记文件名"""self.filename = filenameself.notes = load_notes(filename)# 确保每个笔记都有 IDself._ensure_note_ids()def _ensure_note_ids(self):"""确保每个笔记都有唯一 ID"""next_id = 1for note in self.notes:if 'id' not in note:note['id'] = next_idnext_id += 1else:next_id = max(next_id, note['id'] + 1)def _get_next_id(self):"""获取下一个可用 ID"""if not self.notes:return 1return max(note['id'] for note in self.notes) + 1def add_note(self, title, content):"""添加新笔记Args:title (str): 笔记标题content (str): 笔记内容Returns:dict: 新创建的笔记"""timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")note = {'id': self._get_next_id(),'title': title,'content': content,'created_at': timestamp,'updated_at': timestamp}self.notes.append(note)save_notes(self.notes, self.filename)return notedef get_all_notes(self):"""获取所有笔记Returns:list: 所有笔记的列表"""return self.notesdef get_note_by_id(self, note_id):"""根据 ID 获取笔记Args:note_id (int): 笔记 IDReturns:dict or None: 找到的笔记或 None(如果未找到)"""for note in self.notes:if note['id'] == note_id:return notereturn Nonedef update_note(self, note_id, title=None, content=None):"""更新笔记Args:note_id (int): 要更新的笔记 IDtitle (str, optional): 新标题,如果不提供则保持原值content (str, optional): 新内容,如果不提供则保持原值Returns:bool: 更新是否成功"""note = self.get_note_by_id(note_id)if not note:return Falseif title is not None:note['title'] = titleif content is not None:note['content'] = contentnote['updated_at'] = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")save_notes(self.notes, self.filename)return Truedef delete_note(self, note_id):"""删除笔记Args:note_id (int): 要删除的笔记 IDReturns:bool: 删除是否成功"""for i, note in enumerate(self.notes):if note['id'] == note_id:del self.notes[i]save_notes(self.notes, self.filename)return Truereturn False

ui.py

 

python

def print_menu():"""打印主菜单"""print("\n===== 笔记本应用 =====")print("1. 添加新笔记")print("2. 查看所有笔记")print("3. 查看特定笔记")print("4. 编辑笔记")print("5. 删除笔记")print("0. 退出")print("=====================")return input("请选择操作 (0-5): ")def get_note_input():"""获取笔记输入"""title = input("笔记标题: ")print("输入笔记内容 (输入空行结束):")content_lines = []while True:line = input()if not line:breakcontent_lines.append(line)content = "\n".join(content_lines)return title, contentdef print_note(note):"""打印单个笔记"""if not note:print("笔记不存在")returnprint(f"\n----- 笔记 ID: {note['id']} -----")print(f"标题: {note['title']}")print(f"创建时间: {note['created_at']}")print(f"更新时间: {note['updated_at']}")print(f"\n{note['content']}")print("-" * 30)def print_all_notes(notes):"""打印所有笔记的简要信息"""if not notes:print("没有笔记")returnprint("\n所有笔记:")print("ID\t标题\t\t创建时间")print("-" * 50)for note in notes:# 标题可能过长,截断显示title = (note['title'][:15] + '...') if len(note['title']) > 18 else note['title']print(f"{note['id']}\t{title}\t\t{note['created_at']}")

main.py

 

python

from note_manager import NoteManager
from ui import print_menu, get_note_input, print_note, print_all_notesdef main():"""主函数,应用入口点"""manager = NoteManager()while True:choice = print_menu()if choice == '0':print("感谢使用笔记本应用,再见!")breakelif choice == '1':  # 添加新笔记title, content = get_note_input()note = manager.add_note(title, content)print(f"笔记已添加,ID: {note['id']}")elif choice == '2':  # 查看所有笔记notes = manager.get_all_notes()print_all_notes(notes)elif choice == '3':  # 查看特定笔记try:note_id = int(input("请输入笔记 ID: "))note = manager.get_note_by_id(note_id)print_note(note)except ValueError:print("无效的 ID,请输入数字")elif choice == '4':  # 编辑笔记try:note_id = int(input("请输入要编辑的笔记 ID: "))note = manager.get_note_by_id(note_id)if not note:print("笔记不存在")continueprint("当前笔记内容:")print_note(note)print("请输入新内容 (留空表示不修改):")title = input(f"新标题 [{note['title']}]: ")title = title if title else Noneprint(f"新内容 (输入空行结束) [当前内容有 {len(note['content'])} 个字符]:")content_lines = []while True:line = input()if not line:breakcontent_lines.append(line)content = "\n".join(content_lines) if content_lines else Noneif manager.update_note(note_id, title, content):print("笔记已更新")else:print("更新失败")except ValueError:print("无效的 ID,请输入数字")elif choice == '5':  # 删除笔记try:note_id = int(input("请输入要删除的笔记 ID: "))if manager.delete_note(note_id):print("笔记已删除")else:print("删除失败,可能笔记不存在")except ValueError:print("无效的 ID,请输入数字")else:print("无效的选择,请重试")input("\n按回车键继续...")if __name__ == "__main__":main()
4. 运行项目

在命令行中进入项目文件夹,然后执行:

 

bash

python main.py
5. 项目优化思路

这个项目还可以进一步优化:

  • 添加搜索功能(按标题或内容关键字)
  • 添加笔记分类功能
  • 实现笔记导出功能(如导出为 Markdown 或 HTML)
  • 添加单元测试确保功能正确性
  • 增加异常处理提高程序健壮性

其他项目思路

  1. 联系人管理系统
    • 存储联系人信息(姓名、电话、邮箱等)
    • 提供增删改查功能
    • 支持按姓名或其他字段搜索
    • 数据持久化存储
  2. 简单爬虫
    • 使用 requests 库获取网页内容
    • 使用 BeautifulSoup 解析 HTML
    • 提取特定信息(如新闻标题、价格等)
    • 将数据保存到文件或数据库
  3. 文本冒险游戏
    • 设计游戏场景和故事线
    • 使用字典或类来表示房间和物品
    • 实现命令解析器处理用户输入
    • 添加游戏状态保存/加载功能

模块 11:代码风格与调试

PEP 8 代码风格指南

PEP 8 是 Python 官方的代码风格指南,遵循这些规范可以让你的代码更加可读和一致。

主要规范:
  1. 缩进:使用 4 个空格进行缩进(不用制表符)
  2. 行长度:每行不超过 79 个字符
     

    python

    # 不好的例子
    long_string = "这是一个非常长的字符串,将会超过79个字符的限制,应该考虑适当拆分或使用其他方式处理"# 好的例子
    long_string = ("这是一个非常长的字符串,""将会超过79个字符的限制,""应该考虑适当拆分或使用其他方式处理")
  3. 导入规范
     

    python

    # 不好的例子
    import sys, os, re# 好的例子
    import os
    import re
    import sys# 多个模块从同一包导入时可以这样
    from subprocess import Popen, PIPE
  4. 空格使用
     

    python

    # 不好的例子
    x=1
    y = 2
    z=[1,2]# 好的例子
    x = 1
    y = 2
    z = [1, 2]
  5. 命名约定
    • 类名使用 CamelCase(如 MyClass
    • 函数和变量名使用 snake_case(如 my_function
    • 常量使用全大写 SNAKE_CASE(如 MAX_VALUE
    • 受保护的属性前加单下划线(如 _protected
    • 私有属性前加双下划线(如 __private
  6. 注释
    • 行内注释应该至少用两个空格和代码分隔
    • 注释应该是完整的句子,首字母大写
     

    python

    x = 5  # 这是一个行内注释

编写清晰的注释和文档字符串

文档字符串 (Docstrings):

文档字符串是用三引号括起来的字符串,放在模块、类、方法或函数的开头,用于描述其功能。

 

python

def calculate_area(radius):"""计算圆的面积。Args:radius (float): 圆的半径Returns:float: 圆的面积Raises:ValueError: 当半径为负数时"""if radius < 0:raise ValueError("半径不能为负数")return 3.14159 * radius * radius
注释的最佳实践:
  1. 解释为什么,而不仅仅是什么
     

    python

    # 不好的例子 - 解释了什么(代码已经表明)
    i = i + 1  # 将 i 加 1# 好的例子 - 解释了为什么
    i = i + 1  # 修正偏移量补偿边界效应
  2. 及时更新注释:如果代码变更,确保相应的注释也更新
  3. 关注复杂逻辑:简单代码不需要注释,复杂逻辑才需要
  4. 避免废话
     

    python

    # 不好的例子
    x = 5  # 将 x 设为 5

调试技巧

使用 print 语句调试:

最简单的调试方法是使用 print 语句检查变量值和程序流程:

 

python

def complex_calculation(data):print(f"输入数据: {data}")  # 查看输入result = process_step_1(data)print(f"步骤 1 结果: {result}")  # 查看中间结果final = process_step_2(result)print(f"最终结果: {final}")  # 查看最终结果return final

提示:使用格式化的 print 语句,清晰标识输出内容。

使用断言 (assert):
 

python

def divide(a, b):assert b != 0, "除数不能为零"return a / b
使用日志模块替代 print:
 

python

import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')def complex_function():logging.debug("函数开始执行")# 代码...logging.info("完成第一阶段")# 更多代码...logging.debug("函数执行完毕")
使用 IDE 的调试器

以 VS Code 为例:

  1. 在代码中设置断点(点击行号旁边)
  2. 启动调试器(通常是 F5 键)
  3. 使用调试工具栏控制执行:
    • 继续(F5)
    • 单步执行(F10)
    • 单步进入(F11)
    • 单步跳出(Shift+F11)
  4. 查看变量窗口了解当前状态
  5. 使用监视窗口跟踪特定表达式
常见调试策略:
  1. 二分查找法:如果有大段代码出错,尝试确定问题的大致位置,然后逐步缩小范围
  2. 最小可重现示例:创建一个最小的能重现问题的程序
  3. 控制变量法:一次只改变一个因素,观察结果

模块 12:版本控制(Git/GitHub)

Git 基础概念

Git 是一个分布式版本控制系统,帮助你跟踪代码变更历史。

主要概念:
  1. 仓库(Repository):包含项目所有文件和历史记录的容器
  2. 提交(Commit):代码变更的快照
  3. 分支(Branch):独立的代码开发线
  4. 工作区(Working Directory):你当前看到和编辑的文件
  5. 暂存区(Staging Area):准备提交的变更
  6. 远程(Remote):托管在其他地方(如 GitHub)的代码副本

基本 Git 操作

初始设置:
 

bash

# 设置用户名和邮箱
git config --global user.name "你的名字"
git config --global user.email "your.email@example.com"
创建仓库:
 

bash

# 初始化新仓库
git init# 或克隆现有仓库
git clone https://github.com/username/repository.git
基本工作流程:
 

bash

# 查看文件状态
git status# 将文件添加到暂存区
git add filename.py  # 添加特定文件
git add .  # 添加所有变更# 将暂存的变更提交
git commit -m "添加了笔记功能"# 查看提交历史
git log
分支操作:
 

bash

# 创建新分支
git branch feature-notes# 切换到分支
git checkout feature-notes# 创建并切换(组合命令)
git checkout -b feature-ui# 合并分支
git checkout main  # 先切回主分支
git merge feature-notes  # 将特性分支合并到主分支
与远程仓库交互:
 

bash

# 添加远程仓库
git remote add origin https://github.com/username/repo.git# 推送到远程
git push origin main# 获取远程更新
git pull origin main

GitHub 协作流程

  1. Fork 仓库:在 GitHub 上点击 "Fork" 按钮,创建项目的个人副本
  2. 克隆仓库git clone https://github.com/your-username/repo.git
  3. 创建特性分支git checkout -b new-feature
  4. 编写代码并提交:进行更改,然后 git addgit commit
  5. 推送分支git push origin new-feature
  6. 创建 Pull Request:在 GitHub 上发起 PR,请求原始项目合并你的更改
  7. 代码审查和讨论:项目维护者会审查你的代码并给出反馈
  8. 合并 PR:通过代码审查后,变更将被合并到主项目

版本控制最佳实践

  1. 小批量、频繁提交:每个提交应该解决一个特定问题
  2. 编写清晰的提交信息:简明描述所做的更改和原因
  3. 使用 .gitignore:排除不应纳入版本控制的文件(如配置文件、密钥、临时文件)
  4. 不要提交生成的文件:如编译结果、日志文件等
  5. 及时同步远程变更:定期 git pull 以避免冲突
  6. 使用分支进行功能开发:不要直接在主分支上开发

模块 13:代码风格与调试(续)

进阶调试技巧

使用 pdb (Python Debugger):
 

python

import pdbdef buggy_function():x = 10y = 0pdb.set_trace()  # 程序会在此处暂停,进入调试模式result = x / yreturn result

在 pdb 调试模式中,你可以使用以下命令:

  • n (next):执行当前行,进入下一行
  • s (step):单步进入函数
  • c (continue):继续执行直到下一个断点
  • p expression:打印表达式的值
  • q (quit):退出调试器
  • l (list):显示当前代码附近的行
使用 try-except 定位错误:
 

python

try:result = complex_calculation(data)
except Exception as e:print(f"发生错误: {type(e).__name__}, {e}")import tracebacktraceback.print_exc()  # 打印详细的错误堆栈
性能分析与优化:
 

python

import cProfiledef my_function():# 代码...pass# 分析函数性能
cProfile.run('my_function()')

模块 14:下一步学习

回顾总结

至此,你已经学习了 Python 的基础语法、数据类型、控制结构、函数、类、文件操作、异常处理、模块和包的使用,以及项目实践、调试技巧和版本控制。这些知识为你打下了坚实的 Python 编程基础。

Python 的主要应用方向

1. Web 开发

Python 有多个流行的 Web 框架:

  • Flask:轻量级框架,适合小型应用和 API
     

    python

    from flask import Flask
    app = Flask(__name__)@app.route('/')
    def hello():return "Hello, World!"if __name__ == '__main__':app.run(debug=True)
  • Django:全功能框架,包含 ORM、认证、管理界面等
     

    python

    # 创建项目
    django-admin startproject mysite# 创建应用
    python manage.py startapp blog# 运行开发服务器
    python manage.py runserver
2. 数据科学与分析

Python 是数据科学的主要语言,常用库包括:

  • NumPy:科学计算基础,提供高性能的多维数组
     

    python

    import numpy as nparr = np.array([1, 2, 3, 4, 5])
    print(arr.mean())  # 计算平均值
  • Pandas:数据分析和操作
     

    python

    import pandas as pd# 创建数据框
    df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35],'Salary': [50000, 60000, 70000]
    })# 基本统计
    print(df.describe())# 过滤数据
    high_salary = df[df['Salary'] > 55000]
  • Matplotlib:数据可视化
     

    python

    import matplotlib.pyplot as pltplt.figure(figsize=(10, 6))
    plt.plot([1, 2, 3, 4], [10, 20, 25, 30], marker='o')
    plt.title('简单折线图')
    plt.xlabel('X 轴')
    plt.ylabel('Y 轴')
    plt.grid(True)
    plt.show()
  • Scikit-learn:机器学习
     

    python

    from sklearn.model_selection import train_test_split
    from sklearn.linear_model import LinearRegression
    from sklearn.metrics import mean_squared_error# 准备数据
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)# 训练模型
    model = LinearRegression()
    model.fit(X_train, y_train)# 预测并评估
    predictions = model.predict(X_test)
    mse = mean_squared_error(y_test, predictions)
    print(f"均方误差: {mse}")
3. 自动化脚本

Python 非常适合自动化重复性任务:

  • 文件处理
     

    python

    import os
    import shutil# 批量重命名文件
    for filename in os.listdir('.'):if filename.endswith('.txt'):new_name = 'processed_' + filenameshutil.move(filename, new_name)
  • 网络自动化
     

    python

    import requests# 定期检查网站状态
    def check_website(url):try:response = requests.get(url, timeout=5)return response.status_code == 200except requests.RequestException:return Falsesites = ['https://example.com', 'https://python.org']
    for site in sites:print(f"{site} 运行状态: {'正常' if check_website(site) else '异常'}")
4. 机器学习与人工智能
  • TensorFlowPyTorch:深度学习框架
     

    python

    import tensorflow as tf# 创建简单的神经网络
    model = tf.keras.Sequential([tf.keras.layers.Dense(128, activation='relu', input_shape=(784,)),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(10, activation='softmax')
    ])model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy'])
5. 游戏开发
  • Pygame:Python 游戏开发库
     

    python

    import pygamepygame.init()
    screen = pygame.display.set_mode((800, 600))
    pygame.display.set_caption("我的游戏")running = True
    while running:for event in pygame.event.get():if event.type == pygame.QUIT:running = Falsescreen.fill((0, 0, 0))  # 黑色背景pygame.display.flip()pygame.quit()

相关文章:

第五阶段:项目实践与后续学习指引

模块 10&#xff1a;综合项目实践 在这个模块中&#xff0c;我们将通过实际项目来综合运用前面所学的 Python 知识。我们会选择一个命令行记事本应用作为主要示例&#xff0c;同时简要介绍其他项目的思路。 项目&#xff1a;命令行记事本应用 1. 项目规划 良好的项目规划是…...

MoogDB数据库日常维护技巧与常见问题解析

在当今的数据驱动世界中&#xff0c;数据库作为信息存储与管理的核心组件&#xff0c;扮演着举足轻重的角色。MoogDB作为一款高性能、易扩展的数据库解决方案&#xff0c;越来越受到开发者和企业的青睐。为了确保MoogDB的稳定性与高性能&#xff0c;定期的日常维护及对常见问题…...

Java 中的各种锁详解

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

多店铺商城_多商户商城系统源码_免费开源!

在电商行业快速发展的今天&#xff0c;多店铺商城系统&#xff08;B2B2C模式&#xff09;已成为企业实现平台化运营的核心工具&#xff0c;就像我们平时用的淘宝&#xff0c;京东那样。如果你想做一个电商平台就需要这种多店铺商城系统。 本文将深入探讨多商户商城系统的核心功…...

【2025年泰迪杯数据挖掘挑战赛】A题 数据分析+问题建模与求解+Python代码直接分享

目录 2025年泰迪杯数据挖掘挑战赛A题完整论文&#xff1a;建模与求解Python代码1问题一的思路与求解1.1 问题一的思路1.1.1对统计数据进行必要说明&#xff1a;1.1.2统计流程&#xff1a;1.1.3特殊情况的考虑&#xff1a; 1.2 问题一的求解1.2.1代码实现1.2.2 问题一结果代码分…...

NO.95十六届蓝桥杯备战|图论基础-单源最短路|负环|BF判断负环|SPFA判断负环|邮递员送信|采购特价产品|拉近距离|最短路计数(C++)

P3385 【模板】负环 - 洛谷 如果图中存在负环&#xff0c;那么有可能不存在最短路。 BF算法判断负环 执⾏n轮松弛操作&#xff0c;如果第n轮还存在松弛操作&#xff0c;那么就有负环。 #include <bits/stdc.h> using namespace std;const int N 2e3 10, M 3e3 1…...

ROS2模块库概览

一、核心通信与基础库&#xff08;最常用&#xff09; 客户端库 rclcpp (ROS Client Library for C) 核心API&#xff1a;create_node(), create_publisher(), create_subscription()高级特性&#xff1a; 生命周期节点&#xff1a;通过rclcpp_lifecycle实现configure/activate…...

在机器视觉检测中为何选择线阵工业相机?

线阵工业相机&#xff0c;顾名思义是成像传感器呈“线”状的。虽然也是二维图像&#xff0c;但极宽&#xff0c;几千个像素的宽度&#xff0c;而高度却只有几个像素的而已。一般在两种情况下使用这种相机&#xff1a; 1. 被测视野为细长的带状&#xff0c;多用于滚筒上检测的问…...

Linux应急中常用命令

pwdx {pid} 提供进程的 当前工作目录&#xff0c;即进程正在操作的目录。它显示的是进程的运行时工作目录&#xff0c;而不是启动时的可执行文件路径。等同于ls -al /proc//cwdps -aux 和 top 都是用来查看 Linux 系统中进程的命令&#xff0c;但它们的功能、输出格式和使用场景…...

Node.js 文件读取与复制相关内容

Node.js 文件读取与复制相关内容的系统总结&#xff0c;包括 同步读取、异步读取、流式读取、复制操作、两者对比及内存测试。 &#x1f9e9; 一、Node.js 文件读取方式总结 Node.js 使用 fs&#xff08;文件系统&#xff09;模块进行文件操作&#xff1a; 1. 同步读取&#…...

数据结构-串

串是数据结构中一种重要的数据类型&#xff0c;广泛应用于文本处理、信息检索等领域。本文将从串的基本概念、存储实现、应用举例以及总结核心知识点四个方面进行详细讲解&#xff0c;帮助大家更好地理解和掌握串这一数据结构。 一、串的基本概念及其抽象数据类型 1.1 串的定…...

Windows 下 MongoDB ZIP 版本安装指南

在开发和生产环境中&#xff0c;MongoDB 是一种非常流行的 NoSQL 数据库&#xff0c;以其灵活性和高性能而受到开发者的青睐。对于 Windows 用户来说&#xff0c;MongoDB 提供了多种安装方式&#xff0c;其中 ZIP 版本因其灵活性和轻量级的特点&#xff0c;成为很多开发者的首选…...

在 Spring Boot 中实现服务器端推送(SSE):两种方法的比较与实践

在现代 Web 应用中&#xff0c;实时数据推送是一个常见的需求。无论是实时消息通知、股票行情更新&#xff0c;还是在线游戏的实时数据交互&#xff0c;服务器端推送&#xff08;Server-Sent Events&#xff0c;简称 SSE&#xff09;都是一种高效且易于实现的解决方案。在 Spri…...

2025年十六届蓝桥杯Python B组原题及代码解析

相关试题可以在洛谷上测试用例&#xff1a; 2025 十六届 蓝桥杯 Python B组 试题 A&#xff1a;攻击次数 答案&#xff1a;103 print(103)代码&#xff1a; # 初始化敌人的血量 x 2025# 初始化回合数 turn 0# 模拟攻击过程 while x > 0:# 回合数加一turn 1# 第一个英…...

数据清洗到底在清洗什么?

在大数据时代&#xff0c;数据是每个企业的五星资产&#xff0c;被誉为“新石油”&#xff0c;但未经处理的数据往往参杂着大量“杂质”。这些“脏数据”不仅影响分析结果&#xff0c;严重的甚至误导企业决策。数据清洗作为数据预处理的关键环节&#xff0c;正是通过“去芜存菁…...

Microsoft Azure 基础知识简介

Microsoft Azure 基础知识简介 已完成100 XP 2 分钟 Microsoft Azure 是一个云计算平台&#xff0c;提供一系列不断扩展的服务&#xff0c;可帮助你构建解决方案来满足业务目标。 Azure 服务支持从简单到复杂的一切内容。 Azure 具有简单的 Web 服务&#xff0c;用于在云中托…...

mysql表类型查询

普通表 SELECT table_schema AS database_name,table_name FROM information_schema.tables WHERE table_schema NOT IN (information_schema, mysql, performance_schema, sys)AND table_type BASE TABLEAND table_name NOT IN (SELECT DISTINCT table_name FROM informatio…...

数据库ALGORITHM = INSTANT研究过程

背景 偶然在团队中发现同事大量使用 ALGORITHM INSTANT 更新字段&#xff0c;根据固有的理解&#xff0c;平时字段的更新必然会涉及到表结构的更改&#xff0c;印象中数据库会加入MDL锁去保证表数据的一致性。 但是听说在Mysql8.0特性中&#xff0c;表明在更新字段的时候此方法…...

n8n 为技术团队打造的安全工作流自动化平台

AI MCP 系列 AgentGPT-01-入门介绍 Browser-use 是连接你的AI代理与浏览器的最简单方式 AI MCP(大模型上下文)-01-入门介绍 AI MCP(大模型上下文)-02-awesome-mcp-servers 精选的 MCP 服务器 AI MCP(大模型上下文)-03-open webui 介绍 是一个可扩展、功能丰富且用户友好的…...

基于Python的App流量大数据分析与可视化方案

一、引言 App流量数据通常包括用户的访问时间、停留时间、点击行为、页面跳转路径等信息。这些数据分散在不同的服务器日志、数据库或第三方数据平台中&#xff0c;需要通过有效的技术手段进行整合和分析。Python在数据科学领域的广泛应用&#xff0c;得益于其简洁的语法、强大…...

【Linux 并发与竞争实验】

【Linux 并发与竞争实验】 之前学习了四种常用的处理并发和竞争的机制&#xff1a;原子操作、自旋锁、信号量和互斥体。本章我们就通过四个实验来学习如何在驱动中使用这四种机制。 文章目录 【Linux 并发与竞争实验】1.原子操作实验1.1 实验程序编写1.2 运行测试 2.自旋锁实验…...

wx219基于ssm+vue+uniapp的教师管理系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…...

leetcode0079. 单词搜索-medium

1 题目&#xff1a; 单词搜索 官方标定难度&#xff1a;中 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字…...

SvelteKit 最新中文文档教程(20)—— 最佳实践之性能

前言 Svelte&#xff0c;一个语法简洁、入门容易&#xff0c;面向未来的前端框架。 从 Svelte 诞生之初&#xff0c;就备受开发者的喜爱&#xff0c;根据统计&#xff0c;从 2019 年到 2024 年&#xff0c;连续 6 年一直是开发者最感兴趣的前端框架 No.1&#xff1a; Svelte …...

在多系统环境中实现授权闭环,Tetra Pak 借助CodeMeter打造食品工业的安全自动化体系

一、 行业背景与安全新挑战 在食品加工自动化不断深化的背景下&#xff0c;食品安全、功能安全与知识产权保护的需求日益迫切。Tetra Pak 作为全球领先的食品加工和包装解决方案提供商&#xff0c;业务遍布 160 多个国家&#xff0c;涵盖从配料混合、碳酸化处理到全线自动包装。…...

复数概念的演进 3 —— 复数的意义

注&#xff1a;本文为 “从三次方程到复平面&#xff1a;复数概念的演进” 相关文章合辑。 因 csdn 篇幅限制分篇连载&#xff0c;此为第 3 篇。 生料合辑&#xff0c;同主题文章未整理去重。 机翻&#xff0c;未校。 Complex number and its discovery history 复数及其发…...

三菱PLC

三菱PLC通信协议及读写 引言 三菱PLC&#xff08;Programmable Logic Controller&#xff0c;可编程逻辑控制器&#xff09;是工业自动化领域中广泛使用的一款PLC品牌。三菱PLC支持多种通信协议&#xff0c;包括Modbus、Ethernet/IP、Melsec Net等。本文将详细介绍三菱PLC的通…...

B端可视化方案,如何助力企业精准决策,抢占市场先机

在当今竞争激烈的商业环境中&#xff0c;企业需要快速、准确地做出决策以抢占市场先机。B端可视化方案通过将复杂的企业数据转化为直观的图表和仪表盘&#xff0c;帮助企业管理层和业务人员快速理解数据背后的业务逻辑&#xff0c;从而做出精准决策。本文将深入探讨B端可视化方…...

0701表单组件-react-仿低代码平台项目

文章目录 1 react表单组件1.1 受控组件 (Controlled Components)示例代码&#xff1a; 1.2 非受控组件 (Uncontrolled Components)示例代码&#xff1a; 2 AntD表单组件实战2.1 开发搜索功能2.2 开发注册页2.3 开发登录页2.4 表单组件校验 结语 1 react表单组件 input表单组件…...

【adb】bat批处理+adb 自动亮屏,自动解锁屏幕,启动王者荣耀

准备adb 下载 需要确认是否安装了adb.exe文件,可以在: 任务管理器 -->详细信息–>找一下后台运行的adb 安装过anroid模拟器,也存在adb,例如:雷电安装目录 D:\leidian\LDPlayer9 单独下载adb 官方下载地址:[官方网址] 下载目录文件: 测试adb USB连接手机 首先在设置界…...