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

Python进阶编程总结

🧑 博主简介: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)

相关文章:

Python进阶编程总结

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...

【第 1 章 初识 C 语言】1.8 使用 C 语言的 7 个步骤

目录 1.8 使用 C 语言的 7 个步骤 1.8.1 第 1 步&#xff1a;定义程序的目标 1.8.2 第 2 步&#xff1a;设计程序 1.8.3 第 3 步&#xff1a;编写代码 1.8.4 第 4 步&#xff1a;编译 1.8.5 第 5 步&#xff1a;运行程序 1.8.6 第 6 步&#xff1a;测试和调试程序 1.8.…...

vue3 实现音频转文字组件

使用recorder-core第三方插件实现音频转纯文本的功能。 工具类文件 recoder.ts import Recorder from recorder-core import recorder-core/src/engine/wav import recorder-core/src/extensions/lib.fft.js import recorder-core/src/extensions/frequency.histogram.view i…...

MySQL各种锁详解

什么是锁&#xff1f; 1.1 锁的解释 计算机协调多个进程或线程并发访问某一资源的机制。 1.2 锁的重要性 在数据库中&#xff0c;除传统计算资源&#xff08;CPU、RAM、I/O等&#xff09;的争抢&#xff0c;数据也是一种供多用户共享的资源。 如何保证数据并发访问的一致性&…...

前端工程 Node 版本如何选择

1. Node 与 Npm 版本对应 这是一个必知必会的问题&#xff0c;尤其是对于维护那些老掉牙、一坨坨、非常大的有着长期历史的老破大工程。 1.1. package-lock.json 版本 首先你要会看项目的 package-lock.json 文件中的 lockfileVersion 版本号&#xff0c;这对于 NPM 安装来说…...

新增白名单赋予应用安装权限

目录 相关问题 具体实现 相关问题 安装app到/data/分区时&#xff0c;如何在安装阶段就赋予权限&#xff0c;无需请求权限 具体实现 frameworks/base/core/res/res/values/config.xml <!-- For whitelis apk --><string-array translatable"false" nam…...

学习Python的笔记14--迭代器和生成器

1.迭代器&#xff08;Iterator&#xff09; 概念&#xff1a; 迭代意味着重复多次&#xff0c;就像循环一样。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问&#xff0c;直到所有的元素被访问完结束。 迭代器只能往前不会后退。 1.iter…...

【Golang】Golang基础语法之面向对象:结构体和方法

面向对象——结构 Go 仅支持封装&#xff0c;不支持继承和多态&#xff1b;继承和多态要做的事情交给接口来完成&#xff0c;即——面向接口编程。Go 只有 struct&#xff0c;没有 class。 定义一个最简单的树节点&#xff08;treeNode&#xff09;结构&#xff0c;方法如下&…...

重磅升级:OpenAI o1模型上手实测,从芯片架构分析到象棋残局判断的全能表现

引言 昨日&#xff0c;在圣诞节系列发布会的第一天&#xff0c;OpenAI终于给我们带来了令人振奋的更新&#xff0c;这些更新有望塑造AI互动的未来。备受期待的OpenAI o1正式版的推出&#xff0c;标志着ChatGPT体验的重大进化&#xff0c;宣告了AI驱动应用新时代的开始。o1现已可…...

Pandas处理和分析嵌套JSON数据:从字符串到结构化DataFrame

在数据分析领域&#xff0c;我们经常遇到需要从非结构化数据中提取有用信息的场景。特别是当数据以JSON字符串的形式出现时&#xff0c;如何有效地将其转换为结构化的表格形式&#xff0c;以便进行进一步的分析和处理&#xff0c;成为了一个常见的挑战。本文将通过一个具体的例…...

《ODIN: A Single Model for 2D and 3D Segmentation》CVPR2024

