【Python进阶】Python中的操作系统接口:使用os模块进行系统调用

news2024/10/8 18:25:22

1、操作系统接口的重要性

1.1 操作系统接口概览

操作系统接口就像一座桥梁,连接着用户程序与底层操作系统服务。它是软件开发中不可或缺的一部分,让程序员能够借助标准化的方式与操作系统进行对话,执行诸如文件管理、进程控制、系统资源分配等各种关键任务。操作系统接口可分为以下几类:

● 命令行接口:通过shell或命令行工具直接与系统交互。
● 图形用户接口:如Windows Explorer或Mac OS的Finder,以可视化方式呈现系统功能。
● 程序接口:即API,包括系统调用和库函数,允许编程语言直接调用操作系统服务。

1.1.1 操作系统接口的作用及分类

操作系统接口的主要作用在于提供统一规范的服务接口,简化复杂的系统操作,同时隐藏底层硬件细节,确保程序能够在不同的硬件环境下稳定运行。例如,创建或删除文件、更改目录、获取文件属性等操作,均需通过操作系统接口完成。

1.1.2 Python为何需要操作系统接口模块

在Python中,os模块正是这样一个提供操作系统接口的关键模块。由于Python具有跨平台的特性,为了保证开发者编写的脚本在不同操作系统(如Windows、Linux、macOS)上都能正常工作,Python提供了os模块作为统一的操作系统服务接口。通过os模块,开发者无需关心底层操作系统具体实现,就能轻松进行文件系统操作、进程控制、环境变量管理等。

1.2 Python中的os模块:跨平台操作系统访问

1.2.1 os模块的功能特性概述

os模块包含了众多函数,允许Python程序执行常见的操作系统相关任务,如文件和目录管理、进程控制、环境变量操作等。此外,它还包含os.path模块,专门用于处理路径相关的复杂操作。

1.2.2 os模块在不同操作系统下的兼容性

os模块的设计充分考虑了跨平台问题,其函数调用会根据运行时的实际操作系统环境动态适配。例如,在Windows系统中调用os.mkdir()时,会采用Windows的路径规则;而在Unix-like系统中,同样函数则会遵循POSIX规范。这种兼容性使得Python程序具备良好的移植性。

实例展示:

import os

# 创建一个目录
dir_path = "/tmp/example_dir"
if not os.path.exists(dir_path):
    os.mkdir(dir_path)

# 查看当前工作目录
print(f"当前工作目录: {os.getcwd()}")

# 在不同操作系统下都有效的路径拼接
path = os.path.join("/home", "user", "documents")
print(f"构建的路径: {path}")

# 判断路径是否存在
is_exist = os.path.exists("/path/to/some/file.txt")
print(f"文件是否存在: {is_exist}")

这段代码展示了os模块如何在不同操作系统下执行一致的操作,比如创建目录、获取当前工作目录以及构建路径,从而体现了os模块在跨平台应用中的价值。

2、Python os模块核心功能详解

2.1 文件与目录操作

2.1.1 创建与删除目录

在Python中,os模块为我们提供了强大的文件系统管理能力。想象一下你正在搭建一个虚拟图书馆,你需要创建和整理一个个书架(目录),os模块就像是那个帮你搬动书架的助手。

import os

# 创建单个目录
os.mkdir('new_directory')

# 创建多级目录(如果不存在的话)
os.makedirs('deep/path/to/new_directory')

# 删除空目录
os.rmdir('empty_directory')

# 删除包含子目录的目录(递归删除)
os.removedirs('path/to/empty_subdirectories')

2.1.2 列举目录内容

现在,我们要像图书管理员一样查看每个书架上有哪些书籍(文件和子目录)。os.listdir()函数可以帮助我们快速完成这项工作:

# 列出当前目录下所有内容
files_and_dirs = os.listdir('.')
for item in files_and_dirs:
    print(item)

# 或者使用os.scandir()获取更详细的信息,例如inode编号和类型
with os.scandir('.') as entries:
    for entry in entries:
        print(entry.name, entry.is_file(), entry.is_dir())

2.1.3 路径操作

os.path模块如同地图册,帮助我们在文件系统的迷宫中定位和构造路径:

● os.path.abspath(path):返回绝对路径,无论输入的是相对路径还是已有的绝对路径。
● os.path.basename(path):从路径中提取文件名或目录名。
● os.path.dirname(path):返回路径的父目录部分。
● os.path.exists(path):检测路径对应的文件或目录是否存在。
● os.path.lexists(path):类似于exists,但即使路径是一个失效的符号链接也会返回True。
● os.path.ismount(path):判断路径是否为挂载点。
● os.path.join(*paths):将多个路径片段合并成一个完整的路径。
● os.path.normcase(path):将路径转换为系统特定的标准大小写形式。

2.2 文件操作与状态检查

2.2.1 打开文件

虽然Python内置的open()函数广泛用于打开文件,os.open()则提供了更多底层控制选项,如指定模式(读、写、追加等)和权限标志:

fd = os.open('example.txt', os.O_RDWR|os.O_CREAT)
# 对于常规文件操作,通常仍推荐使用内置open函数:
with open('example.txt', 'w') as f:
    f.write('Hello, World!')
2.2.2 文件属性查询
了解文件的年龄、大小和权限就像翻阅一本图书的版权页和索引:

import stat

# 获取文件状态信息
file_info = os.stat('example.txt')

# 输出文件大小(字节数)、最后修改时间和权限
print(file_info.st_size, file_info.st_mtime, oct(file_info.st_mode))

# 使用os.lstat()检查符号链接,os.fstat()则用于已经打开的文件描述符
link_stat = os.lstat('symlink_to_example.txt')

2.2.3 文件权限与修改时间检查

针对安全性和文件更新情况,os模块也能提供精确到秒的时间戳:

# 检查文件是否可读、可写、可执行
mode = os.stat('example.txt').st_mode
if mode & stat.S_IRUSR and mode & stat.S_IWUSR:
    print("File is readable and writable by the owner.")

# 获取最近一次修改时间并格式化输出
from datetime import datetime
mtime = datetime.fromtimestamp(os.path.getmtime('example.txt'))
print(f"Last modified time: {mtime.strftime('%Y-%m-%d %H:%M:%S')}")

2.3 进程与环境管理

2.3.1 获取系统信息

就如同询问图书馆员有关图书馆的基本信息:

# 获取当前操作系统名称
print(os.name)

# 获取详细的系统信息(在类Unix系统上)
uname_result = os.uname()
print(uname_result.sysname, uname_result.nodename, uname_result.release, uname_result.version, uname_result.machine)

# 查看全局环境变量
for key, value in os.environ.items():
    print(f"{key}: {value}")

2.3.2 进程管理

os.system()可以执行shell命令,但在许多情况下,subprocess模块提供了更为安全和灵活的替代方案:

# 使用os.system()执行命令
os.system('ls -l')

# 使用subprocess.run()执行命令并获取输出
import subprocess
result = subprocess.run(['ls', '-l'], capture_output=True, text=True)
print(result.stdout)

2.3.3 环境变量读取与设置

就像在图书馆内部设置导航标识一样,我们可以操作环境变量来指导程序行为:

# 读取环境变量
home_dir = os.environ.get('HOME')

# 设置环境变量(仅在当前进程中有效)
os.environ['MY_VARIABLE'] = 'my_value'

# 删除环境变量
del os.environ['MY_VARIABLE']

2.4 其他重要功能

2.4.1 终端控制与信号处理

如同向图书管理员发送信号,os模块可以接收和处理操作系统的信号事件:

import signal

def handle_signal(signum, frame):
    print(f"Caught signal {signum}.")

# 注册信号处理器
signal.signal(signal.SIGINT, handle_signal)

# 主循环等待信号
while True:
    pass

2.4.2 文件查找与遍历目录树

使用os.walk()就像手持放大镜在整个图书馆内寻找特定书籍:

# 遍历目录及其子目录
for root, dirs, files in os.walk('/path/to/library'):
    for file in files:
        if file.endswith('.txt'):
            print(os.path.join(root, file))

2.4.3 处理符号链接与软链接

os.symlink()创建指向目标文件或目录的符号链接,如同在图书馆中创建参考卡片:

os.symlink('/original/document.pdf', 'shortcut_to_document.pdf')

以上内容为Python os模块在文件系统操作方面的详细介绍,通过实例演示和生动比喻,读者不仅能掌握os模块的具体用法,还能更好地理解这些功能在实际编程场景中的价值和意义。

