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

Python 进阶部分详细整理

1. 面向对象编程(OOP)

面向对象编程 (OOP) 是一种通过将程序中的数据和功能封装为对象的编程范式。OOP 基于四个核心概念:类与对象、继承、封装与多态。

类与对象
  • 类(Class):类是创建对象的蓝图或模板。它定义了对象的属性和方法。在 Python 中,使用 class 关键字定义一个类。

    class Dog:def __init__(self, name, breed):  # 构造函数self.name = name  # 实例属性self.breed = breed
    • __init__() 是类的构造函数,用于初始化对象。在创建对象时,__init__() 自动被调用。

  • 对象(Object):对象是类的实例,类定义了对象的属性和行为,每个对象是独立的。

    my_dog = Dog("Buddy", "Golden Retriever")  # 创建对象
类的属性与方法
  • 实例属性:每个对象独立拥有的属性,通过 self 引用。

  • 类属性:所有对象共享的属性,定义在类级别。

    class Dog:species = 'Canine'  # 类属性
    ​def __init__(self, name, breed):self.name = name  # 实例属性
  • 实例方法:操作对象数据的方法,定义在类中,并使用 self 参数访问对象的属性和其他方法。

  • 类方法(@classmethod):通过 @classmethod 修饰的类方法,使用 cls 访问类属性,能作用于类本身而不是具体对象。

    @classmethod
    def set_species(cls, new_species):cls.species = new_species
  • 静态方法(@staticmethod):不需要访问实例属性或类属性,使用 @staticmethod 修饰。

    @staticmethod
    def bark():print("Woof!")
继承
  • 单继承:一个子类继承一个父类,子类继承父类的属性和方法。

    class Animal:def __init__(self, name):self.name = name
    ​def speak(self):return "Animal sound"
    ​
    class Dog(Animal):  # Dog 继承自 Animaldef speak(self):return "Woof!"
  • 多继承:一个子类可以继承多个父类。Python 允许多继承,但需要小心处理父类方法的冲突。

  • super():用于在子类中调用父类的方法,特别是在构造函数中,可以避免手动调用父类。

    class Puppy(Dog):def __init__(self, name, breed):super().__init__(name, breed)  # 调用父类构造函数
封装、继承与多态
  • 封装:将数据(属性)和操作数据的代码(方法)打包在一起,并通过控制访问权限(如私有和公有属性)来保护数据。

  • 继承:子类继承父类的属性和方法,从而实现代码复用。

  • 多态:不同类的对象可以以相同的接口使用。例如,DogCat 类都可以有 speak() 方法,尽管它们的实现不同,Python 中可以调用相同的接口。

特殊方法

Python 中有一些双下划线开头和结尾的特殊方法(又称为魔术方法),这些方法可以为类实现特定的行为。

  • __str__():定义对象的可打印字符串表示。

    def __str__(self):return f"Dog({self.name}, {self.breed})"
  • __repr__():返回对象的官方字符串表示,通常用于调试。

  • __len__():使类可以使用 len() 函数。

  • __eq__():使类支持 == 运算符,用于对象比较。


2. 生成器与迭代器

迭代器
  • 迭代器(Iterator):迭代器是实现了 __iter__()__next__() 方法的对象。__iter__() 返回迭代器对象本身,__next__() 返回容器的下一个元素,当没有元素时,抛出 StopIteration

    class MyIterator:def __init__(self, limit):self.limit = limitself.count = 0
    ​def __iter__(self):return self
    ​def __next__(self):if self.count < self.limit:self.count += 1return self.countelse:raise StopIteration
  • 使用 iter()next()iter() 将对象转换为迭代器,next() 获取下一个值。

    it = iter(MyIterator(5))
    print(next(it))  # 输出 1
