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

单元测试-Unittest框架实践

文章目录

  • 1.Unittest简介
    • 1.1 自动化测试用例编写步骤
    • 1.2 相关概念
    • 1.3 用例编写规则
    • 1.4 断言方法
  • 2.示例
    • 2.1 业务代码
    • 2.2 编写测试用例
    • 2.3 生成报告
      • 2.3.1 方法1
      • 2.3.2 方法2

1.Unittest简介

Unittest是Python自带的单元测试框架,适用于:单元测试、Web自动化、App自动化、接口自动化等测试用例的开发与执行。

1.1 自动化测试用例编写步骤

1. 初始化	-	用例之前的动作
2. 执行		- 	具体用例逻辑
3. 断言		- 	校验用例执行结果
4. 清理		- 	用例执行后的动作在unittest中,测试用例的执行顺序是依据ascill码来执行的在Unittest框架下创建测试用例,步骤如下:
1) 创建test_开头单元测试用例模块。
2) 导入unittest模块。
3) 创建Test开头测试类。继承unittest.TestCase类。
4) 添加setUp()、tearDown()、setUpClass()、tearDownClass() 函数。
5) 创建test_测试方法。
6) 调用unittest.main()方法,该方法会搜索该模块下所有以test开头的测试用例方法并执行。

1.2 相关概念

概念:
1. test case:测试用例——lass TestLogin(unittest.TestCase):  #继承unittest.TestCase类
2. test suite:测试套件/测试集
3. test loader:测试加载
4. test runner:运行器、执行器
5. fixture:夹具,前置准备和后置清理

1.3 用例编写规则

1. .py模块命名规则:test_
2. 用例类名命名规则:Test
3. 方法命名规则:def test_

1.4 断言方法

注意:
如果断言成功则该条测试用例通过;
断言失败则该条测试用例执行失败,且会抛出AssertionError错误;
以下断言方法中,都有一个msg参数,默认为None。如果msg参数有对应的值,则断言失败后该msg的值会作为失败信息返回,
如 assertEqual(a, b, msg="a与b不相等!")
断言方法含义
assertEqual(a, b)判断 a == b
assertNotEqual(a, b)判断 a != b
assertTrue(x)判断 bool(x) is True
assertFalse(x)判断 bool(x) is False
assertIs(a, b)判断 a is b
assertIsNot(a, b)判断 a is not b
assertIsNone(x)判断 x is None
assertIsNotNone(x)判断 x is not None
assertIn(a, b)判断 a in b
assertNotIn(a, b)判断 a not in b
assertIsInstance(a, b)判断 isinstance(a, b)
assertNotIsInstance(a, b)判断 not isinstance(a, b)

2.示例

2.1 业务代码

创建业务代码:calculator.py

# -*- coding: utf-8 -*-
"""
Author: zhangsan
date:   2024/12/18 14:05
Description:    """class Math():def __init__(self, a, b):self.a = int(a)self.b = int(b)def sum(self):# 求和return self.a + self.bdef sub(self):# 求差return self.a - self.b

2.2 编写测试用例

# -*- coding: utf-8 -*-
"""
Author: zhangsan
date:   2024/12/18 14:07
Description:    """import unittest
from example_unittest.calculator import Mathclass TestSum(unittest.TestCase):"""测试Math类中的sum方法"""# 注意装饰器必须要有@classmethoddef setUpClass(cls):# 作用于测试类print(f"开始执行测试用例类:{cls.__name__}...")@classmethoddef tearDownClass(cls):# 作用于测试类print(f"测试用例{cls.__name__}类执行结束。")def setUp(self) -> None:# 作用于测试方法# 每个用例执行前,都会执行一次,用于初始化测试环境print(f"开始执行测试用例:{self._testMethodName}...")def tearDown(self) -> None:# 作用于测试方法# 每个用例执行后,都会执行一次,用于清理测试环境print(f"测试用例{self._testMethodName}执行结束。")def test_sum01(self):# 使用正数进行测试m = Math(3, 4)self.assertEqual(m.sum(), 7)def test_sum02(self):# 使用负数进行测试m = Math(-1, -2)self.assertEqual(m.sum(), -3)def test_sum03(self):# 使用正负数混合进行测试m = Math(3, -4)self.assertEqual(m.sum(), -1)def test_sum04(self):# 使用浮点数进行测试try:m = Math(3.5, 4.6)except AssertionError as e:print(f"执行用例失败:{e}")else:self.assertNotEquals(m.sum(), 8.1)def test_sum05(self):# 使用零进行测试m = Math(0, 0)self.assertEqual(m.sum(), 0)def test_sum06(self):# 使用整型和字符串进行测试with self.assertRaises(ValueError):Math("a", "b")if __name__ == '__main__':unittest.main()

