PC接入deepseek
<template>
<div class="btn">
<el-button type="primary" plain @click="openAIDrawer">AI问答</el-button>
</div>
<!-- deepSeek -->
<el-drawer
v-model="deepSeekData.drawerShow"
:title="deepSeekData.title"
size="40%"
>
<div class="deepSeekDrawer">
<!-- 首次进入时的引导界面,当历史记录为空时显示 -->
<div
class="deepSeekDrawer-guide"
v-if="!deepSeekData.history.length"
>
<div class="guide-box">
<div class="f-title">
<div class="icon">
<img src="" alt="" />
</div>
<div class="text">我是AI小安助理,很高兴认识你!</div>
</div>
<div class="s-title">
我能帮你搜索医疗文献,分级诊疗AI协作
</div>
<div class="input-box">
<div class="textarea-box">
<el-input
v-model="deepSeekData.query"
type="textarea"
:rows="3"
placeholder="给 小安助手 发送消息"
@keyup.enter="getDeepSeekContent"
></el-input>
</div>
<div class="menu-box">
<div
class="r1"
:class="{ r1active: deepSeekData.r1 }"
@click="toggleR1"
>
<div>
<i class="iconfont icon-shendusikao"></i>
</div>
<div>深度思考</div>
<div>(R1)</div>
</div>
<div class="r2">
<div class="link">
<i class="iconfont icon-attach"></i>
</div>
<div class="send" @click="getDeepSeekContent">
<i class="iconfont icon-up"></i>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 历史记录存在时显示的界面 -->
<div class="deepSeekDrawer-tree" v-else>
<div class="tree-box" id="tree-box">
<div
class="qa-box"
v-for="(item, index) in deepSeekData.history"
:key="index"
>
<div class="q">
<div class="text">
{{ item.problem }}
</div>
</div>
<div class="a">
<div class="avatar"></div>
<div class="a-content">
<div class="tip-box">
<div class="tip-text">
<i
class="iconfont icon-shendusikao"
></i>
<div>已深度思考</div>
<div>
{{ `(用时${item.useTime}秒)` }}
</div>
<div
class="udIcon"
@click="toggleR1Show(index)"
>
<i
class="iconfont icon-xm-direction-down"
v-show="item.r1Show"
></i>
<i
class="iconfont icon-xm-direction-up"
v-show="!item.r1Show"
></i>
</div>
</div>
</div>
<div
class="thoughtContent"
v-html="item.thoughtContent"
v-show="item.r1Show"
></div>
<div
class="answerContent"
v-html="item.answer"
></div>
</div>
</div>
</div>
</div>
<div class="input-box">
<div class="textarea-box">
<el-input
v-model="deepSeekData.query"
type="textarea"
:rows="3"
placeholder="给 小安助手 发送消息"
@keyup.enter="getDeepSeekContent"
></el-input>
</div>
<div class="menu-box">
<div
class="r1"
:class="{ r1active: deepSeekData.r1 }"
@click="toggleR1"
>
<div>
<i class="iconfont icon-shendusikao"></i>
</div>
<div>深度思考</div>
<div>(R1)</div>
</div>
<div class="r2">
<div class="link">
<i class="iconfont icon-attach"></i>
</div>
<div class="send" @click="getDeepSeekContent">
<i class="iconfont icon-up">发送</i>
</div>
</div>
</div>
</div>
</div>
</div>
</el-drawer>
</template>
<script setup lang="ts">
import { reactive } from "vue";
// 定义存储AI问答相关数据的响应式对象
const deepSeekData = reactive<{
drawerShow: boolean; // 控制AI抽屉的显示状态
title: string; // AI抽屉的标题
query: string; // 用户输入的查询内容
content: string; // 未使用的变量,可以考虑移除
r1: boolean; // 控制是否开启深度思考模式
history: {
problem: string; // 用户提出的问题
answer: string; // AI的回答
useTime: number; // 回答用时
thoughtContent: string; // 深度思考的内容
r1Show: boolean; // 控制深度思考内容的显示状态
}[];
}>({
drawerShow: false,
title: "AI小安助理",
query: "",
content: "",
r1: false,
history: [],
});
// 打开AI抽屉的函数
function openAIDrawer() {
deepSeekData.drawerShow = true;
}
// 切换深度思考模式状态的函数
function toggleR1() {
deepSeekData.r1 = !deepSeekData.r1;
}
// 切换深度思考内容显示状态的函数
function toggleR1Show(index: number) {
deepSeekData.history[index].r1Show = !deepSeekData.history[index].r1Show;
}
// 获取deepSeek回复的异步函数
async function getDeepSeekContent() {
// 将用户的问题添加到历史记录中,并设置初始回答状态
deepSeekData.history.push({
problem: deepSeekData.query,
answer: "正在思考中......",
useTime: 0,
thoughtContent: "",
r1Show: false,
});
const treeBox = document.getElementById("tree-box");
scrollToBottom(treeBox);
try {
// 发送POST请求到deepSeek API获取回复
const response = await fetch(
"https://api.deepseek.com/v1/chat/completions",
{
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "Bearer sk-5c58d7b4d7fa449fae******需要花钱",
},
body: JSON.stringify({
model: deepSeekData.r1
? "deepseek-reasoner"
: "deepseek-chat",
messages: [{ role: "user", content: deepSeekData.query }],
stream: true, // 启用流式传输
}),
}
);
// 检查响应状态,如果不是2xx则抛出错误
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
// 清空当前问题和初始回答,准备接收API的回复
deepSeekData.history[deepSeekData.history.length - 1].answer = "";
deepSeekData.query = "";
const reader = response.body!.getReader();
const decoder = new TextDecoder();
let buffer = "";
while (true) {
const { done, value } = await reader.read();
if (done) break;
buffer += decoder.decode(value, { stream: true });
const chunks = buffer.split("\n\n") as any;
buffer = chunks.pop();
for (const chunk of chunks) {
if (chunk.startsWith("data:")) {
try {
const data = JSON.parse(
chunk.replace("data:", "").trim()
);
deepSeekData.history[
deepSeekData.history.length - 1
].answer += data.choices[0].delta.content.replace(
/\n/g,
"<br>"
);
scrollToBottom(treeBox);
} catch (e) {
console.warn("解析错误:", chunk);
}
}
}
}
} catch (error) {
// 打印详细的错误信息,方便调试
console.error("调用 API 出错:", error);
// 可以在这里添加显示错误信息给用户的逻辑,例如弹出提示框
}
}
// 平滑滚动到指定元素底部的函数
function scrollToBottom(element: any) {
if (element) {
const start = element.scrollTop;
const end = element.scrollHeight;
const change = end - start;
const duration = 500;
let startTime: number | null = null;
function animateScroll(currentTime: number) {
if (!startTime) startTime = currentTime;
const elapsed = currentTime - startTime;
const progress = Math.min(elapsed / duration, 1);
element.scrollTop = start + change * progress;
if (progress < 1) {
window.requestAnimationFrame(animateScroll);
}
}
window.requestAnimationFrame(animateScroll);
}
}
</script>
<style scoped lang="scss">
.btn {
margin: 200px;
}
.el-button--primary.is-plain {
background-color: #fff;
border-color: #00abb6 !important;
color: #00abb6 !important;
}
.el-button--primary:hover {
background-color: #47cfd6;
color: #fff !important;
border: none !important;
}
.el-button--primary:focus {
outline: none; /* 去掉默认的外边框 */
box-shadow: none; /* 去掉可能的阴影 */
}
.el-drawer__body {
padding: 0 !important;
}
/* deepseek */
.deepSeekDrawer {
height: 100%;
overflow: hidden;
.deepSeekDrawer-guide {
height: 100%;
display: flex;
align-items: center;
.guide-box {
width: 100%;
}
.f-title {
width: 100%;
display: flex;
justify-content: center;
height: 50px;
color: black;
.icon {
width: 50px;
height: 50px;
margin-right: 20px;
}
.text {
font-weight: 600;
font-size: 24px;
line-height: 50px;
}
}
.s-title {
width: 100%;
text-align: center;
font-weight: 400;
font-size: 14px;
color: black;
margin-top: 24px;
}
}
.deepSeekDrawer-tree {
height: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
.tree-box {
flex: 1;
overflow: auto;
.qa-box {
.q {
height: 44px;
position: relative;
.text {
background: #f3faf8;
border-radius: 8px;
position: absolute;
height: 44px;
padding: 0 20px;
top: 0;
right: 0;
display: flex;
align-items: center;
}
}
.a {
display: flex;
.avatar {
width: 34px;
height: 34px;
border-radius: 50%;
background: url("/xiaoanMeeting/AI.png") no-repeat;
background-size: 100% 100%;
margin-right: 20px;
}
.a-content {
flex: 1;
.tip-box {
height: 32px;
position: relative;
.tip-text {
position: absolute;
padding-left: 20px;
padding-right: 10px;
background: #f2f3f5;
border-radius: 8px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
}
.udIcon {
cursor: pointer;
}
}
.thoughtContent {
margin-top: 10px;
padding: 10px 0;
border-bottom: 1px solid #c9cdd4;
font-size: 14px;
color: #1d2129;
line-height: 22px;
}
.answerContent {
padding: 16px 0;
font-size: 14px;
color: #1d2129;
line-height: 28px;
}
}
}
}
}
}
.input-box {
width: 100%;
background: #f9fafb;
border-radius: 16px 16px 16px 16px;
border: 1px solid #c9cdd4;
padding: 16px 14px;
margin-top: 24px;
.el-textarea__inner {
border: none !important;
box-shadow: none !important;
background: transparent;
}
.menu-box {
display: flex;
justify-content: space-between;
height: 25px;
align-items: center;
margin-top: 10px;
.r1 {
height: 100%;
background: #f3faf8;
border-radius: 12px 12px 12px 12px;
border: 2px solid #379583;
padding: 0 15px;
display: flex;
align-items: center;
font-weight: 400;
font-size: 12px;
color: #379583;
cursor: pointer;
}
.r1active {
background: #379583;
color: white;
}
.r2 {
display: flex;
cursor: pointer;
.link {
color: #4e5969;
font-size: 18px;
}
.send {
width: 25px;
height: 25px;
border-radius: 50%;
background: #c9cdd4;
font-size: 14px;
color: white;
text-align: center;
}
}
}
}
}
</style>
相关文章:
PC接入deepseek
<template> <div class"btn"> <el-button type"primary" plain click"openAIDrawer">AI问答</el-button> </div> <!-- deepSeek --> <el-drawer v-model"deepSeekData.drawerShow" :title&quo…...
Atlas 800I A2 离线部署 DeepSeek-R1-Distill-Llama-70B
一、环境信息 1.1、硬件信息 Atlas 800I A2 1.2、环境信息 注意:这里驱动固件最好用商业版,我这里用的社区版有点小问题 操作系统:openEuler 22.03 LTS NPU驱动:Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run NPU固…...
CF每日4题
1500左右的做到还是有点吃力 2093E 1500 二分答案 题意:给定一个长度为 n 的数组,现在要把它切成 k 份,求每一份最小的MEX中的最大值。 就是找最大值,但是这个值是所有段最小的值采用二分答案,二分这个值࿰…...
vue3 实现将html内容导出为图片、pdf和word
话不多说直接开始 本文使用到的开源插件库地址 wang1xiang 1.1 下载依赖 npm install html2canvas jspdf html-docx-js-typescript file-saver --save 2.1 下载工具 npm install html2image-pdf-word --save 3.1 页面使用 <template><div><div click"…...
手机端本地服务与后端微服务的技术差异
以下是手机内部本地服务与后端微服务架构及通信协议的对比分析,结合两者的核心设计差异与技术实现特点展开: 一、架构设计对比 维度手机端本地服务后端微服务核心目标资源效率、离线优先、动态更新高并发处理、分布式事务、服务治理服务拆分粒度按功能…...
音视频之H.265/HEVC环路后处理
H.265/HEVC系列文章: 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 5、音视频之H.265/HEVC量化 6、音视频之H.265/HEVC环路后处理 类似于以往的视频编码标准,H…...
RSUniVLM论文精读
一些收获: 1. 发现这篇文章的table1中,有CDChat ChangeChat Change-Agent等模型,也许用得上。等会看看有没有源代码。 摘要:RSVLMs在遥感图像理解任务中取得了很大的进展。尽管在多模态推理和多轮对话中表现良好,现有模…...
redis特性及应用场景
文章目录 什么是redis?热库redis作为热库的特性redis适用场景 什么是redis? redis在系统架构中的位置就是冷热分离架构的热数据库位置, redis就是热库, 我们一般说缓存数据库。 其他的像MySQL、SQL Server这种关系数据库、MongoDB…...
Java中正则表达式使用方法
1. 正则表达式概述 正则表达式(Regular Expression,简称 Regex)是一种用于匹配字符串的模式工具。在 Java 中,正则表达式通过 java.util.regex 包实现,主要涉及以下两个类: Pattern:表示一个编…...
CSS基础
1. CSS入门 1.1. CSS是什么 CSS是Cascading Style Sheets的缩写,翻译为层叠样式表。CSS是一种样式表语言,用来描述HTML文档的表现方式,如字体、色彩、背景色等等。我们先从一段简单的CSS代码开始。 代码1 CSS示例 p {color: red; }这段代…...
【Linux系统篇】:什么是信号以及信号是如何产生的---从基础到应用的全面解析
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:Linux篇–CSDN博客 文章目录 一.信号概念1.生活角度的信号2.技术应用角度的信号3.补充内容前…...
SpringSecurity源码解读AbstractAuthenticationProcessingFilter
一、介绍 AbstractAuthenticationProcessingFilter 是 Spring Security 框架里的一个抽象过滤器,它在处理基于表单的认证等认证流程时起着关键作用。它继承自 GenericFilterBean,并实现了 javax.servlet.Filter 接口。此过滤器的主要功能是拦截客户端发送的认证请求,对请求…...
Python torchvision.transforms 下常用图像处理方法
torchvision.transforms 是 PyTorch 用于处理图像数据的一个模块,提供了丰富的图像变换功能。 1. transforms.Compose 的使用方法 transforms.Compose 用于将多个 transforms 操作组合起来,形成一个变换序列,然后按顺序对图像进行处理。其输…...
Zynq7020 制作boot.bin及烧录到开发板全流程解析
Zynq7020作为Xilinx推出的经典SoC芯片,其PS(Processing System)与PL(Programmable Logic)协同工作的特性使其在嵌入式开发中广泛应用。然而,初次接触Zynq的开发者在制作启动文件boot.bin及烧录时࿰…...
【办公类-89-02】20250424会议记录模版WORD自动添加空格补全下划线
背景需求 4月23日听了一个MJB的征文培训,需要写会议记录 把资料黏贴到模版后,发现每行需要有画满下划线 原来做这套资料,就是手动按空格到一行末,有空格才会出现下划线,也就是要按很多的空格(凑满一行&…...
Python-36:饭馆菜品选择问题
问题描述 小C来到了一家饭馆,这里共有 nn 道菜,第 ii 道菜的价格为 a_i。其中一些菜中含有蘑菇,s_i 代表第 ii 道菜是否含有蘑菇。如果 s_i 1,那么第 ii 道菜含有蘑菇,否则没有。 小C希望点 kk 道菜,且希…...
某大型电解铝厂电解系统谐波治理装置改造沃伦森电气
电解铝行业谐波治理解决方案——无源滤波装置优化升级,保障稳定运行 在电解铝生产过程中,谐波污染问题严重影响电网电能质量,甚至可能导致滤波装置损坏,引发群爆事故。河南登封某大型电解铝厂通过无源滤波装置智能化改造ÿ…...
基于YOLO+DeepSeek的农作物病虫害检测系统
前言 本系统是一个基于YOLODeepSeek的农作物病虫害检测系统。 可使用YOLOV1-YOLOV12的任意模型进行目标检测。可以实现检测图片、批量检测图片、视频检测、摄像头检测四种方式。 能够检测出[“苹果-黑腐病”, “苹果-健康”, “苹果-结痂”, “甜椒-细菌性斑疹”, “甜椒-健康…...
Python实现技能记录系统
Python实现技能记录系统 来自网络,有改进。 技能记录系统界面如下: 具有保存图片和显示功能——允许用户选择图片保存,选择历史记录时若有图片可预览图片。 这个程序的数据保存在数据库skills2.db中,此数据库由用Python 自带的…...
【专题刷题】二分查找(一):深度解刨二分思想和二分模板
📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;ÿ…...
基于Python+Flask的MCP SDK响应式文档展示系统设计与实现
以下是使用Python Flask HTML实现的MCP文档展示系统: # app.py from flask import Flask, render_templateapp Flask(__name__)app.route(/) def index():return render_template(index.html)app.route(/installation) def installation():return render_templa…...
Flask + ajax上传文件(一)
一、概述 本教程将教你如何使用Flask后端和AJAX前端实现文件上传功能,包含完整的代码实现和详细解释。 二、环境准备 1. 所需工具和库 Python 3.xFlask框架jQuery库Bootstrap(可选,用于美化界面)2. 安装Flask pip install flask三、项目结构 upload_project/ ├── a…...
【每天一个知识点】熵(Entropy)
“熵(Entropy)”是信息论、热力学、机器学习等多个领域的核心概念。它可以用一句话概括为: 🔑 熵表示系统的不确定性或信息混乱程度。 📚 一、信息论中的熵(Information Entropy) 在 Claude Sh…...
GIT 使用小记
全局设置 PS C:\workspace> git config --global user.name "FreeMan" PS C:\workspace> git config --global user.email "12323772wawhyuser.noreply.gitee.com" PS C:\workspace> git remote add origin https://gitee.com/wawhy/mountain.git…...
如何保证高防服务器中的系统安全?
对于高防服务器中的系统安全,企业通常会采取一系列的防护措施和策略防止网络攻击、入侵、恶意软件和其他网络安全威胁,下面是几个较为主要的安全防护措施,能够帮助企业提升高防服务器的安全性。 定期更新服务器中操作系统以及所有安装的软件&…...
【go语言】window环境从源码编译go
背景 早就听过go语言已经实现自举, 也就是使用旧版本go,来编译新版源码,得到新版本go。 步骤 1. 下载源码 git clone https://github.com/golang/go.git 2. 开始make cd go\src make.bat 3. 等待编译 卡住就按下回车 验证新版本 ……...
医学图像(DICOM数据)读取及显示(横断面、冠状面、矢状面、3D显示)为什么用ITK+VTK,单独用ITK或者VTK能实一样功能吗?
在医学图像处理中,结合使用 ITK 和 VTK 是常见的做法,因为它们各自专注于不同的核心功能。以下是逐步解释为何代码中同时使用两者,以及单独使用是否可行的分析: 1. 为什么用ITK处理DICOM数据? 1.1 ITK的DICOM处理优势…...
TiDB 深度解析与 K8S 实战指南
一、TiDB 核心特性与架构原理 1. 核心特性 分布式架构: 采用计算(TiDB Server)、存储(TiKV)、调度(PD)分离设计,支持水平扩展至 PB 级数据量。通过 PD 动态调度 Region(…...
WPS右键菜单中“上传到云文档”消失,使用命令行注册解决
关于上传到wps云文档,右键菜单莫名消失的问题 尝试在WPS设置显示上传到wps云文档的右键菜单,以及使用设置和修复工具修复,均无法显示菜单。 最终解决方法: regsvr32 "D:\Program Files (x86)\WPS Office\12.1.0.20784\offic…...
计算机求职面经内容与技巧分享
计算机求职面经内容与技巧分享 一、求职前的充分准备 (一)简历优化 突出技术能力:在简历中,务必清晰呈现自己精通的编程语言,例如熟练掌握 Java、Python 等语言的核心语法、常用库及框架。详细列举熟悉的技术栈&#x…...
java Springboot使用扣子Coze实现实时音频对话智能客服
一、背景 因公司业务需求,需要使用智能客服实时接听顾客电话。 现在已经完成的操作是,智能体已接入系统进行对练,所以本文章不写对联相关的功能。只有coze对接~ 扣子提供了试用Realtime WebSocket,点击右上角setting配…...
焦化烧结行业无功补偿解决方案—精准分组补偿 稳定电能质量沃伦森
在焦化、烧结等冶金行业,负荷运行呈现长时阶梯状变化,功率波动相对平缓,但对无功补偿的分组精度要求较高。传统固定电容器组补偿方式无法动态跟随负荷变化,导致功率因数不稳定,甚至可能因谐波放大影响电网安全。 行业…...
机器人项目管理新风口:如何高效推动智能机器人研发?
在2025年政府工作报告中,“智能机器人”首次被正式纳入国家发展战略关键词。从蛇年春晚的秧歌舞机器人惊艳亮相,到全球首个人形机器人马拉松的热议,智能机器人不仅成为科技前沿的焦点,也为产业升级注入了新动能。而在热潮背后&…...
ZooKeeper配置优化秘籍:核心参数说明与性能优化
#作者:张桐瑞 文章目录 tickTime:Client-Server通信心跳时间initLimit:Leader-Follower初始通信时限syncLimit:Leader-Follower同步通信时限dataDir:数据文件目录clientPort:客户端连接端口服务器名称与地…...
uniapp -- 实现微信小程序、app、H5端视频上传
布局及实现代码: <template><view class"flex flex-column p-4 grid-gap-4"><view class"flex flex-column grid-gap-4 bg-white p-4 rounded-4"><view class"font-weight-600">视频名称</view><i…...
2025年Redis分片存储性能优化指南
一、分片规则与负载均衡 动态哈希分片 采用CRC16算法计算键哈希值,通过hash_slot CRC16(key) % 16384确定槽位分布,结合Redis Cluster自动管理槽位迁移。 总分片数按需动态调整,例如从16节点扩容至32节点时,触发槽位重分配以…...
前端跨端框架的开发以及IOS和安卓的开发流程和打包上架的详细流程
以下是关于 前端跨端框架开发 以及 iOS/Android 原生开发流程与上架 的详细指南,涵盖技术选型、开发工具、打包发布全流程: 一、前端跨端开发框架对比与流程 主流跨端框架 框架技术栈性能接近原生生态成熟度适用场景React NativeJS/React80%⭐⭐⭐⭐⭐…...
项目《基于Linux下的mybash命令解释器》(二)
一、使用系统命令的完整代码 #include<stdio.h> #include<wait.h> #include<stdlib.h> #include<unistd.h> #include<assert.h> #include<string.h> #include<pwd.h>#define ARG_MAX 10//防止参数不够,可以做到一改全改…...
arm64适配系列文章-第十章-arm64环境上jenkins的部署
ARM64适配系列文章 第一章 arm64环境上kubesphere和k8s的部署 第二章 arm64环境上nfs-subdir-external-provisioner的部署 第三章 arm64环境上mariadb的部署 第四章 arm64环境上nacos的部署 第五章 arm64环境上redis的部署 第六章 arm64环境上rabbitmq-management的部署 第七章…...
PyTorch生成式人工智能实战(2)——PyTorch基础
PyTorch生成式人工智能实战(2)——PyTorch基础 0. 前言1. 创建 PyTorch 张量2. PyTorch 张量索引和切片3. PyTorch 张量形状4. 在 PyTorch 张量数学运算小结系列链接 0. 前言 为了训练生成式人工智能模型,我们可以使用多种数据格式ÿ…...
解决高德地图AMapUtilCoreApi、NetProxy类冲突
问题: Duplicate class com.amap.apis.utils.core.api.AMapUtilCoreApi found in modules jetified-3dmap-10.0.600 (com.amap.api:3dmap:10.0.600) and jetified-search-9.7.1 (com.amap.api:search:9.7.1) Duplicate class com.amap.apis.utils.core.api.NetProx…...
java—14 ZooKeeper
一、ZooKeeper简介 ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务 是一种复杂的过程,ZooKeeper通过简单的架构和API解决了这个问题。ZooKeeper运行开 发人员专注于核心应用程序逻辑,而不必担心应用程序的分…...
特征存储的好处:特征存储在机器学习开发中的优势
随着企业寻求提升机器学习生产力和运营能力 (MLOps),特征存储 (Feature Store) 的普及度正在迅速提升。随着 MLOps 技术的进步,特征存储正成为机器学习基础设施的重要组成部分,帮助企业提升模型的性能和解释能力,并加速新模型与生产环境的集成。这些存储充当集中式存储库,…...
【Promethus(普罗米修斯)介绍安装及使用】
一、系统介绍 1、什么是Prometheus? Prometheus:不仅是一款时间序列数据库,在整个生态上还是一套完整的监控系统。同时,还涉及许多以“explore”命名的客户端数据采集工具以及pushgateway网关。 官网:https://prometheus.io/ 文献:https://prometheus.io/docs/introdu…...
力扣热题100题解(c++)—矩阵
73.矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 int m matrix.size(); // 行数int n matrix[0].size(); // 列数bool firstRowZero false; // 标记第一行是否包含 0bool f…...
Spring Boot Controller 单元测试撰写
文章目录 引言标准用法必需依赖项核心注解说明代码示例 当涉及静态方法时的测试策略必需依赖项核心注解说明代码示例 引言 之前在编写 Controller 层的单元测试时,我一直使用 SpringBootTest 注解,但它会加载整个 Spring 应用上下文,资源开销…...
MVCC详解
目录 undo日志版本链 read view一致性视图 MVCC过程分析 读事务&写事务 Multi-Version Concurrency Control,多版本并发控制在读已提交和可重复读隔离级别下都实现了MVCC机制 undo日志版本链 一行数据被修改后,MySQL会保留修改前的数据(u…...
【通关函数的递归】--递归思想的形成与应用
目录 一.递归的概念与思想 1.定义 2.递归的思想 3.递归的限制条件 二.递归举例 1.求n的阶乘 2.顺序打印一个整数的每一位 三.递归与迭代 前言:上篇博文分享了扫雷游戏的实现,这篇文章将会继续分享函数的递归相关知识点,让大家了解并掌握递归的思…...
Python爬虫实战:移动端逆向工具Fiddler经典案例
一、引言 在移动互联网迅猛发展的当下,移动端应用产生了海量的数据。对于开发者而言,获取这些数据对于市场调研、竞品分析、数据挖掘等工作具有重要意义。Fiddler 作为一款功能强大的 Web 调试代理工具,能够有效捕获、分析和修改移动端的网络请求,为开发者深入了解移动端网…...
从平台工程视角出发,重塑云原生后端的工程体系
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:从 DevOps 到平台工程,云原生后端的演进逻辑 云原生的广泛应用,使得后端系统的开发、部署与运维逐渐从“编写业务代码”演进为“构建工程平台”。过去,后端开发者通常将注意力集中于 API 编写…...