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

机器学习数学基础:29.t检验

t检验学习笔记

一、t检验的定义和用途

t检验是统计学中常用的假设检验方法,主要用于判断样本均值与总体均值间,或两个样本均值间是否存在显著差异。

在实际中应用广泛,例如在医学领域可用于比较两种药物的疗效;在教育领域,能评估不同教学方法对学生成绩的影响等,以此帮助判断实验或调查结果是否具有统计学意义。

二、t检验的基本原理

(一)t分布特性

t检验基于t分布。t分布是一种概率分布,与正态分布类似,但在样本量较小时,其尾部比正态分布更厚。这使得t分布在小样本情形下,能更好地应对样本的不确定性。

(二)t统计量计算

t检验的核心是计算t统计量。不同类型的t检验公式有所不同,但总体思路均是通过比较样本均值与总体均值,或两个样本均值的差异,同时考虑样本标准差和样本量,来衡量该差异是否显著。

以单样本t检验为例,公式为: t = X ˉ − μ S / n t\ =\frac{\bar{X}-\mu}{S/\sqrt{n}} t =S/n Xˉμ。其中, X ˉ \bar{X} Xˉ是样本均值, μ \mu μ是总体均值, S S S是样本标准差, n n n是样本量。

若计算的t值较大,超出给定显著性水平下的临界值,意味着样本均值与总体均值差异显著,有理由拒绝原假设,认为样本并非来自该总体,或两样本所代表的总体均值存在差异。

三、t检验的分类及应用场景

(一)单样本t检验

  1. 目的:检验一个样本均值与已知总体均值是否有显著差异。
  2. 案例:已知某地区成年男性平均身高为175cm,现从该地区随机抽取50名成年男性,测得平均身高为178cm,标准差为10cm。判断这50名男性身高与该地区总体成年男性身高是否有显著差异。
    • 计算过程
      • 明确已知条件: X ˉ = 178 \bar{X}\ =178 Xˉ =178 μ = 175 \mu \ = 175 μ =175 S = 10 S \ = 10 S =10 n = 50 n \ = 50 n =50
      • 代入公式计算t值: t = 178 − 175 10 / 50 = 3 10 / 7.07 = 3 1.41 ≈ 2.13 t\ =\frac{178 - 175}{10/\sqrt{50}}\ =\frac{3}{10/7.07}\ =\frac{3}{1.41}\approx2.13 t =10/50 178175 =10/7.073 =1.4132.13
      • 确定自由度 d f = n − 1 = 50 − 1 = 49 df\ =n - 1\ =50 - 1\ =49 df =n1 =501 =49,选定显著性水平 α = 0.05 \alpha \ = 0.05 α =0.05,查t分布表得临界值。
      • 若t值大于临界值,拒绝原假设,认为这50名男性平均身高与总体平均身高有显著差异;若小于临界值,接受原假设,认为无显著差异。

(二)独立样本t检验

  1. 目的:比较两个独立样本的均值,判断两个不同组(如实验组和对照组)间是否存在差异。
  2. 案例:对两种不同品牌电池进行续航测试,品牌A测试30个样本,平均续航10小时,标准差1.5小时;品牌B测试25个样本,平均续航9小时,标准差1.2小时。比较两种品牌电池续航能力是否有显著差异。
    • 计算过程
      • 构建数据: X ˉ 1 = 10 \bar{X}_{1}\ =10 Xˉ1 =10 S 1 = 1.5 S_{1}\ =1.5 S1 =1.5 n 1 = 30 n_{1}\ =30 n1 =30 X ˉ 2 = 9 \bar{X}_{2}\ =9 Xˉ2 =9 S 2 = 1.2 S_{2}\ =1.2 S2 =1.2 n 2 = 25 n_{2}\ =25 n2 =25
      • 计算合并方差 S p 2 = ( n 1 − 1 ) S 1 2 + ( n 2 − 1 ) S 2 2 n 1 + n 2 − 2 = ( 30 − 1 ) × 1. 5 2 + ( 25 − 1 ) × 1. 2 2 30 + 25 − 2 = 29 × 2.25 + 24 × 1.44 53 = 65.25 + 34.56 53 ≈ 1.88 S_{p}^{2}\ =\frac{(n_{1}-1)S_{1}^{2}+(n_{2}-1)S_{2}^{2}}{n_{1}+n_{2}-2}\ =\frac{(30 - 1)\times1.5^{2}+(25 - 1)\times1.2^{2}}{30 + 25 - 2}\ =\frac{29\times2.25+24\times1.44}{53}\ =\frac{65.25+34.56}{53}\approx1.88 Sp2 =n1+n22(n11)S12+(n21)S22 =30+252(301)×1.52+(251)×1.22 =5329×2.25+24×1.44 =5365.25+34.561.88
      • 计算t值: t = X ˉ 1 − X ˉ 2 S p 2 ( 1 n 1 + 1 n 2 ) = 10 − 9 1.88 × ( 1 30 + 1 25 ) = 1 1.88 × ( 5 + 6 150 ) = 1 1.88 × 11 150 ≈ 2.64 t\ =\frac{\bar{X}_{1}-\bar{X}_{2}}{\sqrt{S_{p}^{2}(\frac{1}{n_{1}}+\frac{1}{n_{2}})}}\ =\frac{10 - 9}{\sqrt{1.88\times(\frac{1}{30}+\frac{1}{25})}}\ =\frac{1}{\sqrt{1.88\times(\frac{5 + 6}{150})}}\ =\frac{1}{\sqrt{1.88\times\frac{11}{150}}}\approx2.64 t =Sp2(n11+n21) Xˉ1Xˉ2 =1.88×(301+251) 109 =1.88×(1505+6) 1 =1.88×15011 12.64
      • 确定自由度 d f = n 1 + n 2 − 2 = 30 + 25 − 2 = 53 df\ =n_{1}+n_{2}-2\ =30 + 25 - 2\ =53 df =n1+n22 =30+252 =53,根据显著性水平 α = 0.05 \alpha \ = 0.05 α =0.05查t分布表得临界值,比较t值与临界值判断是否有显著差异。

