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

python基础学习

缩⼩图像(或称为下采样(subsampled)或降采样(downsampled))的主要⽬的有两个:1、使得图像符合显⽰区域的⼤⼩;2、⽣成对应图像的缩略图。
放⼤图像(或称为上采样(upsampling)或图像插值(interpolating))的主要⽬的是放⼤原图像,从⽽可以显⽰在更⾼分辨率的显⽰设备上。

下采样原理:对于⼀副图像I尺⼨为M N,对起进⾏s倍下采样,即得到(M/s)(N/s)尺⼨的分辨率图像,当然,s应该是M和N的公约数才可以,如果考虑是矩阵形式的图像,就是把原始图像s*s窗⼝内的图像编程⼀个像素,这个像素点的值就是窗⼝内所有像素的均值。
Pk = Σ Ii / s2
上采样原理:图像放⼤⼏乎都是采⽤内插值⽅法,即在原有图像像素的基础上在像素点之间采⽤合适的插值算法插⼊新的元素。
插值算法还包括了传统插值,基于边缘图像的插值,还有基于区域的图像插值。
目标检测:1.给每个像素生成若干锚框
2.通过计算IOU来给锚框分类
3.通过预测偏差和锚框来对预测边界框。
nms有两种:1)把所有的类放在一起,选最大的iou去掉。
2)每一类分开进行nms
提升精读思路:根据数据挑选增强、使用新模型、新优化算法、多个模型融合,测试时使用增强。

SVM:支持向量机,通过一个超平面把数据分类,是一种监督学习,但是往往在实际过程中,数据是不好直接被平面分类的,所以就在应用SVM之前对数据进行非线性变换。在不改变SVM内部工作原理的情况下获得非线性决策边界。

python

最重要的是缩进

变量,字符串,原始字符串,长字符串

  • (如无必要,勿增实体)
  • 里面变量不能以数字开头
  • 单引号、双引号、三引号
  • 转义字符都是以反斜杠开头

在这里插入图片描述

  • \路径里面的双斜杠,就是用反斜杠来转义反斜杠!

  • 在字符串前面加一个原始字符r,表示字符串后的反斜杠都是字符,而不是转义字符

  • 字符串最后是反斜杠,说明表示未完待续,程序不会执行,可以继续写

  • 字符串也可以作乘法输出在这里插入图片描述

条件分支、while循环

  • int()
  • if 条件:
  • else:记住后面都有冒号哦!
  • 在这里插入图片描述
  • is 、is not 判断两个对象的id是否相等的
  • Python3 中,一行可以书写多个语句=》;
  • 也可以多行写一个语句,用反斜杠就可以 \
  • while_条件:
  •   语句

python逻辑运算符

  • and 从左到右计算表达式,若所有的都为真,则返回最后一个值,若存在假,返回第一个假值.同时也是与的逻辑作用 遇假出假
  • or 从左到右计算表达式,只要遇到真值就返回那个真是,如果表达式结束依旧没有遇到真值,就返回最后一个假值.同时也是或的逻辑作用 遇真出真
  • 以上也叫做短路逻辑(short-circuit logic)
  • not 取反,非逻辑作用
  • (10 < cost) and (cost < 50)等价于 10 < cost < 50
  • random.getstate() random.setstate

数字类型

int

python里整除了,最后结果还是以浮点数形式存在
在这里插入图片描述

foalt

  • python中小数是以浮点数形式存放的

  • 在这里插入图片描述

  • 精确计算浮点数

  • decimal.Decimal()实例对象

  • 比较的时候还是要用同一对象进行比较,不能用0.3直接和decimal对象比较,那是不同对象的,会报错。

  • 在这里插入图片描述

  • python科学计数法,e表示10的幂次方

  • 将数字转换为科学计数法
    num = 123456789
    print(“{:.2e}”.format(num)) # 输出为1.23e+08
    在这里插入图片描述
    那个{:.xe}x是表示小数点后几位数字

复数

在这里插入图片描述

  • python是向下取整,int(5.5)=5
  • 取变量类型用instance()、type()

数值运算

在这里插入图片描述

  • //地板除在这里插入图片描述
    在这里插入图片描述- [ ] 用int转换小数字符串的时候,会截断
    在这里插入图片描述
  • pow (x,y,z) y可以为负数,就做log函数,还有z是求余的运算。
    在这里插入图片描述

