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

当Ollama遇上划词翻译:我的Windows本地AI服务搭建日记

🚀 实现Windows本地大模型翻译服务 - 基于Ollama+Flask的划词翻译实践

    • 🛠️ 步骤概要
      • 1️⃣ python 环境准备
      • 2️⃣ Ollama 安装
      • 3️⃣ 一个 Flask 服务
      • 4️⃣ Windows 服务化封装
      • 5️⃣ 测试本地接口
      • 6️⃣ 配置划词翻译自定义翻译源
      • 7️⃣ 效果展示
      • 8️⃣ debug 历程
      • 💡 技术亮点

🛠️ 步骤概要

参考 API 文档:

  • Ollama API
  • 划词翻译自定义翻译源

1️⃣ python 环境准备

# 虚拟环境
conda create -n ollama_trans
conda activate ollama_trans
pip install flask flask-cors pywin32 requests waitress
# 请确保完成 pywin32_postinstall.py 的安装步骤。:
python path\to\your\envs\ollama_trans\Scripts\pywin32_postinstall.py -install

2️⃣ Ollama 安装

安装 Ollama 最好提前设置安装路径和模型下载路径,否则它都一股脑干到 C 盘。可以参考前一篇博客 《本地投喂deepseek》:

  • 设置模型保存路径:新增环境变量 OLLAMA_MODELS,值为目标地址,似乎要 重启电脑生效
  • 指定安装目录:OllamaSetup.exe /DIR=“D:\some\location”
  • ollama默认在 11434 端口提供 REST API,比如通过 curl 发送请求到 /api/generate 来生成文本:
curl http://localhost:11434/api/generate -d "{\"model\": \"deepseek-r1:14b\", \"prompt\": \"Why is the sky blue?\", \"stream\": false}"
  • 我们的目的就是用 flask 写一个服务器适配 Ollama 和划词翻译的 API

3️⃣ 一个 Flask 服务

遇事不决问 DS

