Python3 数据结构
Python3 数据结构详解:从基础到进阶数据结构是程序的骨架,掌握Python中的数据结构对于编写高效、清晰的代码至关重要。本文将详细介绍Python中最常用的四大数据结构:列表(数组)、元组、集合和字典,包括它们的基本概念、常用操作、进阶技巧以及使用场景。 一、列表(List):Python的动态数组1.1 基本概念与特点列表是Python中最常用的数据结构之一,相当于其他编程语言中的动态数组。它具有以下特点: 有序的元素集合 可以存储任意类型的元素(混合类型也支持) 可变(元素可以被修改、添加和删除) 使用方括号 [] 表示 1.2 创建与基本操作12345678910111213141516171819# 创建列表的多种方式empty_list = []numbers = [1, 2, 3, 4, 5]mixed_list = [1, "hello", 3.14, True]list_from_range = list(range(10))list_from_string = list("python")# 访问元素(通过索引)...
进程、线程和协程
进程、线程和协程:深入理解并发编程的基石在现代计算机系统和编程领域,进程、线程和协程是实现并发和并行计算的核心概念。它们既有密切的联系,又有本质的区别。 一、基本概念解析1.1 进程(Process)进程是程序在执行过程中的实例,是操作系统进行资源分配和调度的基本单位。它不仅包含了程序的代码和数据,还包括了程序执行所需的各种资源和状态信息。每个进程都拥有独立的内存空间、文件描述符和系统资源,这些资源在进程创建时被分配,并在进程终止时被回收。 这里特别注意,进程才是操作系统进行资源分配和调度的基本单位,不是线程!! 1.1.1 进程的组成一个完整的进程通常由以下几个部分组成: 程序(Program):进程执行的代码,通常是存储在磁盘上的可执行文件 数据(Data):程序运行过程中使用和产生的数据 进程控制块(Process Control Block, PCB):操作系统用来管理和控制进程的核心数据结构 内存空间:进程独占的虚拟地址空间,包括代码区、数据区、堆区和栈区等 系统资源:如文件描述符、I/O设备、信号处理器等 1.1.2 进程控制块(PCB)的结构进程控...
Dockerfile基本介绍与使用
Dockerfile在现代软件开发和部署中,容器化技术已经成为一种标准实践。Docker作为最流行的容器化平台,其核心功能之一就是通过Dockerfile来定义和构建容器镜像。本文将详细介绍Dockerfile的基本概念、编写规则、运行方法以及如何将构建的镜像上传到仓库。 Dockerfile的基本介绍什么是DockerfileDockerfile是一个包含用于自动构建Docker镜像的脚本命令的文本文件。它由一系列指令和参数组成,这些指令告诉Docker如何构建一个特定的镜像。使用Dockerfile,开发者可以将应用程序及其依赖环境的构建过程自动化、标准化和可复制化。 Dockerfile的作用和优势 自动化构建:通过Dockerfile,开发者可以自动化构建镜像的过程,无需手动执行每一步操作 版本控制:Dockerfile可以像代码一样进行版本控制,便于追踪和管理镜像的变更 一致性:确保在不同环境中构建的镜像完全一致,避免”在我的机器上可以运行”的问题 可扩展性:通过Dockerfile的层叠特性,可以基于已有镜像快速构建新的镜像 文档化:Dockerfile本身就是构建过...
C++指针
指针的介绍C++指针是一种特殊的变量,其本质是内存地址的“容器”——它不直接存储数据值,而是记录某块内存空间的起始位置;通过解引用操作符**(*)**可以访问或修改该地址上的实际数据。这一特性使指针能直接与计算机内存交互,成为动态内存管理(如通过new分配、delete释放资源)、高效操作复杂数据结构(如链表、树的节点链接)以及优化程序性能的核心工具。 指针的引入函数一般是只能返回一个值,即使我们函数里面可以写多个return,但只要执行到一个return,函数就会结束。而数组虽能返回多个值(数组里面包含多个元素),但是数组内元素的数据类型是一致的,对于不同的数据类型,也不能做到返回多个值。 因此为了解决这一问题,可以使用指针,使用指针可以想返回几个值就返回几个值,想要返回什么类型就返回什么类型。 在程序设计过程中,存入数据还是取出数据都需要与内存单元打交道,计算机通过地址编码来表示内存单元。 指针类型就是为了处理计算机地址数据的,计算机将内存划分为若干个存储空间大小的单元,每个单元大小就是一个字节,即计算机将内存换分为一个一个的字节,然后为每一个字节分配唯一的编码,这个编码即为...
Linux设置Systemctl服务
一、什么是Systemctl1.1 Systemctl简介Systemctl是Linux系统中用于管理systemd系统和服务管理器的主要命令行工具。它允许用户查看、启动、停止、重启、启用和禁用系统服务,以及检查服务状态等。 1.2 Systemd与Systemctl的关系Systemd是Linux系统的初始化系统和服务管理器,负责启动系统、管理后台进程和服务。 而Systemctl则是与systemd交互的命令行接口工具,用户通过Systemctl命令来控制和管理systemd服务。 简单来说,systemd是底层的服务管理系统,Systemctl是用户操作这个系统的工具。 1.3 为什么需要使用Systemctl管理服务 统一管理:Systemctl提供了统一的接口来管理各种系统服务,取代了传统的SysV init脚本。 服务依赖:Systemctl可以轻松处理服务之间的依赖关系,确保服务按正确顺序启动。 状态监控:实时查看服务运行状态,快速定位问题。 开机自启:便捷设置服务开机自启动或禁用自启动。 资源管理:通过cgroups对服务进行资源限制和管理。 日志管理:Syste...
Pydantic使用指南
一、引言 以下Pydantic使用的版本为2.0.0,不同版本的Pydantic可能会有一些差异,特别是在一些新的功能和废弃的功能上,建议查看官方文档。 1.1 什么是PydanticPydantic是Python中最广泛使用的基于Python类型提示的数据验证和设置管理库,它遵循纯正的Python 3.9+标准,能帮助开发者轻松验证数据、管理配置并减少样板代码。该库快速且可扩展,能与代码分析器、集成开发环境良好配合,便于进行数据验证工作。 1.2 为什么选择Pydantic 由类型提示驱动:用Pydantic的时候,模式验证和序列化都靠类型注解来控制。就不用学太多东西,也不用写很多代码,还能和IDE以及静态分析工具完美配合。 速度快:Pydantic的核心验证逻辑是用Rust写的,所以它是Python里最快的数据验证库之一。 支持JSON Schema:Pydantic模型能生成JSON Schema,这样就能轻松和其他工具集成。 严格模式和宽松模式:Pydantic有两种模式可以选。严格模式下,数据不会被转换;宽松模式下,Pydantic会在合适的时候把数据转换成正确的类型...
Hydra使用指南
引言Hydra是一款开源Python框架,专为简化科研项目及其他复杂应用的开发而设计。其核心优势在于支持动态构建分层配置体系——既可通过组合方式创建层级结构,又能借助配置文件和命令行进行灵活调整。该名称源自其“多头并进”的特性:就像水蛇分叉般能同时运行多个相似任务,完美诠释了“众手齐发力”的开发理念。 主要功能 支持多源组合的层次化配置管理:可从多个来源(文件、环境变量、命令行等)加载并组合配置,形成层次化的配置结构 命令行参数配置覆盖:支持通过命令行参数直接指定或覆盖配置值,提供灵活的配置方式 动态命令行补全:提供智能的命令行选项补全功能,提升开发体验和效率 本地与远程执行支持:支持在本地运行应用程序,或配置并启动远程执行环境 多参数作业并行执行:支持通过单个命令运行具有不同参数组合的多个作业,实现高效的参数空间探索 快速入门模块安装1pip install hydra-core --upgrade 这里安装的时候要注意一下!!因为导入的包是hydra,所以会下意识的安装hydra,而不是hydra-core,导致安装不成功。(因为我自己去安装的时候有出现这个问题) 简...
Linux定时任务使用(cron)
一、为什么需要定时任务?这个其实是我在工作当中遇到的一个问题,我需要在非工作时间,比如晚上0点,自动执行一个脚本,来重启算法服务。这其实也是卡在一个其他客户不用上班的时间,工作时间点肯定就不能进行算法服务的重启操作了,这对于客户的损失是比较大的。因此,借此场景来学习Linux定时任务的设置。 Linux设置定时任务的好处如下: 设置自动化重复工作,解放双手 保障系统维护在非工作时间执行 确保关键任务按时完成,避免人为遗忘 二、核心工具:cron与atLinux系统提供了多种定时任务工具,其中最常用的有cron和at,此外还有batch、systemd-timer等工具。不过目前主要使用的是cron和at。因此,下面主要介绍这两个工具的使用。 2.1 cron:最常用的周期性定时任务系统什么是cron? cron是Linux系统中最经典、最常用的定时任务调度器,用于周期性执行命令或脚本。它通过crontab文件定义任务,由cron守护进程(crond)在后台持续运行并检查任务执行时间,其中系统级任务存储在/etc/crontab和/etc/...
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1hexo new "My New Post" More info: Writing Run server1hexo server More info: Server Generate static files1hexo generate More info: Generating Deploy to remote sites1hexo deploy More info: Deployment