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

Python自动化-python基础(上)

一.魔法方法

在 Python 中,魔法方法(Magic Methods)是一类特殊的方法,以双下划线 __ 开头和结尾 ,它们在特定的场景下会被 Python 解释器自动调用,用于实现一些内置的操作行为。

1. 初始化与构造相关

  • __init__(self, ...)
    • 作用:对象初始化方法,在使用类创建实例后,会自动调用此方法来初始化实例的属性。
    • 示例
class Dog:def __init__(self, name, age):self.name = nameself.age = agedog = Dog('旺财', 3)
print(dog.name, dog.age) 

  • __new__(cls, ...)
    • 作用:是对象实例化时调用的第一个方法 ,负责创建并返回类的新实例,一般用于创建单例模式或继承不可变类型时的特殊初始化。
    • 示例(单例模式)
class Singleton:_instance = Nonedef __new__(cls, *args, **kwargs):if not cls._instance:cls._instance = super().__new__(cls)return cls._instancea = Singleton()
b = Singleton()
print(a is b) 

  • __del__(self)
    • 作用:析构方法,在对象被垃圾回收时自动调用,可用于释放对象占用的外部资源,如文件句柄、数据库连接等。但需注意,当对象还有其他引用时,del 语句删除对象不会立即触发此方法。
    • 示例
class Resource:def __init__(self):print('资源初始化')def __del__(self):print('资源释放')r = Resource()
del r 

2. 字符串表示相关

  • __str__(self)
    • 作用:返回对象的用户友好型字符串表示,当使用 print() 函数打印对象或使用 str() 函数转换对象时会被调用。
    • 示例
class Point:def __init__(self, x, y):self.x = xself.y = ydef __str__(self):return f"Point({self.x}, {self.y})"p = Point(1, 2)
print(p) 

  • __repr__(self)
    • 作用:返回对象的开发者友好型字符串表示,用于调试和记录日志等场景。如果没有定义 __str__ 方法,print() 也会调用 __repr__ 。
    • 示例
class Point:def __init__(self, x, y):self.x = xself.y = ydef __repr__(self):return f"Point({self.x}, {self.y})"p = Point(1, 2)
print(repr(p)) 

3. 比较相关

  • __eq__(self, other)
    • 作用:定义对象间相等比较的逻辑,当使用 == 运算符比较两个对象时会被调用。
    • 示例
class Rectangle:def __init__(self, width, height):self.width = widthself.height = heightdef __eq__(self, other):return self.width == other.width and self.height == other.heightr1 = Rectangle(3, 4)
r2 = Rectangle(3, 4)
print(r1 == r2) 

类似的还有 __ne__(不等于,对应 != )、__lt__(小于,对应 < )、__le__(小于等于,对应 <= )、__gt__(大于,对应 > )、__ge__(大于等于,对应 >= ) 

4. 属性访问相关

  • __getattr__(self, name)
    • 作用:当访问对象不存在的属性时被调用,可以用于提供默认值或动态创建属性等。
    • 示例
class MyClass:def __getattr__(self, name):return f"属性 {name} 不存在,返回默认值"obj = MyClass()
print(obj.nonexistent_attribute) 

  • __setattr__(self, name, value)
    • 作用:在设置对象属性时被调用,可用于对属性赋值进行验证或拦截等操作。
    • 示例
class Circle:def __init__(self, radius):self.radius = radiusdef __setattr__(self, name, value):if name == 'radius' and value < 0:raise ValueError("半径不能为负数")super().__setattr__(name, value)c = Circle(5)
c.radius = 3
try:c.radius = -1
except ValueError as e:print(e) 

5. 容器相关

  • __len__(self)
    • 作用:定义当使用 len() 函数获取对象长度时的行为,返回对象包含元素的数量。
    • 示例
class MyList:def __init__(self):self.data = [1, 2, 3]def __len__(self):return len(self.data)my_list = MyList()
print(len(my_list)) 

  • __getitem__(self, key)
    • 作用:定义通过索引或键访问对象元素的行为,类似字典的 [] 操作或列表的索引操作。
    • 示例