# translation_service.py
import re
import win32serviceutil
import win32service
import win32event
import servicemanager
import socket
from flask import Flask, request, jsonify
from flask_cors import CORS
from waitress import serve
import requests
import logging
import sys
import osapp = Flask(__name__)
CORS(app)# 获取当前脚本所在的目录
current_directory = os.path.dirname(os.path.abspath(__file__))
# 定义日志文件名
log_file_path = os.path.join(current_directory, 'flask_svc.log')
# 配置日志记录器
logging.basicConfig(level=logging.INFO,format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt='%a, %d %b %Y %H:%M:%S',filename=log_file_path,filemode='a'  # 使用 'a' 表示追加模式,'w' 表示覆盖模式
)
logger = logging.getLogger(__name__)# 选择ollama的模型
MODEL_NAME = {"qwen": "qwen2.5:7b-instruct-q8_0","llama": "llama3.2:3b","deepseek": "deepseek-r1:14b"  # 其实 deepseek-r1 擅长推理,并不适合翻译,有点慢
}# 语言映射
LANGUAGE_MAP = {"中文(简体)": "中文","英语": "英文","日语": "日文"
}def clean_response(text):"""清除<think>标签内容"""# 过滤DeepSeek思考过程的正则表达式THINK_PATTERN = re.compile(r'<think>.*?</think>', re.DOTALL)return THINK_PATTERN.sub('', text).strip()def build_prompt(text, source, target):source_lang = LANGUAGE_MAP.get(source, source)target_lang = LANGUAGE_MAP.get(target, target)return f"作为专业翻译官,请将以下{source_lang}内容精准翻译为{target_lang},仅输出译文:\n{text}"@app.route('/translate', methods=['POST'])
def translate():try:data = request.jsonlogger.info(f"收到请求: {data}")# 提取必要参数model_name = data['name'].lower()text = data["text"]dest_langs = data["destination"]source_lang = data.get("source") or "auto"if source_lang == dest_langs[0] and len(dest_langs) > 1:target_lang = dest_langs[1]else:target_lang = dest_langs[0]response = requests.post("http://localhost:11434/api/generate",json={"model": MODEL_NAME.get(model_name, model_name),"prompt": build_prompt(text, source_lang, target_lang),"stream": False,"options": {"temperature": 0.3}})# 处理翻译结果raw_response = response.json()["response"]translated_text = clean_response(raw_response)return jsonify({"text": text,"from": source_lang,"to": target_lang,"result": [translated_text]})except Exception as e:logger.error(f"翻译失败: {str(e)}")return jsonify({"error": str(e)}), 500class TranslationService(win32serviceutil.ServiceFramework):_svc_name_ = "LocalOllamaTranslationService"  # 服务名称(唯一)_svc_display_name_ = "Ollama本地翻译服务"_svc_description_ = "为划词翻译提供基于Ollama中运行的大模型的本地翻译服务"  # 服务描述logger.info(f"svc_name: {_svc_name_}, model_name: {MODEL_NAME}")def __init__(self, args):win32serviceutil.ServiceFramework.__init__(self, args)self.hWaitStop = win32event.CreateEvent(None, 0, 0, None)socket.setdefaulttimeout(60)def SvcStop(self):self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)logger.info("Stopping Ollama Translation Service...")win32event.SetEvent(self.hWaitStop)servicemanager.LogInfoMsg("服务正在停止...")logger.info("Service stopped successfully.")def SvcDoRun(self):logger.info("Starting Ollama Translation Service...")try:self.main()logger.info("Service started successfully.")except Exception as e:logger.error(f"Failed to start service: {str(e)}")self.ReportServiceStatus(win32service.SERVICE_STOPPED)def main(self):serve(app, host='127.0.0.1', port=5000)if __name__ == '__main__':if len(sys.argv) == 1:servicemanager.Initialize()servicemanager.PrepareToHostSingle(TranslationService)servicemanager.StartServiceCtrlDispatcher()else:win32serviceutil.HandleCommandLine(TranslationService)

4️⃣ Windows 服务化封装

以下脚本都需要以管理员身份运行

  • 启动服务脚本 install_service.bat
:: install_service.bat
@echo off
# 这里的 python 解释器要填虚拟环境那个,否则找不到包
set PYTHON_PATH=path\to\your\envs\ollama_trans\python.exe
set SCRIPT_PATH=%~dp0translation_service.py%PYTHON_PATH% %SCRIPT_PATH% --startup=auto install
# 这里的服务名称 LocalOllamaTranslationService 要跟上面程序里面的一致,是唯一的
net start LocalOllamaTranslationService
  • 关闭服务脚本 uninstall_service.bat
:: uninstall_service.bat
@echo off
net stop LocalOllamaTranslationService
set PYTHON_PATH=path\to\your\envs\ollama_trans\python.exe
set SCRIPT_PATH=%~dp0translation_service.py%PYTHON_PATH% %SCRIPT_PATH% remove
  • 最终的文件结构:
├── translation_service.py    # 主服务程序
├── install_service.bat       # 服务安装脚本
├── uninstall_service.bat     # 服务卸载脚本
└── flask_svc.log             # python 日志

5️⃣ 测试本地接口

现在我们请求的是 flask 服务的端口,我这里指定了模型名称是 qwen,ollama 中也下载了 qwen2.5:7b-instruct-q8_0

curl -X POST http://localhost:5000/translate -H "Content-Type: application/json" -d "{\"name\": \"qwen\",\"text\": \"人工智能的发展前景\", \"destination\": [\"中文(简体)\", \"英语\"], \"source\": \"中文(简体)\"}"

返回:

{"from":"\u4e2d\u6587(\u7b80\u4f53)","result":["The Prospects for the Development of Artificial Intelligence"],"text":"\u4eba\u5de5\u667a\u80fd\u7684\u53d1\u5c55\u524d\u666f","to":"\u82f1\u8bed"}