2.3 生成报告

2.3.1 方法1

# -*- coding: utf-8 -*-
"""
Author: zhangsan
date:   2024/12/18 14:36
Description:    """
import unittest
# 导入测试用例模块
from testcase.test_sum import TestSum# 方法1:
# 第一步:创建TestSuite实例
# suite = unittest.TestSuite()# 第二步:将测试用例添加至TestSuite
# 方式1,添加单条测试用例
# suite.addTest(TestSum('test_sum01'))  # addTest()里参数格式为:测试类('测试方法')
# suite.addTest(TestSum('test_sum02'))# 方式2,添加多条测试用例
# suite.addTests([TestSum('test_sum01'), TestSum('test_sum02')])# 方法2:
# 创建一个加载对象
# loader = unittest.TestLoader()
# suite.addTest(loader.loadTestsFromTestCase(TestSum))# 方法3:不需要创建unittest.TestSuite()
test_dir = './testcase'
suite = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')# 第三步:创建TextTestRunner实例
# 创建TextTestRunner实例
# runner = unittest.TextTestRunner()
# 使用run()方法运行测试套件(即运行测试套件中的所有用例)
# runner.run(suite)# 生成测试报告:HTMLTestRunner无法安装,不能使用
# import HTMLTestRunner
# with open('./report/report.html', 'wb') as f:
#     runner = HTMLTestRunner.HTMLTestRunner(stream=f, title="测试报告", description="测试描述")
#     runner.run(suite)#导入BeautifulReport模块,这个模块也是生成报告的模块,但是比HTMLTestRunner模板好看
# pip3 install BeautifulReport
# from BeautifulReport import BeautifulReport as bf
#
# run = bf(suite) #实例化BeautifulReport模块
# run.report(filename='test',description='这个描述参数是必填的')# 测试报告模板运行程序:unittestreport
# pip3 install unittestreport
import unittestreport
runner = unittestreport.TestRunner(suite, filename="report.html",report_dir="./reports",title='测试',tester='张三',desc="自测使用",templates=4)
runner.run()

在这里插入图片描述

2.3.2 方法2

# -*- coding: utf-8 -*-
"""
Author: zhangsan
date:   2024/12/18 14:36
Description:    """
import unittest
# 导入测试用例模块
from testcase.test_sum import TestSum# 方法1:
# 第一步:创建TestSuite实例
# suite = unittest.TestSuite()# 第二步:将测试用例添加至TestSuite
# 方式1,添加单条测试用例
# suite.addTest(TestSum('test_sum01'))  # addTest()里参数格式为:测试类('测试方法')
# suite.addTest(TestSum('test_sum02'))# 方式2,添加多条测试用例
# suite.addTests([TestSum('test_sum01'), TestSum('test_sum02')])# 方法2:
# 创建一个加载对象
# loader = unittest.TestLoader()
# suite.addTest(loader.loadTestsFromTestCase(TestSum))# 方法3:不需要创建unittest.TestSuite()
test_dir = './testcase'
suite = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')# 第三步:创建TextTestRunner实例
# 创建TextTestRunner实例
# runner = unittest.TextTestRunner()
# 使用run()方法运行测试套件(即运行测试套件中的所有用例)
# runner.run(suite)# 生成测试报告:HTMLTestRunner无法安装,不能使用
# import HTMLTestRunner
# with open('./report/report.html', 'wb') as f:
#     runner = HTMLTestRunner.HTMLTestRunner(stream=f, title="测试报告", description="测试描述")
#     runner.run(suite)#导入BeautifulReport模块,这个模块也是生成报告的模块,但是比HTMLTestRunner模板好看
# pip3 install BeautifulReport
from BeautifulReport import BeautifulReport as bfrun = bf(suite) #实例化BeautifulReport模块
run.report(filename='test',description='这个描述参数是必填的')# 测试报告模板运行程序:unittestreport
# pip3 install unittestreport
# import unittestreport
# runner = unittestreport.TestRunner(suite, filename="report.html",
#                  report_dir="./reports",
#                  title='测试',
#                  tester='张三',
#                  desc="自测使用",
#                  templates=4)
# runner.run()

在这里插入图片描述

相关文章:

单元测试-Unittest框架实践