布尔类型

  • 值为false
    在这里插入图片描述
  • 可以这样理解,bool类型是特殊的整数类型
  • python所有对象都能进行真值测试

运算优先级

在这里插入图片描述

  • 当学生只能硬记,由上至下,优先级越高!

流程图

在这里插入图片描述

思维导图

分支和循环

  • 条件表达式 在这里插入图片描述
  • 用一个小括号来把代码封起来,等价于\实现多行代码连续输入。

分支结构嵌套

  • 在这里插入图片描述

  • while break 跳出循环体

  • continue 跳出本次循环,回到循环体

  • while else 语句:当循环完整结束后会执行 else
    在这里插入图片描述

  • break和continue都是作用于最小循环

for

  • for in中的可迭代对象
  • range
    是生成一个数字序列,其参数必须是整型。在这里插入图片描述

在这里插入图片描述

列表在这里插入图片描述

  • 注意最后的,还可以倒序输出。
  • 增 :append()、 extend()
    在这里插入图片描述
  • 也可以使用切片的方法去做在这里插入图片描述
    和extend的原理一样
  • insert( x,y) x插入的位置,y是插入的元素
  • 在这里插入图片描述
  • 删除: remove()但是有多个匹配的元素,只会删除第一个,如果没有匹配到,就会报错。
  • pop() 删除 某个位置的元素
  • clear()清空
  • 在这里插入图片描述
  • 列表元素的替换:在这里插入图片描述
  • 列表排序:sort()从小到大排序
    在这里插入图片描述
    或者在sort(reverse=True)直接在sort里翻转
  • 列表反转:reverse()
  • index() 索引 index(a,b,c) a是元素内容、bc分别表示起始位置
    在这里插入图片描述- [ ] 可以通过该方法替换未知索引的内容
    在这里插入图片描述
  • count() 计算列表里有多少该元素
  • copy()浅拷贝
  • 在这里插入图片描述
  • 负数索引表示从数组的末尾开始往前数的元素
    在这里插入图片描述在这里插入图片描述
  • 列表 加法 乘法
    在这里插入图片描述
  • 嵌套列表
  • 嵌套列表输出 在这里插入图片描述
  • 只给一个下标索引,给出的是以行为单位的整个列表
  • 初始化列表在这里插入图片描述
  • is判断两个变量是不是指向的同一对象。
  • 若字符串是相同,则两个对象是指向的同一对象;而列表不是。
  • 在这里插入图片描述
    为什么不能用B=[ [ 0 ] * 3 ] *3来初始化列表
    如下图:
    在这里插入图片描述
  • 在python中,变量不是盒子,是引用
  • 我们要真正获得两个独立的列表,就需要用到copy()或者切片
    在这里插入图片描述

在C++中类似,不能对数组进行直接复制,拷贝,只能通过for循环,对数组中每一个元素逐个进行复制。

浅拷贝和深拷贝

  • 在面对多维列表的时候,在使用copy就不行了,因为浅拷贝只是对外围数据进行拷贝,对内层数据还是以引用形式存在的。

  • 在这里插入图片描述

  • copy模块 import copy

  • copy.deepcopy()深拷贝

  • copy.copy()浅拷贝
    python虚拟机 pvm

列表推导式(用的c语言进行的)

  • 结果是一个列表在这里插入图片描述
  • 其执行顺序为 先执行for 的迭代 ,然后再执行,for后判断语句。

  • 在这里插入图片描述
  • 嵌套的列表推到式
    在这里插入图片描述
  • 可以用嵌套的列表推导式来表示笛卡尔乘积,每个for后面都可以加一个if来进行条件筛选
  • 在这里插入图片描述

KISS原则

要保证代码简洁好看,不介意多行列表嵌套式,容易看不懂

元组tuple

不可逆的、圆括号、也可以不带括号、也支持切片操作

  • count、index()

  • 支持拷贝
    在这里插入图片描述

  • 支持嵌套
    在这里插入图片描述
    在这里插入图片描述
    生成一个元素的元组:x = <520,>

  • 打包和解包:一堆数据生成一个元组称为元组的打包,用一个元组对几个变量进行赋值,称为解包。打包和解包用于所有序列。注意解包的时候,需要左右两边的变量数量要一致。

  • 除非用以下这个方式:

  • 在这里插入图片描述
    _:表示匿名变量
    python中多重赋值就是这样的来的。
    在这里插入图片描述