斯坦福和微软&#xff1a; 代码链接&#xff1a;ODIN: A Single Model For 2D and 3D Perception 论文链接&#xff1a;2401.02416 摘要 这篇论文介绍了ODIN&#xff08;Omni-Dimensional INstance segmentation&#xff09;&#xff0c;一个能够同时处理2D RGB图像和3D点云…...

第40节 在ArkTS中实现socket功能

1. 基本概念 在 ArkTS 中实现 Socket 功能主要涉及到网络通信中的套接字&#xff08;Socket&#xff09;编程。Socket 是一种用于在不同设备&#xff08;如客户端和服务器&#xff09;之间进行双向通信的接口&#xff0c;它允许应用程序发送和接收数据。在网络编程中&#xf…...

Ruby On Rails 笔记1——Rails 入门

突然想跟着官方文档把Ruby On Rails过一遍&#xff0c;把一些有用的记下来就可以一直看了&#xff0c;do它! https://guides.rubyonrails.org/v7.2/ 注&#xff1a;官网是英文文档&#xff0c;我自己翻译了一下&#xff0c;不确保完全准确&#xff0c;只供自己学习开发使用。 …...

npm, yarn, pnpm之间的区别

前言 在现代化的开发中&#xff0c;一个人可能同时开发多个项目&#xff0c;安装的项目越来越多&#xff0c;所随之安装的依赖包也越来越臃肿&#xff0c;而且有时候所安装的速度也很慢&#xff0c;甚至会安装失败。 因此我们就需要去了解一下&#xff0c;我们的包管理器&#…...

Uniapp的App环境下使用Map获取缩放比例

概述 目前我试过的就是你用vue后缀是拿不到比例的你可以用nvue当然uniapp的uvue应该是更加可以的我使用的是高德所以你得在高德的后台声请原生的Android的key才可以如果是vue3的开发模式的话不用使用this来获取当前对象使用scale对象来接受和改变缩放比例会比较友好然后直接走…...

[免费]基于Python的Django在线(生鲜)商城(电子商城)管理系统【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的基于Python的Django在线(生鲜)商城(电子商城)管理系统&#xff0c;分享下哈。 项目视频演示 【免费】基于Python的Django在线(生鲜)商城(电子商城)管理系统 Python毕业设计_哔哩哔哩_bilibili 项目介绍 随…...

Go 1.19.4 HTTP编程-Day 20

1. HTTP协议 1.1 基本介绍 HTTP协议又称超文本传输协议&#xff0c;属于应用层协议&#xff0c;在传输层使用TCP协议。HTTP协议属是无状态的&#xff0c;对事务处理没有记忆能力&#xff0c;如果需要保存状态需要引用其他技术&#xff0c;如Cookie。HTTP协议属是无连接的&…...

基于微软云第一个大模型程序Java和python实现

1 注册一个微软云账号 按照提示一步一步注册&#xff0c;注册过程中&#xff0c;注册微软云账号需要visa卡。可以在某宝花钱30元买下。 2 部署模型 搜索openAI 创建资源组 部署一个模型 这个后面代码会使用 3 Java 实现 pom 依赖 <dependency><groupId>com…...

【5G】5G目标和标准化 5G targets and standardization

5G标准是在第三代合作伙伴关系项目&#xff08;3GPP&#xff0c;3rd Generation Partnership Project&#xff09;中定义的&#xff0c;实际的标准制定工作由参与3GPP活动的区域标准机构成员共同推进。目前&#xff0c;超过600家公司通过各自的地区标准组织成为3GPP的成员。然而…...

KernelShark在ubuntu24.04.01的编译

KernelShark在ubuntu24.04.01的编译 写在前面具体过程装ubuntu24.04.01安装depends下载代码如何编译cmake 输出make 输出 如何安装 初步启动Add the User to the perf Group 简单的使用trace-cmd抓包 来看我的文章&#xff0c;必有所得。 平凡中&#xff0c;总有我帮您踩过的坑…...