(三)配对样本t检验

  1. 目的:比较配对样本(如同一组对象前后两次测试数据)的均值差异,判断某种处理或时间因素等对结果的影响。
  2. 案例:对15名学生进行培训前后成绩测试,培训前平均成绩75分,培训后80分,成绩差值标准差为5分。判断培训是否有效提高学生成绩。
    • 计算过程
      • 已知 d ˉ = 80 − 75 = 5 \bar{d}\ =80 - 75\ =5 dˉ =8075 =5 d ˉ \bar{d} dˉ为成绩差值均值), S d = 5 S_{d}\ =5 Sd =5 n = 15 n \ = 15 n =15
      • 计算t值: t = d ˉ S d / n = 5 5 / 15 ≈ 3.87 t\ =\frac{\bar{d}}{S_{d}/\sqrt{n}}\ =\frac{5}{5/\sqrt{15}}\approx3.87 t =Sd/n dˉ =5/15 53.87
      • 自由度 d f = n − 1 = 15 − 1 = 14 df\ =n - 1\ =15 - 1\ =14 df =n1 =151 =14,根据 α = 0.05 \alpha \ = 0.05 α =0.05查t分布表得临界值,比较t值与临界值判断培训是否有效。

四、t检验的步骤总结

(一)提出原假设( H 0 H_{0} H0)和备择假设( H 1 H_{1} H1

  1. 单样本t检验: H 0 H_{0} H0 X ˉ = μ \bar{X}\ =\mu Xˉ =μ H 1 H_{1} H1 X ˉ ≠ μ \bar{X}\neq\mu Xˉ=μ
  2. 独立样本t检验: H 0 H_{0} H0 μ 1 = μ 2 \mu_{1}\ =\mu_{2} μ1 =μ2 H 1 H_{1} H1 μ 1 ≠ μ 2 \mu_{1}\neq\mu_{2} μ1=μ2
  3. 配对样本t检验: H 0 H_{0} H0 μ d = 0 \mu_{d}\ =0 μd =0 μ d \mu_{d} μd为配对差值的总体均值); H 1 H_{1} H1 μ d ≠ 0 \mu_{d}\neq0 μd=0

(二)计算t统计量

依据不同类型t检验的相应公式计算t值。

(三)确定自由度

按照不同类型t检验的自由度计算公式确定,如单样本和配对样本t检验自由度为 n − 1 n - 1 n1,独立样本t检验自由度为 n 1 + n 2 − 2 n_{1}+n_{2}-2 n1+n22

(四)查找临界值

根据选定的显著性水平和自由度,查阅t分布表找到临界值。

(五)做出决策

比较计算的t值与临界值,t值大于临界值,拒绝原假设;t值小于临界值,接受原假设。

五、注意事项

(一)数据正态性

t检验通常要求数据服从正态分布,小样本时尤其重要。若数据明显不服从正态分布,可能需进行数据转换或采用非参数检验方法。

(二)方差齐性

独立样本t检验中,一般要求两样本方差相等(方差齐性)。可通过方差齐性检验判断,不满足时可能需用校正的t检验方法。

