上海短视频拍摄制作公司/网站首页的优化

上海短视频拍摄制作公司,网站首页的优化,万网有网站建设吗,网站建设 尚品中国🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

🧑 博主简介:CSDN博客专家历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程高并发设计Springboot和微服务,熟悉LinuxESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于分享所学,希望通过我的实践经历和见解,启发他人的创新思维。在这里,我希望能与志同道合的朋友交流探讨,共同进步,一起在技术的世界里不断学习成长。
技术合作请加本人wx(注明来自csdn):foreast_sea

在这里插入图片描述


在这里插入图片描述

文章目录

  • Python进阶编程总结
    • 函数式编程
    • 面向对象
      • 变量
      • 方法(存储在内存中)
      • 属性(@property def func(self))
      • 创建类的两种方法
      • 使用枚举类(枚举类不可比较大小,但是同一枚举类的成员可以做等值is / not is判断)
      • 定义枚举类
    • 高级面向对象
      • 元类types
      • 元类type构造对象
      • 使用Slot限制添加属性
      • 装饰器
      • python垃圾回收机制
    • python 异常(Exception)、调试(Debug)、回溯(Traceback)
      • 异常(Exception)
        • 常见的异常:
      • 调试(Debug)
        • 单元测试
        • 文档测试(doctest)
      • 回溯(Traceback)
    • with 用法
    • f_string 处理
    • 数组复制的5种方法

Python进阶编程总结

Python 作为一种功能强大且广泛应用的编程语言,其进阶编程领域蕴含着丰富的知识与技巧。在当今数字化快速发展的时代,深入掌握 Python 进阶编程对于提升开发效率、优化代码质量以及应对复杂项目需求有着至关重要的意义。

函数式编程提供了一种全新的编程范式,它强调将计算视为函数的求值过程,通过高阶函数、匿名函数等特性,使代码更加简洁灵活且易于维护。而面向对象编程则以类和对象为核心,通过合理定义变量、方法和属性,构建出清晰的程序结构。无论是使用常规方式还是借助枚举类来创建类,都为开发者提供了多样化的选择,以满足不同场景的建模需求。

高级面向对象中的元类、Slot 机制以及装饰器等进一步拓展了 Python 的编程能力。元类能够深入控制类的创建过程,Slot 可有效限制属性添加从而优化内存使用,装饰器则为代码的动态增强提供了便捷手段。同时,理解 Python 的垃圾回收机制有助于更好地管理内存资源。
在程序运行过程中,异常处理、调试与回溯是保障程序稳定性和可维护性的关键环节。熟悉常见异常类型能让我们快速定位和解决问题,单元测试和文档测试为代码质量保驾护航,回溯则清晰呈现错误发生的路径。此外,with 用法简化了资源管理,f_string 提供了高效的字符串格式化方式,数组复制的多种方法也为数据处理提供了更多灵活性。

本文将深入探讨 Python 进阶编程的这些核心要点,帮助读者全面提升 Python 编程水平,更好地应对实际开发中的各种挑战。

函数式编程

  • 高阶函数(参数里有函数类型)

