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

光电效应及普朗克常数的测定数据处理 Python实现

内容仅供参考,如有错误,欢迎指正,如有疑问,欢迎交流。 

因为我不会Excel所以只能用Python来处理

祝大家早日摆脱物理实验的苦海

用到的一些方法

PCHIP (分段三次埃尔米特插值多项式)

因为实验时记录的数据比较少,记录的也比较随便,直接将这些数据连起来的话画出的图像十分的直,而伏安特性曲线顾名思义应该是一条曲线,因此我们需要进行数据拟合,但是呢我们发现直接进行数据拟合会出现下面的情况,即在某些区间内,电压上升电流反而下降了,这很不合理,所以我让AI帮我想到了PCHIP插值法进行数据点的扩展,具体是啥我也不知道,反正用就完了

利用导数找拐点

看了示范报告,一开始把零点当成拐点算了,爆炸了

找拐点的方法我试了好多种,二阶导等于零、一阶导的极值、一阶导作差、一阶导和各种阈值比较等等,最后我用的是区间斜率与整体斜率的比较,也算是一阶导和阈值比较的一种吧。

这些方法的核心思想都是在伏安特性曲线上找到电流变化陡峭的拐点,并将其对应的电压作为截止电压,关键是怎样才算陡峭。本文用到的方法中,先计算电流随电压的平均变化率(即平均斜率),作为基准值 threshold =(I_max - I_min) / (U_max - U_min),随后遍历所有插值后的数据点,利用五点差分法计算其局部斜率,如果这个局部斜率是基准斜率的1.5倍,就将其认为是拐点,记录并退出循环。但是因为找到了第一个就退出循环了并且“1.5倍”不一定是每组数据的最佳选择,所以结果可能会出现较大误差。

threshold = (max(y_dense) - min(y_dense)) / (x_max - x_min)  # 导数阈值for i in range(nums_data):if (y_dense[i + 5] - y_dense[i]) / (x_dense[i + 5] - x_dense[i]) > threshold * 1.5:cutoff_voltage = x_dense[i]break

代码