(三)样本独立性

独立样本t检验中,样本应相互独立,无关联或依赖关系;配对样本t检验中,配对的合理性和准确性很关键,要确保配对依据合理有效。

六、原假设与备择假设的设定原则

(一)完备且对立原则

原假设和备择假设构成完备事件组且相互对立,在假设检验中必有且仅有一个成立。例如,判断硬币是否均匀, H 0 H_{0} H0:硬币均匀(正面朝上概率 p = 0.5 p \ = 0.5 p =0.5); H 1 H_{1} H1:硬币不均匀( p ≠ 0.5 p\neq0.5 p=0.5),涵盖所有情况且不能同时成立。

(二)先备择后原假设原则

通常先确定备择假设,因其往往是研究者关心、欲支持或证实的内容,相对更易明确。比如,研究者猜测新药物比传统药物疗效好, H 1 H_{1} H1:新药物疗效优于传统药物; H 0 H_{0} H0:新药物疗效不比传统药物好。

(三)等号原则

等号“ = \ =  =”总放在原假设上。原假设一般表示变量间无差异、无影响或参数等于特定值等情况。例如,比较两总体均值, H 0 H_{0} H0 μ 1 = μ 2 \mu_1 \ = \mu_2 μ1 =μ2 H 1 H_{1} H1 μ 1 ≠ μ 2 \mu_1\neq\mu_2 μ1=μ2

(四)主观性原则

假设确定具主观性,不同研究者因研究目的、背景知识和角度不同,对同一实际问题可能提出相反假设,但都应符合最终目的。比如,研究政策对经济增长影响,关注政策是否有效时, H 0 H_{0} H0:政策对经济增长无影响, H 1 H_{1} H1:政策对经济增长有影响;关注政策是否有负面效果时, H 0 H_{0} H0:政策对经济增长无负面影响, H 1 H_{1} H1:政策对经济增长有负面影响。

(五)目的导向原则

假设检验主要是收集证据拒绝原假设。原假设通常是被怀疑、需样本数据提供证据否定的假设。有足够证据时拒绝原假设,接受备择假设;无充分证据时,不意味着完全接受原假设,只是暂时无理由否定。

七、单尾概率和双尾概率在t检验中的应用

(一)单尾概率在t检验中的应用

案例背景:某公司研发了一种新型减肥药物,为了检验其效果,随机选取了50名肥胖患者作为样本进行临床试验。已知未使用该药物时,肥胖人群的平均体重下降量为0kg(可视为总体均值)。经过一段时间使用后,测得这50名患者的平均体重下降了3kg,标准差为1.5kg。公司想要了解这种新型减肥药物是否能显著降低体重,即只关心体重是否下降,不关心是否会使体重增加,此时采用单尾t检验。

假设设定

  • 原假设 H 0 H_0 H0 μ ≥ 0 \mu \geq 0 μ0(药物没有显著降低体重,即总体平均体重下降量大于等于0)
  • 备择假设 H 1 H_1 H1 μ < 0 \mu < 0 μ<0(药物显著降低体重,即总体平均体重下降量小于0)

检验过程

  • 计算t统计量:已知 X ˉ = 3 \bar{X} \ = 3 Xˉ =3(样本均值), μ = 0 \mu \ = 0 μ =0(总体均值), S = 1.5 S \ = 1.5 S =1.5(样本标准差), n = 50 n \ = 50 n =50(样本量),根据单样本t检验公式 t = X ˉ − μ S / n t\ =\frac{\bar{X}-\mu}{S/\sqrt{n}} t =S/n Xˉμ,可得 t = 3 − 0 1.5 / 50 ≈ 14.14 t\ =\frac{3 - 0}{1.5/\sqrt{50}}\approx14.14 t =1.5/50 3014.14
  • 确定自由度 d f = n − 1 = 50 − 1 = 49 df \ = n - 1 \ = 50 - 1 \ = 49 df =n1 =501 =49,假设选定显著性水平 α = 0.05 \alpha \ = 0.05 α =0.05,在t分布表中查找单尾概率 P ( 1 ) = 0.05 P(1)\ =0.05 P(1) =0.05对应的临界值(假设为 - 1.677,实际值需根据具体精确的t分布表确定)。
  • 由于计算得到的t值 14.14 > − 1.677 14.14> - 1.677 14.14>1.677,且在单尾检验中,这里是左侧单尾检验,当t值小于临界值时拒绝原假设,而此例中t值远大于临界值,说明样本数据不支持原假设,拒绝 H 0 H_0 H0,接受 H 1 H_1 H1,即认为这种新型减肥药物能显著降低体重。

