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

18. 模块

一、什么是模块

  模块化 指将一个完成的程序分解为一个一个小的模块。通过将模块组合,来搭建一个完整的程序。如果不采用模块化,那么所有的代码将统一保存到一个文件中。采用模块化后,将程序分别编写到多个文件中。使用模块化后,我们可以把代码进行复用,这方面后序的开发和维护。

二、模块的创建

  在 Python 中一个 .py 结尾的文件就是一个模块。要向创建一个模块,就需要创建一个 Python 文件。模块名要符合标识符的命名规范。

  创建一个 moudle.py 文件,内容如下:

if __name__ == "__main__":print('当前模块被作为主模块执行了')print(__name__,"模块模块被执行了")# 在模块中定义的变量,在引入模块后,就可以直接使用了
a = 10# 可以在模块中定义函数
def test():print("我是", __name__ , "模块中的test()方法")# 可以定义类
class Person:def __init__(self):self.name = "Sakura"

当当前文件被运行时,__name__ 等于 __main__,如果当前模块是被导入的话,则 __name__ 等于模块的名称;

三、模块的引入

3.1、使用import导入模块

  我们可以通过 import 关键字引入多个模块,多个模块之间用逗号(,)分隔。import 语句可以在程序的任意位置调用,但是一般情况下,import 语句都会统一写在程序的开头。我们可以引入同一个模块多次,但是模块的实例只会创建一个。每一个模块内部都有一个 __name__ 属性,通过这个属性可以获取模块的名字。

import 模块名1,模块名2,...

  其中,模块名就是 Python 文件的名字,不要后缀名(.py)。在使用 import 语句导入不同模块时,每执行一条 import 语句都会创建一个新的名称空间(namespace),并且在该名称空间中执行与 .py 相关的所有语句。在调用模块中的变量、函数和类名前加上 “模块名.”的前缀。

  使用 import 语句首次导入模块时,会产生该模块对应的名称空间。然后会运行该模块,将该模块运行过程中生成的名字都会丢到这个名称空间中。然后会在当前执行文件中产生一个名字,该名字指向被导入模块产生的名称空间。之后的导入,都是直接引用首次导入产生的名称空间,不会重复实现。

  创建 template.py 文件,内容如下:

import moudle# 一个程序中只会有一个主模块,主模块就是直接通过 Python 执行的模块。
print("主模块",__name__)
print(moudle)
print(moudle.__name__)# 访问模块中的属性
print(moudle.a)# 访问模块中的方法
moudle.test()# 使用模块中的类
p = moudle.Person()
print(p)
print(p.name)

  我们还可以通过 as 关键字为模块名指定别名。

import 模块名 as 别名
import moudle as testprint(test)
print(test.__name__)

命名空间可以理解为记录名字和对象之间对应关系的空间;

目前 Python 的命名空间大部分都是通过字典(dict)来实现的,其中,key 是标识符,value 是具体的对象;

3.2、使用from…import导入模块

  如果每次导入模块时都创建一个新的命名空间,而是将具体的定义导入到当前的命名空间中,这时可以使用 from…import 语句。使用 from…import 语句后,不需要再添加前缀,可以直接通过具体的变量、函数、类名等访问。

from 模块名 import 变量

  使用 from … import 导入模块时,会产生该模块对应的名称空间。然后会运行该模块,将该模块运行过程中生成的名字都会丢到这个名称空间中。然后会在当前文件的名称空间拿到一个名字,该名字指向被导入模块中的对应成员的内存地址。

  创建 routine.py 文件,内容如下:

from moudle import Person,testp = Person()
print(p)
print(p.name)test()

  我们还可以通过如下方法引入模块中的所有内容:

from 模块名 import *

在通过 from 模块名 import * 导入模块中的内容时,不会引入以下划线开头的变量。

  我们还可以为引入的变量使用别名:

from 模块名 import 变量 as 别名
from moudle import test as new_testdef test():print("我是主模块中的test()方法")test()
new_test()