import openpyxl
import matplotlib.pyplot as plt
import numpy as np
import os
from matplotlib.ticker import FormatStrFormatter
from scipy.interpolate import PchipInterpolator
from docx import Document
from docx.shared import Inches# 设置支持中文的字体和正常显示负号
plt.rcParams['font.sans-serif'] = ['SimHei']  # 或者 ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus'] = False# ------------------------------------------控制台--------------------------------------------------
N = 5  # 数据组数cutoff_voltages = [] # 截止电压 (V)
calculate = 1 # 数据计算+图片输出
save_to_word = 0 # 将图片保存到 Word 文档output_dir = r"C:\Users\86138\Desktop\这是文件夹\这是文件夹里的文件夹" # 指定图片保存目录
excel_file = r"C:\Users\86138\Desktop\这是文件夹\这是xlsx.xlsx"  # Excel 文件路径 (用于加载原始数据和储存计算后的数据)
word_file = r"C:\Users\86138\Desktop\这是文件夹\这是docx.docx"  # Word 文件路径(用于读取图片并保存)# --------------------------------------------------------------------------------------------------auto = 0 if cutoff_voltages else 1
os.makedirs(output_dir, exist_ok=True)  # 确保目标文件夹存在def Htlang():# 物理常数c = 3.0e8  # 光速,单位 m/s# 1. 加载 Excel 文件wb = openpyxl.load_workbook(excel_file)sheet = wb.active# 2. 确定数据组的行间隔(第一组从第 1 行开始,每组占 2 行)group_start_rows = [1 + i * 2 for i in range(N)]  # 生成 [1, 3, 5, 7, 9]# 3. 存储所有数据以便后续绘图wavelengths = []     # 波长 (nm)frequencies = []     # 频率 (10^-14 Hz)# 4. 处理每一组数据for group_idx, start_row in enumerate(group_start_rows, start=1):# 读取表格名称、坐标轴标签table_name = sheet.cell(row=start_row, column=1).value  # A列存储波长信息(例如 "365nm")x_label = sheet.cell(row=start_row, column=2).value       # B列第一行: 横坐标标签(电压)y_label = sheet.cell(row=start_row + 1, column=2).value     # B列第二行: 纵坐标标签(电流)# **处理 y_label,将乘方变为上标**if y_label:y_label = y_label.replace("10-10", r"$10^{-10}$") \.replace("10-11", r"$10^{-11}$") \.replace("10-12", r"$10^{-12}$")# 读取电压与电流数据(从 C 到 L 列)voltage_data = []current_data = []for col in range(3, 13):  # C(3)到L(12)v = sheet.cell(row=start_row, column=col).value  # 电压数据i = sheet.cell(row=start_row + 1, column=col).value  # 电流数据voltage_data.append(v)current_data.append(i)# 计算频率# 从 table_name 中去除末尾两个字符(例如 "nm")转换为 int 得到波长wavelength_nm = int(table_name[:-2])wavelength_m = wavelength_nm * 1e-9  # 转换为 mfrequency = c / wavelength_m  # 计算频率 (Hz)frequency_14 = frequency / 1e14  # 以 10^-14 Hz 为单位wavelengths.append(wavelength_nm)frequencies.append(frequency_14)# 过滤并排序有效数据valid_indices = [i for i, (v, i_val) in enumerate(zip(voltage_data, current_data))if v is not None and i_val is not None]x = np.array([voltage_data[i] for i in valid_indices])y = np.array([current_data[i] for i in valid_indices])# 按电压升序排列sort_idx = np.argsort(x)x_sorted = x[sort_idx]y_sorted = y[sort_idx]if auto:cutoff_voltage = Noneelse:cutoff_voltage = cutoff_voltages[group_idx - 1]try:# 使用保形插值(保证单调性)pchip = PchipInterpolator(x_sorted, y_sorted)nums_data = 300# 生成密集采样点,用于绘制曲线(扩展范围为原数据范围两侧各扩展10%)x_min, x_max = np.min(x_sorted), np.max(x_sorted)x_range = x_max - x_minx_dense = np.linspace(x_min - 0.1*x_range, x_max + 0.1*x_range, nums_data)y_dense = pchip(x_dense)if auto:threshold = (max(y_dense) - min(y_dense)) / (x_max - x_min)  # 导数阈值for i in range(nums_data):if (y_dense[i + 5] - y_dense[i]) / (x_dense[i + 5] - x_dense[i]) > threshold * 1.5:cutoff_voltage = x_dense[i]breakexcept Exception as e:print(f"[{group_idx}] 插值失败,使用线性连接: {str(e)}")cutoff_voltage = Nonex_dense = x_sortedy_dense = y_sortedif auto:if cutoff_voltage is not None:print(f"[{group_idx}] 拐点确定的截止电压: {cutoff_voltage:.3f} V")else:print(f"[{group_idx}] 未检测到拐点,截止电压无法确定")cutoff_voltages.append(cutoff_voltage)# 绘制伏安特性曲线plt.figure(figsize=(10, 7))plt.plot(x_dense, y_dense, 'b-', linewidth=2, label="拟合曲线")plt.scatter(x_sorted, y_sorted, c='red', s=50, marker='o',edgecolors='k', label="实验数据")if cutoff_voltage is not None:plt.axvline(cutoff_voltage, color='red', linestyle='--', label=f"截止电压: {cutoff_voltage:.2f} V")plt.xlabel(x_label)plt.ylabel(y_label)plt.title(f"伏安特性曲线,波长 {table_name}")plt.grid(True)plt.legend()plt.tight_layout()output_path = os.path.join(output_dir, f"output_{group_idx}.png")plt.savefig(output_path, dpi=300)plt.close()print(f"[{group_idx}] 图像已保存至: {output_path}")# 5. 线性拟合:截止电压 vs 频率(计算拟合参数及其不确定度)freq_array = np.array(frequencies)volt_array = np.array(cutoff_voltages, dtype=float)# 使用 cov=True 得到参数协方差矩阵coeffs, cov = np.polyfit(freq_array, volt_array, 1, cov=True)k, b = coeffserr_k = np.sqrt(cov[0, 0])  # 斜率 k 的标准差,即不确定度# 6. 绘制截止电压 vs 频率 图(增加数据点连接线,并设置刻度格式)plt.figure(figsize=(8, 6))plt.scatter(freq_array, volt_array, color='blue', label="实验数据")plt.plot(freq_array, volt_array, 'b-', label="数据连接线")plt.plot(freq_array, k * freq_array + b, 'r--', label=f"拟合直线: $U_s = {k:.4f}f + {b:.4f}$\n斜率不确定度: ±{err_k:.4f}")plt.xlabel(r"频率 ($10^{-14}$ Hz)")plt.ylabel("截止电压 (V)")plt.title("截止电压-频率图线")plt.grid(True)plt.legend()ax = plt.gca()ax.xaxis.set_major_formatter(FormatStrFormatter('%.3f'))  # 横轴保留三位小数ax.yaxis.set_major_formatter(FormatStrFormatter('%.2f'))  # 纵轴保留两位小数plt.tight_layout()output_path = os.path.join(output_dir, f"output_{N + 1}.png")plt.savefig(output_path, dpi=300)plt.close()print(f"截止电压-频率图已保存至: {output_path}")# 7. 计算普朗克常数h0 = 6.64 * 10**(-34)  # 公认普朗克常数 (J·s)e = 1.6 * 10**(-19)  # 电子电荷量 (C)h = e * (-k) * 1e-14  # 计算出的普朗克常数 (J·s)_h = e * err_k * 1e-14  # 计算出的普朗克常数的不确定度 (J·s)Ep = (h - h0) * 100 / h0# 8. 写入 Excel# 将标题写入 A15, A16, A17sheet["A15"] = "波长 (nm)"sheet["A16"] = "频率 (10^-14 Hz)"sheet["A17"] = "截止电压 (V)"# 假设数据组数为 5,对应写入 B 到 F 列for i, (w, f, u) in enumerate(zip(wavelengths, frequencies, cutoff_voltages)):col_letter = chr(ord('B') + i)  # B, C, D, E, Fsheet[f"{col_letter}15"] = f"{w:.0f}"sheet[f"{col_letter}16"] = f"{f:.2f}"sheet[f"{col_letter}17"] = f"{u:.2f}"# 将计算结果写入 Excel(从 A19 开始)sheet["A19"] = "h"sheet["B19"] = f"{h * 10 ** 34:.2f} × 10^(-34) J·s"sheet["A20"] = "Δh"sheet["B20"] = f"{_h * 10 ** 34:.2f} × 10^(-34) J·s"sheet["A21"] = "h±Δh"sheet["B21"] = f"{h * 10 ** 34:.2f} ± {_h * 10 ** 34:.2f} × 10^(-34) J·s"sheet["A22"] = "Ep"sheet["B22"] = f"{Ep:.2f}%"wb.save(excel_file)print("计算结果已写入 Excel")print(f"{Ep:.2f}%")if save_to_word:from docx import Documentfrom docx.shared import Inchesdef Htlanglanglang():doc = Document()# 创建表格(3 行 2 列),确保六张图片能排在一页上table = doc.add_table(rows=3, cols=2)table.autofit = True  # 自动调整列宽img_index = 0  # 计数器for i in range(1, N + 2):  # 遍历所有图片(包括截止电压-频率图)image_path = os.path.join(output_dir, f"output_{i}.png")if os.path.exists(image_path):row = img_index // 2  # 计算行号col = img_index % 2   # 计算列号cell = table.cell(row, col)  # 获取单元格paragraph = cell.paragraphs[0]run = paragraph.add_run()run.add_picture(image_path, width=Inches(3))  # 调整宽度,确保 3 张图片一行img_index += 1doc.save(word_file)print(f"实验结果已保存至 Word: {word_file}")if calculate:Htlang()
if save_to_word:Htlanglanglang()

 操作步骤

