python 基础学习文档

news2026/4/27 23:19:11
✨博文作者烟雨孤舟 喜欢的可以 点赞 收藏 关注哦~~✍️ 作者简介: 一个热爱大数据的学习者✍️ 笔记简介作为大数据爱好者以下是个人总结的学习笔记如有错误请多多指教1. 标识符命名规则只能由 字母、数字、下划线组成不能以数字开头不能使用关键字如 if、for、class区分大小写2.标识符命名规范变量名使用 小写 下划线snake_case类名使用大驼峰CamelCase常量使用全大写见名知意不要用单字母3.常见的数据类型不可变数据类型数值、字符串、元组可变数据类型列表、集合、字典类型名称关键字可变性有序性典型用途整数int不可变N/A计数、索引浮点数float不可变N/A科学计算布尔bool不可变N/A条件判断字符串str不可变有序文本处理列表list可变有序动态数据元组tuple不可变有序固定结构数据字典dict可变有序 (3.7)键值映射、JSON集合set可变无序去重、集合运算不可变集合frozenset不可变无序作为字典 key4.type 和 isinstance 的区别:type()返回对象的类型、只判断当前类型、不考虑继承关系isinstance()判断是否是某个类型或其子类、会考虑继承关系type(1) # int类型 isinstance(1, int) # 判断是否是int类型 返回True、False5.字符串定义方式单引号‘python’、双引号”python“、三引号(”””python”””)单引号等价双引号都是单行字符串三引号可换行常见的转义字符串\’ 单引号\”双引号 \n换行 \t制表符6.Python 36 个关键字类别关键字作用布尔值True布尔真值False布尔假值None空值表示无对象逻辑运算符and逻辑与or逻辑或not逻辑非条件控制if条件判断elif多条件分支else条件否则循环控制for循环遍历while条件循环break跳出循环continue跳过本次循环函数定义def定义函数return返回值lambda定义匿名函数类与对象class定义类del删除变量或对象引用异常处理try尝试执行代码except捕获异常finally无论是否异常都会执行raise主动抛出异常模块导入import导入模块from从模块中导入as起别名作用域名global声明全局变量nonlocal声明使用外层函数变量异步编程async定义异步函数await等待异步执行结果其他is判断是否为同一个对象身份判断in判断成员是否存在yield生成器返回值暂停函数执行pass占位语句assert断言判断7.常见的算术运算符运算符名称示例说明加法a b两数相加-减法a - b两数相减*乘法a * b两数相乘/除法a / b返回浮点数结果//整除a // b向下取整%取余a % b取余数**幂运算a ** ba 的 b 次方涉及到浮点数的算术运算时可能会损失精度计算机底层逻辑是基于二进制来进行存储和处理的 二进制无法精确表示某些十进制小数示例print(0.1 0.2) # 0.30000000000000004 **# 解决方式金融场景必须掌握** # 1.使用 decimal 模块推荐 适用于金额计算 from decimal import Decimal a Decimal(0.1) b Decimal(0.2) print(a b) # 0.3 # 2.使用 round 控制精度但不适合金融核心计算。 round(0.1 0.2, 2)8.常见的赋值运算符运算符示例等价于a 10将右侧的值赋给左侧变量a 5a a 5-a - 5a a - 5*a * 5a a * 5/a / 5a a / 5//a // 5a a // 5%a % 5a a % 5**a ** 2a a ** 29.常见的位运算符运算符示例等价于a ba a ba^a ^ ba a ^ ba 1a a 1a 1a a 110.常见比较运算符运算符含义示例结果等于3 3True!不等于3 ! 2True大于5 3True小于3 5True大于等于5 5True小于等于3 5True运算符含义示例is是否是同一个对象a is bis not是否不是同一个对象a is not b运算符含义in是否包含not in是否不包含11.Python 特殊赋值形式a, b 1, 2 # 多变量赋值 a, b b, a # 变量交换 a b c 10 # 链式赋值 a, b, c [1, 2, 3] # 解包赋值12.if 控制语句定义if 用于根据条件判断是否执行某段代码。在 if 中以下情况会被判断为 FalseFalse、None、0、0.0、、[]、{}、set()if 条件1: 代码块1 elif 条件2: 代码块2 else: 代码块3# 条件表达式三目运算符 # 结果1 if 条件 else 结果2 age 20 status 成年 if age 18 else 未成年13.match … case 语句:定义用于根据不同模式匹配不同情况执行代码。match 表达式: case 模式1: 代码块1 case 模式2: 代码块2 case _: 默认代码块status 200 match status: case 200: print(成功) case 404: print(未找到) case 500: print(服务器错误) case _: print(未知状态)14.while循环定义while 用于在条件为 True 时反复执行代码块。while 条件表达式: 代码块while 条件表达式: 代码块 else: 代码块 # 如果 while 正常结束没有被 break 打断执行 else。被 break 打断else 不执行。15.for 循环定义用于遍历可迭代对象iterable。本质是一种轮询遍历机制对对象进行逐个处理。可迭代对象list、tuple、str、dict、set、range()、生成器for 变量 in 可迭代对象: 代码块range() 函数 Python 内置函数用于生成一个整数序列常用于 for 循环左闭右开。参数含义start起始值默认 0stop结束值不包含step步长默认 1range(stop) range(start, stop) range(start, stop, step)示例# 遍历字符串 for ch in hello: print(ch) # 遍历字典 key for k in d.keys(): print(k) # 遍历字典 value for v in d.values(): print(v) # 遍历字典 key 和 value for k, v in d.items(): print(k, v) # enumerate() 获取索引 names [Tom, Jack] for index, name in enumerate(names): print(index, name) # zip() 多对象同时遍历 a [1,2,3] b [a,b,c] for x, y in zip(a, b): print(x, y) # for else for i in range(3): print(i) else: print(循环正常结束) # 没有被 break 打断才执行 else如果 break 了else 不执行 # 列表推导式for 的简写 nums [x*x for x in range(5)] nums [] for x in range(5): nums.append(x*x)16.while 和 for的区别while循环用于在某个条件满足时一直循环循环的次数通常是未知的只知道循环开始和结束的条件。for循环用于对一个已知的数据集进行遍历或已知次数的循环遍历每一个元素。whilefor适合条件不确定次数适合确定次数需要手动控制变量自动迭代容易写死循环更安全17.python 数据容器列表、元组、字典、集合、字符串18.序列元素按特定顺序排列并且可以通过索引访问元素的容器类型称为序列。19.索引从前向后正向索引从下标0开始从后向前反向索引下标从-1开始。20.切片对数据截取其中一部分的操作列表、字符串、元组都支持切片左闭右开区间。语法nums[start:end:step] start:开始索引不指定默认为0第一个元素的索引 end:结束索引不指定默认为列表长度查到列表末尾 step:步长不指定默认为121.列表list列表是 Python 中最常用的可变、有序序列类型。特点有序、可变、可重复、可存任意类型nums list((1, 2, 3)) # 从元组创建 chars list(hello) # 从字符串创建 empty list()语法# 访问元素 nums [10, 20, 30] print(nums[0]) # 10 print(nums[-1]) # 30倒数第一个 # 切片 nums[0:2] # [10, 20, 30] nums[:1] # [1020] nums[::2] # 步长为2 # 添加元素 nums.append(4) # 在列表的尾部追加元素 nums.insert(0, 99) # 在指定索引之前插入该元素 nums.extend([5,6]) # 追加多个元素 # 删除元素 nums.remove(2) # 删除第一个匹配到的值 按照值 nums.pop() # 删除并返回指定位置元素 按照索引 del nums[0] # 修改元素 nums[0] 100 # 列表推导式 nums [x*x for x in range(5)]分类方法作用示例添加append(x)末尾添加一个元素lst.append(4)添加extend(iterable)追加多个元素lst.extend([5,6])添加insert(i, x)在指定索引之前插入元素lst.insert(0, 99)删除remove(x)删除第一个匹配值lst.remove(2)删除pop()默认删除最后一个元素lst.pop()删除pop(i)删除指定索引位置元素lst.pop(0)删除clear()清空列表lst.clear()删除del删除指定元素或列表del lst[0]查找index(x)返回元素索引lst.index(3)查找count(x)统计元素出现次数lst.count(2)排序sort()原地排序lst.sort()排序sort(reverseTrue)倒序排序lst.sort(reverseTrue)排序reverse()反转列表顺序lst.reverse()复制copy()浅拷贝lst.copy(22.解包Unpacking把容器类型list / tuple / dict / set 等里的元素“拆开”取出来。常见用途有赋值解包、函数参数解包、字典解包。赋值解包# 列表 / 元组可以直接拆开赋值 data [1, 2, 3] a, b, c data print(a) # 1 print(b) # 2 print(c) # 3 # 本质[1,2,3] - a1 b2 c3 # 如果数量不匹配会报错ValueError: too many values to unpack星号解包 *# 如果元素数量不确定可以用 *。 data [1, 2, 3, 4, 5] a, *b data print(a) # 1 print(b) # [2,3,4,5]函数参数解包 *def add(a, b, c): return a b c data [1,2,3] result add(*data) print(result) # 等价于add(1,2,3)字典解包 **# 字典可以拆成 关键字参数。 def create_user(name, age): print(name, age) data { name: Tom, age: 18 } create_user(**data) # 等价于create_user(nameTom, age18循环解包data [(1,2), (3,4), (5,6)] for a,b in data: print(a,b)组包packing把多个独立的值“打包”成一个容器通常是 tuple 或 dict。a,b,c 1,2,3 data a, b, c. # data (1, 2, 3)# 当函数参数使用 *args 时Python 会 把多个参数组包成 tuple。 def test(*args): print(args) test(1,2,3). # 输出(1,2,3)23.列表推导式使用简洁语法通过循环 表达式 可选条件来生成一个新的列表。基本结构[表达式 for 变量 in 可迭代对象] [表达式 for 变量 in 可迭代对象 if 条件] [x for x in range(5)]# [0, 1, 2, 3, 4] [x for x in range(10) if x % 2 0]# [0, 2, 4, 6, 8]24.字符串常用方法方法说明示例upper()全部转大写hello.upper() → HELLOlower()全部转小写HELLO.lower() → hellocapitalize()首字母大写hello.capitalize() → Hellotitle()每个单词首字母大写hello world.title() → Hello Worldswapcase()大小写互换Hello.swapcase() → hELLO方法说明find()查找字符串找不到返回 -1index()查找字符串找不到报错count()统计出现次数startswith()是否以某字符串开头endswith()是否以某字符串结尾split()按分隔符拆分rsplit()从右侧拆分splitlines()按换行拆分join()合并字符串replace()替换字符串translate()字符映射替换strip()去两边空格lstrip()去左边空格rstrip()去右边空格isdigit()是否数字isalpha()是否字母isalnum()是否字母或数字isspace()是否空格islower()是否全小写isupper()是否全大写25.格式化字符串format()name Tom age 18 print(name:{}, age:{}.format(name, age))f-string推荐name Tom age 18 print(fname:{name}, age:{age})26.元组可以存储不同的数据类型、元素可以重复、有序、不可以修改支持索引、切片元组名称 元素1,元素2,... 元组名 tuple([1, 2, 3])注意单元素元组定义时需要在末尾加上逗号(’A’,)说明在元组解包时使用函数参数解包 ****代表收集剩余的元素生成的是一个列表。27.集合set是一种无序、不重复、可变的数据容器用于存储唯一元素。注意空集合的定义不能使用{},{}是用来定义空字典的由于集合是无序的因此不支持下标索引。注意集合的元素必须是不可变类型# 空集合的定义 s set() # ✅ 正确 s {} # ❌ 这是空字典常用方法分类方法作用示例添加add(x)向集合中添加一个元素s1.add(t)添加update(iterable)添加多个元素可迭代对象s1.update([a,b])删除remove(x)删除指定元素不存在会报错s1.remove(a)删除discard(x)删除指定元素不存在不报错s1.discard(a)删除pop()随机删除并返回一个元素s1.pop()清空clear()清空集合s1.clear()查找in / not in判断元素是否存在a in s1复制copy()浅拷贝集合s2 s1.copy()集合运算union() /并集集合运算intersection() / 交集s1 s2集合运算difference() / -差集s1 - s2集合运算symmetric_difference() / ^对称差集s1 ^ s2关系判断issubset()判断是否为子集s1.issubset(s2)关系判断issuperset()判断是否为超集s1.issuperset(s2)关系判断isdisjoint()判断是否无交集s1.isdisjoint(s2)28.字典dict一种无序、可变、键值对key:value存储的数据容器。特点键值对key:value存储key 不可重复、可变注意key 必须是不可变类型、不可重复value 可以是任何数据类型的。注意字典是没有索引下标的不能根据索引获取值只能根据key获取value 逻辑上仍然按“无序容器”理解。# 空字典的定义 s dict() s {}常用方法分类方法作用示例添加/更新update()合并字典d.update({a:1})获取get()安全获取值d.get(a)删除pop()删除并返回值d.pop(a)删除popitem()删除最后一项d.popitem()遍历keys()获取所有 keyd.keys()遍历values()获取所有 valued.values()遍历items()获取键值对d.items()复制copy()浅拷贝d.copy()29.数据容器对比特性字符串 (str)列表 (list)元组 (tuple)集合 (set)字典 (dict)有序性有序有序有序无序有序Python3.7重复元素允许允许允许不允许key不允许重复可变性不可变可变不可变可变可变索引访问支持支持支持不支持不支持但支持 key 访问切片操作支持支持支持不支持不支持元素类型字符任意任意不可变类型key不可变value任意查找效率O(n)O(n)O(n)O(1)O(1)使用场景文本处理有序集合固定数据去重/查重键值映射30.函数函数是将一段具有特定功能的代码封装起来并通过函数名进行调用的代码块。函数需要先定义再执行。函数定义时内部代码并没有运行在调用时才执行。函数中通过缩进来描述归属关系关系基本语法结构def 函数名(参数): 函数体 return 返回值部分说明def定义函数的关键字函数名函数的标识参数输入数据可选函数体实现功能的代码return返回结果可选31.函数参数形参形式参数函数定义时括号里的参数只能在函数内部使用局部变量。实参实际参数函数在实际调用时传递的参数。函数定义时如果有多个参数需要用逗号隔开。return 语句只有返回功能没有输出打印功能如果要输出需要结合print()函数实现。参数组合使用顺序**位置参数 → 默认参数 → *args →kwargsdef f(a, b): ... # 位置参数 f(1, 2) # 调用函数时根据函数定义的位置来传递参数传递顺序要和定义顺序一致。 # 关键字参数 f(a1, b2) # 调用函数时根据函数定义时形参名称作为关键字“键值”的形式传参不要求顺序 # 默认参数 def f(a, b10): # 调用函数时如果函数没有给参数传值则参数使用默认值。 ... # 可变参数 def f(*args): # 接收多个位置参数本质是 tuple元组 ... def f(**kwargs): # 接收多个关键字参数本质是 dict字典 ...可变参数# *args位置可变参数 def f(*args): print(args) f(1, 2, 3) # 输出(1, 2, 3) # **kwargs关键字可变参数 def f(**kwargs): print(kwargs) f(a1, b2) # {a: 1, b: 2}强制关键字参数:# 强制 * 后面的参数必须用 key方式传 def create_user(name, *, age, city): ...参数类型普通参数数字、布尔值、元组、列表、字典、集合等。 特殊参数函数32.函数注释标准Docstring格式如下功能说明必须业务背景 / 实现意图说明建议参数说明必须返回值说明必须异常说明必须是否涉及权限、事务、加密等安全操作视情况33.函数的变量作用域全局变量在函数之外定义的变量称之为全局变量在整个文件中包括函数内都可以使用通常定义在文件顶部。局部变量在函数内部定义的变量称之为局部变量只能在该函数内部使用外部无法访问。global明确告诉python解释器在函数内部使用全局变量使得可以在函数内部修改全局变量的值。注意尽量避免在函数内部使用全局变量。考虑使用函数参数和返回值来传递数据而不是依赖全局变量。global主要用于程序的状态、配置和计数器等场景中。34.匿名函数(lambda)是一种没有函数名的简洁函数通常用于定义简单的一次性函数单行表达式。注意函数逻辑比较简单单行表达式且只在一个地方使用可以考虑使用匿名函数简化书写通常作为高阶函数的参数使用注意匿名函数可以返回值也可以不返回值返回值时不需要return表达式的值就是它的返回值。定义lambda 参数列表: 函数体 lambda : print(-----) nums [1, 2, 3] result list(map(lambda x: x * 2, nums)) # [2, 4, 6]特点说明无函数名不用 def单表达式只能写一行逻辑自动返回不需要 return轻量级常用于临时函数35.函数的类型注解对函数参数和返回值进行类型说明的语法用于提高代码可读性和可维护性。def 函数名(参数: 类型) - 返回类型: ... def add(a: int, b: int) - int: return a b容器类型# 列表 def f(nums: list[int]) - list[int]: return nums # 字典 def f(data: dict[str, int]) - dict[str, int]: return data # 元组 def f() - tuple[int, str]: return 1, a # Optional可为空 from typing import Optional def f(name: Optional[str]) - Optional[str]: return name # Union多种类型 from typing import Union def f(x: Union[int, str]) - None: ...36.模块module是一个包含 Python 代码的文件.py用于组织和复用代码。一个 .py 文件 一个模块模块的核心作用代码复用、功能划分、避免命名冲突37.模块的导入导入方式写法调用方式示例标准导入import 模块名模块名.函数random.randint()别名导入import 模块名 as 别名别名.函数rd.randint()局部导入from 模块名 import 函数函数randint()局部别名from 模块名 import 函数 as 别名别名rint()全量导入from 模块名 import *直接用函数randint()38.自定义模块自定义模块就是开发者自己编写的 .py 文件用于封装和复用代码。# 定义模块 # my_module.py def add(a, b): return a b def sub(a, b): return a - b # 使用模块 import my_module print(my_module.add(1, 2))name是 Python 内置变量表示当前模块的名称all_ 用于控制 from xxx import * 时导入哪些内容特性nameall类型内置变量可选变量作用判断模块执行方式控制 import *常用程度⭐⭐⭐⭐⭐⭐⭐是否必须必须理解很少用39.包package是一个包含多个模块.py 文件的目录用于组织和管理代码。my_project/ │ ├── utils/ ← 包 │ ├── __init__.py │ ├── math.py │ └── string.py │ ├── services/ ← 包 │ ├── __init__.py │ └── user.py # __init__.py的作用 # 1. 标识该目录为包旧版本必须 # 2. 初始化包 # 3. 控制导入行为40.模块与包的区别概念说明模块一个 .py 文件包一个目录包含多个模块41.面向对象面向对象 用“类”定义结构用“对象”承载数据用“方法”完成行为面向对象是一种以“对象”为核心通过类来组织代码的编程思想。核心概念概念说明类Class模板/蓝图定义“这个东西有什么”对象Object类的实例真正的数据载体属性Attribute数据存数据方法Method行为操作数据基础示例class User: # 类 def __init__(self, name): self.name name # 属性 def say(self): # 方法 print(self.name) u User(Tom) # 对象 u.say()构造方法def __init__(self, ...): # 作用 # 初始化对象 # 在创建对象时自动执行 # self 当前对象本身self 把数据绑定到当前对象面向对象三大特性封装、继承、多态self 和 ****init self 当前对象 # 谁调用self 就是谁 init 创建对象时自动执行 # 用来初始化属性42.类class用于描述一类事物的结构模板由属性和方法组成本质类 属性数据 方法行为语法定义class 类名: pass # 创建对象 对象 类名() 对象.属性 值示例class Car: pass c1 Car() c1.brand BMW c1.name X5 c1.price 500000 # 查看属性 print(c1.__dict__) # 对象的属性本质存储在 __dict__字典中 {brand: BMW, name: X5, price: 500000}注意定义类不推荐使用动态的方法添加属性会导致代码难维护实际开发应在init中定义。实际开发类的定义class 类名: def __init__(self, 参数列表): self.属性名 参数值示例class Car: # __init__ 方法是初始化的方法会在对象创建时自动调用可以在该方法中为对象设置对应的属性 # self是第一个参数表示当前所创建出来的实例对象。 def __init__(self, brand, name, price): self.brand brand self.name name self.price price说明def 定义在类外面称之为函数定义在类中的函数称之为方法。43.实例方法属于对象的方法需要通过对象调用默认第一个参数是 self语法定义class 类名: def __init__(self, 参数列表): self.属性名 参数值 def 方法名(self, 参数): ... def 方法名(self, 参数): ... # 创建对象 对象 类名(参数列表) 对象.方法名实参44.魔法方法python 中以xxx形式存在的特殊方法用于让对象支持内置操作自动调用本质魔法方法 Python 预定义的“钩子方法”特点方法名固定不能乱写自动触发不需要手动调用让对象“像内置类型一样工作”常见魔法方法方法触发方式init创建对象strprint()repr调试输出lenlen()addeqgetitemobj[]setitemobj[]callobj()45.属性类或对象中用于存储数据的变量实例属性实例属性属于每个具体对象的属性每个对象都是独立的。各个对象特有的数据类属性类属性属于类本身的属性所有的实例共享所有的对象共享的数据或配置。类型定义位置是否共享修改影响实例属性init不共享只影响当前对象类属性类中共享影响所有对象46.异常Exception程序在运行过程中发生的错误或意外情况异常的作用捕获错误防止程序崩溃提高程序稳定性常见异常示例1 / 0 # ZeroDivisionError除零错误 int(abc) # ValueError类型转换错误 lst [1,2] lst[5] # IndexError索引越界异常处理基本结构try: a int(abc) except ValueError: print(转换失败)完整结构try: ... except: ... else: ... finally: ...主动抛出异常raise Exception(错误信息)结构说明try尝试执行except捕获异常else没有异常时执行finally无论如何都会执行47.异常结构BaseException │ ├── SystemExit # 退出程序sys.exit() ├── KeyboardInterrupt # 用户中断Ctrl C ├── GeneratorExit # 生成器关闭 │ └── Exception # ⭐ 所有业务异常的基类重点 │ ├── ArithmeticError # 数学运算错误父类 │ └── ZeroDivisionError # 除零错误 │ ├── LookupError # 查找错误父类 │ ├── IndexError # 列表/元组索引越界 │ └── KeyError # 字典 key 不存在 │ ├── TypeError # 类型错误类型不匹配 ├── ValueError # 值错误值不合法 ├── NameError # 变量未定义 ├── AttributeError # 属性不存在 │ ├── FileNotFoundError # 文件不存在 ├── ImportError # 导入失败 │ └── ModuleNotFoundError # 模块不存在 │ ├── RuntimeError # 运行时错误状态异常 ├── NotImplementedError # 方法未实现 │ └── AssertionError # 断言失败

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…