python八股文汇总(持续更新版)
python装饰器
一、装饰器是什么?
装饰器是Python中一种"化妆师",它能在不修改原函数代码的前提下,给函数动态添加新功能。
- 本质:一个接收函数作为参数,并返回新函数的工具。
- 作用:像给手机贴膜,既保护屏幕(原函数),又新增防摔功能(装饰逻辑)。
二、核心原理
- 函数是"对象":Python中函数可以像变量一样传递,这是装饰器的基础。
- 闭包机制:装饰器通过嵌套函数(闭包)保留原函数,并包裹新功能。
工作流程:
- 你调用被装饰的函数(如
hello()
)。 - Python实际执行的是装饰器加工后的新函数。
- 新函数先执行装饰器添加的逻辑(如权限检查),再执行原函数。
三、常见用途
场景 | 作用 | 生活类比 |
权限验证 | 检查用户是否登录再执行函数 | 进小区前刷卡(装饰器是门禁系统) |
日志记录 | 自动记录函数调用时间和参数 | 飞机黑匣子(自动记录飞行数据) |
性能统计 | 计算函数运行耗时 | 跑步时用手表计时 |
缓存结果 | 避免重复计算(如 ) | 备忘录(记下答案直接复用) |
四、两种实现方式
- 函数式装饰器
-
- 最常用,通过嵌套函数实现。
- 示例:给函数添加"呼叫提醒"功能
def remind_call(func):def wrapper():print("【提醒】开始打电话...")func() # 执行原打电话函数print("【提醒】通话结束")return wrapper@remind_call
def call_friend():print("正在和好友通话中...")call_friend()
输出:
【提醒】开始打电话...
正在和好友通话中...
【提醒】通话结束
- 类装饰器
-
- 通过实现
__call__
方法让类能像函数一样调用。 - 适合需要维护状态的场景(如重试计数器)。
- 通过实现
五、需要注意的坑
- 原函数信息丢失
-
- 直接使用装饰器会导致
help(func)
显示的是wrapper函数的信息。 - 解决:用
functools.wraps
装饰wrapper函数。
- 直接使用装饰器会导致
- 装饰顺序影响
-
- 多个装饰器从下往上执行:
@decorator1 # 最后执行
@decorator2 # 先执行
def func(): pass
- 带参数的装饰器
-
- 需要三层嵌套函数,最外层接收装饰器参数。
六、现实世界类比
- 快递打包
-
- 原函数 = 商品
- 装饰器 = 打包服务(先加泡沫纸,再贴快递单)
@打包
后的商品功能不变,但多了运输保护。
- 游戏装备
-
- 原函数 = 游戏角色
@穿装备
后角色攻击力提升,但角色代码未修改。
七、为什么用装饰器?
- 避免重复代码(如所有函数都要加日志时)
- 保持纯净(不修改原函数,降低耦合)
- 灵活组合(像乐高积木一样叠加功能)
一句话总结:装饰器是Python的"功能外挂",用@
符号轻松实现代码增强!
Python的深拷贝和浅拷贝
1. 基本概念
类型 | 特点 | 适用场景 |
浅拷贝 | 只复制对象本身,不复制内部的子对象 | 简单对象(如列表嵌套不深) |
深拷贝 | 递归复制对象及其所有子对象 | 复杂嵌套对象(如多层字典/列表) |
2. 核心区别
- 浅拷贝:像给房子拍照片,只复制了外观(顶层结构),房间里的家具(子对象)还是同一套。
- 深拷贝:连房子带家具全部克隆一份,新旧对象完全独立。
3. 技术实现
(1) 浅拷贝方法
import copya = [1, [2, 3]]
b = copy.copy(a) # 或 a.copy() / list(a) / slice[:]
- 效果:
-
- 修改
a[0]
(不可变类型)不影响b
- 修改
a[1][0]
(可变子对象)会影响b
- 修改
(2) 深拷贝方法
c = copy.deepcopy(a)
- 效果:
-
- 无论修改
a
的哪一层,c
都完全不受影响
- 无论修改
4. 通俗例子
场景1:合租公寓(浅拷贝)
- 你(
a
)和室友(b
)共用客厅的冰箱(子对象)。 - 你往冰箱里放啤酒 → 室友也能看到这些啤酒。
- 但你换了自己的床单(顶层不可变项) → 室友的床单不变。
场景2:买新房(深拷贝)
- 开发商按样板房(
a
)给你建了完全一样的房子(c
)。 - 你在新房砸墙 → 样板房毫无影响。
- 样板房换家具 → 你的新房也不变。
5. 验证实验
import copy# 原始对象(含可变子对象)
original = [1, {'name': 'Alice'}, [3, 4]]# 浅拷贝
shallow = copy.copy(original)
# 深拷贝
deep = copy.deepcopy(original)# 修改原始对象的子对象
original[1]['name'] = 'Bob'
original[2].append(5)print("原始对象:", original) # [1, {'name': 'Bob'}, [3, 4, 5]]
print("浅拷贝:", shallow) # [1, {'name': 'Bob'}, [3, 4, 5]] (受影响)
print("深拷贝:", deep) # [1, {'name': 'Alice'}, [3, 4]] (不受影响)
6. 特殊注意事项
- 不可变类型(数字/字符串/元组):
-
- 深浅拷贝无区别(因为本身不能修改)
- 示例:
a = (1, [2]); b = copy.copy(a)
→ 修改a[1]
仍会影响b
- 自定义对象:
-
- 需实现
__copy__()
和__deepcopy__()
方法控制拷贝行为
- 需实现
- 性能权衡:
-
- 深拷贝比浅拷贝慢,对复杂结构可能差10倍以上
7. 什么时候用哪种?
- 用浅拷贝:
-
- 数据没有嵌套或子对象不可变
- 需要节省内存/时间
- 明确希望共享子对象时
- 用深拷贝:
-
- 复杂嵌套结构且需要完全独立副本
- 防止意外修改影响原数据
- 需要序列化/反序列化时
总结:
- 浅拷贝是"省力但不彻底",深拷贝是"一劳永逸"。
- 就像备份手机:浅拷贝像云同步(部分依赖原数据),深拷贝像整机克隆(完全独立)。
- 遇到嵌套结构,当心浅拷贝的"连带影响"!
Python有哪些数据结构?list和set有什么区别?数组与链表的区别?
一、Python内置数据结构
类型 | 特点 | 示例 |
列表(list) | 有序、可变、允许重复 |
|
元组(tuple) | 有序、不可变、允许重复 |
|
集合(set) | 无序、可变、不允许重复 |
|
字典(dict) | 键值对、键不可重复 |
|
字符串(str) | 不可变字符序列 |
|
二、List(列表) vs Set(集合)
对比项 | List | Set |
顺序 | 保持插入顺序 | 无序(存储顺序不确定) |
重复元素 | 允许重复 | 自动去重 |
查找速度 | 慢(遍历查找,O(n)) | 极快(哈希表实现,O(1)) |
适用场景 | 需要保留顺序或重复数据时 | 去重、快速成员检测 |
示例:
names = ["Alice", "Bob", "Alice"] # List允许重复
unique_names = {"Alice", "Bob"} # Set自动去重
三、数组(Array) vs 链表(LinkedList)
对比项 | 数组 | 链表 |
内存分配 | 连续内存,大小固定 | 非连续内存,动态扩展 |
访问速度 | 极快(O(1),直接索引) | 慢(O(n),需遍历节点) |
插入/删除 | 慢(需移动元素,O(n)) | 快(O(1),修改指针即可) |
适用场景 | 频繁随机访问,数据量固定 | 频繁增删,数据量变化大 |
通俗比喻:
- 数组:像书架上的书,直接按编号拿(快),但插入新书要挪动其他书(慢)。
- 链表:像藏宝图,每步告诉你下一个地点在哪,添加新线索只需改箭头(快),但找宝藏要一步步走(慢)。
四、Python中的实现
- 数组:
-
- 使用
list
(实际是动态数组,非严格数组) - 或
array
模块(类型受限但更省内存)
- 使用
import array
arr = array.array('i', [1, 2, 3]) # 整型数组
- 链表:
-
- 需手动实现或使用
collections.deque
(双端队列,近似链表特性)
- 需手动实现或使用
class Node:def __init__(self, val):self.val = valself.next = None
五、如何选择?
- 需要快速访问/修改? → 用列表(动态数组)
- 需要频繁去重/检测存在? → 用集合
- 需要高效插入/删除? → 考虑链表(但Python中优先用
list
,除非极端性能需求)
总结:Python的list
和set
分别解决顺序存储和快速查询的问题,而数组与链表的区别是内存结构的根本差异。
python怎么为list去重,list,vector,map区别
✅ Python中如何对list
去重
最常见的几种方式如下:
1. 使用set()
去重(简单快捷,但会打乱顺序):
my_list = [1, 2, 2, 3, 1]
unique_list = list(set(my_list))
2. 保持顺序去重(常用于有序数据)
my_list = [1, 2, 2, 3, 1]
unique_list = []
seen = set()
for item in my_list:if item not in seen:seen.add(item)unique_list.append(item)
3. 使用dict.fromkeys()
(保持顺序,适合Python 3.7+)
my_list = [1, 2, 2, 3, 1]
unique_list = list(dict.fromkeys(my_list))
✅ list、vector、map 区别(以编程语言通用概念为基础)
类型 | 描述 | 是否有序 | 是否可重复 | 常用语言中的名称 |
list | 有序元素集合,支持增删改查 | ✅ | ✅ | Python list, Java List |
vector | 动态数组,自动扩容,支持随机访问 | ✅ | ✅ | C++ vector, Java ArrayList |
map | 键值对集合,key唯一,用于快速查找 | ❌(通常无序) | key❌ value✅ | Python dict, C++ map, Java HashMap |
简单说明:
- list 适合顺序存储,如游戏关卡列表、操作记录。
- vector 类似list,但在C++等语言中是支持自动扩容的动态数组,适合频繁插入、访问。
- map 适合按键快速查找数据,比如通过玩家ID查找昵称或背包。
🎮 举个游戏开发中的例子:
- 玩家背包中的物品列表:用
list
或vector
存储。 - 用来映射玩家ID到玩家数据:用
map
(如Python中的dict
)。 - 排行榜查找前100名玩家分数:可以用
list
去重、排序后显示。
总结:
去重方法要结合“是否保留顺序”来选,三种数据结构各有用途,理解它们的特性可以帮助你在实际开发或测试中选择合适的数据结构。
为什么使用递归?
使用递归的主要原因是为了让代码更简洁、结构更清晰,尤其适合处理具有“自相似”特征的问题,比如树结构、分形结构、回溯搜索、数学归纳等场景。
递归是指一个函数调用自身来解决问题,适用于下面这些情况:
- 问题可以分解成规模更小的子问题;
- 子问题的结构与原问题相同(即自相似);
- 最终有一个明确的终止条件(递归出口)。
📌 与 for 循环的对比:
对比点 | for 循环 | 递归 |
代码结构 | 适合线性问题,步骤明确 | 适合分治、树形或图形问题 |
可读性 | 简单任务更直观 | 复杂结构更直观(如树的遍历) |
性能开销 | 更高效,无额外栈空间 | 每次调用会消耗栈空间 |
可维护性 | 复杂问题不易扩展 | 思路清晰,符合数学表达逻辑 |
错误易发点 | 循环条件控制 | 容易造成栈溢出、忘记递归出口 |
✅ 举个典型例子:树的遍历
假设你在游戏里写一个技能树系统,每个技能点可能有多个子技能。
用递归写:
def traverse(skill_node):print(skill_node.name)for child in skill_node.children:traverse(child)
用 for + 栈写:
stack = [root]
while stack:node = stack.pop()print(node.name)stack.extend(node.children)
递归的写法更短,更符合“每个技能点都做同样的事”的逻辑,可读性强,代码更贴近问题本身的结构。
✅ 什么时候选择递归?
- 操作树结构、图结构(如遍历、搜索);
- 问题天然有递归定义(如斐波那契、阶乘、汉诺塔);
- 需要进行回溯、分治、深度优先搜索等;
- 写算法时为了清晰表达思路。
⚠️ 注意:
递归虽然优雅,但也容易出错:
- 如果没有出口条件,容易栈溢出;
- 对性能敏感的程序中,可能需要用循环或栈代替递归(叫做尾递归优化或递归转迭代)。
总结:
递归的好处是:代码更简洁、逻辑更自然,特别适合解决自结构问题;但它在性能和稳定性上不如循环,需要谨慎使用。
在实际工作中,如果功能简单、可控,推荐优先用 for;如果是多层结构、递归定义的问题,就大胆用递归。
python2和python3的区别
Python2 和 Python3 的主要区别集中在语法、标准库、字符编码和底层实现等方面。Python3 是 Python 官方推荐使用的版本,Python2 已在 2020 年正式停止支持。
下面从几个核心角度来对比这两个版本:
1. 打印语法的不同
- Python2:
print
是一个语句
print "Hello, world"
- Python3:
print
是一个函数
print("Hello, world")
2. 字符串的处理(编码)
- Python2 默认字符串是 ASCII 编码,
str
是字节串,unicode
是独立类型
s = "你好" # 报错,默认 ASCII
- Python3 默认字符串是 Unicode 编码,
str
就是 Unicode,bytes
用于字节
s = "你好" # 正常,默认 unicode
3. 整数除法行为
- Python2:整数除法默认是向下取整(地板除)
print(5 / 2) # 输出 2
- Python3:整数除法默认是真实除法(保留小数)
print(5 / 2) # 输出 2.5
若要地板除:使用 //
4. xrange
与 range
- Python2:
-
range
返回的是列表xrange
返回的是生成器(节省内存)
- Python3:
-
range
就是生成器,xrange
被取消了
5. input()
的行为
- Python2:
-
input()
会执行输入的表达式,容易有安全风险raw_input()
才是读取字符串
- Python3:
-
input()
始终返回字符串,语义更清晰
6. 库兼容性
- Python3 的标准库进行了重构和改名,例如:
-
urllib
→ 拆分成urllib.request
,urllib.parse
等Queue
→queue
- 更统一的异常语法:
except Exception as e:
7. 其他特性差异(Python3 的优势)
- 支持更多高级语法,如:
-
f""
格式化字符串- 类型注解(type hints)
async/await
原生支持异步编程- 更清晰的迭代器、生成器写法
- 更好的 Unicode 支持
- 更一致的语言设计理念(移除了旧的不一致用法)
总结对比表:
功能/特性 | Python2 | Python3 |
打印语法 |
|
|
字符编码 | 默认 ASCII,需手动处理 Unicode | 默认 Unicode,字符串更统一 |
除法行为 | 5 / 2 = 2 | 5 / 2 = 2.5 |
/ |
是列表, 是生成器 |
是生成器,没有 |
输入函数 |
|
|
官方支持 | 已停止支持 | 持续更新和优化 |
建议:
如果你正在做任何新项目或测试框架搭建,一定要用 Python3。
Python2 已经是历史版本,虽然一些老项目可能还在维护,但新系统已经不推荐再使用。
相关文章:
python八股文汇总(持续更新版)
python装饰器 一、装饰器是什么? 装饰器是Python中一种"化妆师",它能在不修改原函数代码的前提下,给函数动态添加新功能。 本质:一个接收函数作为参数,并返回新函数的工具。作用:像给手机贴膜…...
C#入门系列【基础类型大冒险】从0到1,解锁编程世界的“元素周期表”
C#入门系列【基础类型大冒险】从0到1,解锁编程世界的“元素周期表” 嘿,欢迎来到C#的奇妙世界!如果把编程比作建造一座大厦,那么基础类型就是我们手中的“砖块”和“水泥”。它们看似普通,却构成了所有复杂程序的基石…...
物流项目第四期(运费模板列表实现)
前三期: 物流项目第一期(登录业务)-CSDN博客 物流项目第二期(用户端登录与双token三验证)-CSDN博客 物流项目第三期(统一网关、工厂模式运用)-CSDN博客 模板列表 在后台系统中,…...
数据中心Overlay解决方案
文档围绕数据中心 Overlay 解决方案展开,指出数据中心向大集中、虚拟化、云业务演进,传统架构存在网络规划复杂、弹性不足、业务扩展受限等问题。Overlay 网络在物理网络上构建虚拟网络,实现名址分离、网络与物理解耦,支持业务灵活部署。方案采用VXLAN 技术(如 SDN 控制模…...
中级网络工程师知识点8
1.无线控制器:实现无线网络统一管理,无缝漫游 2.无线认证系统:实现用户使用用户名和密码认证登录,外来访客通过扫描二维码或者手机短信验证登录无线网络 3.POE交换机:实现无线AP的接入和供电 4.高密吸顶式AP&#x…...
【Linux笔记】——简单实习一个日志项目
🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹: 【Linux笔记】——线程同步信号量与环形队列生产者消费者模型的实现(PV操作) 🔖流水不争…...
BRIGHTONE : 520-On-Chain WOHOO Carnival
BRIGHTONE is launching the “520-On-Chain WooHoo Carnival,” and the very first blast of $WOOHOO goes live right on schedule—ushering in a new on-chain celebration of joy! At exactly 21:09 on May 20, the “520-On-Chain WooHoo Carnival” officially kicks…...
在Java项目中集成Deepseek大语言模型实践指南
1. 引言 随着人工智能技术的发展,大语言模型在各领域应用日益广泛。本文将详细介绍如何在Java项目中集成Deepseek大模型,实现智能文本生成、对话等功能。 2. 前期准备 准备Java Spring Boot项目环境确保Maven已配置注册Deepseek账号并获取API密钥 获取a…...
医疗影像中,DICOM点云、三角面片实体混合渲染(VR)
此文章,涉及到专业性比较强,所以,大部分的内容,基本上都是示例代码的形式出现。以下的技术路径,完全经过实践验证,并且效果很好,可以放心使用。 1 概述 在医学影像中,对DICOM的渲染…...
程序运行报错分析文档
zryhuawei:~/src/modules/Connect$ ./newbuild/OpConnectAidTool \WARNING: MYSQL_OPT_RECONNECT is deprecated and will be removed in a future version. replace into process_tracking (step_id,date,status,context_data,start_time,end_time,error_log) values(?,?,?…...
C++数据结构——红黑树
文章目录 一、背景二、关键操作1. 旋转2. 变色3. 查找4. 插入5. 删除 三、面试考点 一、背景 红黑树(Red-Black Tree)是一种自平衡的二叉搜索树(BST),通过颜色标记和旋转操作保证树的高度平衡,从而确保插入…...
【Java实战】线程池 并发 并行 生命周期(详细解释)
线程池: 一种复用线程的技术 不使用线程池的问题: 用户每提出一个需求,都要创建一个新的线程。 创建线程池的方法: JDK 5.0起提供了一个代表线程池的接口:ExecutorService。 方式一: 使用ExecutorServic…...
Qwen3多方位评测
一、Qwen3核心优势 结论,针对这些场景:上下文理解、任务编排、工具调用、数据要素抽取等环节,Qwen3-32B已接近DeepSeek-R1。 二、关键测试环节 1、上下文改写 Qwen3-32B对绝对时间语境理解优于Qwen2.5-72B。 其余改写方面,三…...
银行反欺诈理论、方法与实践总结(下):解决方案
一、金融反欺诈防控体系 反欺诈防控体系是金融机构应对欺诈风险的重要工具,它通常包括事前识别、事中决策和事后处置三个关键阶段。 事前识别阶段:此阶段涉及欺诈情报的收集和账户安全的保护,通过名单和画像的构建来识别潜在风险。例如&…...
自回归图像编辑 EditAR: Unified Conditional Generation with Autoregressive Models
Paperhttps://arxiv.org/pdf/2501.04699 Code (coming soon) 目录 方法 实验 EditAR是一个统一的自回归框架,用于各种条件图像生成任务——图像编辑、深度到图像、边缘到图像、分割到图像。 next-token预测的功效尚未被证明用于图像编辑。 EditAR主要构建在Ll…...
Java中的集合详解
下面是文章详细介绍了 Java 集合框架的基本思路、主要接口与实现、各类集合之间的区别与各自的适用场景,以及一些常见的使用技巧和最佳实践,供你参考。 Java中的集合详解 在 Java 开发中,集合(Collection)作为存储和操…...
前端mjs和js文件区别,mjs和cjs区别---.es.js和.mjs的区别
https://www.cnblogs.com/jocongmin/p/18432236 同一份配置如下,一般打包出来的结果时是一样的,只不过扩展名不一样 export default defineConfig({build: {rollupOptions: {output: [// 同一份配置,仅扩展名不同{ format: es, entryFileNames: [name].mjs },{ fo…...
【深度学习】Transformer 的应用
目录 一、自然语言处理领域 1、自然语言处理领域的应用 2、BART模型 3、BERTSum模型与自动文本摘要 4、SG-Net与机器阅读理解 5、SG-Net的应用 6、总结 二、计算机视觉领域 1、图像分类 (1)背景与挑战 (2)Transformer的…...
C#学习10——泛型
一、什么是泛型? 官方理解:允许开发者在定义类、接口、方法或委托时使用类型参数 个人理解: 类型模具(类似Object变色龙) 二、泛型有什么用? 通过参数化类型实现代码复用,提升类型安全性并…...
Spring Validation校验
使用 JSR 303 (Bean Validation) 校验接口参数 JSR 303,也称为Bean Validation规范,提供了一种在Java应用程序中执行验证的标准化方式。它允许你通过注解直接在领域或者DTO(数据传输对象)类上定义校验规则。 1. 添加依赖 首先需…...
精益数据分析(72/126):MVP的核心法则——消除阻碍与聚焦关键指标
精益数据分析(72/126):MVP的核心法则——消除阻碍与聚焦关键指标 在创业领域,许多失败案例源于对产品开发的认知偏差——过度追求功能完善或盲目跟风增长,却忽略了用户核心需求的最直接满足。今天,我们结合…...
从头实现react native expo本地生成APK
根据github上老外的经验制作了一个react native expo项目起始模版,准备放到资源下载里(已经免积分放置好),这个起始模版带有个人非常喜欢的tailwindcss,由于raact native使用sheetstyle这种风格的样式,不太喜欢.当然,我们使用react native paper组件库时,就要对组件库里的组件使…...
打卡第二十三天
仔细回顾一下之前21天的内容,没跟上进度的同学补一下进度。 作业: 自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码。 使用Kaggle平台的注意点 Kaggle是一个数据科学竞赛平台,提供了丰富的数据…...
关于汇编语言与接口技术——单片机串行口的学习心得
学习目标: 1.了解AT89S51单片机片内串行口的基本工作原理 2.掌握与串行口有关的特殊功能寄存器以及四种工作方式 一、串行口内部结构 单片机串行口有两个独立的接收、发送缓冲器SBUF,属于特殊功能寄存器,可以同时发送、接收数据;…...
汇川PLC通过Profinet转ModbusTCP网关读取西门子PLC数据案例
Modbus TCP主站即Modbus TCP客户端,Modbus TCP主站最多支持同时与31个Modbus TCP从站 。(Modbus TCP服务器)进行通信。 第一步设置PLC IP地址; 默认PLC IP地址为192.168.1.88。根据需要判断是否需要修改。 第二步添加Modbus TCP…...
2025-05-20 模型下载--文本向量化--Faiss检索
模型下载 使用Python脚本进行下载 from huggingface_hub import snapshot_download # import os# os.environ["HF_ENDPOINT"] "https://hf-mirror.com" # 自定义下载目录(Windows 路径建议用 raw string 或 pathlib) download_di…...
idea本地debug断点小技巧
idea本地debug断点小技巧 简单的设置断点条件 断点后,右键这个断点,可以在 condition 中填写能得出布尔的表达式 a 1 你如果写如下,表示先给他赋值,然后断住 a 2; true 断点后设置某个变量的值 在 debug 区域可以设置变量…...
Mybatis面向接口编程
添加与Mapper接口的映射 <!--UserMapper.xml--> <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> …...
谈谈对《加密算法》的理解
文章目录 一、什么是加密算法?二、常见的加密算法有哪些?2.1 对称加密2.2 非对称加密2.3 哈希算法 三、加密算法代码展示3.1 MD5加密3.2 秘钥加密3.3 AES加密解密 四、加密算法的使用场景 一、什么是加密算法? 加密算法是一种通过数学方法将…...
代码随想录算法训练营第60期第四十二天打卡
大家好,今天还是继续我们的动态规划里面的背包问题,前面我们主要接触的是0-1背包和完全背包,其实这两个背包问题主要就是看看每一件物品我们是否有多件,如果每一件物品我们只能取一次的话那这样我们就是0-1背包,如果每…...
Java并发进阶系列:深度讨论官方关于jdk1.8ConcurrentHashMap的computeIfAbsent源代码修复逻辑
在文章中《深度解析官方关于jdk1.8的resizeStamp的bug处理过程》,我们讨论关于CHM的核心设计——resizeStam需要修复的处理过程,本文再次基于openJDK的bugs讨论组提出的CHM源代码另外一个会造成死循环的bug,默认读者已经掌握CHM的核心源代码实…...
npm vs npx 终极指南:从原理到实战的深度对比 全面解析包管理器与包执行器的核心差异,助你精准选择工具
npm vs npx 终极指南:从原理到实战的深度对比 全面解析包管理器与包执行器的核心差异,助你精准选择工具 一、核心定位差异 #mermaid-svg-xM2GZt0lejj6hYk6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}…...
RK3588 IREE+Vulkan ResNet50推理测试
RK3588 IREE+Vulkan ResNet50推理测试 背景一.性能数据【暂不考虑该框架】二.操作步骤2.1 搭建NFS服务,解决IREE编译时,空间不足的问题2.2 编译、安装`IREE`2.2.1 挂载NFS2.2.2 安装依赖2.2.3 编译`IREE`2.2.4 获取驱动及设备信息2.2.5 下载推理图片2.2.6 生成`onnx`模型转换脚…...
Blaster - Multiplayer P77-P89: 武器瞄准机制
P78_ Blaster HUD And Player Controller P78_1 创建PC和HUD P78_2 Tick Component > SetHUDCrosshairs() P79_ Drawing the Crosshairs DrawHUD() Call Every Tick. #include "HUD/BlasterHUD.h"void ABlasterHUD::DrawHUD() {Super::DrawHUD();FVector2D View…...
【每天一个MCP】【记录向】:准备工作,创建github项目
记录一下: 新建一个仓库 各种填写项目信息 点击创建 👆不错,开张了~ 尝试一下这个桌面版的github 登录 果然方便 太高级了。~...
元宇宙中的虚拟经济:机遇与挑战
随着元宇宙概念的兴起,虚拟经济逐渐成为全球科技和经济领域关注的焦点。元宇宙不仅是一个虚拟的社交和娱乐空间,更是一个充满经济活动的全新生态系统。从虚拟货币到数字资产,从虚拟商品交易到去中心化金融(DeFi)&#…...
多环境回测模拟不同市场条件下的策略表现
Backtrader库的核心组件包括数据源、策略、执行引擎和结果分析器。通过组合这些组件,可以构建一个完整的交易系统。 在进行回测之前,需要准备历史市场数据。Backtrader支持多种数据格式,如CSV文件、Pandas数据框等。 加载数据 可以使用Backtrader提供的bt.feeds.YahooFina…...
nRF Connect SDK开发之(1)环境搭建
目录 一、安装 nRF Connect SDK 开发环境 1)git 2)python 3) J-Link 编辑 4)nrfutil 1.将nrfutil应用程序所在目录添加到系统路径PATH 2.在命令行中输入nrfutil检测是否可以正常运行 3.运行命令以列出可用命令:nrfutil search 4.安装 device 、toolchain-man…...
武汉火影数字|数字展厅展馆制作:沉浸式体验,全方位互动
在科技飞速发展的当下,数字技术正以前所未有的速度渗透到各个领域,展厅展馆行业也不例外。数字展厅展馆作为传统展厅展馆的创新升级,正逐渐成为展示领域的新宠,为观众带来前所未有的沉浸式体验。 与传统展厅相比,数字展…...
MinIO集群故障,其中一块driver-4异常
现象 driver-4 Offline,驱动状态为未知。 处理过程 建议每个驱动下面新建个文件,便于根据目录里面的drive-x文件区分驱动 rootpve:/mnt/drive-4# df -h Filesystem Size Used Avail Use% Mounted on /dev/sdb 3.7T 695G 3.0T 19% …...
整型数相加的溢出
当正溢出时,返回TMax,负溢出时,返回TMin。这种运算常用在执行数字信号处理的程序中。 程序代码 int saturating_add(int x,int y);void main() {static int x,y;static int i1,sum;x(i<<15)-1;y(i<<15)-1;sumsaturating_add(x,…...
科目一知识点快速回顾与总结
科目一知识点笔记 扣12分的情况 高速上倒掉逆12;普通路上倒掉1逆3 使用伪造,变造的驾驶证(行驶证)一次记12 饮酒驾驶12 代替实际机动车驾驶人接受交通违法行为处罚和记分牟取经济利益的,一次记12 驾驶校车&#x…...
大模型高效微调技术全面解析:从PEFT原理到实战应用
目录 1. 大语言模型与微调概述 1.1 大语言模型(LLM)简介 1.2 微调的必要性与挑战 2. 参数高效微调(PEFT)技术原理 2.1 PEFT概述 2.2 主要PEFT方法 2.2.1 适配器(Adapters) 2.2.2 LoRA(低秩自适应) 2.2.3 QLoRA(量化LoRA) 2.2.4 IA3(通过抑制和放大内部激活注入适配器)…...
51单片机编程学习笔记——无源蜂鸣器演奏《祝你生日快乐》
大纲 蜂鸣器分类有源蜂鸣器无源蜂鸣器 电路图发声演奏《祝你生日快乐》模拟88键钢琴发声音符时值(Note Value)演奏完整代码 蜂鸣器是一种常用的电子发声器件,有源蜂鸣器和无源蜂鸣器在工作原理和特性上有明显区别。 蜂鸣器分类 有源蜂鸣器 …...
大语言模型的评估指标
介绍 语言模型的 BLEU、ROUGE 和 困惑度(Perplexity) 三种常用的语言模型评估指标,帮助你快速理解它们的含义、计算方法及优缺点。 概览 这些指标都是为了解决:「我们自动生成的句子到底有多好?」这个问题࿱…...
绿色免安装 批量重命名软件 标签管理,文件整理提升效率
各位文件整理小能手们,今天给大家介绍一款超牛的工具——拖把更名器!它是专门搞批量文件重命名的实用家伙,能对文件名、扩展名还有音乐文件标签进行高效管理。 咱先说说它的核心功能。首先是基础重命名操作,它能添加、删除、替换…...
python-leetcode 68.有效的括号
题目: 给定一个只包括“(”),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足:左括号必须用相同类型的右括号闭合;左括号必须以正确的顺序闭合,…...
ES(Elasticsearch) 基本概念(一)
Elasticsearch作为当前最流行的开源搜索和分析引擎,广泛应用于日志分析、全文搜索、业务智能等领域。Elasticsearch是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展数据存储和矢量数据库。它针对生产级工作负载的速度和相关性进行了优化。使用 Elasti…...
软考软件评测师—— 操作系统综合知识
目录 嵌入式操作系统 三态模型 操作系统概念 其他操作系统 绝对路径与相对路径 段页式管理 嵌入式操作系统 嵌入式操作系统(EOS)具有以下特点: 可裁剪性:支持开发性和可伸缩性的体系结构,能够根据需求进行功能…...
简单的re(零基础AI做题)
签到题一般简单,上来就是IDA(不管了,IDA!!!) 找主函数,这个题类似的做过好几个了 int __fastcall main(int argc, const char **argv, const char **envp) {__int64 v3; // rdx__i…...