第0步 创建所需文件

在电脑某个位置新建一个文件夹,然后在新建的文件夹里新建一个.xlsx文件、一个.py文件、一个.docx文件以及一个文件夹,完成后大概长下面这样

第1步 填入数据、粘贴代码

打开excel文件,将原始数据输入,格式如下

注意:A列的几个单元格要合并一下不然会报错(我懒的调了),电流的单位中的-11次方这些不需要在excel中就给它改为上标不然不知道会不会报错(我懒的试了)

打开Python文件,将代码粘贴进去,并在代码中注释了控制台的部分对文件路径进行修改

第2步 安装必要的Python扩展库

打开cmd,输入以下代码(二选一)

pip install scipy
pip install python-docx
pip install openpyxl
pip install matplotlib
pip install numpy
pip install openpyxl matplotlib numpy scipy python-docx

第3步 运行代码

一切顺利的话运行结果大致如下

 此外,打开excel,会发现多了一些数据

文件夹里也会多出6张图片

第4步 发现问题并稍加调整

因为找拐点的方法比较粗略,所以可能会存在较大的误差,导致算出来的百分差严重超标,所以我们需要进行手动调整,然后将五个截止电压在代码中事先输入,如下图

第5步 再次运行代码

我们需要不断的调整和尝试,直到把百分差降到10%以下