元组中的元素是不可变的,但是元组中的元素如果指向的是可变的元素,那就可以改变。如下:
在这里插入图片描述

字符串

  • 用切片来实现回文数的查找
  • 在这里插入图片描述
    字符串里的方法:
    在这里插入图片描述
    capitalize()将字符串首字母大写
    title()各单词首字母大写
    swapcase()将原字符串大小写翻转
    upper()将所有字母都大写
    lower()将所有字母都小写
    casefold()小写,并且可以处理其他语言
    在这里插入图片描述
    center(w)w>字符串长度则,将其居中。小于则直接输出。
    ljust左对齐
    rjust右对齐
    zfill()字符串前面补0,不是单纯的补,如果字符串前面有符号,在前面也会有符号站位
    在这里插入图片描述
    count(a,b,c)bc分别是指定的查找位置参数
    find()rfind()从左往右、从右往左找
    index()找不到就抛出异常

在这里插入图片描述

  • 使用空格来替换制表符,返回一个新的字符串
  • replace(old,new,count==-1)指定新字符串替换旧字符串,count默认为-1,即为替换全部
    在这里插入图片描述
    配合str.maketrans()使用,相当于是在里面生成了一个转换规则。
    依照这个转化规则执行:
    在这里插入图片描述
    还可以再加一个参数,将指定的字符串忽略掉

方法 含义
capitalize() 把字符串的第一个字符改为大写
casefold() 把整个字符串的所有字符改为小写
center(width) 将字符串居中,并使用空格填充至长度width的新字符串
count(sub[,start[,end]]) 返回sub在字符串里边出现的次数,start和end参数表示范围,可选
encode(encoding=‘utf-8’, errors=‘strict’) 以encoding指定的编码格式对字符串进行编码
endswith(sub[,start[,end]]) 检查字符串是否以sub子字符串结束,如果是返回True,否则返回False。start和end参数表示范围,可选
expandtabs([tabsize=8]) 把字符串中的tab符号(\t)转换为空格,如不指定参数,默认的空格数是tabsize=8
find(sub[,start[,end]]) 检测sub是否包含在字符串中,如果有则返回索引值,否则返回-1,start和end参数表示范围,可选
index(sub[,start[,end]]) 跟find方法一样,不过如果sub不在string中会产生一个异常
isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False
isalpha() 如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False
isdecimal() 如果字符串只包含十进制数字则返回True,否则返回False
isdigit() 如果字符串只包含数字则返回True,否则返回False
islower() 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回True,否则返回False
isnumeric() 如果字符串中只包含数字字符,则返回True,否则返回False
isspace() 如果字符串中只包含空格,则返回True,否则返回False
istitle() 如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回True,否则返回False
isupper() 如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回True,否则返回False
join(sub) 以字符串作为分隔符,插入到sub中所有的字符之间。>>> str5 = ‘Fishc’ >>> str5.join(‘12345’) ‘1Fishc2Fishc3Fishc4Fishc5’
ljust(width) 返回一个左对齐的字符串,并使用空格填充至长度为width的新字符串
lower() 转换字符串中所有大写字符为小写
lstrip() 去掉字符串左边的所有空格
partition(sub) 找到子字符串sub,把字符串分成一个3元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回(‘原字符串’, ’’, ’’)
replace(old,new[,count]) 把字符串中的old子字符串替换成new子字符串,如果count指定,则替换不超过count次。>>> str7 = ‘i love fishdm and seven’ >>> str7.replace(‘e’,‘E’,2) 输出’i lovE fishdm and sEven’
rfind(sub[,start[,end]]) 类似于find()方法,不过是从右边开始查找
rindex(sub[,start[,end]]) 类似于index()方法,不过是从右边开始
rjust(width) 返回一个右对齐的字符串,并使用空格填充至长度为width的新字符串
rpartition(sub) 类似于partition()方法,不过是从右边开始查找
rstrip() 删除字符串末尾的空格
split(sep=None, maxsplit=-1) 不带参数默认是以空格为分隔符切片字符串,如果maxsplit参数有设置,则仅分隔maxsplit个子字符串,返回切片后的子字符串拼接的列表。>>> str7.split () [‘i’, ‘love’, ‘fishdm’, ‘and’, ‘seven’]
splitlines(([keepends])) 按照‘\n’分隔,返回一个包含各行作为元素的列表,如果keepends参数指定,则返回前keepends行
startswith(prefix[,start[,end]]) 检查字符串是否以prefix开头,是则返回True,否则返回False。start和end参数可以指定范围检查,可选
strip([chars]) 删除字符串前边和后边所有的空格,chars参数可以定制删除的字符,可选
swapcase() 翻转字符串中的大小写
title() 返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串
translate(table) 根据table的规则(可以由str.maketrans(‘a’,‘b’)定制)转换字符串中的字符。>>> str8 = ‘aaasss sssaaa’ >>> str8.translate(str.maketrans(‘s’,‘b’)) ‘aaabbb bbbaaa’
upper() 转换字符串中的所有小写字符为大写
zfill(width) 返回长度为width的字符串,原字符串右对齐,前边用0填充