(二)双尾概率在t检验中的应用

案例背景:研究人员想要比较两种不同品牌的灯泡使用寿命是否存在差异。分别从品牌A和品牌B的灯泡中随机抽取了30个和25个样本进行测试。品牌A灯泡样本的平均使用寿命为1000小时,标准差为50小时;品牌B灯泡样本的平均使用寿命为980小时,标准差为40小时。研究人员不确定哪个品牌的灯泡使用寿命更长或更短,只是关注它们之间是否有显著差异,所以采用双尾t检验。

假设设定

  • 原假设 H 0 H_0 H0 μ 1 = μ 2 \mu_1 \ = \mu_2 μ1 =μ2(两个品牌灯泡的总体平均使用寿命相等)
  • 备择假设 H 1 H_1 H1 μ 1 ≠ μ 2 \mu_1 \neq \mu_2 μ1=μ2(两个品牌灯泡的总体平均使用寿命不相等)

检验过程

  • 计算t统计量:先计算合并方差 S p 2 = ( n 1 − 1 ) S 1 2 + ( n 2 − 1 ) S 2 2 n 1 + n 2 − 2 = ( 30 − 1 ) × 5 0 2 + ( 25 − 1 ) × 4 0 2 30 + 25 − 2 ≈ 2052.38 S_{p}^{2}\ =\frac{(n_1 - 1)S_1^{2}+(n_2 - 1)S_2^{2}}{n_1 + n_2 - 2}\ =\frac{(30 - 1)\times50^{2}+(25 - 1)\times40^{2}}{30 + 25 - 2}\approx2052.38 Sp2 =n1+n22(n11)S12+(n21)S22 =30+252(301)×502+(251)×4022052.38,再根据独立样本t检验公式 t = X ˉ 1 − X ˉ 2 S p 2 ( 1 n 1 + 1 n 2 ) = 1000 − 980 2052.38 × ( 1 30 + 1 25 ) ≈ 1.64 t\ =\frac{\bar{X}_1 - \bar{X}_2}{\sqrt{S_{p}^{2}(\frac{1}{n_1}+\frac{1}{n_2})}}\ =\frac{1000 - 980}{\sqrt{2052.38\times(\frac{1}{30}+\frac{1}{25})}}\approx1.64 t =Sp2(n11+n21) Xˉ1Xˉ2 =2052.38×(301+251) 10009801.64
  • 确定自由度 d f = n 1 + n 2 − 2 = 30 + 25 − 2 = 53 df \ = n_1 + n_2 - 2 \ = 30 + 25 - 2 \ = 53 df =n1+n22 =30+252 =53,选定显著性水平 α = 0.05 \alpha \ = 0.05 α =0.05,在t分布表中查找双尾概率 P ( 2 ) = 0.05 P(2)\ =0.05 P(2) =0.05对应的临界值(假设为 ± 2.006 \pm 2.006 ±2.006,实际值需根据具体精确的t分布表确定)。
  • 由于计算得到的t值 1.64 1.64 1.64,其绝对值 ∣ 1.64 ∣ < 2.006 |1.64| < 2.006 ∣1.64∣<2.006,说明样本数据支持原假设,不拒绝 H 0 H_0 H0,即目前没有足够证据表明两个品牌灯泡的使用寿命存在显著差异。

综上,单尾概率适用于明确关注差异方向的研究,双尾概率适用于不确定差异方向,仅想知道是否存在差异的研究。

相关文章:

机器学习数学基础:29.t检验

t检验学习笔记 一、t检验的定义和用途 t检验是统计学中常用的假设检验方法&#xff0c;主要用于判断样本均值与总体均值间&#xff0c;或两个样本均值间是否存在显著差异。 在实际中应用广泛&#xff0c;例如在医学领域可用于比较两种药物的疗效&#xff1b;在教育领域&…...

Lineageos 22.1(Android 15) 编译隐藏API的 android.jar

一、前言 有时候会我们开发系统应用需要一些系统的方法或者属性之类的,但是被隐藏导致无法正常显示,因为SDK提供的android.jar被隐藏了,所以只能看到sourcecode,实际上编译是会报错的,比如: 一般这种无法是两种,直接添加一个类,同包名同类名,或者依赖framework.jar,可以骗过…...

floodfill算法系列一>扫雷游戏

目录 题目思路&#xff1a;代码设计&#xff1a;代码呈现&#xff1a; 题目思路&#xff1a; 代码设计&#xff1a; 代码呈现&#xff1a; class Solution {int m,n;int[] dx {0,0,-1,1,-1,-1,1,1};int[] dy {-1,1,0,0,-1,1,-1,1};public char[][] updateBoard(char[][] boa…...