【Flutter】WillPopScope组件-监听物理返回键事件自定义返回事件

WillPopScope(onWillPop: () async {if ( flutterWebViewPlugin ! null && await flutterWebViewPlugin.canGoBack() true) {flutterWebViewPlugin!.goBack();return false; // 阻止默认的返回行为} else {return true; // 允许默认的返回行为}},child: Scaffold(),);…...

深度学习每周学习总结J8(Inception V1 算法实战与解析 - 猴痘识别)

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制 目录 0. 总结Inception V1 简介1. 设置GPU2. 导入数据及处理部分3. 划分数据集4. 模型构建部分5. 设置超参数&#xff1a;定义损失函数&am…...

Django模板系统

1.常用语法 Django模板中只需要记两种特殊符号&#xff1a; {{ }}和 {% %} {{ }}表示变量&#xff0c;在模板渲染的时候替换成值&#xff0c;{% %}表示逻辑相关的操作。 2.变量 {{ 变量名 }} 变量名由字母数字和下划线组成。 点&#xff08;.&#xff09;在模板语言中有…...

【JavaWeb后端学习笔记】MySQL的数据操作语言(Data Manipulation Language,DML)

MySQL DML 0、准备表结构1、添加数据1.1 指定字段添加数据&#xff08;单条&#xff09;1.2 全部字段添加数据&#xff08;单条&#xff09;1.3 指定字段添加数据&#xff08;批量&#xff09;1.4 全部字段添加数据&#xff08;批量&#xff09; 2、修改数据3、删除数据 MySQL的…...

【SpringBoot】Day10-09 动态SQL-XML文件

动态SQL-XML文件的三点规范 1.XML映射文件的名称与Mapper接口名称保持一致&#xff0c;并且将XML映射文件和Mapper接口放置在相同包下&#xff08;同包同名&#xff09;- 在项目开发当中&#xff0c;一般都是一个接口对应一份儿映射配置文件&#xff1b; 2.XML映射文件的namesp…...

Linux絮絮叨(三) Ubuntu桌面版添加中文拼音输入法

步骤很详细&#xff0c;直接上教程 一. 配置安装简体拼音输入法 #安装相应的平台支持包 sudo apt install ibus-gtk ibus-gtk3# 安装简体拼音输入法 sudo apt install ibus-pinyin安装完成如果下面的步骤找不到对应输入法可以重启一下&#xff0c;一般不需要 二. 添加简体拼音…...

rockit 学习、开发笔记(六)(VENC)

前言 上节我们讲到了VDEC解码模块&#xff0c;那当然少不了VENC编码模块了&#xff0c;一般有编解码的需求都是为了压缩视频的大小&#xff0c;方便减少传输所占用的带宽。 概述 VENC 模块&#xff0c;即视频编码模块。本模块支持多路实时编码&#xff0c;且每路编码独立&am…...

Python+Django框架山东济南景点数据可视化系统网站作品截图和开题报告参考

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…...

【C#】键值对的一种常见数据结构Dictionary<TKey, TValue>

在 C# 中&#xff0c;Dictionary<TKey, TValue> 是一个 键值对&#xff08;key-value&#xff09;集合&#xff0c;是一种非常常见的数据结构。它允许通过 键&#xff08;key&#xff09;来快速查找与之相关的 值&#xff08;value&#xff09;。你可以将其类比为一个映射…...

SQL Server:调用的目标发生了异常。(mscorlib)

我之前安装的SQL Server是2014版本&#xff0c;SSMS运行也很流畅&#xff0c;有一次有个同事让我链接云服务器SQL地址&#xff0c;直接报上图的错误&#xff0c;把我弄的一愣一愣的。 后面才发现&#xff0c;这是版本太低导致的&#xff0c;但是你如果使用Navicat是没有问题的…...

windows 上ffmpeg编译好的版本选择

1. Gyan.dev Gyan.dev 是一个广受信赖的 FFmpeg 预编译库提供者&#xff0c;提供多种版本的 FFmpeg&#xff0c;包括静态和动态链接版本。 下载链接: https://www.gyan.dev/ffmpeg/builds/ 特点&#xff1a; 提供最新稳定版和开发版。 支持静态和共享&#xff08;动态&…...

前端工程化面试题(一)

如何使用 Docker 部署前端项目&#xff1f; 使用 Docker 部署前端项目通常涉及以下几个步骤&#xff1a; 创建项目&#xff1a;首先&#xff0c;需要在本地创建并配置好前端项目。 准备 Docker 文件&#xff1a; .dockerignore&#xff1a;这个文件用于排除不需要上传到 Dock…...

Java设计模式笔记(二)

十四、模版方法模式 1、介绍 1&#xff09;模板方法模式(Template Method Pattern)&#xff0c;又叫模板模式(Template Patern)&#xff0c;在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需重写方法实现&#xff0c;但调用将以抽象类中定义的方式进行。 2&…...

vscode(一)安装(ubuntu20.04)

1、更新软件包列表 sudo apt update2、安装依赖包 sudo apt install software-properties-common apt-transport-https wget3、导入Microsoft GPG密钥 wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -4、向系统添加VSCode存储库 sudo…...

C# 命名空间(Namespace)

文章目录 前言一、命名空间的定义与使用基础&#xff08;一&#xff09;定义语法与规则&#xff08;二&#xff09;调用命名空间内元素 二、using 关键字三、嵌套命名空间 前言 命名空间&#xff08;Namespace&#xff09;在于提供一种清晰、高效的方式&#xff0c;将一组名称与…...

云计算介绍_3(计算虚拟化——cpu虚拟化、内存虚拟化、io虚拟化、常见集群策略、华为FC)

计算虚拟化 1.计算虚拟化介绍1.1 计算虚拟化 分类&#xff08;cpu虚拟化、内存虚拟化、IO虚拟化&#xff09;1.2 cpu虚拟化1.3 内存虚拟化1.4 IO虚拟化1.5 常见的集群的策略1.6 华为FC 1.计算虚拟化介绍 1.1 计算虚拟化 分类&#xff08;cpu虚拟化、内存虚拟化、IO虚拟化&#…...

Flutter开发App,编译条件下UI没问题,打包后UI出现问题

刚入门Flutter3个月&#xff0c;终于进入项目打包阶段&#xff0c;发现之前编译环境下都正常的UI&#xff0c;忽然有小部分出现异常&#xff0c;不显示UI部分了。查了2个小时都没发现原因。因为编译环境下&#xff0c;Android、iOS端都正常显示。但是进入打包安装后&#xff0c…...

Python+OpenCV系列:Python和OpenCV的结合和发展

PythonOpenCV系列&#xff1a;Python和OpenCV的结合和发展 **引言****Python语言的发展****1.1 Python的诞生与发展****1.2 Python的核心特性与优势****1.3 Python的应用领域** **OpenCV的发展****2.1 OpenCV的起源与发展****2.2 OpenCV的功能特性****2.3 OpenCV的应用场景** *…...

报错 JSON.parse: expected property name or ‘}‘,JSON数据中对象的key值不为字符串

报错 JSON.parse: expected property name or ‘}’ 原因 多是因为数据转换时出错&#xff0c;可能是存在单引号或者对象key值不为string导致 这里记录下我遇见的问题&#xff08;后端给的JSON数据里&#xff0c;对象key值不为string&#xff09; 现在后端转换JSON数据大多…...

Flutter:商品多规格内容总结,响应式数据,高亮切换显示。

如图所示&#xff1a; 代码为练习时写的项目&#xff0c;写的一般&#xff0c;功能实现了&#xff0c;等以后再来优化。 自己模拟的数据结构 var data {id:1,name:精品小米等多种五谷杂粮精品小等多种五谷杂粮,logo:https://cdn.uviewui.com/uview/swiper/1.jpg,price:100.5…...

WPF+LibVLC开发播放器-LibVLC播放控制

接上一篇&#xff1a; LibVLC在C#中的使用 实现LibVLC播放器播放控制 界面 界面上添加一个Button按钮用于控制播放 <ButtonGrid.Row"1"Width"88"Height"24"Margin"10,0,0,0"HorizontalAlignment"Left"VerticalAlignme…...

Mac环境下brew安装LNMP

安装不同版本PHP 在Mac环境下同时运行多个版本的PHP&#xff0c;同Linux环境一样&#xff0c;都是将后台运行的php-fpm设置为不同的端口号&#xff0c;下面将已php7.2 和 php7.4为例 添加 tap 目的&#xff1a;homebrew仅保留最近的php版本&#xff0c;可能没有你需要的版本…...

nodejs后端项目使用pm2部署

nodejs后端项目使用pm2部署 安装pm2 npm install pm2 -g查看版本号 pm2 --version启动项目 pm2 start app.js# 设置别名 pm2 start app.js --name demo停止项目 pm2 stop [AppName] pm2 stop [ID]# 停止所有项目 pm2 stop all重启项目 pm2 restart [AppName] pm2 re…...

【C++】深入理解字符变量取地址的特殊性与内存管理机制详解

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;栈内存中的变量分配&#xff1a;谁先谁后&#xff1f;cout 的输出行为&#xff1a;按顺序执行&#xff0c;按地址递增读取代码执行顺序与内存布局的关系编译器优化的影响 &…...

【银河麒麟操作系统真实案例分享】内存黑洞导致服务器卡死分析全过程

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 现象描述 机房显示器连接服务器后黑屏&#xff…...

蓝桥杯软件赛系列---lesson1

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 我们今天会再开一个系列&#xff0c;那就是蓝桥杯系列&#xff0c;我们会从最基础的开始讲起&#xff0c;大家想要备战明年蓝桥杯的&#xff0c;让我们一起加油。 工具安装 DevC…...

工业异常检测-CVPR2024-新的3D异常数据合成办法和自监督网络IMRNet

论文&#xff1a;https://arxiv.org/pdf/2311.14897v3.pdf 项目&#xff1a;https://github.com/chopper-233/anomaly-shapenet 这篇论文主要关注的是3D异常检测和定位&#xff0c;这是一个在工业质量检查中至关重要的任务。作者们提出了一种新的方法来合成3D异常数据&#x…...

HeidiSQL:MySQL图形化管理工具深度解析

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;HeidiSQL是一款开源的MySQL图形化管理工具&#xff0c;适用于多种数据库系统&#xff0c;如MySQL、MariaDB、SQL Server、PostgreSQL和SQLite。其提供的直观操作界面和丰富的功能简化了数据库操作&#xff0c;包…...

【Redis】深入解析Redis缓存机制:全面掌握缓存更新、穿透、雪崩与击穿的终极指南

文章目录 一、Redis缓存机制概述1.1 Redis缓存的基本原理1.2 常见的Redis缓存应用场景 二、缓存更新机制2.1 缓存更新的策略2.2 示例代码&#xff1a;主动更新缓存 三、缓存穿透3.1 缓存穿透的原因3.2 缓解缓存穿透的方法3.3 示例代码&#xff1a;使用布隆过滤器 四、缓存雪崩4…...

Flask使用Celery与多进程管理:优雅处理长时间任务与子进程终止技巧(multiprocessing)(subprocess)

在许多任务处理系统中&#xff0c;我们需要使用异步任务队列来处理繁重的计算或长时间运行的任务&#xff0c;如模型训练。Celery是一个广泛使用的分布式任务队列&#xff0c;而在某些任务中&#xff0c;尤其是涉及到调用独立脚本的场景中&#xff0c;我们需要混合使用multipro…...