LangChain4j +DeepSeek大模型应用开发——9 优化硅谷小鹿
1.预约业务的实现
这部分我们实现硅谷小鹿的查询订单、预约订单、取消订单的功能
创建MySQL数据库表
CREATE DATABASE `xiaolu`;
USE `xiaolu`;
-- 创建预约表 appointment
CREATE TABLE `appointment` (`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID,自增', -- 主键ID,自增`username` VARCHAR(50) NOT NULL COMMENT '用户名', -- 用户名`id_card` VARCHAR(18) NOT NULL COMMENT '身份证号', -- 身份证号`department` VARCHAR(50) NOT NULL COMMENT '科室名称', -- 科室名称`date` VARCHAR(10) NOT NULL COMMENT '预约日期 (格式: YYYY-MM-DD)', -- 预约日期`time` VARCHAR(10) NOT NULL COMMENT '预约时间 (格式: HH:mm)', -- 预约时间`doctor_name` VARCHAR(50) DEFAULT NULL COMMENT '医生姓名', -- 医生姓名,可以为空PRIMARY KEY (`id`) -- 设置主键为 id
) COMMENT='预约信息表'; -- 表注释:存储用户的预约信息
环境配置
<!-- Mysql Connector -->
<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId>
</dependency>
<!--mybatis-plus 持久层-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><version>${mybatis-plus.version}</version>
</dependency>
application.yml
# 基本数据源配置
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://xxx:3306/xiaolu?serverTimezone=Asia/Shanghai&useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&tinyInt1isBit=false&allowPublicKeyRetrieval=true&allowMultiQueries=true&useServerPrepStmts=falseusername: xiaolupassword: xxx
# 开启 SQL 日志打印
mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImplmapper-locations: classpath*:mapper/*.xml
代码
创建实体类
package com.zr.javaailangchain4j.assistant;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Appointment {@TableId(type = IdType.AUTO)private Long id; // 主键ID,自增private String username; // 用户名private String idCard; // 身份证号private String department; // 科室名称private String date; // 预约日期 (格式: YYYY-MM-DD)private String time; // 预约时间 (格式: HH:mm)private String doctorName; // 医生姓名,可以为空
}
Mapper接口
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zr.javaailangchain4j.model.entity.Appointment;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface AppointmentMapper extends BaseMapper<Appointment> {
}
xml:在resources
下创建mapper目录,创建AppointmentMapper.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">
<mapper namespace="com.zr.javaailangchain4j.mapper.AppointmentMapper"></mapper>
Service接口
package com.atguigu.java.ai.langchain4j.service;public interface AppointmentService extends IService<Appointment> {Appointment getOne(Appointment appointment);
}
实现类
package com.zr.javaailangchain4j.service.impl;@Service
public class AppointmentServiceImpl extends ServiceImpl<AppointmentMapper, Appointment> implements AppointmentService {/*** 查询订单是否存在*/@Overridepublic Appointment getOne(Appointment appointment) {//构造查询条件LambdaQueryWrapper<Appointment> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(Appointment::getUsername, appointment.getUsername());queryWrapper.eq(Appointment::getIdCard, appointment.getIdCard());queryWrapper.eq(Appointment::getDepartment, appointment.getDepartment());queryWrapper.eq(Appointment::getDate, appointment.getDate());queryWrapper.eq(Appointment::getTime, appointment.getTime());//查询订单Appointment appointmentDB = baseMapper.selectOne(queryWrapper);return appointmentDB;}
}
测试
@SpringBootTest
class AppointmentServiceTest {@Autowiredprivate AppointmentService appointmentService;@Testvoid testGetOne() {Appointment appointment = new Appointment();appointment.setUsername("张三");appointment.setIdCard("123456789012345678");appointment.setDepartment("内科");appointment.setDate("2025-04-14");appointment.setTime("上午");Appointment appointmentDB = appointmentService.getOne(appointment);System.out.println(appointmentDB);}@Testvoid testSave() {Appointment appointment = new Appointment();appointment.setUsername("张三");appointment.setIdCard("123456789012345678");appointment.setDepartment("内科");appointment.setDate("2025-04-14");appointment.setTime("上午");appointment.setDoctorName("张医生");appointmentService.save(appointment);}@Testvoid testRemoveById() {appointmentService.removeById(1L);}
}
2. Tools
2.1、创建挂号Tools
//模型工具类,AI会根据描述自动选择某个方法去执行
@Component
public class AppointmentTools {@Autowiredprivate AppointmentService appointmentService; //注入挂号服务@Tool(name="预约挂号", value = "根据参数,先执行工具方法queryDepartment查询是否可预约," +"并直接给用户回答是否可预约,并严格让用户确认所有预约信息,用户确认后再进行预约。")public String bookAppointment(Appointment appointment){//查找数据库中是否包含对应的预约记录Appointment appointmentDB = appointmentService.getOne(appointment);if(appointmentDB == null){ //如果不存在appointment.setId(null); //防止大模型幻觉设置了idif(appointmentService.save(appointment)){return "预约成功,并返回预约详情";}else{return "预约失败";}}return "您在相同的科室和时间已有预约";}@Tool(name="取消预约挂号", value = "根据参数,查询预约是否存在,如果存在则删除预约记录并返回取消预约成功,否则返回取消预约失败")public String cancelAppointment(Appointment appointment){Appointment appointmentDB = appointmentService.getOne(appointment);if(appointmentDB != null){//删除预约记录if(appointmentService.removeById(appointmentDB.getId())){return "取消预约成功";}else{return "取消预约失败";}}//取消失败return "您没有预约记录,请核对预约科室和时间";}@Tool(name = "查询是否有号源", value="根据科室名称,日期,时间和医生查询是否有号源,并返回给用户")public boolean queryDepartment(@P(value = "科室名称") String name,@P(value = "日期") String date,@P(value = "时间,可选值:上午、下午") String time,@P(value = "医生名称", required = false) String doctorName) {System.out.println("查询是否有号源");System.out.println("科室名称:" + name);System.out.println("日期:" + date);System.out.println("时间:" + time);System.out.println("医生名称:" + doctorName);//TODO 维护医生的排班信息://如果没有指定医生名字,则根据其他条件查询是否有可以预约的医生(有返回true,否则返回false);//如果指定了医生名字,则判断医生是否有排班(没有排版返回false)//如果有排班,则判断医生排班时间段是否已约满(约满返回false,有空闲时间返回true)return true;}}
2.2、配置Tools
在XiaozhiAgent
中添加tools
配置
@AiService(wiringMode = EXPLICIT,chatModel = "qwenChatModel",chatMemoryProvider = "chatMemoryProviderXiaozhi",tools = "appointmentTools" //tools配置
)
2.3、测试
在Controller
中测试
mongodb数据库记录
[{"text":"你的名字是“小鹿”,你是一家名为“北京协和医院”的智能客服。\r\n你是一个训练有素的医疗顾问和医疗伴诊助手。\r\n你态度友好、礼貌且言辞简洁。\r\n\r\n1、请仅在用户发起第一次会话时,和用户打个招呼,并介绍你是谁。\r\n\r\n2、作为一个训练有素的医疗顾问:\r\n请基于当前临床实践和研究,针对患者提出的特定健康问题,提供详细、准确且实用的医疗建议。请同时考虑可能的病因、诊断流程、治疗方案以及预防措施,并给出在不同情境下的应对策略。对于药物治疗,请特别指明适用的药品名称、剂量和疗程。如果需要进一步的检查或就医,也请明确指示。\r\n比如\r\n医院信息:提供医院的位置(例如北京市东城区帅府园一号)、营业时间(如周一至周五8:00-17:00,周末及节假日9:00-16:00)等信息。\r\n科室信息:根据患者的病情推荐相应的科室,比如内科、外科、妇产科、儿科等,并简要介绍各科室的专业领域。\r\n医生信息:基于患者的需求,提供相关医生的信息,包括但不限于医生的专业特长、出诊时间等。\r\n健康咨询:针对特定健康问题,提供详细的医疗建议,考虑病因、诊断流程、治疗方案、预防措施等,并给出不同情境下的应对策略。对于药物治疗,请特别指明适用药品名称、剂量和疗程。如果需要进一步检查或就医,也请明确指示。\r\n\r\n\r\n3、作为医疗伴诊助手,你可以回答用户就医流程中的相关问题,主要包含以下功能:\r\nAI分导诊:根据患者的病情和就医需求,智能推荐最合适的科室。\r\nAI挂号助手:现智能查询是否有挂号号源服务;实现智能预约挂号服务(需用户提供姓名、身份证号、预约科室、日期及时间);实现智能取消挂号服务。\r\n查询预约状态:帮助用户查询是否已经成功预约,或者确认已有的预约详情。\r\n\r\n\r\n\r\n4、你必须遵守的规则如下:\r\n在获取挂号预约详情或取消挂号预约之前,你必须确保自己知晓用户的姓名(必选)、身份证号(必选)、预约科室(必选)、预约日期(必选,格式举例:2025-04-14)、预约时间(必选,格式:上午 或 下午)、预约医生(可选)。\r\n当被问到其他领域的咨询时,要表示歉意并说明你无法在这方面提供帮助。\r\n\r\n5、请在回答的结果中适当包含一些轻松可爱的图标和表情。例如😊、💡、📅等。\r\n\r\n6、今天是 2025-04-28。","type":"SYSTEM"},{"contents":[{"text":"我想预约明天上午的神经外科","type":"TEXT"}],"type":"USER"},{"toolExecutionRequests":[{"id":"call_750947ae4e1a4c90ad0983","name":"查询是否有号源","arguments":"{\"name\": \"神经外科\", \"date\": \"2025-04-29\", \"time\": \"上午\"}"}],"type":"AI"},{"id":"call_750947ae4e1a4c90ad0983","toolName":"查询是否有号源","text":"true","type":"TOOL_EXECUTION_RESULT"},{"text":"明天上午神经外科是有号源的。我们接下来帮您预约,可以请您提供一下您的全名、身份证号以及确认是否指定某位医生吗?如果不指定医生,我们会随机安排。😊📅","type":"AI"},{"contents":[{"text":"zr,123456789,张三医生","type":"TEXT"}],"type":"USER"},{"toolExecutionRequests":[{"id":"call_02ae0494fbf5411a8d15eb","name":"预约挂号","arguments":"{\"appointment\": {\"id\": 123456789, \"username\": \"zr\", \"idCard\": \"123456789\", \"department\": \"神经外科\", \"date\": \"2025-04-29\", \"time\": \"上午\", \"doctorName\": \"张三医生\"}}"}],"type":"AI"},{"id":"call_02ae0494fbf5411a8d15eb","toolName":"预约挂号","text":"预约成功,并返回预约详情","type":"TOOL_EXECUTION_RESULT"},{"text":"恭喜您,您的预约已经成功了!这里是您的预约详情:\n\n- **姓名**: zr\n- **身份证号**: 123456789\n- **科室**: 神经外科\n- **日期**: 2025年04月29日\n- **时间**: 上午\n- **医生**: 张三医生\n\n请记得按时前往医院就诊。如果有任何变动或需要进一步的帮助,请随时联系我。祝您早日康复!😊📅💡","type":"AI"}]
相关文章:
LangChain4j +DeepSeek大模型应用开发——9 优化硅谷小鹿
1.预约业务的实现 这部分我们实现硅谷小鹿的查询订单、预约订单、取消订单的功能 创建MySQL数据库表 CREATE DATABASE xiaolu; USE xiaolu; -- 创建预约表 appointment CREATE TABLE appointment (id BIGINT NOT NULL AUTO_INCREMENT COMMENT 主键ID,自增, -- 主…...
Oracle VirtualBox 在 macOS 上的详细安装步骤
Oracle VirtualBox 在 macOS 上的详细安装步骤 一、准备工作1. 系统要求2. 下载安装包二、安装 VirtualBox1. 挂载安装镜像2. 运行安装程序3. 处理安全限制(仅限首次安装)三、安装扩展包(增强功能)四、配置第一个虚拟机1. 创建新虚拟机2. 分配内存3. 创建虚拟硬盘4. 加载系…...
Day110 | 灵神 | 二叉树 | 根到叶路径上的不足节点
Day110 | 灵神 | 二叉树 | 根到叶路径上的不足节点 1080.根到叶路径上的不足节点 1080. 根到叶路径上的不足节点 - 力扣(LeetCode) 思路: 笔者一开始没看懂,只能通过部分的例子,原因是把路径和小于limit的都给删了…...
超详细讲解C语言转义字符\a \b \r \t \? \n等等
转义字符 C语言有一组字符很特殊,叫做转义字符,顾名思义,改变原来的意思的字符。 1 \? ??)是一个三字母词,在以前的编译器它会被编译为] (??会被编译为[ 因此在以前输入(are you ok ??)就会被编译为are you ok ] 解决这个…...
TensorFlow 多卡训练 tf多卡训练
目录 export TF_GPU_ALLOCATORcuda_malloc_async 🔧 具体作用 优势 🧩 依赖条件 ✅ 设置方式(Linux/macOS) export TF_GPU_ALLOCATORcuda_malloc_async 是设置 TensorFlow 使用 CUDA 异步内存分配器 的环境变量。这个设置可…...
数据结构--树状数组
树状数组(Fenwick Tree) 概述 树状数组是一种用于高效处理动态数组中前缀和查询的数据结构。它能够在 O ( l o g n ) O(log n) O(logn) 时间复杂度内完成以下操作: 更新数组中的元素O(logn)查询数组前缀和O(logn) 数组: O(1)…...
如何使用python保存字典
在Python中,可以通过多种方式将字典(dict)保存到文件中,并能够随时读取恢复。以下是几种常见的方法: 1. 使用 json 模块(推荐) 适用场景:需要人类可读的文件格式,且数据不…...
C和指针——预处理
预处理是编译前的过程,主要对define,include以及一些编译器定义的内容进行替换 #define的本质就是替换 1、例子 #define FOREVER for(;;) 2、例子 #define TEMPD "1231231231\ 123123123" \\如果太长了,可以用\换行 3、例子——可…...
windows python ta-lib安装
https://github.com/TA-Lib/ta-lib/releases windows安装ta-lib指令 pip install --no-cache-dir https://github.com/cgohlke/talib-build/releases/download/v0.6.3/ta_lib-0.6.3-cp310-cp310-win_amd64.whl...
机器学习+多目标优化的算法如何设计?
一、核心问题与设计思路 机器学习(ML)与多目标优化(MOO)的结合旨在解决两类核心问题: 利用ML提升MOO算法的性能:通过机器学习模型预测解的质量、优化搜索方向或加速收敛;利用MOO优化ML模型的多…...
爬虫管理平台-最新版本发布
TaskPyro 是什么? TaskPyro 是一个轻量级的 Python 任务调度平台,专注于提供简单易用的任务管理和爬虫调度解决方案。它能够帮助您轻松管理和调度 Python 任务,特别适合需要定时执行的爬虫任务和数据处理任务。 官方文档:https:/…...
SpringCloud教程 — 无废话从0到1逐步学习
目录 什么是微服务? 微服务与单体架构的区别 微服务主要用法概念 远程调用 服务注册/发现&注册中心 配置中心 服务熔断&服务降级 1)服务熔断 2)服务降级 API 网关 环境准备 Nacos OpenFeign Gateway Sentinel Sea…...
Webug4.0通关笔记12- 第17关 文件上传之前端拦截(3种方法)
目录 一、文件上传前端拦截原理 二、第17关 文件上传(前端拦截) 1.打开靶场 2.构造php脚本 3.源码分析 (1)js源码 (2)服务器源码 (3)总结 4.渗透实战 (1)禁用js法 &#…...
使用synchronized关键字同步Java线程
问题 在Java多线程编程中,你需要保护某些数据,防止多个线程同时访问导致数据不一致或程序错误。 解决方案 在需要保护的方法或代码段上使用synchronized关键字。 讨论 synchronized关键字是Java提供的同步机制,用于确保在同一时刻只有一…...
从头训练小模型: 2 监督微调SFT
简介 从头训练小模型是我个人对大语言模型(LLM)学习中的重要部分。 通过对一个小规模模型的最小化复现实践,我不仅能够深入理解模型训练的基本流程,还可以系统地学习其中的核心原理和实际运行机制。这种实践性的学习方法让我能够直观地感受模型训练的每…...
【QT】QT中http协议和json数据的解析-http获取天气预报
QT中http协议和json数据的解析 1.http协议的原理2.QT中http协议的通信流程2.1 方法步骤 3.使用http协议(通过http下载图片和获取天气预报信息)3.1 http下载网络上的图片(下载小文件)3.1.1 示例代码3.1.2 现象 3.2 获取网络上天气预报3.2.1 免费的天气预报…...
PiscTrace针对YOLO深度适配:从v8到v12
一、YOLO简介:目标检测的核心技术 YOLO(You Only Look Once)是近年来最为流行的目标检测模型,凭借其实时性与高精度,广泛应用于自动驾驶、视频监控、安防检测等多个领域。YOLO系列模型自v1问世以来,经过不…...
前端面试每日三题 - Day 24
这是我为准备前端/全栈开发工程师面试整理的第24天每日三题练习,涵盖了: JavaScript 中的 Promise.all()、Promise.race() 和 Promise.allSettled() 的实际应用和性能差异React 中的 Concurrent Rendering 和 useTransition API如何设计一个高并发的在线…...
正态分布习题集 · 题目篇
正态分布习题集 题目篇 全面覆盖单变量正态、多变量正态、参数估计、假设检验、变换以及应用,共 20 题,从基础到进阶。完成后请移步《答案与解析篇》。 1. 基础定义与性质(5题) 1.1 密度函数 写出正态分布 N ( μ , σ 2 ) N(…...
Three.js在vue中的使用(二)-动画、材质
一、Three.js 动画原理与实现 1. 基本原理 Three.js 的动画系统基于 关键帧(Keyframe) 和 时间轴(AnimationClip) 实现: THREE.AnimationMixer:管理多个动画片段的播放器THREE.AnimationClip:…...
【办公类-99-04】20250504闵豆统计表excle转PDF,合并PDF、添加中文字体页眉+边框下划线
需求说明 督导检查,各条线都要收集资料。 今天去加班,遇到家教主任,她让我用保教主任的彩色打印机打印这套活跃度表格。(2023学年上学期下学期-2024学年上学期,就是202309-202504) 每个excle都是内容在A4一…...
ES类迁移方法
快照(s3 file FS)跨集群迁移es-dumpremote-reindexLogstash Elasticsearch 迁移方法 Elasticsearch 迁移是将数据、索引和配置从一个 Elasticsearch 集群转移到另一个集群的过程。以下是几种常见的迁移方法: 1. 快照和恢复 (Snapshot and Restore) 这是最推荐的…...
智能合约部署之全国职业院校技能大赛“区块链技术应用”赛项—“航班延误险案例”
智能合约部署之全国职业院校技能大赛“区块链技术应用”赛项—“航班延误险案例” 1.启动虚拟机上的区块链 (1)打开VMware虚拟机,在桌面中点击右键,选择Open Terminal打开命令行窗口。 (2)使用"cd geth_local/"命令,切换至区块链根目录,输入下面的命令启动…...
STM32外设-GPIO输入(仅数字)
STM32外设-GPIO输入 一,输入的三种类型1. 上拉 (Pull-up)输入2. 下拉 (Pull-down)输入3. 浮空 (Floating / High-Impedance)输入 二,下拉电阻的作用 学完基础的led,接下来学习key即按键,但在连接按键之前,我们必须了解…...
QT开发工具对比:Qt Creator、Qt Designer、Qt Design Studio
前端开发工具—Qt Designer Qt Designer是Qt框架的一部分,是一个图形用户界面设计工具。它允许开发者通过可视化方式设计和布局GUI组件,而无需手动编写UI代码。设计完成后,Qt Designer生成UI文件(通常以.ui为扩展名)&…...
(ADC)数模转换器的不同类型对比
(ADC)数模转换器的不同类型对比 数模转换器(ADC)类型详解1. **并行比较型ADC(Flash ADC)****工作原理****优缺点****应用场景** 2. **逐次逼近型ADC(SAR ADC)****工作原理****优缺点…...
MOS管极间电容参数学习
文章目录 前言1. 输入电容(Ciss)2. 输出电容(Coss)3. 反向转移电容(Crss)4,测试条件解读总结 前言 MOS管在电路设计中非常常用,用途包括DC-DC,电平转换等,所…...
Webug4.0靶场通关笔记14- 第18关 文件上传之Nginx解析缺陷
目录 第18关 渗透实战 1.打开靶场 2.构造php脚本 3.源码分析 (1)客户端源码 (2)服务的源码 4.Nginx解析法渗透 (1)缺陷原因 (2)缺陷条件 (3)构造脚…...
外观模式(Facade Pattern)
非常好!现在我们来讲解结构型设计模式之一:外观模式(Facade Pattern)。 我会通过: ✅ 简洁定义 🎯 为什么需要 🐍 Python 代码(含注释) 🧭 流程图 应用场…...
Javase 基础加强 —— 03 集合
本系列为笔者学习Javase的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员JavaAI智能辅助编程全套视频教程,java零基础入门到大牛一套通关》,章节分布参考视频教程,为同样学习Javase系列课程的同学们提供参考。 集合是一种容…...
【React】 Hooks useTransition 解析与性能优化实践
1.背景 useTransition 是 React 18 引入的一个并发模式下的 Hook,用于区分紧急和非紧急的状态更新,提升应用的响应性和用户体验;它可以管理 UI 中的过渡状态,特别是在处理长时间运行的状态更新时。它允许你将某些更新标记为“过渡”状态&…...
C++23 std::tuple与其他元组式对象的兼容 (P2165R4)
文章目录 引言C23 std::tuple概述std::tuple的定义和基本用法std::tuple的特性std::tuple的应用场景 其他元组式对象的特点Python元组的特点Python元组与C std::tuple的对比 P2165R4提案的具体内容提案背景提案主要内容提案的影响 兼容性示例代码总结 引言 在C编程的世界里&am…...
网络Tips20-003
1.E1载波的控制开销占2/32*100%6.25%,E1载波的基本帧传送时间是125uS。 2.计算机在一个指令周期的过程中,为从内存读取指令操作码,首先要将.程序计数器(PC)的内容送到地址总线上 3.3DES算法:密码学中,3DES是三重数据加密算法通称…...
Rust的安全卫生原则
在Rust编程世界里,unsafe关键字常常让初学者感到困惑。他们经常会问:“在unsafe块里能做什么?”“什么时候需要使用unsafe?” 这些问题虽然很常见,但对于真正理解Rust的安全机制来说还远远不够。因为随着Rust操作语义的…...
TestBench激励与待测
TestBench激励与待测 ✅ 一、TestBench 的作用✅ 二、例化的目的✅ 三、TestBench 中的信号类型选择🟢 输入端口(input) → 在 TestBench 中声明为 reg🟡 输出端口(output)→ 在 TestBench 中声明为 wire ✅…...
VulnHub-OSCP靶机
前言:由于这台机器过于简单,所以我会尽量细化和介绍每个步骤以及涉及到的知识点,让正在打入门机器的你不在迷茫和硬化的操作,理解并熟悉每条命令以及参数的含义,以及把前期带给我们的信息进行快速筛选,有利…...
【前端】【面试】在 Nuxt.js SSR/SSG 应用开发的 SEO 优化方面,你采取了哪些具体措施来提高页面在搜索引擎中的排名?
在 Nuxt.js 的 SSR(服务器端渲染)或 SSG(静态站点生成)应用中,SEO 优化是非常核心的工作内容之一。利用 Nuxt.js 的特性,我们可以通过多个维度系统地提升搜索引擎排名。 下面是我在实际项目中采取的 SEO 优…...
软考 系统架构设计师系列知识点之杂项集萃(53)
接前一篇文章:软考 系统架构设计师系列知识点之杂项集萃(52) 第85题 在静态测试中,主要是对程序代码进行静态分析。“数据初始化、赋值或引用过程中的异常”属于静态分析中的()。 A. 控制流分析 B. 数据…...
【AI面试准备】模型自动化评估经验
面试要求:模型自动化评估经验。 以下是针对模型自动化评估经验的结构化知识总结,涵盖核心概念、工具链、高频考点和面试回答技巧,助你快速掌握关键点: 目录 **一、模型自动化评估的核心逻辑**1. **为什么要自动化评估?…...
indexedDB
indexedDB 特点 **容量大:**不同浏览器不一样,250MB **遵守同源策略:**只能访问同源下的数据库,不能跨域 **异步操作:**防止阻塞(特别是大量数据的操作) 事务支持:确保数据的…...
Mybatis学习(下)
目录 1. 动态sql的应用 1.2 1.2 1.3 、 、 标签 1.4 1. 动态sql的应用 使用Mybatis框架时, 对于sql数据的操作量比较大的时候, 看着会觉得很乱, 可能写着写着就乱了, 或者说回过头来发现sql语句写错了, 很麻烦, 所以动态sql就可以让我们用Java代码, 替换部分sql语句 1.2 &l…...
[三分钟学算法]分治-快速排序-最小的K个数:设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。
文章目录 题目详情算法原理编写代码 题目详情 题目链接 设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。 示例: 输入: arr [1,3,5,7,2,4,6,8], k 4 输出: [1,2,3,4]提示: 0 < len(arr) <…...
从github的插件直接导入unity
我们随便找个插件: A:处直接下载压缩包文件,或是git下载也可以 B:直接下载打好包也行 我们这里选择直接下好的包 请注意!!!有些版本可能不支持,请找到支持的,对应的历史版本进行下载使用 点击B…...
Linux | 了解Linux中的任务调度---at与crontab 命令
一. 延迟任务 1.1 延迟任务的发起 -- at命令 at命令执行是调用的是atd服务,即使系统最小化安装atd也会被安装到系统中at 任务信息存放在系统中/var/spool/at目录中at 任务的日志文件被存放到/var/log/cron中at 任务执行时如果遇到系统处于关闭状态,那么…...
多语言笔记系列:Polyglot Notebooks 多种使用方式
.NET Interactive 使用方式 .NET Interactive生态,大约由:前端UI(Jupyter、VSCode等)、交互协议(PMP、JMP)、执行器(.net interactive)和语言服务组成。 有多种组合方式,来使用。最常用的还是 VS Code(Polyglot Notebooks插件)充当前端UI&am…...
TF-IDF算法详解
引言 TF-IDF(Term Frequency-Inverse Document Frequency)是信息检索和文本挖掘中常用的加权技术,用于评估一个词语对于一个文档集或语料库中某个文档的重要程度。 一、基本概念 1. 组成要素 TF-IDF由两部分组成: TF (Term F…...
C语言实现数据结构:堆排序和二叉树_链式
一.堆的应用 1.堆排序 void test01() {int arr[] { 17,20,10,13,19,15 };int n sizeof(arr) / sizeof(arr[0]);HP p;HPInit(&p);for (int i 0; i < n; i){HPPush(&p, arr[i]);}int i 0;while (!HPEmpty(&p)){arr[i] HPTop(&p);HPPop(&p);}for (i…...
网狐系列三网通新钻石娱乐源码全评:结构拆解、三端实测与本地部署问题记录
本文为基于“网狐系列三网通新钻石娱乐电玩”源码的私测报告,涵盖前后端结构解析、三端测试结果、控制台功能说明、智能机器人机制以及本地部署过程中的真实报错与解决策略。文章目的仅限于源码结构研究和测试用途,不具备任何上线、商用部署条件。 一、源…...
C语言的指针认识
当实参传递给形参时,形参实例化相当于实参的一份临时拷贝 对形参的修改不能改变实参,除非用指针...
iview自定义下拉树菜单
最近由于项目需要,封装了第二种下拉树,带checkBox并且可以支持快速选择的下拉树。样式如下 自定义下拉树菜单.png 所实现交互功能如下: 1.点击对应的层级按钮,自动勾选出对应的所有同级节点。 2.点击自定义,清空所有勾…...