生成器
  • 生成器函数:生成器函数使用 yield 而不是 return 返回值。生成器每次被调用时都会返回一个值,保持其状态(即函数内的局部变量在多次调用中不会被重置)。生成器是一种懒惰求值的方式,只有在需要的时候才生成值,适合处理大量数据。

    def countdown(n):while n > 0:yield nn -= 1
  • 生成器表达式:生成器表达式是类似列表推导式的语法,但它不会一次性生成所有元素,而是逐步生成,节省内存。

    gen_exp = (x * x for x in range(10))  # 生成器表达式

通过生成器,我们可以处理大数据集,而不会耗尽内存。例如,处理一大段日志文件时可以使用生成器按行读取。

3. 装饰器

函数装饰器

装饰器是一种设计模式,用来在不修改函数定义的情况下,动态地为函数增加功能。在 Python 中,可以使用 @ 符号来应用装饰器。装饰器本质上是一个函数,它接收另一个函数作为参数,并返回一个新函数。

示例

def my_decorator(func):def wrapper():print("Something before the function runs")func()print("Something after the function runs")return wrapper
​
@my_decorator
def say_hello():print("Hello!")
​
say_hello()

输出:

Something before the function runs
Hello!
Something after the function runs
带参数的装饰器

带参数的装饰器比普通装饰器更加灵活。编写时需要使用三层函数:最外层接受装饰器的参数,第二层是普通装饰器,第三层是实际包装的函数。

示例

def decorator_with_args(arg1, arg2):def decorator(func):def wrapper(*args, **kwargs):print(f"Decorator args: {arg1}, {arg2}")return func(*args, **kwargs)return wrapperreturn decorator
​
@decorator_with_args("Hello", "World")
def greet():print("Greetings!")
​
greet()

输出:

Decorator args: Hello, World
Greetings!
类装饰器

类装饰器是通过类实现的装饰器。使用 __call__() 方法,类可以像函数一样调用。类装饰器可以在装饰函数时保存更多的状态信息。

示例

class MyDecorator:def __init__(self, func):self.func = func
​def __call__(self, *args, **kwargs):print("Before the function call")result = self.func(*args, **kwargs)print("After the function call")return result
​
@MyDecorator
def say_hello():print("Hello!")
​
say_hello()

输出:

Before the function call
Hello!
After the function call

4. 异常处理

捕获异常

Python 使用 tryexcept 语句来捕获异常,确保程序在出现错误时不会崩溃。else 块在 try 成功时执行,finally 块无论是否发生异常都会执行。

示例

try:num = int(input("Enter a number: "))
except ValueError:print("That's not a valid number!")
else:print(f"Number entered: {num}")
finally:print("End of program.")
  • try:包含可能产生异常的代码。

  • except:捕获特定类型的异常。

  • else:当没有异常时执行的代码。

  • finally:无论是否发生异常,都会执行的代码,通常用于清理操作。

自定义异常

可以通过继承 Exception 类自定义异常,适用于需要在程序中捕获特定错误的情况。

示例

class MyCustomError(Exception):def __init__(self, message):self.message = message
​
try:raise MyCustomError("This is a custom error")
except MyCustomError as e:print(f"Caught an error: {e.message}")
断言

断言是一种检查代码状态的简单方法。当条件为 False 时,assert 会抛出 AssertionError

示例

x = 5
assert x > 0, "x should be greater than 0"
assert x < 10, "x should be less than 10"

5. 模块与包

模块导入

模块是包含 Python 代码的文件,通常用于组织代码结构。可以通过 import 导入模块,也可以使用 from ... import 导入特定的变量或函数。

示例

# 导入整个模块
import math
print(math.sqrt(16))
​
# 导入特定函数
from math import sqrt
print(sqrt(16))
  • import:导入整个模块,并通过模块名访问其内容。

  • from ... import:直接导入模块中的特定变量或函数。

包是一种组织模块的方式,通过包含一个 __init__.py 文件,Python 将其目录识别为一个包。包可以包含多个模块和子包。

__init__.py 的作用

  • 初始化包,当包第一次被导入时执行。

  • 定义包的公开接口。

示例