注意:运行时记得把excel关掉否则会报错

第6步 把图片保存到word中

经过不断的调整,将百分差控制在10以内之后,将代码中的save_to_word这个变量设置为1(当然一开始就设置为1也不是不行,开始教学之前我忘记改了),再次运行代码(此时可以将变量calculate设置为0,不过无所谓,数据量不大,运行也耗不了多长时间),会发现输出多了一句话

然后就可以打开word,按自己的需求调整图片的大小(代码已经初步调好了),然后去打印店打印结果了。

相关文章:

光电效应及普朗克常数的测定数据处理 Python实现

内容仅供参考,如有错误,欢迎指正,如有疑问,欢迎交流。 因为我不会Excel所以只能用Python来处理 祝大家早日摆脱物理实验的苦海 用到的一些方法 PCHIP (分段三次埃尔米特插值多项式) 因为实验时记录的数…...

hyperf中关于时间的设定

下面我来总结这三者的用法和它们之间的关系: 1. protected ?string $dateFormat U; 作用: 定义数据库日期字段的存储格式‘U’ 表示使用 Unix 时间戳格式(秒级,10位数字) 影响范围: 决定了模型从数据…...

编程实现自我指涉(self-reference)

从计算机的组成原理出发,编程实现自我指涉(self-reference)本质上是通过代码操纵代码,形成逻辑上的闭环。这种能力不仅是编程语言设计中的一个奇妙现象,更是计算理论、计算机架构、乃至哲学层面的一种深刻映射。让我们…...

数据类设计_图片类设计_矩阵图类型和像素图类型设计的补充

前言 以矩阵图类型和像素图类型作为图像类数据的基础,但在使用过程中有个问题:矩阵图形和像素图形的尺寸---长和高没有表现出来,本贴对此做出分析. 引入 原帖数据类设计_图片类设计之7_矩阵图形类设计更新_实战之页面简单设计(前端架构)-CSDN博客里有对…...

php写入\查询influxdb数据