相关文章:

python基础学习

缩⼩图像&#xff08;或称为下采样&#xff08;subsampled&#xff09;或降采样&#xff08;downsampled&#xff09;&#xff09;的主要⽬的有两个&#xff1a;1、使得图像符合显⽰区域的⼤⼩&#xff1b;2、⽣成对应图像的缩略图。 放⼤图像&#xff08;或称为上采样&#xf…...

Python密码本连接wifi

有时候我们会忘记自己的Wi-Fi密码&#xff0c;或者需要连接某个Wi-Fi网络以满足合法需求。本文将介绍如何使用Python编程语言编写一个简单的连接Wi-Fi的程序。 一、密码本准备 在进行wifi猜测时&#xff0c;其实就是列出各种可能的密码&#xff0c;用来尝试去访问目标wifi&…...

Docker 设置 Redis 的密码失效

在网上找了设置Docker里的设置Redis密码,一段时间就失效了 1. 进入redis的容器 docker exec -it 容器ID redis-cli2. config set requirepass 密码 解决方法 1. 创建 redis.conf 配置文件 # Redis configuration file example. # # Note that in order to read the configu…...

1.环境部署

1.虚拟机安装redhat8系统 这个其实很简单&#xff0c;但是有一点小细节需要注意。 因为我的电脑是 16核心的&#xff0c;所以选择内核16&#xff0c;可以最大发挥虚拟机的性能 磁盘选择SATA&#xff0c;便于后期学习 将一些没用的设备移除 选择安装redhat 8 时间选择上海 选择…...

2024年第二届“华数杯”国际大学生数学建模竞赛 (A题 MCM)| 废水扩散分析 |数学建模完整代码+建模过程全解全析

当大家面临着复杂的数学建模问题时&#xff0c;你是否曾经感到茫然无措&#xff1f;作为2022年美国大学生数学建模比赛的O奖得主&#xff0c;我为大家提供了一套优秀的解题思路&#xff0c;让你轻松应对各种难题。 让我们来看看华数杯的A题&#xff01; 完整内容可以在文章末…...

深度学习基础知识整理

自动编码器 Auto-encoders是一种人工神经网络,用于学习未标记数据的有效编码。它由两个部分组成:编码器和解码器。编码器将输入数据转换为一种更紧凑的表示形式,而解码器则将该表示形式转换回原始数据。这种方法可以用于降维,去噪,特征提取和生成模型。 自编码器的训练过…...

go语言GMP模式介绍以及协程案例展示

一. MPG模式 Go语言的调度模型被称为GMP&#xff0c;这是一个高效且复杂的调度系统&#xff0c;用于在可用的物理线程上调度goroutines&#xff08;Go的轻量级线程&#xff09;。GMP模型由三个主要组件构成&#xff1a;Goroutine、M&#xff08;机器&#xff09;和P&#xff0…...

码牛课堂首推——鸿蒙南北双向开发学习路线图标准版~

鸿蒙&#xff01;鸿蒙&#xff01;鸿蒙&#xff01; 要说2023-2024年IT圈最火爆的名词&#xff0c;一定是鸿蒙&#xff01; 2023年9月25日&#xff0c;华为发布会正式宣布2024年第一季度将推出HarmonyOS NEXT版本&#xff0c;这意味着鸿蒙原生应用开发将彻底摆脱Android手机系…...