mypackage/__init__.pymodule1.pymodule2.py
# 使用包
from mypackage import module1
常用内置模块

Python 提供了许多内置模块,涵盖了文件操作、系统功能、数学运算等常见需求。

  • os:与操作系统交互的模块,提供了文件、目录操作。

    import os
    print(os.getcwd())  # 获取当前工作目录
  • sys:与 Python 解释器交互的模块,提供命令行参数、系统路径等功能。

    import sys
    print(sys.version)  # 打印Python版本
  • datetime:处理日期和时间的模块。

    from datetime import datetime
    print(datetime.now())  # 获取当前日期和时间
  • random:生成随机数和随机选择的模块。

    import random
    print(random.randint(1, 10))  # 生成1到10之间的随机整数
  • math:提供基本数学函数和常量。

    import math
    print(math.pi)  # 输出圆周率
  • itertools:提供用于迭代的高效工具,例如排列、组合等。

    import itertools
    print(list(itertools.permutations([1, 2, 3])))  # 生成排列

6. 正则表达式

正则表达式(Regular Expressions, regex)是一种强大的字符串匹配工具,允许通过定义模式(Pattern)来进行复杂的字符串搜索、替换、分割等操作。Python 提供了 re 模块来支持正则表达式。

正则基础
  • 模式和规则

    :正则表达式是一种用来描述字符串匹配规则的特殊符号组合。常见符号包括:

    • .:匹配任意一个字符(除了换行符)。

    • ^:匹配字符串的开头。

    • $:匹配字符串的结尾。

    • *:匹配前一个字符 0 次或多次。

    • +:匹配前一个字符 1 次或多次。

    • ?:匹配前一个字符 0 次或 1 次。

    • []:匹配括号内的任意一个字符,如 [a-z] 表示小写字母。

    • |:表示“或”关系。

    • \d:匹配数字。

    • \w:匹配字母、数字和下划线。

常用方法
  • search():在字符串中搜索符合正则表达式的内容,返回第一个匹配对象。

    import re
    result = re.search(r'\d+', 'There are 123 apples')
    print(result.group())  # 输出 '123'
  • match():从字符串开头开始匹配,如果匹配成功返回匹配对象,否则返回 None

    result = re.match(r'\d+', '123 apples')
    print(result.group())  # 输出 '123'
  • findall():返回字符串中所有与正则表达式匹配的部分,以列表形式返回。

    result = re.findall(r'\d+', '123 apples, 456 oranges')
    print(result)  # 输出 ['123', '456']
  • sub():替换字符串中与正则表达式匹配的部分。

    result = re.sub(r'apples', 'bananas', 'I like apples')
    print(result)  # 输出 'I like bananas'
  • split():根据正则表达式匹配的部分拆分字符串。

    result = re.split(r'\s+', 'split by spaces')
    print(result)  # 输出 ['split', 'by', 'spaces']

7. 数据结构与算法

常用数据结构
  • 栈(Stack):后进先出(LIFO)的数据结构,常用于递归问题。

    stack = []
    stack.append(1)  # 压栈
    stack.pop()      # 出栈
  • 队列(Queue):先进先出(FIFO)的数据结构,常用于广度优先搜索。

    from collections import deque
    queue = deque()
    queue.append(1)  # 入队
    queue.popleft()  # 出队
  • 链表(Linked List):由节点构成的线性数据结构,每个节点包含一个数据和一个指向下一个节点的指针。

  • 树(Tree):一种非线性数据结构,常用于表示分层数据。二叉树是其中最常见的一种。

  • 字典(Dictionary):键值对(key-value)映射的数据结构。

    dict = {'a': 1, 'b': 2}
  • 集合(Set):无序且不重复的元素集合。

    set = {1, 2, 3}