2011年下半年软件设计师考试上午题真题的详细知识点分类整理(附真题及答案解析)

以下是针对2011年下半年软件设计师考试上午题真题的详细知识点分类整理&#xff0c;涵盖所有题目涉及的核心知识点&#xff0c;供考生背诵记忆&#xff1a; 1. 数据结构与算法 树与图&#xff1a; 树的性质&#xff1a;树的节点数、深度、叶子节点数之间的关系。二叉树遍历&am…...

算法基础 -- Fenwick树的实现原理

线段树与Fenwick树详解及C语言实现 线段树简介 线段树&#xff08;Segment Tree&#xff09;是一种二叉树结构&#xff0c;主要用于在数组修改的同时&#xff0c;快速进行区间查询。常见应用包括区间求和、区间最小值、区间最大值等。 线段树的特点 时间复杂度&#xff1a;…...

萌新学 Python 之集合 set

集合 set&#xff1a;使用一对大括号&#xff0c;元素写在大括号之间&#xff0c;使用逗号分隔 集合中的元素只能是不可变的数据类型&#xff0c;不能是列表、字典和集合 set1 {1, 2, 3} set2 {1, a, (1, 2, 3)} print(type(set1), type(set2)) # <class set> <c…...

(4)ENVI-guide的设置

1 General Settings 打开ENVI-guide&#xff0c;设置你的模拟时间&#xff0c;模拟名称以及输出文件所在位置 注意&#xff0c;选择多核心和单核运行的方式是 1&#xff09;如果只有一个模拟&#xff0c;并且需要尽快输出&#xff0c;并且运行文件的电脑可以暂时不需要进行其他…...

Golang学习笔记_32——适配器模式

Golang学习笔记_29——抽象工厂模式 Golang学习笔记_30——建造者模式 Golang学习笔记_31——原型模式 文章目录 一、核心概念二、模式结构三、模式特点四、实现方式对比五、适用场景六、与其他模式的对比1. 与装饰器模式2. 与外观模式3. 与创建型模式&#xff08;工厂/原型&am…...

python知识和项目经验

一些功能的实现 从.py文件中获取函数对象和参数 的字典 在给定的Python脚本中&#xff0c;通过模块导入和反射机制&#xff0c;如何动态获取包含模型函数的模块中的函数及其默认参数&#xff0c;并构建一个字典以便后续使用&#xff1f; 解决方案 test.py # test.py impor…...

【自学笔记】版本控制与持续集成基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 版本控制与持续集成基础知识点总览版本控制&#xff08;Version Control&#xff09;1. 版本控制简介2. 常用版本控制系统3. Git基础4. Git进阶 持续集成&#xff0…...

云平台结合DeepSeek的AI模型优化实践:技术突破与应用革新

目录 前言 一、技术架构&#xff1a;算力与算法的协同基石 1. 蓝耘平台的核心优势 2. DeepSeek的模型创新 二、应用场景&#xff1a;垂直领域的智能化落地 1. 商业领域&#xff1a;智能推荐与客服 2. 工业领域&#xff1a;质检与流程优化 3. 智慧城市与医…...

DockerFile优化镜像体积

title: DockerFile优化镜像体积 date: 2025-02-15 15:22:40 tags: DockerFile优化镜像体积DockerFile优化镜像体积 DockerFile优化镜像体积前文回顾:一、细数优化镜像体积的思路与方式二、优化Dockfile文件编辑 Dockerfile2文件三、构建镜像四、运行镜像五、查看运行效果原文 …...

WeMos D1+PIR+Android 的小场景制作

最近在做一个有趣的小场景功能&#xff0c;其实已经有成熟产品&#xff0c;但是考虑到没法实现场景扩展&#xff0c;所以自己开始动手做。 场景描述&#xff1a;玄关人体感应&#xff0c;有人进门&#xff0c;致欢迎词&#xff0c;有人离开&#xff0c;致欢送词。 硬件设备&a…...

实现pytorch注意力机制-one demo

主要组成部分&#xff1a; 1. 定义注意力层&#xff1a; 定义一个Attention_Layer类&#xff0c;接受两个参数&#xff1a;hidden_dim&#xff08;隐藏层维度&#xff09;和is_bi_rnn&#xff08;是否是双向RNN&#xff09;。 2. 定义前向传播&#xff1a; 定义了注意力层的…...

使用循环队列来接收串口信息--以stm32f103为例