class MyDict:def __init__(self):self.data = {'a': 1, 'b': 2}def __getitem__(self, key):return self.data[key]my_dict = MyDict()
print(my_dict['a']) 

  • __setitem__(self, key, value)
    • 作用:定义通过索引或键设置对象元素值的行为。
    • 示例
class MyDict:def __init__(self):self.data = {}def __setitem__(self, key, value):self.data[key] = valuemy_dict = MyDict()
my_dict['c'] = 3
print(my_dict.data) 

6. 可调用对象相关

  • __call__(self, *args, **kwargs)
    • 作用:允许类的实例像函数一样被调用,实现类似函数的行为。
    • 示例
class Adder:def __init__(self, num):self.num = numdef __call__(self, other):return self.num + otheradd_5 = Adder(5)
print(add_5(3)) 

二、python中的异常处理

在 Python 中,异常处理是编写可靠程序的关键部分,用于捕获和处理程序运行时出现的错误,避免程序崩溃。

异常处理结构

  • try - excepttry块中放置可能引发异常的代码,若try块中的代码引发异常,程序会跳转到except块处理异常。except后可指定异常类型,捕获特定异常;也可不指定,捕获所有异常。
    • 捕获单个特定异常
try:num = int('abc')
except ValueError:print("输入的内容无法转换为整数")

  • 捕获多个特定异常
try:result = 10 / 0num = int('abc')
except (ZeroDivisionError, ValueError) as e:print(f"发生错误: {e}")

  • 捕获所有异常
try:# 可能出现未知异常的代码pass
except Exception as e:print(f"发生异常: {e}")

  • try - except - elseelse块是可选的,当try块中的代码没有引发异常时,会执行else块中的代码。
try:result = 10 / 2
except ZeroDivisionError:print("除数不能为零")
else:print(f"运算成功,结果为{result}")

  • try - except - finallyfinally块也是可选的,无论try块中是否发生异常,finally块中的代码都会执行,常用于资源清理,如关闭文件、释放数据库连接等。

try:file = open('test.txt', 'r')data = file.read()
except FileNotFoundError:print("文件未找到")
finally:if 'file' in locals():file.close()

常见内置异常类型

  • ZeroDivisionError:除数为零引发,如1 / 0 。
  • TypeError:操作或函数应用于不适当类型对象时引发,如"abc" + 1 。
  • NameError:引用未定义变量时引发,如print(undefined_variable) 。
  • IndexError:访问序列(列表、元组等)超出索引范围引发,如lst = [1, 2]; lst[3] 。
  • KeyError:访问字典中不存在的键时引发,如d = {'a': 1}; d['b'] 。
  • ValueError:函数或方法接收到无效参数或输入时引发,如int('abc') 。

自定义异常

通过继承内置的Exception类或其子类来创建自定义异常,用于特定业务逻辑错误处理,能提供更清晰错误信息。

class MyCustomError(Exception):def __init__(self, message):self.message = message
try:raise MyCustomError("这是自定义异常")
except MyCustomError as e:print(e.message)

 

三、装饰器

Python 中的装饰器是一种强大的语法结构,能在不修改原函数代码的情况下,对函数或类的功能进行扩展或修改。

基础概念

  • 本质:装饰器本质是一个函数,它接收一个函数作为参数,并返回一个新的函数。这个新函数通常会在调用原函数的前后添加一些额外的逻辑,从而实现对原函数功能的增强 。
  • 原理基础:基于 Python 中 “函数是一等公民” 的特性,即函数可以像普通数据类型(如整数、字符串)一样,被赋值给变量、作为参数传递给其他函数、作为函数的返回值 。同时,还依赖闭包的概念,闭包使得内部函数可以访问外部函数的变量,即使外部函数已经执行完毕 。

简单装饰器示例

def my_decorator(func):def wrapper():print("在函数被调用之前执行一些操作")func()print("在函数被调用之后执行一些操作")return wrapper@my_decorator
def say_hello():print("Hello!")say_hello()