3、实战案例与最佳实践

3.1 使用os模块实现文件批量操作任务

3.1.1 遍历目录并统计文件数量

在Python编程中,利用os模块可以轻易实现对文件系统的深度探索。想象一下,你正在管理一个庞大的数字媒体库,需要快速统计其中各类别文件的数量。下面是一个使用os.listdir()和os.path.isdir()实现的实用例子:

import os

# 定义要统计的目录路径
directory_path = '/path/to/your/directory'

# 初始化类别文件计数器
file_counts = {'images': 0, 'videos': 0, 'audio': 0}

# 遍历目录及其子目录
for root, dirs, files in os.walk(directory_path):
    for file_name in files:
        # 示例:假设文件扩展名代表类别
        extension = os.path.splitext(file_name)[1].lower()
        if extension == '.jpg' or extension == '.png':
            file_counts['images'] += 1
        elif extension == '.mp4' or extension == '.avi':
            file_counts['videos'] += 1
        elif extension == '.mp3' or extension == '.wav':
            file_counts['audio'] += 1

# 输出统计结果
for category, count in file_counts.items():
    print(f"{'Images' if category == 'images' else category.capitalize()}: {count} files")

3.1.2 删除指定目录下的临时文件

清理项目空间中的临时文件是一种常见维护任务。假设有大量的.temp扩展名的临时文件需要清除,你可以这样使用os模块:

import os
import shutil

# 定义临时文件存放的目录
temp_dir = '/path/to/temp/files'

# 遍历目录下的所有文件
for filename in os.listdir(temp_dir):
    # 如果文件名以'.temp'结尾,则视为临时文件
    if filename.endswith('.temp'):
        file_path = os.path.join(temp_dir, filename)

        # 确认文件不是目录,然后安全删除
        if os.path.isfile(file_path):
            os.remove(file_path)
            print(f"Deleted temporary file: {filename}")
        else:
            print(f"{filename} is not a file, skipping...")

# 清理整个目录(谨慎操作,确保没有误删重要文件)
# shutil.rmtree(temp_dir, ignore_errors=True)  # 若要删除整个空目录

3.2 跨平台脚本编写与os模块的应用

3.2.1 编写能在Linux与Windows上执行的脚本

os模块的一大优势是其跨平台性。当你需要编写在不同操作系统上都能正确工作的脚本时,os模块提供了必要的支持。例如,创建一个新的目录可能在Windows和Linux中有不同的命令格式,但在Python中只需一行代码:

# 创建一个名为'data'的新目录,不论在哪个平台上
data_dir = 'data'
if not os.path.exists(data_dir):
    os.makedirs(data_dir)

3.2.2 应对操作系统差异的策略

面对操作系统差异,os模块提供了相应的方法来适应。例如,文件路径分隔符在Windows中是\,而在Unix/Linux系统中是/。通过os.sep可以确保路径字符串的兼容性:

# 构建跨平台路径
base_path = 'documents'
subfolder = 'project_files'
platform_agnostic_path = os.path.join(base_path, subfolder)
print(platform_agnostic_path)

综上所述,os模块在实际应用中扮演了重要角色,无论是简单的文件管理还是复杂的系统交互,都能提供便利的解决方案。通过结合具体的场景和需求,os模块可以助力开发者高效地完成跨平台的任务操作。

4、os模块与其他相关模块的协同工作

4.1 os模块与shutil模块整合

4.1.1 文件复制与移动

在Python中,os模块提供了基本的文件和目录操作,而shutil模块则是一个更高层次的文件和文件集合操作工具箱。当涉及到文件的复制和移动时,shutil模块提供了更便捷的方法。

例如,使用os模块复制文件可能需要打开源文件、创建目标文件并逐字节复制。相比之下,shutil.copyfile()简化了这一过程:

import shutil

# 使用shutil模块复制文件
source_file = '/path/to/source.txt'
destination_file = '/path/to/destination.txt'
shutil.copyfile(source_file, destination_file)

# 移动文件(包括重命名)
shutil.move(source_file, new_source_file)

对于目录的复制,os模块无法一次性复制整个目录结构及其内容,而shutil.copytree()函数则可以轻松实现:

# 复制整个目录及其内容
source_dir = '/path/to/source_directory'
destination_dir = '/path/to/destination_directory'
shutil.copytree(source_dir, destination_dir)

4.1.2 归档与解压操作

除了复制和移动文件外,shutil模块还提供了对压缩文件的支持。例如,可以使用shutil.make_archive()创建一个压缩包,以及shutil.unpack_archive()解压文件:

# 创建一个zip压缩包
archive_name = 'archive.zip'
source_dir = '/path/to/source_directory'
shutil.make_archive(archive_name, 'zip', source_dir)

# 解压zip文件到指定目录
destination_dir = '/path/to/extract_to'
shutil.unpack_archive(archive_name, destination_dir)

4.2 os模块与pathlib模块对比

4.2.1 pathlib模块的面向对象路径操作

相比于os模块中的os.path,Python 3引入了pathlib模块,提供了面向对象的方式来处理文件和目录路径。Path对象简化了路径操作,并且更具可读性和可组合性:

from pathlib import Path

# 使用pathlib创建路径对象
path = Path('/path/to/my/file.txt')

# 获取路径的各种属性
absolute_path = path.absolute()
parent_dir = path.parent
filename = path.stem

# 创建、删除目录
dir_path = Path('/path/to/new/directory')
dir_path.mkdir(parents=True, exist_ok=True)  # 创建目录,包括中间不存在的父目录
dir_path.rmdir()  # 删除空目录

# 组合路径
full_path = (Path.home() / 'Documents' / 'project').resolve()

4.2.2 根据场景选择os.path与pathlib

在实际编程中,os.path和pathlib各有优劣,应根据项目需求和团队偏好选择合适的路径操作方式。os.path适用于简单、轻量级的路径处理,且兼容较老的Python版本。而pathlib更适合于现代Python项目,尤其是在需要频繁操作路径或者进行复杂路径运算时,它的面向对象特性和便捷的API能显著提高代码质量及可读性。

综合运用os模块与shutil模块可以实现复杂的文件系统操作,而适时引入pathlib模块则有助于提升代码的简洁度和效率。在实际工作中,可根据具体场景灵活搭配这些模块,发挥各自的优势,以满足多样化的系统交互需求。

5、高级主题与进阶探索

5.1 系统级I/O重定向与管道

在Python中,os模块也提供了与操作系统低级别I/O重定向和管道交互的能力。当我们需要捕获或替换程序的标准输入、输出和错误流时,这显得尤为重要。例如,通过os.dup2()可以将一个文件描述符替换为另一个,模拟命令行重定向的效果:

import os
import sys

# 创建一个新的输出文件
output_file = open('output.txt', 'w')

# 将当前程序的标准输出重定向至output.txt
os.dup2(output_file.fileno(), sys.stdout.fileno())

# 此时打印的内容将被写入output.txt而非终端
print("This message will be redirected to output.txt")

# 关闭文件描述符
output_file.close()
管道则是进程间通信的一种机制,允许一个进程的输出作为另一个进程的输入。在Python中,尽管os模块不直接支持管道创建,但可以通过子进程模块subprocess的Popen类配合PIPE实现:

import subprocess

# 创建一个管道
p1 = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE)
p2 = subprocess.Popen(["grep", "example"], stdin=p1.stdout, stdout=subprocess.PIPE)

# 获取管道输出
output, error = p2.communicate()

# 输出过滤后的目录列表
print(output.decode())

5.2 安全性考量与权限控制
os模块的诸多功能涉及到了文件、目录和进程的安全管理。例如,os.chmod()函数可以用来改变文件或目录的权限:

import os
import stat

改变文件权限,使其对所有用户可读可写可执行

file_path = ‘/path/to/file.txt’
os.chmod(file_path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)

查看文件权限

file_permissions = oct(os.stat(file_path).st_mode)[-3:]
print(f"Current permissions on ‘{file_path}’: {file_permissions}")
在高权限操作时,必须注意最小权限原则,只赋予程序必要的权限,防止潜在的安全风险。此外,os模块还提供了如os.umask()用于设定新建文件的默认权限掩码,以及os.setgid()和os.setuid()等函数以控制进程的有效用户ID和组ID,不过在非Unix-like系统上可能不可用或有局限性。