常见算法
  • 排序算法

    • 冒泡排序:两两比较并交换,时间复杂度为 O(n²)。

    • 快速排序:选取一个基准值,将小于基准的放一边,大于基准的放另一边,递归进行,时间复杂度平均为 O(n log n)。

    • 归并排序:分治法,将数组递归拆分再合并,时间复杂度为 O(n log n)。

  • 搜索算法

    • 二分查找:在有序数组中查找元素,时间复杂度为 O(log n)。

    • 深度优先搜索(DFS):使用栈实现的图遍历算法。

    • 广度优先搜索(BFS):使用队列实现的图遍历算法。

时间复杂度

时间复杂度衡量算法执行时间随输入规模的增长而变化的速度。常见的时间复杂度有:

  • O(1):常数时间

  • O(log n):对数时间

  • O(n):线性时间

  • O(n log n):线性对数时间

  • O(n²):平方时间


8. 并发与多线程

线程
  • 创建线程:Python 使用 threading 模块来创建和管理线程。

    import threading
    ​
    def print_hello():print("Hello from thread")
    ​
    thread = threading.Thread(target=print_hello)
    thread.start()
    thread.join()  # 等待线程结束
  • 线程同步:使用 Lock 机制来避免多个线程同时修改共享数据,导致竞争条件问题。

    lock = threading.Lock()
    lock.acquire()  # 获取锁
    # 执行共享资源操作
    lock.release()  # 释放锁
  • Semaphore:控制访问共享资源的线程数量。

进程
  • 多进程

    :使用

    multiprocessing

    模块来创建多个进程,提供更强大的并发能力。

    from multiprocessing import Process
    ​
    def print_hello():print("Hello from process")
    ​
    process = Process(target=print_hello)
    process.start()
    process.join()
协程

协程是一种轻量级的并发方式,Python 的 asyncio 模块允许编写异步协程程序,asyncawait 是协程的关键字。

示例

import asyncio
​
async def say_hello():print("Hello")await asyncio.sleep(1)print("World")
​
asyncio.run(say_hello())

9. 网络编程

Socket编程

使用 socket 模块实现 TCP/UDP 通信。

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('www.example.com', 80))
sock.send(b"GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n")
HTTP 请求

requests 模块是一个流行的 Python 库,用于发送 HTTP 请求。

示例

import requests
response = requests.get('https://api.example.com/data')
print(response.json())
Flask Web 框架

Flask 是一个轻量级 Web 框架,适合快速搭建 Web 应用。

from flask import Flask
app = Flask(__name__)
​
@app.route('/')
def hello_world():return 'Hello, World!'
​
if __name__ == '__main__':app.run()

10. 数据科学与机器学习库

Numpy

Numpy 是用于多维数组处理的库,支持大量的数学运算。

示例

import numpy as np
array = np.array([1, 2, 3])
print(np.mean(array))  # 输出 2.0
Pandas

Pandas 是用于数据处理和分析的库,主要使用 DataFrame 数据结构。

示例

import pandas as pd
data = {'name': ['John', 'Jane'], 'age': [30, 25]}
df = pd.DataFrame(data)
print(df)
Matplotlib

Matplotlib 是用于数据可视化的库,可以创建各种图表。

示例

import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [4, 5, 6])
plt.show()
Scikit-learn

Scikit-learn 提供了常用的机器学习模型和工具,如线性回归、分类、聚类等。

示例

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit([[1], [2], [3]], [1, 2, 3])
print(model.predict([[4]]))  # 输出 [4.]

11. 高级 Python 特性

上下文管理

with 语句可以确保资源的正确管理,通常用于文件操作等场景。__enter__()__exit__() 方法实现上下文管理协议。

示例

with open('file.txt', 'r') as file:content = file.read()
元类

元类是用来创建类的类,type() 是最常见的元类。可以通过元类定制类的行为。

示例

class MyMeta(type):def __new__(cls, name, bases, dct):print(f"Creating class {name}")return super().__new__(cls, name, bases, dct)
​
class MyClass(metaclass=MyMeta):pass
单例模式

单例模式确保类只有一个实例,可以通过重写 __new__() 方法来实现。

示例