namespace app\index\controller;use InfluxDB2\Client; use InfluxDB2\Model\WritePrecision; use InfluxDB2\Point;class Demo {/*** 显示资源列表** return \think\Response*/public function index(){$token 你的TOKEN;$org zzlichi;$bucket initdb;$client new Client…...

新手村:逻辑回归-理解02:逻辑回归中的伯努利分布

新手村:逻辑回归-理解02:逻辑回归中的伯努利分布 伯努利分布在逻辑回归中的潜在含义及其与后续推导的因果关系 1. 伯努利分布作为逻辑回归的理论基础 ⭐️ 逻辑回归的核心目标是: 建模二分类问题中 目标变量 y y y 的概率分布。 伯努利分布&#xff08…...

Python正则表达式(一)

目录 一、正则表达式的基本概念 1、基本概念 2、正则表达式的特殊字符 二、范围符号和量词 1、范围符号 2、匹配汉字 3、量词 三、正则表达式函数 1、使用正则表达式: 2、re.match()函数 3、re.search()函数 4、findall()函数 5、re.finditer()函数 6…...

JavaScript基础-事件委托(代理、委派)

在Web开发中,处理用户交互时经常需要监听DOM元素上的事件。然而,当页面上存在大量的动态生成的元素时,直接给每个元素绑定事件处理器可能会导致性能问题和代码管理复杂度增加。这时,事件委托提供了一种更加高效且易于维护的解决方…...

《TCP/IP网络编程》学习笔记 | Chapter 22:重叠 I/O 模型

《TCP/IP网络编程》学习笔记 | Chapter 22:重叠 I/O 模型 《TCP/IP网络编程》学习笔记 | Chapter 22:重叠 I/O 模型理解重叠 I/O 模型重叠 I/O本章讨论的重叠 I/O 的重点不在于 I/O 创建重叠 I/O 套接字执行重叠 I/O 的 WSASend 函数进行重叠 I/O 的 WSA…...

【区块链安全 | 第二篇】区块链概念详解

文章目录 概述1. 区块链类型2 区块链五层架构3 账本模型4. 节点(Node)5. 区块(Block)6. 区块链(Blockchain)7. 区块链工作流程 核心技术1. 共识机制2. 智能合约 主要组件1. 交易(Transaction&am…...

Android实践开发制作小猴子摘桃小游戏

Android实践制作小猴子摘桃小游戏 实践素材项目源文件获取:Android可以存在版本差异项目如果不能正确运行,可以使用里面的素材自己构建项目Android实践制作小猴子摘桃小游戏Android实践制作小猴子摘桃小游戏https://mp.weixin.qq.com/s/jNU_hVfj9xklsil…...

“11.9元“引发的系统雪崩:Spring Boot中BigDecimal反序列化异常全链路狙击战 ✨

💥 "11.9元"引发的系统雪崩:Spring Boot中BigDecimal反序列化异常全链路狙击战 🎯 🔍 用 Mermaid原生防御体系图 #mermaid-svg-XZtcYBnmHrF9bFjc {font-family:"trebuchet ms",verdana,arial,sans-serif;fon…...

【C++】回调函数和回调对象

文章目录 回调可调用对象函数指针作回调函数对象作回调函数对象的使用std::function【C11】作回调使用 【C11】Lambda表达式作回调【C11】bind对象作回调std::bind的使用作回调使用 回调 当发生某种事件时需要调用或触发另一个事件即为回调,回调的核心即为将可调用…...

电子产品可靠性预计怎么做?

目录 1、电子产品可靠性预计的目的 2、电子产品可靠性预计的常用方法 2.1、基于统计数据的预计方法 2.2、物理模型预计方法 2.3、加速寿命试验 2.4、基于仿真的预计方法 3、电子产品可靠性预计的步骤 3.1、定义可靠性指标 3.2、收集数据 3.3、建立模型 3.4、进行仿真…...

Ubuntu20.0.4创建ssh key以及repo命令的使用

创建ssh key ssh-keygen //一路回车,不用输入任何东西cat ~/.ssh/id_rsa.pub 配置git config git config --global user.name xxx // 设置git用户名git config --global user.email xxx.com.cn //设置git 邮箱git config --list// remove the git config// rm -fr …...

Java动态代理的使用和安全问题

前言: java的动态代理是指进行明确的分工的操作(多接口 比如我是酒店的老板 有人找我合作 需要先经过前台 我的助理 而不是直接找我) 序列化 :为什么序列化 序列化的对象是一个类 我们也叫对象 class一堆东西里面有很多函…...

Linux云计算SRE-第二十一周

构建单节点prometheus,部署node exporter和mongo exporter。构建kibana大盘。包含主机PU使用率,主机MEM使用率,主机网络包速度。mongo db大盘,包含节点在线状态,读操作延迟等 一、实验环境准备 - 节点信息&#xff1…...

《Python实战进阶》第33集:PyTorch 入门-动态计算图的优势

第33集:PyTorch 入门-动态计算图的优势 摘要 PyTorch 是一个灵活且强大的深度学习框架,其核心特性是动态计算图机制。本集将带您探索 PyTorch 的张量操作、自动求导系统以及动态计算图的特点与优势,并通过实战案例演示如何使用 PyTorch 实现…...

python dict转换成json格式

一开始你变成字典格式 data [ { a : 1, b : 2, c : 3, d : 4, e : 5 } ] import json data [ { a : 1, b : 2, c : 3, d : 4, e : 5 } ] data2 json.dumps(data) print(data2)json.dumps(data) 是将数组json化。 json格式化输出 data2 json.dumps({a: Runoob, b: 7…...

美亚科技业绩波动明显:现金流为负,四起未决诉讼涉金额1700万

《港湾商业观察》施子夫 近期,广东美亚旅游科技集团股份有限公司(以下简称,美亚科技)披露第二轮审核问询函的回复。从两轮问询函监管层提出的问题来看,有关美亚科技业绩增长的合理性、募投项目的必要性及合理性、经营…...

Java面试总结+算法

目录 Java 中 和 equals 的区别是什么? 什么是类加载器,Java 中有哪些类加载器?它们的职责分别是什么? Redis 有哪些数据结构?它们分别适用于哪些场景? 什么是索引?MySQL 有哪些常见的索引类…...

深度优先搜索(DFS)在排列组合问题中的应用详解:C++实现与优化

一、排列问题&#xff08;Permutations&#xff09; 目标&#xff1a;生成所有可能的排列&#xff08;元素顺序不同视为不同结果&#xff09;。 示例&#xff1a;输入 [1,2,3]&#xff0c;输出所有长度为3的排列&#xff0c;共6种。 C实现代码 #include <iostream> #i…...

GeoChat : Grounded Large Vision-Language Model for Remote Sensing论文精读

GeoChat : Grounded Large Vision-Language Model for Remote Sensing 是一个针对遥感场景的llm&#xff0c;提供支持多任务对话&#xff08;对高分辨率遥感图像&#xff09;。也造了个数据集。 一些思考&#xff1a; 文中提到的局限性&#xff1a;小物体和多框预测较难。小物…...

Postman使用02、断点、fiddler弱网测试

脚本操作 一、脚本导出 1.导出json脚本 2.打包json文件 3.下载的文件 二 .导入脚本 1.选择文件 2.点击导入 3.导入的接口 三.多接口运行 1.集合右键&#xff0c;点击run &#xff0c;运行多个接口 2.编辑环境&#xff0c;集合&#xff0c;执行次数等 3.运行多个接口 四.运行…...

深入解析 C++20 中的 std::bind_front:高效函数绑定与参数前置

文章目录 1. 什么是 std::bind_front&#xff1f;2. 使用 std::bind_front2.1 基本用法2.2 绑定多个参数 3. 优势与特点3.1 简化代码3.2 支持可调用对象3.3 支持完美转发 4. 实际应用场景4.1 事件处理4.2 算法通用化4.3 成员函数调用 5. 总结 在现代 C 编程中&#xff0c;函数绑…...

Opencv计算机视觉编程攻略-第三节 图像颜色处理

第三节 图像颜色处理 1.颜色比较2.GrabCut分割图像3.色调、饱和度以及亮度 1.颜色比较 主要实现逐像素的颜色比较&#xff0c;其中注意BGR颜色空间不连续&#xff0c;不利于颜色提取和区分&#xff0c;转换到Lab空间&#xff1a; int getColorDistance(const cv::Vec3b& c…...

第十七章:Future Directions_《C++ Templates》notes

Future Directions 核心重难点&#xff1a;示例代码&#xff1a; 设计题多选题答案设计题详解 核心重难点&#xff1a; 泛型非类型模板参数 允许任意类型作为非类型模板参数&#xff08;如template<typename T, auto N>&#xff09;需解决类型推导和链接问题 编译期控制…...

ComfyUI-PSD-Replace: 海报与壁纸批量生成

ComfyUI-PSD-Replace: 海报与壁纸批量生成 &#x1f680; 插件介绍 ComfyUI-PSD-Replace 是一款强大的图像批量处理插件&#xff0c;专为设计师和创意工作者打造。无论你是想快速生成多款海报、定制壁纸&#xff0c;还是批量更新设计模板&#xff0c;本插件都能帮你轻松实现&a…...

图解预训练模型 ELMo 和 BERT

一、ELMo 二、BERT 以上笔记参考自b站up主 自然卷小蛮&#xff08;自然卷小蛮的个人空间-自然卷小蛮个人主页-哔哩哔哩视频&#xff09;&#xff0c;感兴趣的可以去深入了解。...

YoloV8训练和平精英人物检测模型

概述 和平精英人物检测&#xff0c;可以识别游戏中所有人物角色&#xff0c;并通过绘制框将人物选中&#xff0c;训练的模型仅仅具有识别功能&#xff0c;可以识别游戏中的视频、图片等文件&#xff0c;搭配Autox.js可以推理&#xff0c;实现实时绘制&#xff0c;但是对手机性…...

基于物联网的智能蔬菜仓库设计(论文+源码)

1系统功能分析 由于蔬菜仓库内部环境直接影响到内部货物的正常存储工作&#xff0c;因此对蔬菜仓库内部环境进行智能化的监控具有重要意义。本次基于物联网的智能蔬菜仓库设计&#xff0c;系统实现的功能如下&#xff1a; &#xff08;1&#xff09;对蔬菜仓库内部进行温度检测…...

Java 字符流全解析:核心类实战指南

一、FileReader 与 FileWriter&#xff1a;文本文件基础操作 功能&#xff1a;直接基于字符处理文本文件&#xff0c;自动完成字节到字符的解码&#xff08;默认使用系统编码&#xff09;。 适用场景&#xff1a;读写简单的文本文件&#xff08;如 .txt、.csv&#xff09;。 …...

SQL Server 2022 安装问题

一、安装与配置问题 1. SQL Server 2022 安装失败怎么办&#xff1f; 常见原因&#xff1a; 硬件或操作系统不满足最低要求&#xff08;如内存、磁盘空间不足&#xff09;。未关闭防火墙或杀毒软件。之前版本的 SQL Server 残留文件未清理。 解决方案&#xff1a; 确保硬件配…...

Vue3 实现pdf预览

1.使用到的插件 vue3-pdf-app 以及预览效果 2.下载依赖 // 可以使用npm 以及pnpm // 下载版本1.0.3 pnpm install vue3-pdf-app^1.0.3 3.封装pdfModel组件复用 <template><VuePdfApp :page-scale"pageScale" :theme"theme" :style"width: …...

python网络爬虫开发实战之网页数据的解析提取

目录 1 XPath的使用 1.1 XPath概览 1.2 XPath常用规则 1.3 准备工作 1.4 实例引入 1.5 所有节点 1.6 节点 1.7 父节点 1.8 属性匹配 1.9 文本获取 1.10 属性获取 1.11 属性多值匹配 1.12 多属性匹配 1.13 按序选择 1.14 节点轴选择 2 Beautiful Soup 2.1 简介…...

GitHub Copilot平替:CodeGeeX 2.0实测报告

本文基于20个真实开发场景对CodeGeeX 2.0进行深度评测&#xff0c;涵盖代码生成质量、上下文理解能力、多语言支持度等关键维度。通过Python数据分析、Java微服务、React前端开发三大核心场景的对比实验&#xff0c;揭示其相比GitHub Copilot在中文语境支持、本地化部署、隐私保…...

QT对象模型

信号,槽,函数执行顺序 首先&#xff0c;拖入一个按钮&#xff0c;在转到槽&#xff0c;在click() 转到widget.cpp 在widget.h中 然后在widget.cpp中 运行结果 当发出信号后&#xff0c;先执行槽函数&#xff0c;再执行信号后面的函数&#xff08;单线程&#xff09; 在widget.h…...

C++:类型推导规则 unsigned short + 1

在 C/C 中&#xff0c;整数提升&#xff08;Integer Promotion&#xff09; 规则决定了 vlan_id 1 的类型&#xff1a; unsigned short 的值在运算时会被 提升&#xff08;promote&#xff09; 到 int 或 unsigned int&#xff08;取决于平台&#xff09;。 默认情况下&#x…...

PHP接口开发:从基础到高级的全面指南

一、接口基础与核心概念(约800字) 1.1 接口的本质定义 在PHP中,接口(Interface)是一种特殊的抽象结构,它通过interface关键字定义一组方法的契约规范,不包含具体实现。这种设计强制实现类必须遵循统一的调用标准,如: interface PaymentGateway {public function proc…...

C#Dictionary值拷贝还是引用

Dictionary值拷贝还是引用 这可能算是Directionary的一个坑值类型&#xff08;Value Type&#xff09;引用类型&#xff08;Reference Type&#xff09;总结 关于锁1. **锁对象的可见性**2. **锁对象的唯一性**3. **最佳实践**4. **为什么 readonly 是一个好的选择**5. **总结*…...

deepseek实战教程-第六篇查找源码之仓库地址与deepseek-R1、deepseek-LLM仓库内容查看

上一篇讲了支持deepseek的模型应用的本地安装和部署以及使用。再上一篇讲解了deepseek提供的开放api,便于开发者基于deepseek提供的接口来编写属于自己的业务应用程序。但是前面几篇我们都是在用模型,我们知道deepseek是开源的,那么deepseek的源码在哪里,具体源码是什么样的…...

WELL健康建筑认证是什么?

**WELL健康建筑认证&#xff1a;全方位呵护居住者福祉的权威标准** WELL健康建筑认证&#xff0c;这一源自美国的全球性健康建筑标准&#xff0c;宛如建筑界的璀璨明珠&#xff0c;以其独特的光芒照亮了健康建筑的发展之路。它不仅是全球首部专门针对室内环境提升人体健康与福…...

C++ STL 序列式容器之(三)-- List

一、什么是list&#xff1f; Lists are sequence containers that allow constant time insert and erase operations anywhere within the sequence, and iteration in both directions. 列表是序列容器&#xff0c;允许在序列中的任何位置进行以常量时间插入和擦除操作&…...

CAN基础知识学习二

一、控制器局域网总线&#xff08;CAN&#xff0c;Controller Area Network&#xff09;&#xff1b; 二、CAN FD 是CAN with Flexible Data rate的缩写&#xff0c;翻译为【可变速率的 CAN】 CAN-FD 采用了两种位速率&#xff1a;从控制场中的 BRS 位到 ACK 场之前&#xff08…...

Java编程思想:为何有时要将子类对象赋值给父类引用

为何有时要将子类对象赋值给父类引用&#xff0c;用父类来进行实例化&#xff1f; 这就要说多态的优势: 代码的扩展性和降低耦合度&#xff0c;而不是完全避免修改代码。 TuXing t new Changfangxing(); Changfangxing k (Changfangxing)t;原因1&#xff1a; 代码可拓展性 …...

2025年优化算法:龙卷风优化算法(Tornado optimizer with Coriolis force,TOC)

龙卷风优化算法&#xff08;Tornado optimizer with Coriolis force&#xff09;是发表在中科院二区期刊“ARTIFICIAL INTELLIGENCE REVIEW”&#xff08;IF&#xff1a;11.7&#xff09;的2025年智能优化算法 01.引言 当自然界的狂暴之力&#xff0c;化身数字世界的智慧引擎&…...

2小样本学习(Few-Shot)之相似度

目录 小样本学习的基本思路: 具体实现方法: 小样本学习的基本思路: 学习一个相似度函数similarity function:sim(x,x) 两个样本越相近,相似度越高。 比如:...

docker-操作实战

前言 C镜像制作 因为我平常不用&#xff0c;所以不书写了 SpringBoot 微服务镜像制作 mkdir java ca java cp /data/maxhou/myapp/xxx.jar . vi Dockerfile FROM openjdk:8 COPY ./xxx.jar /app.jar CMD ["java","-jar","/app.jar"]COPY ./…...

后大模型时代智能体将成为“新宠”

智能体 |未来已来 智能体 |市场井喷 智能体 |定义 智能体 |与大模型的区别 智能体 |与Copilot的区别 智能体 |企业价值 智能体 |个体价值 智能体 |开发流程 智能体 |提示词解读 智能体 |应用场景 智能体 |重难点问题...

【MySQL】监控MySQL

目录 使用状态变量监控MySQL 使用性能模式&#xff08;Performance Schema&#xff09;监控MySQL 1.性能模式 2.性能模式设置表 3.sys模式 使用状态变量监控MySQL 使用 show status 语句评估系统运行状况。 可以添加范围修饰符global或session来显示全局或本地状态信息。…...