(亲测可行)关于提高IDEA运行速度的方案

1.作者IDEA软件版本和计算机内存 Ultimate 2022.1.2版IDEA&#xff0c;计算机内存为12GB 2.修改配置以提高IDEA运行速度的误区-调高堆内存 很多文章会教调配置的内存&#xff0c;但大多是让你调高堆内存&#xff0c;比如会让你调高-Xms -Xmx &#xff0c;这两种对应的是最…...

框架基础-Maven+SpringBoot入门

框架基础 Maven基础 Maven概述 Maven是为Java项目提供项目构建和依赖管理的工具 Maven三大功能 - 项目构建构建&#xff1a;是一个将代码从开发阶段到生产阶段的一个过程&#xff1a;清理&#xff0c;编译&#xff0c;测试&#xff0c;打包&#xff0c;安装&#xff0c;部署…...

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -投票帖子排行实现

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…...

用julia演示蝴蝶效应:洛伦兹吸引子

文章目录 Lorentz吸引子julia绘图关闭抗锯齿 蝴蝶效应的名字来源于蝴蝶扇动翅膀的动作&#xff0c;虽然这个动作微小&#xff0c;但可能会在数周后引起飓风等极端天气的发生。这种现象表明&#xff0c;微小的变化可能会被放大并产生非线性的结果。这个概念最早由美国气象学家爱…...

从车联网到智慧城市:智慧交通的革新之路

一、引言 1、智慧城市的概念和发展背景 智慧城市&#xff08;Smart City&#xff09;是指以信息技术为基础&#xff0c;运用信息与通信等手段&#xff0c;对城市各个核心系统各项关键数据进行感测、分析、整合和利用&#xff0c;实现对城市生活环境的感知、资源的调控&#x…...

模拟IIC通信

模拟IIC通信 IIC 模拟IIC通信底层接口时间控制(通信速度)功能实现对外接口EEPROM相关 底层接口 device是可以用来增加多个IIC设备管理的 void I2C_SET_SCL(unsigned char device, unsigned char bit_value) {bit_value ? MCU_SCL_H() : MCU_SCL_L(); }void I2C_SET_SDA(uns…...

安卓手机变iOS!

Launcher iOS 16 - 安卓手机秒变iOS Launcher iOS 16 是一款iOS启动器&#xff0c;可以将安卓手机桌面变成iOS样子&#xff0c;还有iOS的开机动画和景深效果&#xff01; 下载链接&#xff1a;【Launcher iOS 16】 ​...

Spring使用注解管理Bean

引入lib包 Spring对Bean管理的常用注解 Component组件(作用在类上) Spring中提供了Component的三个衍生注解:(功能在目前为止是一致的) Controller WEB层 Service 业务层 Repository 持久层 属性注入的注解:(使用注解注入的方式,可以不用提供set方法) Value 用于注入普…...

弟12章 网络编程

文章目录 网络协议概述 p164TCP协议与UDP协议的区别 p165TCP服务器端代码的编写 p166TCP服务器端流程 TCP客户端代码的编写 p167TCP客户端流程主机和客户端的通信流程 tcp多次通信服务器端代码 p168TCP多次通信客户端代码 p169UDP的一次双向通信 p170udp通信模型udp接收方代码u…...

【sklearn练习】模型评估

一、交叉验证 cross_val_score 的使用 1、不用交叉验证的情况&#xff1a; from __future__ import print_function from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifieriris…...

Gazebo的模型下载。

git clone zouxu634866/gazebo_modelshttps://gitee.com/zouxu6348660/gazebo_models.git&#xff0c;并完成路径配置。 &#xff08;本文提供了gitee下载&#xff0c;国外的Github下载较慢。&#xff09;...

MyBatis - DAO 接口(Mapper.xml)支持方法重载吗?

方法重载&#xff08;Method Overloading&#xff09;是指在同一个类中定义多个方法&#xff0c;它们具有相同的方法名但参数列表不同。 Dao 在 MyBatis 的 DAO 层接口中&#xff0c;是允许方法重载的。 在 DAO 层接口中&#xff0c;可以根据不同的需求和条件定义多个方法&am…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用&#xff0c;而无需手动一个个创建和运行容器。 Compose文件是一个文本文件&#xff0c;通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...