class Singleton:_instance = None
​def __new__(cls):if cls._instance is None:cls._instance = super().__new__(cls)return cls._instance

相关文章:

Python 进阶部分详细整理

1. 面向对象编程&#xff08;OOP&#xff09; 面向对象编程 (OOP) 是一种通过将程序中的数据和功能封装为对象的编程范式。OOP 基于四个核心概念&#xff1a;类与对象、继承、封装与多态。 类与对象 类&#xff08;Class&#xff09;&#xff1a;类是创建对象的蓝图或模板。它…...

[ RK3566-Android11 ] 关于移植 RK628F 驱动以及后HDMI-IN图像延迟/无声等问题

问题描述 由前一篇文章https://blog.csdn.net/jay547063443/article/details/142059700?fromshareblogdetail&sharetypeblogdetail&sharerId142059700&sharereferPC&sharesourcejay547063443&sharefromfrom_link&#xff0c;移植HDMI-IN部分驱动后出现&a…...

【黑马点评】 使用RabbitMQ实现消息队列——2.使用RabbitMQ监听秒杀下单

2 使用RabbitMQ实现消息队列 2.1 修改\hm-dianping\pom.xmlpom.xml文件 添加RabbitMQ的环境 <!-- RabbitMQ--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </depe…...

业务封装与映射 -- OTUk/ODUk/OPUk开销帧结构

开销是为了保证净荷正常、灵活传送所必须附加的供网络运行、管理和维护&#xff08;OAM&#xff09;使用的字节。 OTN电层开销包括OTUk开销、ODUk开销、OPUk开销、OTUCn开销、ODUCn开销、OPUCn开销和帧对齐开销。 SM开销属于OTU开销&#xff0c;占用3个字节&#xff1b;PM开销…...

Vim基本用法

Vim用法 一、基本模式 1. 普通模式&#xff08;Normal Mode&#xff09; 移动光标 基本移动&#xff1a;使用方向键&#xff08;h左移、j下移、k上移、l右移&#xff09;&#xff0c;也可以使用 H&#xff08;移到屏幕顶部&#xff09;、M&#xff08;移到屏幕中间&#xff…...

python 实现Tarjan 用于在有向图中查找强连通分量的算法

Tarjan 用于在有向图中查找强连通分量的算法介绍 Tarjan算法是一种用于在有向图中查找强连通分量的高效算法&#xff0c;由Robert Tarjan在1972年提出。强连通分量是指在有向图中&#xff0c;如果从顶点u到顶点v以及从顶点v到顶点u都存在一条路径&#xff0c;那么顶点u和顶点v…...

Qt开发技巧(十五)字符串去除空格,跨网段搜索不生效,设置图片显示失败问题,表格视图的批量删除,主动判断字串编码,开启向前查询的属性,画家类载入html来绘制

继续讲一些Qt开发中的技巧操作&#xff1a; 1.字符串去除空格 我们经常会遇到字符串重去除空格的情况&#xff0c;对于QString去除空格&#xff0c;有多种场景&#xff0c;可能需要去除左侧、右侧、所有等位置的空格&#xff1b; //字符串去空格 -1移除左侧空格 0移除所有空格…...

【机器学习】智驭未来:探索机器学习在食品生产中的革新之路

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#xff1a;探索机器学习在食品生产中的革新之路&#x1f4d2;2. 机器学习在食品质量控制中的应用&#x1f31e;实…...

Ubuntu 安装CUDA并使用Docker配置Pytorch环境

文章目录 参考安装顺序Nvidia GPU driverDockerNvidia Container ToolkitDocker PyTorch 1. Nvidia GPU Driver2. Docker 安装&#xff08;使用apt存储库进行安装&#xff09;3. Nvidia Container Toolkit3.1 Docker测试GPU 参考 安装顺序 Nvidia GPU driver Docker Nvidia…...

【论文阅读】Simulating 500 million years of evolution with a language model