5.3 高并发环境下的os模块使用
在多线程或多进程环境中,os模块的某些函数可能会成为瓶颈,特别是在大量文件操作或频繁与系统交互的情况下。在这种场景下,合理的锁机制和异步IO处理是必要的,例如结合使用os模块与concurrent.futures或asyncio模块。此外,对于大规模文件系统的操作,如并行创建、删除或移动文件,应考虑使用线程池或多进程Pool,避免阻塞主线程并充分利用系统资源:

import concurrent.futures
import os

def process_file(file_path):
    # 对文件进行某种操作...
    os.rename(file_path, file_path + ".processed")

# 文件列表
file_list = ['/path/to/file1.txt', '/path/to/file2.txt', ...]

# 使用线程池执行操作
with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
    futures = {executor.submit(process_file, file) for file in file_list}
    for future in concurrent.futures.as_completed(futures):
        future.result()

通过深入理解和巧妙运用os模块在上述高级场景中的功能,开发者可以更好地驾驭操作系统资源,实现更加高效、安全和稳定的程序设计。随着Python新版本的迭代,os模块也持续增强和完善,提供了更多与操作系统交互的高级特性,使得Python在系统编程领域越发得心应手。

6、os模块在真实世界项目中的应用与拓展

6.1 os模块在自动化运维任务中的应用

6.1.1 日志收集与清理

在运维场景中,os模块常用于自动化日志收集和清理任务。例如,定期遍历服务器上的日志目录,将过期日志文件备份至远程存储,并清理本地空间:

import os
import shutil
from datetime import timedelta, datetime

log_directory = '/var/log/applications/'
backup_location = '/mnt/backups/logs/'

# 获取一周前的日期
one_week_ago = datetime.now() - timedelta(days=7)

# 遍历日志文件
for root, dirs, files in os.walk(log_directory):
    for file in files:
        file_path = os.path.join(root, file)
        if os.path.getmtime(file_path) < one_week_ago.timestamp():
            backup_file_path = os.path.join(backup_location, file)
            shutil.copy2(file_path, backup_file_path)
            os.remove(file_path)
            print(f"Moved {file_path} to backup and deleted from local directory.")

6.2 在数据分析项目中的应用

6.2.1 数据集的组织与管理

在数据科学和数据分析项目中,os模块是必不可少的工具,用于组织、发现和管理工作区内的数据集:

import os
import pandas as pd

# 获取当前目录下所有CSV文件
csv_files = [f for f in os.listdir('.') if os.path.isfile(f) and f.endswith('.csv')]

# 读取所有CSV文件并合并
data_frames = [pd.read_csv(file) for file in csv_files]
combined_df = pd.concat(data_frames)

# 利用os.makedirs创建缺失的目录结构
dataset_folder = 'organized_data'
os.makedirs(dataset_folder, exist_ok=True)
combined_df.to_csv(os.path.join(dataset_folder, 'combined_data.csv'), index=False)
6.3 os模块与云服务集成
6.3.1 与Amazon S3或其他云存储服务的交互
通过结合boto3或其他云服务SDK,os模块可以用于与云端存储系统进行交互,如上传文件至S3:

import boto3
import os

# 创建S3客户端
s3 = boto3.client('s3')

# 上传本地文件至S3 bucket
local_file = 'local_file.txt'
bucket_name = 'my-s3-bucket'
s3_key = 'remote/path/in/bucket.txt'

# 获取本地文件绝对路径
file_path = os.path.abspath(local_file)

# 上传文件至S3
s3.upload_file(file_path, bucket_name, s3_key)

6.4 os模块在高性能计算环境中的应用

6.4.1 分布式文件系统操作

在大规模集群或分布式计算环境中,os模块结合诸如Hadoop或Spark等工具,可用于处理分布式文件系统中的文件和目录:

# 假设在Hadoop环境中的伪代码
from hadoop.conf import Configuration
from hadoop.fs.hadoopfs import HadoopFileSystem

conf = Configuration()
hdfs = HadoopFileSystem(host='namenode.example.com', port=8020, conf=conf)

# 在HDFS上创建目录
hdfs_path = '/user/myuser/data'
if not hdfs.exists(hdfs_path):
    hdfs.mkdirs(hdfs_path)