6️⃣ 配置划词翻译自定义翻译源

插件设置
在这里插入图片描述

自定义翻译源

  • 接口地址:http://localhost:5000/translate

  • 翻译源名称:qwen,然后回车

  • 测试

根据上面的程序逻辑,翻译源名称最好跟 ollama 下载的模型名称一致

7️⃣ 效果展示

  • 划词翻译
    在这里插入图片描述
  • windows 服务
    在这里插入图片描述

8️⃣ debug 历程

  • 日志的重要性
    • 一开始 deepseek 生成的 py 程序都没写日志,启动服务一直失败,报错:pywintypes.error: (1063, 'StartServiceCtrlDispatcher', '服务进程无法连接到服务控制器上。'),再拿这些报错去问它,给了一堆方案都没解决问题 😄
    • 写了 logger 才发现问题所在:
Sat, 15 Feb 2025 21:19:16 wasyncore.py[line:449] INFO Serving on http://127.0.0.1:5001
Sat, 15 Feb 2025 21:22:47 app.py[line:875] ERROR Exception on /translate [POST]
Traceback (most recent call last):File "D:\dev\miniconda\miniconda3\envs\flask\Lib\site-packages\flask\app.py", line 1511, in wsgi_appresponse = self.full_dispatch_request()File "D:\dev\miniconda\miniconda3\envs\flask\Lib\site-packages\flask\app.py", line 919, in full_dispatch_requestrv = self.handle_user_exception(e)File "D:\dev\miniconda\miniconda3\envs\flask\Lib\site-packages\flask_cors\extension.py", line 165, in wrapped_functionreturn cors_after_request(app.make_response(f(*args, **kwargs)))~^^^^^^^^^^^^^^^^^File "D:\dev\miniconda\miniconda3\envs\flask\Lib\site-packages\flask\app.py", line 917, in full_dispatch_requestrv = self.dispatch_request()File "D:\dev\miniconda\miniconda3\envs\flask\Lib\site-packages\flask\app.py", line 902, in dispatch_requestreturn self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)  # type: ignore[no-any-return]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
TypeError: TranslationService.translate() missing 1 required positional argument: 'self'
  • 服务启停
    • cmd 中的双引号是需要用反斜杠 \ 转义的,在 powershell 中不需要
    • debug 过程中需要起了又删掉 LocalOllamaTranslationService 服务:
    • sc queryex LocalOllamaTranslationService 得到 PID
    • taskkill /f /pid <PID> 强行停止
    • sc delete LocalOllamaTranslationService 删掉这个服务 ID 后才能再启动程序,否则会报错服务已存在
    • 或者以管理员身份打开 cmd 或者 VS Code,执行 python:
    • python translation_service.py stop 停止服务
    • python translation_service.py remove 删除服务
    • python translation_service.py install 安装服务
    • python translation_service.py start 启动服务

💡 技术亮点

  • 完全离线: 从模型推理到翻译服务全程本地运行

  • 隐私保护: 敏感文本无需离开本地设备

  • 低延迟: 省去网络传输耗时,平均响应<500ms

  • 可扩展架构: 轻松切换不同大语言模型

相关文章:

当Ollama遇上划词翻译:我的Windows本地AI服务搭建日记

&#x1f680; 实现Windows本地大模型翻译服务 - 基于OllamaFlask的划词翻译实践 &#x1f6e0;️ 步骤概要1️⃣ python 环境准备2️⃣ Ollama 安装3️⃣ 一个 Flask 服务4️⃣ Windows 服务化封装5️⃣ 测试本地接口6️⃣ 配置划词翻译自定义翻译源7️⃣ 效果展示8️⃣ debug…...

5G与物联网的协同发展:打造智能城市的未来