文章目录 1.Unittest简介1.1 自动化测试用例编写步骤1.2 相关概念1.3 用例编写规则1.4 断言方法 2.示例2.1 业务代码2.2 编写测试用例2.3 生成报告2.3.1 方法12.3.2 方法2 1.Unittest简介 Unittest是Python自带的单元测试框架,适用于:单元测试、Web自动…...

JAVA没有搞头了吗?

前言 今年的Java程序员群体似乎承受着前所未有的焦虑。投递简历无人问津,难得的面试机会也难以把握,即便成功入职,也往往难以长久。于是,不少程序员感叹:互联网的寒冬似乎又一次卷土重来,环境如此恶劣&…...

ECharts 饼图:数据可视化的重要工具

ECharts 饼图:数据可视化的重要工具 引言 在数据分析和可视化的领域,ECharts 是一个广受欢迎的开源库。它由百度团队开发,用于在网页中创建交互式图表。ECharts 提供了多种图表类型,包括柱状图、折线图、散点图等,而饼图则是其中最常用的一种。本文将深入探讨 ECharts 饼…...

arcGIS使用笔记(无人机tif合并、导出、去除黑边、重采样)

无人机航拍建图之后,通过大疆智图软件可以对所飞行的区域的进行拼图,但是如果需要对拼好的图再次合并,则需要利用到arcGIS软件。下面介绍arcGIS软件在这个过程中常用的操作。 1.导入tif文件并显示的方法:点击“”图标进行导入操作…...

0 前言

ArCS作为一个基于Rust的CAD(计算机辅助设计)开源系统,尽管已经有四年未更新,但其设计理念和技术实现仍然具有很高的学习和参考价值。以下是对ArCS项目的进一步分析和解读: 一、项目亮点与技术优势 高效与安全的Rust语…...

ubuntu server 安装

1 获取ubuntu https://ubuntu.com/download/server 2 安装ubuntu 详细教程查看视频: ubunut server 安装_哔哩哔哩_bilibili...

linux 添加默认网关

在linux 可以使用 route 命令添加默认网关,假设添加的默认网关是192.168.159.2 添加方式如下: route add default gw 192.168.159.2 以上命令只需要把add 改成 del ,就能删除刚才添加的路由 route del default gw 192.168.159.2 #该命…...

一个开源的自托管虚拟浏览器项目,支持在安全、私密的环境中使用浏览器

大家好,今天给大家分享一个开源的自托管虚拟浏览器项目Neko,旨在利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器,为用户提供安全、私密且多功能的浏览体验。 项目介绍 Neko利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器,提供…...

Qt之修改窗口标题、图标以及自定义标题栏(九)

Qt开发 系列文章 - titles-icons-titlebars(九) 目录 前言 一、修改标题 二、添加图标 三、更换标题栏 1.效果演示 2.创建标题栏类 3.定义相关函数 4.使用标题栏类 总结 前言 在我们利用Qt设计软件时,经常需要修改窗口标题、更改软…...

can总线相关概念---frame-signal-message

1、frame 帧是数据链路层的传输单元。它将上层传入的数据添加一个头部和尾部,组成了帧。它的起始点和目的点都是数据链路层。 2、signal 3、message-报文 我们将位于应用层的信息分组称为报文。报文是网络中交换与传输的数据单元,也是网络传输的单元。…...

全排列 dfs

给定一个由不同的小写字母组成的字符串&#xff0c;输出这个字符串的所有全排列。 我们假设对于小写字母有 a<b<…<y<z &#xff0c;而且给定的字符串中的字母已经按照从小到大的顺序排列。 输入格式 输入只有一行&#xff0c;是一个由不同的小写字母组成的字符串…...

画图,matlab,

clear;close all;clc;tic;dirOutput dir(*.dat); % 罗列所有后缀-1.dat的文件列表&#xff0c;罗列BDDATA的数据 filenames string({dirOutput.name}); % 提取文件名%% 丢包统计 FILENAMES [""]; LOSS_YTJ [ ]; LOSS_RAD [ ]; LOSS_ETH [ ]…...

any/all 子查询优化规则的原理与解析 | OceanBase查询优化

背景 在通常情况下&#xff0c;当遇到包含any/all子查询的语句时&#xff0c;往往需要遵循嵌套执行的方式&#xff0c;因此其查询效率较低。Oceanbase中制定了相应的any/all子查询优化规则&#xff0c;能够能够识别并优化符合条件的any/all子查询&#xff0c;从而有效提升查询…...