一、引言 在stm32中&#xff0c;一般采用的是通过数组来接收串口信息&#xff0c;但是由于受到数组大小的限制&#xff0c;易出现数据覆盖或者数据溢出问题。针对上述问题&#xff0c;采用循环队列的方式来接收串口信息&#xff0c;循环队列可以动态管理缓冲区并且当队列满时&a…...

代码随想录D50-51 图论 Python

理论基础 理论基础部分依然沿用代码随想录教程中的介绍&#xff1a; 图的种类 度 连通性 连通性用于表示图中节点的连通情况。 如果有节点不能到达其他节点&#xff0c;则为非连通图&#xff0c;想象将多个水分子表示为图&#xff0c;不考虑非键作用&#xff0c;这张图就不是…...

大幂计算和大阶乘计算【C语言】

大幂计算&#xff1a; #include<stdio.h> long long int c[1000000]{0}; int main() {long long a,b,x1;c[0]1;printf("请输入底数&#xff1a;");scanf("%lld",&a);printf("请输入指数&#xff1a;");scanf("%lld",&b…...

段错误 (核心已转储)

struct Addressbooks {struct Person personArray[MAX];int m_Size; // 当前已用大小 };void addPerson(Addressbooks *abs) {// 开始添加操作string name;cout << "输入姓名&#xff1a;";cin >> name;// 下面这句话执行后就报&#xff1a;段错误 (核心…...

Leetcode 227-基本计算器 II

题解 本题不包含括号&#xff0c;比较简单 双栈法&#xff08;运算符栈数字栈&#xff09; 对于「任何表达式」而言&#xff0c;可以都使用两个栈 nums 和 ops&#xff08;本题只用到了nums&#xff09;&#xff1a; nums &#xff1a; 存放所有的数字 ops &#xff1a;存放…...

springcloudalibaba组件gateway

Spring Cloud Alibaba 组件中的 Gateway 是一个基于 Spring Cloud Gateway 实现的 API 网关&#xff0c;它专为微服务架构提供简单且有效的 API 路由管理方式。以下是对 Spring Cloud Alibaba Gateway 的详细介绍&#xff1a; 一、基本概念 API 网关&#xff1a;作为系统的统…...

MongoDB副本集

副本集架构 对于mongodb来说&#xff0c;数据库高可用是通过副本集架构实现的&#xff0c;一个副本集由一个主节点和若干个从节点所组成。 客户端通过数据库主节点写入数据后&#xff0c;由从节点进行复制同步&#xff0c;这样所有从节点都会拥有这些业务数据的副本&#xff0…...

LeetCode-680. 验证回文串 II

1、题目描述&#xff1a; 给你一个字符串 s&#xff0c;最多 可以从中删除一个字符。 请你判断 s 是否能成为回文字符串&#xff1a;如果能&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;s "aba" 输出&a…...

国产编辑器EverEdit - “切换文件类型”的使用场景

1 “切换文件类型”的使用场景 1.1 应用背景 一般的编辑器都是通过扩展名映射到对应的语法高亮规则的&#xff0c;比如&#xff1a;文件test.xml中的扩展名“xml"对应XML的语法高亮&#xff0c;在编辑器中打开test.xml就会给不同标识符显示不同的颜色。 但有时一些应用程…...

AIP-146 泛化域

编号146原文链接AIP-146: Generic fields状态批准创建日期2019-05-28更新日期2019-05-28 API中的大多数域&#xff0c;无论是在请求、资源还是自定义应答中&#xff0c;都有具体的类型或模式。这个模式是约定的一部分&#xff0c;开发者依此约定进行编码。 然而&#xff0c;偶…...

C++11 thread

文章目录 C11 线程库线程对象的构造方式无参的构造函数调用带参的构造函数调用移动构造函数thread常用成员函数 this_thread命名空间join && detachmutex C11 线程库 线程对象的构造方式 无参的构造函数 1、调用无参的构造函数,调用无参的构造函数创建出来的线程对象…...

重生之我在异世界学编程之C语言:深入预处理篇(上)

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一、预处理的作用与流程&#xf…...

Java并发编程5--Java内存模型的基础

1.并发编程模型的两个关键问题 在并发编程中&#xff0c;需要处理两个关键问题&#xff1a;线程之间如何通信及线程之间如何同步&#xff08;这里的线程是指并发执行的活动实体&#xff09;。 通信是指线程之间以何种机制来交换信息。 在命令式编程中&#xff0c;线程之间的通…...

国密算法SM1、SM2、SM3和SM4 具体的使用和区别

国密算法是中国自主研发的密码算法&#xff0c;包括SM1、SM2、SM3和SM4&#xff0c;分别用于不同场景。以下是它们的具体使用和区别&#xff1a; SM1 对称加密算法 类型: 对称加密 密钥长度: 128位 使用场景: 用于数据加密和解密&#xff0c;适用于金融、政务等领域。 特点: …...

package.json的全面详解

在 Node.js 的世界里&#xff0c;package.json 文件占据着举足轻重的地位。它就像项目的“大脑”&#xff0c;掌控着项目的各种信息和依赖管理。下面&#xff0c;我们就深入剖析 package.json 文件&#xff0c;让你全面了解它的奥秘。 一、创建 package.json 在正式开始使用 …...

Linux、Docker与Redis核心知识点与常用命令速查手册

Linux、Docker与Redis核心知识点与常用命令速查手册 一、Linux基础核心 1. 核心概念 文件系统&#xff1a;采用树形结构&#xff0c;根目录为/权限机制&#xff1a;rwx&#xff08;读/写/执行&#xff09;权限&#xff0c;用户分为owner/group/others软件包管理&#xff1a; …...

通过TDE工业通讯网关解决设备通讯问题

设备通讯现状 在现代工业环境中&#xff0c;设备的通讯已成为提高生产效率和实现智能化管理的关键。随着工业4.0时代的到来&#xff0c;越来越多的智能设备被投入到生产运营中&#xff0c;这些设备通过集成特定的通信模块&#xff0c;形成了各自独立的自组网子系统。然而&…...

CI/CD(二)docker-compose安装Jenkins

1、docker-compose.yml version: 3.8services:jenkins:image: jenkins/jenkins:lts # 使用官方的 Jenkins LTS 镜像container_name: jenkinsuser: root # 如果需要以 root 用户运行ports:- "8080:8080" # Jenkins Web 界面端口- "50000:50000" # 用于 Jen…...

Linux操作系统3-文件与IO操作5(动态库与静态库的建立与加载)

上篇文章&#xff1a;Linux操作系统3-文件与IO操作4(软硬链接的建立与使用, 文件的三种时间)-CSDN博客 本篇代码Gitee仓库&#xff1a;myLerningCode/l21 橘子真甜/Linux操作系统与网络编程学习 - 码云 - 开源中国 (gitee.com) 本篇重点&#xff1a;动态库与静态库 目录 一. 静…...

同步异步日志系统-日志器的实现

该模块是针对于前几个模块的整合&#xff0c;也是直接面向客户所使用的&#xff0c;对于该模块的实现&#xff0c;我们基于:继承建造者设计模式来实现; 因此我们需要抽象出一个日志器抽象基类&#xff1b; 该基类提供的接口如下: 1、 debug();//站在用户的角度来说就是我只需要…...

webpack 项目优化(一)

一、构建速度优化 缩小文件处理范围 module: {rules: [{test: /\.js$/,exclude: /node_modules/, // 排除第三方库include: path.resolve(__dirname, src), // 限定处理范围use: babel-loader}] }利用缓存 Webpack 5 内置持久化缓存&#xff08;直接配置&#xff09;&#xff1…...

【撰写技巧】基金项目撰写跟踪交流会

基金申请书撰写完成后&#xff0c;提交前的审查是一个非常关键的步骤&#xff0c;这决定了你提交的材料是否符合要求&#xff0c;是否具备足够的说服力&#xff0c;以及是否能够通过专家评审。审查主要可以分为自我审查和团队审查两个层面。以下是基金申请书审查的主要内容和注…...

vue学习笔记

结合目录&#xff0c;点击阅读 文章目录 案例1&#xff1a;第一行vue代码App.vue引入Person.vue案例&#xff1a;改变变量的值案例&#xff1a;改变对象属性值案例&#xff1a;toRefs进行解包案例&#xff1a;给名字首字母大写案例&#xff1a;监视变量值的变化案例&#xff1…...

前端构建工具——Webpack和Vite的主要区别

目录 1. 设计理念2. 性能表现3. 使用场景4. 配置复杂度5. 生态系统6. 性能对比总结7. 选择建议 1. 设计理念 Webpack 设计理念&#xff1a;Webpack是一个通用的模块打包工具&#xff0c;它将项目中的各种资源&#xff08;如JavaScript、CSS、图片等&#xff09;视为模块&…...

Letsencrypt+certbot为域名免费配置ssl

1、基础概念 Let’s Encrypt 是一个提供免费 SSL/TLS 证书的认证机构&#xff0c;它的目标是让互联网上的通信更加安全&#xff0c;特别是普及 HTTPS。通过 Let’s Encrypt 提供的证书&#xff0c;网站可以使用加密连接&#xff0c;保护用户的数据传输。 Certbot 是一个由电子…...

达梦数据库针对慢SQL,收集统计信息清除执行计划缓存

前言&#xff1a;若遇到以下场景&#xff0c;大概率是SQL走错了执行计划&#xff1a; 1、一条SQL在页面上查询特别慢&#xff0c;但拿到数据库终端执行特别快 2、一条SQL在某种检索条件下查询特别慢&#xff0c;但拿到数据库终端执行特别快 此时&#xff0c;可以尝试按照下述步…...

IDEA通过Contince接入Deepseek

Deepseek 的出色表现&#xff0c;上期【Deepseek得两种访问方式与本地部署】 安装Continue插件 第一步、下载插件 在编辑栏【File】->设置【Settiings】或快捷键【CtrlAltS】,弹窗的左侧导航树&#xff0c;选择【plugins】,在marketplace 搜索【Continue】&#xff0c;点…...

Windows 10 ARM工控主板CAN总线实时性能测试

在常规的Windows系统中支持CAN总线应用&#xff0c;需要外接CAN总线适配器&#xff0c;通常为USB转CAN模块或PCI接口CAN卡。实时性本身是CAN总线的显著特性之一&#xff0c;但由于Windows并非实时操作系统&#xff0c;应用程序容易受到系统CPU负载影响&#xff0c;导致调度周期…...

深入理解无锁队列与C++原子操作

文章目录 深入理解无锁队列与C原子操作引言原子操作基础什么是原子操作&#xff1f;内存顺序&#xff08;Memory Order&#xff09; 无锁队列实现环形缓冲区队列&#xff08;单生产者/单消费者&#xff09;链表式无锁队列&#xff08;多生产者/多消费者&#xff09; 关键问题与…...

OpenGL: QOpenGLShaderProgram

一、QOpenGLShaderProgram 编译过程的封装 1、bool addShaderFromSourceCode(QGLShader::ShaderType type, const char * source); 2、bool addShaderFromSourceFile(QGLShader::ShaderType type, const QString & fileName); 3、virtual bool link(); 4、bool bind(); 5、…...

【网络编程】之数据链路层

【网络编程】之数据链路层 数据链路层基本介绍基本功能常见协议 以太网什么是以太网以太网协议帧格式数据链路层的以太网帧报文如何封装/解封装以及分用以太网通信原理传统的以太网与集线器现代以太网与交换机碰撞域的概念 Mac地址基本概念为什么要使用Mac地址而不是使用IP地址…...

HTTP 和 TCP/IP-傻傻分不清

HTTP 和 TCP/IP 是计算机网络中不同层次的协议&#xff0c;它们的核心区别在于功能和所属的网络层次。以下是详细对比&#xff1a; 1. 所属网络层次 TCP/IP 定位&#xff1a;TCP/IP 是一个协议族&#xff08;包含多个协议&#xff09;&#xff0c;涵盖网络通信的传输层和网络层…...

【SQL】SQL约束

&#x1f384;约束 &#x1f4e2;作用:是用于限制存储再表中的数据。可以再创建表/修改表时添加约束。 &#x1f4e2;目的:保证数据库中数据的正确、有效性和完整性。 &#x1f4e2;对于一个字段可以同时添加多个约束。 &#x1f384;常用约束: 约束分类 约束 描述关键字非…...

【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑧】

ISO 14229-1:2023 UDS诊断【ECU复位0x11服务】_TestCase08 作者&#xff1a;车端域控测试工程师 更新日期&#xff1a;2025年02月17日 关键词&#xff1a;UDS诊断协议、ECU复位服务、0x11服务、ISO 14229-1:2023 TC11-008测试用例 用例ID测试场景验证要点参考条款预期结果TC…...

解决vue-awesome-swiper 4.x + swiper 5.x 分页pagination配置不生效问题

这次给的需求需要实现几个轮播图&#xff0c;我打算用swiper来做。刚开始我参照同事之前实现的swiper&#xff0c;复制到我的新页面中&#xff0c;是可用的。但是这次的需求需要有底下的分页pagination&#xff0c;而且因为版本比较老&#xff0c;比较难找到配置项。这里说一下…...

Spring Boot 开发入门

文章来源&#xff1a;开发您的第一个 Spring Boot 应用程序 (Developing Your First Spring Boot Application) _ Spring Boot3.4.0中文文档(官方文档中文翻译)|Spring 教程 —— CADN开发者文档中心 本节介绍如何开发一个小型的 “Hello World&#xff01;” Web 应用程序&…...