在使用 from…import 导入模块中的定义时,需要保证所导入的内容在当前的命名空间是唯一的,否则将会出现冲突,后导入的同名变量、函数或者类会覆盖先导入的;

3.3、模块的导入规则

  在 Python 内部导入模块时,必须要遵循它的导入规则,必须去指定的目录中去找 .py 文件。我们可以通过 sys 模块中的 path 属性来查看指定的导入目录。

import sysfor item in sys.path:print(item)

  运行结果如下:

e:\Source\Software\Python                 # 当前文件所在的目录
D:\Pycharm\Python311\python311.zip        # Python解释器的python311.zip压缩包
D:\Pycharm\Python311\DLLs                 # Python解释器的DLLs目录
D:\Pycharm\Python311\Lib                  # Python解释器的Lib目录
D:\Pycharm\Python311                      # Python解释器的根目录
D:\Pycharm\Python311\Lib\site-packages    # Python解释器的Lib目录下的site-packages目录,第三方模块的安装目录

在 Pycharm 中运行此代码时,会自动添加当前项目的目录到 sys.path 中;

  导入文件时,都是根据 sys.path 中的目录进行 .py 文件的寻找。在导入模块前,我们可以通过 append() 方法自己添加路径。

import os
import syspath = os.path.abspath(__file__)            # 获取当前运行文件的绝对路径
parent_path = os.path.dirname(path)         # 获取当前运行文件所在的目录
base_path = os.path.dirname(parent_path)    # 获取当前运行文件所在的目录的上一级目录sys.path.append(parent_path)
sys.path.append(base_path)for item in sys.path:print(item)

四、标准库

  为了实现开箱即用的思想,Python 为我们提供了一个模块的标准库。在这个标准库中,有很多很强大的模块我们可以直接使用,并且这个标准库会随 Python 的安装一同安装。

  对于标准库中的模块,我们可以直接使用 import 语句导入到 Python 文件中使用。

import 模块名

  Python 中提供了许多标准模块,我们可以在 Python 的帮助文档中查看。具体的方法是:打开 Python 的安装目录下的 Doc 下的 html 目录,在该目录中有一个名为 index.html 文件即为 Python 的帮助文档。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

模块名描述
sys与 Python 解释器一起环境相关的标准库
time提供与时间相关的各种函数的标准库
os提供了访问操作系统服务功能的标准库
calendar提供了与日期相关的各种函数的标准库
urllib用来读取来自网上(服务器上)数据据的标准库
json用于使用 JSON 序列化和反序列化对象
re用于在字符串中执行正则表达式匹配和替换
math提供算术运算函数的标准库
decimal用于进行精确控制运算精度、有效数位和四舍五入操作的十进制运算
shutil用于进行高级文件操作,如复制、移动、重命名等
logging提供了灵活的记录事件、错误、警告和调试信息等日志信息的功能
tkinter使用 Python 进行 GUI 编程的标准库
import sys
# pprint模块中的pprint()方法可以用来堆打印的数据做简单的格式化
import pprint# 获取执行代码时,命令行中所包含的参数
# 该属性是一个列表,列表中保存了当前命令的所有参数
# 命令行中输入 python python文件名 参数1 参数2 ...
print(sys.argv)# 获取当前程序中加载的所有模块
# moudules是一个字典,字典的key是模块的名字,字典的value是模块对象
pprint.pprint(sys.modules)# 它是一个列表,列表中保存的是模块的搜索路劲
pprint.pprint(sys.path)# 表示当前python运行的平台
print(sys.platform)# 该函数用来退出程序
sys.exit("程序运行结束")
import os# 通过这个属性可以获取系统的环境变量
print(os.environ,'\n')
print(os.environ["path"],'\n')# 可以用来执行操作系统的命令
os.system("dir")

五、第三方库

  在进行 Python 程序开发时,除了可以使用 Python 内置的标准模块外,还可以使用第三方模块。对于这些第三方模块,可以在 Python 官方推出的 http://pypi.python.org/pypi 中找到。在使用第三方模块时,需要先下载并安装该模块,然后就可以像使用标准模块一样导入并使用了。下载和安装第三方模块可以使用 Python 提供的 pip 命令实现。pip 的语法格式如下:

pip <command> [moudulename]
  • command:用于指定要执行的命令。常用的参数值有 install(用于安装第三方模块)、uninstall(用于卸载已经安装的第三方模块)、list(用于显示已经安装的第三方模块)等;
  • moudulename:可选参数,用于指定要安装或卸载的模块名,当 command 为 install 和 uninstall 时不能省略。

pip 指明在命令行(cmd)中使用;

第三方库安装在 Python 解释器的下的 Lib 目录下的 site-packages 的目录;

相关文章:

18. 模块

一、什么是模块 模块化 指将一个完成的程序分解为一个一个小的模块。通过将模块组合&#xff0c;来搭建一个完整的程序。如果不采用模块化&#xff0c;那么所有的代码将统一保存到一个文件中。采用模块化后&#xff0c;将程序分别编写到多个文件中。使用模块化后&#xff0c;我…...

GroundingDINO微调训练_训练日志解释

文章目录 1. 训练日志1. Epoch 和 Iteration2. Learning Rate&#xff08;学习率&#xff09;3. ETA&#xff08;预计剩余时间&#xff09;4. Time 和 Data Time5. Memory6. Gradient Norm&#xff08;梯度范数&#xff09;7. Loss&#xff08;损失&#xff09;8. Individual L…...

华为eNSP:VRRP多网关负载分担