# 将本地文件上传至HDFS
local_file = 'local_data.csv'
hdfs_file = hdfs_path + '/data.csv'
hdfs.put(local_file, hdfs_file)

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

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

相关文章

_c++11

嗨喽大家好呀&#xff0c;今天阿鑫给大家带来的是c进阶——c11的内容&#xff0c;好久不见啦&#xff0c;下面让我们进入本节博客的内容吧&#xff01; _c11 统一的列表初始化右值引用可变模板参数(了解&#xff0c;不常接触)lambda表达式function和bind包装器 1. 统一的列表…

JavaWeb 15.详解Servlet及其源码

所有受过的委屈&#xff0c;都在提醒你 要好好争气。 —— 24.10.7 一、Servlet简介 1.动态资源和静态资源 静态资源 无需在程序运行时通过代码运行生成的资源&#xff0c;在程序运行之前就写好的资源&#xff0c;例如&#xff1a;html、css、js、img、音频文件和视频文件 …

职场秘籍:面试加薪,竟然拥有不同的技巧!

假如你是一位测试主管&#xff0c;去评价一名测试工程师是否优秀&#xff0c;那么你将如何去判断呢&#xff1f;你最看重的是哪方面的能力呢&#xff1f; 对于这个问题&#xff0c;是不能一概而论的&#xff0c;要分为两种情况&#xff0c;情况不同&#xff0c;答案一定是不同…

高校新生报道管理系统使用SpringBootSSM框架开发

&#xff01;&#xff01;&#xff01;页面底部,文章结尾,加我好友,获取计算机毕设开发资料 目录 一、引言 二、相关技术介绍 三、系统需求分析 四、系统设计 五、关键技术实现 六、测试与优化 七、总结与展望 一、引言 当前高校新生报到过程中存在许多问题&#xff0c;…

从0到1:用Python构建你人生中的第一个人工智能AI模型

文章目录 摘要引言数据预处理&#xff1a;为模型打下坚实基础数据预处理的步骤Python示例代码说明&#xff1a;注意事项&#xff1a; 模型建立&#xff1a;选择合适的模型神经网络示例代码说明&#xff1a; 模型训练与测试训练示例代码说明&#xff1a; 解读模型结果性能指标 深…

原生小程序开发|小程序卡片(Widget) 开发指南

开发 Widget 代表应用的一个小程序卡片&#xff0c;负责小程序卡片的展示和交互。 小程序卡片(Widget) 的开发在智能小程序的基础上增加一个目录即可&#xff0c;用于存放小程序卡片(Widget)的代码。并在 project.tuya.json 中增加一个声明。 创建小程序卡片(Widget)项目 在 …

九、Drf序列化器

九、序列化器 9.1序列化 从数据库取QuerySet或数据对象转换成JSON 9.1.1序列化器的简易使用 #新建一张部门表 class Depart(models.Model):title=models.CharField(verbose_name=部门,max_length=32)order=models.IntegerField(verbose_name=顺序)count=models.IntegerFiel…

vscode中安装python的包

首先需要调出命令行。然后运行代码&#xff0c;找到你所需要的环境。 PS C:\Users\Administrator\AppData\Local\ESRI\conda\envs\arcgispro-env> conda env list # conda environments: #C:\ProgramData\Anaconda3 base * C:\Users\Administrator\.con…

【无人机设计与控制】无人机三维路径规划,对比蚁群算法,ACO_Astar_RRT算法

摘要 本文探讨了三种不同的无人机三维路径规划算法&#xff0c;即蚁群算法&#xff08;ACO&#xff09;、A算法&#xff08;Astar&#xff09;以及快速随机树算法&#xff08;RRT&#xff09;。通过仿真实验对比了各算法在不同环境下的性能&#xff0c;包括路径长度、计算效率…

软考越来越难了,2024年软考究竟还值不值得考?

最近不少同学沟通&#xff0c;聊到软考现在越来越难了&#xff0c;考了两三次都没过&#xff0c;也有不少新同学咨询软考考试的一些福利政策&#xff0c;投入大量的物力&#xff0c;财力&#xff0c;精力&#xff0c;那么到底软考值不值得考呢&#xff1f; 01 / 关于软考 软考…

【FlagScale】异构算力混合训练方案