引言 随着科技的不断进步&#xff0c;智能城市的概念已经不再是科幻小说中的幻想&#xff0c;它正在逐步走进我们的生活。而这背后的两大驱动力无疑是 5G和 物联网&#xff08;IoT&#xff09;。5G网络以其高速率、低延迟、大容量的优势&#xff0c;与物联网的强大连接能力相结…...

并发编程---synchronized关键字,以及synchronized同步锁

文章目录 Synchronized 的使用synchronized 在普通方法上的使用&#xff08;对象锁&#xff09;synchronized 在静态方法上的使用&#xff08;类锁&#xff09;synchronized 在代码块上的使用 JVM 中锁的优化锁的类型自旋锁与自适应自旋锁自旋锁&#xff08;Spin Lock&#xff…...

Vue学习笔记5(Vue3)

Vue3学习笔记 一、create-vue搭建vue3项目 create-vue是vue官方新的脚手架工具&#xff0c;底层切换到了vite 步骤&#xff1a; 查看环境条件 node -v版本需要在16.0及以上创建一个vue应用 npm init vuelatest 这一指令会安装并执行create-vue 二、项目目录和关键文件 in…...

VoIP之音视频会议中的混音技术

在VoIP音视频会议中&#xff0c;需要将多路参会方音频流混合成一路音频流再发送给各参会方&#xff0c;以达到参会方可以听到每个与会人声音的目的&#xff0c;这种技术叫混音。 一、混音基础原理 在实际生活中&#xff0c;我们所处的生活和工作环境就是一个自然的混音场&…...

Baklib一站式云平台:全场景赋能企业知识资产激活

内容概要 在数字化浪潮推动下&#xff0c;企业知识资产的高效管理与价值释放成为核心议题。Baklib作为一站式云平台&#xff0c;以全场景赋能为核心定位&#xff0c;通过构建知识中台架构&#xff0c;为企业提供从资源整合到应用落地的闭环解决方案。该平台不仅支持文本、图像…...

基于nuScenes数据集和DeepSeek模型的端到端自动驾驶解决方案

结合DeepSeek模型进行知识蒸馏&#xff0c;以提高模型性能。这需要将nuScenes中的多模态数据&#xff08;如摄像头图像、雷达点云、车辆状态等&#xff09;整合到模型中&#xff0c;同时使用DeepSeek的生成能力进行蒸馏。 接下来&#xff0c;我需要考虑用户可能的背景。用户可能…...

《AI大模型开发笔记》deepseek提示词技巧

为什么你的 AI 助手总是答非所问&#xff1f; 「写篇产品分析」 → 收到一堆不知所云的文字 「做个竞品对比」 → 得到几页没有重点的废话 揭秘&#xff1a;不是 AI 不够聪明&#xff0c;而是你的指令太“高冷”&#xff01; 一、新手进阶&#xff1a; 5 大法则&#xff0c;让…...

学习笔记-人脸识别相关编程基础

通过编程实现人脸识别功能&#xff0c;需要掌握一定的技术基础&#xff0c;包括编程语言、图像处理、机器学习以及相关的库和框架&#xff1a; 1. 编程语言 Python&#xff1a;Python 是实现人脸识别最常用的语言之一&#xff0c;因为它有大量的库和框架支持&#xff0c;如 Op…...

Java发展史

JavaEE的由来 语言的诞生 Java的前身是Oak语言&#xff0c;其目的是搞嵌入式开发开发智能面包机 叮~~~&#x1f35e;&#x1f35e;&#x1f35e; 产品以失败告终 巅峰 网景公司需要网景浏览器打开网页&#xff0c;Oak->Java&#xff0c;进行前端开发&#xff08;相关技…...

SAP-ABAP:SAP中REPORT程序和online程序的区别对比

在SAP中&#xff0c;REPORT程序和Online程序&#xff08;通常指Dialog程序&#xff09;是两种常见的ABAP程序类型&#xff0c;它们在用途、结构和用户交互方式上有显著区别。以下是它们的详细对比&#xff1a; 1. 用途 REPORT程序Online程序主要用于数据查询、报表生成和批量数…...