一、实验拓扑及目的 二、实验命令及实验步骤 LSW1的配置命令 <Huawei>sy [Huawei]un in e [Huawei]sys S1 [S1]vlan batch 100 200 [S1]int g0/0/1 [S1-GigabitEthernet0/0/1]port link-type access [S1-GigabitEthernet0/0/1]port default vlan 100 [S1-GigabitEtherne…...

uni-app写的微信小程序如何实现账号密码登录后获取token,并且每天的第一次登录后都会直接获取参数而不是耀重新登录(1)

uni-app写的微信小程序如何实现账号密码登录后获取token&#xff08;而token的有效器一般是30分钟&#xff0c;当页面在操作时token是不会过去&#xff0c;&#xff0c;离开页面第二天登录时token就是过期状态&#xff0c;因为记住了账号密码就不会操作再次登录&#xff0c;但是…...

【linux】(29)shell-变量和引号

Shell 脚本中有三种引号&#xff1a;双引号 "、单引号 和反引号 。它们有不同的作用。 双引号 " 双引号允许引用的字符串中包含变量和命令替换。 #!/bin/bash name"Alice" echo "Hello, $name!"单引号 单引号中的内容被原样引用&#xff0…...

Linux如何安装discuz

在Linux上安装Discuz!程序通常涉及以下步骤&#xff1a; 安装Web服务器&#xff08;如Apache或Nginx&#xff09;和数据库&#xff08;如MySQL或PostgreSQL&#xff09;。 下载Discuz!的最新版本。 将Discuz!文件上传到Web服务器的公共目录中。 根据README.md文件配置Discuz…...

SpringBoot如何使用EasyExcel实现表格导出(简洁快速入门版本)

前言 前面给大家介绍了动态表头的导入&#xff0c;这篇文章给大家介绍如何实现导出 前面给大家介绍了动态表头的导入&#xff0c;我们了解了如何通过EasyExcel灵活地读取结构不固定的Excel文件。这次&#xff0c;我们将目光转向数据导出——即如何将数据以Excel文件的形式输出…...

Python爬虫使用示例-保存诗人简介到csv文件中

一、获取资源 目标网址&#xff1a;&#xff08;第一页&#xff09; https://www.shicimingju.com/category/all&#xff08;后续&#xff09; https://www.shicimingju.com/category/all_2 https://www.shicimingju.com/category/all_3 ... https://www.shicimingju.com/ca…...

yocto的xxx.bb文件在什么时候会拷贝文件到build目录

在 Yocto 中&#xff0c;.bb 文件用于描述如何构建和安装一个软件包&#xff0c;而文件在构建过程中的拷贝操作通常会在某些特定的步骤中进行。具体来说&#xff0c;文件会在以下几个阶段被拷贝到 build 目录&#xff08;或者更准确地说&#xff0c;拷贝到目标目录 ${D}&#x…...

Mysql定时数据库备份保姆级教程

目录 一、需要解决的问题 1、如何传输文件? 2、如何备份数据库? 3、如何建立一个定时任务? 二、实施步骤 1、建立SSH公钥&#xff0c;实现无密码登录 2、编写备份数据库脚本 3、编写定时任务 MySQL 是一种全球广泛使用的关系型数据库管理系统&#xff0c;它存储的数…...

使用 Grafana 展示多个TiDB集群的告警

作者&#xff1a; yangzhj 原文来源&#xff1a; https://tidb.net/blog/229e283c 背景 在日常运维工作中&#xff0c;我们有时需要将多个生产集群的告警信息展示在一起&#xff0c;统一集中观察和分析TiDB 集群的告警情况。 本文将通过 Grafana 的多数据源功能来将多个Ti…...

lnmp+discuz论坛 附实验:搭建discuz论坛

Inmpdiscuz论坛 Inmp: t: linux操作系统 nr: nginx前端页面 me: mysql数据库 账号密码&#xff0c;等等都是保存在这个数据库里面 p: php——nginx擅长处理的是静态页面&#xff0c;页面登录账户&#xff0c;需要请求到数据库&#xff0c;通过php把动态请求转发到数据库 n…...

AI时代的开发新纪元:云开发 Copilot

AI时代的开发新纪元&#xff1a;云开发 Copilot 目录 引言&#xff1a;AI时代的开发新纪元低代码与AI的完美融合云开发 Copilot的革命性意义云开发 Copilot 的核心特性解析 快速生成应用功能低代码与AI的深度结合 实战演练&#xff1a;云开发 Copilot 的应用案例 从需求到实现…...

探索 Java 中的 Bug 世界

在 Java 编程的旅程中&#xff0c;我们不可避免地会遇到各种 Bug。这些 Bug 可能会导致程序出现意外的行为、崩溃或者性能问题。了解 Java Bug 的类型、产生原因以及解决方法&#xff0c;对于提高我们的编程技能和开发出稳定可靠的应用程序至关重要。 一、Java Bug 的定义与分类…...

【C++】等差数列末项计算题解析及优化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述与输入输出要求&#x1f4af;数学分析与公式推导公差的计算通项公式推导 &#x1f4af;示例解析解题步骤 &#x1f4af;程序实现与解析初版代码代码解析优点与不足…...

【LeetCode】55.跳跃游戏

文章目录 题目链接&#xff1a;题目描述&#xff1a;解题思路&#xff08;贪心算法&#xff09;&#xff1a; 题目链接&#xff1a; 55.跳跃游戏 题目描述&#xff1a; 解题思路&#xff08;贪心算法&#xff09;&#xff1a; 如果某一个位置的元素为N&#xff0c;表示后面N…...

linux基于systemd自启守护进程 systemctl自定义服务傻瓜式教程

系统服务 书接上文: linux自启任务详解 演示系统:ubuntu 20.04 开发部署项目的时候常常有这样的场景: 业务功能以后台服务的形式提供,部署完成后可以随着系统的重启而自动启动;服务异常挂掉后可以再次拉起 这个功能在ubuntu系统中通常由systemd提供 如果仅仅需要达成上述的场…...

SparkSQL编程实践

文章目录 SparkSQL编程实践1.1. 编程模型介绍1.2. SparkSQL编程1.2.1. 第三方库安装1.2.2. SparkSQL程序的结构1.2.3. SparkSQL执行模式1.2.3.1. Local模式1.2.3.2. 集群模式 1.2.4. 数据加载1.2.4.1. 通过RDD创建DataFrame1.2.4.2. 通过读取数据外部数据创建DataFrame标准读取…...

模型训练数据-MinerU一款Pdf转Markdown软件

模型训练数据-MinerU一款Pdf转Markdown软件-说明 简介&#xff1a; MinerU是什么 MinerU是上海人工智能实验室OpenDataLab团队推出的开源智能数据提取工具&#xff0c;专注于复杂PDF文档的高效解析与提取。MinerU能将包含图片、公式、表格等元素的多模态PDF文档转化为易于分析…...

shell基础用法

shell基础知识 shell中的多行注释 :<<EOF read echo $REPLY # read不指定变量&#xff0c;则默认写入$REPLY EOF # :<<EOF ...EOF 多行注释&#xff0c;EOF可以替换为&#xff01;# 等文件目录和执行目录 echo $0$0 # ./demo.sh echo $0的realpath$(realpath…...

Redisson分布式锁

概览 个人博客源地址 Redisson不只是一个 Java Redis 客户端&#xff0c;它是一个以内存 Redis 服务器作为后端的处理 Java 对象(如 java.util.List, java.util.Map, java.util.Set, java.util.concurrent.locks.Lock 等)的一个框架。 Redisson提供了使用Redis的最简单和最…...

【C语言--趣味游戏系列】--电脑关机整蛊小游戏

前言&#xff1a; 老铁们&#xff0c;还是那句话&#xff0c;学习很苦游戏来补&#xff0c; 为了提高大家与朋友之间的友谊&#xff0c;博主在这里分享一个电脑关机的恶作剧小游戏&#xff0c;快拿去试试吧&#xff01;&#xff01;&#xff01; 目录&#xff1a; 1.电脑关机代…...

C#实现一个HttpClient集成通义千问-开发前准备

集成一个在线大模型&#xff08;如通义千问&#xff09;&#xff0c;来开发一个chat对话类型的ai应用&#xff0c;我需要先了解OpenAI的API文档&#xff0c;请求和返回的参数都是以相关接口文档的标准进行的 相关文档 OpenAI API文档 https://platform.openai.com/docs/api-…...

二叉树优选算法(一)

一、根据二叉树创建字符串 题目介绍&#xff1a; 给你二叉树的根节点 root &#xff0c;请你采用前序遍历的方式&#xff0c;将二叉树转化为一个由括号和整数组成的字符串&#xff0c;返回构造出的字符串。 空节点使用一对空括号对 "()" 表示&#xff0c;转化后需…...

单片机C51--笔记8-STC89C51RC/RD-IIC协议

一、概述 IIC全称Inter-Integrated Circuit (集成电路总线) 是由PHILIPS公司在80年代开发的两线式串行总线&#xff0c;用于连接微控制器及其外围设备。IIC属于半双 工同步通信方式。 特点 简单性和有效性。 由于接口直接在组件之上&#xff0c;因此IIC总线占用的空间非常小…...

HttpUtil的get和post请求

Http工具类 import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.ht…...

leetcode 二进制数转字符串

1.题目要求: 2.题目代码: class Solution { public:string printBin(double num) {string result;double compare_value 1.0;//先给把0和.赋值给result;result.push_back(0);result.push_back(.);while(result.size() < 33){//利用十进制转换成二进制的方法//1.先给num …...

前端项目使用gitlab-cicd+docker实现自动化部署

GitLab CI/CD 是一个强大的工具&#xff0c;可以实现项目的自动化部署流程&#xff0c;从代码提交到部署只需几个步骤。本文将带你配置 GitLab CI/CD 完成一个前端项目的自动化部署。 前言 为什么使用cicddocker&#xff1f; 目前我们公司开发环境使用的shell脚本部署&#…...

【Linux】进程

&#x1f33b;个人主页&#xff1a;路飞雪吖~ &#x1f320;专栏&#xff1a;Linux 目录 一、冯诺依曼体系结构 &#x1f31f;系统调用和库函数概念 二、操作系统OS 三、进程 &#x1f31f;查看进程 &#x1f31f;通过系统调用获取进程标示符 &#x1f31f;通过系统调用创…...

transformers生成式对话机器人

简介 生成式对话机器人是一种先进的人工智能系统&#xff0c;它能够通过学习大量的自然语言数据来模拟人类进行开放、连贯且创造性的对话。与基于规则或检索式的聊天机器人不同&#xff0c;生成式对话机器人并不局限于预定义的回答集&#xff0c;而是可以根据对话上下文动态地…...

Text2SQL(NL2sql)对话数据库:设计、实现细节与挑战

Text2SQL&#xff08;NL2sql&#xff09;对话数据库&#xff1a;设计、实现细节与挑战 前言1.何为Text2SQL&#xff08;NL2sql&#xff09;2.Text2SQL结构与挑战3.金融领域实际业务场景4.注意事项5.总结 前言 随着信息技术的迅猛发展&#xff0c;人机交互的方式也在不断演进。…...

C# 关于加密技术以及应用(二)

AES&#xff08;Advanced Encryption Standard&#xff09;和 RSA&#xff08;Rivest-Shamir-Adleman&#xff09;是两种不同的加密算法&#xff0c;它们各自有特定的使用场景和优势。下面是它们的主要区别和适用场景&#xff1a; AES&#xff08;高级加密标准&#xff09; 特…...

四十四:Web如何关闭会话

在Web应用中&#xff0c;关闭会话&#xff08;Session Termination&#xff09;是一个重要的机制&#xff0c;用于确保用户的会话状态被安全地终止。无论是用户主动退出登录还是因超时被动登出&#xff0c;正确地管理会话关闭有助于提升安全性并释放服务器资源。 一、为什么需…...

在wsl2中安装archlinux

在之前的博客中&#xff0c;我介绍了如何在虚拟机或者真实机上安装archlinux并且进行一定的配置&#xff0c;但是实际上Linux不管怎么配置在日常使用中都没有Windows简单便利&#xff0c;在开发有关Linux的程序时过去用虚拟机或者直接在Windows上使用ssh在远程服务器上进行开发…...

在Goland中对goroutine协程断点调试

在Goland中对goroutine协程断点调试 环境: Goland 参考了 chatgpt 的回复 进行断点调试的代码 package mainimport ("fmt""sync""time" )// worker 模拟处理任务 func worker(id int, wg *sync.WaitGroup) {defer wg.Done() // 确保任务完成后…...

最长连续递增序列

问题分解 1&#xff1a;要求 要求找到最长的连续递增子序列&#xff0c;即在原数组中位置连续且数值严格递增的一段序列 2&#xff1a;输入和输出 输入是一个未经排序的整数数组nums 输出是该数组中最长连续递增子序列的长度 3&#xff1a;边界调节 数组为空则长度为0 …...

apt 包 源 的维护 和缓存 命令

APT 包源维护命令 更新软件包列表&#xff1a; sudo apt update&#xff1a;从配置的软件源中获取最新的软件包信息。这是安装、升级或删除软件包前通常要执行的步骤&#xff0c;以确保使用的是最新的软件包信息。 升级软件包&#xff1a; sudo apt upgrade&#xff1a;升级系…...

【排序方法的总结】

在数据结构中常见的排序方法有&#xff1a; 插入排序、交换排序、选择排序、归并排序和基数排序等。 插入排序 特点&#xff1a; 简单直观&#xff0c;对于小规模的数据排序效率较高。它的工作原理是通过构建有序序列&#xff0c;对于未排序数据&#xff0c;在已排序序列中从后…...

工作中常用springboot启动后执行的方法

前言&#xff1a; 工作中难免会遇到一些&#xff0c;程序启动之后需要提前执行的需求。 例如&#xff1a; 初始化缓存&#xff1a;在启动时加载必要的缓存数据。定时任务创建或启动&#xff1a;程序启动后创建或启动定时任务。程序启动完成通知&#xff1a;程序启动完成后通…...

QT 中使用 QTableView 和 QStandardItemModel 实现将数据导出到Excel 和 从Excel导入到 QTableView 的功能

简介 在Qt中&#xff0c;使用QTableView和QStandardItemModel来实现将数据导出到Excel和从Excel导入到QTableView的功能&#xff0c;而不使用第三方库&#xff08;如QXlsx&#xff09;。 效果 将 QTableView 中的数据导出到Excel //从tableview 导出到 EXcle void MainInterfa…...

模版方法模式的理解和实践

在软件开发中&#xff0c;设计模式为我们提供了一套经过验证的解决方案&#xff0c;用于解决常见的设计问题。其中&#xff0c;模版方法模式&#xff08;Template Method Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了一个算法的框架&#xff0c;并允许子类在不改…...

05-树莓派-交叉编译

交叉编译的概念 交叉编译是什么 来源百度百科&#xff1a; 交叉编译是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统&#xff1b;同样&#xff0c;同一个操作系统也可以在不同的体系结构上运行。 举例来说&#xff0c;我们常说的x86 Lin…...

杨振宁大学物理视频中黄色的字,c#写程序去掉

先看一下效果&#xff1a;&#xff08;还有改进的余地&#xff09; 我的方法是笨方法&#xff0c;也比较刻板。 1&#xff0c;首先想到&#xff0c;把屏幕打印下来。c#提供了这样一个函数&#xff1a; Bitmap bmp new Bitmap(640, 480, PixelFormat.Format32bppArgb); // 创…...

非归档模式下一个或多个数据文件损坏恢复

1. 介绍 有些时侯可能你的库处于非归档的模式下&#xff0c;而你的联机重做日志又currupted,你的数据文件不能完成完全的恢复&#xff0c;这里为大家介绍一个oracle的一个隐藏参数_allow_resetlogs_corruption&#xff0c;让数据库重生。 通过设置隐含参数恢复 alter system …...

k8s 之storageclass使用nfs动态申请PV

文章目录 配置角色权限部署nfs-client-provisioner创建 NFS StorageClass创建 PVC 来动态申请 PV在 Pod 中使用 PVC验证存储是否正确挂载使用 kubectl 和 jq 筛选 PVCwaiting for a volume to be created, either by external provisioner "nfs-diy" or manually cre…...

Spark实训

实训目的: 介绍本实训的基本内容,描述知识目标、,以及本实训的预期效果等。 1、知识目标 (1)了解spark概念、基础知识、spark处理的全周期,了解spark技术是新时代对人才的新要求。 (2)掌握Linux、hadoop、spark、hive集群环境的搭建、HDFS分布文件系统的基础知识与应用…...

Mitel MiCollab 企业协作平台 任意文件读取漏洞复现(CVE-2024-41713)

0x01 产品简介 Mitel MiCollab是加拿大Mitel(敏迪)公司推出的一款企业级协作平台,旨在为企业提供统一、高效、安全的通信与协作解决方案。通过该平台,员工可以在任何时间、任何地点,使用任何设备,实现即时通信、语音通话、视频会议、文件共享等功能,从而提升工作效率和…...

React学习笔记(一)

创建函数写法一&#xff1a; 重点&#xff1a;函数有几种写法 function DemoShow() {return (<div className"App">函数声明</div>); }export default DemoShow;对应js创建函数声明&#xff1a;function sum1(a,b){return ab } 创建函数写法二&#x…...

【H2O2|全栈】MySQL的基本操作(三)

目录 前言 开篇语 准备工作 案例准备 多表查询 笛卡尔积 等值连接 外连接 内连接 自连接 子查询 存在和所有 含于 分页查询 建表语句 结束语 前言 开篇语 本篇继续讲解MySQL的一些基础的操作——数据字段的查询中的多表查询和分页查询&#xff0c;与单表查询…...

SQL按指定字符分割字符串

在SQL中分割字符串通常需要使用特定的函数&#xff0c;因为SQL本身并不像编程语言那样直接支持字符串分割。不同的数据库系统有不同的函数来处理字符串分割。以下是一些常见数据库系统中分割字符串的方法&#xff1a; 1. MySQL 在MySQL中&#xff0c;你可以使用SUBSTRING_IND…...