map/reduce(functools.reduce())
filter
sorted

  • 返回函数(返回函数类型)
  • 匿名函数(lambda
  • 装饰器(@:有参装饰器、无参装饰器,functools.wraps(function)
  • 偏函数(functools.partor(function[,args,**kwords])

面向对象

变量

1.静态字段
2.普通字段(self.value)

方法(存储在内存中)

1.普通方法def func(self[,args])
2.类方法(@classmethod def func(cls[,args]))
3.静态方法(@staticmethod def func())

属性(@property def func(self))

1.静态字段
2.装饰类

经典装饰器
新装饰器(使用方法模拟成员变量以及对成员变量的操作)

方法一
继承object

@property 			object.funcName //user funcName to get the function return value like member value
@funcName.setter 	object.func = value
@funcName.deleter 	del object.funcName

方法二
创建property对象的静态字段

pro = property(get_value(),set_value(),del_value(),__doc__)
obj = Object()
ov = obj.pro
obj.pro = value
del obj.pro
obj.pro.__doc__

类的特殊成员

  • __doc__ 表示类的描述信息

  • __name__类名

  • __bases__类的所有父类构成的元组:tuple,不包含该类的type (类名即type类型使用(my_class,)可获得该类名的元组)

  • __mro__类的继承顺序包含类本身<class ‘main.My_class’>,

  • __module__ 表示当前操作的对象在那个模块 packages.module

  • __class__ 表示当前操作的对象的类 packages.module.class

  • __init__() 类的构造方法

  • __del__() 类的析构方法

  • __call__() 对象的方法 obj() self()

  • __getattr__()当访问obj不存在的属性时会调用该方法

    getattr(obj, name, value) ==> obj.name 不存在该属性返回value

    name是函数name()需要添加@property 描述符

  • __dict__ 类或对象中的所有成员

  • __str__ 将类格式化成字符串 print(obj) 时调用,即toString()方法

  • __repr__ 将类格式化成字符串 print(obj) 时调用,和 __str__ 的区别:更适合从编程语言上理解

print(obj) [output:] class_name.method(self, arg1, arg2, ...)
  • __getitem__ 用于索引操作[num],获取数据

  • __setitem__ 用于索引操作[num],设置数据

  • __delitem__ 用于索引操作[num],删除数据

class mydict(object):def __getitem__(self, key):return self.keydef __setitem__(self, key, value):self.key = valuedef __delitem__(self, key):del self.keyobj = mydict()result = obj[key]obj['key'] = valuedel obj['key']

实现切片操作

__getitem__(self, n)传入的参数n 可能是int也可能是slice

class Fib(object):
def __getiter__(self, n):if isinstance(n, int):a, b = 1, 1for x in range(n):a, b = b, a + breturn aif isinstanece(n, slice):l = []slice.start = 0 if (slice.start is None)a, b = 1, 1for x in range(n.stop):if (x >= n.start and (x - n.start)%n.step == 0):l.append(a)a, b = b, a+breturn l
  • __getslice__ (self, i, j) obj[-1:1]

  • __setslice__ (self, i, j, sequence) obj[0:1] = [11,22,33,44]

  • __delslice__ (self, i, j) del obj[0:2]

  • __iter__ 迭代器

  • __next__ 配合__iter__实现类的interable属性

  • __new__方法__new__(cls, name, bases, attrs) 类准备将自身实例化时调用,在__init__()调用之前调用__new__(),该方法是一个类方法@classmethod

    cls:当前准备创建的类的对象:type

    name:类的名字:str

    bases:类继承的父类集合:class

    attrs:类的方法集合:dict

  • __metaclass__ 该属性定义一个类的元类,即表示类该有哪个类(元类)来实例化

创建类的两种方法

1.普通方法

class Object(object):def func(self):print('hello world!')
object = Object()

2.特殊方法(元类type构造对象)

def func(self):print('Hello world!')object = type('Object', (object,), {'func':func})
#arg1:str 类名 ;arg2:tuple 基类; arg3:dict 成员;

类的创建过程
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
【CODE】

class MyType(type):def __init__(self, what, bases=None, dict=None):super(MyType, self).__init__(what, bases, dict)def __call__(self, *args, **kwargs):obj = self.__new__(self, *args, **kwargs)self.__init__(obj)
class Foo(object):__metaclass__ = MyTypedef __init__(self, name):self.name = namedef __new__(cls, *args, **kwargs):return object.__new__(cls, *args, **kwargs)
# 第一阶段:解释器从上到下执行代码创建Foo类
# 第二阶段:通过Foo类创建obj对象
obj = Foo()

使用枚举类(枚举类不可比较大小,但是同一枚举类的成员可以做等值is / not is判断)

from enum import Enum
month = Enum('Mouth',('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
for name ,member in month.__members__.items():print(f'{name}=>{member}=>{member.value}')

定义枚举类

from enum import Enum, unique
@unique#unique装饰器帮助检查Enum内部字段,保证字段不重复
class My_weekday(Enum):Sun = 0Mon = 1Tue = 2Wed = 3Thu = 4Fri = 5Sat = 6 
my_weekday = My_weekday()#my_weekday.Sun
print(my_weekday.Sun)#my_weekday.Sun
print(my_weekday['Sun'])#my_weekday.Sun
print(my_weekday(0))#my_weekday.Sun
print(my_weekday.Sun.value)#0
for name, member in my_weekday.__members__.item():print(f'{name} {member} {member.value}')
【output】
"""
Sun  My_weekday.Sun 0
Mon  My_weekday.Mon 1
Tue  My_weekday.Tue 2
Wed  My_weekday.Wed 3
Thu  My_weekday.Thu 4
Fri  My_weekday.Fri 5
Sat  My_weekday.Sat 6
"""

高级面向对象

元类types

动态地给对象添加方法(MethodType(func[, object/None], Object))

from types import MethodTypedef func(self, value):self.age = value
class Student(object):def __init__(self,name):self.name = name
student = Student('Bob')
student.age_setter = MethodType(age_setter,func)
student.age_setter(21)
print(f'{student.name}is {student.age} years old.')

动态的给类添加方法

def func(self, value):self.age = value
class Student(object):def __init__(self,name):self.name = name
Student.age_setter = func
Student.age_setter = MethodType(func, None, Student)
student = Student('Bob')
student.age_setter(21)
print(f'{student.name}is {student.age} years old.')

元类type构造对象

def func(self):print('Hello world!')
object = type('Object', (object,), {'func':func})
#arg1:str 类名 ;arg2:tuple 基类; arg3:dict('a' = a, 'b' = b...) 类变量/静态字段;

使用Slot限制添加属性

slot是一个特殊静态字段,tuple类型.slot只对当前类起作用,对其子类并不起作用

class Student(object):__slot__ = ('name', 'age')def __init__(self, name, age):super(Student,self).__init__()self.name = nameself.age = age@propertydef name(self):return self.name@name.setterdef name(self,name):self.name = name@propertydef age(self):return self.age@age.setterdef age(self,name):self.age = age
s1 = Student('Bill',21)
s1.score = 89                [ERROR]:不能添加score字段

装饰器

一般装饰器(@decorate)

描述符装饰器

实现了__get__() __set__() __del__()@property @func.setter @func.deleter

数据描述符(实现了get set)
非数据描述符(只实现get 没有实现set)

python垃圾回收机制

  • 引用计数器(当一个对象被引用机会增加其引用计数,当不被引用时减少引用计数,减少至0时在合适的时机下内存被回收)
  • 循环垃圾收集器(针对循环引用)
  • 手动内存回收 del obj.obj (将引用计数置零,只有最后引用该内存的对象释放后才执行析构函数__del__())

python 异常(Exception)、调试(Debug)、回溯(Traceback)

异常(Exception)


try:pass
except Exception as e:raise
else:pass
finally:pass
常见的异常:
异常名称描述
BaseException所有异常K的基类
SystemExit解释器请求退出
KeyboardInterrupt用户自行中断执行^C
Exception常规错误的基类
StopIteration迭代器溢出
GeneratorExit生成器发生异常后通知退出
StandardError所有标准异常类的基类
ArithmeticError所有数值计算错误的基类
FloattingPointError浮点计算错误
OverflowError数值运算溢出
ZeroDivisionError除[,取模]by0
AssertionError断言语句失败
AttributeError对象缺失该属性
EOFError没有内建输入,到达EOF标记
EnvironmentError操作系统错误的基类
IOError输入/输出操作失败
OSError操作系统错误
WindowsError系统调用失败
ImportError导入模块/对象失败
LookupError无效数据查询的基类
IndexError序列中没有此索引
KeyError映射中没有此键
MemoryError内存溢出(对于Python解释起来说非致命)
NameError未声明/初始化对象
UnboundLocalError访问未初始化的本地变量
ReferenceError试图访问已被回收器回收的对象(弱引用)
RuntimeError一般运行时错误
NotImplementedError尚未实现的方法
SyntaxErrorPython语法错误
IndentationError缩进错误
TabErrorTab和Space混用
SystemError一般的解释器系统错误
TypeError对类型无效的操作
ValueError传入无效的参数
UnicodeErrorUnicode相关错误
UnicodeDecodeErrorUnicode解码时的错误
UnicodeEncodeErrorUnicode编码时的错误
UnicodeTranslateErrorUnicode转码时的错误
Warning警告的基类
DeprecationWarning关于被弃用的特性的警告
FutureWarning关于构造将来语义会有改变的警告
OverflowWarning旧的关于自动提升为长整型(long)的警告
pendingDeprecationWarning关于特性将会被废弃的警告
RuntimeWarning可疑的运行时行为的警告
SysntaxWarning可疑语法的警告
UserWarning用户代码生成的警告

调试(Debug)

单元测试

单元测试的类在unittest包中使用时直接导入包import unittest.

import unittest
class TestClass(unitest.TestCase):def setUp(self):passdef tearDown(self):passdef test_init(self):self.assertEqual()self.assertTrue()self.assertRaises()def test_func1(self):passdef test_func2(self):pass
文档测试(doctest)

Python的文档测试模块可以直接提取注释中的代码并执行

class Dict(dict):'''Simple dict but also support access as x.y style.>>> d1 = Dict()>>> d1['x'] = 100>>> d1.x100>>> d1.y = 200>>> d1['y']200>>> d2 = Dict(a=1, b=2, c='3')>>> d2.c'3'>>> d2['empty']Traceback (most recent call last):...KeyError: 'empty'>>> d2.emptyTraceback (most recent call last):...AttributeError: 'Dict' object has no attribute 'empty''''def __init__(self, **kw):super(Dict, self).__init__(**kw)def __getattr__(self, key):try:return self[key]except KeyError:raise AttributeError(r"'Dict' object has no attribute '%s'" % key)def __setattr__(self, key, value):self[key] = valueif __name__=='__main__':import doctestdoctest.testmod()

回溯(Traceback)

代码
以下代码功能相同

import tracebacktraceback.print_exc()
traceback.format_exc()
traceback.print_exception(*ss.exc_info())

with 用法

事前事后用with(前后文管理器)

【version 1.0file = open("/src/tmp.txt")
data = file.read()
file.close()  
#可能会忘记关闭句柄
#可能会出现异常
【version 2.0file = open("/src/tmp.txt")
try:data = file.read()
finally:file.close()
#总体结构安全性都有提升
【version 3.0 withwith open("/src/tmp.txt") as file:data = file.read()

with 对处理对象需要自定义__enter__() __exit__()方法

class Sample:
def __enter__(self):print('function:enter')return "SAMPLE"def __exit__(self, type, value, trace):print('function:exit')
def get_sample():return Sample()with get_sample() as sample:print(f'{sample}do somethings')[result:]
function:enter
SAMPLE do somethings
function:exitclass Sample:
def __init__(self, value):self.num = value
def __enter__(self):print('function:enter')return selfdef __exit__(self, type, value, trace):print('function:exit')print('m_type:{type}\tm_value:{value}\ttrace:{trace})def func(self, value):return self.num/value
def get_sample(num):
return Sample(num)with get_sample() as sample:print(f'{sample}do somethings')num = input("input a number:")sample.func(num)#执行顺序:
#with 后面的函数/或type对象使用类的__init__()创建出一个对象,然后调用__enter__()方法将返回值赋给as 后的变量。在with执行完毕后调用类中的__exit__()方法,清理或关闭句柄。
  • open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

f_string 处理

__str__,__repr__

  • __str __()__repr __()方法处理对象如何呈现为字符串,因此您需要确保在类定义中包含至少一个这些方法。如果必须选择一个,请使用__repr __(),因为它可以代替__str __()
  • __str __()返回的字符串是对象的非正式字符串表示,应该可读。__repr __()返回的字符串是官方表示,应该是明确的。调用str()repr()比直接使用__str __()__repr __()更好。
  • 默认情况下,f字符串将使用__str __(),但如果包含转换标志!r,则可以确保它们使用__repr __()
f"{new_comedian}"
'This __str__'
f"{new_comedian!r}"
'This __repr__'

数组复制的5种方法

python中简单将一个数组赋值给另一个数组,实际上是两个引用指向同一块内存,可能无法达到预期目的.因此这里整理了几种数组拷贝复制的方法.

  1. 切片
newArr = oldArr[:]
  1. list()
newArr = list(oldArr)
  1. Arr*1
newArr = oldArr*1
  1. copy.copy()浅拷贝方法
newArr = copy.copy(oldArr)
newArr = oldArr.copy()
  1. copy.deepcopy()深拷贝方法
newArr = copy.deepcopy(oldArr)

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

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

相关文章

Redis复制(replica)主从模式

Redis主从复制 Redis 的复制&#xff08;replication&#xff09;功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品&#xff0c;其中被复制的服务器为主服务器&#xff08;master&#xff09;&#xff0c;而通过复制创建出来的服务器复制品则为从服务器&#…

R语言零基础系列教程-03-RStudio界面介绍与关键设置

代码、讲义、软件回复【R语言03】获取。 设置位置: 菜单栏 - Tools - Blobal Options 设置 通用设置 设置面板左侧General选项 版本选择: 一般只用一个版本即可 默认工作目录设置: 你希望RStudio打开时是基于哪个目录进行工作可以不设置, 因为脚本一般都是放置在特定项目路…

微信小程序刷题逻辑实现:技术揭秘与实践分享

页面展示&#xff1a; 概述 在当今数字化学习的浪潮中&#xff0c;微信小程序以其便捷性和实用性&#xff0c;成为了众多学习者刷题备考的得力工具。今天&#xff0c;我们就来深入剖析一个微信小程序刷题功能的实现逻辑&#xff0c;从代码层面揭开其神秘面纱。 小程序界面布局…

JVM--垃圾回收

垃圾回收的概念 垃圾回收主要针对的是堆中的对象&#xff0c;堆是一个共享的区域&#xff0c;创建的对象和数组都放在这个位置。但是我们不能一直的创建对象&#xff0c;也不是所有的对象能一直存放&#xff0c;如果不进行垃圾回收&#xff0c;内存迟早会耗尽&#xff0c;及时…

【教程】继承中的访问控制 C++

目录 简介public&#xff0c;protected 和 private继承中的 public&#xff0c;protected 和 private示例 简介 在 C 中派生类可以通过 public&#xff0c;protected 和 private 三种修饰符决定基类成员在派生类中的访问级别 public&#xff0c;protected 和 private 公有成…

【2025】基于python+django的驾校招生培训管理系统(源码、万字文档、图文修改、调试答疑)

课题功能结构图如下&#xff1a; 驾校招生培训管理系统设计 一、课题背景 随着机动车保有量的不断增加&#xff0c;人们对驾驶技能的需求也日益增长。驾校作为驾驶培训的主要机构&#xff0c;面临着激烈的市场竞争和学员需求多样化等挑战。传统的驾校管理模式往往依赖于人工操作…

要登录的设备ip未知时的处理方法

目录 1 应用场景... 1 2 解决方法&#xff1a;... 1 2.1 wireshark设置... 1 2.2 获取网口mac地址&#xff0c;wireshark抓包前预过滤掉自身mac地址的影响。... 2 2.3 pc网口和设备对接... 3 2.3.1 情况1&#xff1a;... 3 2.3.2 情…

go 安装swagger

1、依赖安装&#xff1a; # 安装 swag 命令行工具 go install github.com/swaggo/swag/cmd/swaglatest# 安装 gin-swagger 和 swagger 文件的依赖 go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files 2、测试 cmd中输入&#xff1a; swag -v 如果…

网络安全反渗透 网络安全攻防渗透

网络渗透防范主要从两个方面来进行防范&#xff0c;一方面是从思想意识上进行防范&#xff0c;另一方面就是从技术方面来进行防范。 1.从思想意识上防范渗透 网络攻击与网络安全防御是正反两个方面&#xff0c;纵观容易出现网络安全事故或者事件的公司和个人&#xff0c;在这些…

技术视界|构建理想仿真平台,加速机器人智能化落地

在近期的 OpenLoong 线下技术分享会 上&#xff0c;松应科技联合创始人张小波进行了精彩的演讲&#xff0c;深入探讨了仿真技术在机器人智能化发展中的关键作用。他结合行业趋势&#xff0c;剖析了现有仿真平台的挑战&#xff0c;并描绘了未来理想仿真系统的设计理念与实现路径…

环境配置 | 5分钟极简Git入门:从零上手版本控制

你是否刚接触Git&#xff1f;别担心&#xff01;这篇指南将用最简单的步骤带你掌握Git核心操作&#xff0c;快速开启版本控制之旅&#xff01;✨ 1.git在win10上的下载安装 1.1.下载git 打开官方网站 Git - Downloadshttps://git-scm.com/downloads ​ ​​ 1.2.git安装 …

计算机网络——DNS

一、什么是DNS&#xff1f; DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09; 是互联网的核心服务&#xff0c;负责将人类可读的域名&#xff08;如 www.baidu.com&#xff09;转换为机器可识别的 IP地址&#xff08;如 14.119.104.254&#xff09;。它像一…

SQLark 实战 | 如何从Excel、csv、txt等外部文件进行数据导入

数据导入导出是应用开发者在平时开发中最常用的操作之一&#xff0c;SQLark 里提供了方便的图形化界面来完成导入导出。本文先和大家分享如何从 Excel、csv、txt 等外部文件导入数据到数据库表中。 &#x1f449; 前往 SQLark 官网&#xff1a;www.sqlark.com 下载全功能免费版…

钉钉(excel)能让表格中不是‘北京’的字符串自动加亮显示(方便查看)以及隔行填充严颜色是斑马色(方便查看)嘛

在钉钉在线表格中&#xff0c;虽然功能相对Excel有所简化&#xff0c;但仍然可以通过条件格式实现对特定内容的高亮显示。以下是具体步骤&#xff1a; 一、在钉钉在线表格中设置条件格式 1. 打开钉钉在线表格 登录钉钉&#xff0c;进入“钉钉在线表格”应用。 打开你需要操作…

Windows根据文件名批量在文件夹里查找文件并复制出来,用WPF实现的详细步骤

项目前言 在日常工作和生活中&#xff0c;我们常常会遇到需要从大量文件中根据文件名批量查找特定文件并复制到指定位置的情况。手动一个个查找和复制文件不仅效率低下&#xff0c;还容易出错。使用 Windows Presentation Foundation (WPF) 可以创建一个用户友好的图形界面应用…

探索Maas平台与阿里 QWQ 技术:AI调参的魔法世界

摘要&#xff1a;本文介绍了蓝耘 Maas 平台在人工智能领域的表现及其核心优势&#xff0c;包括强大的模型支持、高效的资源调度和友好的操作界面。文章还探讨了蓝耘 Maas 平台与阿里 QWQ 技术的融合亮点及应用拓展实例&#xff0c;并提供了调参实战指南&#xff0c;最后对蓝耘 …

Python 实现大文件的高并发下载

项目背景 基于一个 scrapy-redis 搭建的分布式系统&#xff0c;所有item都通过重写 pipeline 存储到 redis 的 list 中。这里我通过代码演示如何基于线程池 协程实现对 item 的中文件下载。 Item 结构 目的是为了下载 item 中 attachments 保存的附件内容。 {"crawl_tim…

MySQL与Canal、RabbitMQ集成指南

MySQL 部分 1. 查看是否开启 binlog MySQL 8 默认开启 binlog。可以通过以下命令查看是否开启&#xff1a; SHOW VARIABLES LIKE log_bin;如果返回结果为 ON&#xff0c;则表示 binlog 已开启。 Variable_nameValuelog_binON 2. 若未开启 binlog&#xff0c;则需手动配置 …

X86 RouterOS 7.18 设置笔记十:上海电信IPTV使用msd_lite实现组播转单拨

X86 j4125 4网口小主机折腾笔记五&#xff1a;PVE安装ROS RouterOS X86 RouterOS 7.18 设置笔记一&#xff1a;基础设置 X86 RouterOS 7.18 设置笔记二&#xff1a;网络基础设置(IPV4) X86 RouterOS 7.18 设置笔记三&#xff1a;防火墙设置(IPV4) X86 RouterOS 7.18 设置笔记四…

LeetCode 解题思路 17(Hot 100)

解题思路&#xff1a; 找到链表中点&#xff1a; 使用快慢指针法&#xff0c;快指针每次移动两步&#xff0c;慢指针每次移动一步。当快指针到达末尾时&#xff0c;慢指针指向中点。递归分割与排序&#xff1a; 将链表从中点处分割为左右两个子链表&#xff0c;分别对这两个子…