【第2章:神经网络基础与实现——2.1 前馈神经网络的结构与工作原理】

老铁们好!今天我们要来一场长达两万字的超详细技术探险,我会像拆解乐高积木一样把前馈神经网络(Feedforward Neural Network)的每个零件摆在台面上,用最接地气的方式让你彻底搞懂这个深度学习基石的工作原理。准备好了吗?我们开始吧! 第一章:神经网络的 “乐高积木” 1…...

Pythong 解决Pycharm 运行太慢

Pythong 解决Pycharm 运行太慢 官方给Pycharm自身占用的最大内存设低估了限制,我的Pycharm刚开始默认是256mb。 首先找到自己的Pycharm安装目录 根据合适自己的改 保存&#xff0c;重启Pycharm...

P6792 [SNOI2020] 区间和 Solution

Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1​,a2​,⋯,an​)&#xff0c;有 m m m 个操作分两种&#xff1a; chmax ⁡ ( l , r , v ) \operatorname{chmax}(l,r,v) chmax(l,r,v)&#xff1a;对每个 i ∈ [ l , r ] i \in [l,r] i∈[l,…...

基于ArduPilot开发无人机飞控自动驾驶仪

目录 1、项目参数 2、硬件设计解析 2.1、主控与协处理器架构 2.2、高精度传感器集成 2.3、数据存储与恢复 2.4、电源管理与保护 2.5、通信与接口 本项目基于开源飞行控制固件 ArduPilot 开发&#xff0c;设计并实现了一款高度集成的 自动驾驶仪&#xff0c;可广泛应用于…...

Kotlin Lambda

Kotlin Lambda 在探索Kotlin Lambda之前&#xff0c;我们先回顾下Java中的Lambda表达式&#xff0c;Java 的 Lambda 表达式是 Java 8 引入的一项强大的功能&#xff0c;它使得函数式编程风格的代码更加简洁和易于理解。Lambda 表达式允许你以一种更简洁的方式表示实现接口&…...

UniApp 中制作一个横向滚动工具栏

前言 最近在用 UniApp 开发项目时&#xff0c;需要一个横向滑动的工具栏。常见的工具栏一般都是竖着的&#xff0c;但横向滑动的工具栏不仅能展示更多内容&#xff0c;还能让界面看起来更加丰富。不过很多朋友可能会发现&#xff0c;如何让内容“横着”展示又不变形、能流畅滚…...

Qt的QListWidget样式设置

以下是关于QListWidget样式设置的详细说明&#xff0c;包含常用样式配置和进阶技巧&#xff1a; 1. 基础列表样式 // 设置整体列表容器样式 listWidget->setStyleSheet("QListWidget {"" background-color: #f5f5f5;" // 背景颜色" borde…...

OpenCV 模板匹配

模板匹配算法是一种在目标图像中寻找与模板图像相似区域的方法,模板匹配就是拿一个模板图片在一张比模板图像要大的搜索图像上寻找与模板图像相似的区域,以此来得到目标在搜索图像上的位置,其核心是将模板图像在待搜索图像上从左到右、从上到下依次逐像素平移滑动,每次滑动…...

Vue 3 30天精进之旅:Day 25 - PWA支持

一、引言 在前面的24天中&#xff0c;我们已经深入探讨了Vue 3的许多核心概念和高级特性。今天&#xff0c;我们将进入一个全新的领域——PWA&#xff08;Progressive Web App&#xff09;。PWA是一种现代Web应用程序的开发模式&#xff0c;它结合了Web和原生应用的优点&#…...

arm linux下的中断处理过程。

本文基于ast2600 soc来阐述&#xff0c;内核版本为5.10 1.中断gic初始化 start_kernel() -> init_IRQ() -> irqchip_init() of_irq_init()主要是构建of_intc_desc. 489-514: 从__irqchip_of_table中找到dts node中匹配的of_table(匹配matches->compatible)&#xf…...