带参数函数的装饰器

当被装饰的函数有参数时,装饰器的 wrapper 函数也需要接受相应参数并传递给原函数:

def my_decorator(func):def wrapper(a, b):print("在函数被调用之前执行一些操作")result = func(a, b)print("在函数被调用之后执行一些操作")return resultreturn wrapper@my_decorator
def add(a, b):return a + bprint(add(3, 5))

 

装饰器带参数

若装饰器本身需要接收参数,就需要再嵌套一层函数:

def repeat(num_times):def decorator(func):def wrapper(*args, **kwargs):for _ in range(num_times):result = func(*args, **kwargs)return resultreturn wrapperreturn decorator@repeat(num_times=3)
def say_hello():print("Hello!")say_hello()

这里 repeat 是装饰器工厂函数,它接受 num_times 参数,返回真正的装饰器 decorator 。

类装饰器

除了函数装饰器,还可以使用类作为装饰器,类装饰器需要实现 __call__ 方法:

class MyDecorator:def __init__(self, func):self.func = funcdef __call__(self, *args, **kwargs):print("在函数被调用之前执行一些操作")result = self.func(*args, **kwargs)print("在函数被调用之后执行一些操作")return result@MyDecorator
def say_hello():print("Hello!")say_hello()

常见应用场景

  • 日志记录:在函数执行前后记录日志信息,方便调试和了解函数调用情况。
  • 性能测试:计算函数的执行时间,评估函数性能。
  • 权限控制:检查用户是否有执行函数的权限,比如在 Web 应用中判断用户是否登录等 。
  • 缓存:对于一些计算开销较大且输入相同输出相同的函数,缓存其结果,避免重复计算 。

内置装饰器

Python 提供了一些内置装饰器,如:

  • @staticmethod:将方法定义为静态方法,静态方法与类本身关联,不需要访问实例或类的任何属性或方法,通过类名或实例均可调用 。
  • @classmethod:将方法定义为类方法,类方法会接收类本身作为第一个参数(通常命名为 cls ) 。
  • @property:将方法转为属性访问(只读),通常用于封装逻辑,同时保持属性的访问方式 。

四、self和cls

在 Python 里,self 和 cls 都是约定俗成的参数名,分别用于实例方法和类方法中

self

  • 含义self 是实例方法的第一个参数,它代表类的实例对象本身。在调用实例方法时,Python 会自动将调用该方法的实例作为第一个参数传递给 self
  • 用途:借助 self 可以访问和修改实例的属性与方法。
  • 示例
class Person:def __init__(self, name):# 使用 self 来设置实例属性self.name = namedef greet(self):# 使用 self 来访问实例属性print(f"Hello, my name is {self.name}.")# 创建 Person 类的实例
p = Person("Alice")
# 调用实例方法时,self 参数会自动传递
p.greet()

在上述示例中,__init__ 方法和 greet 方法里的 self 都代表 p 这个实例对象。

cls

  • 含义cls 是类方法的第一个参数,它代表类本身。当定义类方法时,要使用 @classmethod 装饰器,Python 会自动把类作为第一个参数传递给 cls
  • 用途:借助 cls 可以访问和修改类的属性,还能创建类的新实例。
  • 示例
class Person:population = 0def __init__(self, name):self.name = namePerson.population += 1@classmethoddef get_population(cls):# 使用 cls 来访问类属性return cls.population# 创建 Person 类的实例
p1 = Person("Alice")
p2 = Person("Bob")# 调用类方法
print(Person.get_population())

在这个示例中,get_population 方法里的 cls 代表 Person 类,借助 cls 可以访问类属性 population

 @classmethod
    def create_new_person(cls, name):
        # 使用 cls 创建新的实例
        return cls(name)

# 使用类方法创建新实例
p3 = Person.create_new_person("Charlie")