Visio——导出的PDF文件缺乏嵌入字体的解决办法 / 设置导出的PDF文件添加嵌入字体的方法

导出PDF时&#xff0c;勾选 “符合PDF/A” 选项 这样就导出的PDF文件添加了嵌入字体了。...

python:用 sklearn SVM 构建分类模型,并评价

编写 test_sklearn_5.py 如下 # -*- coding: utf-8 -*- """ 使用 sklearn 估计器构建分类模型&#xff0c;并评价 """ import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.svm import SVC from sk…...

【Python】制作函数,并且实现【注册】【登录】功能

这段代码是一个简单的命令行论坛模拟系统&#xff0c;包含了用户注册、登录和退出的功能。让我们逐行分析代码&#xff0c;并解释每个部分的功能与逻辑&#xff1a; ### 1. 引入 hashlib 模块 python import hashlib - **功能**&#xff1a;引入 Python 内置的 hashlib 模块…...

【大模型】LLaMA-2:Open Foundation and Fine-Tuned Chat Models, July. 2023.

论文&#xff1a;LLaMA-2&#xff1a;Open Foundation and Fine-Tuned Chat Models, July. 2023. 链接&#xff1a;https://arxiv.org/abs/2307.09288 Introduction 创新点 7B - 70B 预训练 微调 开源Llama 2 和Llama 2-Chat&#xff0c;针对对话用例进行了优化Motivation A…...

WebRTC服务质量(04)- 重传机制(01) RTX NACK概述

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…...

Qt之connectSlotsByName分析

简介 用于界面设置信号槽自动生成&#xff0c;要求槽函数定义形式为on_< objectName >_< signal > connectSlotsByName 其定义在QMetaObject类中&#xff0c;为静态方法&#xff0c;在文件qobjectdefs.h struct Q_CORE_EXPORT QMetaObject {....static void c…...

【Unity3D】无限循环列表(扩展版)

基础版&#xff1a;【Unity技术分享】UGUI之ScrollRect优化_ugui scrollrect 优化-CSDN博客 using UnityEngine; using UnityEngine.UI; using System.Collections.Generic;public delegate void OnBaseLoopListItemCallback(GameObject cell, int index); public class BaseLo…...

校园点餐订餐外卖跑腿Java源码

简介&#xff1a; 一个非常实用的校园外卖系统&#xff0c;基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化&#xff0c;提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合&am…...

如何使用 Python 连接 PostgreSQL 数据库?

在Python开发中&#xff0c;连接PostgreSQL数据库是一个常见的需求。 我们可以使用多种库来实现这一功能&#xff0c;其中最常用的是psycopg2。 下面我将详细介绍如何使用psycopg2来连接PostgreSQL数据库&#xff0c;并提供一些实际开发中的建议和注意事项。 1. 使用 psycop…...

音频开发中常见的知识体系

在 Linux 系统中&#xff0c;/dev/snd 目录包含与声音设备相关的文件。每个文件代表系统中的一部分音频硬件或音频控制接口。以下是你列出的文件及其含义&#xff1a; 一.基本术语 样本长度(sample)&#xff1a;样本是记录音频数据最基本的单位&#xff0c;计算机对每个通道采…...

国内外人工智能AI工具网站大全(一键收藏,应有尽有)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 国内外人工智能AI工具网站大全&#xff08;一键收藏&#xff0c;应有尽有&#xff09; 摘要一、AI写作工具二、AI图像工具2.1、常用AI图像工具2.2、AI图片插画生成2.3、AI图片背景移…...

HB1910数字IP程控交换机generate.php存在RCE漏洞

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

基于Spring Boot的社区药房系统

一、系统背景与目的 随着医疗改革的深入和社区医疗服务的不断完善&#xff0c;社区药房在居民健康保障中扮演着越来越重要的角色。然而&#xff0c;传统的药房管理方式存在着库存管理混乱、药品销售不透明、客户信息管理不规范等问题。为了解决这些问题&#xff0c;基于Spring…...

level2逐笔委托查询接口

沪深逐笔委托队列查询 前置步骤 分配数据库服务器 查询模板 以下是沪深委托队列查询的请求模板&#xff1a; http://<数据库服务器>/sql?modeorder_book&code<股票代码>&offset<offset>&token<token>查询参数说明 参数名类型说明mo…...

固定资产分类,提升资产盘活效益