Simulating 500 million years of evolution with a language model 1、概述 展示了语言模型在蛋白质设计和进化模拟方面的能力。通过对 ESM3 模型的研究,发现其能够生成与自然蛋白质差异较大且具有功能的新蛋白质,如新型绿色荧光蛋白(GFP),表明语言模型可以达到自然进化…...

detectron2/layers源码笔记

from .wrappers import ( BatchNorm2d, Conv2d, #在torch.conv2d的基础上集成了norm层和activation层 ConvTranspose2d, cat, interpolate, Linear, nonzero_tuple, #nonzero_tuple(x)得到tuple of 每个维度的索引 cross_entropy, empty_input_loss_func…...

LLM+知识图谱新工具! iText2KG:使用大型语言模型构建增量知识图谱

iText2KG是一个基于大型语言模型的增量知识图谱构建工具&#xff0c;通过从文本文档中提取实体和关系来逐步构建知识图谱。该工具具有零样本学习能力&#xff0c;能够在无需特定训练的情况下&#xff0c;在多个领域中进行知识提取。它包括文档提炼、实体提取和关系提取模块&…...

React基础-快速梳理

React介绍 React由Meta公司开发&#xff0c;是一个用于构建Web和原生交互界面的库 React的优势 相较于传统基于DOM开发的优势 组件化的开发方式不错的性能 相较于其它前端框架的优势 丰富的生态跨平台支持 开发环境创建 create-react-app是一个快速创建React开发环境的…...

H.264编解码 - NALU详解

一、概述 NALU(Network Abstraction Layer Unit)是H.264编解码中的一个重要概念。H.264是一种视频压缩标准,将视频数据分割成一系列的NALU。每个NALU都是一个独立的数据单元,包含视频压缩后的一个片段。每个NALU都有自己的起始码和长度前缀,用于标识NALU的起始位置和长度。…...

vSAN02:容错、存储策略、文件服务、快照与备份、iSCSI

目录 vSAN容错条带化存储策略1. 创建新策略2. 应用存储策略 vSAN文件服务文件服务快照与备份 vSAN iSCSI目标服务 vSAN容错 FTT&#xff1a;Fault to Tolerance 允许故障数 故障域&#xff1a;每一台vSAN主机是一个故障域 - 假设3台超融合&#xff08;3计算1存储&#xff09;&…...

图解C#高级教程(四):协变、逆变

本章的主题是可变性&#xff08;variance&#xff09;&#xff0c;这里的可变性更多的是指基类和派生类之间的转换。可变性分为三种&#xff1a;协变&#xff08;covariance&#xff09;、逆变&#xff08;contravariance&#xff09;和不变&#xff08;invariance&#xff09;…...

详解CSS中的伪元素

4.3 伪元素 可以把样式应用到文档树中根本不存在的元素上。 ::first-line 文本中的第一行 ::first-letter 文本中的第一个字母 ::after 元素之后添加 ::before 元素之前 代码&#xff1a; <!DOCTYPE html> <html> <head><meta charset"utf-8&q…...

paper_template

paper_template Title 文章标题 Abstract 摘要 Keywords 关键词 Highlights Highlights / 创新点 Summary 写完笔记之后最后填&#xff0c;概述文章的内容&#xff0c;以后查阅笔记的时候先看这一段。 Backgrounds 描述当前研究背景 Research Objective 作者的研…...

【Bug】解决 Ubuntu 中 “error: Unable to Find Python3 Executable” 错误

解决 Ubuntu 中 “Unable to Find Python3 Executable” 错误 在 Ubuntu 系统上使用 Python 进行开发时&#xff0c;遇到找不到 python3 可执行文件的错误。 主要问题是无法正常打开终端&#xff08;原生与terminator&#xff09;&#xff0c;找不到python3&#xff0c;且无法…...

CUDA与TensorRT学习六:模型部署-CNN、模型部署-YOLOv8检测器、部署BEVFusion模型

文章目录 一、模型部署-CNN二、模型部署-YOLOv8检测器三、部署BEVFusion模型 一、模型部署-CNN 二、模型部署-YOLOv8检测器 三、部署BEVFusion模型...

防sql注入的网站登录系统设计与实现

课程名称 网络安全 大作业名称 防sql注入的网站登录系统设计与实现 姓名 学号 班级 大 作 业 要 求 结合mysql数据库设计一个web登录页面密码需密文存放&#xff08;可以采用hash方式&#xff0c;建议用sha1或md5加盐&#xff09;采用服务器端的验证码&#…...

如何快速切换电脑的ip地址

在当今的数字化时代&#xff0c;IP地址作为网络身份的重要标识&#xff0c;其重要性日益凸显。无论是出于保护个人隐私的需要&#xff0c;还是为了访问特定的网络服务等&#xff0c;快速切换电脑的IP地址已成为许多用户的迫切需求。本文将为你介绍几种实用的方法&#xff0c;帮…...

鸿蒙HarmonyOS之选择相册文件(照片/视频)方法

一、新建文件工具类FileUtil.ets 包含&#xff1a;选择照片方法、获取文件类型方法、去除后缀、获取后缀方法 import { BusinessError, request } from kit.BasicServicesKit; import photoAccessHelper from ohos.file.photoAccessHelper; import bundleManager from ohos.b…...

【QT Qucik】C++交互:接收QML信号

在本节课中&#xff0c;我们将深入探讨如何在C中接收QML发出的信号。我们将分为几个部分&#xff0c;详细说明信号的定义、发送及其在C中的接收。 理解信号和槽机制 Qt的信号与槽机制是一种用于对象之间通信的强大工具。信号是对象在特定事件发生时发送的通知&#xff0c;而槽…...

【C++】关键字+命名空间

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解C的命名空间&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 关键字二. 命名空间2.1 命名空间的定义2.2 命名空间的使用a. 命名空间名称作用域限定…...

网络层——IP

IP地址 结构&#xff1a; 由32位二进制数组成&#xff0c;通常用点分的形式被分为四个部分&#xff0c;每个部分1byte&#xff0c;最大值为255。 从功能的角度看&#xff0c;ip地址由两部分组成&#xff0c;网络号和主机号。网络号标识了ip所在的网段&#xff0c;主机号标识了…...

随笔 漫游互联网

网络编程基础&#xff1a;漫游互联网 温故而知新&#xff0c;可以为师矣。互联网我们可以想象成一个立体的网状结构&#xff0c;由一个一个的小网络组成的网状结构&#xff0c;在一个一个小网络中通过一台一台机器组成&#xff0c;经过几十年的发展终于有了今天这个样子。谈论…...

8.9K Star,开源自托管离线翻译引擎

Hi&#xff0c;骚年&#xff0c;我是大 G&#xff0c;公众号「GitHub 指北」会推荐 GitHub 上有趣有用的项目&#xff0c;一分钟 get 一个优秀的开源项目&#xff0c;挖掘开源的价值&#xff0c;欢迎关注。 在全球化的今天&#xff0c;跨语言交流已成为日常需求&#xff0c;然…...

MySQL基础之DML

MySQL基础之DML 语法不区分大小写 分类 DD(definition)L 定义DM(manipulation)L 操作DQ(query)L 查询DC(control)L 控制 添加数据 # 指定字段添加数据(一条)insert into 表名(字段1,字段2,...) values(值1,值2,...);# 全部字段添加数据(一条)insert into 表名 values(值1,值…...

男单新老对决:林诗栋VS马龙,巅峰之战

听闻了那场激动人心的新老对决&#xff0c;不禁让人热血沸腾。在这场乒乓球的巅峰之战中&#xff0c;林诗栋与马龙的对决无疑是一场视觉与技术的盛宴。 3:3的决胜局&#xff0c;两位选手的每一次挥拍都充满了策略与智慧&#xff0c;他们的每一次得分都让人心跳加速。 林诗栋&am…...