总结

  • self 用于实例方法,代表类的实例对象,主要用来访问和修改实例的属性与方法。
  • cls 用于类方法,代表类本身,主要用来访问和修改类的属性,以及创建类的新实例。

五、闭包函数执行顺序

装饰器的理解: 

 

装饰器场景使用案例:

相关文章:

Python自动化-python基础(上)

一.魔法方法 在 Python 中&#xff0c;魔法方法&#xff08;Magic Methods&#xff09;是一类特殊的方法&#xff0c;以双下划线 __ 开头和结尾 &#xff0c;它们在特定的场景下会被 Python 解释器自动调用&#xff0c;用于实现一些内置的操作行为。 1. 初始化与构造相关 __…...

mysql数据库体验

目录 数据库简介 使用数据库 数据库的基本概念 数据 数据库和数据库表 数据库管理系统和数据库系统 数据库系统发展史 经典数据库 网状模型 层次模型 关系模型 当今主流数据库介绍 关系数据库 非关系型库的基本概念 关系数据库的基本结构 主键与外键 主键 外…...

Python开发系统

以下是一个基于Python和OpenCV的简单图像检测系统开发示例&#xff0c;包含目标检测、颜色检测和边缘检测功能&#xff1a; 一、环境搭建 1. 安装依赖 pip install opencv-python numpy matplotlib 2. 准备测试图片 下载示例图片或使用本地图片&#xff08;如 test.jpg &…...

架空输电线巡检机器人轨迹优化设计

架空输电线巡检机器人轨迹优化 摘要 本论文针对架空输电线巡检机器人的轨迹优化问题展开研究,综合考虑输电线复杂环境、机器人运动特性及巡检任务需求,结合路径规划算法、智能优化算法与机器人动力学约束,构建了多目标轨迹优化模型。通过改进遗传算法与模拟退火算法,有效…...

针对共享内存和上述windows消息机制 在C++ 和qt之间的案例 进行详细举例说明