固定资产是企业长期使用的重要资源&#xff0c;涵盖范围广、种类多&#xff0c;不同的资产需要针对性管理。通过科学的分类与高效的盘活策略&#xff0c;不仅可以优化资源配置&#xff0c;还能提升企业资产的利用效率和经济效益。以下将详细解析固定资产的分类方式和盘活效益的…...

图像根据mask拼接时,边缘有色差 解决

目录 渐变融合(Feathering) 沿着轮廓线模糊: 代码: 泊松融合 效果比较好: 效果图: 源代码: 泊松融合,mask不扩大试验 效果图: 源代码: 两个图像根据mask拼接时,边缘有色差 渐变融合(Feathering) import numpy as np import cv2# 假设 img1, img2 是两个…...

练习题:一维数组

练习题 第一题 键盘录入一组数列&#xff0c;利用冒泡排序将数据由大到小排序 代码 #include <stdio.h>int arr_home01() {int arr[10];int i,j,temp;printf("请输入10个测试整数&#xff1a;\n");int len sizeof(arr) / sizeof(arr[0]);for(i 0;i < …...

Linux系统安装node.js

一、node官网下载想要的node版本 https://nodejs.org/en/download/package-manager 二、将tar.xz文件解压 tar -xvf node-vxxx.tar.xz 三、改文件夹的名字&#xff0c;改成nodejs mv node-xxx nodejs 四、复制nodejs文件&#xff0c;并上传到linux 服务器 /usr/local 目录下…...

lettuce 默认情况下连接池参数不生效,源码分析

先说结论&#xff1a; 1.LettuceConnectionFactory 属性 shareNativeConnection 默认为true&#xff0c;要想连接池生效&#xff0c;该参数设置为false; 2.使用redisTemplate模版封装的pipeline没有意义&#xff0c;autoFlashCommands 默认为true;spring2.0开始默认使用lettuc…...

三维无人机航迹算法的目标函数如何确定

一、定义目标函数 在三维无人机航迹算法中,目标函数的确定通常基于具体的任务需求和飞行约束。以下是一个简单的例子,展示了如何为三维无人机航迹规划定义一个目标函数。 例子:最小化飞行时间和避障的三维无人机航迹规划 1.任务描述:无人机需要从起点飞到终点,同时避开一些…...

Linux docker离线部署

1. Docker下载 Docker下载地址&#xff1a;https://mirrors.dahuatech.com/docker-ce/。本文下载当前最新版本&#xff0c;链接如下&#xff1a;https://mirrors.dahuatech.com/docker-ce/linux/static/stable/aarch64/docker-27.4.0.tgz。 2. 安装Docker 将压缩包上传到服务器…...

短剧系统开发教程概要

引言 随着移动互联网的快速发展&#xff0c;短剧内容因其简短、精炼、情节紧凑的特点&#xff0c;吸引了大量观众的喜爱。为了满足市场需求&#xff0c;开发一款功能完善、体验优良的短剧平台显得尤为重要。本文将详细介绍短剧源码的开发搭建过程&#xff0c;包括需求分析、技…...

MySQL分区建表例子