背景以及必要性 算力需求的高峰&#xff1a;随着人工智能&#xff08;AI&#xff09;和生成内容&#xff08;AIGC&#xff09;的发展&#xff0c;对计算资源的需求急剧增加。尤其是参数规模达到数百亿的大模型训练&#xff0c;需要大量的计算资源。 算力市场供应紧张&#xff…

一键拯救废片!3个在线教程,实现光线重塑、表情迁移、模糊图像修复

每逢国庆「黄金周」&#xff0c;都是旅游业的高光时刻。根据研判&#xff0c;今年国庆假期全社会跨区域人员流动量将达到 19.4 亿人次&#xff0c;平均每天 2.77 亿人次。 与旅游业同步增长的还有摄影行业&#xff0c;旅拍带动的妆造、服饰租赁等相关环节发展火热&#xff0c;…

Linux安装Redis7.40

一、环境检查 1.1 查看是否已经安装了Redis应用 ps -ef |grep redis或者 whereis redis1.2 若已经安装了redis应用或者有遗留的Redis文件&#xff0c;进行移除或者启动即可。 二、下载&安装 2.1 找到对应的安装包资源&#xff0c;使用wget命令下载&#xff0c;这里安装…

小众交友软件有哪些?小众交友APP排行榜前十名推荐

在网络的广袤天地中&#xff0c;小众交友软件如隐藏的宝藏&#xff0c;散发着独特魅力。它们为人们提供别样的社交舞台&#xff0c;让孤独的灵魂有处可栖。今天&#xff0c;就让我们一同探寻那些小众交友软件的奇妙世界。 1. 咕哇找搭子小程序&#xff1a;这是一个实名制的找搭…

想要加密电脑?盘点2024年企业常用的10款电脑文件加密软件

在企业数据安全的时代背景下&#xff0c;文件加密已经成为保护企业核心信息、应对网络安全威胁的关键举措。无论是保护机密的商业数据&#xff0c;还是遵守数据隐私合规性要求&#xff0c;企业对文件加密软件的需求日益增长。本文将盘点2024年企业常用的10款电脑文件加密软件&a…

【Java 问题】基础——序列化

接上文 序列化 45.什么是序列化&#xff1f;什么是反序列化&#xff1f;46.说说有几种序列化方式&#xff1f; 45.什么是序列化&#xff1f;什么是反序列化&#xff1f; 什么是序列化&#xff0c;序列化就是把Java对象转为二进制流&#xff0c;方便存储和传输。 所以反序列化…

SOA是什么

SOA SOA 即 Service-Oriented Architecture&#xff08;面向服务的架构&#xff09;。 一、定义 SOA 是一种软件设计方法和架构理念&#xff0c;它将应用程序的不同功能单元&#xff08;称为服务&#xff09;通过定义良好的接口和契约联系起来。这些服务可以独立部署、独立运…

【JavaEE初阶】深入理解不同锁的意义,synchronized的加锁过程理解以及CAS的原子性实现(面试经典题);

前言 &#x1f31f;&#x1f31f;本期讲解关于锁的相关知识了解&#xff0c;这里涉及到高频面试题哦~~~ &#x1f308;上期博客在这里&#xff1a;【JavaEE初阶】深入理解线程池的概念以及Java标准库提供的方法参数分析-CSDN博客 &#x1f308;感兴趣的小伙伴看一看小编主页&am…

(笔记)第三期书生·浦语大模型实战营(十一卷王场)–书生基础岛第6关---OpenCompass 评测 InternLM-1.8B 实践

学员闯关手册&#xff1a;https://aicarrier.feishu.cn/wiki/ZcgkwqteZi9s4ZkYr0Gcayg1n1g?open_in_browsertrue 课程视频&#xff1a;https://www.bilibili.com/video/BV1RM4m1279j/ 课程文档&#xff1a; https://github.com/InternLM/Tutorial/blob/camp3/docs/L1/OpenComp…

嵌入式设备硬件和软件安全设计

1. 引言 哪个领域的网络安全实施记录最差&#xff1f; 既不是 PKI/数字证书&#xff0c;也不是 密钥管理&#xff0c;也不是 OAuth。很可能是嵌入式设备和物联网 领域。 总的来说&#xff0c;这似乎是一个梦想&#xff0c;但如果可设计出“设计安全”的系统&#xff0c;而不…