Linux上Elasticsearch 集群部署指南

Es 集群部署 Es 集群部署 Es 集群部署 准备好三台服务器。示例使用&#xff1a;110.0.5.141/142/143 1、es用户和用户组创建&#xff0c;使用root账号 groupadd esuseradd -g es es2、将es安装包和ik分词器上传到&#xff1a;/home/es/目录下&#xff08;任意目录都行&#…...

SpringBoot+shardingsphere实现按月分表功能

SpringBootshardingsphere实现按月分表功能 文章目录 前言 ShardingSphere 是一套开源的分布式数据库中间件解决方案&#xff0c;旨在简化数据库分片、读写分离、分布式事务等复杂场景的管理。它由 Apache 软件基金会支持&#xff0c;广泛应用于需要处理大规模数据的系统中 一…...

如何设置 Nginx 连接超时并进行测试(Nginx优化)

&#x1f3e1;作者主页&#xff1a;点击&#xff01; Nginx-从零开始的服务器之旅专栏&#xff1a;点击&#xff01; &#x1f427;Linux高级管理防护和群集专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年2月15日14点22分 在高并发场景下&#xff0c;如…...

Python实现AWS Fargate自动化部署系统

一、背景介绍 在现代云原生应用开发中,自动化部署是提高开发效率和保证部署质量的关键。AWS Fargate作为一项无服务器计算引擎,可以让我们专注于应用程序开发而无需管理底层基础设施。本文将详细介绍如何使用Python实现AWS Fargate的完整自动化部署流程。 © ivwdcwso (ID…...

ubuntu20.04声音设置

step1&#xff1a;打开pavucontrol&#xff0c;设置Configuration和Output Devices&#xff0c; 注意需要有HDMI / DisplayPort (plugged in)这个图标。如果没有&#xff0c;就先选择Configuration -> Digital Stereo (HDMI 7) Output (unplugged) (unvailable)&#xff0c;…...

AWS Database Migration Service

AWS Database Migration Service (DMS) 是亚马逊 Web 服务&#xff08;AWS&#xff09;提供的一项服务&#xff0c;旨在帮助用户将数据库迁移到 AWS 云环境中。无论是将现有的数据库迁移到 Amazon RDS&#xff08;关系型数据库服务&#xff09;、Amazon Aurora、Amazon Redshif…...

ROS学习

1.ROS工作空间 存放项目开发相关文件的文件夹&#xff1b; src:代码空间&#xff08;Source Space&#xff09;install:安装空间&#xff08;Install Space&#xff09;build:编译空间&#xff08;Build Space&#xff09;log:日志空间&#xff08;Log Space&#xff09; 2.c…...

【NLP 24、模型训练方式】

你的痛苦&#xff0c;我都心疼&#xff0c;想为你解决 —— 25.2.15 一、按学习范式分类 1. 监督学习&#xff08;Supervised Learning&#xff09; 核心思想&#xff1a;使用带有标签&#xff08;已知输入-输出对&#xff09;的数据训练模型。 常见任务&#xff1a;分类&…...

【算法】【区间和】acwing算法基础 802. 区间和 【有点复杂,但思路简单】

题目 假定有一个无限长的数轴&#xff0c;数轴上每个坐标上的数都是 0。 现在&#xff0c;我们首先进行 n 次操作&#xff0c;每次操作将某一位置 x 上的数加 c。 接下来&#xff0c;进行 m 次询问&#xff0c;每个询问包含两个整数 l 和 r&#xff0c;你需要求出在区间 [l,r] …...

DeepSeek 从入门到精通学习指南,2025清华大学《DeepSeek从入门到精通》正式发布104页pdf版超全解析

DeepSeek 是一款强大的 AI 搜索引擎&#xff0c;广泛应用于企业级数据检索和分析。无论您是初学者还是有经验的用户&#xff0c;掌握 DeepSeek 的使用都能为您的工作带来极大的便利。本文将从入门到精通&#xff0c;详细介绍如何学习和使用 DeepSeek。 链接: https://pan.baid…...

PyQt6/PySide6 的自定义信号实现

一、信号与槽基础概念 核心机制&#xff1a;观察者模式的实现&#xff0c;支持对象间的松耦合通信原生信号&#xff1a;内置控件&#xff08;如QPushButton&#xff09;的clicked等预定义信号自定义优势&#xff1a;实现业务逻辑解耦&#xff0c;增强组件复用性 PyQt6/PySide…...

什么是FCC认证

联邦通信委员会&#xff08;FCC&#xff09;认证是美国一种强制性的认证&#xff0c;确保电子设备在上市前符合特定标准。 联邦通讯委员会&#xff08;FCC&#xff09;----管理进口和使用无线电频率装置&#xff0c;包括电脑、传真机、电子装置、无线电接收和传输设备、无线电…...

共享设备管理难?MDM助力Kiosk模式一键部署

目录 1. 简化设备部署与配置&#xff1a;实现一键式部署 2. 自动化应用更新与内容推送&#xff1a;确保设备始终保持最新状态 3. 权限控制与设备安全&#xff1a;防止滥用与数据泄露 4. 远程管理与故障诊断&#xff1a;保障设备长期稳定运行 5. 数据分析与报告&#xff1a…...

RAMinit 程序编译运行考古记录

本科的时候浅浅研究了DOSBox&#xff0c;今天看到网上挺多关于雷军代码的新闻&#xff0c;我把雷军代码在web上编译出来了&#xff0c;但是我是业余选手&#xff0c;所以做得比较差&#xff0c;不过大家感兴趣可以关注我的dosplay项目&#xff0c;旨在利用js-dos实现汇编语言在…...

今日AI和商界事件(2025-02-15)

根据2025年2月15日的科技动态&#xff0c;以下是今日AI领域的重要事件及相关进展总结&#xff1a; 1. DeepSeek日活突破3000万&#xff0c;开源生态加速AI普惠 里程碑意义&#xff1a;开源大模型DeepSeek宣布日活跃用户数突破3000万&#xff0c;其R1模型凭借开源策略和低成本优…...

鸿蒙开发:熟知@BuilderParam装饰器

前言 本文代码案例基于Api13。 在实际的开发中&#xff0c;我们经常会遇到自定义组件的情况&#xff0c;比如通用的列表组件&#xff0c;选项卡组件等等&#xff0c;由于使用方的样式不一&#xff0c;子组件是动态变化的&#xff0c;针对这一情况&#xff0c;就不得不让使用方把…...

基于和声搜索(Harmony Search, HS)的多中心点选址优化算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于和声搜索(Harmony Search, HS)的多中心点选址优化算法matlab仿真。可以设置多个不同的中心点。 2.测试软件版本以及运行结果展示 matlab2022a/matlab2024b版…...

word文档提取信息

目录 一、说明二、Aspose-words方式2.1、Aspose-words介绍2.2、Aspose-words使用说明2.3、Aspose-words解析核心代码一、说明 项目中遇到这样的一个需求问题:“一个docx文档,用户根据关键词能搜索定位到文档的哪一页”。docx文档主要有文本、表格、图片、附件这几类组合,为…...

单、双 链 表

数组模拟链表 ①单链表&#xff1a;邻接表&#xff5b;储存图和树} ②双链表&#xff1a;优化某些问题 单链表 // head 表示头结点的下标 // e[i] 表示节点i的值 // ne[i] 表示节点i的next指针是多少 // idx 存储当前已经用到了哪个点 e[i]和ne[i]用下标关联起来&#xff…...

SpringBoot整合easy-es

一、easy-es简介 EasyES是一款基于Elasticsearch官方提供的RestHighLevelClient开发的ORM框架&#xff0c;旨在简化开发流程并提高效率。 EasyES在保持RestHighLevelClient原有功能的基础上进行增强&#xff0c;而不做任何改变。它采用与Mybatis-Plus相似的语法&#xff0c;使得…...

2025年2月15日(ipython 换行-deepseek)

好的&#xff0c;用户现在想知道在IPython中如何换行而不运行代码。之前他们问过关于树莓派安装matplotlib的问题&#xff0c;现在转向IPython的使用&#xff0c;可能他们正在学习Python&#xff0c;并且可能在使用树莓派进行项目开发。需要确定用户的使用场景&#xff0c;可能…...

MyBatis:动态SQL高级标签使用方法指南

一、引言 目前互联网大厂在搭建后端Java服务时&#xff0c;常使用Springboot搭配Mybatis/Mybatis-plus的框架。Mybatis/Mybatis-plus之所以能成为当前国内主流的持久层框架&#xff0c;与其本身的优点有关&#xff1a;支持定制动态 SQL、存储过程及高级映射&#xff0c;简化数…...

Python常见面试题的详解5

1. re 模块中 search () 和 match () 的区别 要点&#xff1a;在 Python 的 re 模块中&#xff0c;re.match() 和 re.search() 是用于正则表达式匹配的两个重要函数&#xff0c;它们的主要区别在于匹配的起始位置&#xff1a;re.match()&#xff1a;从字符串的开头开始匹配正则…...

python包的管理

管理python包 python能跻身最欢迎编程语言前列的一个主要原因是python有着活跃的社区提供丰富的包&#xff0c;诸如numpy&#xff0c;pandas&#xff0c;scikit-learn等等。 python的包都存放PyPI中&#xff0c;PyPI即Python Package Index&#xff0c;是python的软件仓库。所…...

性能测试流程、主流性能工具

性能测试流程 性能测试流程 测试测试需求分析 性能测试计划和方案 测什么&#xff1a; 测试背景 测试目的 测试范围 谁来测&#xff1a; 进度和分工 交付清单 怎么测&#xff1a; 测试策略 性能测试用例设计 性能测试测试执行 性能分析和调优 性能测试报告 测试报告是…...

Lua闭包的使用以及需要注意的问题

1. 闭包的基本概念 在 Lua 中&#xff0c;闭包是一个函数值&#xff0c;它包含了函数本身以及该函数所创建时的环境。闭包允许函数访问其外部函数作用域中的变量&#xff0c;即使外部函数已经执行完毕。 2.闭包的简单使用 代码&#xff1a;在下面的代码中&#xff0c;create…...

【个人开发】deepseed+Llama-factory 本地数据多卡Lora微调

文章目录 1.背景2.微调方式2.1 关键环境版本信息2.2 步骤2.2.1 下载llama-factory2.2.2 准备数据集2.2.3 微调模式2.2.4 微调脚本 2.3 踩坑经验2.3.1 问题一&#xff1a;ValueError: Undefined dataset xxxx in dataset_info.json.2.3.2 问题二&#xff1a; ValueError: Target…...

LabVIEW 天然气水合物电声联合探测

天然气水合物被认为是潜在的清洁能源&#xff0c;其储量丰富&#xff0c;预计将在未来能源格局中扮演重要角色。由于其独特的物理化学特性&#xff0c;天然气水合物的探测面临诸多挑战&#xff0c;涉及温度、压力、电学信号、声学信号等多个参数。传统的人工操作方式不仅效率低…...

VisualStudio 2012 fatal error C1083: 无法打开包括文件:“stdio.h 找不到 sdkddkver.h

今天安装了一个VC 2012 Express 学习版,提示找不不到stdio.h, 提示找不到sdkddkver.h 发现是没有安装windows8.0 SDK ,还有一个些VC头文件没有安装. 真是太奇怪了,可能版本太多,安装出问题. 我这里放一个备份文件,省得以后,不能安装的时候,没地方找这些头文件. 无法打开包…...