以下为MySQL分区建表的例子 CREATE TABLE mz_mjzcfxxmx (SERIALNUM_ID varchar(96) NOT NULL COMMENT 业务角度唯一性ID,DATAGENERATE_DATE datetime NOT NULL COMMENT 业务数据产生时间,ROW_ID varchar(300) DEFAULT NULL COMMENT 数据角度唯一性ID,TASK_ID varchar(96) DEFAU…...

nginx变量

一、Nginx 变量概述 Nginx 变量是一种在 Nginx 配置中用于存储和操作数据的机制&#xff0c;它们可以在不同的配置块&#xff08;如 http、server、location 等&#xff09;中使用&#xff0c;以实现动态配置和灵活的请求处理。变量的值可以根据各种条件&#xff08;如请求头信…...

网络编程 02:IP 地址,IP 地址的作用、分类,通过 Java 实现 IP 地址的信息获取

一、概述 记录时间 [2024-12-18] 前置文章&#xff1a;网络编程 01&#xff1a;计算机网络概述&#xff0c;网络的作用&#xff0c;网络通信的要素&#xff0c;以及网络通信协议与分层模型 本文讲述网络编程相关知识——IP 地址&#xff0c;包括 IP 地址的作用、分类&#xff…...

小红书笔记详情API接口:解锁社交媒体商业价值的钥匙

在当今数字化时代&#xff0c;社交媒体平台已成为企业营销和品牌推广的重要渠道。小红书&#xff0c;作为一个以内容分享为核心的社交媒体平台&#xff0c;汇聚了大量用户和创作者&#xff0c;他们在这里分享生活心得、购物体验、美妆技巧等多元化内容。小红书笔记详情API接口&…...

达梦查询表字段详细信息脚本(字段名称、描述、类型、长度及是否为空)

达梦查询表字段详细信息脚本&#xff08;字段名称、描述、类型、长度及是否为空&#xff09; 该SQL 脚本&#xff0c;用于查询表中字段的基本信息&#xff0c;包括字段名称、描述、数据类型、数据长度、是否为空及是否为主键等属性。 SQL 脚本 -- 输入变量 DECLAREp_owner VA…...

群落生态学研究进展】Hmsc包开展单物种和多物种分析的技术细节及Hmsc包的实际应用

联合物种分布模型&#xff08;Joint Species Distribution Modelling&#xff0c;JSDM&#xff09;在生态学领域&#xff0c;特别是群落生态学中发展最为迅速&#xff0c;它在分析和解读群落生态数据的革命性和独特视角使其受到广大国内外学者的关注。在学界不同研究团队研发出…...

CSS 语法

CSS 语法 CSS(层叠样式表)是一种用于描述HTML或XML文档样式的样式表语言。它允许您将样式信息与文档内容分离,从而更有效地控制网页的布局和外观。本文将详细介绍CSS的基本语法和结构,帮助您更好地理解和应用CSS。 CSS的基本结构 CSS由一系列的规则组成,每个规则包含一…...

【区块链】区块链密码学基础

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 区块链密码学基础引言一、哈希函数1.1 基本概念1.2 数学表达 二、非对称加密2.1…...

ik分词器了解 和 通过zip安装包的方式 将ik分词器安装到elasticsearch中

目录 1. ik分词器的作用&#xff08;效果&#xff09; &#xff08;1&#xff09;标准分析器效果 &#xff08;2&#xff09;ik_smart分词 &#xff08;3&#xff09;ik_max_word分词 2. 首先根据自己的elasticsearch的版本下载对应的ik分词器版本 3. 将下载好的ik分词器…...

【数字化】华为数字化转型架构蓝图

导读&#xff1a;华为的数字化转型规划团队在2016年年底基于对愿景的系统诠释&#xff0c;整合出了数字化转型架构蓝图。该蓝图共分为5层&#xff0c;旨在通过数字化转型实现客户交互方式的转变、作战方式的转变、公司各平台业务能力的数字化、服务化以及运营模式的转变。 目录…...

K8s中 statefulset 和deployment的区别

在 Kubernetes 中&#xff0c;StatefulSet 和 Deployment 是两种管理 Pod 的控制器&#xff0c;它们的主要区别在于 状态管理 和 Pod 的标识。以下是详细对比&#xff1a; 1. 功能定位 Deployment 用途&#xff1a;用于 无状态应用 的部署&#xff0c;例如 Web 服务、API 服务…...

C#多线程系列章节五

线程创建的几种写法 thread类 threadpool 线程池 task类 Thread t = new Thread(func); t.Start();//线程开始执行threadPool.QueueUserWorkItem(test)创建var t1 = new Task(() => test(“Task 1”));t.start();Task.Run(() => test(“Task 2”));Task.Factory.StartNew…...

了解 JVM 运行原理,掌握常见的内存模型以及性能调优的基本方法

JVM运行原理概述 Java Virtual Machine (JVM) 是 Java 程序运行的核心组件&#xff0c;它的运行机制包括加载字节码、字节码解释或编译成本地机器代码执行。下面是 JVM 的运行流程和核心部分&#xff1a; JVM 的运行机制 类加载&#xff08;Class Loading&#xff09;&#xf…...

游戏AI实现-寻路算法(DFS)

​深度优先搜索算法&#xff08;英语&#xff1a;Depth-First-Search&#xff0c;缩写为DFS&#xff09;是一种用于遍历或搜索树或图的算法。 寻路地图搭建&#xff1a; 游戏AI实现-寻路地图搭建-CSDN博客 算法过程&#xff1a;遍历方向为从竖直向上沿顺时针方向 1.首先将开…...

Qlib专为AI而生的量化投资平台

1、三层 Infrastructure层 该层为量化研究提供了基础支持。Data Server模块为用户管理和检索原始数据提供了高性能的基础架构。Trainer模块提供了灵活的接口来定义模型的训练过程&#xff0c;同时也为分布式训练提供了接口。Model Manager模块可以让用户更好地管理繁多的AI模型…...