针对共享内存和上述windows消息机制 在C++ 和qt之间的案例 进行详细举例说明 以下是关于在 C++ 和 Qt 中使用共享内存(QSharedMemory)和 Windows 消息机制(SendMessage / PostMessage)进行跨线程或跨进程通信的详细示例。 🧩 使用 QSharedMemory 进行进程间通信(Qt 示例…...

cursor平替,试试 vscode+cline+openrouter 的方案,还能自定义 mcp-server 教程大纲

一、引言 cursor 工具使用成本高的现状 编程agent好用&#xff0c;解放劳动力&#xff0c;但费用贵 vscodeclineopenrouter Cline 是一款可集成在 IDE 中的 AI 编程助手&#xff0c;支持 OpenAI 和 Ollama 等多种模型&#xff0c;能在 IDE 里自主完成复杂编程任务&#xff0c;…...

Qt实现车载多媒体项目,包含天气、音乐、视频、地图、五子棋功能模块,免费下载源文件!

本文主要介绍项目&#xff0c;项目的结构&#xff0c;项目如何配置&#xff0c;项目如何打包。这篇文章如果对你有帮助请点赞和收藏&#xff0c;谢谢&#xff01;源代码仅供学习使用&#xff0c;如果转载文章请标明出处&#xff01;&#xff08;免费下载源代码&#xff09;&…...

C++ set替换vector进行优化

文章目录 demo代码解释&#xff1a; 底层原理1. 二叉搜索树基础2. 红黑树的特性3. std::set 基于红黑树的实现优势4. 插入操作5. 删除操作6. 查找操作 demo #include <iostream> #include <set>int main() {// 创建一个存储整数的std::setstd::set<int> myS…...

Android学习总结之算法篇八(二叉树和数组)

路径总和 import java.util.ArrayList; import java.util.List;// 定义二叉树节点类 class TreeNode {int val;TreeNode left;TreeNode right;// 构造函数&#xff0c;用于初始化节点值TreeNode(int x) {val x;} }public class PathSumProblems {// 路径总和 I&#xff1a;判…...

正点原子IMX6U开发板移植Qt时出现乱码

移植Qt时出现乱码 1、前言2、问题3、总结 1、前言 记录一下正点原子IMX6U开发板移植Qt时出现乱码的解决方法&#xff0c;方便自己日后回顾&#xff0c;也可以给有需要的人提供帮助。 2、问题 用正点原子IMX6U开发板移植Qt时移植Qt后&#xff0c;sd卡里已经存储了Qt的各种库&…...

算法解密:轮转数组问题全解析

算法解密:轮转数组问题全解析 一、引言 在算法的世界里,数组的操作问题常常考验着我们对数据结构和算法技巧的掌握程度。“轮转数组”问题就是其中一个经典且有趣的题目。它看似简单,却蕴含着多种巧妙的解法。通过深入研究这个问题,我们能更好地理解数组的特性,提升算法思…...

正则化和L1/L2范式

1. 背景与引入 历史与位置 正则化&#xff08;Regularization&#xff09;是机器学习中控制模型复杂度、提升泛化能力的核心手段之一。 L2范式&#xff08;Ridge正则化&#xff09;最早可追溯至20世纪70年代的Tikhonov正则化&#xff0c;用于解决病态线性方程组问题&#xf…...

day05_java中常见的运算符

对字面量或者变量进行操作的符号就是运算符。用运算符把常量或者变量连接起来符合java语法的式子就可以称为表达式。 java中常用的运算符有下面几种 算术运算符 代码示例 public class Demo01Operator {public static void main(String[] args) {int a 3;int b 4;System.o…...

Linux_进程退出与进程等待

一、进程退出 ‌退出场景‌ ‌正常终止‌&#xff1a;代码执行完毕且结果符合预期&#xff08;退出码为 0&#xff09;。‌异常终止‌&#xff1a;运行结果错误&#xff08;退出码非 0&#xff09;或进程被信号强制终止。&#xff08;如 SIGINT 或 SIGSEGV&#xff09;。 ‌退…...

SSM框架(Spring + Spring MVC + MyBatis)整合配置的详细步骤

以下是 SSM框架&#xff08;Spring Spring MVC MyBatis&#xff09;整合配置的详细步骤&#xff0c;适用于 Maven 项目。 &#xff08;一&#xff09;、pom.xml中添加相关依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"ht…...

B. Zero Array(思维)

Problem - 1201B - Codeforces 思路&#xff1a;每次给任意两个不同下表的数减-1&#xff0c;相当于在这个数组总和S上减2&#xff0c;S为奇数则不可能变为0&#xff0c;S为偶数时&#xff0c;一定存在两个序列组成两个S/2&#xff0c;这样每次都是在两个S/2上各减1&#xff0c…...

FPGA_Verilog实现QSPI驱动,完成FLASH程序固化

FPGA_Verilog实现QSPI驱动&#xff0c;完成FLASH程序固化 操作提要 使用此操作模式实现远程升级的原因是当前的FLASH的管脚直接与FPGA相连接&#xff0c;SPI总线并未直接与CPU相连接&#xff0c;那么则需要CPU下发升级指令与将要升级的文件给FPGA&#xff0c;然后在FPGA内部产…...

前端取经路——框架修行:React与Vue的双修之路

大家好,我是老十三,一名前端开发工程师。在前端的江湖中,React与Vue如同两大武林门派,各有千秋。今天,我将带你进入这两大框架的奥秘世界,共同探索组件生命周期、状态管理、性能优化等核心难题的解决之道。无论你是哪派弟子,掌握双修之术,才能在前端之路上游刃有余。准…...

【DBMS学习系列】一、DBMS(数据库管理系统)的存储模型

一、前置知识 1.1 什么是OLAP 和 OLTP? On-Line Analytical Processing,简称OLAP(联机分析处理),是一种用于处理大规模数据的技术,它提供了一种灵活的分析和查询方式,能够帮助用户从不同维度来分析和理解业务数据。 On-Line Transaction Processing,简称OLTP(联机事…...

Matlab 镍氢电池模型

1、内容简介 Matlab216-镍氢电池模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

39、.NET GC是什么? 为什么需要GC?

.NET GC是什么&#xff1f; .NET GC&#xff08;Garbage Collector&#xff0c;垃圾回收器&#xff09;是.NET运行时&#xff08;CLR&#xff09;的核心组件&#xff0c;负责自动管理托管堆&#xff08;Managed Heap&#xff09;中的内存分配与释放。其核心工作机制包括&#…...

前端缓存踩坑指南:如何优雅地解决浏览器缓存问题?

浏览器缓存&#xff0c;配置得当&#xff0c;它能让页面飞起来&#xff1b;配置错了&#xff0c;一次小小的上线&#xff0c;就能把你扔进线上 bug 的坑里。你可能遇到过这些情况&#xff1a; 部署上线了&#xff0c;结果用户还在加载旧的 JS&#xff1b;接口数据改了&#xf…...

XML语言

XML语言 在开始介绍Mybatis之前&#xff0c;先介绍一下XML语言&#xff0c;XML语言发明最初是用于数据的存储和传输&#xff0c;它是由一个一个的标签嵌套而成 <?xml version"1.0" encoding"UTF-8" ?> <outer> <name>阿伟</name&…...

垃圾回收的三色标记算法

目录 1、介绍 1.1、发展 1.2、基本原理 2、执行过程 2.1、初始标记 (Initial Marking) 2.2、并发标记 (Concurrent Marking) 2.3、重新标记 (Remark) 2.4、垃圾清理阶段 3、并发标记 3.1、浮动垃圾 3.2、漏标 前言 三色标记&#xff08;Tri-color Marking&#xff0…...

紫禁城多语言海外投资理财返利源码带前端uniapp纯工程文件

测试环境&#xff1a;Linux系统CentOS7.6、宝塔、PHP7.2、MySQL5.6&#xff0c;根目录public&#xff0c;伪静态thinkphp&#xff0c;开启ssl证书 语言&#xff1a;中文简体、英文、越南语、马来语、日语、巴西语、印尼语、泰语 前端是uniapp的源码&#xff0c;我已经把nmp给你…...

深入剖析 I/O 复用之 select 机制

深入剖析 I/O 复用之 select 机制 在网络编程中&#xff0c;I/O 复用是一项关键技术&#xff0c;它允许程序同时监控多个文件描述符的状态变化&#xff0c;从而高效地处理多个 I/O 操作。select 作为 I/O 复用的经典实现方式&#xff0c;在众多网络应用中扮演着重要角色。本文…...

Android开发报错解决

Android开发报错解决 组件相关文件相关权限相关代码相关程序报错IDE相关版本对应框架okhttp请求失败 Roomno such table cocos2d 组件相关 使用gravity属性让文字居中是&#xff0c;需把该属性放在text属性上面ScrollView只能容纳一个子视图 文件相关 放在drawble下的图片资源…...

Linux 网络命名空间:从内核资源管理到容器网络隔离

1. 网络命名空间是什么? 网络命名空间(Network Namespace) 是 Linux 内核提供的一种网络资源隔离机制,用于为进程或容器创建完全独立的网络环境。它并非物理或虚拟的网络接口(如网卡、veth pair 等),而是一个虚拟容器,包含以下资源的独立实例: 网络接口(物理或虚拟)…...

VNC windows连接ubuntu桌面

✅ 步骤 1&#xff1a;安装 VNC 服务器 首先&#xff0c;我们需要在 Winux 系统上安装一个 VNC 服务器。这里我们使用 tigervnc 作为例子&#xff0c;它是一个常用的 VNC 服务器软件。 打开终端并更新你的软件包&#xff1a; sudo apt update安装 tigervnc 服务器&#xff1a;…...

Elastic:如何构建由 AI 驱动的数字客户体验策略

作者&#xff1a;来自 Elastic Elastic Platform Team 客户通过多个数字渠道与企业和组织互动 —— 从网站和应用程序到聊天机器人和电子邮件。这些接触点构成了数字客户体验&#xff08;DCX&#xff09;。无缝的数字客户体验能显著提升客户满意度&#xff0c;进而带动更高的收…...

安防多协议接入/视频汇聚平台EasyCVR助力工地/工程/建筑施工领域搭建视频远程监控系统

一、摄像机安装方案​ 1&#xff09;安装位置选择​&#xff1a;摄像机安装需避开强振源与电磁干扰区&#xff0c;兼顾建筑外观&#xff0c;隐蔽安装。其防护罩应巧妙遮蔽视角&#xff0c;增强安防威慑。电梯轿厢内的摄像机&#xff0c;建议藏于吊顶。连接摄像机的视频、电源及…...

《100天精通Python——基础篇 2025 第16天:异常处理与调试机制详解》

目录 一、认识异常1.1 为什么要使用异常处理机制?1.2 语法错误1.3 异常错误1.4 如何解读错误信息 二、异常处理2.1 异常的捕获2.2 Python内置异常2.3 捕获多个异常2.4 raise语句与as子句2.5 使用traceback查看异常2.6 try…except…else语句2.7 try…except…finally语句--捕获…...

Ceph PG unfound/lost 问题排查与解决

Ceph PG unfound/lost 问题排查与解决 背景现象排查过程经验总结参考命令结语 背景 Ceph 集群出现 HEALTH_ERR&#xff0c;提示有 PG 对象丢失&#xff08;unfound&#xff09;&#xff0c;并且 repair 无法自动修复。 现象 ceph health detail 显示&#xff1a; HEALTH_ERR …...

LeetCode热题100--54.螺旋矩阵--中等

1. 题目 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff1a; 输入&#xff1a;ma…...

【嵌入式开发-CAN】

嵌入式开发-CAN ■ CAN简介 ■ CAN简介...

SQLite3介绍与常用语句汇总

SQLite3简介 SQLite3是一款轻量级的、基于文件的开源关系型数据库引擎&#xff0c;由 D. Richard Hipp 于 2000 年首次发布。它遵循 SQL 标准&#xff0c;但与传统的数据库系统不同&#xff0c;SQLite 并不运行在独立的服务器进程中&#xff0c;而是作为一个嵌入式数据库引擎直…...

uniapp中score-view中的文字无法换行问题。

项目场景&#xff1a; 今天遇到一个很恶心的问题&#xff0c;uniapp中的文字突然无法换行了。得..就介样 原因分析&#xff1a; 提示&#xff1a;经过一fan研究后发现 scroll-view为了能够横向滚动设置了white-space: nowrap; 强制不换行 解决起来最先想到的是&#xff0c;父…...

[学习]RTKLib详解:ephemeris.c与rinex.c

文章目录 RTKLib详解&#xff1a;ephemeris.c与rinex.cPART A: ephemeris.c一、代码整体作用与工作流程分析1.1 整体作用1.2 工作流程 二、核心函数说明2.1 alm2pos (Almanac to Position)2.2 eph2clk (Ephemeris to Clock)2.3 eph2pos (Ephemeris to Position)2.4 geph2pos (G…...

JDBC:java与数据库连接,Maven,MyBatis

JDBC 是使用Java语言操作关系型数据库的一套API JDBC是接口&#xff0c;用其实现一系列不同种类关系型数据库的实现类 JDBC本质: 官方(sun公司)定义的一套操作所有关系型数据库的规则&#xff0c;即接口 各个数据库厂商去实现这套接口&#xff0c;提供数据库驱动jar包 我…...

代码随想录第39天:单调栈

一、每日温度&#xff08;Leetcode 739&#xff09; 思路&#xff1a; 栈里存放的是**“还没等到升温的日子”**的索引&#xff1b; 每遇到一个新的温度&#xff1a; 检查是否比栈顶的温度高&#xff1b; 如果高了&#xff0c;说明升温来了&#xff0c;栈顶元素可以出栈&…...

如何在vite构建的vue项目中从0到1配置postcss-pxtorem

1. 安装postcss-pxtorem和autoprefixer yarn add postcss-pxtorem autoprefixer2. 在vite.config.ts中写入 import { defineConfig } from "vite"; import vue from "vitejs/plugin-vue"; import postcssPxtorem from "postcss-pxtorem"; impo…...

基于51单片机的自动洗衣机衣料材质proteus仿真

地址&#xff1a;https://pan.baidu.com/s/13d2bJ6vKh8ZLuDBZnI0VGw 提取码&#xff1a;1234 仿真图&#xff1a; 芯片/模块的特点&#xff1a; AT89C52/AT89C51简介&#xff1a; AT89C51 是一款常用的 8 位单片机&#xff0c;由 Atmel 公司&#xff08;现已被 Microchip 收…...

永久免费的小工具,内嵌微软接口

有时候我们制作短视频&#xff0c;需要为视频添加声音&#xff0c;但部分配音软件要收费。不过别担心&#xff0c;今天给大家推荐一款超实用的免费文字转语音软件&#xff0c;完全无需担忧费用问题&#xff01; 01 软件介绍 这款软件就是Read Aloud&#xff0c;具有以下特点&a…...

C++漫步结构与平衡的殿堂:AVL树

文章目录 1.AVL树的概念2.AVL树的结构3.AVL树的插入4.AVL树的旋转4.1 左单旋4.2 右单旋4.3 右左双旋4.4 左右双旋 5.AVL树的删除6.AVL树的高度7.AVL树的平衡判断希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 二叉搜索树有其自身的缺陷&#xf…...

MIST:一键解锁 macOS 历史版本,旧系统安装不再难!

在 Mac 电脑的使用过程中&#xff0c;你是否遇到过这些困扰&#xff1f;为了运行一款经典设计软件&#xff0c;新系统却无法兼容&#xff1b;或是想给老旧 Mac 设备升级&#xff0c;却找不到适配的系统版本。而 App Store 里&#xff0c;旧版 macOS 安装包就像 “隐藏副本”&am…...

mac连接lniux服务器教学笔记

从你的检查结果看&#xff0c;容器内已经安装了 XFCE 桌面环境&#xff08;xfce.desktop 和 xubuntu.desktop 的存在说明桌面环境已存在&#xff09;。以下是针对 Docker 容器环境的远程桌面配置方案&#xff1a; 一、容器内快速配置远程桌面&#xff08;XFCE VNC&#xff09;…...

网站公安备案流程及审核时间

在中国&#xff0c;网站运营除了需要 ICP备案&#xff08;工信部备案&#xff09;&#xff0c;还需完成 公安备案&#xff08;公安机关互联网站安全备案&#xff09;。以下是详细流程及审核时间说明&#xff1a; 一、公安备案流程 1. 备案对象 所有在中国境内运营的网站&#…...

python学生作业提交管理系统-在线作业提交系统

目录 技术栈介绍具体实现截图系统设计研究方法&#xff1a;设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示 技术栈介绍 Django-SpringBoot-php-Node.js-flask 本课题的研究方法和研究步骤基本合理&#xff0c;难度适中&#xf…...

从颜料混色到网络安全:DH算法的跨界智慧

一、颜料混色的秘密 想象一下&#xff0c;你和朋友各自有一罐私密的颜料&#xff0c;但你们想共同调出一种只有彼此知道的新颜色&#xff0c;而旁观者即使看到你们的操作也无法复现。奇怪的是&#xff0c;你们全程没有直接交换颜料&#xff0c;却能达成共识——这就是**迪菲-赫…...

初学者的AI智能体课程:构建AI智能体的十堂课

初学者的AI智能体课程:构建AI智能体的十堂课 在人工智能(AI)领域,AI智能体正在逐渐发挥其不容忽视的作用。自动化的智能体不仅仅在理论上广泛讨论,更加在实际应用中开辟了一片新的天地。那么如何动手开发属于自己的AI智能体呢?Microsoft提供的AI智能体入门课正是为此而设…...